Skip to content

docs(roadmap): correct #347 — native /goal exists; add #350 cadence-gap fix - #350

Merged
BaseInfinity merged 1 commit into
mainfrom
docs/roadmap-347-correction-native-goal
May 24, 2026
Merged

docs(roadmap): correct #347 — native /goal exists; add #350 cadence-gap fix#350
BaseInfinity merged 1 commit into
mainfrom
docs/roadmap-347-correction-native-goal

Conversation

@BaseInfinity

Copy link
Copy Markdown
Owner

Summary

Two related changes from today's "what's out there" sweep:

  1. Correct Research Claude equivalent for goal-mode checkpoint workflow #347 — yesterday's research said CC has no native `/goal` primitive. That was wrong. `/goal` shipped in CC v2.1.139 (and got bug fixes through v2.1.143). Scope shrinks from a 5-step plan + GOAL.md template down to a ~30-line wrapper in the existing /sdlc skill.

  2. Add docs(roadmap): correct #347 — native /goal exists; add #350 cadence-gap fix #350 — the process gap that let `/goal` slip past for ~5 weeks. roadmap(#212): Option 1 — de-require e2e, shepherd becomes advisory #231 Phase 3d gutted the in-CI LLM-ranker to $0; the maintainer-run replacement on Max never ran. Proposed fix: a single GH API check that opens a "CC version drift" issue when we're >5 minor versions behind latest npm.

Evidence

Raw curl of CC changelog → grep `/goal` returns 3 lines:

  • v2.1.139: `Added /goal command: set a completion condition and Claude keeps working across turns until it's met`
  • v2.1.140: `Fixed /goal silently hanging when disableAllHooks ... is set`
  • v2.1.143: `Fixed /goal evaluator firing while background shells or delegated subagents are still running`

Official docs: code.claude.com/docs/en/goal.md

What `/goal` actually does (per docs)

Aspect Behavior
Input Free-text condition (4K char cap)
Persistence Session-scoped; survives `--resume` (counters reset); does NOT survive `/clear`
Stop boundary Separate evaluator pass per turn (Haiku default), judges transcript only, no tool calls
Cap No native turn/time limit — bound it in the condition
Hook integration Internally a Stop hook; existing UserPromptSubmit/SessionStart/PreCompact unaffected
Disk writes None
UX `/goal ` (set), `/goal` (status), `/goal clear`

Why this slipped past

