Skip to content

chore: honor init contract (coding-standards.md) + fix farm setup-doc dead-link#119

Merged
SUaDtL merged 2 commits into
mainfrom
chore/pre-2.5-coding-standards-and-farm-doc
Jun 22, 2026
Merged

chore: honor init contract (coding-standards.md) + fix farm setup-doc dead-link#119
SUaDtL merged 2 commits into
mainfrom
chore/pre-2.5-coding-standards-and-farm-doc

Conversation

@SUaDtL

@SUaDtL SUaDtL commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

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. decompose and context-creation (both 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, 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.0021 retired the never-scaffolded .codearbiter/farm.md and repointed the five markdown references, but missed the two farm.ts runtime error strings and .env.example. A consumer who tripped the no-model or no-API-key guard on --farm was sent to a file the plugin never creates. This repoints both strings and the env example to ${CLAUDE_PLUGIN_ROOT}/includes/farm.md, rebuilds farm.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 local farm.md. A fresh consumer install hits both. Clearing them before 2.5 ships.

Test plan

  • Python suite green (9 files: hook-guards, cold-install, preview, ux-conversion, prune-nudge, migration-backstop, metrics, taskboard, taskwriter).
  • plugins/ca/tools: npm run typecheck clean, npm run build regenerates farm.js with no stale delta, npm test 108/108 green.
  • Behavioral proof: ran the rebuilt farm.js with an empty FARM_API_KEY; it prints the corrected ${CLAUDE_PLUGIN_ROOT}/includes/farm.md pointer.
  • check-plugin-refs.py ca intact; no dangling .codearbiter/farm.md references 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 touched resolveConfig() 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 --farm path 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:release alongside the #118 entry.

https://claude.ai/code/session_016NVNTNAPKXzWD8bmmjVHP7

SUaDtL added 2 commits June 22, 2026 00:25
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
@SUaDtL
SUaDtL merged commit 0e0ac1c into main Jun 22, 2026
19 checks passed
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>
@SUaDtL SUaDtL mentioned this pull request Jun 22, 2026
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>
@SUaDtL
SUaDtL deleted the chore/pre-2.5-coding-standards-and-farm-doc branch June 23, 2026 19:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant