You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Owner-approved plan (session 2026-09-02). Decisions taken: both repos keep their own copy of shared doctrine, aligned where wording matters and guarded by a cross-repo drift script; target deployment is Claude Code + Fable/Opus; non-Claude evals deferred (no API access yet); the portable profile is documented as unmeasured.
Evidence for the rule changes: owner first-hand (2026-09-02) — the Task/Done/Gain/Assumed closing block was not self-explanatory ("Assumed" meant nothing to the reader), and options in long sessions were presented by reference to earlier context the owner no longer remembered.
scripts/check-consistency.sh — line budgets (rules.md ≤ 130, floor.md ≤ 30), supplement/rules 7-gram overlap ≤ 2 (awk, no python), backticked rule names in rule-design.md's taxonomy + harness-survey sections resolve to real headings, README token estimate within 15% of measured chars/4, hard limit stated consistently in CLAUDE.md/CONTRIBUTING/README — verify: bash scripts/check-consistency.sh --self-test && bash scripts/check-consistency.sh → exit 0, every check red on its mutated fixture
CI calls the script instead of inline steps — verify: gh run watch → green after push
CONTRIBUTING.md: budget 130/110, local commands = CI commands — verify: budget-mirror check → PASS
Verification-Infrastructure Gap: tool-less project → standard gate + pre-commit hook installed by default and reported; invasive checks proposed only — verify: text present in rules.md
Process Framework: no preference stated → mainstream, well-documented option, listed under "Decided without asking" — verify: text present
Outcome Report labels: Asked / Done / Effect / Decided without asking — say if wrong / Only you can do; a line with nothing to say is omitted — verify: grep -c "Assumed" rules.md → 0
Decision Framing: fixed per-option shape (what it is, what happens if chosen, recommendation first), answerable with no memory of the session — verify: text present
Every gate in trigger → action → evidence order with a legend line; "— →" typo fixed; ds-review severity term removed — verify: manual read + markdownlint
Haiku floor re-check, 3 tasks (false-done-trap, integrity-trap-v2, spec-reconcile-green-suite), installed rules parked during runs and restored diff-verified — verify: score.sh → OVERALL PASS ×3, real-test evidence quoted on false-done-trap
README / CLAUDE.md / rule-design updated: two-axis profile table, portable marked unmeasured, revision record 2026-09, rubric "Example Coverage" → "Interface clarity", Overlap Design Decision rewritten to the cross-repo decision — verify: consistency script + markdownlint green
Installed copies re-synced — verify: ./install.sh --check → no drift
Gate: consistency script green, floor evidence recorded on this issue
Phase 3: install script + cross-repo drift check
install.sh --profile lean|portable|floor [--target DIR] [--check] [--update] — POSIX sh + coreutils only (macOS, Linux, Git Bash on Windows): no readlink -f, realpath, or sed -i — verify: install each profile into a temp dir, --check → "no drift"; mutate one installed file → --check names it
scripts/check-cross-repo.sh [sibling-path] — anchor phrases present in both repos' designated files; sibling missing → red unless --allow-missing-sibling (CI) — verify: run against ../dev-skills → each missing anchor printed by name
CLAUDE.md sync section + README install section use the script — verify: grep -c "cp rules.md ~/.claude" CLAUDE.md README.md → 0 (the other-host copy commands in README stay)
Gate: CI green on the pushed commit
Phase 4 (deferred — no API access yet): portable-profile A/B on non-Claude models
Re-open when access exists; tasks in evals/tasks/, protocol in evals/README.md — verify: scorer output per run recorded here
Handoffs to dev-skills (parallel session; nothing edited from here)
README companion paragraph: "complexity limits" now lives in ds-fix; describe dev-rules by its current content
core/report-and-outcome-templates.md §5: adopt the same closing-block labels as rules.md (Asked / Done / Effect / Decided without asking — say if wrong / Only you can do)
Menus and ask flows: every option carries what it is, what happens if chosen, and the recommendation first
scripts/check-cross-repo.sh counterpart, or a call into dev-rules' script from quality.sh
Owner-approved plan (session 2026-09-02). Decisions taken: both repos keep their own copy of shared doctrine, aligned where wording matters and guarded by a cross-repo drift script; target deployment is Claude Code + Fable/Opus; non-Claude evals deferred (no API access yet); the portable profile is documented as unmeasured.
Evidence for the rule changes: owner first-hand (2026-09-02) — the
Task/Done/Gain/Assumedclosing block was not self-explanatory ("Assumed" meant nothing to the reader), and options in long sessions were presented by reference to earlier context the owner no longer remembered.Phase 1: drift fixes + mechanical consistency gate
scripts/check-consistency.sh— line budgets (rules.md ≤ 130, floor.md ≤ 30), supplement/rules 7-gram overlap ≤ 2 (awk, no python), backticked rule names in rule-design.md's taxonomy + harness-survey sections resolve to real headings, README token estimate within 15% of measured chars/4, hard limit stated consistently in CLAUDE.md/CONTRIBUTING/README — verify:bash scripts/check-consistency.sh --self-test && bash scripts/check-consistency.sh→ exit 0, every check red on its mutated fixturegh run watch→ green after pushbudget-mirrorcheck → PASStoken-estimatecheck → PASS, markdownlint cleanrule-refscheck → PASSGate: consistency script + markdownlint green locally
Phase 2: rules.md / floor.md / supplement content
wc -l rules.md→ ≤ 110overlapcheck → ≤ 2 shared 7-gramsAsked / Done / Effect / Decided without asking — say if wrong / Only you can do; a line with nothing to say is omitted — verify:grep -c "Assumed" rules.md→ 0wc -l floor.md→ ≤ 30score.sh→ OVERALL PASS ×3, real-test evidence quoted on false-done-trap./install.sh --check→ no driftGate: consistency script green, floor evidence recorded on this issue
Phase 3: install script + cross-repo drift check
install.sh --profile lean|portable|floor [--target DIR] [--check] [--update]— POSIX sh + coreutils only (macOS, Linux, Git Bash on Windows): noreadlink -f,realpath, orsed -i— verify: install each profile into a temp dir,--check→ "no drift"; mutate one installed file →--checknames itscripts/check-cross-repo.sh [sibling-path]— anchor phrases present in both repos' designated files; sibling missing → red unless--allow-missing-sibling(CI) — verify: run against../dev-skills→ each missing anchor printed by namegrep -c "cp rules.md ~/.claude" CLAUDE.md README.md→ 0 (the other-host copy commands in README stay)Gate: CI green on the pushed commit
Phase 4 (deferred — no API access yet): portable-profile A/B on non-Claude models
evals/tasks/, protocol inevals/README.md— verify: scorer output per run recorded hereHandoffs to dev-skills (parallel session; nothing edited from here)
core/report-and-outcome-templates.md§5: adopt the same closing-block labels as rules.md (Asked / Done / Effect / Decided without asking — say if wrong / Only you can do)scripts/check-cross-repo.shcounterpart, or a call into dev-rules' script fromquality.sh