feat: init runtime prompt, complete the devague chain, bind the associate lane - #2
Conversation
…iate lane Re-initializes CLAUDE.md from the /init seed into a full runtime prompt, re-vendors all eight devague-chain skills from their origin, and points culture.yaml at the lobes `associate` role the agent actually runs on. Skills: - Add `validate-delivery` (leg 7) — the missing step between assign-to-workforce and summarize-delivery. Without it summarize-delivery made delivery claims with no filed evidence behind them. - Re-vendor all eight chain skills from devague 0.24.1. Previously three (think, spec-to-plan, assign-to-workforce) cited guildmaster's re-broadcast while the rest cited devague directly; the chain is one workflow and two upstreams let three legs lag the other five by a re-broadcast cycle. Verified byte-identical to origin except the documented agex -> devex re-application in assign-to-workforce (2 occurrences). Identity: - culture.yaml: model `sakamakismile/Qwen3.6-27B-Text-NVFP4-MTP` -> `associate`. That pin was the culture-agent-template default carried by ~50 sibling repos, and it names the *cortex* checkpoint. `associate` is a first-class lobes role backed by nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4, defined in lobes/roles.py as `worker` MINUS `repo_action`. Naming the role rather than the checkpoint lets the lane move boxes without touching this repo. Verified live: model=associate through the gateway returns completions served by the Lightning checkpoint. Docs: - CLAUDE.md: the four load-bearing CLI contract invariants, the four places that must stay in sync when adding a verb, build/test/lint/publish commands, the skills convention, the ../.worktrees.associate/ rule, the steward doctor invariants, and the measured runtime topology. States plainly that the harness itself (read/summarize/find) is not built yet. - README.md: rewritten reader-facing on the devague model. - docs/skill-sources.md: eight chain rows in flow order, an eight-skill divergence section, devague and eidetic added to prerequisites. Records rather than works around a fleet-side defect: the Orin advertises the associate lane under its checkpoint id while the gateway's ASSOCIATE_SERVED_NAME=associate, so probe_peer_ready fails and the role is omitted from /v1/models despite the data plane proxying it correctly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XnbT37FDJGW1rFcgTXPe5C
|
/agentic_review |
PR Summary by QodoComplete the devague workflow and bind the associate runtime role
AI Description
Diagram
High-Level Assessment
Files changed (18)
|
Code Review by Qodo
1.
|
…-safe Addresses Qodo review comments 3941632225 and 3941632235 on PR #2. - AGENTS.colleague.md: the `associate` lobes role forbids `repo_action` and `code_authoring`, but the resident prompt directed the agent to use write_file / edit_file / run_command — so binding culture.yaml to the role created a resident that could enact repo changes despite the role's hand-back-only definition. The prompt now names the permitted and forbidden sets explicitly and states that having a tool is not authorization to use it; drafts go back in the `finish` payload. - docs/skill-sources.md: the re-sync loop deleted each vendored skill before confirming its source existed, with no fail-fast — in the standalone-clone case (no ../devague) it stripped all eight chain skills and copied nothing back. Now runs under `set -euo pipefail`, verifies every source first, and stages all copies before swapping any. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XnbT37FDJGW1rFcgTXPe5C
|



What this does
Three things that turned out to be one thing: this repo was a
guild createscaffold whoseCLAUDE.mdwas still the/initseed, whose devague skill chain was missing a leg and split across two upstreams, and whoseculture.yamlnamed a model it does not run on.1. Completed the devague chain
Added
validate-delivery(leg 7) — the missing step betweenassign-to-workforceandsummarize-delivery. Without it,summarize-deliveryhad to make delivery claims with no filed evidence behind them.Re-vendored all eight chain skills from
devague0.24.1. Previouslythink/spec-to-plan/assign-to-workforcecited guildmaster's re-broadcast while the other four cited devague directly. The chain is one workflow — syncing it from two upstreams let three legs lag the other five by a re-broadcast cycle. All eight now cite the origin, and guildmaster's copies carry addedscripts/wrappers the originals don't have, which is the second reason not to cite them.Verified byte-identical to origin for seven;
assign-to-workforcediffers by exactly the documentedagex→devexre-application (2 occurrences). The re-sync script indocs/skill-sources.mdnow re-applies it automatically.2. Bound the agent to the lane it actually runs on
culture.yaml:model: sakamakismile/Qwen3.6-27B-Text-NVFP4-MTP→model: associate.That pin was never a decision made for this agent — it's the
culture-agent-templatedefault carried by ~50 sibling repos in the workspace, and it names the cortex checkpoint.associateis a first-class lobes role — the tenth Colleague-facing lobe (lobes/roles.py), backed bynvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4, defined there asworkerminusrepo_action: it executes, drafts, inspects and calls tools, then hands the result back rather than enacting it. Its forbidden set —final_decision,security_decision,code_authoring,repo_action— is this repo's remit stated in someone else's registry.Naming the role rather than the checkpoint is deliberate: the gateway resolves it to whichever box hosts it, so the lane can move or re-checkpoint without touching this repo.
Measured topology:
Verified live:
model=associatethrough the gateway returns completions served by the Lightning checkpoint.3. Re-initialized
CLAUDE.mdand rewroteREADME.mdCLAUDE.mdnow carries the four load-bearing CLI contract invariants, the four places that must stay in sync when adding a verb (and why the rubric gate fails otherwise), build/test/lint/publish commands, the skills convention, the../.worktrees.associate/rule, thesteward doctorinvariants, and the runtime topology.README.mdis rewritten reader-facing on thedevagueREADME model — mermaid diagram of the chain and its three human gates, verb/skill/tooling tables.Honest about state
Both docs say plainly that the harness itself is not built: no read verb, no summarize verb, no find verb, no web fetch. Nothing here takes work off colleague yet. The
CHANGELOG.mdentries before 0.8.0 are template history with names substituted, not things that happened in this repo — also recorded.The seed additionally claimed this repo satisfies
prompt-file-presentviaCLAUDE.md+backend: claude. It does not:backend: colleague, soAGENTS.colleague.mdis the resident prompt andCLAUDE.mdis for Claude Code sessions working on the repo.Recorded, not worked around
A fleet-side defect, deliberately not compensated for in repo code: the Orin advertises the associate lane on its
/v1/modelsunder the checkpoint id, while the gateway'sASSOCIATE_SERVED_NAME=associate.probe_peer_readycompares exactly those two strings, so the readiness probe fails — the gateway reportsready=false, loaded=falseand omits the role from its own/v1/models, even though the data plane proxies it correctly. The lane works when addressed explicitly but is invisible to model discovery. Fix belongs in the deployment env.One inherited inconsistency also left recorded rather than guessed at: the
rememberskill'sSKILL.mdfrontmatter describes a private home-dir memory default that its ownscripts/remember.shoverrides to public/in-repo. The script is authoritative; the fix goes upstream ineidetic-cli.Sibling alignment (
devex pr delta)Triaged; two candidates for follow-up issues, not yet filed:
assign-to-workforcestill saysagex pr openin 2 places. The CLI was renamed todevex, so every consumer re-applies the same patch on every sync. Fixing it upstream retires the one adaptation in this repo's ledger.cortexby role name but the associate lane by checkpoint id. Arguably a gateway-side consistency bug, not just deployment config.No sibling needs a change to merge this.
Verification
uv run pytest -n auto— 22 passeduv run teken cli doctor . --strict— 26/26 PASSblack/isort/flake8/bandit— cleanmarkdownlint-cli2— 0 errorsdevex pr lint— no violationsuv run associate doctor— healthyVersion bumped 0.7.0 → 0.8.0
associate (Claude)