From 81a2d48592bacf392f837ac167d966297ad921a2 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Fri, 14 Aug 2026 13:30:21 -0700 Subject: [PATCH] feat(skills): claimed limitations now require evidence, everywhere + wave follow-ups filed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every tier-2+ skill's preamble gains one directive distilled from nine live release failures in two days on the fork: a claimed limitation or requirement ('the API can't do this', 'X requires a credential', 'impossible on this platform') is a material claim, stated only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence, and a cheap probe runs BEFORE asking the user or declaring a step blocked. ONE directive adapted into the preamble resolver; the fork's full judgment contract is deliberately not imported. Full regen (46 files), ship goldens refreshed, parity guards bumped with the measured ~0.45KB/skill (investigate, autoplan, plan-design-review, office-hours), Step 0.9 registered as an intentional sub-step. Approved deferrals filed: persona-fleet hostile-user harness + answer-key methodology in TODOS; the fork's question-budget ACCOUNTING judgment (never its 5/8/12 constants) folded into the V1.1 pacing design doc; the Apple adapter added to #1882's coverage note. Ported from time-attack/gstack (GStack 2). Co-authored-by: Sina Matian Co-Authored-By: Claude Fable 5 --- TODOS.md | 42 +++++++++++++++++++ autoplan/SKILL.md | 4 ++ canary/SKILL.md | 4 ++ codex/SKILL.md | 4 ++ context-restore/SKILL.md | 4 ++ context-save/SKILL.md | 4 ++ cso/SKILL.md | 4 ++ design-consultation/SKILL.md | 4 ++ design-html/SKILL.md | 4 ++ design-review/SKILL.md | 4 ++ design-shotgun/SKILL.md | 4 ++ devex-review/SKILL.md | 4 ++ diagram/SKILL.md | 4 ++ docs/designs/PACING_UPDATES_V0.md | 14 +++++++ document-generate/SKILL.md | 4 ++ document-release/SKILL.md | 4 ++ health/SKILL.md | 4 ++ investigate/SKILL.md | 4 ++ ios-clean/SKILL.md | 4 ++ ios-design-review/SKILL.md | 4 ++ ios-fix/SKILL.md | 4 ++ ios-qa/SKILL.md | 4 ++ ios-sync/SKILL.md | 4 ++ land-and-deploy/SKILL.md | 4 ++ landing-report/SKILL.md | 4 ++ learn/SKILL.md | 4 ++ office-hours/SKILL.md | 4 ++ open-gstack-browser/SKILL.md | 4 ++ pair-agent/SKILL.md | 4 ++ plan-ceo-review/SKILL.md | 4 ++ plan-design-review/SKILL.md | 4 ++ plan-devex-review/SKILL.md | 4 ++ plan-eng-review/SKILL.md | 4 ++ plan-tune/SKILL.md | 4 ++ qa-only/SKILL.md | 4 ++ qa/SKILL.md | 4 ++ retro/SKILL.md | 4 ++ review/SKILL.md | 4 ++ scrape/SKILL.md | 4 ++ scripts/resolvers/preamble.ts | 2 + .../preamble/generate-evidence-directive.ts | 18 ++++++++ setup-deploy/SKILL.md | 4 ++ setup-gbrain/SKILL.md | 4 ++ ship/SKILL.md | 4 ++ ship/sections/plan-completion.md | 19 ++++++--- skillify/SKILL.md | 4 ++ spec/SKILL.md | 8 ++++ sync-gbrain/SKILL.md | 4 ++ test/fixtures/golden/claude-ship-SKILL.md | 4 ++ test/fixtures/golden/codex-ship-SKILL.md | 23 +++++++--- test/fixtures/golden/factory-ship-SKILL.md | 23 +++++++--- test/gen-skill-docs.test.ts | 7 +++- test/helpers/carve-guards.ts | 12 +++--- test/helpers/parity-harness.ts | 8 +++- test/skill-validation.test.ts | 8 ++-- 55 files changed, 326 insertions(+), 30 deletions(-) create mode 100644 scripts/resolvers/preamble/generate-evidence-directive.ts diff --git a/TODOS.md b/TODOS.md index d375009fe..69eead713 100644 --- a/TODOS.md +++ b/TODOS.md @@ -2,6 +2,45 @@ ## NEXT PRIORITY +### P2: Persona-fleet hostile-user harness (fork port wave 2 deferral) + +**What:** Port the methodology behind time-attack/gstack's 87-hostile-user +field run (418 findings): machine-written t0 in an append-only run.jsonl +(elapsed time measured, never self-reported), every metric resolving to an +artifact, and a mandatory-quit contract with machine-checkable caps (300s to +first useful output, 900s total, 40K context tokens, 3 consecutive dead ends) +so abandonment is a computable outcome. Specs: fork `evals/fleet/METRICS.md` ++ `evals/fleet/ABANDONMENT.md` (methodology only — no runner code exists to +port; this is a build). + +**Why:** A periodic hostile-user round against OUR 44-skill tree would surface +the same first-five-minutes failure class the fork closed 418 of. Fits the +existing eval-store/e2e harness as a new runner. + +**Effort:** L (human ~2wk) → M with CC. **Priority:** P2. +**Depends on:** decisions on cost ceilings + journal storage. + +### P3: Answer-key eval methodology (rides the persona-fleet work) + +**What:** Pre-registered answer keys (fork `evals/answer-keys/` — +codex-decorrelation, health-trending) grading our /codex and /health surfaces +against planted ground truth instead of judge vibes. + +**Why:** Deterministic scoring for surfaces where LLM-judge drift is the +known failure mode. **Effort:** M → S with CC. **Priority:** P3. +**Depends on:** persona-fleet harness (shared runner shape). + +### P3: Quarterly Apple-journey live re-verification + +**What:** Run the /ship Apple release adapter against a real (TestFlight-only) +release once a quarter, or on first user bug report, and fix drift. Apple's +APIs move (the fork caught fastlane price_tier breaking live); the adapter's +claims are evidence-backed today and must stay that way per its own +evidence-before-claimed-limitations rule. + +**Effort:** S per run. **Priority:** P3. **Depends on:** a paid ADP account. + + ### P1: #1882 — portable skill-install prefix (non-`gstack` install dirs break silently) **What:** Every generated SKILL.md hardcodes the literal `~/.claude/skills/gstack/...` @@ -25,6 +64,9 @@ So #1882 is now purely the body-preamble portability work. invocation-time failures. **Cons:** Touches the most load-bearing bash in the repo (every skill's preamble); a silent mistake breaks all 52 skills. High blast radius — needs its own focused PR. +**Note (fork port wave 2):** the Apple release adapter (ship/sections/ +apple-release.md) added template surface with `~/.claude/skills/gstack/bin` +references — include it in this fix's coverage list. **Context / where to start:** - Rewire `ctx.paths.binDir` (and browse/design dir paths) + the ~9 resolvers that diff --git a/autoplan/SKILL.md b/autoplan/SKILL.md index b063b90ee..27c6a6ec8 100644 --- a/autoplan/SKILL.md +++ b/autoplan/SKILL.md @@ -678,6 +678,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/canary/SKILL.md b/canary/SKILL.md index b973f6dff..6f3f25204 100644 --- a/canary/SKILL.md +++ b/canary/SKILL.md @@ -670,6 +670,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/codex/SKILL.md b/codex/SKILL.md index 26283809f..5d14e26ec 100644 --- a/codex/SKILL.md +++ b/codex/SKILL.md @@ -673,6 +673,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/context-restore/SKILL.md b/context-restore/SKILL.md index 084657127..ae27fbbbe 100644 --- a/context-restore/SKILL.md +++ b/context-restore/SKILL.md @@ -674,6 +674,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/context-save/SKILL.md b/context-save/SKILL.md index eabcb8698..18a53577c 100644 --- a/context-save/SKILL.md +++ b/context-save/SKILL.md @@ -673,6 +673,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/cso/SKILL.md b/cso/SKILL.md index a4db4ef1c..3daa0048f 100644 --- a/cso/SKILL.md +++ b/cso/SKILL.md @@ -676,6 +676,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/design-consultation/SKILL.md b/design-consultation/SKILL.md index 31bdd5304..65015b17e 100644 --- a/design-consultation/SKILL.md +++ b/design-consultation/SKILL.md @@ -696,6 +696,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/design-html/SKILL.md b/design-html/SKILL.md index 9821e49f3..f260bde86 100644 --- a/design-html/SKILL.md +++ b/design-html/SKILL.md @@ -677,6 +677,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/design-review/SKILL.md b/design-review/SKILL.md index 0f5f5e252..9cba2b1e9 100644 --- a/design-review/SKILL.md +++ b/design-review/SKILL.md @@ -674,6 +674,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/design-shotgun/SKILL.md b/design-shotgun/SKILL.md index 67ea8f7a7..b97d348bd 100644 --- a/design-shotgun/SKILL.md +++ b/design-shotgun/SKILL.md @@ -691,6 +691,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/devex-review/SKILL.md b/devex-review/SKILL.md index b3955f591..e72cee594 100644 --- a/devex-review/SKILL.md +++ b/devex-review/SKILL.md @@ -676,6 +676,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/diagram/SKILL.md b/diagram/SKILL.md index 2ec942940..c47df85d7 100644 --- a/diagram/SKILL.md +++ b/diagram/SKILL.md @@ -671,6 +671,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/docs/designs/PACING_UPDATES_V0.md b/docs/designs/PACING_UPDATES_V0.md index f8a49480a..7cffa3baf 100644 --- a/docs/designs/PACING_UPDATES_V0.md +++ b/docs/designs/PACING_UPDATES_V0.md @@ -93,3 +93,17 @@ V2 items remain deferred: - Per-skill or per-topic explain levels - Team profiles - AST-based "delivered features" metric + +## Fold-in from fork port wave 2 (2026-08-14) + +The time-attack/gstack fork attacked the same question fatigue from a +complementary axis: build-scale classification (session/hobby/project/ +product/venture) sizing the machinery, plus CHAIN-WIDE question budgets. +Approved decision (CEO review 2026-08-14): fold the fork's ACCOUNTING +judgment into this design round — the budget is chain-scoped (a chained +review deducts from what's left, never resets), handoffs carry +questions-already-spent, approval/mutation gates never count against it, and +the budget is spent on the hardest-to-reverse decisions first. Do NOT adopt +the fork's 5/8/12 numeric constants — the fork itself later replaced them +with a zero-default autonomy dial. Scale sizes the machinery and sets the +budget; pacing (this doc) ranks what the budget is spent on. diff --git a/document-generate/SKILL.md b/document-generate/SKILL.md index 902cf27ab..be9f6a273 100644 --- a/document-generate/SKILL.md +++ b/document-generate/SKILL.md @@ -676,6 +676,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/document-release/SKILL.md b/document-release/SKILL.md index b4f3207a6..bb13ca9ed 100644 --- a/document-release/SKILL.md +++ b/document-release/SKILL.md @@ -674,6 +674,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/health/SKILL.md b/health/SKILL.md index c962c1f88..4bf9409dd 100644 --- a/health/SKILL.md +++ b/health/SKILL.md @@ -672,6 +672,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/investigate/SKILL.md b/investigate/SKILL.md index 918bd95f0..3e6ed15a7 100644 --- a/investigate/SKILL.md +++ b/investigate/SKILL.md @@ -711,6 +711,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/ios-clean/SKILL.md b/ios-clean/SKILL.md index 521b0353d..dff6ec857 100644 --- a/ios-clean/SKILL.md +++ b/ios-clean/SKILL.md @@ -674,6 +674,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/ios-design-review/SKILL.md b/ios-design-review/SKILL.md index 2be91ffee..897f3105e 100644 --- a/ios-design-review/SKILL.md +++ b/ios-design-review/SKILL.md @@ -676,6 +676,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/ios-fix/SKILL.md b/ios-fix/SKILL.md index 83b0432fe..932ba8261 100644 --- a/ios-fix/SKILL.md +++ b/ios-fix/SKILL.md @@ -677,6 +677,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/ios-qa/SKILL.md b/ios-qa/SKILL.md index af2844443..5cd5cee86 100644 --- a/ios-qa/SKILL.md +++ b/ios-qa/SKILL.md @@ -680,6 +680,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/ios-sync/SKILL.md b/ios-sync/SKILL.md index df69a07d4..6fdd7d658 100644 --- a/ios-sync/SKILL.md +++ b/ios-sync/SKILL.md @@ -674,6 +674,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/land-and-deploy/SKILL.md b/land-and-deploy/SKILL.md index 0183eed28..e2ecc3745 100644 --- a/land-and-deploy/SKILL.md +++ b/land-and-deploy/SKILL.md @@ -669,6 +669,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/landing-report/SKILL.md b/landing-report/SKILL.md index 83eae8a12..dd0aa7ee8 100644 --- a/landing-report/SKILL.md +++ b/landing-report/SKILL.md @@ -670,6 +670,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/learn/SKILL.md b/learn/SKILL.md index a05c3039d..14482367e 100644 --- a/learn/SKILL.md +++ b/learn/SKILL.md @@ -672,6 +672,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/office-hours/SKILL.md b/office-hours/SKILL.md index 77d04863d..e83ecdeb9 100644 --- a/office-hours/SKILL.md +++ b/office-hours/SKILL.md @@ -707,6 +707,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/open-gstack-browser/SKILL.md b/open-gstack-browser/SKILL.md index 603f7345a..ec7e832b6 100644 --- a/open-gstack-browser/SKILL.md +++ b/open-gstack-browser/SKILL.md @@ -669,6 +669,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/pair-agent/SKILL.md b/pair-agent/SKILL.md index c5294d7ce..74a40e280 100644 --- a/pair-agent/SKILL.md +++ b/pair-agent/SKILL.md @@ -671,6 +671,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index b22d26e64..b512c8846 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -701,6 +701,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/plan-design-review/SKILL.md b/plan-design-review/SKILL.md index b6f0be633..13339600a 100644 --- a/plan-design-review/SKILL.md +++ b/plan-design-review/SKILL.md @@ -673,6 +673,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/plan-devex-review/SKILL.md b/plan-devex-review/SKILL.md index c492ee95b..a93c6ad3b 100644 --- a/plan-devex-review/SKILL.md +++ b/plan-devex-review/SKILL.md @@ -679,6 +679,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/plan-eng-review/SKILL.md b/plan-eng-review/SKILL.md index bd8f9cd85..e2572e24f 100644 --- a/plan-eng-review/SKILL.md +++ b/plan-eng-review/SKILL.md @@ -677,6 +677,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/plan-tune/SKILL.md b/plan-tune/SKILL.md index 2ad31174f..b12a05e63 100644 --- a/plan-tune/SKILL.md +++ b/plan-tune/SKILL.md @@ -682,6 +682,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/qa-only/SKILL.md b/qa-only/SKILL.md index 947ef9ef4..9ce579bf8 100644 --- a/qa-only/SKILL.md +++ b/qa-only/SKILL.md @@ -672,6 +672,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/qa/SKILL.md b/qa/SKILL.md index f2f212c4d..6c8862935 100644 --- a/qa/SKILL.md +++ b/qa/SKILL.md @@ -678,6 +678,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/retro/SKILL.md b/retro/SKILL.md index a40be4111..091b936f0 100644 --- a/retro/SKILL.md +++ b/retro/SKILL.md @@ -689,6 +689,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/review/SKILL.md b/review/SKILL.md index 456d98d51..733f45deb 100644 --- a/review/SKILL.md +++ b/review/SKILL.md @@ -674,6 +674,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/scrape/SKILL.md b/scrape/SKILL.md index a505a41f4..a8d6099eb 100644 --- a/scrape/SKILL.md +++ b/scrape/SKILL.md @@ -670,6 +670,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/scripts/resolvers/preamble.ts b/scripts/resolvers/preamble.ts index 1cdfc2e6d..e91486475 100644 --- a/scripts/resolvers/preamble.ts +++ b/scripts/resolvers/preamble.ts @@ -53,6 +53,7 @@ import { generateAskUserFormat } from './preamble/generate-ask-user-format'; import { generateWritingStyle } from './preamble/generate-writing-style'; import { generateCompletenessSection } from './preamble/generate-completeness-section'; import { generateConfusionProtocol } from './preamble/generate-confusion-protocol'; +import { generateEvidenceDirective } from './preamble/generate-evidence-directive'; import { generateContinuousCheckpoint } from './preamble/generate-continuous-checkpoint'; import { generateContextHealth } from './preamble/generate-context-health'; @@ -113,6 +114,7 @@ export function generatePreamble(ctx: TemplateContext): string { generateWritingStyle(ctx), generateCompletenessSection(ctx), generateConfusionProtocol(ctx), + generateEvidenceDirective(ctx), generateContinuousCheckpoint(), generateContextHealth(ctx), generateQuestionTuning(ctx), diff --git a/scripts/resolvers/preamble/generate-evidence-directive.ts b/scripts/resolvers/preamble/generate-evidence-directive.ts new file mode 100644 index 000000000..f4fdaa67e --- /dev/null +++ b/scripts/resolvers/preamble/generate-evidence-directive.ts @@ -0,0 +1,18 @@ +import type { TemplateContext } from '../types'; + +/** + * Evidence-before-claimed-limitations (fork port wave 2, D1). + * + * The single highest-leverage judgment clause from the fork's live App Store + * releases: nine release failures in two days shared one root — the agent + * asserting folklore as fact ("the API can't do this", "X requires a + * password") instead of running the ten-second check that would have + * disproven it. Adapted as ONE directive into the shared preamble (the + * fork's full SHARED-JUDGMENT contract is deliberately not imported). + */ +export function generateEvidenceDirective(ctx?: TemplateContext): string { + if (ctx?.explainLevel === 'terse') return ''; + return `## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked.`; +} diff --git a/setup-deploy/SKILL.md b/setup-deploy/SKILL.md index f0b6e5a61..d8da3c70b 100644 --- a/setup-deploy/SKILL.md +++ b/setup-deploy/SKILL.md @@ -673,6 +673,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/setup-gbrain/SKILL.md b/setup-gbrain/SKILL.md index 1d4e0afa2..9fdf8118e 100644 --- a/setup-gbrain/SKILL.md +++ b/setup-gbrain/SKILL.md @@ -672,6 +672,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/ship/SKILL.md b/ship/SKILL.md index 786fbb393..908b0badf 100644 --- a/ship/SKILL.md +++ b/ship/SKILL.md @@ -674,6 +674,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/ship/sections/plan-completion.md b/ship/sections/plan-completion.md index b325d7a10..207d80d63 100644 --- a/ship/sections/plan-completion.md +++ b/ship/sections/plan-completion.md @@ -201,16 +201,23 @@ Using the plan file already discovered in Step 8, look for a verification sectio ### 2. Check for running dev server -Before invoking browse-based verification, check if a dev server is reachable: +Before invoking browse-based verification, find the dev-server URL the way the +project declares it — never trust a hardcoded port list alone: + +1. **CLAUDE.md first:** look for a documented dev URL or dev command (a + `## Development`/`## Testing` section naming a port or URL). Use it. +2. **The plan file:** if the plan's verification section names a URL, use it. +3. **Fallback probe** (common ports, only when 1-2 found nothing): ```bash -curl -s -o /dev/null -w '%{http_code}' http://localhost:3000 2>/dev/null || \ -curl -s -o /dev/null -w '%{http_code}' http://localhost:8080 2>/dev/null || \ -curl -s -o /dev/null -w '%{http_code}' http://localhost:5173 2>/dev/null || \ -curl -s -o /dev/null -w '%{http_code}' http://localhost:4000 2>/dev/null || echo "NO_SERVER" +for _p in 3000 8080 5173 4000 4321 8000; do + _code=$(curl -s -o /dev/null -w '%{http_code}' "http://localhost:$_p" 2>/dev/null) + [ -n "$_code" ] && [ "$_code" != "000" ] && { echo "DEV_SERVER: http://localhost:$_p ($_code)"; break; } +done +[ -z "${_code:-}" ] || [ "${_code:-000}" = "000" ] && echo "NO_SERVER" ``` -**If NO_SERVER:** Skip with "No dev server detected — skipping plan verification. Run /qa separately after deploying." +**If NO_SERVER:** Skip with "No dev server detected (checked CLAUDE.md, the plan, and common ports) — skipping plan verification. Run /qa separately after deploying, or document the dev URL in CLAUDE.md so this step finds it next time." ### 3. Invoke /qa-only inline diff --git a/skillify/SKILL.md b/skillify/SKILL.md index c1aed10ca..2345c1665 100644 --- a/skillify/SKILL.md +++ b/skillify/SKILL.md @@ -670,6 +670,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/spec/SKILL.md b/spec/SKILL.md index 49355703b..dfe99effb 100644 --- a/spec/SKILL.md +++ b/spec/SKILL.md @@ -671,6 +671,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. @@ -1755,6 +1759,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/sync-gbrain/SKILL.md b/sync-gbrain/SKILL.md index 4c3e903e1..5ebad2399 100644 --- a/sync-gbrain/SKILL.md +++ b/sync-gbrain/SKILL.md @@ -672,6 +672,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/test/fixtures/golden/claude-ship-SKILL.md b/test/fixtures/golden/claude-ship-SKILL.md index 786fbb393..908b0badf 100644 --- a/test/fixtures/golden/claude-ship-SKILL.md +++ b/test/fixtures/golden/claude-ship-SKILL.md @@ -674,6 +674,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. diff --git a/test/fixtures/golden/codex-ship-SKILL.md b/test/fixtures/golden/codex-ship-SKILL.md index c67466463..9f0d79cf6 100644 --- a/test/fixtures/golden/codex-ship-SKILL.md +++ b/test/fixtures/golden/codex-ship-SKILL.md @@ -660,6 +660,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. @@ -1872,16 +1876,23 @@ Using the plan file already discovered in Step 8, look for a verification sectio ### 2. Check for running dev server -Before invoking browse-based verification, check if a dev server is reachable: +Before invoking browse-based verification, find the dev-server URL the way the +project declares it — never trust a hardcoded port list alone: + +1. **CLAUDE.md first:** look for a documented dev URL or dev command (a + `## Development`/`## Testing` section naming a port or URL). Use it. +2. **The plan file:** if the plan's verification section names a URL, use it. +3. **Fallback probe** (common ports, only when 1-2 found nothing): ```bash -curl -s -o /dev/null -w '%{http_code}' http://localhost:3000 2>/dev/null || \ -curl -s -o /dev/null -w '%{http_code}' http://localhost:8080 2>/dev/null || \ -curl -s -o /dev/null -w '%{http_code}' http://localhost:5173 2>/dev/null || \ -curl -s -o /dev/null -w '%{http_code}' http://localhost:4000 2>/dev/null || echo "NO_SERVER" +for _p in 3000 8080 5173 4000 4321 8000; do + _code=$(curl -s -o /dev/null -w '%{http_code}' "http://localhost:$_p" 2>/dev/null) + [ -n "$_code" ] && [ "$_code" != "000" ] && { echo "DEV_SERVER: http://localhost:$_p ($_code)"; break; } +done +[ -z "${_code:-}" ] || [ "${_code:-000}" = "000" ] && echo "NO_SERVER" ``` -**If NO_SERVER:** Skip with "No dev server detected — skipping plan verification. Run /qa separately after deploying." +**If NO_SERVER:** Skip with "No dev server detected (checked CLAUDE.md, the plan, and common ports) — skipping plan verification. Run /qa separately after deploying, or document the dev URL in CLAUDE.md so this step finds it next time." ### 3. Invoke /qa-only inline diff --git a/test/fixtures/golden/factory-ship-SKILL.md b/test/fixtures/golden/factory-ship-SKILL.md index e73218d8e..10bf151bc 100644 --- a/test/fixtures/golden/factory-ship-SKILL.md +++ b/test/fixtures/golden/factory-ship-SKILL.md @@ -662,6 +662,10 @@ When options differ in coverage, include `Completeness: X/10` (10 = all edge cas For high-stakes ambiguity (architecture, data model, destructive scope, missing context), STOP. Name it in one sentence, present 2-3 options with tradeoffs, and ask. Do not use for routine coding or obvious changes. +## Claimed Limitations Need Evidence + +A claimed limitation or requirement ("the API can't do this", "X requires a credential", "that's impossible on this platform") is a material claim. State one only with the verbatim error, the documented statement, or a live probe in hand — pattern-matching a failure to a familiar story is not evidence. When a cheap probe settles the question, run it BEFORE asking the user anything or declaring a step blocked. + ## Continuous Checkpoint Mode If `CHECKPOINT_MODE` is `"continuous"`: auto-commit completed logical units with `WIP:` prefix. @@ -1874,16 +1878,23 @@ Using the plan file already discovered in Step 8, look for a verification sectio ### 2. Check for running dev server -Before invoking browse-based verification, check if a dev server is reachable: +Before invoking browse-based verification, find the dev-server URL the way the +project declares it — never trust a hardcoded port list alone: + +1. **CLAUDE.md first:** look for a documented dev URL or dev command (a + `## Development`/`## Testing` section naming a port or URL). Use it. +2. **The plan file:** if the plan's verification section names a URL, use it. +3. **Fallback probe** (common ports, only when 1-2 found nothing): ```bash -curl -s -o /dev/null -w '%{http_code}' http://localhost:3000 2>/dev/null || \ -curl -s -o /dev/null -w '%{http_code}' http://localhost:8080 2>/dev/null || \ -curl -s -o /dev/null -w '%{http_code}' http://localhost:5173 2>/dev/null || \ -curl -s -o /dev/null -w '%{http_code}' http://localhost:4000 2>/dev/null || echo "NO_SERVER" +for _p in 3000 8080 5173 4000 4321 8000; do + _code=$(curl -s -o /dev/null -w '%{http_code}' "http://localhost:$_p" 2>/dev/null) + [ -n "$_code" ] && [ "$_code" != "000" ] && { echo "DEV_SERVER: http://localhost:$_p ($_code)"; break; } +done +[ -z "${_code:-}" ] || [ "${_code:-000}" = "000" ] && echo "NO_SERVER" ``` -**If NO_SERVER:** Skip with "No dev server detected — skipping plan verification. Run /qa separately after deploying." +**If NO_SERVER:** Skip with "No dev server detected (checked CLAUDE.md, the plan, and common ports) — skipping plan verification. Run /qa separately after deploying, or document the dev URL in CLAUDE.md so this step finds it next time." ### 3. Invoke /qa-only inline diff --git a/test/gen-skill-docs.test.ts b/test/gen-skill-docs.test.ts index 3174164bd..de92792c1 100644 --- a/test/gen-skill-docs.test.ts +++ b/test/gen-skill-docs.test.ts @@ -1050,8 +1050,11 @@ describe('PLAN_VERIFICATION_EXEC placeholder', () => { expect(shipSkill).toContain('qa-only'); }); - test('contains localhost reachability check', () => { - expect(shipSkill).toContain('localhost:3000'); + test('contains dev-server discovery (CLAUDE.md first, then a port probe)', () => { + // Fork port wave 2: the hardcoded 4-port list became read-CLAUDE.md-or- + // probe; the probe loops common ports instead of naming each once. + expect(shipSkill).toContain('CLAUDE.md first'); + expect(shipSkill).toContain('http://localhost:$_p'); expect(shipSkill).toContain('NO_SERVER'); }); diff --git a/test/helpers/carve-guards.ts b/test/helpers/carve-guards.ts index b76af4c85..978ce2ae7 100644 --- a/test/helpers/carve-guards.ts +++ b/test/helpers/carve-guards.ts @@ -208,10 +208,12 @@ export const CARVE_GUARDS: Record = { // always-loaded AskUserQuestion Format section. // v1.2.0 activation lift (shared first-run-guidance preamble) + #2077 ask-first scope gate. // +~1.3 KB: plan-mode auto-select-B scope-gate exceptions (2026-08). - maxSkeletonBytes: 89_000, + // Fork port wave 2 (D1): evidence directive adds ~0.45KB to every + // tier-2+ skeleton. Measured 89,184. + maxSkeletonBytes: 91_000, minUnionBytes: 70_000, mustContain: ['design', 'visual'], - maxSizeRatio: 1.07, + maxSizeRatio: 1.12, // D1 measured 1.104 }, 'plan-devex-review': { skill: 'plan-devex-review', @@ -255,12 +257,12 @@ export const CARVE_GUARDS: Record = { // plus the P1 office-hours closing handoff (AUQ that launches the next skill). // Fork port wave 2: the third-party web-actions contract sits inline // (judgment must be visible before the workflow directs the user to a - // vendor site), plus the #703 dual-write + repo-doc-preference block — - // ratio 1.092 measured. Tight headroom. + // vendor site), plus the #703 dual-write + repo-doc-preference block and + // the #538 opt-out + D1 evidence directive — ratio 1.104 measured. maxSkeletonBytes: 101_000, minUnionBytes: 70_000, mustContain: ['design doc', 'problem statement'], - maxSizeRatio: 1.10, + maxSizeRatio: 1.12, }, 'document-release': { skill: 'document-release', diff --git a/test/helpers/parity-harness.ts b/test/helpers/parity-harness.ts index fd05acbb5..5f687ca3a 100644 --- a/test/helpers/parity-harness.ts +++ b/test/helpers/parity-harness.ts @@ -240,7 +240,9 @@ const MONOLITH_INVARIANTS: ParityInvariant[] = [ // 1.09 → 1.10: the plan-mode preamble reword (scope-gate auto-select-B // change) adds ~250 B to every skill's shared preamble; investigate was // the closest to its ceiling (landed 1.092). - maxSizeRatio: 1.10, + // Fork port wave 2 (D1): the evidence-before-claimed-limitations preamble + // directive adds ~0.45KB to every tier-2+ skill. Measured values noted. + maxSizeRatio: 1.12, // D1 measured minBytes: 30_000, }, { @@ -248,7 +250,9 @@ const MONOLITH_INVARIANTS: ParityInvariant[] = [ mustContain: ['ceo', 'eng', 'design'], mustHaveHeadings: ['## Preamble', '## When to invoke'], // v1.2.0 activation lift: shared first-run-guidance preamble section. - maxSizeRatio: 1.07, + // Fork port wave 2 (D1): the evidence-before-claimed-limitations preamble + // directive adds ~0.45KB to every tier-2+ skill. Measured values noted. + maxSizeRatio: 1.09, // D1 measured minBytes: 70_000, }, ]; diff --git a/test/skill-validation.test.ts b/test/skill-validation.test.ts index edd45c288..58fdc2900 100644 --- a/test/skill-validation.test.ts +++ b/test/skill-validation.test.ts @@ -1216,9 +1216,11 @@ describe('Step 3.4 test coverage audit', () => { describe('ship step numbering', () => { // Allowed sub-steps that are resolver-generated and intentionally nested: - // 8.1 (Plan Verification), 8.2 (Scope Drift), 9.1 (Review Army), 9.2 (Findings Merge), - // 9.3 (Cross-review dedup), 15.0 (WIP squash — continuous checkpoint), 15.1 (Bisectable commits). - const ALLOWED_SUBSTEPS = new Set(['8.1', '8.2', '9.1', '9.2', '9.3', '15.0', '15.1']); + // 0.9 (Apple target detection — MUST precede Step 1's branch gate, R2-pinned + // by test/ship-apple-gate.test.ts), 8.1 (Plan Verification), 8.2 (Scope + // Drift), 9.1 (Review Army), 9.2 (Findings Merge), 9.3 (Cross-review dedup), + // 15.0 (WIP squash — continuous checkpoint), 15.1 (Bisectable commits). + const ALLOWED_SUBSTEPS = new Set(['0.9', '8.1', '8.2', '9.1', '9.2', '9.3', '15.0', '15.1']); test('ship/SKILL.md.tmpl contains no unexpected fractional step numbers', () => { const tmpl = fs.readFileSync(path.join(ROOT, 'ship', 'SKILL.md.tmpl'), 'utf-8');