Wizard baseline = v2.1.111+. Latest npm = v2.1.150. 39 versions behind, no auto-update PR since v2.1.118 (2026-04-23, PR #210). The auto-PR ranker was deliberately gutted in #231 Phase 3d (v1.54.0, 2026-04-29) — fallback was "maintainer runs on Max weekly" which didn't happen. #350 fixes that.

Test plan

  • `bash tests/test-doc-consistency.sh` green (39/39)
  • Diff is +2 / -1 — surgical edits on one row, original archived inline
  • CI `validate` green

Meta-lesson (captured in CORRECTED research doc)

Require explicit citation of an authoritative source (docs index, raw changelog grep) before accepting a "feature does not exist" claim. Negative claims are easier to fake than positive ones.

…350 (cadence gap)

Yesterday's #347 research (claude-code-guide subagent, 2026-05-23)
concluded 'no native /goal command in CC' — that was wrong. CC v2.1.139
shipped /goal natively (set completion condition, evaluator pass after
each turn, survives --resume but not /clear). Confirmed via raw curl
of the CC changelog and the official docs at code.claude.com/docs/en/goal.md.

Corrected research at .reviews/347-goal-mode-research-CORRECTED.md
(gitignored) documents the actual /goal behavior across 8 dimensions
and revises the implementation scope from a 5-step plan + GOAL.md
template down to a ~30-line wrapper in the existing /sdlc skill.

#350 captures the process gap that let /goal slip past for ~5 weeks:
#231 Phase 3d gutted the in-CI LLM-ranker to take weekly-update.yml
to $0, and the maintainer-run replacement on Max never actually ran.
Proposed fix: a single GitHub API check that opens a 'CC version drift'
issue when our baseline is >5 minor versions behind latest npm — no
LLM, no API spend, just a stale-state reminder. The session-start
staleness nudge (#196) is the in-session counterpart; #350 adds the
out-of-session counterpart so the maintainer doesn't have to be in a
session to see it.

Meta-lesson captured in CORRECTED research doc: require explicit
citation of an authoritative source (docs index, raw changelog grep)
before accepting a 'feature does not exist' claim. Negative claims are
easier to fake than positive ones.
@BaseInfinity
BaseInfinity merged commit eb425b3 into main May 24, 2026
3 checks passed
@BaseInfinity
BaseInfinity deleted the docs/roadmap-347-correction-native-goal branch May 24, 2026 22:08
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
…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).
BaseInfinity added a commit that referenced this pull request May 24, 2026
…5 patch releases behind npm latest (closes #350) (#354)

The fix for the exact process gap that let native /goal (CC v2.1.139)
slip past for 32 versions / 5 weeks. Pure GH-API detector — no LLM,
no API spend. Mirrors weekly-api-update.yml shepherd pattern.

Components:
- scripts/cc-drift-check.sh — bash-3-compatible SemVer delta logic.
  Outputs JSON {baseline, latest, threshold, patch_delta, component,
  threshold_exceeded, alert}. Strict > on threshold (exactly N does NOT
  alert per Codex constraint). Major and SemVer-minor jumps alert
  regardless of threshold. Refuses prerelease tags and regressions.
- .github/workflows/cc-version-drift.yml — Mon 09:30 UTC cron staggered
  from weekly-update.yml (09:00) and weekly-api-update.yml (10:00).
  Parses '<\!-- Claude Code Baseline: vX.Y.Z -->' anchor from SDLC.md
  (NOT '<\!-- SDLC Wizard Version -->' which is the wizard's own pkg
  version). Reads npm latest via 'npm view'. Calls cc-drift-check.sh.
- Idempotency: label 'cc-version-drift' + machine-readable marker in
  issue body ('<\!-- cc-version-drift baseline=... latest=... delta=...
  threshold=... component=... -->'). Edits existing open issue (no
  comment spam). Only re-opens a closed issue if delta has WIDENED
  since close — maintainer's 'won't fix for now' stays respected.
- SDLC.md gains the new single-purpose baseline anchor. The existing
  Recommended row stays human-readable; the anchor is purely for the
  cron to grep.

Design constraints (each enforced by test-cc-version-drift.sh, 22
quality tests + test-cc-drift-check.sh, 18 unit tests):
- Standalone workflow (Codex constraint #350.1) — NOT extending
  weekly-update.yml whose cron is commented out + tests assert
  'issues: write' is absent (#212/#231 guardrails).
- permissions: contents: read + issues: write. NO id-token. NO
  pull-requests: write.
- No anthropics/claude-code-action. No '|| true' / '|| echo' failure
  suppression (one sentinel exception for closed-marker default).
- Threshold default 5, configurable via CC_DRIFT_THRESHOLD env var
  and workflow_dispatch input. Policy in git, not repo variable.
- Baseline anchor matches the first SemVer in Claude Code Recommended
  row — drift between the two is its own test failure.

TDD: 18/18 unit tests RED before script → GREEN after. 22/22 workflow
tests RED before workflow → GREEN after.

Per cross-model design review (.reviews/176-followup-prio-codex.md
section 2.#350 + section 3 risks 4-9).
BaseInfinity added a commit that referenced this pull request May 25, 2026
) + /goal SDLC-discipline gates (#356)

Versioned cut of PR-B + PR-C + PR-D. Trusted Publishing handles npm
publish on tag push.

Headlines:
- release-dry-run.yml — catches release.yml regressions at PR-time.
  Self-tested in PR-B (the workflow ran on the PR that introduced it).
- cc-version-drift.yml — closes #350. The fix for the gap that let
  native /goal slip past for 32 versions. Pure GH-API, no LLM.
- /goal SDLC-discipline gates in /sdlc skill — confidence floor + DLC
  binding. Native /goal is universal now; this anchors it in SDLC.

Full notes in CHANGELOG.md [1.77.0].
BaseInfinity added a commit that referenced this pull request May 26, 2026
…) (#361)

`npx agentic-sdlc-wizard init` (no @latest pin) silently serves whatever
version is cached on disk, sometimes months old. The /update Step 1.5
pattern already catches this — but only at /update time, after the user
has already installed stale templates.

This moves the same check to init time so the gap surfaces immediately:

- cli/init.js: new maybeEmitStaleCliNudge() called before planOperations.
  Reuses SDLC_WIZARD_CACHE_DIR/latest-version (24h TTL, #239 poison check),
  falls back to `npm view` with 5s timeout, silent on offline/error.
- README.md + CLAUDE_CODE_SDLC_WIZARD.md: install command recommends
  `npx -y agentic-sdlc-wizard@latest init` so first-time users skip the
  cache trap by default.
- tests/test-cli.sh: 3 quality tests covering nudge-fires-when-stale,
  silent-when-current, no-reverse-nudge-when-poisoned.

Bundled: ROADMAP #347 + #350 status flip from "Actionable now" to DONE
with PR citations (#351/#355/#354). Both shipped this week — paperwork
was stale.

Verified locally: test-cli.sh 91/91, test-doc-consistency 40/40,
test-docs-usability 29/29, test-update-skill-cli-version 8/8,
test-hooks 156/156, test-setup-path 83/83, test-self-update 153/153.
BaseInfinity added a commit that referenced this pull request Jun 23, 2026
…king lot

Three new ROADMAP entries from triage session 2026-06-20:

- #424 Cowork plugin enhancement: prompt-based hooks, verified install
  path, README corrections. Plugin exists since v1.83.0 but was never
  tested in a real Cowork session. Hooks ARE supported per Anthropic's
  own cowork-plugin-management docs.

- #425 Dynamic Workflows + ultracode evaluation: CC v2.1.154 feature
  (May 28, 2026) we missed for 3 weeks (#350 cadence gap). Ultracode
  is xhigh + auto-workflow, not a replacement for max effort default.

- Copilot Cowork SDLC port: parking lot with 60-day expiry. GitHub
  Copilot desktop app in technical preview (June 2, 2026).

Deep-research workflow findings verified by Codex xhigh (round 1: 6/10
NOT CERTIFIED with 2 P1s + 1 P2; round 2: 10/10 CERTIFIED after fixes).

3 new tests in test-cowork-drift.sh validate ROADMAP entries exist.
BaseInfinity added a commit that referenced this pull request Jun 23, 2026
…ng lot (#424)

* docs(roadmap): add Cowork enhancement, Dynamic Workflows, Copilot parking lot

Three new ROADMAP entries from triage session 2026-06-20:

- #424 Cowork plugin enhancement: prompt-based hooks, verified install
  path, README corrections. Plugin exists since v1.83.0 but was never
  tested in a real Cowork session. Hooks ARE supported per Anthropic's
  own cowork-plugin-management docs.

- #425 Dynamic Workflows + ultracode evaluation: CC v2.1.154 feature
  (May 28, 2026) we missed for 3 weeks (#350 cadence gap). Ultracode
  is xhigh + auto-workflow, not a replacement for max effort default.

- Copilot Cowork SDLC port: parking lot with 60-day expiry. GitHub
  Copilot desktop app in technical preview (June 2, 2026).

Deep-research workflow findings verified by Codex xhigh (round 1: 6/10
NOT CERTIFIED with 2 P1s + 1 P2; round 2: 10/10 CERTIFIED after fixes).

3 new tests in test-cowork-drift.sh validate ROADMAP entries exist.

* fix(tests): use main's test-cowork-drift.sh after rebase conflict

Rebase picked the wrong side — PR #424's old 12-test file instead of
main's 17-test file from merged PR #426.
BaseInfinity added a commit that referenced this pull request Jul 20, 2026
… (#453)

Closes ROADMAP #449. Root-caused and scoped on 2026-07-14 after npm
latest sat at v1.86.0 while main was 7 consumer-affecting commits
ahead, but never built until this recurred live tonight (main 3
commits ahead of v1.87.0, including #374's real functional fix).

New sibling to cc-version-drift.yml/cc-drift-check.sh (#350), pointed
inward at our own package: scripts/release-drift-check.sh (pure
threshold computation, no git/network) + .github/workflows/release-drift.yml
(finds the last v* tag, counts consumer-path commits since it, verifies
npm's actual published version against the tag independently of the
commit-count check, opens/refreshes a release-drift-labeled tracking
issue past a threshold). Not auto-publish-on-merge — human release gate
stays, this only fixes the forgetting.

Codex xhigh cross-model review: 4 rounds to CERTIFIED, not rubber-stamped.
Round 1 found a missing npm-vs-tag publish-mismatch check (a silently
failed publish would have gone undetected) plus a vacuous consumer-path
test. Round 2 found a test checking only for a substring instead of the
actual || operator. Round 3 found a test that didn't assert the tag's
v-prefix normalization — a bug there would have made every tag falsely
mismatch and spam issues. All four were real, mutation-verified fixes.
21/21 targeted tests, 59/59 full suite.
BaseInfinity added a commit that referenced this pull request Aug 12, 2026
…king lot

Three new ROADMAP entries from triage session 2026-06-20:

- #424 Cowork plugin enhancement: prompt-based hooks, verified install
  path, README corrections. Plugin exists since v1.83.0 but was never
  tested in a real Cowork session. Hooks ARE supported per Anthropic's
  own cowork-plugin-management docs.

- #425 Dynamic Workflows + ultracode evaluation: CC v2.1.154 feature
  (May 28, 2026) we missed for 3 weeks (#350 cadence gap). Ultracode
  is xhigh + auto-workflow, not a replacement for max effort default.

- Copilot Cowork SDLC port: parking lot with 60-day expiry. GitHub
  Copilot desktop app in technical preview (June 2, 2026).

Deep-research workflow findings verified by Codex xhigh (round 1: 6/10
NOT CERTIFIED with 2 P1s + 1 P2; round 2: 10/10 CERTIFIED after fixes).

3 new tests in test-cowork-drift.sh validate ROADMAP entries exist.
BaseInfinity added a commit that referenced this pull request Aug 12, 2026
Closes ROADMAP #449. Root-caused and scoped on 2026-07-14 after npm
latest sat at v1.86.0 while main was 7 consumer-affecting commits
ahead, but never built until this recurred live tonight (main 3
commits ahead of v1.87.0, including #374's real functional fix).

New sibling to cc-version-drift.yml/cc-drift-check.sh (#350), pointed
inward at our own package: scripts/release-drift-check.sh (pure
threshold computation, no git/network) + .github/workflows/release-drift.yml
(finds the last v* tag, counts consumer-path commits since it, verifies
npm's actual published version against the tag independently of the
commit-count check, opens/refreshes a release-drift-labeled tracking
issue past a threshold). Not auto-publish-on-merge — human release gate
stays, this only fixes the forgetting.

Codex xhigh cross-model review: 4 rounds to CERTIFIED, not rubber-stamped.
Round 1 found a missing npm-vs-tag publish-mismatch check (a silently
failed publish would have gone undetected) plus a vacuous consumer-path
test. Round 2 found a test checking only for a substring instead of the
actual || operator. Round 3 found a test that didn't assert the tag's
v-prefix normalization — a bug there would have made every tag falsely
mismatch and spam issues. All four were real, mutation-verified fixes.
21/21 targeted tests, 59/59 full suite.
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