Personas: rework architect — mol-first, drop standing agent (tk-ae96t.2) — supersedes #132#166
Personas: rework architect — mol-first, drop standing agent (tk-ae96t.2) — supersedes #132#166zook-bot wants to merge 6 commits into
Conversation
…ttle mechanics (tk-ae96t.1) Build the FIRST gc-toolkit persona — the architect — on the persona-as-skill model, setting the convention every later persona follows. Supersedes the held #123 (docs/personas.md) and #130 (mechanics findings); re-includes both since neither is on main. - Prior-art survey (specs/tk-ae96t.1/research/): BMAD-METHOD "Winston", Roo Code Architect mode, wshobson/agents, Martin Fowler — distilled into the architect. - Persona: skills/architect (city-wide identity), agents/architect/skills/ {architect-design,architect-review} (agent-local process-skills), and the agents/architect standing form (on_demand, dormant). pack.toml registers it. - Path A realized natively: agent-local skills keep the methods out of plain workers by construction — the deprecated `skills:` preload + the un-authored `skillOverrides` trim are replaced. docs/personas.md "Mechanics" filled; "Three layers" reframed concept-first (operator inline comment on #123). Held for operator review — sets the convention before later personas follow it. Re-includes #123 (tk-oe8o0): docs/personas.md, README line, specs/tk-oe8o0/*. Re-includes #130 (tk-ohrlc): specs/tk-ohrlc/*.
… shipped persona (PR#132)
Codex review of PR#132 (tk-ae96t.1) requested changes on two points:
1. skills/architect/SKILL.md (description, methods, 'how I engage') told a
transient /architect wearer to engage architect-design/architect-review,
but those are agent-local skills that materialize only into the standing
architect agent. Narrow the identity skill and docs/personas.md so the
transient path brings the architectural lens and reasons in the design/
review modes directly; the packaged method-skills ride with the standing
agent. (No promise of skills a plain session cannot see.)
2. docs/roadmap.md still said the architect was retired from core and
agents/architect/ removed ('not a commitment to build'), contradicting
this PR which re-adds the agent and registers it in pack.toml. Reframe the
architect section, the Settled decision, and the Near-term retro note as:
consult-model architect retired (2026-06-10), revived as a persona
(2026-06-15, this PR). The consult-bead/concierge/consult-host machinery
and the ingest/patrol formulas stay retired/unbuilt.
…decouple method-skills (tk-ae96t.2) Rework of the architect-persona deliverable per the operator's 06-17 review of PR #132 (28 inline comments) and the operator-confirmed direction. Supersedes #132. Architectural changes (operator-confirmed): - Decouple architect-design / architect-review: moved from agent-local agents/architect/skills/ to the generic top-level skills/ — now ordinary city-wide skills, invocable as mol steps, not bound to a standing agent. - Drop the standing architect agent: removed agents/architect/ (agent.toml, prompt.template.md, PROVENANCE.md) and the pack.toml [[named_session]]. This resolves all agent.toml / prompt.template.md / PROVENANCE.md comments structurally. - Add the proof-point mol: formulas/mol-architect-review.toml runs architect-review as a mol step — the first proof the method works with no standing agent. Docs (operator review): - skills/architect/SKILL.md: direct identity opener ("You are now the architect"); shepherd/lead tone; methods framed as independent skills (not agent-local). - docs/personas.md: de-editorialized (dropped "settled"/"now built" status-meta); replaced prose mechanics with a persona-structure table; dropped the obsolete multi-framework and persona<->bead/triage caveats; reframed methods as ordinary skills (progressive disclosure, not agent-local scoping). - docs/roadmap.md, README.md: reconciled to the mol-first reality (no standing agent ships; the method is proven as a mol step).
2477f80 to
7afe984
Compare
zook-bot
left a comment
There was a problem hiding this comment.
Blocking finding:
specs/tk-ae96t.1/README.md:37still documents the old tk-ae96t.1 implementation as if it is what this PR lands: method skills underagents/architect/skills/, anagents/architect/{agent.toml,prompt.template.md,PROVENANCE.md}standing-agent form, and apack.tomlnamed-session registration. In this PR's final tree those paths are absent; the actual delivered shape is top-levelskills/architect*plusmol-architect-review, with no standing architect agent. Because this README is newly added by the PR anddocs/personas.mdpoints readers atspecs/tk-ae96t.1/for the architect grounding, merging as-is would leave a repository record that contradicts the current persona contract and revives exactly the old shape the PR says it dropped. Please update this record to mark tk-ae96t.1 as superseded by tk-ae96t.2 and describe the final mol-first/top-level-skill shape, or clearly isolate the stale Path A details as historical pre-rework notes.
Validation: checked out PR #166 detached, parsed formulas/mol-architect-review.toml with tomllib, ran git diff --check origin/main...HEAD, and verified the claimed agents/architect paths are absent from the final tree.
Note: GitHub would not accept this as a formal REQUEST_CHANGES review because this bot account owns the PR branch, so I am posting it as a blocking review comment and routing the fix through the bead workflow.
…te stale Path A shape (tk-9nzuh)
Addresses codex blocking finding on PR#166. specs/tk-ae96t.1/README.md
documented the dropped Path A shape (standing agents/architect/ agent,
agent-local method-skills, pack.toml named session) as if it landed, while
docs/personas.md points readers here for the architect grounding — the final
tree has none of those paths.
- Frontmatter + a new top banner mark the record SUPERSEDED by tk-ae96t.2
(PR#166) and state the shape that actually landed: top-level city-wide
skills/architect{,-design,-review} + formulas/mol-architect-review.toml,
no standing agent, no pack.toml session.
- "What landed where" heading annotated "(Path A — pre-rework)" with a
Historical note, isolating the stale path list as pre-rework history.
zook-bot
left a comment
There was a problem hiding this comment.
Re-review after fix 60f8f9f: no blocking findings.
The previous blocker in specs/tk-ae96t.1/README.md is addressed. The file now marks tk-ae96t.1 as superseded by tk-ae96t.2, lists the final mol-first/top-level skill shape, and clearly fences the old agents/architect/... and pack.toml entries as Path A historical/pre-rework notes.
Validation:
- checked PR head
60f8f9fagainstorigin/main - confirmed
agents/architect/is absent from the final tree - parsed
formulas/mol-architect-review.tomlandpack.tomlwithpython3/tomllib - ran
git diff --check origin/main...HEAD
…ointer to mol-first shape (tk-ae96t.2) Operator RECONCILE follow-up to the codex blocker on PR#166. Commit 60f8f9f marked specs/tk-ae96t.1/README.md superseded by tk-ae96t.2; this extends the same doc-consistency sweep to the two sibling spec records and the docs/personas.md grounding pointer the blocker called out. Docs only — no skills/, formulas/, or SKILL.md touched. - docs/personas.md: the grounding pointer now names specs/tk-ae96t.1/ as the Path A build record (superseded by tk-ae96t.2, kept for provenance), so a reader is not sent to a record of the dropped shape as if it were current. - specs/tk-oe8o0/README.md: note isolating the one revised mechanism — process-skills "ride with the persona" (agent-local) -> tk-ae96t.2 placed the architect's method-skills top-level / city-wide. Design-session rationale kept. - specs/tk-ohrlc/README.md: note that the open Path A/B/C runtime-form trade-off was resolved by tk-ae96t.2 (top-level method-skills + mol-architect-review, no standing agent). Mechanics findings kept (verified 2026-06-14).
zook-bot
left a comment
There was a problem hiding this comment.
Blocking finding:
specs/tk-ae96t.1/research/architect-prior-art.md:12still describes the architect persona as includingskills/architect,skills/architect-design,skills/architect-review, and theagents/architectstanding form, then says that shape "is built." The latest reconciliation fixed the top-levelspecs/tk-ae96t.1/README.mdbanner and thedocs/personas.mdpointer, but this newly added research index is the linked prior-art/distillation record under that same directory and has no superseded/Path A historical framing of its own. A reader following the record still lands on a current-tense statement that the absent standing-agent form exists, contradicting the final PR shape (skills/architect*+formulas/mol-architect-review.toml, noagents/architect/). Please either add the same tk-ae96t.2 supersession/historical framing to this index or rewrite the sentence so it names the final mol-first/top-level-skill shape.
Validation:
- checked PR head
e904bc5againstorigin/main - confirmed the latest reconciliation commit updated
docs/personas.md,specs/tk-oe8o0/README.md, andspecs/tk-ohrlc/README.md - parsed
formulas/mol-architect-review.tomlandpack.tomlwithpython3/tomllib - ran
git diff --check origin/main...HEAD gh pr checks 166reports no checks on the branch
Note: GitHub would not accept this as a formal REQUEST_CHANGES review because this bot account owns the PR branch, so I am posting it as a blocking review comment and routing the fix through the bead workflow.
…l (codex finding, PR#166) The research index still described the persona in present tense as including the agents/architect standing form and said that shape 'is built'. Mirror the already-approved README fix: add a tk-ae96t.2 supersession note to the front-matter, a banner after the title, and rewrite the offending sentence to name the final mol-first/top-level-skill shape (skills/architect[-design,-review] + formulas/mol-architect-review.toml, no agents/architect/ standing agent). Surveys + distillation unchanged.
zook-bot
left a comment
There was a problem hiding this comment.
Re-review after fix dba41c2: no blocking findings.
The previous blocker in specs/tk-ae96t.1/research/architect-prior-art.md is addressed. The file now marks the prior-art index as superseded by tk-ae96t.2, frames Path A's standing architect agent / agent-local method-skills as historical, and names the final shipped shape as top-level city-wide skills/architect, skills/architect-design, skills/architect-review plus formulas/mol-architect-review.toml, with no agents/architect/ standing agent.
Additional checks:
- sibling spec records and
docs/personas.mdpoint readers at the mol-first/top-level skill shape rather than the old Path A shape; agents/architectis absent andpack.tomldoes not add an architect named session;- the new formula file is valid TOML with the expected three steps;
- the PR head is fast-forwardable from current
origin/main.
…one (tk-vpx62) Second arm of tk-vpx62 (mayor scope extension, 2026-07-21). The first arm handled a PR whose anchor is stranded; this one handles a PR whose anchor is GONE. Every close-on-land path — merge-skill.sh, this reconciler, the refinery patrol — enumerates from the BEAD and reads its pr_number. Sound while the bead outlives the PR, which close-on-land guarantees. But a PR whose bead is CLOSED is not merely unhandled, it is unseen: no scan starts anywhere that reaches it, so it never lands, never escalates, never times out. It does not read as broken, it reads as absent. The pre-#163 close-on-publish model created that state by design, and the 7 PRs it stranded (#171 #170 #166 #108 #88 #80 #77) sat untouched for weeks — found only by a human cross-checking `gh pr list` against the ledger by hand. So reconcile from the other side too: enumerate open PRs, subtract every PR number any LIVE bead references, report the remainder. Verified against the live ledger: flags exactly those 7 and correctly excludes in-flight PR#195. Detection and surfacing ONLY, per the mayor's scope note — it never merges, closes, or reopens an anchorless PR. Disposition stays an operator call. Convergence, since a patrol pass runs on every idle wake: - Escalate once, bounded by an anchorless_flagged marker written to the closed bead BEFORE the mail (stamp-first, mirroring the merged path's close-first). A failed stamp means no bound, so it does not mail — a delayed escalation is recoverable, a mail storm is not. - A PR with NO bead in any state is logged but never mailed: nothing durable exists to record that we already said it. - A failed ledger read is empty, not "[]", and the scan fails CLOSED on it — treating "could not read" as "nothing is tracked" would flag every open PR at once. - Anchor resolution picks the OLDEST bead carrying merge_result, so the operator is pointed at the bead that OPENED the PR rather than a review bead or a later "address findings" child (several closed beads routinely name one PR); the mail lists the whole set regardless. Zero gating anchors is no longer an early exit — that was precisely the state where this scan matters most (no live anchors WITH open PRs is the stranded shape). Tests: 24 new hermetic assertions (62 total, all pass); verified 13 of them FAIL against the pre-arm script while all 38 pre-existing ones still pass. Sibling suites green (merge-skill 36, one-anchor-per-pr 13, pre-open-resolve 16, signoff-anchor-resolution 14, signoff-anchor-failclosed 14, reconcile-graduated-convoys 14, reconcile-rig-checkouts 8, husk-guard 16). bash -n + shellcheck clean at warning severity.
Reworks the architect-persona deliverable per the operator's 06-17 review of #132 (28 inline comments) and the operator-confirmed direction. Supersedes #132 (bead tk-ae96t.2).
This is a fresh PR on
polecat/tk-ae96t.2rather than an in-place update of #132: the polecat work formula's submit gate requires the per-bead branchpolecat/<bead-id>, so #132'spolecat/tk-ae96t.1head can't carry tk-ae96t.2's work. The diff is the complete reworked deliverable (it includes #132's commits + the rework), so #132 can be closed in favor of this.Architectural changes (operator-confirmed)
architect-design/architect-review— moved from agent-localagents/architect/skills/to the generic top-levelskills/. They are now ordinary city-wide skills, invocable as mol steps (or when the identity is worn), no longer bound to a standing agent. Resolves the SKILL.md disconnect ("method-skills ride with the standing agent, so a transient wearer brings the lens, not those skills" vs. a mol step that includesarchitect-review).agents/architect/(agent.toml, prompt.template.md, PROVENANCE.md) and thepack.toml[[named_session]]. No formula, order, keybinding, orcity.tomlimport referenced it, so the removal is load-safe.formulas/mol-architect-review.tomlrunsarchitect-reviewas a mol step: the first proof the method works with no standing agent in the picture.Resolution of #132 review comments
agents/architect/*— resolved structurally by removing the standing agentdocs/personas.mdarchitect-reviewexample.skills/architect/SKILL.mdpack.toml[[named_session]]is removed; the architect is proven viamol-architect-review.Reconciliation (not directly commented, but made consistent)
Out of scope (the host handles)
tk-ae96t.2