fix(ci): add workflow_dispatch fallback to release.yml - #221
Conversation
E2E Quick Check (Tier 1) ✅Fast quality gate - single comparison per commit.
Result: No change in SDLC compliance (stable)
Criteria Breakdown
Historical ContextThis scenario avg: 8.0 (4 runs) Add Tier 1: 1x run each. SDP adjusts for external model conditions. |
|
Claude finished @BaseInfinity's task in 1m 4s —— View job PR Code ReviewSummaryAdds a Recommendation: APPROVEFindingsP0 — Critical (must fix before merge)None. P1 — Must Fix (should fix before merge)None. P2 — Suggestions (nice to have)
Strengths
Notes
Files Reviewed
• branch: |
|
Review posted. Summary: Recommendation: APPROVE — No P0 or P1 issues. The PR is a clean, minimal, injection-safe fallback. Key observations:
Three P2 suggestions posted (non-blocking): |
|
Claude finished @BaseInfinity's task in 1m 20s —— View job Todo
PR Code ReviewSummaryAdds a Recommendation: APPROVEFindingsP0 — Critical (must fix before merge)None. P1 — Must Fix (should fix before merge)None. P2 — Suggestions (nice to have)
Strengths
Notes
Files Reviewed
• branch: |
…c-ai-sdlc-wizard into fix-release-dispatch # Conflicts: # tests/e2e/score-history.jsonl
Tag push of v1.36.0 to trigger release workflow misfired (tag exists on remote at 31a269f and is ancestor of main, but no release run appeared in workflow history after push or after delete+re-push). This is a second-line safety net so the release can be manually triggered when the push event doesn't fire. - Adds workflow_dispatch with 'tag' input - checkout step uses input.tag or github.ref - version-match step reads INPUT_TAG when dispatched - github release step uses input.tag or github.ref_name No change to the normal push-on-tag path.
ROADMAP #221: three lessons from Anthropic's 2026-04-23 post-mortem captured as third-party evidence: (a) "Don't rely on CC default effort" — citation added to Recommended Effort section. The post-mortem confirmed CC has flipped reasoning_effort defaults across versions; never assume the default, set effort explicitly via /effort max. (b) New top-level "Known CC Gotchas" section in CLAUDE_CODE_SDLC_WIZARD.md documenting the extended-thinking + caching + idle-session failure mode (cached prompt prefix re-served after idle pruning silently drops thinking blocks downstream). Includes workaround (claude --continue resets cache state) and detection signal pointer to ROADMAP #220. (c) Brevity-cap audit: every skills/*/SKILL.md and hooks/*.sh checked for compounding brevity constraints. Audit clean. Regression guard added via tests/test-postmortem-lessons.sh — case-insensitive grep, treats markdown headings as instructions but ignores shell comments. Codex round 1: 5/10 NOT CERTIFIED. 4 findings: - F1: section landed inside fenced markdown example block. Fixed: moved to real top-level position after Claude Code Feature Updates. - F2: regression guard was case-sensitive AND filtered all `^#` lines (including markdown headings). Fixed: case-insensitive, split logic by file extension (md headings count, sh comments don't). - F3: test file untracked. Fixed: git add. - F4: handoff.json was tracked before .gitignore rule added. Round 2 (8/10) verified F1-F3, F4 still tracked. Round 3 (10/10): git rm --cached .reviews/handoff.json — now permanently untracked. 7 quality tests in tests/test-postmortem-lessons.sh, mutation-verified (capitalized "Always Be Concise." in SKILL.md correctly fails).
All 5 entries had been implemented but their title cells still read OPEN. Adding DONE markers + commit/PR/version references for archaeology: - #218 MCP-tool hook audit → PR #250, v1.41.1 - #221 post-mortem wizard integration → PR #249, v1.41.0 - #224 prompt-hook-fires-once test → PR #243, v1.38.0 (tests/test-prompt-hook-fires-once.sh) - #225 cleanupPeriodDays guidance → PR #248, v1.40.1 - #226 P1 fake-CI honest labeling → commit 13dccc4 (Option B: judge-consistency caveat; Option A true N-trial deferred to ROADMAP #230 / #212 Option 1 follow-up) Same closure-gap pattern just hit on #209 (PR #255). Five stale markers is enough signal that a roadmap-hygiene check would be worth a small piece of automation — track separately.
All 5 entries had been implemented but their title cells still read OPEN. Adding DONE markers + commit/PR/version references for archaeology: - #218 MCP-tool hook audit → PR #250, v1.41.1 - #221 post-mortem wizard integration → PR #249, v1.41.0 - #224 prompt-hook-fires-once test → PR #243, v1.38.0 (tests/test-prompt-hook-fires-once.sh) - #225 cleanupPeriodDays guidance → PR #248, v1.40.1 - #226 P1 fake-CI honest labeling → commit 13dccc4 (Option B: judge-consistency caveat; Option A true N-trial deferred to ROADMAP #230 / #212 Option 1 follow-up) Same closure-gap pattern just hit on #209 (PR #255). Five stale markers is enough signal that a roadmap-hygiene check would be worth a small piece of automation — track separately.
* roadmap(#221): reword 3% intelligence drop attribution (Codex P1) Codex batch doc-review (batch-doc-prs-209-211-215-218, 2026-04-23) raised P1 on PR #215's #221(c) wording. Original claim overattributed the 3% drop to a single sentence. Post-mortem actually describes a broader length-limit prompt change with that sentence among other brevity edits; ablation measured ~3% drop on one evaluation attributed to the broader change. Fix: reword to attribute to the broader length-limit prompt change (not single sentence). Keeps the sentence as example of the class of change without overclaiming causation. * chore: record E2E score [skip ci] * roadmap(#220, #221, #222): Anthropic 2026-04-23 post-mortem learnings Three backlog items drawn from the post-mortem (anthropic.com/engineering/april-23-postmortem): #220: token-spike anomaly detection — our effectiveness scoreboard doesn't track token burn; post-mortem's caching bug was only visible as usage drain. #221: fold the 3 concrete lessons into wizard docs — explicit effort (validates our stance), extended-thinking + caching + idle sessions gotcha, and the 25-word-constraint intelligence drop. Includes a grep audit of our skills/hooks for verbosity caps. #222: prompt-compounding audit harness — generalize the verbosity-cap lesson to an A/B that blanks each prompt and measures impact. * chore: record E2E score [skip ci] --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* chore: record E2E score [skip ci] * chore: record E2E score [skip ci] * fix(ci): add workflow_dispatch fallback to release.yml Tag push of v1.36.0 to trigger release workflow misfired (tag exists on remote at 31a269f and is ancestor of main, but no release run appeared in workflow history after push or after delete+re-push). This is a second-line safety net so the release can be manually triggered when the push event doesn't fire. - Adds workflow_dispatch with 'tag' input - checkout step uses input.tag or github.ref - version-match step reads INPUT_TAG when dispatched - github release step uses input.tag or github.ref_name No change to the normal push-on-tag path. --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
ROADMAP #221: three lessons from Anthropic's 2026-04-23 post-mortem captured as third-party evidence: (a) "Don't rely on CC default effort" — citation added to Recommended Effort section. The post-mortem confirmed CC has flipped reasoning_effort defaults across versions; never assume the default, set effort explicitly via /effort max. (b) New top-level "Known CC Gotchas" section in CLAUDE_CODE_SDLC_WIZARD.md documenting the extended-thinking + caching + idle-session failure mode (cached prompt prefix re-served after idle pruning silently drops thinking blocks downstream). Includes workaround (claude --continue resets cache state) and detection signal pointer to ROADMAP #220. (c) Brevity-cap audit: every skills/*/SKILL.md and hooks/*.sh checked for compounding brevity constraints. Audit clean. Regression guard added via tests/test-postmortem-lessons.sh — case-insensitive grep, treats markdown headings as instructions but ignores shell comments. Codex round 1: 5/10 NOT CERTIFIED. 4 findings: - F1: section landed inside fenced markdown example block. Fixed: moved to real top-level position after Claude Code Feature Updates. - F2: regression guard was case-sensitive AND filtered all `^#` lines (including markdown headings). Fixed: case-insensitive, split logic by file extension (md headings count, sh comments don't). - F3: test file untracked. Fixed: git add. - F4: handoff.json was tracked before .gitignore rule added. Round 2 (8/10) verified F1-F3, F4 still tracked. Round 3 (10/10): git rm --cached .reviews/handoff.json — now permanently untracked. 7 quality tests in tests/test-postmortem-lessons.sh, mutation-verified (capitalized "Always Be Concise." in SKILL.md correctly fails).
All 5 entries had been implemented but their title cells still read OPEN. Adding DONE markers + commit/PR/version references for archaeology: - #218 MCP-tool hook audit → PR #250, v1.41.1 - #221 post-mortem wizard integration → PR #249, v1.41.0 - #224 prompt-hook-fires-once test → PR #243, v1.38.0 (tests/test-prompt-hook-fires-once.sh) - #225 cleanupPeriodDays guidance → PR #248, v1.40.1 - #226 P1 fake-CI honest labeling → commit 13dccc4 (Option B: judge-consistency caveat; Option A true N-trial deferred to ROADMAP #230 / #212 Option 1 follow-up) Same closure-gap pattern just hit on #209 (PR #255). Five stale markers is enough signal that a roadmap-hygiene check would be worth a small piece of automation — track separately.
Summary
The
git push origin v1.36.0tag push to main did NOT fire the Release workflow tonight. Tag exists on remote at31a269f(ancestor of main, valid package.json version match), but/actions/workflows/release.yml/runsshows no run — v1.35.0 is still the most recent Release run.This PR adds a
workflow_dispatchfallback so the Release workflow can be manually triggered with an explicit tag input when push-on-tag misfires.Why not investigate the push-trigger first
Already tried: delete + re-push tag (3×), annotated vs lightweight tag. Tag exists on remote each time but no run fires. Could be transient GitHub infra issue or something upstream we can't see. The fallback is the unblocker; root-cause investigation can follow.
Changes
workflow_dispatchwithtaginputgithub.event.inputs.tag || github.refINPUT_TAGwhen dispatchedgithub.event.inputs.tag || github.ref_nameTest plan
gh workflow run release.yml -f tag=v1.36.0to publish v1.36.0 to npmnpm view agentic-sdlc-wizard versionreturns 1.36.0