roadmap(#217): loud WARNING below xhigh — max preferred, xhigh floor - #236
Merged
Conversation
…floor Current hook treats any effort ≠ xhigh as 'upgrade available' — including max (the preferred default), which is backwards. Docs already say 'max preferred, xhigh floor'. Close the coherence gap. Behavior (post-change): - effort=max or xhigh → silent (at or above floor) - effort=high/medium/low or unset → LOUD WARNING block: WARNING marker, SDLC compliance mention, /effort max primary recommendation, /effort xhigh floor alternative, opus[1m] model reminder Also removes a duplicate effort/model check from instructions-loaded-check.sh that used the same stale xhigh-as-recommended logic and double-printed on SessionStart. Single source of truth is now model-effort-check.sh. Tests: - 2 new TDD tests in test-hooks.sh (max silent, below-xhigh loud) - 1 new regression test (instructions-loaded doesn't re-declare the nudge) - Updated test_hooks_recommend_opus_1m_alias to assert single-source-of-truth - 119/119 hook tests pass, 22/22 doc-consistency tests pass Doc refs: - CHANGELOG.md:120+140 and ROADMAP.md:134 annotated as superseded by #217 - Live docs (SDLC.md, CLAUDE_CODE_SDLC_WIZARD.md) already say max preferred Codex cross-model review: - Round 1: 7/10 NOT CERTIFIED (dupe nudge + stale doc refs) - Round 2: 8/10 NOT CERTIFIED (one stale line missed at CHANGELOG.md:120) - Round 3: 10/10 CERTIFIED
Contributor
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
BaseInfinity
added a commit
that referenced
this pull request
Apr 24, 2026
* release: v1.37.0 Bundles two Codex-certified PRs: - PR #235 (ROADMAP #231 Phase 1): delete monthly-research.yml — 519 lines + 4 claude-code-action steps removed, zero merged artifacts in 30d, $11-23/mo API burn eliminated. Stubbed 17 test_monthly_* assertions (#231 Phase 1 pattern), marked 5 live-doc sections REMOVED/historical. Codex 3-round: 9/10. - PR #236 (ROADMAP #217): loud WARNING below xhigh effort — max preferred, xhigh floor, single source of truth. Dupe effort check removed from instructions-loaded-check.sh. 2 TDD tests + 1 regression test. Codex 3-round: 10/10. Version parity: - package.json, SDLC.md metadata + table, CLAUDE_CODE_SDLC_WIZARD.md (2 refs), .claude-plugin/plugin.json, .claude-plugin/marketplace.json → 1.37.0 - skills/update/SKILL.md Step 3 example refreshed - CHANGELOG entry "[1.37.0] - 2026-04-24" ROADMAP: - #232: /update-wizard should mimic 'claude update' UX - #233: mixed-mode coder+reviewer tier (Sonnet coder + Opus reviewer for simple repos, inspired by codex-sdlc-wizard) - #234: GitHub About populated (description, homepage, 8 topics) Release review (Codex round 1 → 2): - REL-001 fixed: commit now exists on release branch (was empty) - REL-002 fixed: '2 claude-code-action blocks' corrected to '4 steps' - REL-003 fixed: .reviews/handoff.json + untracked .claude/hooks excluded * release(v1.37.0): fix CHANGELOG line 26 count (2 → 4 claude-code-action steps) Codex round-2 recheck caught that the 'Removed' section bullet still said '2 API blocks' — line 11 was fixed, line 26 was not. Align with reality: pre-delete workflow had 4 uses: anthropics/claude-code-action@v1 steps.
2 tasks
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
…rn its keep?' pass (#313)
7 tasks
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
* bloat: BASELINE block fires once per CC session (v1.69.0) hooks/sdlc-prompt-check.sh emitted a ~250-token static SDLC BASELINE block on every UserPromptSubmit. After the SDLC skill auto-invokes, that block is duplicate context — ~12K tokens/session wasted for any user with >3 prompts. Now gated on a per-session_id sentinel under \$SDLC_WIZARD_CACHE_DIR/baseline-shown-<id>, atomic-claimed via subshell 'set -C' (noclobber) so N parallel fires emit exactly once. Pruned at 7d. SETUP-not-complete + EFFORT-bump warnings still fire every prompt. No-session_id stdin keeps current emit-every-fire behavior (legacy CC + direct shell tests). Codex round 1 caught two P1s, both fixed: (a) concurrency race in naive 'check then write-after-emit' pattern; (b) session_id extraction was jq-coupled — now uses grep+sed so the gate works without jq. Round 2 CERTIFIED 9/10. Regression tests: 50-parallel + restricted- PATH-no-jq. Discovered during ROADMAP #236 functional-bloat audit. Audit method: measure cost x frequency, judge value — not blind delete-and-see. Other hooks audited (model-effort-check, precompact-seam-check, token-spike-check) earned their keep — silent at healthy state. * ci: list test-baseline-fires-once.sh in CONTRIBUTING.md test-workflow-triggers.sh asserts CONTRIBUTING.md lists every test script that CI runs. Adding the new test was missed in the v1.69.0 commit.
9 tasks
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
hooks/tdd-pretool-check.sh emitted a ~50-token JSON nudge ('TDD CHECK:
Are you writing IMPLEMENTATION before a FAILING TEST?') on every
Write/Edit/MultiEdit touching src/**. After the SDLC skill auto-invokes
(which already covers TDD RED/GREEN), the per-Edit nudge is duplicate
context. Typical SDLC session has 10-30 src Edits = ~0.5-1.5K wasted
tokens.
Same atomic-noclobber sentinel pattern proven in v1.69.0 (BASELINE gate),
applied to the TDD CHECK output. New sentinel at \$SDLC_WIZARD_CACHE_DIR/
tdd-shown-<session_id>. Non-src/ files still produce zero output and
crucially DO NOT consume the sentinel slot (Test 6).
Codex round 1 caught one P1 (new test file untracked at review time);
fixed by staging before round 2. Round 2 CERTIFIED 9/10.
ROADMAP #236 phase 2. Combined v1.69.0 + v1.70.0 saves ~13.5K tokens
on a 50-prompt + 20-Edit session.
9 tasks
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
skills/sdlc/SKILL.md Cross-Model Review section condensed from ~70 lines to ~20 lines. Saves ~427 tokens per SDLC skill auto-invoke (4995 → 4568 tokens). The skill auto-loads on virtually every productive implement/fix/refactor task, so this is real per-session cost. What stayed: decision-making (when to run/skip, prereqs), 4-step protocol summary (preflight → handoff → reviewer → dialogue), required JSON keys including the test-asserted '"mission"', '"success"', '"failure"', '"verification_checklist"', '"pr_number":' (PreCompact self-heal opt-in #209), convergence rule, ### Release Review Focus subsection with Version parity, multi-reviewer/non-code-domain one-liner. What moved to wizard doc canonical: full handoff JSON example, full codex command example. New subsections added in CLAUDE_CODE_SDLC_WIZARD.md → Cross-Model Review Loop: #### Anti-patterns, #### Multiple reviewers, #### Non-code domains. The SKILL.md pointer now reaches all dropped content. Codex review: round 1 caught 3 P0 test-self-update.sh failures (4/10); round 2 caught 1 more P0 in test-hooks.sh asserting '"pr_number":' with colon, not bare quotes (6/10); round 3 CERTIFIED 10/10. ROADMAP #236 phase 3. Combined v1.69 + v1.70 + v1.71 saves ~14K tokens/session for typical workloads.
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
…floor (#236) Current hook treats any effort ≠ xhigh as 'upgrade available' — including max (the preferred default), which is backwards. Docs already say 'max preferred, xhigh floor'. Close the coherence gap. Behavior (post-change): - effort=max or xhigh → silent (at or above floor) - effort=high/medium/low or unset → LOUD WARNING block: WARNING marker, SDLC compliance mention, /effort max primary recommendation, /effort xhigh floor alternative, opus[1m] model reminder Also removes a duplicate effort/model check from instructions-loaded-check.sh that used the same stale xhigh-as-recommended logic and double-printed on SessionStart. Single source of truth is now model-effort-check.sh. Tests: - 2 new TDD tests in test-hooks.sh (max silent, below-xhigh loud) - 1 new regression test (instructions-loaded doesn't re-declare the nudge) - Updated test_hooks_recommend_opus_1m_alias to assert single-source-of-truth - 119/119 hook tests pass, 22/22 doc-consistency tests pass Doc refs: - CHANGELOG.md:120+140 and ROADMAP.md:134 annotated as superseded by #217 - Live docs (SDLC.md, CLAUDE_CODE_SDLC_WIZARD.md) already say max preferred Codex cross-model review: - Round 1: 7/10 NOT CERTIFIED (dupe nudge + stale doc refs) - Round 2: 8/10 NOT CERTIFIED (one stale line missed at CHANGELOG.md:120) - Round 3: 10/10 CERTIFIED
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
* release: v1.37.0 Bundles two Codex-certified PRs: - PR #235 (ROADMAP #231 Phase 1): delete monthly-research.yml — 519 lines + 4 claude-code-action steps removed, zero merged artifacts in 30d, $11-23/mo API burn eliminated. Stubbed 17 test_monthly_* assertions (#231 Phase 1 pattern), marked 5 live-doc sections REMOVED/historical. Codex 3-round: 9/10. - PR #236 (ROADMAP #217): loud WARNING below xhigh effort — max preferred, xhigh floor, single source of truth. Dupe effort check removed from instructions-loaded-check.sh. 2 TDD tests + 1 regression test. Codex 3-round: 10/10. Version parity: - package.json, SDLC.md metadata + table, CLAUDE_CODE_SDLC_WIZARD.md (2 refs), .claude-plugin/plugin.json, .claude-plugin/marketplace.json → 1.37.0 - skills/update/SKILL.md Step 3 example refreshed - CHANGELOG entry "[1.37.0] - 2026-04-24" ROADMAP: - #232: /update-wizard should mimic 'claude update' UX - #233: mixed-mode coder+reviewer tier (Sonnet coder + Opus reviewer for simple repos, inspired by codex-sdlc-wizard) - #234: GitHub About populated (description, homepage, 8 topics) Release review (Codex round 1 → 2): - REL-001 fixed: commit now exists on release branch (was empty) - REL-002 fixed: '2 claude-code-action blocks' corrected to '4 steps' - REL-003 fixed: .reviews/handoff.json + untracked .claude/hooks excluded * release(v1.37.0): fix CHANGELOG line 26 count (2 → 4 claude-code-action steps) Codex round-2 recheck caught that the 'Removed' section bullet still said '2 API blocks' — line 11 was fixed, line 26 was not. Align with reality: pre-delete workflow had 4 uses: anthropics/claude-code-action@v1 steps.
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
…rn its keep?' pass (#313)
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
* bloat: BASELINE block fires once per CC session (v1.69.0) hooks/sdlc-prompt-check.sh emitted a ~250-token static SDLC BASELINE block on every UserPromptSubmit. After the SDLC skill auto-invokes, that block is duplicate context — ~12K tokens/session wasted for any user with >3 prompts. Now gated on a per-session_id sentinel under \$SDLC_WIZARD_CACHE_DIR/baseline-shown-<id>, atomic-claimed via subshell 'set -C' (noclobber) so N parallel fires emit exactly once. Pruned at 7d. SETUP-not-complete + EFFORT-bump warnings still fire every prompt. No-session_id stdin keeps current emit-every-fire behavior (legacy CC + direct shell tests). Codex round 1 caught two P1s, both fixed: (a) concurrency race in naive 'check then write-after-emit' pattern; (b) session_id extraction was jq-coupled — now uses grep+sed so the gate works without jq. Round 2 CERTIFIED 9/10. Regression tests: 50-parallel + restricted- PATH-no-jq. Discovered during ROADMAP #236 functional-bloat audit. Audit method: measure cost x frequency, judge value — not blind delete-and-see. Other hooks audited (model-effort-check, precompact-seam-check, token-spike-check) earned their keep — silent at healthy state. * ci: list test-baseline-fires-once.sh in CONTRIBUTING.md test-workflow-triggers.sh asserts CONTRIBUTING.md lists every test script that CI runs. Adding the new test was missed in the v1.69.0 commit.
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
hooks/tdd-pretool-check.sh emitted a ~50-token JSON nudge ('TDD CHECK:
Are you writing IMPLEMENTATION before a FAILING TEST?') on every
Write/Edit/MultiEdit touching src/**. After the SDLC skill auto-invokes
(which already covers TDD RED/GREEN), the per-Edit nudge is duplicate
context. Typical SDLC session has 10-30 src Edits = ~0.5-1.5K wasted
tokens.
Same atomic-noclobber sentinel pattern proven in v1.69.0 (BASELINE gate),
applied to the TDD CHECK output. New sentinel at \$SDLC_WIZARD_CACHE_DIR/
tdd-shown-<session_id>. Non-src/ files still produce zero output and
crucially DO NOT consume the sentinel slot (Test 6).
Codex round 1 caught one P1 (new test file untracked at review time);
fixed by staging before round 2. Round 2 CERTIFIED 9/10.
ROADMAP #236 phase 2. Combined v1.69.0 + v1.70.0 saves ~13.5K tokens
on a 50-prompt + 20-Edit session.
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
skills/sdlc/SKILL.md Cross-Model Review section condensed from ~70 lines to ~20 lines. Saves ~427 tokens per SDLC skill auto-invoke (4995 → 4568 tokens). The skill auto-loads on virtually every productive implement/fix/refactor task, so this is real per-session cost. What stayed: decision-making (when to run/skip, prereqs), 4-step protocol summary (preflight → handoff → reviewer → dialogue), required JSON keys including the test-asserted '"mission"', '"success"', '"failure"', '"verification_checklist"', '"pr_number":' (PreCompact self-heal opt-in #209), convergence rule, ### Release Review Focus subsection with Version parity, multi-reviewer/non-code-domain one-liner. What moved to wizard doc canonical: full handoff JSON example, full codex command example. New subsections added in CLAUDE_CODE_SDLC_WIZARD.md → Cross-Model Review Loop: #### Anti-patterns, #### Multiple reviewers, #### Non-code domains. The SKILL.md pointer now reaches all dropped content. Codex review: round 1 caught 3 P0 test-self-update.sh failures (4/10); round 2 caught 1 more P0 in test-hooks.sh asserting '"pr_number":' with colon, not bare quotes (6/10); round 3 CERTIFIED 10/10. ROADMAP #236 phase 3. Combined v1.69 + v1.70 + v1.71 saves ~14K tokens/session for typical workloads.
This was referenced May 5, 2026
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
85 lines, 0 references anywhere in the repo (no test, workflow, doc, or other script invokes it). Sat ~3 months on ROADMAP Back Burner with explicit gate 'Research if users care before shipping' — no demand signal materialized. Not in package.json files: list, so never shipped to npm consumers. Pure repo dead weight. Discovered via #236 method: for each scripts/*.sh, count refs in *.sh, *.yml, *.json, *.md, *.py. Threshold 0 = orphan. Six scripts inventoried; one orphan found. ROADMAP #236 marked phase-partial DONE: 3 token-amplifier fixes (v1.69.0/1.70.0/1.71.0) + this orphan delete. Categories not exercised this round (tests redundancy, CLI templates, ROADMAP archive) re-trigger on maintainer call-out. Reversible: git history retains the script if demand surfaces.
This was referenced May 5, 2026
BaseInfinity
added a commit
that referenced
this pull request
May 5, 2026
…h) (#320) scripts/audit-session-load.sh scanned only root skills/*/SKILL.md. But cli/init.js:32-35 copies SKILL.md files to .claude/skills/<name>/ SKILL.md at install time, so the audit was silently invisible to bloat in real consumer projects. Mirrors the existing .claude/hooks/ pattern. Caught by Codex strategic review on the bloat-sweep continuation question — it pointed at the asymmetry between hooks (dual-path scanned) and skills (root-only). Implementation plan went through a second Codex round for sign-off; ships with all 4 deltas applied: - inventory comment block updated to mention .claude/skills/ - new test uses existing make_temp + make_file_with_size helpers - new test wired into the explicit-call runner block - Python predicate uses path.endswith() not substring match Will double-count in dogfood (where .claude/skills/ symlinks back to skills/), same trade-off as the existing hooks scan accepts. No version bump: scripts/ + tests/ are not in package.json files list, so this never reaches npm consumers.
BaseInfinity
added a commit
that referenced
this pull request
May 6, 2026
The .reviews/ tree is gitignored but several artifacts were committed before the gitignore line landed. They're handoff/preflight/round-N review files for now-merged PRs and hold no ongoing reference value. plans/CATCHUP.md captured the v2.1.15 → v2.1.81 catch-up in March 2026 — historical context lives in CHANGELOG (v1.8.0 entry at line 1415); the plan doc is dead weight. Kept everything that's still load-bearing: - .reviews/research-95/97/99/206/235.md (cited from ROADMAP rows) - .reviews/experiment-tracking.md (asserted by tests/test-workflow-triggers.sh:2189) - plans/AUTO_SELF_UPDATE.md (still annotated with #231 phase notes) Tests: hooks 156/156, cli 88/88, workflow 176/176, docs 35/35 — all green post-deletion (no test referenced any deleted file).
3 tasks
BaseInfinity
added a commit
that referenced
this pull request
May 6, 2026
Two PRs roll up: 1. PR #330 — `hooks/precompact-seam-check.sh` no longer false-positive HOLDs `/compact` on stale `.git/REBASE_HEAD` (left behind after a clean rebase). Authoritative signal is `rebase-{merge,apply}/` dir; `REBASE_HEAD` is just a ref to the stopped/replayed commit. Hit live 2026-05-05; required `rm .git/REBASE_HEAD` workaround. Codex round 1 CERTIFIED 9/10 (one P2 comment-accuracy nit fixed). 2. PR #331 — gc(#236): -460 LOC across 15 stale review/plan artifacts committed before `.reviews/` made it into `.gitignore`. All for now-merged work; load-bearing files (research-*.md, experiment- tracking.md, AUTO_SELF_UPDATE.md) preserved. Version bumps: package.json, plugin.json, marketplace.json, SDLC.md, CLAUDE_CODE_SDLC_WIZARD.md (×2), skills/update/SKILL.md. skills/update/SKILL.md trimmed (consolidated 1.69.0–1.71.0 token-bloat phases into a single line) to keep the file under the 5K-token dogfood threshold after adding the 1.73.0 entry. Tests: cli 88/88, hooks 156/156, self-update 76/76, docs 35/35, audit 10/10. audit-session-load reports 0 trim candidates.
BaseInfinity
added a commit
that referenced
this pull request
May 11, 2026
`.reviews/response.json` is per-cycle review scratch documented in the SDLC skill's cross-model review protocol — the file the next round writes its FIXED/DISPUTED/ACCEPTED responses to. The committed copy was leftover from gc-benchmark-workflows-001 (PR #324, merged). `.reviews/` is gitignored at directory level; this file slipped through because it was committed before the gitignore was added. No live consumer: the only test referencing the filename (tests/test-self-update.sh:400) just asserts the wizard doc describes the protocol, not that the file exists. Tests: self-update + doc-consistency green post-deletion.
BaseInfinity
added a commit
that referenced
this pull request
May 11, 2026
Two PRs roll up: 1. PR #330 — `hooks/precompact-seam-check.sh` no longer false-positive HOLDs `/compact` on stale `.git/REBASE_HEAD` (left behind after a clean rebase). Authoritative signal is `rebase-{merge,apply}/` dir; `REBASE_HEAD` is just a ref to the stopped/replayed commit. Hit live 2026-05-05; required `rm .git/REBASE_HEAD` workaround. Codex round 1 CERTIFIED 9/10 (one P2 comment-accuracy nit fixed). 2. PR #331 — gc(#236): -460 LOC across 15 stale review/plan artifacts committed before `.reviews/` made it into `.gitignore`. All for now-merged work; load-bearing files (research-*.md, experiment- tracking.md, AUTO_SELF_UPDATE.md) preserved. Version bumps: package.json, plugin.json, marketplace.json, SDLC.md, CLAUDE_CODE_SDLC_WIZARD.md (×2), skills/update/SKILL.md. skills/update/SKILL.md trimmed (consolidated 1.69.0–1.71.0 token-bloat phases into a single line) to keep the file under the 5K-token dogfood threshold after adding the 1.73.0 entry. Tests: cli 88/88, hooks 156/156, self-update 76/76, docs 35/35, audit 10/10. audit-session-load reports 0 trim candidates.
BaseInfinity
added a commit
that referenced
this pull request
May 11, 2026
`.reviews/response.json` is per-cycle review scratch documented in the SDLC skill's cross-model review protocol — the file the next round writes its FIXED/DISPUTED/ACCEPTED responses to. The committed copy was leftover from gc-benchmark-workflows-001 (PR #324, merged). `.reviews/` is gitignored at directory level; this file slipped through because it was committed before the gitignore was added. No live consumer: the only test referencing the filename (tests/test-self-update.sh:400) just asserts the wizard doc describes the protocol, not that the file exists. Tests: self-update + doc-consistency green post-deletion.
BaseInfinity
added a commit
that referenced
this pull request
May 11, 2026
Rows #78, #79, #80, #215, #217 each say in their own cell text: Stale duplicate of <canonical row>; <work> shipped. v1.62.0 paperwork close. The canonical entries live earlier in the file. Keeping the duplicates just inflates the unprioritized table without adding info — every field reduces to "see <other row>." Removing them shrinks the unprioritized table by 5 rows and removes the "wait, is this still open?" friction when scanning. doc-consistency tests 35/35 still green (no test asserts row count).
BaseInfinity
added a commit
that referenced
this pull request
May 11, 2026
The .reviews/ tree is gitignored but several artifacts were committed before the gitignore line landed. They're handoff/preflight/round-N review files for now-merged PRs and hold no ongoing reference value. plans/CATCHUP.md captured the v2.1.15 → v2.1.81 catch-up in March 2026 — historical context lives in CHANGELOG (v1.8.0 entry at line 1415); the plan doc is dead weight. Kept everything that's still load-bearing: - .reviews/research-95/97/99/206/235.md (cited from ROADMAP rows) - .reviews/experiment-tracking.md (asserted by tests/test-workflow-triggers.sh:2189) - plans/AUTO_SELF_UPDATE.md (still annotated with #231 phase notes) Tests: hooks 156/156, cli 88/88, workflow 176/176, docs 35/35 — all green post-deletion (no test referenced any deleted file).
BaseInfinity
added a commit
that referenced
this pull request
May 11, 2026
BaseInfinity
added a commit
that referenced
this pull request
May 11, 2026
85 lines, 0 references anywhere in the repo (no test, workflow, doc, or other script invokes it). Sat ~3 months on ROADMAP Back Burner with explicit gate 'Research if users care before shipping' — no demand signal materialized. Not in package.json files: list, so never shipped to npm consumers. Pure repo dead weight. Discovered via #236 method: for each scripts/*.sh, count refs in *.sh, *.yml, *.json, *.md, *.py. Threshold 0 = orphan. Six scripts inventoried; one orphan found. ROADMAP #236 marked phase-partial DONE: 3 token-amplifier fixes (v1.69.0/1.70.0/1.71.0) + this orphan delete. Categories not exercised this round (tests redundancy, CLI templates, ROADMAP archive) re-trigger on maintainer call-out. Reversible: git history retains the script if demand surfaces.
BaseInfinity
added a commit
that referenced
this pull request
May 11, 2026
scripts/audit-session-load.sh scanned only root skills/*/SKILL.md. But cli/init.js:32-35 copies SKILL.md files to .claude/skills/<name>/ SKILL.md at install time, so the audit was silently invisible to bloat in real consumer projects. Mirrors the existing .claude/hooks/ pattern. Caught by Codex strategic review on the bloat-sweep continuation question — it pointed at the asymmetry between hooks (dual-path scanned) and skills (root-only). Implementation plan went through a second Codex round for sign-off; ships with all 4 deltas applied: - inventory comment block updated to mention .claude/skills/ - new test uses existing make_temp + make_file_with_size helpers - new test wired into the explicit-call runner block - Python predicate uses path.endswith() not substring match Will double-count in dogfood (where .claude/skills/ symlinks back to skills/), same trade-off as the existing hooks scan accepts. No version bump: scripts/ + tests/ are not in package.json files list, so this never reaches npm consumers.
This was referenced May 21, 2026
BaseInfinity
added a commit
that referenced
this pull request
May 24, 2026
Adds a tight /goal section to skills/sdlc/SKILL.md covering CC's native goal-mode primitive (v2.1.139+, requires v2.1.143+ for the subagent-race fix). Composes with existing wizard hooks rather than replacing them. Per the corrected research at .reviews/347-goal-mode-research-CORRECTED.md, the wrapper carries 5 load-bearing elements (each enforced by the new quality test): 1. Pre-flight checklist — workspace trusted, hooks not disabled at any settings layer, CC version floor. 2. Condition-writing guidance treating the /goal arg as an SDLC contract (measurable end state + check + constraints + hard turn/time bound). 3. Hook composition note — UserPromptSubmit/SessionStart/PreCompact fire normally per turn, so sdlc-prompt-check.sh + precompact-seam-check.sh keep gating. 4. Resume caveat — --resume restores the condition but resets counters. 5. Anti-pattern callout — the evaluator can't call tools, so /goal doesn't work for 'doneness' that lives off-transcript. Quality test (tests/test-doc-consistency.sh) greps for each of the 5 elements by keyword; existence-only would let drift quietly remove the safety guidance. Section trimmed from ~1782 → ~1100 chars to keep the skill within budget (was 4995 tokens pre-edit, now 5178 — slightly over the #236 5K trim threshold but within the 25K combined-skill load budget; new content is load-bearing and justified). 40/40 doc-consistency tests pass. No new skill, no new hook, no template. Per Prove-It Gate absorption principle: extend the existing /sdlc skill rather than building a /goal-start /goal-handoff /goal-stop trio.
BaseInfinity
added a commit
that referenced
this pull request
May 24, 2026
CI's tests/test-audit-session-load.sh enforces the #236 5K-token soft threshold as a hard fail. Initial /goal section was 700 chars (skill at 5018 tokens — 18 over). Tightened to 488 chars (skill at 4977 tokens — 23 under) while keeping all 5 quality-test keywords. What stays (verified by test_sdlc_skill_has_goal_wrapper): - v2.1.143+ version floor (the only version that matters for safe use) - 'trusted workspace' pre-flight - 'disableAllHooks'/'allowManagedHooksOnly' pre-flight - 'hard turn/time bound' guidance + 'stop after' example - 'cannot call tools' anti-pattern callout - '--resume resets counters' caveat What dropped (informational, not load-bearing): - v2.1.139 introduction marker (subsumed by v2.1.143+ floor) - 'survives --resume not /clear' (the counter-reset note covers it) - 'Wizard hooks fire normally per turn' (implicit composition) - 'internally a Stop hook' parenthetical (still mentioned briefly) - Verbose example with multiple AND clauses The aggressive tightening keeps the safety guidance load-bearing while respecting the bloat budget the maintainer set in #236. Audit now returns OK for skills/sdlc/SKILL.md (4977/5000 tokens).
BaseInfinity
added a commit
that referenced
this pull request
May 24, 2026
closes #347) (#351) * docs(cc-features): bump recommended baseline + document /goal, /code-review --comment, /usage, /context all CC v2.1.139 → v2.1.150 shipped 4 wizard-relevant features that the broken auto-PR pipeline (gutted in #231 Phase 3d, see #350) failed to surface: - Native /goal command (v2.1.139) — set completion condition, evaluator pass per turn until met. Survives --resume, not /clear. No disk writes. Subagent race fixed in v2.1.143. - /code-review --comment flag (v2.1.147, renamed from /simplify) — posts findings as inline GitHub PR comments. Streamlines our CI shepherd flow which currently uses manual gh pr review comments. - /usage per-category breakdown (v2.1.149) — skills/subagents/plugins/ MCP cost split. Complements scripts/audit-session-load.sh (#236). - /context all per-skill per-model token estimates (v2.1.139) — same. SDLC.md splits the existing Claude Code Baseline row into Minimum (unchanged, v2.1.111+/v2.1.105+) and Recommended (v2.1.150+) so consumers know what each version unlocks without breaking back-compat. CLAUDE_CODE_SDLC_WIZARD.md adds 4 rows to the Complementary Native Skills table with usage guidance and the same caveats we apply to /insights (qualitative-only, evaluator-can't-call-tools for /goal). Full inventory + triage of all 32 CC versions since v2.1.118 lives at .reviews/cc-feature-inventory-2026-05-24.md (gitignored). HIGH/MEDIUM/ LOW relevance breakdown + recommended adoption sequence for the follow-up PRs (hook $CLAUDE_EFFORT cleanup, #350 cadence workflow build, #347 /goal /sdlc skill wrapper). Zero code changes — pure documentation update so consumers benefit immediately even before the deeper hook/skill integrations land. * feat(sdlc): add /goal wrapper to /sdlc skill (closes #347) Adds a tight /goal section to skills/sdlc/SKILL.md covering CC's native goal-mode primitive (v2.1.139+, requires v2.1.143+ for the subagent-race fix). Composes with existing wizard hooks rather than replacing them. Per the corrected research at .reviews/347-goal-mode-research-CORRECTED.md, the wrapper carries 5 load-bearing elements (each enforced by the new quality test): 1. Pre-flight checklist — workspace trusted, hooks not disabled at any settings layer, CC version floor. 2. Condition-writing guidance treating the /goal arg as an SDLC contract (measurable end state + check + constraints + hard turn/time bound). 3. Hook composition note — UserPromptSubmit/SessionStart/PreCompact fire normally per turn, so sdlc-prompt-check.sh + precompact-seam-check.sh keep gating. 4. Resume caveat — --resume restores the condition but resets counters. 5. Anti-pattern callout — the evaluator can't call tools, so /goal doesn't work for 'doneness' that lives off-transcript. Quality test (tests/test-doc-consistency.sh) greps for each of the 5 elements by keyword; existence-only would let drift quietly remove the safety guidance. Section trimmed from ~1782 → ~1100 chars to keep the skill within budget (was 4995 tokens pre-edit, now 5178 — slightly over the #236 5K trim threshold but within the 25K combined-skill load budget; new content is load-bearing and justified). 40/40 doc-consistency tests pass. No new skill, no new hook, no template. Per Prove-It Gate absorption principle: extend the existing /sdlc skill rather than building a /goal-start /goal-handoff /goal-stop trio. * fix(sdlc): tighten /goal section to stay under #236 5K-token cap CI's tests/test-audit-session-load.sh enforces the #236 5K-token soft threshold as a hard fail. Initial /goal section was 700 chars (skill at 5018 tokens — 18 over). Tightened to 488 chars (skill at 4977 tokens — 23 under) while keeping all 5 quality-test keywords. What stays (verified by test_sdlc_skill_has_goal_wrapper): - v2.1.143+ version floor (the only version that matters for safe use) - 'trusted workspace' pre-flight - 'disableAllHooks'/'allowManagedHooksOnly' pre-flight - 'hard turn/time bound' guidance + 'stop after' example - 'cannot call tools' anti-pattern callout - '--resume resets counters' caveat What dropped (informational, not load-bearing): - v2.1.139 introduction marker (subsumed by v2.1.143+ floor) - 'survives --resume not /clear' (the counter-reset note covers it) - 'Wizard hooks fire normally per turn' (implicit composition) - 'internally a Stop hook' parenthetical (still mentioned briefly) - Verbose example with multiple AND clauses The aggressive tightening keeps the safety guidance load-bearing while respecting the bloat budget the maintainer set in #236. Audit now returns OK for skills/sdlc/SKILL.md (4977/5000 tokens).
BaseInfinity
added a commit
that referenced
this pull request
May 24, 2026
…entries to stay under #236 5K cap CI caught stale 'Latest: 1.75.1' example in skills/update/SKILL.md which is grep-tested. Added new [1.76.0] entry summarizing this release. Tightened the [1.74.0] and [1.73.0] entries to compensate so the skill stays under the #236 5K-token bloat threshold (now 4989/5000).
BaseInfinity
added a commit
that referenced
this pull request
May 24, 2026
…MAP cleanup (#352) * release: v1.76.0 — native /goal wrapper + CC v2.1.150 feature adoption + ROADMAP cleanup Versioned cut of 5 commits since v1.75.1. Headline: native /goal wrapper in /sdlc skill closes #347; full CC v2.1.119 → v2.1.150 feature inventory done with HIGH-relevance docs adopted; ROADMAP cleaned with new demand-signal-first entry gate (4 excise, 4 kill); #347 corrected from wrong 'no native primitive' research; #350 added to capture the cadence gap that let /goal slip 5 weeks. Full notes in CHANGELOG.md [1.76.0]. Trusted Publishing (OIDC) is the release channel — release.yml fires on tag push, npm publish runs as the workflow identity, no token to rotate. * release: v1.76.0 — also bump SDLC.md version metadata in wizard doc template CI caught a missed version-bump in the SDLC.md example template inside CLAUDE_CODE_SDLC_WIZARD.md (line 2984). tests/test-hooks.sh's test_sdlc_version_matches_wizard greps both files for the meta-comment and asserts they agree; the v1.76.0 cut updated SDLC.md itself but not the wizard doc's embedded template. Self-review lesson: when version-bumping, grep for ALL SDLC Wizard Version meta-comments across the repo, not just the canonical SDLC.md. * release: v1.76.0 — bump update skill changelog example + tighten old entries to stay under #236 5K cap CI caught stale 'Latest: 1.75.1' example in skills/update/SKILL.md which is grep-tested. Added new [1.76.0] entry summarizing this release. Tightened the [1.74.0] and [1.73.0] entries to compensate so the skill stays under the #236 5K-token bloat threshold (now 4989/5000).
3 tasks
BaseInfinity
added a commit
that referenced
this pull request
May 25, 2026
…DLC binding (PR-D) Native /goal is now table-stakes across CC (v2.1.139+), Codex CLI, and likely others. Without SDLC discipline baked into the goal CONDITION itself, the Haiku evaluator rubber-stamps 'did the agent flail for 20 turns' instead of 'is the goal met correctly.' Two new load-bearing gates in skills/sdlc/SKILL.md ## Long-Running Goals section: 1. **Confidence gate — NEVER invoke below HIGH 95%.** Mirrors existing Confidence Check (plan first if below). Below 95% the evaluator has no anchor for 'is this correct'; only for 'did the agent stop.' 2. **DLC binding — condition MUST name the active DLC** (/sdlc for code, /gdlc for games, /ldlc for legal, etc.). Anchors the evaluator on 'doing it right,' not just 'doing it.' Example: /goal 'tests pass + clean tree following /sdlc, stop after 20 turns'. Quality test extended (tests/test-doc-consistency.sh::test_sdlc_skill_has_goal_wrapper): adds keyword greps for '95% confidence' / 'HIGH 95%' / 'confidence gate' AND 'DLC binding' / 'name the DLC' / 'condition MUST name'. Cross-cutting compensating trims to stay under #236 5K-token cap (skill at 4989/5000): - /goal section condensed example wording ('tests pass + clean tree' vs 'npm test=0 AND git clean') - Cross-Model Review's Multi-reviewer paragraph collapsed into one line 40/40 doc-consistency green, 10/10 audit green.
BaseInfinity
added a commit
that referenced
this pull request
May 25, 2026
…DLC binding (PR-D) (#355) Native /goal is now table-stakes across CC (v2.1.139+), Codex CLI, and likely others. Without SDLC discipline baked into the goal CONDITION itself, the Haiku evaluator rubber-stamps 'did the agent flail for 20 turns' instead of 'is the goal met correctly.' Two new load-bearing gates in skills/sdlc/SKILL.md ## Long-Running Goals section: 1. **Confidence gate — NEVER invoke below HIGH 95%.** Mirrors existing Confidence Check (plan first if below). Below 95% the evaluator has no anchor for 'is this correct'; only for 'did the agent stop.' 2. **DLC binding — condition MUST name the active DLC** (/sdlc for code, /gdlc for games, /ldlc for legal, etc.). Anchors the evaluator on 'doing it right,' not just 'doing it.' Example: /goal 'tests pass + clean tree following /sdlc, stop after 20 turns'. Quality test extended (tests/test-doc-consistency.sh::test_sdlc_skill_has_goal_wrapper): adds keyword greps for '95% confidence' / 'HIGH 95%' / 'confidence gate' AND 'DLC binding' / 'name the DLC' / 'condition MUST name'. Cross-cutting compensating trims to stay under #236 5K-token cap (skill at 4989/5000): - /goal section condensed example wording ('tests pass + clean tree' vs 'npm test=0 AND git clean') - Cross-Model Review's Multi-reviewer paragraph collapsed into one line 40/40 doc-consistency green, 10/10 audit green.
This was referenced May 31, 2026
BaseInfinity
added a commit
that referenced
this pull request
Jun 1, 2026
PR #355 (v1.77.0) added skill-text guidance that `/goal` must state HIGH 95% confidence and bind to a DLC (`/sdlc`, `/gdlc`, `/ldlc`) before firing. The guidance worked at the meta level but had no runtime enforcement — exactly the failure mode the discipline gate documented (text-only guidance doesn't survive the failure mode it's trying to prevent). This adds `hooks/goal-confidence-check.sh` as a UserPromptSubmit hook that: 1. Matches `/goal <condition>` prompts (silent on `/goal` status + `/goal clear`). 2. Reads `transcript_path` from hook input (verified available on UserPromptSubmit per Anthropic hook docs at code.claude.com/docs/en/hooks), walks the JSONL to find the last assistant text message, and scans for HIGH-95% confidence patterns (`HIGH (95%`, `Confidence: HIGH`, `HIGH 95%`, etc.). 3. Greps the goal condition for a DLC binding (`/[a-z]+dlc`). 4. Emits LOUD warnings on either gap — non-blocking soft nudge (exit 0), same pattern as `model-effort-check.sh`. Registered in both channels: `cli/templates/settings.json` (npm/CLI) and `hooks/hooks.json` (plugin via ${CLAUDE_PLUGIN_ROOT}). Dedupes via `_find-sdlc-root.sh` helper so dual installs don't double-fire. Bundled paperwork: - `ROADMAP.md` adds the missing `## Research Parking Lot` section that the Demand-Signal-First entry gate references but was never created. Includes the maintenance rule (prune expired rows during quarterly triage). - `skills/sdlc/SKILL.md` adds a one-line enforcement cross-reference in the Long-Running Goals section. Trimmed adjacent prose to stay under the 5K token cap (#236). #359 triage (companion close): Of the 10 API changelog entries since 2026-04-16: 8 are clearly no-op for the wizard (MCP tunnels, SEC web search data, cache diagnostics, fast mode, AWS hosting, multiagent sessions, rate limits API, managed-agent memory — all orthogonal to SDLC enforcement). 2 are deprecations — verified zero usage in this repo: `context-1m-2025-08-07` (Sonnet 4.5/4 1M beta retired 2026-04-30; we use the separate `opus[1m]` alias) and `claude-3-haiku- 20240307` (Haiku 3 retired 2026-04-20; we never used it). #359 will be closed with the triage comment after merge. Verified locally: test-hooks 160/160 (4 new #360 tests + 156 existing), test-audit-session-load 10/10, test-cli 91/91, test-plugin all green, test-doc-consistency 41/41, test-self-update 153/153, test-setup-path 83/83.
5 tasks
BaseInfinity
added a commit
that referenced
this pull request
Jul 7, 2026
…440) Fable-led audit + Prove-It (TDD mutation-tested) pass across the three categories ROADMAP #236 flagged as not yet exercised: (b) hook noise: fixed codex-review-stop-check.sh delivering its Stop-hook nudge via stderr (invisible on exit 0 per CC hook-delivery semantics); fixed tdd-pretool-check.sh's hardcoded /src/ pattern missing this repo's own hooks/cli/.github/workflows source dirs via a new SDLC_TDD_SRC_PATTERN env override (keeps the CLI-distributed template generic); deleted goal-confidence-check.sh entirely (no cited incident, unproven value); trimmed precompact-seam-check.sh 256->101 lines (removed the untested .reviews/handoff.json self-heal branch); silenced model-effort-check.sh's unset-effort nagging; removed sdlc-prompt-check.sh's unfired #195 effort-bump detector; added 24h-cached CC-version checking to instructions-loaded-check.sh. (c) test redundancy: consolidated overlapping assertions across 10 test files; deleted tests/test-degradation-detection.sh outright (428 lines, fully superseded, 5 tests relocated into test-doc-consistency.sh); found and fixed a latent bug as a byproduct — test_ci_max_turns_sufficient in test-workflow-triggers.sh was defined twice, and the original (shadowed) definition was vacuous, always passing regardless of ci.yml content. (f) ROADMAP archive cut: split ROADMAP.md (326 lines / 182 rows) into a trimmed active table plus new ROADMAP_ARCHIVE.md holding 85 fully-resolved rows and 5 fully-archived release-history sections; added 3 row-completeness regression tests to test-doc-consistency.sh (mutation-verified) proving no row was silently dropped or duplicated. Cross-model reviewed (Codex xhigh, review_id 236-bloat-hunt-bcf-2026-07-06): round 1 found a real gate bypass in codex-gate-check.sh (a quoted flag value containing a space, e.g. git -c user.name="A B" commit, broke the git/commit structural match) — fixed and mutation-verified; round 2 CERTIFIED 10/10. All 58 test files pass.
BaseInfinity
added a commit
that referenced
this pull request
Jul 26, 2026
Maintainer asked why context was at 93% and whether quality degrades. It does, and this session's last 15% is the evidence: a '41/41 passing' where 10 tests ran after the exit block, a newline hole introduced while fixing a substring hole, a 10-minute spin from a forgotten sandbox flag, and #479 — where the correct diagnosis sat in a committed ROADMAP row hours before the wrong fix shipped. Distinct from #476 (what to load) and #220/#236 (file sizes). This is session hygiene: how a driver notices its own degradation. Scope says do NOT ship a threshold number without a source, and favors symptom-based self-checks over a percentage — plus a note that a documented rule alone failed to change behavior twice tonight.
BaseInfinity
added a commit
that referenced
this pull request
Jul 27, 2026
… ladder (#472) * release: v1.88.0 — Opus 5 default driver, autocompact fix, escalation ladder Ships 8 consumer-path commits stranded since v1.87.0 (2026-07-14). **Opus 5 becomes Setup A** at `xhigh`, requires Claude Code v2.1.219+. Sonnet 5 moves to Setup B (`medium`) for simple/one-off work. Flagged as a trial — strong on paper, unproven by field data. **Autocompact fix, consumer-visible:** skills/setup/SKILL.md was writing CLAUDE_AUTOCOMPACT_PCT_OVERRIDE: "30" into consumer .claude/settings.json for Setup A. That figure came from the retired opus[1m] opt-in and was never re-derived. Per raw env-vars docs the variable only lowers the trigger where compaction is PROACTIVE, and a local Opus session is the docs' own counter-example. Setup A now writes no override. Corrected in 6 wizard-doc sites plus the writer, worded as a documentation gap rather than a runtime claim. Setup B's 75 is unchanged and still correct. **Escalation ladder:** both SKILL.md copies and the wizard doc said "ASK USER" for LOW/FAILED-2x/CONFUSED, skipping model escalation entirely. Now Fable → Codex xhigh → human, with the human reserved for priority, risk, scope, spend, and irreversible calls. Confidence is not authorization. 10 more direct-to-human routes removed including the CI flow diagram and the generated CLAUDE.md template. The shipped runtime hook was emitting the OLD ladder on every consumer session — fixed and regression-tested. Also: SDLC.md gains a 9-lesson post-mortem, and ROADMAP #468-479. Version bumped across all 9 tracked locations per SDLC.md's own version-bump checklist (the narrow greps have documented blind spots). Full suite: 61 files, 0 failing. * docs(roadmap): #480 — session-degradation hygiene is undocumented Maintainer asked why context was at 93% and whether quality degrades. It does, and this session's last 15% is the evidence: a '41/41 passing' where 10 tests ran after the exit block, a newline hole introduced while fixing a substring hole, a 10-minute spin from a forgotten sandbox flag, and #479 — where the correct diagnosis sat in a committed ROADMAP row hours before the wrong fix shipped. Distinct from #476 (what to load) and #220/#236 (file sizes). This is session hygiene: how a driver notices its own degradation. Scope says do NOT ship a threshold number without a source, and favors symptom-based self-checks over a percentage — plus a note that a documented rule alone failed to change behavior twice tonight.
BaseInfinity
added a commit
that referenced
this pull request
Aug 12, 2026
Maintainer asked why context was at 93% and whether quality degrades. It does, and this session's last 15% is the evidence: a '41/41 passing' where 10 tests ran after the exit block, a newline hole introduced while fixing a substring hole, a 10-minute spin from a forgotten sandbox flag, and #479 — where the correct diagnosis sat in a committed ROADMAP row hours before the wrong fix shipped. Distinct from #476 (what to load) and #220/#236 (file sizes). This is session hygiene: how a driver notices its own degradation. Scope says do NOT ship a threshold number without a source, and favors symptom-based self-checks over a percentage — plus a note that a documented rule alone failed to change behavior twice tonight.
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.
Summary
Close the coherence gap between the docs (
maxpreferred,xhighfloor) and the hook (currently soft-nudges anything ≠xhigh, includingmax— backwards).effort=maxorxhigh→ silent (at or above floor)effort=high/medium/lowor unset → LOUDWARNINGblock with SDLC compliance mention,/effort maxprimary,/effort xhighfloor alternative,opus[1m]model reminderinstructions-loaded-check.sh(single source of truth =model-effort-check.sh)Why
hooks/model-effort-check.shwas flaggingmaxas "upgrade available", which was the opposite of whatSDLC.md/CLAUDE_CODE_SDLC_WIZARD.mdalready say. On Opus 4.7,highor below actively breaks SDLC compliance (shallow reasoning, skipped TDD, dropped self-review), so the hook should be louder there, not softer onmax.Codex cross-model review
CHANGELOG.md:120)Test plan
test_model_effort_check_max_is_silent,test_model_effort_check_below_xhigh_loud_warning)test_instructions_loaded_no_duplicate_effort_nudge)test_hooks_recommend_opus_1m_aliasto assert single-source-of-truthbash tests/test-hooks.sh→ 119/119 passbash tests/test-doc-consistency.sh→ 22/22 passbash tests/test-workflow-triggers.sh→ 165/165 pass