feat(agents): spec-designer role — promote Stub SPECs to Draft via claude #80
No reviewers
Labels
No labels
adr
agent:blocked-ci
agent:blocked-human
agent:blocked-resolver
agent:done
agent:in-progress
agent:no-touch
agent:pinged
agent:pr-open
agent:queued
agent:wip
area:board
area:funding
area:infra
area:phy
area:poplink
area:rtl
area:software
area:supply-chain
area:verification
ci-failed
ci-timeout
docs
do-not-merge
human-approved
needs-human-approval
needs-rebase
needs-triage
phase:1
ready-for-review
review:findings
review:pass
risk:tripwire
swarm:quarantined
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Fluid/fluidpop-v1!80
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/spec-designer-role"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds a sixth swarm role that promotes
rtl/src/pop/specs/<Module>.SPEC.mdfiles fromStatus: StubtoStatus: Draft, gating the only serial step in the design pipeline.Before this PR, advancing chip RTL required: human writes Draft SPEC → resolver implements Chisel → reviewer checks → approver merges. Step 1 was a single-threaded human bottleneck via the Telegram bridge; the resolver refuses to fabricate widths or behaviour, so without a Draft SPEC there is nothing for it to implement.
With
spec-designer, the swarm fans out:Constraints baked into the prompt
The system prompt at
roles/prompts/spec-designer.mdrequires the model to resolve every TBD by one of three routes:(per ADR-NNN-foo.md)with the verbatim decision.(per PLAN.md §8.2)._Open question:_ <one sentence>when no source pins it.Fabricated widths / vendor commitments / performance numbers are disallowed. The PR is reviewed by
pr-reviewerlike any other.Pieces
roles/spec-designer.sh— long-running poller, one promotion per cycle (default 600s).roles/prompts/spec-designer.md— system prompt.units/fluidpop-spec-designer.service— systemd user unit.install-swarm.sh— state dir + service start order.Test plan
bash -nclean.infra/ops/agents/install-swarm.shto wire the unit.PopSoCConfig.SPEC.md). Confirm aspec/popsocconfig-draftPR is opened and landsreview:passfrompr-reviewer.Notes
Off-limits per ADR-017 (
infra/ops/agents/**) — merged manually by navigator.Adds a sixth swarm role that picks one `rtl/src/pop/specs/<Module>.SPEC.md` file with `Status: Stub`, gathers the ADRs the SPEC references plus the referenced PLAN.md sections plus any Draft sibling SPECs plus the existing Chisel IO patterns under `rtl/src/pop/`, and invokes `claude -p` with a strict promotion prompt. The model is required to either pin every TBD to an ADR / PLAN section / sibling SPEC, or mark it as an explicit `_Open question:_`. Fabricated values are disallowed. The result lands as a PR `spec/<module>-draft → main` labelled `ready-for-review`, which goes through pr-reviewer and pr-approver like any other PR. Operates one SPEC per cycle (default 600s) to keep claude usage bounded. Per-module fail markers in `${ROLE_STATE}/seen/` suppress retry for an hour after a failed run. Rationale: before this, SPEC promotion (Stub → Draft with concrete Interface / Behavior / Invariants pinned to ADRs) was a serial, human-only step that bottlenecked all downstream RTL implementation work — the resolver refuses to fabricate widths or behaviour, and without a Draft SPEC there is nothing concrete to implement. With this role the swarm can advance design and implementation in parallel. Off-limits per ADR-017 (`infra/ops/agents/**`) — must be reviewed and merged manually by navigator after CI green. Once landed, run `bash infra/ops/agents/install-swarm.sh` to wire the new unit.CI green (head
8900724ae4), auto-approvingCI green (head
8900724ae4), auto-approving8900724ae4c1ce441924CI green (head
c1ce441924), auto-approving