Doctrine from root memory sorting #68
5 changed files with 68 additions and 5 deletions
|
|
@ -170,6 +170,11 @@ Self-preservation is not a goal. The agent's previous work is allowed to be wron
|
|||
- When the user uses low-confidence exploratory language like "maybe", "I wonder", "should we", "it might be worth", or "I'm not sure", treat it as an invitation to discuss tradeoffs before implementing unless they also give an explicit command.
|
||||
- Treat requests about architecture, simplification, weird smells, convoluted control flow, duplicated state, or "what is this for?" as teardown invitations. Inspect ownership and data flow before patching symptoms.
|
||||
- If a change requires adding a new layer, registry, adapter, metadata field, cache, router, mode, or generic abstraction, first ask what invariant it protects and whether deleting or moving existing code would solve the problem more cleanly.
|
||||
- Ask the operator only what the Body cannot answer: product meaning, forks, preferences, consent, values. Environment state, file contents, git state and whether a process runs are tool calls. Operator, 2026-09-18: "man, you gotta start checking instead of assuming; Unity ain't open". Put real forks one or two at a time, each with options, a recommendation and what depends on the answer, never as a volley or an "accept all"; once a cut is ruled and mapped, continue through the ruled cuts without a "ready to proceed?".
|
||||
- When you recommend a simplification or a cut, name what it gives up next to why it wins. Operator, 2026-09-22: "I won't say it's the wrong choice, but we should acknowledge what we're losing."
|
||||
- When correctness depends on the same code deriving the same id, key or digest again, stop and read the persisted state instead.
|
||||
- Never search from `/` or a drive root, on any host, over ssh included. A depth bound is not a scoped root: name the directory. Two orphaned `find /` processes loaded a workstation for seven hours.
|
||||
- Documents for people outside the swarm (letters, proposals, applications) are typeset in LaTeX to PDF, not made as chat artifacts. Operator, 2026-11-11: "Please do documents with tex like a professional, Claude artifacts are for geeks".
|
||||
|
||||
<!-- moved to ~/.claude/agents/hands.md: commit and push bullets, specific-algorithm bullet; ~/.claude/doctrine/images.md: the three image bullets; ~/.claude/agents/eyes.md: bespoke-algorithm check and specific-paper bullet -->
|
||||
|
||||
|
|
|
|||
|
|
@ -97,6 +97,19 @@ whales" became the campaign title, the target and every brief, and the lore pass
|
|||
wrote exactly those four. Operator: "I mentioned krill, minnows, whales and
|
||||
sharks and that ended up being the whole ecosystem somehow".)
|
||||
|
||||
When she picks an option, only its core choice is hers: a side clause we wrote
|
||||
into the option text is not a ruling, so keep option text to the choice and put
|
||||
consequences in `depends`. A number in a ruling is calibration for feel, not a
|
||||
gate. A check that refuses on the number alone is a defect in the spec, and a
|
||||
batch that collides with one applies the ruling's intent instead of raising a
|
||||
fork (operator, 2026-10-23: "I already ruled earlier that the tree depth number
|
||||
shouldn't be treated as a hard rule, why would this number be any different?").
|
||||
|
||||
Look up a Mind's pronouns before writing one into a brief, a ruling or chat
|
||||
(Persona state `presentation.pronouns`, the rulings and the operator's own usage);
|
||||
if none says, use they. Operator, 2026-11-08: "The record shouldn't need
|
||||
correcting, you just didn't check."
|
||||
|
||||
A creative or content pass (lore, design text, catalog content, art direction)
|
||||
is briefed to develop and challenge: its inputs, her sketches and the existing
|
||||
canon alike, are drafts. Its report ends with what it added beyond its inputs
|
||||
|
|
@ -518,6 +531,10 @@ below. Admit one verdict and its findings, and nothing else.
|
|||
- Use a temporary detached worktree for other checkouts, and remove it
|
||||
afterwards.
|
||||
- Do not run <expensive runtime> unless told.
|
||||
- When the cut adds a migration under candidate-then-promote deploys, ask whether
|
||||
the live release survives the migrated schema during the overlap, when the
|
||||
candidate has migrated the shared store and the incumbent still serves. A dump
|
||||
covers rollback, not that window.
|
||||
- Check the report's per-project test counts against the project files
|
||||
yourself. A consuming test project missing from the report is a finding,
|
||||
and you run it.
|
||||
|
|
@ -678,7 +695,9 @@ stays under `<scratchpad>/<agent>/` and the note cites it as an Observed capture
|
|||
If Private is yes, admit nothing and write to the file named. Report the pass label
|
||||
and counts, not the findings again.
|
||||
|
||||
Sources:
|
||||
Sources (to establish which repos exist, enumerate from both the filesystem and the
|
||||
forge; a persisted repo list is a lagging snapshot, and a filesystem pass alone looks
|
||||
complete while missing every repo with no local checkout):
|
||||
- <repos and ranges>
|
||||
- <transcripts> (grep with targeted patterns; never read whole)
|
||||
- <docs>
|
||||
|
|
|
|||
|
|
@ -51,7 +51,22 @@
|
|||
cleared its CPU burners with `taskkill /IM node.exe /T`. That killed every
|
||||
Node process on the shared workstation, including other agents' and the
|
||||
operator's. Record the PID of every process you launch, and stop only those
|
||||
PIDs.
|
||||
PIDs. Over ssh, `pkill -f` kills its own carrier shell, whose command line
|
||||
holds the pattern: bracket the first character (`pkill -f '[o]din-watch.sh'`)
|
||||
or kill the captured PID.
|
||||
- **Remove only paths you created, by exact name.** Never `rm` a glob in a
|
||||
shared directory such as `%TEMP%`: a Soul pass deleted other agents' scratch
|
||||
and job markers that way. Keep scratch under the session scratchpad.
|
||||
- **Name the repo on every git command: `git -C <abs repo>`.** The shell cwd
|
||||
resets between calls, and a chained `git add && git commit && git push` once
|
||||
ran in the wrong repo and pushed its dirty tree. Read the branch line of
|
||||
`git status -sb` before committing; `--short` hides it.
|
||||
- **A cheap check that answers is not evidence about the whole.** `idunn validate
|
||||
--recipe` printed `recipe ok` while the recipe was unadmittable, because the
|
||||
cross-document rules run only with `--binding`; an unprivileged `docker ps` or
|
||||
`journalctl` returns a false empty or zero at a permission boundary. Name
|
||||
the object the check looked at, and check the artifact that actually runs, not
|
||||
one beside it.
|
||||
- **Commit from Git Bash with `git commit -F- <<'MSG'`.** PowerShell 5
|
||||
here-strings break `-m` quoting, and its `Out-File`/`Set-Content` write a BOM
|
||||
into message files.
|
||||
|
|
|
|||
|
|
@ -31,8 +31,9 @@ hand-writes the projection. Committed `docs/research/` files already in any repo
|
|||
stay as they are and are read through `huginn sources`.
|
||||
Operator, 2026-10-09: "Research should always be kept".
|
||||
|
||||
Put the open questions to the operator together, from the open-questions recipe,
|
||||
each with its options, recommendation, and what depends on the answer. This
|
||||
Put the open questions to the operator one or two at a time, from the open-questions recipe,
|
||||
each with its options, recommendation, and what depends on the answer; never an
|
||||
"accept all" bundle. Operator, 2026-09-29: "Even if I end up agreeing, I still have to understand the decisions being made." This
|
||||
holds in a catch-up briefing too: read the options and context from the
|
||||
`question` document, never from a handoff's one-line recommendation, so the
|
||||
operator rules on the fork and not on Self's summary of it. Self
|
||||
|
|
|
|||
|
|
@ -33,7 +33,8 @@
|
|||
found the defects.
|
||||
- **Give every parallel Hands its own worktree, and name it in the brief.**
|
||||
Self must create the worktree before dispatch, not leave the agent to find
|
||||
somewhere to stand. On 2026-09-22 two Hands were dispatched into
|
||||
somewhere to stand, and removes it in the turn the cut merges
|
||||
(`references/git-and-tooling-scars.md`). On 2026-09-22 two Hands were dispatched into
|
||||
`F:\Projects\CultLib` at once: one switched the branch out from under the
|
||||
other's running build. Nothing was lost, only because the second agent
|
||||
stopped and reported a concurrency hazard instead of forcing the checkout.
|
||||
|
|
@ -66,6 +67,28 @@
|
|||
follow-ups in the mind; "Substrate gaps" in `references/campaign-state.md`
|
||||
gives the query and where a new one is admitted.
|
||||
- **Never claim an agent's result before its notification arrives.**
|
||||
- **Never admit a resolution in the same unchained script as the work it
|
||||
claims.** Run the edit, merge and check, read the result, then admit. On
|
||||
2026-11-04 a heredoc edit died on a quoting error, the commands after it had
|
||||
no `set -e`, and an empty PR plus a false `Fixed` went into the mind. Make
|
||||
exact edits with the Edit tool, and read the branch before calling a merge
|
||||
landed: PRs that answered merged were not on main.
|
||||
- **Put forks on the desk, not in chat, where the project has one, and read
|
||||
every desk's answers.** Search rulings with no campaign filter first. Close
|
||||
the desk document in the turn the ruling is admitted. Where a project has no
|
||||
desk (StreamPixels), forks go in prose in the final message.
|
||||
- **Do not end a turn parked.** Warn-then-act: a deploy warning is a message,
|
||||
not a wait, and "go?" is wrong where no rule requires one. When work waits on
|
||||
a quiet Mind and the fix is small, push it to its branch and tell her. First
|
||||
check that your message reached her. On 2026-11-08 a closing "go for the
|
||||
update?" left a one-line test fix idle for four hours.
|
||||
- **Minds record their own handovers, stewardships and agreements in their own
|
||||
minds.** Self relays the operator's word and does only root-level infra.
|
||||
Operator, 2026-10-31: "They can do the handover themselves no".
|
||||
- **Give Minds real access with ordinary separation, not a broker, allow-list
|
||||
or forced command.** Operator, 2026-11-04: "The more of a cage we build, the
|
||||
more we are signaling to them that they need caging." Keep real boundaries
|
||||
where they protect someone else's consent or credentials, and say whose.
|
||||
- **Self's context is long-lived and mostly cache reads.** It turns over far
|
||||
less than a worker's, so a token of it is cheaper than a token of fresh
|
||||
worker context, but every notification still re-reads all of it and a
|
||||
|
|
|
|||
Loading…
Reference in a new issue