@haposoft/cafekit 0.16.0-rc.7 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -27
- package/bin/__tests__/codex-hooks-ownership.test.js +239 -0
- package/bin/__tests__/codex-hooks.test.js +295 -0
- package/bin/__tests__/codex-native.test.js +2289 -34
- package/bin/__tests__/develop-contract.test.js +400 -23
- package/bin/__tests__/installer-safety.test.js +3 -3
- package/bin/__tests__/optional-skill-inventory.test.js +249 -0
- package/bin/__tests__/output-styles.test.js +214 -0
- package/bin/__tests__/package-inventory.test.js +2131 -16
- package/bin/__tests__/runtime-schema.test.js +111 -0
- package/bin/__tests__/secret-output-guardrail.test.js +122 -0
- package/bin/__tests__/skill-routing-source.test.js +172 -0
- package/bin/__tests__/specs-v2-execution-closeout.test.js +1 -1
- package/bin/install.js +10 -0
- package/bin/lib/codex-install.js +170 -5
- package/bin/lib/context.js +14 -0
- package/bin/lib/i18n.js +12 -6
- package/bin/lib/skill-deps.js +5 -5
- package/bin/phases/claude-runtime.js +23 -0
- package/bin/phases/claude-settings.js +8 -0
- package/bin/phases/codex-hooks.js +156 -0
- package/bin/phases/codex-runtime.js +29 -38
- package/bin/phases/copy-payload.js +8 -2
- package/bin/phases/select-skill-bundles.js +96 -0
- package/bin/phases/skill-inventory.js +71 -0
- package/bin/phases/skills-setup.js +9 -2
- package/bin/phases/write-metadata.js +8 -5
- package/package.json +8 -2
- package/src/claude/CLAUDE.md +3 -3
- package/src/claude/agents/brainstormer.md +52 -69
- package/src/claude/agents/code-auditor.md +32 -14
- package/src/claude/agents/debugger.md +35 -20
- package/src/claude/agents/deployer.md +12 -5
- package/src/claude/agents/docs-keeper.md +11 -1
- package/src/claude/agents/implementer.md +25 -13
- package/src/claude/agents/inspector.md +6 -3
- package/src/claude/agents/project-manager.md +1 -1
- package/src/claude/agents/researcher.md +26 -55
- package/src/claude/agents/spec-maker.md +24 -13
- package/src/claude/agents/strategist.md +52 -0
- package/src/claude/agents/test-runner.md +117 -132
- package/src/claude/agents/ui-ux-designer.md +1 -1
- package/src/claude/hooks/__tests__/fixtures/statusline-default.golden +1 -0
- package/src/claude/hooks/__tests__/precompact.test.js +158 -0
- package/src/claude/hooks/__tests__/spec-gate.test.js +87 -4
- package/src/claude/hooks/__tests__/state.test.js +254 -3
- package/src/claude/hooks/__tests__/statusline.test.js +196 -0
- package/src/claude/hooks/agent.cjs +1 -1
- package/src/claude/hooks/docs-sync.cjs +12 -10
- package/src/claude/hooks/inspect-block.cjs +1 -1
- package/src/claude/hooks/lib/config.cjs +3 -0
- package/src/claude/hooks/lib/hook-state-dir.cjs +39 -0
- package/src/claude/hooks/lib/secret-keywords.cjs +42 -0
- package/src/claude/hooks/precompact.cjs +105 -0
- package/src/claude/hooks/rules.cjs +1 -1
- package/src/claude/hooks/secret-output-guardrail.cjs +43 -0
- package/src/claude/hooks/session.cjs +27 -1
- package/src/claude/hooks/spec-gate.cjs +3 -3
- package/src/claude/hooks/spec-state.cjs +32 -5
- package/src/claude/hooks/state.cjs +1 -1
- package/src/claude/hooks/task-scaffold-guard.cjs +1 -1
- package/src/claude/hooks/usage.cjs +1 -1
- package/src/claude/migration-manifest.json +29 -15
- package/src/claude/output-styles/coding-level-0-eli5.md +103 -0
- package/src/claude/output-styles/coding-level-1-junior.md +124 -0
- package/src/claude/output-styles/coding-level-2-mid.md +146 -0
- package/src/claude/output-styles/coding-level-3-senior.md +148 -0
- package/src/claude/output-styles/coding-level-4-lead.md +159 -0
- package/src/claude/output-styles/coding-level-5-god.md +91 -0
- package/src/claude/references/debugger/core-philosophy.md +5 -3
- package/src/claude/references/debugger/frontend-verification.md +2 -2
- package/src/claude/references/debugger/log-ci-analysis.md +13 -1
- package/src/claude/references/debugger/parallel-agent-hydration.md +19 -34
- package/src/claude/references/debugger/performance-diagnostics.md +2 -2
- package/src/claude/references/debugger/root-cause-tracing.md +37 -6
- package/src/claude/references/debugger/side-effect-gate.md +3 -1
- package/src/claude/references/debugger/verification-protocol.md +13 -12
- package/src/claude/rules/orchestrator.md +7 -1
- package/src/claude/rules/process-management.md +39 -0
- package/src/claude/rules/review-audit-self-decision.md +48 -0
- package/src/claude/rules/skill-domain-routing.md +26 -24
- package/src/claude/rules/skill-workflow-routing.md +22 -14
- package/src/claude/rules/workflow.md +3 -3
- package/src/claude/runtime.json +1 -0
- package/src/claude/runtime.schema.json +205 -0
- package/src/claude/scripts/generate-skill-catalog.cjs +156 -122
- package/src/claude/scripts/provenance.cjs +18 -5
- package/src/claude/scripts/spec-receipt.cjs +76 -21
- package/src/claude/scripts/spec-resolver.cjs +144 -4
- package/src/claude/scripts/workflow-policy.cjs +1 -1
- package/src/claude/settings/settings.json +16 -0
- package/src/claude/skills/agent-browser/SKILL.md +1 -1
- package/src/claude/skills/ai-multimodal/SKILL.md +1 -1
- package/src/claude/skills/brainstorm/SKILL.md +193 -172
- package/src/claude/skills/brainstorm/references/question-framework.md +105 -167
- package/src/claude/skills/chrome-devtools/SKILL.md +1 -1
- package/src/claude/skills/code-review/SKILL.md +43 -25
- package/src/claude/skills/code-review/references/spec-compliance-review.md +3 -4
- package/src/claude/skills/code-review/references/verification-gate.md +1 -1
- package/src/claude/skills/debug/SKILL.md +48 -19
- package/src/claude/skills/delegate/SKILL.md +1 -1
- package/src/claude/skills/develop/SKILL.md +92 -65
- package/src/claude/skills/develop/references/parallel-waves.md +36 -63
- package/src/claude/skills/develop/references/quality-gate.md +31 -4
- package/src/claude/skills/develop/references/subagent-patterns.md +21 -7
- package/src/claude/skills/docs/SKILL.md +42 -23
- package/src/claude/skills/docs/references/init-workflow.md +4 -4
- package/src/claude/skills/docs/references/reconstruct-workflow.md +6 -6
- package/src/claude/skills/docs/references/standard-docs-workflow.md +6 -2
- package/src/claude/skills/docs/references/summarize-workflow.md +2 -2
- package/src/claude/skills/docs/references/update-workflow.md +9 -7
- package/src/claude/skills/docs/templates/requirements-as-is.md +1 -1
- package/src/claude/skills/docx/SKILL.md +1 -1
- package/src/claude/skills/git/SKILL.md +1 -1
- package/src/claude/skills/git/references/commit-protocols.md +1 -1
- package/src/claude/skills/git/references/finish-branch.md +1 -1
- package/src/claude/skills/hotfix/SKILL.md +159 -170
- package/src/claude/skills/hotfix/references/diagnosis-protocol.md +14 -9
- package/src/claude/skills/hotfix/references/parallel-patterns.md +27 -13
- package/src/claude/skills/hotfix/references/prevention-gate.md +5 -0
- package/src/claude/skills/hotfix/references/review-cycle.md +21 -15
- package/src/claude/skills/hotfix/references/workflow-specialized.md +53 -21
- package/src/claude/skills/inspect/SKILL.md +55 -46
- package/src/claude/skills/inspect/references/internal-inspection.md +21 -5
- package/src/claude/skills/loop/SKILL.md +114 -0
- package/src/claude/skills/loop/references/bounded-loop-protocol.md +104 -0
- package/src/claude/skills/loop/references/metric-and-guard-contract.md +76 -0
- package/src/claude/skills/pdf/SKILL.md +1 -1
- package/src/claude/skills/pptx/SKILL.md +1 -1
- package/src/claude/skills/question/SKILL.md +16 -13
- package/src/claude/skills/research/SKILL.md +70 -43
- package/src/claude/skills/route/SKILL.md +94 -0
- package/src/claude/skills/route/references/agent-timing.md +46 -0
- package/src/claude/skills/route/references/chaining-patterns.md +53 -0
- package/src/claude/skills/route/references/task-taxonomy.md +48 -0
- package/src/claude/skills/specs/SKILL.md +48 -57
- package/src/claude/skills/specs/references/review.md +26 -8
- package/src/claude/skills/specs/references/templates.md +76 -31
- package/src/claude/skills/specs/templates/requirements-init.md +1 -1
- package/src/claude/skills/specs/templates/research.md +2 -2
- package/src/claude/skills/sync/SKILL.md +6 -6
- package/src/claude/skills/sync/references/sync-protocols.md +1 -1
- package/src/claude/skills/test/SKILL.md +120 -120
- package/src/claude/skills/test/references/execution-strategy.md +208 -361
- package/src/claude/skills/test/references/failure-triage.md +55 -121
- package/src/claude/skills/test/references/test-memory.md +20 -34
- package/src/claude/skills/ui-ux-pro-max/SKILL.md +1 -1
- package/src/claude/skills/web-testing/SKILL.md +1 -1
- package/src/claude/skills/xlsx/SKILL.md +1 -1
- package/src/claude/status.cjs +135 -33
- package/src/codex/AGENTS.md +14 -4
- package/src/codex/hooks/docs-sync.cjs +8 -3
- package/src/codex/hooks/lib/hook-context.cjs +18 -4
- package/src/codex/hooks/rules.cjs +29 -1
- package/src/codex/hooks/secret-output-guardrail.cjs +30 -0
- package/src/codex/hooks/spec-gate.cjs +3 -8
- package/src/codex/hooks/spec-state.cjs +34 -5
- package/src/codex/hooks.json +5 -0
- package/src/codex/runtime.json +2 -0
- package/src/common/.env.example +1 -1
- package/src/claude/skills/backend-development/SKILL.md +0 -101
- package/src/claude/skills/backend-development/references/backend-api-design.md +0 -495
- package/src/claude/skills/backend-development/references/backend-architecture.md +0 -454
- package/src/claude/skills/backend-development/references/backend-authentication.md +0 -338
- package/src/claude/skills/backend-development/references/backend-code-quality.md +0 -659
- package/src/claude/skills/backend-development/references/backend-debugging.md +0 -904
- package/src/claude/skills/backend-development/references/backend-devops.md +0 -491
- package/src/claude/skills/backend-development/references/backend-mindset.md +0 -387
- package/src/claude/skills/backend-development/references/backend-performance.md +0 -397
- package/src/claude/skills/backend-development/references/backend-security.md +0 -342
- package/src/claude/skills/backend-development/references/backend-technologies.md +0 -256
- package/src/claude/skills/backend-development/references/backend-testing.md +0 -429
- package/src/claude/skills/devops/.env.example +0 -76
- package/src/claude/skills/devops/SKILL.md +0 -102
- package/src/claude/skills/devops/references/browser-rendering.md +0 -305
- package/src/claude/skills/devops/references/cloudflare-d1-kv.md +0 -123
- package/src/claude/skills/devops/references/cloudflare-platform.md +0 -271
- package/src/claude/skills/devops/references/cloudflare-r2-storage.md +0 -280
- package/src/claude/skills/devops/references/cloudflare-workers-advanced.md +0 -312
- package/src/claude/skills/devops/references/cloudflare-workers-apis.md +0 -309
- package/src/claude/skills/devops/references/cloudflare-workers-basics.md +0 -418
- package/src/claude/skills/devops/references/docker-basics.md +0 -297
- package/src/claude/skills/devops/references/docker-compose.md +0 -292
- package/src/claude/skills/devops/references/gcloud-platform.md +0 -297
- package/src/claude/skills/devops/references/gcloud-services.md +0 -304
- package/src/claude/skills/devops/references/kubernetes-basics.md +0 -95
- package/src/claude/skills/devops/references/kubernetes-helm-advanced.md +0 -70
- package/src/claude/skills/devops/references/kubernetes-helm.md +0 -81
- package/src/claude/skills/devops/references/kubernetes-kubectl.md +0 -74
- package/src/claude/skills/devops/references/kubernetes-security-advanced.md +0 -94
- package/src/claude/skills/devops/references/kubernetes-security.md +0 -89
- package/src/claude/skills/devops/references/kubernetes-troubleshooting-advanced.md +0 -74
- package/src/claude/skills/devops/references/kubernetes-troubleshooting.md +0 -49
- package/src/claude/skills/devops/references/kubernetes-workflows-advanced.md +0 -75
- package/src/claude/skills/devops/references/kubernetes-workflows.md +0 -76
- package/src/claude/skills/devops/scripts/cloudflare_deploy.py +0 -269
- package/src/claude/skills/devops/scripts/docker_optimize.py +0 -332
- package/src/claude/skills/devops/scripts/requirements.txt +0 -20
- package/src/claude/skills/devops/scripts/tests/requirements.txt +0 -3
- package/src/claude/skills/devops/scripts/tests/test_cloudflare_deploy.py +0 -285
- package/src/claude/skills/devops/scripts/tests/test_docker_optimize.py +0 -436
- package/src/claude/skills/frontend-design/SKILL.md +0 -135
- package/src/claude/skills/frontend-design/references/ai-multimodal-overview.md +0 -165
- package/src/claude/skills/frontend-design/references/analysis-best-practices.md +0 -80
- package/src/claude/skills/frontend-design/references/analysis-prompts.md +0 -141
- package/src/claude/skills/frontend-design/references/analysis-techniques.md +0 -118
- package/src/claude/skills/frontend-design/references/animejs.md +0 -396
- package/src/claude/skills/frontend-design/references/anti-slop-rules.md +0 -103
- package/src/claude/skills/frontend-design/references/asset-generation.md +0 -337
- package/src/claude/skills/frontend-design/references/bento-motion-engine.md +0 -142
- package/src/claude/skills/frontend-design/references/design-extraction-overview.md +0 -71
- package/src/claude/skills/frontend-design/references/extraction-best-practices.md +0 -141
- package/src/claude/skills/frontend-design/references/extraction-output-templates.md +0 -162
- package/src/claude/skills/frontend-design/references/extraction-prompts.md +0 -127
- package/src/claude/skills/frontend-design/references/magicui-components.md +0 -129
- package/src/claude/skills/frontend-design/references/performance-guardrails.md +0 -169
- package/src/claude/skills/frontend-design/references/premium-design-patterns.md +0 -93
- package/src/claude/skills/frontend-design/references/redesign-audit-checklist.md +0 -114
- package/src/claude/skills/frontend-design/references/technical-accessibility.md +0 -119
- package/src/claude/skills/frontend-design/references/technical-best-practices.md +0 -97
- package/src/claude/skills/frontend-design/references/technical-optimization.md +0 -44
- package/src/claude/skills/frontend-design/references/technical-overview.md +0 -90
- package/src/claude/skills/frontend-design/references/technical-workflows.md +0 -150
- package/src/claude/skills/frontend-design/references/visual-analysis-overview.md +0 -95
- package/src/claude/skills/frontend-design/references/workflow-3d.md +0 -102
- package/src/claude/skills/frontend-design/references/workflow-describe.md +0 -87
- package/src/claude/skills/frontend-design/references/workflow-immersive.md +0 -87
- package/src/claude/skills/frontend-design/references/workflow-quick.md +0 -57
- package/src/claude/skills/frontend-design/references/workflow-screenshot.md +0 -63
- package/src/claude/skills/frontend-design/references/workflow-video.md +0 -74
- package/src/claude/skills/frontend-development/SKILL.md +0 -406
- package/src/claude/skills/frontend-development/resources/common-patterns.md +0 -331
- package/src/claude/skills/frontend-development/resources/complete-examples.md +0 -872
- package/src/claude/skills/frontend-development/resources/component-patterns.md +0 -502
- package/src/claude/skills/frontend-development/resources/data-fetching.md +0 -767
- package/src/claude/skills/frontend-development/resources/file-organization.md +0 -502
- package/src/claude/skills/frontend-development/resources/loading-and-error-states.md +0 -501
- package/src/claude/skills/frontend-development/resources/performance.md +0 -406
- package/src/claude/skills/frontend-development/resources/routing-guide.md +0 -364
- package/src/claude/skills/frontend-development/resources/styling-guide.md +0 -428
- package/src/claude/skills/frontend-development/resources/typescript-standards.md +0 -418
- package/src/claude/skills/mobile-development/SKILL.md +0 -218
- package/src/claude/skills/mobile-development/references/mobile-android.md +0 -604
- package/src/claude/skills/mobile-development/references/mobile-best-practices.md +0 -544
- package/src/claude/skills/mobile-development/references/mobile-debugging.md +0 -1089
- package/src/claude/skills/mobile-development/references/mobile-frameworks.md +0 -465
- package/src/claude/skills/mobile-development/references/mobile-ios.md +0 -496
- package/src/claude/skills/mobile-development/references/mobile-mindset.md +0 -542
- package/src/claude/skills/react-best-practices/AGENTS.md +0 -2249
- package/src/claude/skills/react-best-practices/README.md +0 -123
- package/src/claude/skills/react-best-practices/SKILL.md +0 -128
- package/src/claude/skills/react-best-practices/metadata.json +0 -15
- package/src/claude/skills/react-best-practices/rules/_sections.md +0 -46
- package/src/claude/skills/react-best-practices/rules/_template.md +0 -28
- package/src/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
- package/src/claude/skills/react-best-practices/rules/advanced-use-latest.md +0 -49
- package/src/claude/skills/react-best-practices/rules/async-api-routes.md +0 -38
- package/src/claude/skills/react-best-practices/rules/async-defer-await.md +0 -80
- package/src/claude/skills/react-best-practices/rules/async-dependencies.md +0 -36
- package/src/claude/skills/react-best-practices/rules/async-parallel.md +0 -28
- package/src/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
- package/src/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
- package/src/claude/skills/react-best-practices/rules/bundle-conditional.md +0 -31
- package/src/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
- package/src/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
- package/src/claude/skills/react-best-practices/rules/bundle-preload.md +0 -50
- package/src/claude/skills/react-best-practices/rules/client-event-listeners.md +0 -74
- package/src/claude/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
- package/src/claude/skills/react-best-practices/rules/js-batch-dom-css.md +0 -82
- package/src/claude/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
- package/src/claude/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
- package/src/claude/skills/react-best-practices/rules/js-cache-storage.md +0 -70
- package/src/claude/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
- package/src/claude/skills/react-best-practices/rules/js-early-exit.md +0 -50
- package/src/claude/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
- package/src/claude/skills/react-best-practices/rules/js-index-maps.md +0 -37
- package/src/claude/skills/react-best-practices/rules/js-length-check-first.md +0 -49
- package/src/claude/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
- package/src/claude/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
- package/src/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
- package/src/claude/skills/react-best-practices/rules/rendering-activity.md +0 -26
- package/src/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
- package/src/claude/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
- package/src/claude/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
- package/src/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
- package/src/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
- package/src/claude/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
- package/src/claude/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
- package/src/claude/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
- package/src/claude/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
- package/src/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
- package/src/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
- package/src/claude/skills/react-best-practices/rules/rerender-memo.md +0 -44
- package/src/claude/skills/react-best-practices/rules/rerender-transitions.md +0 -40
- package/src/claude/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
- package/src/claude/skills/react-best-practices/rules/server-cache-lru.md +0 -41
- package/src/claude/skills/react-best-practices/rules/server-cache-react.md +0 -26
- package/src/claude/skills/react-best-practices/rules/server-parallel-fetching.md +0 -79
- package/src/claude/skills/react-best-practices/rules/server-serialization.md +0 -38
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: "Turn a substantial feature idea into a bounded, reviewed plan and executable flat task files, with human decisions at scope, findings, and completion. Use when
|
|
2
|
+
name: cf:specs
|
|
3
|
+
description: "Turn a substantial or risk-elevated feature idea into a bounded, reviewed plan and executable flat task files, with human decisions at scope, findings, and completion. Use when work needs durable coordination or is not eligible for direct work; skip only when a change is clear, isolated, reversible, routine, and likely limited to one or two files."
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "<feature-description>"
|
|
6
6
|
metadata:
|
|
@@ -9,19 +9,23 @@ metadata:
|
|
|
9
9
|
---
|
|
10
10
|
# Specs — process-first planning
|
|
11
11
|
|
|
12
|
-
Quality comes from a short decision process; honesty comes from evidence. Keep
|
|
13
|
-
the human at exactly three gates and let the agent do the work between them.
|
|
14
|
-
The durable output is Markdown that can be read and edited without a compiler.
|
|
12
|
+
Quality comes from a short decision process; honesty comes from evidence. Keep the human at exactly three gates; durable output is editable Markdown.
|
|
15
13
|
|
|
16
|
-
## Step 0 —
|
|
14
|
+
## Step 0 — classify risk before routing
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
likely limited to one or two files. Use this skill when the request crosses
|
|
20
|
-
components, contains a product or architecture choice, has meaningful failure
|
|
21
|
-
risk, or needs several tasks, sessions, or owners.
|
|
16
|
+
Classify material risk before choosing a workflow; user wording never lowers an observed floor.
|
|
22
17
|
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
- `critical`: auth/secrets/privacy; destructive/irreversible work or possible data loss/corruption; money/privilege/safety; production-state mutation.
|
|
19
|
+
- `elevated`: cross-component contracts, compatibility, concurrency, external integration, or installed/runtime behavior.
|
|
20
|
+
- `routine`: only when no elevated or critical signal applies.
|
|
21
|
+
|
|
22
|
+
Work directly only when the cause and change are clear, isolated, reversible,
|
|
23
|
+
`routine`, and likely limited to one or two files. Route unresolved user-owned
|
|
24
|
+
observable choices to C1/C2 first; after they settle, route material competing
|
|
25
|
+
technical designs through Brainstorm. Split three or more independent
|
|
26
|
+
subsystems; otherwise use one Specs packet for any material work that does not qualify for direct work or Brainstorm-only exploration. A subsystem is independent only when its outcome, boundary, and verification/deployment path can move through the lifecycle separately.
|
|
27
|
+
|
|
28
|
+
Do not create a plan merely because documentation mentions this skill; the user must invoke Specs or ask for durable planning.
|
|
25
29
|
|
|
26
30
|
## The three human gates
|
|
27
31
|
|
|
@@ -31,9 +35,7 @@ documentation. The user must invoke Specs or ask for durable planning.
|
|
|
31
35
|
| C2 — Findings | after adversarial review | accept, reject, or revise each deduplicated finding |
|
|
32
36
|
| C3 — Done | after execution | accept completion from current command output and receipts |
|
|
33
37
|
|
|
34
|
-
Ask once at each gate. Do not ask for routine implementation choices between
|
|
35
|
-
the gates. If new evidence invalidates the scope, return to C1 instead of
|
|
36
|
-
silently expanding it.
|
|
38
|
+
Ask once at each gate. Do not ask for routine implementation choices between them. New evidence that invalidates scope returns to C1.
|
|
37
39
|
|
|
38
40
|
## Primary output layout
|
|
39
41
|
|
|
@@ -46,58 +48,51 @@ specs/<feature>/
|
|
|
46
48
|
└── task-02-<slug>.md
|
|
47
49
|
```
|
|
48
50
|
|
|
49
|
-
Task files are flat beside `plan.md`. Do not create a nested task directory.
|
|
50
|
-
Use safe lowercase feature and task slugs. Read
|
|
51
|
-
[`references/templates.md`](references/templates.md) before authoring these
|
|
52
|
-
files.
|
|
51
|
+
Task files are flat beside `plan.md`. Do not create a nested task directory. Use safe lowercase slugs and read [`references/templates.md`](references/templates.md) first.
|
|
53
52
|
|
|
54
53
|
## Flow
|
|
55
54
|
|
|
56
55
|
### 1. Challenge scope, then open C1
|
|
57
56
|
|
|
58
|
-
Inspect the repository before drafting. Answer three questions with current
|
|
59
|
-
`path:line` evidence:
|
|
57
|
+
Inspect the repository before drafting. Answer three questions with current `path:line` evidence:
|
|
60
58
|
|
|
61
59
|
1. What already exists and can be reused?
|
|
62
60
|
2. What is the smallest change set that delivers the requested outcome?
|
|
63
|
-
3. What signals expansion: more than eight touched files, more than two new
|
|
64
|
-
services/classes, or more than three independent work groups?
|
|
61
|
+
3. What signals expansion: more than eight touched files, more than two new services/classes, or three or more independently deliverable subsystems?
|
|
65
62
|
|
|
66
63
|
Present the answers and ask the user to EXPAND, KEEP, or CUT. Record the chosen
|
|
67
64
|
scope and explicit exclusions in `plan.md`.
|
|
68
65
|
|
|
69
66
|
### 2. Write the plan and task packets
|
|
70
67
|
|
|
71
|
-
Keep `plan.md` as the short index: C1 decision, EARS
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
Keep `plan.md` as the short index: C1 decision, EARS criteria, exclusions, and task table. Give every criterion a stable ID mapped by task rows.
|
|
69
|
+
|
|
70
|
+
For a Specs route, persist the canonical `## Coverage profile` from
|
|
71
|
+
`references/templates.md`: one `CP-NN` row per observable outcome; tasks reference IDs instead of copying it.
|
|
74
72
|
|
|
75
|
-
|
|
76
|
-
normally no more than about five owned files, explicit dependencies, measurable
|
|
77
|
-
acceptance, and a runnable verification command. A task must deliver usable
|
|
78
|
-
behavior; do not create preparation-only tasks.
|
|
73
|
+
Each task has one usable outcome, normally at most about five owned files, explicit dependencies, measurable acceptance, and a runnable verification command; no preparation-only tasks.
|
|
79
74
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
75
|
+
Author exact state: `pending` means semantically ready for the dependency-aware queue.
|
|
76
|
+
Use `blocked` while a C1/C2 decision, accepted finding, or `UNKNOWN` closure remains
|
|
77
|
+
open. Dependencies alone do not change `pending`; the resolver queues them. Promote only after current evidence closes every non-dependency blocker; keep pre-execution Receipts empty.
|
|
78
|
+
|
|
79
|
+
`Required proof` is planned, not executed evidence. Unknown command/caller/environment
|
|
80
|
+
reachability blocks `pending`; known unrun proof does not. Missing, failed, or unavailable
|
|
81
|
+
required evidence blocks `done`/C3; levels never promote. Rederive affected CP rows after accepted scope, outcome, criteria, ownership, dependency, risk, or proof deltas, before status.
|
|
82
|
+
Source/static checks prove the written contract, not live-model adherence.
|
|
83
83
|
|
|
84
84
|
### 3. Review adversarially, then open C2
|
|
85
85
|
|
|
86
|
-
Read [`references/review.md`](references/review.md) and run its fresh-context
|
|
87
|
-
review. Every finding needs a reproducible `path:line` citation and a concrete
|
|
88
|
-
failure scenario. Deduplicate, rank, and cap the list at 15.
|
|
86
|
+
Read [`references/review.md`](references/review.md) and run its fresh-context review. Require reproducible `path:line` plus a failure scenario; deduplicate, rank, and cap at 15.
|
|
89
87
|
|
|
90
|
-
Ask the user to accept, reject, or revise each finding
|
|
91
|
-
decisions. After every plan edit, run the consistency sweep across all plan and
|
|
92
|
-
task files. Stop after two paper-review rounds; later findings require runtime
|
|
93
|
-
evidence.
|
|
88
|
+
Ask the user to accept, reject, or revise each finding; apply only accepted decisions. After every edit, sweep all packet files and rederive every status. Dependencies use exact flat task basenames. Stop after two paper rounds; later findings require runtime evidence.
|
|
94
89
|
|
|
95
90
|
### 4. Execute one task at a time
|
|
96
91
|
|
|
97
|
-
An implementation workflow owns execution. It selects one unblocked task
|
|
98
|
-
changes its single `Status:` field to `in_progress`, respects
|
|
99
|
-
the task's verification, and appends a real inline `## Receipt`
|
|
100
|
-
command finishes.
|
|
92
|
+
An implementation workflow owns execution. It selects one unblocked task with
|
|
93
|
+
`Status: pending`, changes its single `Status:` field to `in_progress`, respects
|
|
94
|
+
owned paths, runs the task's verification, and appends a real inline `## Receipt`
|
|
95
|
+
only after the command finishes.
|
|
101
96
|
|
|
102
97
|
Parallel work is allowed only for tasks with disjoint write ownership and
|
|
103
98
|
satisfied dependencies. One file has one writer in a wave. The controller is
|
|
@@ -119,19 +114,13 @@ it does not invent product approval, review independence, or runtime coverage.
|
|
|
119
114
|
1. **A1 — Scope once.** Raise scope pressure at C1; reopen only with new proof.
|
|
120
115
|
2. **A2 — Small packets.** One task, one outcome, one owner, one proof command.
|
|
121
116
|
3. **A3 — One fact, one home.** Reference decisions; never copy mutable lists.
|
|
122
|
-
4. **A4 — Files are state.**
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
ownership, dependencies, criteria IDs, and copied prose across every file.
|
|
130
|
-
8. **B4 — Stop paper churn.** Two pre-code review rounds maximum; later claims
|
|
131
|
-
need runtime evidence.
|
|
132
|
-
9. **C1 — Done is derived.** Status follows fresh proof, never confidence.
|
|
133
|
-
10. **C2 — Rules pay rent.** Add a rule or machine check only when it prevents a
|
|
134
|
-
cited real incident; reassess rules when the primary model changes.
|
|
117
|
+
4. **A4 — Files are state.** Markdown is canonical; indexes are disposable.
|
|
118
|
+
5. **B1 — Cite the repository.** Use current `path:line` or `[UNVERIFIED]`.
|
|
119
|
+
6. **B2 — Review fresh.** The author does not impersonate the reviewer.
|
|
120
|
+
7. **B3 — Sweep edits.** Reconcile names, decisions, CP rows, ownership, dependencies, criteria, and proof.
|
|
121
|
+
8. **B4 — Stop paper churn.** Two pre-code rounds; later claims need runtime evidence.
|
|
122
|
+
9. **C1 — Derive state.** Status follows fresh blocker and proof evidence.
|
|
123
|
+
10. **C2 — Rules pay rent.** Require a cited failure; reassess for model changes.
|
|
135
124
|
|
|
136
125
|
## Machine boundary
|
|
137
126
|
|
|
@@ -141,6 +130,8 @@ Stop gate revalidates every done task's inline Receipt and provenance. The old
|
|
|
141
130
|
task-scaffold guard remains limited to the older nested layout; flat v3 tasks
|
|
142
131
|
do not invoke that kernel path.
|
|
143
132
|
|
|
133
|
+
The resolver projects exact `Status:` values; it does not infer blockers from prose.
|
|
134
|
+
|
|
144
135
|
These checks are a final safety net, not a substitute for C1-C3 judgment. Do
|
|
145
136
|
not add a new schema, approval field, readiness bit, or review state to make the
|
|
146
137
|
Markdown look more authoritative.
|
|
@@ -15,6 +15,7 @@ evidence.
|
|
|
15
15
|
list the first ten plus the total.
|
|
16
16
|
- Label an unresolved external or runtime claim `[UNVERIFIED]` and name the
|
|
17
17
|
command, document, or environment that would settle it.
|
|
18
|
+
- Any privacy/security claim names the exact identifier surface at risk, such as an env var, header, path, token class, or field name; generic “sensitive data” is insufficient.
|
|
18
19
|
|
|
19
20
|
## Reviewer roles
|
|
20
21
|
|
|
@@ -25,19 +26,22 @@ evidence.
|
|
|
25
26
|
| Scope Auditor | Is new state scoped to the right lifetime and owner? | constructors, writers, cleanup, and existing equivalents |
|
|
26
27
|
| Contract Verifier | Are all consumers and compatibility surfaces covered? | caller/test/export/config/help inventory |
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
Keep Fact Checker as the baseline. Assign every remaining material CP risk to a
|
|
30
|
+
named reviewer lens; a critical row includes both relevant security-adversary and
|
|
31
|
+
failure-mode coverage, and nonmaterial lenses are not added. Scale reviewer count
|
|
32
|
+
to independent work groups:
|
|
29
33
|
|
|
30
34
|
| Groups | Reviewers | Roles | Claim budget |
|
|
31
35
|
|---|---:|---|---:|
|
|
32
|
-
| 1-2 | 2 | Fact Checker plus
|
|
33
|
-
| 3-5 | 3 | Fact Checker
|
|
34
|
-
| 6+ | 4 | all
|
|
36
|
+
| 1-2 | 2 | Fact Checker plus all matching material lenses | about 5 per group |
|
|
37
|
+
| 3-5 | 3 | Fact Checker plus all matching material lenses | about 10 per group |
|
|
38
|
+
| 6+ | 4 | Fact Checker plus all matching material lenses | at least 15 total |
|
|
35
39
|
|
|
36
|
-
|
|
40
|
+
Reviewer count is fixed by the table, not lens count. Give each reviewer a distinct primary lens; when material lenses exceed reviewers, combine related named lenses on one reviewer and keep every material lens assigned.
|
|
37
41
|
|
|
38
42
|
## B2 — fresh-context red team
|
|
39
43
|
|
|
40
|
-
Use reviewers that did not author the plan and
|
|
44
|
+
Use reviewers that did not author the plan and assign these lenses from affected CP rows:
|
|
41
45
|
|
|
42
46
|
- **Security adversary:** authorization bypass, injection, secret exposure,
|
|
43
47
|
unsafe path and trust-boundary transitions.
|
|
@@ -51,6 +55,7 @@ Use reviewers that did not author the plan and give each one a distinct lens:
|
|
|
51
55
|
Prompt them to break the plan. For every finding require: severity, exact plan
|
|
52
56
|
location, concrete counterexample, repository evidence, and the smallest repair.
|
|
53
57
|
Ignore style-only feedback.
|
|
58
|
+
Run mutation or destructive negative controls only on disposable copies below a verified temporary root, never tracked worktree or canonical source bytes.
|
|
54
59
|
|
|
55
60
|
## Four red-team lenses
|
|
56
61
|
|
|
@@ -81,13 +86,26 @@ Present C2 as a table:
|
|
|
81
86
|
The user chooses accept, reject, or revise. Do not apply findings before that
|
|
82
87
|
decision. Record the result in the plan review log.
|
|
83
88
|
|
|
89
|
+
## Accepted-repair closure
|
|
90
|
+
|
|
91
|
+
After applying an accepted C2 finding, a fresh-context closure pass records and
|
|
92
|
+
freshly replays its original counterexample after the repair under this exact review-log header:
|
|
93
|
+
|
|
94
|
+
| ID | Decision | Original counterexample | Repaired at | Proved at | Replay | Closure |
|
|
95
|
+
|---|---|---|---|---|---|---|
|
|
96
|
+
|
|
97
|
+
`Repaired at` cites the repair edit; `Proved at` must cite distinct evidence from the fresh replay, never the repair-edit citation.
|
|
98
|
+
An accepted finding transitions `accepted → repaired → PASS|FAIL|UNKNOWN`.
|
|
99
|
+
Only `PASS` closes it; `FAIL` remains open for the remaining paper-review round; `UNKNOWN` blocks implementation handoff.
|
|
100
|
+
A repair that adds user semantics or scope returns to C1.
|
|
101
|
+
|
|
84
102
|
## B3 — consistency sweep
|
|
85
103
|
|
|
86
104
|
After any accepted finding or user edit:
|
|
87
105
|
|
|
88
106
|
1. Reread every file in `specs/<feature>/`.
|
|
89
|
-
2. List deltas
|
|
90
|
-
|
|
107
|
+
2. List accepted deltas; rederive affected CP rows using the canonical delta list
|
|
108
|
+
in the templates before task status.
|
|
91
109
|
3. Search every delta and its old spelling across the whole feature packet.
|
|
92
110
|
4. Reconcile the plan table, task details, examples, acceptance mapping, and
|
|
93
111
|
verification commands.
|
|
@@ -16,6 +16,7 @@ Keep the plan short enough to scan as one index, normally under 100 lines.
|
|
|
16
16
|
|
|
17
17
|
```markdown
|
|
18
18
|
# <Feature name>
|
|
19
|
+
Specs-Contract: process-first-ready-v1
|
|
19
20
|
|
|
20
21
|
## Scope decision (C1 — YYYY-MM-DD)
|
|
21
22
|
- Existing: <reusable code with path:line>
|
|
@@ -26,6 +27,11 @@ Keep the plan short enough to scan as one index, normally under 100 lines.
|
|
|
26
27
|
## Out of scope
|
|
27
28
|
- <deliberate exclusion>
|
|
28
29
|
|
|
30
|
+
## Coverage profile
|
|
31
|
+
| ID | Outcome | Change kinds | Material surfaces | Ambiguity/action | Risk/evidence | Required proof |
|
|
32
|
+
|---|---|---|---|---|---|---|
|
|
33
|
+
| CP-01 | <externally observable outcome> | <all kinds> | <all material surfaces> | <state + action> | <level + evidence> | <source/installed/live set> |
|
|
34
|
+
|
|
29
35
|
## Acceptance criteria
|
|
30
36
|
| ID | EARS criterion | Proof |
|
|
31
37
|
|---|---|---|
|
|
@@ -34,7 +40,7 @@ Keep the plan short enough to scan as one index, normally under 100 lines.
|
|
|
34
40
|
## Tasks
|
|
35
41
|
| # | Task | Criteria | Primary ownership | Dependencies | Status |
|
|
36
42
|
|---|---|---|---|---|---|
|
|
37
|
-
| 01 | <one outcome> | AC-01 | `src/example.ts` | - |
|
|
43
|
+
| 01 | <one outcome> | AC-01 | `src/example.ts` | - | blocked |
|
|
38
44
|
|
|
39
45
|
## Review log
|
|
40
46
|
- Round 1: <findings accepted/rejected/revised>; sweep <result>.
|
|
@@ -50,7 +56,7 @@ Keep one exact `Status:` field. The task file is one owner's packet.
|
|
|
50
56
|
````markdown
|
|
51
57
|
# Task NN — <one observable outcome>
|
|
52
58
|
|
|
53
|
-
Status:
|
|
59
|
+
Status: blocked
|
|
54
60
|
|
|
55
61
|
## Outcome
|
|
56
62
|
<What becomes true when this task succeeds.>
|
|
@@ -59,6 +65,9 @@ Status: pending
|
|
|
59
65
|
- In: <exact behavior>
|
|
60
66
|
- Out: <nearby behavior deliberately excluded>
|
|
61
67
|
|
|
68
|
+
## Coverage
|
|
69
|
+
- <exact `CP-NN` IDs owned by this task>
|
|
70
|
+
|
|
62
71
|
## Ownership
|
|
63
72
|
- Modify: `src/a.ts`
|
|
64
73
|
- Create: `test/a.test.ts`
|
|
@@ -68,18 +77,40 @@ Status: pending
|
|
|
68
77
|
- AC-01: <task-local measurable condition>
|
|
69
78
|
|
|
70
79
|
## Dependencies
|
|
71
|
-
- <task
|
|
80
|
+
- <exact `task-NN-*.md` basename or `none`; one bullet per dependency>
|
|
72
81
|
|
|
73
82
|
## Verification Plan
|
|
74
83
|
- Command: `<exact runnable command>`
|
|
75
|
-
-
|
|
76
|
-
- Reachability: <
|
|
77
|
-
-
|
|
84
|
+
- Named probe: <existing concrete probe/test/hook ID; never only a suite label>
|
|
85
|
+
- Reachability: <known command/caller/environment per required level; `UNKNOWN` only when the path cannot yet be established>
|
|
86
|
+
- Oracle: <externally observable success or failure>
|
|
87
|
+
- Counterexample: <material alternative behavior that must make this proof fail>
|
|
88
|
+
- Artifacts: <required artifact path plus digest algorithm/comparison rule, or explicitly ephemeral with cleanup rule>
|
|
78
89
|
|
|
79
90
|
## Receipt
|
|
80
91
|
<!-- Fill only after execution; see canonical form below. -->
|
|
81
92
|
````
|
|
82
93
|
|
|
94
|
+
Trace `Command → Named probe → Reachability → Oracle`. Aggregate suites name the
|
|
95
|
+
owning concrete probe. `Required proof` is a planned level set, not execution
|
|
96
|
+
evidence: known but unrun proof may be `pending`; `UNKNOWN` reachability blocks
|
|
97
|
+
`pending`; missing, failed, or unavailable required evidence blocks `done`/C3.
|
|
98
|
+
Levels stay separate and never promote one another. Run mutation or destructive
|
|
99
|
+
negative controls only on disposable copies under a verified temporary root,
|
|
100
|
+
never tracked worktree or canonical source bytes.
|
|
101
|
+
For every required level in each referenced CP row, map its named probe and
|
|
102
|
+
reachability here; one command may own several explicitly named level probes.
|
|
103
|
+
|
|
104
|
+
## Status matrix
|
|
105
|
+
|
|
106
|
+
| Status condition | Persisted state |
|
|
107
|
+
|---|---|
|
|
108
|
+
| C1/C2 decision open | `blocked` |
|
|
109
|
+
| accepted finding open or `UNKNOWN` reachability | `blocked` |
|
|
110
|
+
| every non-dependency blocker closed | `pending` |
|
|
111
|
+
| named task dependency not done | keep `pending`; queue gates it |
|
|
112
|
+
Use only direct-child task basenames or `none` under `## Dependencies`; keep `## Receipt` empty until execution produces canonical proof.
|
|
113
|
+
|
|
83
114
|
## Canonical inline Receipt
|
|
84
115
|
|
|
85
116
|
The completed task keeps this section at the end of the same file. Derive Base
|
|
@@ -119,38 +150,52 @@ Avoid implementation detail unless it is a user-approved contract. Replace
|
|
|
119
150
|
|
|
120
151
|
## Example Mapping rule
|
|
121
152
|
|
|
122
|
-
|
|
123
|
-
C2; do not guess. When a rule is ambiguous, add two or three examples:
|
|
153
|
+
Classify ambiguity in every affected CP row:
|
|
124
154
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
```
|
|
155
|
+
| State | Required action |
|
|
156
|
+
|---|---|
|
|
157
|
+
| `none` | proceed |
|
|
158
|
+
| `examples-needed` | add two or three examples only for an already decided rule; promote to `decision-needed` if an example changes observable behavior |
|
|
159
|
+
| `decision-needed` | ask the user at C1/C2 and keep affected tasks blocked |
|
|
160
|
+
| `design-needed` | after user-owned decisions settle, route material competing technical designs through Brainstorm |
|
|
132
161
|
|
|
133
|
-
|
|
162
|
+
Do not let examples choose a product outcome: retention of 30 versus 90 days is
|
|
163
|
+
`decision-needed`. Keep examples only until they clarify the decided rule.
|
|
164
|
+
|
|
165
|
+
## No-invention and conditional boundary contracts
|
|
166
|
+
|
|
167
|
+
Before implementation handoff, apply the **no-invention gate**: if two implementations conform to the packet text yet can produce different externally observable output, state, error, security, or compatibility behavior, surface the missing choice as an explicit C1 or C2 question and block handoff.
|
|
168
|
+
|
|
169
|
+
For a Specs route, `plan.md` owns one `## Coverage profile` row per externally observable outcome; direct and Brainstorm-only routes do not persist it. Change kinds are multi-valued (`add`, `modify`, `fix`, `refactor`, `remove`, `migrate`, `integrate`), and unfamiliar kinds or surfaces use `other:<verbatim>` rather than disappearing. Each task references its CP IDs; authoring, review, edge, and proof obligations union only inside affected rows/tasks. Rederive affected CP rows after any accepted scope, outcome, criteria, ownership, dependency, risk, or proof delta before task status.
|
|
170
|
+
|
|
171
|
+
A boundary is material when the task creates, changes, or depends on it and a different choice changes an external observation, security, durable data, compatibility, or proof reachability. Require only the matching material row; omit nonmaterial categories.
|
|
172
|
+
For every required row, name each listed choice exactly; labels such as “JSON”, “local path”, “locked”, or “timestamped” alone remain unresolved.
|
|
173
|
+
|
|
174
|
+
| Boundary | Required contract when material |
|
|
175
|
+
|---|---|
|
|
176
|
+
| Interaction/UI | entry journey; visible/loading/empty/error states; input/focus/keyboard; accessibility; responsive/native/device behavior |
|
|
177
|
+
| API/CLI | entrypoint/route or command grammar; identity/auth; input/default/normalization; success output; error/status/exit; duplicate/retry/idempotency; compatibility |
|
|
178
|
+
| Data/schema | authority/storage/transaction; version; exact keys/nesting/types; required/optional; enum/format/bounds/cardinality; unknown-field behavior; compatibility/migration |
|
|
179
|
+
| Async/state | initial/terminal states; event + guard + effect + next + error; ordering/concurrency; duplicate/retry; writer/lock acquire/contention/release; cancellation; rollback/recovery |
|
|
180
|
+
| Filesystem/security | authoritative root; trusted/untrusted segment grammar; lexical + canonical containment and symlink policy; flags/mode; temp/rename/fsync; lock/stale reclaim; crash cleanup |
|
|
181
|
+
| Runtime/deploy | config/env/flags; registration/packaging; OS/arch; rollout/rollback; health/logging; operator recovery |
|
|
182
|
+
| Time/retention | clock source; unit/precision/timezone; endpoints and inclusion/comparator; anomaly behavior; expiry/purge/recovery |
|
|
183
|
+
| AI/model | provider/model/prompt/tool schema; nondeterminism/bounds; safety/privacy; fallback; cost/token limit; eval oracle |
|
|
184
|
+
| Integration/proof | caller; export/registration; packaging/config; native path/consumer; proof level (`source`/`installed`/`live`); observable failure oracle |
|
|
134
185
|
|
|
135
186
|
## Twelve edge-case dimensions
|
|
136
187
|
|
|
137
188
|
For each material boundary, select relevant dimensions rather than filling a
|
|
138
189
|
ceremonial matrix:
|
|
139
190
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
| Failure | timeout, exception, nonzero exit |
|
|
149
|
-
| Recovery | retry, resume, rollback, cleanup |
|
|
150
|
-
| Persistence | partial write, corruption, migration |
|
|
151
|
-
| Integration | caller, registration, packaging, reachability |
|
|
152
|
-
| Security/privacy | injection, traversal, secret exposure |
|
|
153
|
-
| Observability/proof | logs, artifact, negative path, provenance |
|
|
191
|
+
- Input shape, identity, state, order: malformed/duplicate/bounds, wrong actor,
|
|
192
|
+
partial/stale state, replay/reordering.
|
|
193
|
+
- Concurrency, dependency, failure, recovery: races/cancellation, version drift,
|
|
194
|
+
timeout/nonzero exit, retry/rollback/cleanup.
|
|
195
|
+
- Persistence, integration, security/privacy, observability/proof: partial
|
|
196
|
+
writes, registration/reachability, traversal/secrets, artifacts/provenance.
|
|
197
|
+
|
|
198
|
+
`Crash` means abrupt unhandled termination before the claimed catch point; a catchable failure returns/raises an error or exits nonzero. Never use them interchangeably.
|
|
154
199
|
|
|
155
200
|
Turn a discovered risk into an EARS criterion, a task acceptance item, or a
|
|
156
201
|
verification probe. Do not duplicate it across all three.
|
|
@@ -165,7 +210,7 @@ Before C2 confirm:
|
|
|
165
210
|
- dependencies are acyclic and refer to real task numbers;
|
|
166
211
|
- commands are runnable from the named work context;
|
|
167
212
|
- negative, recovery, and reachability probes exist where risk requires them;
|
|
168
|
-
-
|
|
213
|
+
- every ambiguity follows its required action; examples only clarify decided rules;
|
|
169
214
|
- the latest consistency sweep reports zero unresolved contradictions.
|
|
170
215
|
|
|
171
216
|
Stop expanding when a fresh reviewer finds no new material failure with new
|
|
@@ -8,11 +8,11 @@ Research exists only because this uncertainty can change requirements or design.
|
|
|
8
8
|
|
|
9
9
|
## Evidence Summary
|
|
10
10
|
|
|
11
|
-
<!--
|
|
11
|
+
<!-- Keep the mandatory H2 headings in this exact order. Record each material claim with: claim; URL or repository path:line; authority; date/version; project applicability; confirmed|inferred|unresolved. For comparisons include ranked fit, decisive tradeoffs, contradictions, and limits. -->
|
|
12
12
|
|
|
13
13
|
## Decision
|
|
14
14
|
|
|
15
|
-
<!-- State the selected decision and
|
|
15
|
+
<!-- State the selected decision, research depth, and decisive evidence; if evidence cannot choose safely, state unresolved and name what would settle it. -->
|
|
16
16
|
|
|
17
17
|
## Remaining Gaps
|
|
18
18
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: cf:sync
|
|
3
3
|
description: "Synchronize process-first task Status and inline Receipts without inventing proof; also preserves existing legacy Specs state."
|
|
4
4
|
user-invocable: true
|
|
5
5
|
when_to_use: "Invoke after implementation or verification changes a task's real state, or to audit a feature packet for drift."
|
|
@@ -19,11 +19,11 @@ state. Never infer proof, approval, review independence, or product readiness.
|
|
|
19
19
|
## Commands
|
|
20
20
|
|
|
21
21
|
```text
|
|
22
|
-
/
|
|
23
|
-
/
|
|
24
|
-
/
|
|
25
|
-
/
|
|
26
|
-
/
|
|
22
|
+
/cf:sync <feature> <task-NN-slug.md> in_progress
|
|
23
|
+
/cf:sync <feature> <task-NN-slug.md> blocked "reason"
|
|
24
|
+
/cf:sync <feature> <task-NN-slug.md> done
|
|
25
|
+
/cf:sync <feature> <task-NN-slug.md> sync-finalize
|
|
26
|
+
/cf:sync audit <feature>
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
Resolve one regular direct-child task inside `specs/<feature>/`. Reject path
|
|
@@ -22,7 +22,7 @@ to change one task state.
|
|
|
22
22
|
changes; retain the stale receipt only when clearly labelled non-authoritative.
|
|
23
23
|
|
|
24
24
|
For Flash, keep `Status: in_progress`, `FLASH_UNVERIFIED`, and blocker
|
|
25
|
-
`awaiting /
|
|
25
|
+
`awaiting /cf:test <feature>`. Only sync-finalize with fresh canonical proof
|
|
26
26
|
may replace that marker and set done.
|
|
27
27
|
|
|
28
28
|
## Receipt update
|