Repository navigation
[Air #1826] feat: Ship the owner decisions process with the Decisions tab - #1832
Conversation
… tab Add resources/decision-protocol.md to both trees: the intake message, the item format the Decisions tab parses (bare words described from **Options:**, stamps that carry their own zone), what the hub does, and the file skeleton. Link it from the Decisions tab section of agent-farm.md and from the architect role. A test runs the doc's own examples through the tab's parser, splice and notice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The file header now says to rule on the line under **Your word:**, which is what the tab reads; a word typed on the line itself leaves the card open. - The ## Ruled line no longer names an outcome before DONE; DONE is appended. - Say that creating the file makes the tab appear, and that Tower's notice reaches only an architect named main. - Tests pin the hand-ruling instruction and every zone the doc names. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thank you — this is exactly the doc the tab needed, and the executable-doc test (the doc's own fenced examples run through Two changes before merge, both small:
Not for this PR, please file as a follow-up: |
…hitect role section - The hub's RULING relay carries the owner's comment verbatim, and the ## Ruled line quotes it after the word, so a conditional ruling keeps its condition. The doc test asserts both forms. - roles/architect.md: three lines pointing at the doc instead of restating it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Summary
Adopters get the Decisions tab (Spec 1819, PR #1820) in the next release but not the process or the file format it parses. This adds
resources/decision-protocol.md, a scrubbed version of Shannon's owner decisions process, as the canonical description ofcodev/state/pending-decisions.md. The tab doc and the architect role now point to it.Closes #1826
What Changed
codev-skeleton/resources/decision-protocol.md(new; byte-identical copy atcodev/resources/decision-protocol.md). Shannon's sections 3, 4 (with 4b and 4c) and 5, renumbered 1–4 so the doc stands alone:afx send architect:main 'DECISION <id>: …', with the shell-quoting note.servers/decisions/parse.ts,grammar.tsandstamp.ts, and a worked example.RULED/QUESTIONnotice from tower: tell the hub architect when the owner submits a ruling from the Decisions tab #1828), relay, record, done. Then 3b (a ruling that carries a question comes back as a new item) and 3c (the owner's question gets the architect's answer pasted into the item as aYou asked/<Name>'s answerpair).resources/commands/agent-farm.md, Decisions tab section, both trees: one paragraph linking../decision-protocol.md.roles/architect.md, both trees (still byte-identical): a three-line "The owner decisions file" section. It says what the file is and thatmainis the hub, and points to the doc.packages/codev/src/agent-farm/__tests__/decision-protocol-doc.test.ts.Key Decisions
###items under exactly one## Open; an item ends at the next#,##or###heading.**Your word:**line.**Options:**entry, in the(a) \word` = …,(a) `word`: …and- `word` = …` forms; a description on the word line wins.stamp.tsresolves: generic North-American zones, fixed abbreviations (CST= North-American Central), numeric offsets and IANA names. Ambiguous abbreviations, and times the clocks skipped or repeated, are shown as written and marked not converted. Nothing in the doc assumes PT. Every example time carries a zone, and a test enforces that.resources/, notprotocols/. The source itself says this is not a porch protocol, and aprotocols/<name>/directory would read as something you can spawn. It sits besiderisk-triage.md.<!-- REVIEW -->markers (left over from the annotation viewer), and the file-watch implementation details.**Ruling:**line under the word line and moves the item only on DONE. §6 and the Tower: a Decisions tab — a UI view of codev/state/pending-decisions.md with click boxes per option (recommended marked) and a comment box per decision, writing the owner's word back into the file #1819 issue body say a ruled item leaves## Openat once. The doc follows the latter: on a ruling the hub relays it and moves the item to## Ruledas one line. Both the relay and that line carry the owner's comment along with the word, and DONE appends→ DONE <time> <zone>: <what happened>to the line later.Test Plan
decision-protocol-doc.test.ts(15 tests) pulls the doc's own markdown blocks and runs them through the tab's code:**Options:**, and itsETstamp converts to the right UTC instant.spliceRuling,rulingNoticegivesRULED web-4: retrywith the comment, and the card is ruled afterwards. The doc's relay and## Ruledforms both keep the comment.**Your word:**, as the file's header says, rules the item; a word typed on the word line itself does not.stamp.ts, and the ambiguous abbreviations it names (IST,BST,AST) do not.agent-farm.mdlinks resolve, and both architect roles name the doc.=into-in an**Options:**entry fails 5 tests. The doc was restored from its twin afterwards.pnpm build).Flaky Tests
Porch's first
testscheck failed, and its output was cut off before naming a test. The same suite then passed three times on the same commit:npx vitest run,npm test, and porch's re-run. Nothing in this PR touches runtime code, so the failure is unrelated; I couldn't identify the test.CMAP
Codex and Claude reviewed via
consult --type pr. Gemini was not run: the agy lane is known-broken for typed reviews, and.codev/config.jsonconfigures codex and claude only.**Your word:**line, but the tab reads only the lines under it, so a word typed on that line leaves the card open. The header now says "on the line under"; §3 says the hub scans "the lines under". A test pins both cases.## Ruledone-liner showed<what happened>before DONE supplied it. The relay line now ends at the word, and DONE is appended later.stamp.ts.main, and that a hub without that name must scan the file.resources/decision-protocol.mdtoUPDATABLE_PREFIXES.Integration review (architect)
RULINGrelay (verbatim, on the lines after it) and in the## Ruledline (quoted after the word), so a conditional ruling keeps its condition.roles/architect.mdsection is trimmed to three lines that point to the doc.resources/*.mdreference docs into adopter repos.Review Notes
resources/*.mdfiles are not copied into adopter repos. They resolve only inside the installed package. The architect role namescodev/resources/decision-protocol.mdby path the same way it already namesrisk-triage.md, so in a fresh install an architect cannot open either at that path. The role section includes the essentials so it is usable without the file. Copying these intocodev/resources/on init/update, as is done for the hot tier, and adding them toUPDATABLE_PREFIXES, is now scaffold: skeleton resources/*.md reference docs never reach adopter repos #1834.🤖 Generated with Claude Code