Repository navigation
0.24.1: coherent public face — README rewrite, eight-skill coherence, docs sweep (#100, #47) - #114
Conversation
Scope pass over README, the eight origin skills, CLAUDE.md, docs and the agentculture.org page source; frame converged with the user's decision that no CLI behavior changes (c17) — this is a docs/skills refresh. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
…pec-to-plan) Nine tasks in four waves; every target covered; two risks parked. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Deletes the twelve older release paragraphs from '## Status' (history
now lives in CHANGELOG.md), keeping only the 0.24.0 (next-leg-hints)
paragraph followed by a one-line pointer. This also removes the two
stale statements ("ships separately", "still unimplemented") that
lived in those deleted paragraphs. Every section after Status is
unchanged.
Covers c15, h8.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ventions Adds a Shared conventions subsection to docs/skills.md's Minimum file structure section, defining once: the ## Before and after this leg hand-off template, the issue-97 freshness-rule sentence, and the eight-leg flow diagram (byte-for-byte match to validate-delivery/SKILL.md lines 27-29). Each of the eight per-skill sections gains one sentence pointing at this shared definition instead of restating it, so t4/t5 can copy from this file into the SKILL.md files themselves. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ess rule, eight-leg diagram)
…ion, EvidenceRecord, DeltaRecord Add sections for Obligation (devague/frame.py) and CriterionObligation (devague/plan.py) mirroring the LapseRecord section's shape (purpose, fields, status vocabulary, filing verb, append-only note), plus EvidenceRecord (with nested RunReference), DeltaRecord, and SupersessionEvent (devague/delivery.py) under the delivery peer. Notes the o-prefix id collision between frame and plan obligations (issue #108) as a known ambiguity, not a fix. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
…ter + think path fix (t5) Adds the shared "## Before and after this leg" section, the freshness-rule bullet, and a mention of the CLI's stderr next: hint to scope, think, challenge, and spec-to-plan SKILL.md (docs/skills.md's shared-conventions section, verbatim, per plan coherent-public-face-and-fresh-ledgers task t5). Also fixes think's after-export step, which still named the pre-0.11.0 paths: .devague/<slug>.json -> .devague/frames/<slug>.json and docs/reviews/ -> .devague/reviews/ (issue 47). Covers c6, h5, c7, h6, c8, h7. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
deviate and summarize-delivery now draw the eight-leg flow diagram byte-identical to validate-delivery's; deviate calls itself the sixth of eight legs and summarize-delivery calls its closed flow eight-leg. Every one of the four SKILL.md files (assign-to-workforce, deviate, validate-delivery, summarize-delivery) gains a '## Before and after this leg' hand-off section (docs/skills.md template) placed before Provenance, the freshness-rule sentence as the last Hard rules bullet, and one mention of the CLI's next: stderr hint. validate-delivery and summarize-delivery also each mention devague today and docs/current-spec.md as the projection the delivery ledger feeds. assign-to-workforce's two devague-lapse bullets are reworded so the main agent files a lapse the moment a task agent reports it, not at closeout. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
…eshness rule, today + next: mentions
Replace the stale three-stage ASCII arrow with a single mermaid flowchart naming the eight legs and the three human gates, followed by an eight-item numbered walkthrough that stands alone for PyPI readers (readme_renderer emits the mermaid fence as a plain pre block). Reorganise under exactly four H2 sections: What devague does / Why it works / How to use it / Impact: what lands where. The opening paragraph states above the fold that devague is built to be driven by an AI agent through eight skills and that humans own the three gates. The Two engines and Human Review Loop content is kept and folded under Why it works, which also gains an explicit three-item "what devague never does" list (no LLM, no test run, no orchestration). The .devague table becomes an impact table with a row per artifact path, its writing verb, and committed-or-gitignored. Three console captures (frame, plan, delivery ledger) are pasted verbatim from real runs in a scratch git repo at devague 0.24.0, each version-stamped and each showing the next: stderr hint. Every command block was checked against the shipped devague --help / devague plan --help output. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…am, verified captures
…LOG entry Bumps pyproject.toml (devague/__init__.py reads the version dynamically via importlib.metadata, so it agrees without a literal to update) and prepends a CHANGELOG entry quoting the three pre-fix before-state lines verbatim from main: README's old three-stage arrow, deviate/SKILL.md's old six-leg diagram, and spec-contract.md's old "ships separately" sentence. Closes #100 and #47. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
…fix, CLAUDE.md quote) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Parses every fenced ```bash block in README.md, extracts each `devague ...` line (handling trailing comments, `...` elisions, and `\`-continuations via shlex), and validates verb / plan-subverb / every --flag against the real argparse parser built by devague.cli._build_parser (in-process, no subprocess fallback needed since the factory is exported). Also pins the README's structural promises: exactly one mermaid fence, the eight-leg numbered list directly after it in flow order, every ```console capture block opening with a `# devague X.Y.Z` comment, and the four H2 sections in order. ```console blocks are captured output, not input, so their `$ devague ...` lines are intentionally not re-validated against the parser — only their version-comment header is checked. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
…st (deviation d1) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
…tion sweep) The multi-line code span wrapping "hint: ..." across two lines, and the backslash-escaped backticks around the `End state (from `devague plan deliverables`):` header text, both confused markdown-it's code-span parsing under MD038 once .claude/skills/** is un-ignored for linting. Fixed by keeping the hint code span on one line and switching the escaped-backtick header text to a double-backtick-delimited code span (the CommonMark-correct way to include a literal backtick inside a code span). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…-e12, b1-b2, d1, l1-l3), today projection Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
PR Summary by QodoAlign README and eight-skill documentation for 0.24.1
AI Description
Diagram
High-Level Assessment
Files changed (25)
|
Code Review by Qodo
1.
|
…nd-level walkthrough (decision c29, deviation d2) Re-pins tests/test_readme_commands.py to the new sections; drops the console-capture assertions. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
… between them Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
…-right on GitHub Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
…; add .pr_agent.toml from devague learn review Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
…nescaped (#99) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 8b6abf4 |
…neage bN, README gate wording, e13 corrects e2's test ref (l4) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK
|
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 3c25322 |



Docs and skills refresh — no CLI behavior change. Delivery summary below is the review map (
docs/deliveries/2026-09-04-coherent-public-face-and-fresh-ledgers.md); spec and plan are committed beside it.Closes #100, closes #47.
Intent
After: A newcomer reads README.md top to bottom and meets one eight-leg diagram, numbered moves with real captured output, the three human gates, and the ledgers the CLI keeps; the eight skills agree with each other and with the CLI; CLAUDE.md and docs describe the shipped surface with no statement the code contradicts
Planned Work
t1— Conventions source of truth in docs/skills.md: the shared hand-off section, the shared freshness rule, and the canonical eight-leg diagram blockt2— CLAUDE.md: shrink the Status section to the current release plus a CHANGELOG pointer and remove the two false statementst3— docs/spec-contract.md: entity sections for Obligation, EvidenceRecord and DeltaRecord matching the shipped dataclassest4— README.md rewrite: what / why it works / how to use / impact, with the eight-leg mermaid diagram, numbered walkthrough, agent-driven statement above the fold, verified captures and the artifact tablet5— Skills cluster A (scope, think, challenge, spec-to-plan): fix think's after-export paths, add the shared hand-off section, freshness rule and next: hint mentiont6— Skills cluster B (assign-to-workforce, deviate, validate-delivery, summarize-delivery): redraw the six-leg diagrams as eight legs, add the shared hand-off section, freshness rule, next: hint and devague today mentionst7— tests/test_readme_commands.py: pin README.md to the shipped CLI and to its own structural promisest8— Release hygiene: patch version bump and a CHANGELOG entry that quotes the before state verbatimt9— Verification sweep: boundaries untouched, no stale leg or verb text anywhere, lint and tests green, README answers the three reader questionsActual Delivery
t1docs/skills.mdgains### Shared conventions(hand-off heading + template, freshness sentence, canonical eight-leg block) and one pointer sentence per skill section — commit6d349da, merged114a290t2CLAUDE.mdStatus cut from 265 lines to one 0.24.0 paragraph plus a CHANGELOG pointer; both false statements gone; everything below Status byte-identical — commit5350a54, mergedc4bf2fet3docs/spec-contract.mdgains Obligation, CriterionObligation, RunReference, EvidenceRecord, DeltaRecord, SupersessionEvent sections; field-diff script reported zero differences — commit3a1d0f7, merged6119de5t4README.mdrewritten to the four sections with one mermaid diagram, eight-item walkthrough, three version-stamped captures, impact table (227 lines) — commit204a92f, merged4d7023f; then re-edited by the main agent underd1to 202 lines — commitc5ae504t5next:mention; think's after-export paths fixed (#47) — commit112f28f, mergede4a36d6t6devague todaynamed in the two closing skills — commit189bf33, mergeddbf0ef6t7tests/test_readme_commands.py(7 tests) pins README command lines todevague.cli._build_parserand its structure — commitee8e5a1, mergedf223030t8uv.lock, CHANGELOG entry quoting the three before-state lines — commitb94b685, merged596a8e8; two misattributed bullets corrected by the main agent — commit952fe6a(lapsel2)t9fa5a21c, merged171589e; its two criterion-1 failures were false positives of the criterion, not violations (lapsel3)Mid-work Decisions
d1— After t4's README lands and t7's pinning test merges, the main agent (not a workforce subagent) makes an additional editorial pass over README.md: validate it against the spec, make it welcoming, cut prose to light-or-none, keep it technical and clear; t7's test and t9's sweep must still pass afterwards — user request mid-run: the leading model owns the final README quality, beyond t4's acceptance criteriad2— Post-run README restructure by the main agent: install and agent setup move to the top, the verb-level walkthrough and the three console captures are removed, tests/test_readme_commands.py is re-pinned to the new section list; supersedes the shape t4 and t7 delivered — user direction after gate 3 opened: devague is installed with uv tool install / uvx and the agent learns the skills via devague learn skills; specific commands do not matter to the human readerCHANGELOG bullets from
t8were corrected by the main agent after merge (think fix misdescribed; a CLAUDE.md quote misattributed to spec-contract.md) — no deviation record; recorded as lapsel2and fixed in952fe6a.t9's first acceptance criterion produced two false failures (untracked files in../orgdated July, and the.devague/frame and plan JSON the spec and plan commits intentionally added); resolved by measurement (git -C ../org diff --statempty), not by editing the criterion — recorded as lapsel3.t9fixed a pre-existing MD038 lint error in assign-to-workforce/SKILL.md that the repo's.claude/skills/**lint ignore had hidden — within its instruction, no record needed.Drift From Plan
t4(d1)acceptablet4,t7(d2)acceptablet8l2); the version bump and quotes were correctacceptablet9.devague/state as violations (l3); the honesty conditions h4 and h9 behind it holdacceptableEvidence
tests/test_readme_commands.py— pass (7 passed)tests/test_spec_to_plan_skill.py tests/test_teaching_surface_sweep.py tests/test_cli_learn.py tests/test_summary.py— pass (199 passed)uv run pytest -n auto -q— pass (1651 passed; baseline before the run 1644)uv run flake8 --config=.flake8 devague/ tests/— cleanmarkdownlint-cli2 README.md CLAUDE.md CHANGELOG.md docs/*.md— 0 errors.claude/skills/**ignore — 0 errorssix-leg|seven-leg|still unimplemented|ships separately|docs/reviewsacross README, CLAUDE.md, docs, skills — 0 hitsreadme_rendereron README.md — onepre lang=mermaidblock, list items intact (PyPI fallback)git -C ../org diff --statand--cached— empty;git -C ../guildmaster status --short— empty4e66665..171589e(spec, plan, split, nine task merges, two main-agent reconciliations)o1–o12, evidencee1–e12(all pass, run commit171589e), deltasb1b2, deviationsd1d2, lapsesl1–l3— all approvedd2removed the console captures aftere2/e1were filed;c3's capture half andh14no longer hold on the final README and are superseded by decisionc29, not claimedDelivery Claims
c2— README.md replaces its stale three-stage arrow (README.md lines 10-12: idea, spec, plan, build) with an eight-leg pipeline diagram as a mermaid fence, and adds a numbered move walkthrough (01 scope ... 08 summarize-delivery) modeled on the site page's pipeline stages and method sectionsexecutiontests/test_readme_commands.py(run 2026-09-04)c3— README.md gains real, verified code examples: every command block is checked against the shipped 'devague --help' / 'devague plan --help' output, and one short verbatim terminal capture per engine (frame, plan, delivery ledger) shows actual output including the 'next:' stderr hintcoveragetests/test_readme_commands.py::test_readme_commands_parse(run 2026-09-04)c4— README.md does not copy the site page's leg count: agentculture.org/agents/devague still presents seven legs and seven operator skills (no validate-delivery, no lapse, no oblige/evidence/delta, no today); the README stays ahead and the site is updated separately in the org repofidelitygit -C ../org diff --stat and diff --cached --stat(run 2026-09-04)c6— The deviate and summarize-delivery skills redraw their literal flow diagrams (deviate/SKILL.md lines 20-25, summarize-delivery/SKILL.md lines 22-27) as the eight-leg flow, and think/SKILL.md's after-export step (lines 275-277) cites .devague/frames/ and .devague/reviews/ instead of .devague/ and docs/reviews/ (closes issues 100 and 47)executiongrep -rn 'six-leg|seven-leg|docs/reviews' + md5sum of the three diagram blocks(run 2026-09-04)c7— Every skill that files a ledger record carries one explicit freshness rule in its hard rules: file the record at the moment the thing happens, never at closeout; today only challenge (line 178), deviate (lines 4-5, 44, 109) and summarize-delivery (lines 33, 308) say so, while scope, spec-to-plan, assign-to-workforce and validate-delivery do notexecutiontr newline + grep across the eight SKILL.md(run 2026-09-04)c8— The eight skills share one hand-off convention: each SKILL.md states the leg before it and after it in a same-named section, mentions devague today where the leg produces or consumes it (validate-delivery, summarize-delivery), and mentions the 'next:' stderr hint as the CLI's own next-move signal (issue 40 item 14 flags spec-to-plan's missing hand-off section)executiongrep -l for the hand-off heading, 'next: ' and 'devague today'(run 2026-09-04)c15— CLAUDE.md's Status section shrinks to the current release plus a pointer to CHANGELOG.md, and its two false statements are removed (lines 49-50: 'the exact oblige / evidence / delta CLI surface ships separately'; lines 199-202: 'devague scope ... still unimplemented'); docs/spec-contract.md gains entity sections for Obligation, EvidenceRecord and DeltaRecord documenting the fields that exist todayexecutionawk over CLAUDE.md Status + grep -c of six entity headings in docs/spec-contract.md(run 2026-09-04)c18— Humans meeting devague cold on GitHub or PyPI (a reader deciding whether to install it) first; operator agents driving the CLI second, via the skills and devague learnexecutionsed -n 1,12p README.md | grep for ids, capture, interrogate, converge(run 2026-09-04)c19— A reader who has only the README can name the eight legs in order, the three human gates, and what devague never does (call an LLM, run a test, orchestrate); markdownlint-cli2 passes on every touched file; every command block in README matches the shipped --help outputexecutionmarkdownlint-cli2 on README.md CLAUDE.md CHANGELOG.md docs/*.md, and on the eight SKILL.md copied beside a config without the skills ignore(run 2026-09-04)c23— The numbered eight-leg walkthrough in README.md stands alone as the text fallback for the diagram: pyproject.toml line 6 makes README.md the PyPI long description, and a scratch probe withreadme_rendererrendered a mermaid fence as a plain pre block (lang mermaid), so PyPI readers never see the diagramexecutionuv run --with readme-renderer[md] python -m readme_renderer README.md(run 2026-09-04)c24— The full pytest suite stays green after the skill edits: tests/test_spec_to_plan_skill.py(t19) pins spec-to-plan's moves table to the live CLI, tests/test_teaching_surface_sweep.pysection 9 pins learn output against scope/SKILL.md, tests/test_cli_learn.pypins the SKILL.md paths, and tests/test_summary.pypins the delivery summary's eight sections to summarize-delivery/SKILL.md orderexecutionuv run pytest -n auto -q(run 2026-09-04)c25— The PR bumps the version (patch, 0.24.x) and prepends a CHANGELOG.md entry: .github/workflows/tests.yml line 64 enforces the AgentCulture rule that every PR bumps the version, docs includedcoverageuv run devague --version + grep -n in CHANGELOG.md(run 2026-09-04)Confidence tokens above are the evidence ledger's strength values. Three approved lapses cap what they touch:
l1(a hand-edited capture, caught and restored) bears onc3;l2on the CHANGELOG half ofc25;l3on the boundary check behindc4. None was found by reading data afterwards — each was filed the moment it was reported.Lapse ledger evidence:
l1provenance-missingl2provenance-missingl3grader-unverifiedRemaining Work / Follow-up
agentculture.org/agents/devague still presents seven legs (park
v1) — file an issue on theorgrepo to bring the page to eight legs with validate-delivery, lapse, evidence/delta and today; owner: the user.guildmaster skill-update brief (park
v3, riskr2) — after this PR merges, send thecommunicateskill'sskill-update-brief.mdso mesh consumers re-vendor the eight skills; owner: devague agent.README captures embed 0.24.x output (risk
r1) — refresh when a release changes any captured line; the version comment on each capture makes staleness visible..claude/skills/**is ignored by the repo's markdownlint config, so skill files lint only by hand (found byt6, fixed byt9) — consider a CI step that lints them with the ignore lifted; owner: follow-up issue.Obligation id prefix
ocollides between frame and plan (Obligation ids collide across the frame and plan mints — a bare obligation_ref in a delivery ledger is ambiguous #108) — documented in spec-contract.md as a known ambiguity, not fixed here.After merge: close deviate and summarize-delivery SKILL.md still draw the six-leg flow — /challenge is missing #100 and think SKILL.md: After-export step documents stale frame/review paths (.devague/<slug>.json vs .devague/frames/, docs/reviews/ vs .devague/reviews/) #47; then
/summarize-delivery's parkv2(mermaid syntax parity with the site pipeline) stays open until the README is ever republished there.devague (Claude)
🤖 Generated with Claude Code
https://claude.ai/code/session_01NBUnemNDpVK7dD63m9HQNK