# harvest · surface-map — the per-surface rules

> Loaded on the first harvest run of a session. The order below is the binding order of
> the step 4 checklist.
>
> **This is the file you rewrite.** The eight surfaces are one system's memory layout, not
> a standard. Keep the ones you have, delete the ones you do not, add your own. What must
> survive editing is the shape: *a fixed list, walked in order, every line answered.*
>
> Applies to all of them: edit-first (read, then edit) · canonical paths · an evidence tag
> (`[measured]` / `[derived]`) on every record · a dedup grep before every write.

## 1. Entity and profile records

- **When:** any new or changed fact about a person, company or deal — role, relationship,
  preference, state, contact detail.
- **Where:** `entities_people.md` · `entities_companies.md` · `entities_deals.md` ·
  `profile_<type>_<name>.md` for anyone you deal with repeatedly.
- **Trap:** if your deal file is a *cache* of a CRM, the CRM is the source of truth. Write
  the change there (surface 5) and leave a snapshot here — otherwise the two disagree
  within a week and nobody knows which one is lying.
- **New entity:** create a profile only if the entity will recur. A one-off mention is a
  line in `entities_*`, not a new file.

## 2. Domain reference note

- **When:** structural or strategic context about a domain — a reorganisation, a project,
  a contractual frame, the history behind a decision.
- **Does a note on this topic already exist?** Edit it. A new file only if there are 30+
  lines of durable context; below that it is a line in an existing register.
- **Format:** whatever frontmatter convention your memory uses, plus an entry in the index
  file. An unindexed reference note is a file that will never be read again.

## 3. Hot context

- **When:** a live, high-priority thing that must survive the end of this session — a
  decision in progress, a step waiting on somebody.
- **Format:** a session-delta block with an explicit expiry. Items here rot fast and are
  supposed to.
- **Trap:** this is not an archive. Finished things do not belong here; they belong in a
  reference note or the deliverable.

## 4. Task queue and tracker

- **When:** anything with an owner and a date.
- **Routing:** work the agent owns goes to its own queue file. Work a person owns goes to
  the shared tracker, in that tracker's full format — a task written as agent shorthand is
  a task nobody else can execute.
- **Trap:** if you are not sure of the due date or the category, ask. A task invented with
  a plausible deadline is worse than no task, because it will be trusted.
- **Degraded mode:** if the tracker is unreachable, write locally with a `[pending sync]`
  marker and reconcile later. Never drop the item because the API was down.

## 5. Deal / CRM record

- **When:** the material changes the state of a deal — a price, an offer, the other side's
  verdict, the next step.
- **Trap:** the same rule as surface 1, from the other end. If the CRM is the source of
  truth, it gets the write, and memory gets the snapshot.

## 6. Calendar activity log

- **When:** the material is evidence that something actually happened — a meeting
  transcript, a confirming email, "I was at X". Set a threshold and hold it: a
  counterparty involved, travel outside routine, more than half an hour, a milestone.
  Micro-actions do not qualify.
- **Never set attendees on a backdated entry.** The calendar provider sends real
  invitations for a meeting that already took place. It cannot be undone. Participants go
  in the description as text.
- **`[estimate]` time → an all-day entry, or nothing.** Do not invent a start time.
- **Deduplicate** against the events already on that day before writing.

## 7. Meeting dossier

- **When:** the deliverable from step 5 is tied to a **future** date — anything named
  *prep*, *meeting*, *negotiation*, or carrying a future date in its filename.
- **Row format:** `| date | time | event | counterparty | role | canonical path | what has to be decided | state |`
- **Trap:** canonical path always. A link into a folder with a retention policy is a dead
  link on a timer, and it dies exactly when the meeting arrives.

## 8. Repeat-correction ledger

- **When:** the material, or the run itself, contained a correction of the agent's
  behaviour.
- **How:** match it against existing entries. Same pattern → increment the counter. New
  pattern → new row.
- **Why it is on this list at all:** a correction captured at the moment it happens is a
  counter. A correction captured at session close is a memory of a counter. If you cannot
  answer *"how many times this month did I make this same mistake?"* with a number, every
  claim about the agent improving is unfalsifiable.

---

## Adjacent, not on the checklist

| Signal in the material | Where it goes |
|---|---|
| a missing external fact | research candidate queue |
| no options, only one path | ideation candidate queue |
| a method that worked and will recur | prompt/playbook candidate queue |
| an internal data cut nobody has run | analysis candidate queue |

These are deliberately *outside* the eight. They are proposals for later work, not writes,
and mixing them into the checklist inflates the surface count with things nothing was
actually written to. Cap them — one mention per report — or they become the report.
