chore: honor init contract (coding-standards.md) + fix farm setup-doc dead-link#119
Merged
Merged
Conversation
codeArbiter was violating its own initialization contract. Both decompose (Phase 6) and context-creation (Phase 6) require coding-standards.md present and non-empty before sealing <!--INITIALIZED-->, and tdd/refactor/writing-plans plus the author agents name it as required pre-flight reading. This repo was sealed INITIALIZED without it — a dogfooding escape (the v2 rewrite hand-built the state rather than running a clean decompose, so the lock check never ran). Authors the file from the repo's actual conventions: stdlib-only Python hooks with leading-underscore shared libs, strict TS farm dispatcher shipped as a built bundle, no per-file license headers, LF line endings. Resolves the v2.docs.0002 carried-triage task. Claude-Session: https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7
mkt.review.0021 retired the never-scaffolded .codearbiter/farm.md and repointed
the farm setup doc to ${CLAUDE_PLUGIN_ROOT}/includes/farm.md — but it fixed only
the five markdown references and missed the runtime error strings and the env
example. A consumer who tripped the no-model / no-API-key guard on --farm was
pointed at .codearbiter/farm.md, a file the plugin never creates. This dev
repo's leftover copy of that file masked the dead link.
Repoints the two farm.ts error strings and .env.example, rebuilds the shipped
farm.js bundle (string-only delta), and removes the orphan .codearbiter/farm.md.
CHANGELOG: --farm setup-doc error messages now point at the file that actually ships.
Claude-Session: https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7
This was referenced Jun 22, 2026
SUaDtL
added a commit
that referenced
this pull request
Jun 22, 2026
The 2.5.0 section listed only #116/#117. Adds the task-board lifecycle + /ca:task feature (#118) under Added, and a Fixed group for the farm setup-doc dead-link (#119) and the crypto/secret gate hardening (#120), rolled from each commit's CHANGELOG footer. Dates the section to the release day. Project-state-only changes (.codearbiter/) stay out of the log per its stated scope. Claude-Session: https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7 Co-authored-by: SUaDtL <SUaDtL@users.noreply.github.com>
Merged
SUaDtL
added a commit
that referenced
this pull request
Jun 22, 2026
* docs(changelog): roll up #118/#119/#120 into the 2.5.0 section The 2.5.0 section listed only #116/#117. Adds the task-board lifecycle + /ca:task feature (#118) under Added, and a Fixed group for the farm setup-doc dead-link (#119) and the crypto/secret gate hardening (#120), rolled from each commit's CHANGELOG footer. Dates the section to the release day. Project-state-only changes (.codearbiter/) stay out of the log per its stated scope. Claude-Session: https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7 * feat(site): docs site polish — bespoke landing, Feature Forge, anti-slop copy (#122) * feat(site): bespoke landing, Feature Forge surfacing, anti-slop copy The #94 --farm artifact built a working docs site but it read as a scaffold: stock Starlight chrome, four generic cards, and a landing that printed `/ca:sprint --farm` while explaining neither --farm nor the Feature Forge anywhere on the site. This polish pass makes the site earn a first-time visitor's understanding within one screen: - A bespoke landing with a CSS-only animated gate-catch terminal that shows a gate blocking a banned crypto primitive, then clearing — the actual conversion mechanic, not an assertion. Honors prefers-reduced-motion with a static full transcript; the transcript is real DOM text. - Feature Forge surfaced as the differentiator: a landing showcase, a Concepts section with the two-axis labelling model, and preview badges driven by a site-side generator allowlist (no plugins/ca change). --farm is now linked to its explanation. - Three hand-authored SVG diagrams (lane-flow, two-axis, gate model) and custom callouts across the inner pages. - Copy de-slopped: em-dashes cut from 7/16/10 to 0/0/0 in body prose, plus removal of templated phrasing and LLM-tell vocabulary. - Functional: logo/favicon/social wired, base-safe internal links, Pagefind verified in dist. Reviewed via multi-agent build with adversarial verify (visual design, link/base-path, copy anti-slop); 4 blocking findings caught and fixed. Crypto-compliance gate passed (demo transcript text, no operational crypto). Site suite green: typecheck clean, 104 tests, build 77 pages. CHANGELOG: Public docs site redesigned — bespoke landing with a live gate-catch demo, Feature Forge showcase + preview badges, and a copy anti-slop pass. Ref: .codearbiter/specs/docs-site-polish.md Claude-Session: https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7 * docs(governance): record docs-site-polish spec + harvest follow-ups Persist the approved spec that drove the feat(site) docs overhaul and record the two follow-ups its build surfaced, so the out-of-scope work isn't lost: - Allowlist-drift reconciler: a CI/doctor check that the site-side Feature Forge preview allowlist matches real preview status. - Base-path img-href convention: unify the relative vs BASE_URL forms used for diagram/image sources across the site. Ref: .codearbiter/specs/docs-site-polish.md Claude-Session: https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7 * docs(governance): harvest coverage-auditor follow-ups for docs site The PR coverage audit confirmed the build green but flagged two spec acceptance criteria the build delivered as content without the automated assertion the spec promised (AC-9 diagram titles, AC-13 Concepts forge section), plus an untested defensive path in forge-status. Record them so the spec's testability promise is honored rather than quietly dropped. Ref: .codearbiter/specs/docs-site-polish.md Claude-Session: https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7 --------- Co-authored-by: SUaDtL <SUaDtL@users.noreply.github.com> * fix(site): use Starlight 0.33+ array syntax for the social config (#124) CI's clean `npm ci` installs the pinned Starlight ^0.40.0, which rejects the legacy `social: { github: ... }` object form and fails the docs build at config:setup. The dev tree masked this: local node_modules held a stale Starlight 0.32.6 that still accepted the object form, so the local build passed while CI went red. Convert to the array-of-link-items syntax 0.33+ requires. Verified against a clean install (Starlight 0.40.0): build exits 0 (77 pages), typecheck clean, 104 tests pass. CHANGELOG: Docs site builds again on the pinned Starlight; the GitHub social link renders in the site header. Closes: docs deploy build failure on PR #123 Claude-Session: https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7 Co-authored-by: SUaDtL <SUaDtL@users.noreply.github.com> --------- Co-authored-by: SUaDtL <SUaDtL@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Two pre-release correctness fixes, both masked by this dev repo's own leftover state.
1. Add
.codearbiter/coding-standards.md(resolves v2.docs.0002)codeArbiter was violating its own initialization contract.
decomposeandcontext-creation(both Phase 6) requirecoding-standards.mdpresent and non-empty before sealing<!--INITIALIZED-->, andtdd/refactor/writing-plansplus the author agents name it as required pre-flight reading. This repo was sealed INITIALIZED without it, because the v2 rewrite hand-built the state instead of running a clean decompose, so the lock check never executed. The new file documents the repo's actual conventions: stdlib-only Python hooks with leading-underscore shared libs, strict TS farm dispatcher shipped as a built bundle, no per-file license headers, LF line endings.2. Repoint the farm setup-doc dead-link
mkt.review.0021retired the never-scaffolded.codearbiter/farm.mdand repointed the five markdown references, but missed the twofarm.tsruntime error strings and.env.example. A consumer who tripped the no-model or no-API-key guard on--farmwas sent to a file the plugin never creates. This repoints both strings and the env example to${CLAUDE_PLUGIN_ROOT}/includes/farm.md, rebuildsfarm.js(string-only delta), and removes the orphan.codearbiter/farm.md.Why
Both defects were hidden by this dev repo's idiosyncratic state: a hand-built
.codearbiter/that never ran a clean decompose, and a stale localfarm.md. A fresh consumer install hits both. Clearing them before 2.5 ships.Test plan
plugins/ca/tools:npm run typecheckclean,npm run buildregeneratesfarm.jswith no stale delta,npm test108/108 green.farm.jswith an emptyFARM_API_KEY; it prints the corrected${CLAUDE_PLUGIN_ROOT}/includes/farm.mdpointer.check-plugin-refs.py caintact; no dangling.codearbiter/farm.mdreferences remain on the branch.Review
security-reviewer and coverage-auditor both PASS with zero findings. The farm change is confined to doc-pointer strings (
assertSecureBaseUrl, the API-key flow, and TLS are untouched and absent from the diff). No new test obligation: the existing suite already exercises the touchedresolveConfig()error paths.Known nit (deliberate)
The error strings now print the literal
${CLAUDE_PLUGIN_ROOT}because they are double-quoted JS strings with no expansion. Kept for consistency with the five markdown references; the--farmpath is always orchestrator-invoked, so the reading agent resolves the variable. security-reviewer classed it a UX nit with zero security impact.Release note
Rides the unpublished 2.5.0 (payload change, no further version bump). The CHANGELOG entry for the
fix(farm)lands at/ca:releasealongside the #118 entry.https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7