@namewta/speculo 1.0.22 → 2.0.1
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 +31 -100
- package/THIRD-PARTY-NOTICES.md +69 -0
- package/dist/src/agent-files.js +9 -36
- package/dist/src/agent-files.js.map +1 -1
- package/dist/src/agent-skills.d.ts +22 -48
- package/dist/src/agent-skills.js +146 -508
- package/dist/src/agent-skills.js.map +1 -1
- package/dist/src/assets.d.ts +21 -0
- package/dist/src/assets.js +111 -0
- package/dist/src/assets.js.map +1 -0
- package/dist/src/cli.js +10 -11
- package/dist/src/cli.js.map +1 -1
- package/dist/src/coordination.d.ts +23 -0
- package/dist/src/coordination.js +60 -0
- package/dist/src/coordination.js.map +1 -0
- package/dist/src/doctor.js +39 -20
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.js +28 -28
- package/dist/src/index.js.map +1 -1
- package/dist/src/media-state.d.ts +2 -0
- package/dist/src/media-state.js +52 -0
- package/dist/src/media-state.js.map +1 -0
- package/dist/src/paths.d.ts +17 -4
- package/dist/src/paths.js +103 -17
- package/dist/src/paths.js.map +1 -1
- package/dist/src/refresh.d.ts +16 -2
- package/dist/src/refresh.js +66 -85
- package/dist/src/refresh.js.map +1 -1
- package/dist/src/runtime-entry.d.ts +4 -0
- package/dist/src/runtime-entry.js +5 -0
- package/dist/src/runtime-entry.js.map +1 -0
- package/dist/src/specdev-artifacts.d.ts +77 -0
- package/dist/src/specdev-artifacts.js +323 -0
- package/dist/src/specdev-artifacts.js.map +1 -0
- package/dist/src/structured.d.ts +1 -7
- package/dist/src/structured.js +20 -242
- package/dist/src/structured.js.map +1 -1
- package/dist/src/transaction.d.ts +3 -10
- package/dist/src/transaction.js +94 -176
- package/dist/src/transaction.js.map +1 -1
- package/dist/src/workflows.js +25 -87
- package/dist/src/workflows.js.map +1 -1
- package/package.json +19 -9
- package/template/.speculo/README.md +24 -27
- package/template/.speculo/refresh-contract.json +4 -6
- package/template/.speculo/workspace.json +10 -7
- package/template/AGENTS.md +8 -5
- package/template/canonical/README.md +6 -0
- package/template/canonical/canonical-learning-lesson.md +116 -0
- package/template/canonical/canonical-learning-question.md +185 -0
- package/template/canonical/canonical-media-content.md +50 -0
- package/template/canonical/canonical-media-operations.md +53 -0
- package/template/canonical/canonical-media-video.md +48 -0
- package/template/canonical/canonical-media-visual.md +94 -0
- package/template/canonical/canonical-specdev-goal-plan.md +2927 -864
- package/template/canonical/canonical-specdev-grill-with-docs.md +2559 -421
- package/template/canonical/canonical-specdev-spec.md +2398 -321
- package/template/canonical/canonical-specdev-tickets.md +2392 -543
- package/template/canonical/canonical-specdev-wayfinder.md +2897 -463
- package/template/commands/archive-and-consolidate/COMMAND.md +30 -0
- package/template/commands/docs-sync/COMMAND.md +25 -0
- package/template/commands/docs-sync/assets/agents-template.md +19 -0
- package/template/commands/docs-sync/assets/report-template.md +32 -0
- package/template/commands/docs-sync/references/agents-contract.md +27 -0
- package/template/commands/docs-sync/references/changelog-contract.md +39 -0
- package/template/commands/docs-sync/references/git-state-contract.md +39 -0
- package/template/commands/docs-sync/references/handbook-discovery.md +11 -0
- package/template/commands/docs-sync/references/operation-contract.md +62 -0
- package/template/commands/docs-sync/references/readme-contract.md +24 -0
- package/template/commands/docs-sync/references/workflow-scope-contract.md +32 -0
- package/template/commands/engineering-standards-builder/COMMAND.md +163 -0
- package/template/commands/engineering-standards-builder/manifest.txt +118 -0
- package/template/commands/engineering-standards-builder/scripts/validate-builder.mjs +268 -0
- package/template/commands/git-history-squash/COMMAND.md +72 -0
- package/template/commands/git-history-squash/references/operation-contract.md +99 -0
- package/template/commands/git-history-squash/references/rewrite-contract.md +127 -0
- package/template/commands/git-history-squash/scripts/git-history-squash.mjs +1210 -0
- package/template/commands/git-repository-audit/COMMAND.md +80 -0
- package/template/commands/handoff/COMMAND.md +61 -0
- package/template/commands/manifest.json +15 -0
- package/template/commands/retro/COMMAND.md +72 -0
- package/template/commands/source-code-zip/COMMAND.md +58 -0
- package/template/commands/status/COMMAND.md +14 -0
- package/template/commands/upstream-fork-sync/COMMAND.md +85 -0
- package/template/commands/upstream-fork-sync/references/report-contract.md +40 -0
- package/template/commands/upstream-fork-sync/references/repository-contract.md +54 -0
- package/template/commands/upstream-fork-sync/references/state-schema.md +55 -0
- package/template/lib/design-validators.mjs +5460 -0
- package/template/lib/legacy-status-validator.cjs +3238 -0
- package/template/lib/speculo-runtime.mjs +7949 -0
- package/template/references/coordination/coordination-contract.md +50 -0
- package/template/references/coordination/exchange/external-web.md +132 -0
- package/template/references/coordination/exchange/source-package.md +239 -0
- package/template/references/coordination/modes/cli.md +11 -0
- package/template/references/coordination/modes/herdr.md +12 -0
- package/template/references/coordination/modes/orca.md +13 -0
- package/template/references/coordination/project-facts.example.json +5 -0
- package/template/references/coordination/project-facts.schema.json +113 -0
- package/template/references/coordination/result-and-recovery.md +36 -0
- package/template/references/coordination/task-brief.md +43 -0
- package/template/references/retrospective/references/issue-drafting-sop.md +69 -0
- package/template/references/retrospective/retrospective-contract.md +37 -0
- package/template/references/writing-for-agents/GLOSSARY.md +201 -0
- package/template/references/writing-for-agents/references/current-facts-docs.md +35 -0
- package/template/references/writing-for-agents/references/document-contract.md +25 -0
- package/template/references/writing-for-agents/writing-contract.md +17 -0
- package/template/workflows/learning/SKILL.md +40 -0
- package/template/workflows/learning/common/rules/artifact-layouts.md +5 -0
- package/template/workflows/learning/common/rules/domain-runtime.md +94 -0
- package/template/workflows/learning/common/rules/inquiry-depth-policy.md +31 -0
- package/template/workflows/learning/common/rules/lesson-contract.md +9 -1
- package/template/workflows/learning/common/rules/portable-learning-runtime.md +95 -0
- package/template/workflows/learning/common/rules/production-inquiry.md +24 -0
- package/template/workflows/learning/common/rules/question-map-contract.md +28 -0
- package/template/workflows/learning/common/rules/questioning-policy.md +12 -2
- package/template/workflows/learning/common/rules/teaching-policy.md +4 -0
- package/template/workflows/learning/common/skills/socratic-questioning/SKILL.md +2 -2
- package/template/workflows/learning/common/skills/topic-synthesis/SKILL.md +2 -0
- package/template/workflows/learning/common/tools/validate-learning.mjs +38 -50
- package/template/workflows/learning/learning-a-archive/SKILL.md +32 -0
- package/template/workflows/learning/learning-a-assess-and-plan/SKILL.md +40 -0
- package/template/workflows/learning/learning-c-consolidate/SKILL.md +40 -0
- package/template/workflows/learning/learning-g-goal/SKILL.md +63 -0
- package/template/workflows/learning/learning-g-goal/assets/goal-plan-template.md +310 -0
- package/template/workflows/learning/learning-g-goal/assets/probe-template.md +64 -0
- package/template/workflows/learning/learning-g-goal/assets/progress-template.md +19 -0
- package/template/workflows/learning/learning-g-goal/references/coverage-bar.md +36 -0
- package/template/workflows/learning/learning-g-goal/references/external-goal-runner.md +54 -0
- package/template/workflows/learning/learning-g-goal/references/lead-orchestration.md +52 -0
- package/template/workflows/learning/learning-g-goal/references/orchestration-protocol.md +26 -0
- package/template/workflows/learning/learning-g-goal/references/planning-modes.md +19 -0
- package/template/workflows/learning/learning-h-homework/SKILL.md +38 -0
- package/template/workflows/learning/learning-i-init-setup/SKILL.md +34 -0
- package/template/workflows/learning/learning-l-lesson/SKILL.md +43 -0
- package/template/workflows/learning/learning-l-lesson/assets/lesson-template.md +55 -0
- package/template/workflows/learning/learning-q-question/SKILL.md +48 -0
- package/template/workflows/learning/learning-q-question/assets/exploration-template.md +28 -0
- package/template/workflows/learning/learning-q-question/assets/inquiry-template.md +75 -0
- package/template/workflows/learning/learning-q-question/assets/question-map-template.json +4 -0
- package/template/workflows/learning/learning-q-question/references/exploration-mode.md +35 -0
- package/template/workflows/learning/learning-q-question/references/tutor-mode.md +31 -0
- package/template/workflows/learning/learning-q-question/scripts/validate-exploration.mjs +190 -0
- package/template/workflows/learning/learning-r-review/SKILL.md +37 -0
- package/template/workflows/learning/manifest.json +103 -1
- package/template/workflows/media/SKILL.md +37 -0
- package/template/workflows/media/_state/archive/.gitkeep +1 -0
- package/template/workflows/media/_state/changes/.gitkeep +1 -0
- package/template/workflows/media/_state/context/INDEX.md +6 -0
- package/template/workflows/media/_state/status.json +6 -0
- package/template/workflows/media/common/rules/activation-and-memory.md +7 -0
- package/template/workflows/media/common/rules/artifact-contract.md +17 -0
- package/template/workflows/media/common/rules/content-method.md +18 -0
- package/template/workflows/media/common/rules/domain-runtime.md +66 -0
- package/template/workflows/media/common/rules/external-skills.md +33 -0
- package/template/workflows/media/common/rules/operations-method.md +21 -0
- package/template/workflows/media/common/rules/safety-and-recovery.md +15 -0
- package/template/workflows/media/common/rules/video-method.md +16 -0
- package/template/workflows/media/common/rules/visual-method.md +16 -0
- package/template/workflows/media/common/schemas/change-status.schema.json +75 -0
- package/template/workflows/media/common/schemas/status.schema.json +35 -0
- package/template/workflows/media/common/tests/media-tools.test.mjs +91 -0
- package/template/workflows/media/common/tools/media-tools.mjs +235 -0
- package/template/workflows/media/common/tools/validate-media.mjs +57 -0
- package/template/workflows/media/manifest.json +126 -0
- package/template/workflows/media/media-b-brief/SKILL.md +19 -0
- package/template/workflows/media/media-b-brief/assets/brief-template.json +32 -0
- package/template/workflows/media/media-d-deconstruct/SKILL.md +19 -0
- package/template/workflows/media/media-h-hand-drawn/SKILL.md +19 -0
- package/template/workflows/media/media-h-hand-drawn/references/production.md +9 -0
- package/template/workflows/media/media-h-hand-drawn/references/style-catalog.json +226 -0
- package/template/workflows/media/media-i-init-setup/SKILL.md +19 -0
- package/template/workflows/media/media-p-publish-draft/SKILL.md +19 -0
- package/template/workflows/media/media-p-publish-draft/assets/draft-request-template.json +14 -0
- package/template/workflows/media/media-r-retro/SKILL.md +19 -0
- package/template/workflows/media/media-r-retro/assets/retro-template.md +13 -0
- package/template/workflows/media/media-v-video/SKILL.md +19 -0
- package/template/workflows/media/media-v-video/assets/review-template.json +27 -0
- package/template/workflows/media/media-v-video/assets/shot-plan-template.json +18 -0
- package/template/workflows/media/media-v-video/references/production.md +9 -0
- package/template/workflows/media/media-v-video/scripts/render_preview.py +168 -0
- package/template/workflows/media/runtime-contract.json +10 -0
- package/template/workflows/ops/SKILL.md +37 -0
- package/template/workflows/ops/common/WORKSPACE-USAGE.md +2 -2
- package/template/workflows/ops/common/rules/domain-runtime.md +54 -0
- package/template/workflows/ops/common/tests/test_ops.mjs +12 -10
- package/template/workflows/ops/common/tests/test_ops_bootstrap.mjs +10 -10
- package/template/workflows/ops/common/tests/test_ops_onboarding.mjs +2 -2
- package/template/workflows/ops/common/tests/test_ops_workspace.mjs +6 -6
- package/template/workflows/ops/common/tools/opslib/workspace.mjs +2 -2
- package/template/workflows/ops/common/tools/validate-ops.mjs +4 -4
- package/template/workflows/ops/manifest.json +17 -2
- package/template/workflows/ops/ops-d-project-deploy/SKILL.md +41 -0
- package/template/workflows/ops/ops-h-host-manage/SKILL.md +35 -0
- package/template/workflows/ops/ops-i-initialize/SKILL.md +29 -0
- package/template/workflows/ops/ops-s-server-connect/SKILL.md +29 -0
- package/template/workflows/ops/ops-v-inventory-view/SKILL.md +33 -0
- package/template/workflows/person/SKILL.md +32 -0
- package/template/workflows/person/manifest.json +57 -1
- package/template/workflows/person/person-m-mao-zedong-cognitive-os/SKILL.md +43 -0
- package/template/workflows/person/person-m-mao-zedong-cognitive-os/books/README.md +17 -0
- package/template/workflows/person/person-m-mao-zedong-cognitive-os/books/src/SUMMARY.md +231 -0
- package/template/workflows/person/person-m-mao-zedong-cognitive-os/books/src//347/233/256/345/275/225.md +243 -0
- package/template/workflows/person/person-m-mao-zedong-cognitive-os/references/activate.md +83 -0
- package/template/workflows/person/person-m-mao-zedong-cognitive-os/references/deliver.md +116 -0
- package/template/workflows/person/person-m-mao-zedong-cognitive-os/references/diagnose.md +83 -0
- package/template/workflows/person/person-m-mao-zedong-cognitive-os/references/mobilize.md +85 -0
- package/template/workflows/person/person-m-mao-zedong-cognitive-os/references/strategize.md +76 -0
- package/template/workflows/person/person-s-steelman-deliberation/SKILL.md +114 -0
- package/template/workflows/person/person-s-steelman-deliberation/assets/canonical-body.md +518 -0
- package/template/workflows/person/person-s-steelman-deliberation/references/state-and-publication.md +86 -0
- package/template/workflows/person/{S-steelman-deliberation/tools → person-s-steelman-deliberation/scripts}/validate-steelman-change.mjs +0 -0
- package/template/workflows/specdev/SKILL.md +51 -0
- package/template/workflows/specdev/common/README.md +11 -3
- package/template/workflows/specdev/common/rules/activation-and-memory.md +5 -1
- package/template/workflows/specdev/common/rules/adr-format.md +3 -3
- package/template/workflows/specdev/common/rules/agent-experience.md +29 -0
- package/template/workflows/specdev/common/rules/artifact-contract.md +28 -15
- package/template/workflows/specdev/common/rules/change-completion.md +24 -5
- package/template/workflows/specdev/common/rules/codebase-design.md +16 -14
- package/template/workflows/specdev/common/rules/design-contract.md +51 -0
- package/template/workflows/specdev/common/rules/design-it-twice.md +9 -9
- package/template/workflows/specdev/common/rules/design-portability.md +48 -0
- package/template/workflows/specdev/common/rules/deviation-control.md +3 -3
- package/template/workflows/specdev/common/rules/documentation-standard.md +33 -0
- package/template/workflows/specdev/common/rules/domain-modeling.md +1 -1
- package/template/workflows/specdev/common/rules/domain-runtime.md +35 -0
- package/template/workflows/specdev/common/rules/engineering-evidence.md +31 -0
- package/template/workflows/specdev/common/rules/error-handling.md +40 -0
- package/template/workflows/specdev/common/rules/evidence-and-verification.md +17 -1
- package/template/workflows/specdev/common/rules/operating-governance.md +3 -3
- package/template/workflows/specdev/common/rules/parent-implementation-orchestration.md +3 -3
- package/template/workflows/specdev/common/rules/path-ownership.md +5 -5
- package/template/workflows/specdev/common/rules/path-reference-contract.md +15 -6
- package/template/workflows/specdev/common/rules/readiness-and-depth.md +6 -1
- package/template/workflows/specdev/common/rules/test-reliability.md +37 -0
- package/template/workflows/specdev/common/rules/workflow-routing.md +15 -2
- package/template/workflows/specdev/common/rules/workflow-state-and-lifecycle.md +26 -75
- package/template/workflows/specdev/common/schemas/change-design.schema.json +254 -0
- package/template/workflows/specdev/common/schemas/config.schema.json +4 -4
- package/template/workflows/specdev/common/schemas/goal-plan.schema.json +144 -23
- package/template/workflows/specdev/common/schemas/implementation-plan.schema.json +139 -24
- package/template/workflows/specdev/common/schemas/project-design.schema.json +164 -0
- package/template/workflows/specdev/common/schemas/prototype-browser-evidence.schema.json +153 -0
- package/template/workflows/specdev/common/schemas/ticket.schema.json +40 -0
- package/template/workflows/specdev/common/skills/code-review/SKILL.md +12 -6
- package/template/workflows/specdev/common/skills/code-review/references/result-reuse.md +2 -2
- package/template/workflows/specdev/common/skills/code-review/references/reviewer-contracts.md +2 -2
- package/template/workflows/specdev/common/skills/code-review/references/source-discovery.md +3 -1
- package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +1 -1
- package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +1 -1
- package/template/workflows/specdev/common/skills/plan-quality-review/SKILL.md +1 -1
- package/template/workflows/specdev/common/skills/research/SKILL.md +1 -1
- package/template/workflows/specdev/common/tools/README.md +31 -5
- package/template/workflows/specdev/common/tools/change-artifacts.mjs +170 -0
- package/template/workflows/specdev/common/tools/design-artifacts.mjs +277 -0
- package/template/workflows/specdev/common/tools/engineering-evidence.mjs +150 -0
- package/template/workflows/specdev/common/tools/plan-contract.mjs +160 -17
- package/template/workflows/specdev/common/tools/publish-design.mjs +341 -0
- package/template/workflows/specdev/common/tools/review-scope.mjs +125 -0
- package/template/workflows/specdev/common/tools/tests/engineering.test.mjs +265 -0
- package/template/workflows/specdev/common/tools/tests/review-source-files.test.mjs +74 -0
- package/template/workflows/specdev/common/tools/ticket-control.mjs +19 -25
- package/template/workflows/specdev/common/tools/validate-specdev.mjs +292 -503
- package/template/workflows/specdev/manifest.json +52 -3
- package/template/workflows/specdev/runtime-contract.json +6 -6
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/SKILL.md +39 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/assets/archive-plan-template.md +32 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/assets/cleanup-candidate-template.md +69 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/assets/consolidation-plan-template.md +78 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/archive-receipt-contract.md +40 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/archive-rules.md +20 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/cleanup-rules.md +79 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/consolidation-interview.md +67 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/consolidation-rules.md +86 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/design-knowledge-gateway.md +61 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/knowledge-graduation.md +58 -0
- package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/operation-contract.md +48 -0
- package/template/workflows/specdev/specdev-c-code-review/SKILL.md +55 -0
- package/template/workflows/specdev/specdev-c-code-review/assets/code-review-template.md +53 -0
- package/template/workflows/specdev/specdev-c-code-review/references/source-files-review.md +14 -0
- package/template/workflows/specdev/specdev-d-diagnose-bugs/SKILL.md +84 -0
- package/template/workflows/specdev/specdev-d-diagnose-bugs/assets/diagnosis-template.md +72 -0
- package/template/workflows/specdev/specdev-d-diagnose-bugs/references/feedback-loop.md +43 -0
- package/template/workflows/specdev/specdev-d-diagnose-bugs/references/hypothesis-and-instrumentation.md +36 -0
- package/template/workflows/specdev/specdev-d-diagnose-bugs/references/incident-evidence.md +21 -0
- package/template/workflows/specdev/specdev-g-grill-with-docs/SKILL.md +34 -0
- package/template/workflows/specdev/specdev-g-grill-with-docs/references/grilling-protocol.md +30 -0
- package/template/workflows/specdev/specdev-g-grill-with-docs/references/interview-procedure.md +138 -0
- package/template/workflows/specdev/specdev-i-implement/SKILL.md +49 -0
- package/template/workflows/specdev/specdev-i-implement/assets/evidence-template.md +153 -0
- package/template/workflows/specdev/specdev-i-implement/references/documentation-procedure.md +23 -0
- package/template/workflows/specdev/specdev-i-implement/references/execution-preflight.md +51 -0
- package/template/workflows/specdev/specdev-i-implement/references/implementation-procedure.md +170 -0
- package/template/workflows/specdev/specdev-i-implement/references/merge-conflict-protocol.md +21 -0
- package/template/workflows/specdev/specdev-i-implement/references/tdd-mocking.md +23 -0
- package/template/workflows/specdev/specdev-i-implement/references/tdd-rules.md +25 -0
- package/template/workflows/specdev/specdev-i-implement/references/tdd-test-design.md +29 -0
- package/template/workflows/specdev/specdev-i-init-setup/SKILL.md +31 -0
- package/template/workflows/specdev/specdev-i-init-setup/assets/change-readme-template.md +32 -0
- package/template/workflows/specdev/specdev-i-init-setup/assets/config-template.json +31 -0
- package/template/workflows/specdev/specdev-i-init-setup/assets/domain-layout-template.md +29 -0
- package/template/workflows/specdev/specdev-i-init-setup/assets/tracking-template.md +13 -0
- package/template/workflows/specdev/specdev-i-init-setup/references/change-record-examples.md +62 -0
- package/template/workflows/specdev/specdev-i-init-setup/references/first-setup.md +11 -0
- package/template/workflows/specdev/specdev-l-learn-change/SKILL.md +33 -0
- package/template/workflows/specdev/specdev-l-learn-change/references/lesson-format.md +51 -0
- package/template/workflows/specdev/specdev-p-goal-plan/SKILL.md +71 -0
- package/template/workflows/specdev/specdev-p-goal-plan/assets/goal-plan-template.md +150 -0
- package/template/workflows/specdev/specdev-p-goal-plan/assets/lightweight-goal-plan-template.md +21 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/completion-control.md +47 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/goal-lifecycle.md +35 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/goal-tickets-map-template.md +15 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/lead-orchestration.md +44 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/map-control.md +28 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/multi-change-plan.md +126 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/multi-execution-loop.md +31 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/multi-input-readiness.md +25 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/multi-super-dag.md +27 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/orchestration-protocol.md +58 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/planning-modes.md +78 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/replan-and-recovery.md +15 -0
- package/template/workflows/specdev/specdev-p-goal-plan/references/single-change-plan.md +157 -0
- package/template/workflows/specdev/specdev-p-prototype/SKILL.md +56 -0
- package/template/workflows/specdev/specdev-p-prototype/assets/change-design-template.md +68 -0
- package/template/workflows/specdev/specdev-p-prototype/assets/design-package.schema.json +248 -0
- package/template/workflows/specdev/specdev-p-prototype/assets/design-system-template.md +307 -0
- package/template/workflows/specdev/specdev-p-prototype/assets/project-design-template.md +60 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/INDEX.md +50 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/catalog.json +384 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/catalog.schema.json +42 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/color-and-theme.md +65 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/composition.md +39 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/foundations.md +66 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/gallery.html +14 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/gallery.js +55 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/interaction-patterns.md +61 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/product-pattern-index.md +73 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/research-provenance.md +60 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/responsive-and-platforms.md +53 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/style-index.md +47 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/assets/prototypes.css +13 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/assets/prototypes.js +146 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/brand-editorial.html +18 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/brand-editorial.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/commerce-service.html +10 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/commerce-service.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/cross-platform-workspace.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/dense-ide.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/enterprise-data.html +21 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/enterprise-data.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/local-first-content.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/marketing-conversion.html +13 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/marketing-conversion.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/media-first.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/mobile-supervisor.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/monochrome-console.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/responsive-web.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/templates/soft-personal-ai.md +25 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/LICENSE +21 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/README.md +14 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/airbnb/DESIGN.md +545 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/apple/DESIGN.md +562 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/figma/DESIGN.md +578 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/ibm/DESIGN.md +550 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/linear/DESIGN.md +548 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/mintlify/DESIGN.md +852 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/notion/DESIGN.md +821 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/provenance.json +95 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/spotify/DESIGN.md +246 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/stripe/DESIGN.md +487 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/upstream/awesome-design-md/vercel/DESIGN.md +736 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/airbnb.md +27 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/apple.md +27 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/figma.md +27 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/ibm.md +29 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/linear.md +27 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/mintlify.md +27 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/notion.md +27 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/spotify.md +27 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/stripe.md +27 -0
- package/template/workflows/specdev/specdev-p-prototype/design-library/visual-references/vercel.md +29 -0
- package/template/workflows/specdev/specdev-p-prototype/references/detect-existing-style.md +53 -0
- package/template/workflows/specdev/specdev-p-prototype/references/generate-design-package.md +78 -0
- package/template/workflows/specdev/specdev-p-prototype/references/logic-protocol.md +11 -0
- package/template/workflows/specdev/specdev-p-prototype/references/project-preview-protocol.md +9 -0
- package/template/workflows/specdev/specdev-p-prototype/references/style-selection-protocol.md +36 -0
- package/template/workflows/specdev/specdev-p-prototype/scripts/validate-design-package.mjs +133 -0
- package/template/workflows/specdev/specdev-r-retro/SKILL.md +31 -0
- package/template/workflows/specdev/specdev-r-retro/assets/retro-template.md +31 -0
- package/template/workflows/specdev/specdev-r-review-architecture/SKILL.md +104 -0
- package/template/workflows/specdev/specdev-r-review-architecture/assets/architecture-review-template.md +73 -0
- package/template/workflows/specdev/specdev-r-review-architecture/references/performance-review.md +27 -0
- package/template/workflows/specdev/specdev-r-review-architecture/references/proposal-to-ticket.md +13 -0
- package/template/workflows/specdev/specdev-r-review-architecture/references/review-rubric.md +56 -0
- package/template/workflows/specdev/specdev-r-review-architecture/references/selected-design.md +27 -0
- package/template/workflows/specdev/specdev-s-spec/SKILL.md +43 -0
- package/template/workflows/specdev/specdev-s-spec/assets/spec-template.md +99 -0
- package/template/workflows/specdev/specdev-s-spec/references/spec-readiness.md +17 -0
- package/template/workflows/specdev/specdev-t-tickets/SKILL.md +51 -0
- package/template/workflows/specdev/specdev-t-tickets/assets/ticket-template.md +157 -0
- package/template/workflows/specdev/specdev-t-tickets/assets/tickets-map-template.md +102 -0
- package/template/workflows/specdev/specdev-t-tickets/references/decomposition-rules.md +60 -0
- package/template/workflows/specdev/specdev-t-tickets/references/planning-procedure.md +235 -0
- package/template/workflows/specdev/specdev-t-tickets/references/ticket-readiness.md +56 -0
- package/template/workflows/specdev/specdev-t-triage/SKILL.md +58 -0
- package/template/workflows/specdev/specdev-t-triage/assets/capture-template.md +42 -0
- package/template/workflows/specdev/specdev-t-triage/assets/close-comment-template.md +42 -0
- package/template/workflows/specdev/specdev-t-triage/assets/issue-body-template.md +34 -0
- package/template/workflows/specdev/specdev-t-triage/assets/issue-record-template.md +27 -0
- package/template/workflows/specdev/specdev-t-triage/assets/triage-template.md +57 -0
- package/template/workflows/specdev/specdev-t-triage/references/capture-protocol.md +89 -0
- package/template/workflows/specdev/specdev-t-triage/references/ci-security-protocol.md +15 -0
- package/template/workflows/specdev/specdev-t-triage/references/intake-protocol.md +63 -0
- package/template/workflows/specdev/specdev-t-triage/references/issue-pr-policy.md +23 -0
- package/template/workflows/specdev/specdev-t-triage/references/pr-delivery-protocol.md +17 -0
- package/template/workflows/specdev/specdev-t-triage/references/publish-protocol.md +92 -0
- package/template/workflows/specdev/specdev-t-triage/references/queue-protocol.md +7 -0
- package/template/workflows/specdev/specdev-t-triage/references/reconcile-protocol.md +34 -0
- package/template/workflows/specdev/specdev-t-triage/references/release-preflight.md +17 -0
- package/template/workflows/specdev/specdev-t-triage/references/release-protocol.md +16 -0
- package/template/workflows/specdev/specdev-t-triage/references/release-recovery.md +22 -0
- package/template/workflows/specdev/specdev-t-triage/references/remote-operations.md +25 -0
- package/template/workflows/specdev/specdev-t-triage/scripts/capture-status.mjs +126 -0
- package/template/workflows/specdev/specdev-t-triage/scripts/publish-status.mjs +137 -0
- package/template/workflows/specdev/specdev-w-wayfinder/SKILL.md +49 -0
- package/template/workflows/specdev/specdev-w-wayfinder/assets/investigation-ticket-template.md +20 -0
- package/template/workflows/specdev/specdev-w-wayfinder/assets/wayfinder-map-template.md +33 -0
- package/template/workflows/specdev/specdev-w-wayfinder/references/initiative-discovery.md +29 -0
- package/template/workflows/specdev/specdev-w-wayfinder/references/local-tracker-contract.md +33 -0
- package/template/workflows/specdev/specdev-w-wayfinder/references/map-traversal.md +120 -0
- package/scripts/validate-skills.mjs +0 -56
- package/template/commands/archive-and-consolidate.md +0 -72
- package/template/commands/docs-sync.md +0 -28
- package/template/commands/git-history-squash.md +0 -76
- package/template/commands/git-repository-audit.md +0 -83
- package/template/commands/handoff.md +0 -66
- package/template/commands/retro.md +0 -75
- package/template/commands/status.md +0 -17
- package/template/skills/archive-and-consolidate/SKILL.md +0 -175
- package/template/skills/archive-and-consolidate/assets/archive-plan-template.md +0 -35
- package/template/skills/archive-and-consolidate/assets/cleanup-candidate-template.md +0 -69
- package/template/skills/archive-and-consolidate/assets/consolidation-plan-template.md +0 -67
- package/template/skills/archive-and-consolidate/references/archive-rules.md +0 -48
- package/template/skills/archive-and-consolidate/references/cleanup-rules.md +0 -73
- package/template/skills/archive-and-consolidate/references/consolidation-rules.md +0 -69
- package/template/skills/archive-and-consolidate/references/knowledge-graduation.md +0 -53
- package/template/skills/docs-sync/SKILL.md +0 -32
- package/template/skills/docs-sync/assets/report-template.md +0 -46
- package/template/skills/docs-sync/references/agents/agent-writing.md +0 -75
- package/template/skills/docs-sync/references/agents/claude-redirect.md +0 -39
- package/template/skills/docs-sync/references/agents/content-contract.md +0 -213
- package/template/skills/docs-sync/references/agents/evidence-collection.md +0 -184
- package/template/skills/docs-sync/references/agents/manifest-discovery.md +0 -126
- package/template/skills/docs-sync/references/agents/role-classification.md +0 -141
- package/template/skills/docs-sync/references/agents/templates/aggregator-AGENTS.md +0 -69
- package/template/skills/docs-sync/references/agents/templates/capability-module-AGENTS.md +0 -68
- package/template/skills/docs-sync/references/agents/templates/contract-module-AGENTS.md +0 -65
- package/template/skills/docs-sync/references/agents/templates/repo-root-AGENTS.md +0 -71
- package/template/skills/docs-sync/references/agents/templates/runnable-app-AGENTS.md +0 -69
- package/template/skills/docs-sync/references/agents/templates/scripts-docs-AGENTS.md +0 -51
- package/template/skills/docs-sync/references/agents/writing-style.md +0 -145
- package/template/skills/docs-sync/references/agents-contract.md +0 -67
- package/template/skills/docs-sync/references/changelog-contract.md +0 -39
- package/template/skills/docs-sync/references/document-lifecycle-contract.md +0 -40
- package/template/skills/docs-sync/references/git-state-contract.md +0 -67
- package/template/skills/docs-sync/references/mode-contract.md +0 -21
- package/template/skills/docs-sync/references/readme-contract.md +0 -46
- package/template/skills/docs-sync/references/readme-writing-guide.md +0 -294
- package/template/skills/docs-sync/references/workflow-scope-contract.md +0 -52
- package/template/skills/engineering-standards-builder/SKILL.md +0 -161
- package/template/skills/engineering-standards-builder/manifest.txt +0 -118
- package/template/skills/engineering-standards-builder/scripts/validate-builder.mjs +0 -272
- package/template/skills/git-history-squash/SKILL.md +0 -99
- package/template/skills/git-history-squash/references/rewrite-contract.md +0 -123
- package/template/skills/git-history-squash/scripts/git-history-squash.mjs +0 -1171
- package/template/skills/retrospective/SKILL.md +0 -43
- package/template/skills/retrospective/references/issue-drafting-sop.md +0 -69
- package/template/skills/source-code-zip/SKILL.md +0 -54
- package/template/skills/upstream-fork-sync/SKILL.md +0 -82
- package/template/skills/upstream-fork-sync/references/report-contract.md +0 -40
- package/template/skills/upstream-fork-sync/references/repository-contract.md +0 -54
- package/template/skills/upstream-fork-sync/references/state-schema.md +0 -55
- package/template/skills/writing-for-agents/GLOSSARY.md +0 -201
- package/template/skills/writing-for-agents/SKILL.md +0 -22
- package/template/skills/writing-for-agents/agents/openai.yaml +0 -2
- package/template/skills/writing-for-agents/references/document-contract.md +0 -23
- package/template/workflows/learning/A-archive/A-archive.md +0 -31
- package/template/workflows/learning/A-assess-and-plan/A-assess-and-plan.md +0 -39
- package/template/workflows/learning/C-consolidate/C-consolidate.md +0 -39
- package/template/workflows/learning/G-goal/G-goal.md +0 -62
- package/template/workflows/learning/G-goal/goal-plan-template.md +0 -310
- package/template/workflows/learning/G-goal/orchestration-protocol.md +0 -26
- package/template/workflows/learning/G-goal/planning-modes.md +0 -19
- package/template/workflows/learning/G-goal/probe-template.md +0 -62
- package/template/workflows/learning/G-goal/progress-template.md +0 -19
- package/template/workflows/learning/G-goal/references/coverage-bar.md +0 -32
- package/template/workflows/learning/G-goal/references/external-goal-runner.md +0 -54
- package/template/workflows/learning/G-goal/references/lead-orchestration.md +0 -52
- package/template/workflows/learning/H-homework/H-homework.md +0 -37
- package/template/workflows/learning/I-init-setup/I-init-setup.md +0 -33
- package/template/workflows/learning/INDEX.md +0 -26
- package/template/workflows/learning/L-lesson/L-lesson.md +0 -38
- package/template/workflows/learning/L-lesson/lesson-template.md +0 -51
- package/template/workflows/learning/Q-question/Q-question.md +0 -55
- package/template/workflows/learning/Q-question/inquiry-template.md +0 -71
- package/template/workflows/learning/R-review/R-review.md +0 -36
- package/template/workflows/learning/README.md +0 -94
- package/template/workflows/ops/D-project-deploy/D-project-deploy.md +0 -40
- package/template/workflows/ops/H-host-manage/H-host-manage.md +0 -34
- package/template/workflows/ops/I-initialize/I-initialize.md +0 -28
- package/template/workflows/ops/INDEX.md +0 -36
- package/template/workflows/ops/README.md +0 -62
- package/template/workflows/ops/S-server-connect/S-server-connect.md +0 -28
- package/template/workflows/ops/V-inventory-view/V-inventory-view.md +0 -32
- package/template/workflows/person/INDEX.md +0 -15
- package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +0 -42
- package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +0 -81
- package/template/workflows/person/M-mao-zedong-cognitive-os/books/README.md +0 -17
- package/template/workflows/person/M-mao-zedong-cognitive-os/books/src/SUMMARY.md +0 -231
- package/template/workflows/person/M-mao-zedong-cognitive-os/books/src//347/233/256/345/275/225.md +0 -243
- package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +0 -114
- package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +0 -83
- package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +0 -85
- package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +0 -76
- package/template/workflows/person/S-steelman-deliberation/S-steelman-deliberation.md +0 -113
- package/template/workflows/person/S-steelman-deliberation/references/state-and-publication.md +0 -86
- package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +0 -50
- package/template/workflows/specdev/A-archive-and-consolidate/consolidation-interview.md +0 -63
- package/template/workflows/specdev/C-code-review/C-code-review.md +0 -40
- package/template/workflows/specdev/C-code-review/code-review-template.md +0 -46
- package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +0 -77
- package/template/workflows/specdev/D-diagnose-bugs/diagnosis-template.md +0 -68
- package/template/workflows/specdev/D-diagnose-bugs/feedback-loop.md +0 -41
- package/template/workflows/specdev/D-diagnose-bugs/hypothesis-and-instrumentation.md +0 -32
- package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +0 -27
- package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +0 -26
- package/template/workflows/specdev/G-grill-with-docs/references/interview-procedure.md +0 -134
- package/template/workflows/specdev/I-implement/I-implement.md +0 -30
- package/template/workflows/specdev/I-implement/evidence-template.md +0 -141
- package/template/workflows/specdev/I-implement/execution-preflight.md +0 -44
- package/template/workflows/specdev/I-implement/merge-conflict-protocol.md +0 -21
- package/template/workflows/specdev/I-implement/references/implementation-procedure.md +0 -158
- package/template/workflows/specdev/I-implement/tdd-mocking.md +0 -19
- package/template/workflows/specdev/I-implement/tdd-rules.md +0 -21
- package/template/workflows/specdev/I-implement/tdd-test-design.md +0 -25
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +0 -41
- package/template/workflows/specdev/I-init-setup/change-status-template.json +0 -28
- package/template/workflows/specdev/I-init-setup/config-template.json +0 -31
- package/template/workflows/specdev/I-init-setup/domain-layout-template.md +0 -23
- package/template/workflows/specdev/I-init-setup/references/first-setup.md +0 -46
- package/template/workflows/specdev/I-init-setup/status-template.json +0 -6
- package/template/workflows/specdev/I-init-setup/tracking-template.md +0 -13
- package/template/workflows/specdev/INDEX.md +0 -26
- package/template/workflows/specdev/L-learn-change/L-learn-change.md +0 -28
- package/template/workflows/specdev/L-learn-change/references/lesson-format.md +0 -47
- package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +0 -52
- package/template/workflows/specdev/P-goal-plan/completion-control.md +0 -43
- package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +0 -146
- package/template/workflows/specdev/P-goal-plan/lead-orchestration.md +0 -38
- package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +0 -56
- package/template/workflows/specdev/P-goal-plan/planning-modes.md +0 -74
- package/template/workflows/specdev/P-goal-plan/references/goal-lifecycle.md +0 -35
- package/template/workflows/specdev/P-goal-plan/references/goal-tickets-map-template.md +0 -15
- package/template/workflows/specdev/P-goal-plan/references/map-control.md +0 -28
- package/template/workflows/specdev/P-goal-plan/references/multi-change-plan.md +0 -126
- package/template/workflows/specdev/P-goal-plan/references/multi-execution-loop.md +0 -31
- package/template/workflows/specdev/P-goal-plan/references/multi-input-readiness.md +0 -25
- package/template/workflows/specdev/P-goal-plan/references/multi-super-dag.md +0 -27
- package/template/workflows/specdev/P-goal-plan/references/replan-and-recovery.md +0 -21
- package/template/workflows/specdev/P-goal-plan/references/single-change-plan.md +0 -151
- package/template/workflows/specdev/P-prototype/P-prototype.md +0 -49
- package/template/workflows/specdev/P-prototype/design-library/INDEX.md +0 -43
- package/template/workflows/specdev/P-prototype/design-library/color-and-theme.md +0 -65
- package/template/workflows/specdev/P-prototype/design-library/foundations.md +0 -66
- package/template/workflows/specdev/P-prototype/design-library/interaction-patterns.md +0 -61
- package/template/workflows/specdev/P-prototype/design-library/product-pattern-index.md +0 -73
- package/template/workflows/specdev/P-prototype/design-library/research-provenance.md +0 -54
- package/template/workflows/specdev/P-prototype/design-library/responsive-and-platforms.md +0 -53
- package/template/workflows/specdev/P-prototype/design-library/style-index.md +0 -32
- package/template/workflows/specdev/P-prototype/design-package.schema.json +0 -70
- package/template/workflows/specdev/P-prototype/design-system-template.md +0 -366
- package/template/workflows/specdev/P-prototype/detect-existing-style.md +0 -53
- package/template/workflows/specdev/P-prototype/generate-design-package.md +0 -50
- package/template/workflows/specdev/P-prototype/logic-protocol.md +0 -11
- package/template/workflows/specdev/P-prototype/project-preview-protocol.md +0 -9
- package/template/workflows/specdev/P-prototype/style-selection-protocol.md +0 -41
- package/template/workflows/specdev/P-prototype/tools/validate-design-package.mjs +0 -155
- package/template/workflows/specdev/R-retro/R-retro.md +0 -26
- package/template/workflows/specdev/R-retro/retro-template.md +0 -27
- package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +0 -93
- package/template/workflows/specdev/R-review-architecture/architecture-review-template.md +0 -69
- package/template/workflows/specdev/R-review-architecture/proposal-to-ticket.md +0 -13
- package/template/workflows/specdev/R-review-architecture/references/selected-design.md +0 -23
- package/template/workflows/specdev/R-review-architecture/review-rubric.md +0 -52
- package/template/workflows/specdev/README.md +0 -97
- package/template/workflows/specdev/S-spec/S-spec.md +0 -34
- package/template/workflows/specdev/S-spec/spec-readiness.md +0 -16
- package/template/workflows/specdev/S-spec/spec-template.md +0 -95
- package/template/workflows/specdev/T-tickets/T-tickets.md +0 -40
- package/template/workflows/specdev/T-tickets/decomposition-rules.md +0 -56
- package/template/workflows/specdev/T-tickets/references/planning-procedure.md +0 -233
- package/template/workflows/specdev/T-tickets/ticket-readiness.md +0 -50
- package/template/workflows/specdev/T-tickets/ticket-template.md +0 -151
- package/template/workflows/specdev/T-tickets/tickets-map-template.md +0 -102
- package/template/workflows/specdev/T-triage/T-triage.md +0 -51
- package/template/workflows/specdev/T-triage/capture-protocol.md +0 -89
- package/template/workflows/specdev/T-triage/capture-template.md +0 -42
- package/template/workflows/specdev/T-triage/ci-security-protocol.md +0 -11
- package/template/workflows/specdev/T-triage/close-comment-template.md +0 -42
- package/template/workflows/specdev/T-triage/intake-protocol.md +0 -63
- package/template/workflows/specdev/T-triage/issue-body-template.md +0 -34
- package/template/workflows/specdev/T-triage/issue-record-template.md +0 -27
- package/template/workflows/specdev/T-triage/pr-delivery-protocol.md +0 -13
- package/template/workflows/specdev/T-triage/publish-protocol.md +0 -92
- package/template/workflows/specdev/T-triage/queue-protocol.md +0 -7
- package/template/workflows/specdev/T-triage/reconcile-protocol.md +0 -34
- package/template/workflows/specdev/T-triage/references/issue-pr-policy.md +0 -23
- package/template/workflows/specdev/T-triage/release-preflight.md +0 -13
- package/template/workflows/specdev/T-triage/release-protocol.md +0 -12
- package/template/workflows/specdev/T-triage/release-recovery.md +0 -18
- package/template/workflows/specdev/T-triage/remote-operations.md +0 -25
- package/template/workflows/specdev/T-triage/tools/capture-status.mjs +0 -125
- package/template/workflows/specdev/T-triage/tools/publish-status.mjs +0 -148
- package/template/workflows/specdev/T-triage/triage-template.md +0 -57
- package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +0 -42
- package/template/workflows/specdev/W-wayfinder/investigation-ticket-template.md +0 -16
- package/template/workflows/specdev/W-wayfinder/local-tracker-contract.md +0 -35
- package/template/workflows/specdev/W-wayfinder/references/initiative-discovery.md +0 -29
- package/template/workflows/specdev/W-wayfinder/references/map-traversal.md +0 -120
- package/template/workflows/specdev/W-wayfinder/wayfinder-map-template.md +0 -33
- package/template/workflows/specdev/_state/archive/.gitkeep +0 -0
- package/template/workflows/specdev/_state/changes/.gitkeep +0 -0
- package/template/workflows/specdev/_state/status.json +0 -6
- package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +0 -51
- package/template/workflows/specdev/common/skills/subagent-delivery/references/dispatch-and-accept.md +0 -87
- package/template/workflows/specdev/common/skills/subagent-delivery/references/external-web-subagent.md +0 -132
- package/template/workflows/specdev/common/skills/subagent-delivery/references/native-subagent.md +0 -28
- package/template/workflows/specdev/common/skills/subagent-delivery/references/source-package.md +0 -239
- /package/template/{skills → commands}/docs-sync/assets/state-template.json +0 -0
- /package/template/{skills → commands}/docs-sync/assets/workflow-scope-template.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/README.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/agents/openai.yaml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/README.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/fallback/kotlin-gradle/build.gradle.kts +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/fallback/kotlin-gradle/expected.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/fallback/kotlin-gradle/src/main/kotlin/example/App.kt +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/go/service/.golangci.yml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/go/service/cmd/api/main.go +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/go/service/expected.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/go/service/go.mod +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/go/service/internal/service/service.go +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/go/service/internal/service/service_test.go +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/java/spring-boot-maven/expected.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/java/spring-boot-maven/pom.xml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/java/spring-boot-maven/src/main/java/dev/speculo/orders/OrdersApplication.java +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/java/spring-boot-maven/src/test/java/dev/speculo/orders/OrdersApplicationTest.java +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/.github/workflows/ci.yml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/apps/web/package.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/apps/web/src/App.vue +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/apps/web/tsconfig.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/expected.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/package.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/pnpm-workspace.yaml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/services/orders/pom.xml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/services/orders/src/main/java/dev/speculo/orders/OrdersApplication.java +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/services/worker/go.mod +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/polyglot/monorepo/services/worker/main.go +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/rust/workspace/Cargo.toml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/rust/workspace/crates/cli/Cargo.toml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/rust/workspace/crates/cli/src/main.rs +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/rust/workspace/crates/core/Cargo.toml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/rust/workspace/crates/core/src/lib.rs +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/rust/workspace/expected.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/rust/workspace/rust-toolchain.toml +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/react-vite/expected.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/react-vite/package.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/react-vite/src/App.test.tsx +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/react-vite/src/App.tsx +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/react-vite/src/main.tsx +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/react-vite/tsconfig.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/vue-vite/expected.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/vue-vite/package.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/vue-vite/src/App.test.ts +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/vue-vite/src/App.vue +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/vue-vite/src/main.ts +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/vue-vite/tsconfig.json +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/examples/typescript/vue-vite/vite.config.ts +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/go/00-detection-and-scope.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/go/01-language-and-idioms.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/go/02-modules-packages-and-layout.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/go/03-errors-context-and-concurrency.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/go/04-testing-tooling-quality-gates.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/go/README.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/java/00-detection-and-scope.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/java/01-language-packages-and-api.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/java/02-build-modules-and-dependencies.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/java/03-errors-nullability-resources-concurrency.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/java/04-testing-tooling-quality-gates.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/java/README.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/java/frameworks/spring-boot.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/00-governance-and-precedence.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/01-project-discovery.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/02-evidence-topology-and-scope.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/03-interview-and-decisions.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/04-architecture-and-dependency-boundaries.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/05-files-directories-and-naming.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/06-apis-errors-resources-and-concurrency.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/07-documentation-and-comments.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/08-testing-strategy.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/09-mechanical-guardrails.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/09-security-configuration-and-data.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/10-performance-observability-and-i18n.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/11-tooling-quality-gates-and-ci.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/12-git-review-and-delivery.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/13-adoption-exceptions-and-ratchets.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/14-generation-contract.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/15-validation-contract.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/16-language-adapter-contract.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rules/README.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rust/00-detection-and-scope.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rust/01-language-api-and-safety.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rust/02-crates-workspaces-and-layout.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rust/03-errors-ownership-and-concurrency.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rust/04-testing-tooling-quality-gates.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/rust/README.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/00-detection-and-scope.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/01-language-and-type-system.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/02-modules-packages-and-runtime-boundaries.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/03-functions-async-errors-resources.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/04-testing-tooling-quality-gates.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/README.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/app-types/cli.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/app-types/library.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/frameworks/react.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/frameworks/vue.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/runtimes/browser.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/runtimes/electron.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/references/typescript/runtimes/node.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/scripts/discover-project.mjs +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/scripts/self-test.mjs +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/scripts/sync-manifest.mjs +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/scripts/validate-generated-skill.mjs +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/README.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/compatibility/agents-typescript--standards.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/compatibility/agents-typescript-standards.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/compatibility/claude-engineering-standards.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/compatibility/claude-typescript-standards.md +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/domain-skill/SKILL.md.template +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/project-skill/SKILL.md.template +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/project-skill/generated-skill-set.json.template +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/project-skill/references/project/00-project-profile.md.template +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/project-skill/references/project/01-module-map.md.template +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/project-skill/references/project/02-decisions-and-exceptions.md.template +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/project-skill/references/project/03-skill-map.md.template +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/project-skill/references/project/04-source-and-template-map.md.template +0 -0
- /package/template/{skills → commands}/engineering-standards-builder/templates/project-skill/references/project/review-checklist.md.template +0 -0
- /package/template/{skills → commands}/git-history-squash/agents/openai.yaml +0 -0
- /package/template/{skills → commands}/git-history-squash/assets/request-template.json +0 -0
- /package/template/{skills → commands}/git-history-squash/references/recovery-contract.md +0 -0
- /package/template/{skills → commands}/git-history-squash/references/submodule-contract.md +0 -0
- /package/template/commands/{references/git-repository-audit-procedure.md → git-repository-audit/references/procedure.md} +0 -0
- /package/template/{skills → commands}/source-code-zip/references/cli-reference.md +0 -0
- /package/template/{skills → commands}/source-code-zip/scripts/zip_source_code.js +0 -0
- /package/template/{skills → commands}/upstream-fork-sync/scripts/upstream-sync.mjs +0 -0
- /package/template/{skills → references}/retrospective/references/friction-taxonomy.md +0 -0
- /package/template/{skills → references}/writing-for-agents/references/authoring-principles.md +0 -0
- /package/template/workflows/learning/{A-assess-and-plan → learning-a-assess-and-plan/assets}/background-template.md +0 -0
- /package/template/workflows/learning/{A-assess-and-plan → learning-a-assess-and-plan/assets}/change-status-template.json +0 -0
- /package/template/workflows/learning/{A-assess-and-plan → learning-a-assess-and-plan/assets}/course-template.md +0 -0
- /package/template/workflows/learning/{G-goal → learning-g-goal/assets}/chain-template.md +0 -0
- /package/template/workflows/learning/{G-goal → learning-g-goal/assets}/coverage-matrix-template.md +0 -0
- /package/template/workflows/learning/{G-goal → learning-g-goal}/references/mine-unit.md +0 -0
- /package/template/workflows/learning/{G-goal → learning-g-goal}/references/split-rules.md +0 -0
- /package/template/workflows/learning/{G-goal → learning-g-goal}/references/stop-rules.md +0 -0
- /package/template/workflows/learning/{H-homework → learning-h-homework/assets}/homework-template.md +0 -0
- /package/template/workflows/learning/{I-init-setup → learning-i-init-setup/assets}/context-index-template.md +0 -0
- /package/template/workflows/learning/{I-init-setup → learning-i-init-setup/assets}/learner-profile-template.md +0 -0
- /package/template/workflows/learning/{I-init-setup → learning-i-init-setup/assets}/review-index-template.md +0 -0
- /package/template/workflows/learning/{Q-question → learning-q-question/assets}/lightweight-course-template.md +0 -0
- /package/template/workflows/learning/{Q-question/tools → learning-q-question/scripts}/validate-inquiry.mjs +0 -0
- /package/template/workflows/learning/{R-review → learning-r-review/assets}/review-template.md +0 -0
- /package/template/workflows/ops/{H-host-manage → ops-h-host-manage}/references/host-profiles.md +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os/_templates → person-m-mao-zedong-cognitive-os/assets/templates}/mao-consultation-output-template.md +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/000-/344/270/255/345/233/275/347/244/276/344/274/232/345/220/204/351/230/266/347/272/247/347/232/204/345/210/206/346/236/220.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/001-/346/271/226/345/215/227/345/206/234/346/260/221/350/277/220/345/212/250/350/200/203/345/257/237/346/212/245/345/221/212.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/002-/344/270/255/345/233/275/347/232/204/347/272/242/350/211/262/346/224/277/346/235/203/344/270/272/344/273/200/344/271/210/350/203/275/345/244/237/345/255/230/345/234/250/357/274/237.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/003-/344/272/225/345/206/210/345/261/261/347/232/204/346/226/227/344/272/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/004-/345/205/263/344/272/216/347/272/240/346/255/243/345/205/232/345/206/205/347/232/204/351/224/231/350/257/257/346/200/235/346/203/263.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/005-/346/230/237/346/230/237/344/271/213/347/201/253/357/274/214/345/217/257/344/273/245/347/207/216/345/216/237.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/006-/345/217/215/345/257/271/346/234/254/346/234/254/344/270/273/344/271/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/007-/345/277/205/351/241/273/346/263/250/346/204/217/347/273/217/346/265/216/345/267/245/344/275/234.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/008-/346/200/216/346/240/267/345/210/206/346/236/220/345/206/234/346/235/221/351/230/266/347/272/247.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/009-/346/210/221/344/273/254/347/232/204/347/273/217/346/265/216/346/224/277/347/255/226.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/010-/345/205/263/345/277/203/347/276/244/344/274/227/347/224/237/346/264/273/357/274/214/346/263/250/346/204/217/345/267/245/344/275/234/346/226/271/346/263/225.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/011-/350/256/272/345/217/215/345/257/271/346/227/245/346/234/254/345/270/235/345/233/275/344/270/273/344/271/211/347/232/204/347/255/226/347/225/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/012-/344/270/255/345/233/275/351/235/251/345/221/275/346/210/230/344/272/211/347/232/204/346/210/230/347/225/245/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/013-/345/205/263/344/272/216/350/222/213/344/273/213/347/237/263/345/243/260/346/230/216/347/232/204/345/243/260/346/230/216.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/014-/344/270/255/345/233/275/345/205/261/344/272/247/345/205/232/345/234/250/346/212/227/346/227/245/346/227/266/346/234/237/347/232/204/344/273/273/345/212/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/015-/344/270/272/344/272/211/345/217/226/345/215/203/347/231/276/344/270/207/347/276/244/344/274/227/350/277/233/345/205/245/346/212/227/346/227/245/346/260/221/346/227/217/347/273/237/344/270/200/346/210/230/347/272/277/350/200/214/346/226/227/344/272/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/016-/345/256/236/350/267/265/350/256/272.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/017-/347/237/233/347/233/276/350/256/272.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/018-/345/217/215/345/257/271/346/227/245/346/234/254/350/277/233/346/224/273/347/232/204/346/226/271/351/222/210/343/200/201/345/212/236/346/263/225/345/222/214/345/211/215/351/200/224.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/019-/344/270/272/345/212/250/345/221/230/344/270/200/345/210/207/345/212/233/351/207/217/344/272/211/345/217/226/346/212/227/346/210/230/350/203/234/345/210/251/350/200/214/346/226/227/344/272/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/020-/345/217/215/345/257/271/350/207/252/347/224/261/344/270/273/344/271/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/021-/345/233/275/345/205/261/345/220/210/344/275/234/346/210/220/347/253/213/345/220/216/347/232/204/350/277/253/345/210/207/344/273/273/345/212/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/022-/345/222/214/350/213/261/345/233/275/350/256/260/350/200/205/350/264/235/347/211/271/345/205/260/347/232/204/350/260/210/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/023-/344/270/212/346/265/267/345/244/252/345/216/237/345/244/261/351/231/267/344/273/245/345/220/216/346/212/227/346/227/245/346/210/230/344/272/211/347/232/204/345/275/242/345/212/277/345/222/214/344/273/273/345/212/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/024-/351/231/225/347/224/230/345/256/201/350/276/271/345/214/272/346/224/277/345/272/234/347/254/254/345/205/253/350/267/257/345/206/233/345/220/216/346/226/271/347/225/231/345/256/210/345/244/204/345/270/203/345/221/212.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/025-/346/212/227/346/227/245/346/270/270/345/207/273/346/210/230/344/272/211/347/232/204/346/210/230/347/225/245/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/026-/350/256/272/346/214/201/344/271/205/346/210/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/027-/344/270/255/345/233/275/345/205/261/344/272/247/345/205/232/345/234/250/346/260/221/346/227/217/346/210/230/344/272/211/344/270/255/347/232/204/345/234/260/344/275/215.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/028-/347/273/237/344/270/200/346/210/230/347/272/277/344/270/255/347/232/204/347/213/254/347/253/213/350/207/252/344/270/273/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/029-/346/210/230/344/272/211/345/222/214/346/210/230/347/225/245/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/030-/344/272/224/345/233/233/350/277/220/345/212/250.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/031-/351/235/222/345/271/264/350/277/220/345/212/250/347/232/204/346/226/271/345/220/221.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/032-/345/217/215/345/257/271/346/212/225/351/231/215/346/264/273/345/212/250.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/033-/345/277/205/351/241/273/345/210/266/350/243/201/345/217/215/345/212/250/346/264/276.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/034-/345/205/263/344/272/216/345/233/275/351/231/205/346/226/260/345/275/242/345/212/277/345/257/271/346/226/260/345/215/216/346/227/245/346/212/245/350/256/260/350/200/205/347/232/204/350/260/210/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/035-/345/222/214/344/270/255/345/244/256/347/244/276/343/200/201/346/211/253/350/215/241/346/212/245/343/200/201/346/226/260/346/260/221/346/212/245/344/270/211/350/256/260/350/200/205/347/232/204/350/260/210/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/036-/350/213/217/350/201/224/345/210/251/347/233/212/345/222/214/344/272/272/347/261/273/345/210/251/347/233/212/347/232/204/344/270/200/350/207/264.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/037-/343/200/212/345/205/261/344/272/247/345/205/232/344/272/272/343/200/213/345/217/221/345/210/212/350/257/215.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/038-/347/233/256/345/211/215/345/275/242/345/212/277/345/222/214/345/205/232/347/232/204/344/273/273/345/212/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/039-/345/244/247/351/207/217/345/220/270/346/224/266/347/237/245/350/257/206/345/210/206/345/255/220.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/040-/344/270/255/345/233/275/351/235/251/345/221/275/345/222/214/344/270/255/345/233/275/345/205/261/344/272/247/345/205/232.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/041-/346/226/257/345/244/247/346/236/227/346/230/257/344/270/255/345/233/275/344/272/272/346/260/221/347/232/204/346/234/213/345/217/213.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/042-/347/272/252/345/277/265/347/231/275/346/261/202/346/201/251.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/043-/346/226/260/346/260/221/344/270/273/344/270/273/344/271/211/350/256/272.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/044-/345/205/213/346/234/215/346/212/225/351/231/215/345/215/261/351/231/251/357/274/214/345/212/233/344/272/211/346/227/266/345/261/200/345/245/275/350/275/254.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/045-/345/233/242/347/273/223/344/270/200/345/210/207/346/212/227/346/227/245/345/212/233/351/207/217/357/274/214/345/217/215/345/257/271/345/217/215/345/205/261/351/241/275/345/233/272/346/264/276.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/046-/345/220/221/345/233/275/346/260/221/345/205/232/347/232/204/345/215/201/347/202/271/350/246/201/346/261/202.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/047-/343/200/212/344/270/255/345/233/275/345/267/245/344/272/272/343/200/213/345/217/221/345/210/212/350/257/215.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/048-/345/277/205/351/241/273/345/274/272/350/260/203/345/233/242/347/273/223/345/222/214/350/277/233/346/255/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/049-/346/226/260/346/260/221/344/270/273/344/270/273/344/271/211/347/232/204/345/256/252/346/224/277.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/050-/346/212/227/346/227/245/346/240/271/346/215/256/345/234/260/347/232/204/346/224/277/346/235/203/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/051-/347/233/256/345/211/215/346/212/227/346/227/245/347/273/237/344/270/200/346/210/230/347/272/277/344/270/255/347/232/204/347/255/226/347/225/245/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/052-/346/224/276/346/211/213/345/217/221/345/261/225/346/212/227/346/227/245/345/212/233/351/207/217/357/274/214/346/212/265/346/212/227/345/217/215/345/205/261/351/241/275/345/233/272/346/264/276/347/232/204/350/277/233/346/224/273.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/053-/345/233/242/347/273/223/345/210/260/345/272/225.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/054-/350/256/272/346/224/277/347/255/226.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/055-/344/270/272/347/232/226/345/215/227/344/272/213/345/217/230/345/217/221/350/241/250/347/232/204/345/221/275/344/273/244/345/222/214/350/260/210/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/056-/346/211/223/351/200/200/347/254/254/344/272/214/346/254/241/345/217/215/345/205/261/351/253/230/346/275/256/345/220/216/347/232/204/346/227/266/345/261/200.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/057-/345/205/263/344/272/216/346/211/223/351/200/200/347/254/254/344/272/214/346/254/241/345/217/215/345/205/261/351/253/230/346/275/256/347/232/204/346/200/273/347/273/223.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/058-/343/200/212/345/206/234/346/235/221/350/260/203/346/237/245/343/200/213/347/232/204/345/272/217/350/250/200/345/222/214/350/267/213.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/059-/346/224/271/351/200/240/346/210/221/344/273/254/347/232/204/345/255/246/344/271/240.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/060-/346/217/255/347/240/264/350/277/234/344/270/234/346/205/225/345/260/274/351/273/221/347/232/204/351/230/264/350/260/213.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/061-/345/205/263/344/272/216/345/217/215/346/263/225/350/245/277/346/226/257/347/232/204/345/233/275/351/231/205/347/273/237/344/270/200/346/210/230/347/272/277.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/062-/345/234/250/351/231/225/347/224/230/345/256/201/350/276/271/345/214/272/345/217/202/350/256/256/344/274/232/347/232/204/346/274/224/350/257/264.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/063-/346/225/264/351/241/277/345/205/232/347/232/204/344/275/234/351/243/216.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/064-/345/217/215/345/257/271/345/205/232/345/205/253/350/202/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/065-/345/234/250/345/273/266/345/256/211/346/226/207/350/211/272/345/272/247/350/260/210/344/274/232/344/270/212/347/232/204/350/256/262/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/066-/344/270/200/344/270/252/346/236/201/345/205/266/351/207/215/350/246/201/347/232/204/346/224/277/347/255/226.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/067-/347/254/254/344/272/214/346/254/241/344/270/226/347/225/214/345/244/247/346/210/230/347/232/204/350/275/254/346/212/230/347/202/271.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/068-/347/245/235/345/215/201/346/234/210/351/235/251/345/221/275/344/272/214/345/215/201/344/272/224/345/221/250/345/271/264.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/069-/346/212/227/346/227/245/346/227/266/346/234/237/347/232/204/347/273/217/346/265/216/351/227/256/351/242/230/345/222/214/350/264/242/346/224/277/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/070-/345/205/263/344/272/216/351/242/206/345/257/274/346/226/271/346/263/225/347/232/204/350/213/245/345/271/262/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/071-/350/264/250/351/227/256/345/233/275/346/260/221/345/205/232.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/072-/345/274/200/345/261/225/346/240/271/346/215/256/345/234/260/347/232/204/345/207/217/347/247/237/343/200/201/347/224/237/344/272/247/345/222/214/346/213/245/346/224/277/347/210/261/346/260/221/350/277/220/345/212/250.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/073-/350/257/204/345/233/275/346/260/221/345/205/232/345/215/201/344/270/200/344/270/255/345/205/250/344/274/232/345/222/214/344/270/211/345/261/212/344/272/214/346/254/241/345/233/275/346/260/221/345/217/202/346/224/277/344/274/232.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/074-/347/273/204/347/273/207/350/265/267/346/235/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/075-/345/255/246/344/271/240/345/222/214/346/227/266/345/261/200.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/076-/344/270/272/344/272/272/346/260/221/346/234/215/345/212/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/077-/350/257/204/350/222/213/344/273/213/347/237/263/345/234/250/345/217/214/345/215/201/350/212/202/347/232/204/346/274/224/350/257/264.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/078-/346/226/207/345/214/226/345/267/245/344/275/234/344/270/255/347/232/204/347/273/237/344/270/200/346/210/230/347/272/277.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/079-/345/277/205/351/241/273/345/255/246/344/274/232/345/201/232/347/273/217/346/265/216/345/267/245/344/275/234.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/080-/346/270/270/345/207/273/345/214/272/344/271/237/350/203/275/345/244/237/350/277/233/350/241/214/347/224/237/344/272/247.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/081-/344/270/244/344/270/252/344/270/255/345/233/275/344/271/213/345/221/275/350/277/220.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/082-/350/256/272/350/201/224/345/220/210/346/224/277/345/272/234.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/083-/346/204/232/345/205/254/347/247/273/345/261/261.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/084-/350/256/272/345/206/233/351/230/237/347/224/237/344/272/247/350/207/252/347/273/231/357/274/214/345/205/274/350/256/272/346/225/264/351/243/216/345/222/214/347/224/237/344/272/247/344/270/244/345/244/247/350/277/220/345/212/250/347/232/204/351/207/215/350/246/201/346/200/247.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/085-/350/265/253/345/260/224/345/210/251/345/222/214/350/222/213/344/273/213/347/237/263/347/232/204/345/217/214/347/260/247/345/267/262/347/273/217/347/240/264/344/272/247.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/086-/350/257/204/350/265/253/345/260/224/345/210/251/346/224/277/347/255/226/347/232/204/345/215/261/351/231/251.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/087-/347/273/231/347/246/217/346/226/257/347/211/271/345/220/214/345/277/227/347/232/204/347/224/265/346/212/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/088-/345/257/271/346/227/245/345/257/207/347/232/204/346/234/200/345/220/216/344/270/200/346/210/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/089-/346/212/227/346/227/245/346/210/230/344/272/211/350/203/234/345/210/251/345/220/216/347/232/204/346/227/266/345/261/200/345/222/214/346/210/221/344/273/254/347/232/204/346/226/271/351/222/210.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/090-/350/222/213/344/273/213/347/237/263/345/234/250/346/214/221/345/212/250/345/206/205/346/210/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/091-/347/254/254/345/215/201/345/205/253/351/233/206/345/233/242/345/206/233/346/200/273/345/217/270/344/273/244/347/273/231/350/222/213/344/273/213/347/237/263/347/232/204/344/270/244/344/270/252/347/224/265/346/212/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/092-/350/257/204/350/222/213/344/273/213/347/237/263/345/217/221/350/250/200/344/272/272/350/260/210/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/093-/344/270/255/345/205/261/344/270/255/345/244/256/345/205/263/344/272/216/345/220/214/345/233/275/346/260/221/345/205/232/350/277/233/350/241/214/345/222/214/345/271/263/350/260/210/345/210/244/347/232/204/351/200/232/347/237/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/094-/345/205/263/344/272/216/351/207/215/345/272/206/350/260/210/345/210/244.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/095-/345/233/275/346/260/221/345/205/232/350/277/233/346/224/273/347/232/204/347/234/237/347/233/270.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/096-/345/207/217/347/247/237/345/222/214/347/224/237/344/272/247/346/230/257/344/277/235/345/215/253/350/247/243/346/224/276/345/214/272/347/232/204/344/270/244/344/273/266/345/244/247/344/272/213.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/097-/344/270/200/344/271/235/345/233/233/345/205/255/345/271/264/350/247/243/346/224/276/345/214/272/345/267/245/344/275/234/347/232/204/346/226/271/351/222/210.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/098-/345/273/272/347/253/213/345/267/251/345/233/272/347/232/204/344/270/234/345/214/227/346/240/271/346/215/256/345/234/260.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/099-/345/205/263/344/272/216/347/233/256/345/211/215/345/233/275/351/231/205/345/275/242/345/212/277/347/232/204/345/207/240/347/202/271/344/274/260/350/256/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/100-/344/273/245/350/207/252/345/215/253/346/210/230/344/272/211/347/262/211/347/242/216/350/222/213/344/273/213/347/237/263/347/232/204/350/277/233/346/224/273.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/101-/345/222/214/347/276/216/345/233/275/350/256/260/350/200/205/345/256/211/345/250/234/302/267/350/267/257/346/230/223/346/226/257/302/267/346/226/257/347/211/271/346/234/227/347/232/204/350/260/210/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/102-/351/233/206/344/270/255/344/274/230/345/212/277/345/205/265/345/212/233/357/274/214/345/220/204/344/270/252/346/255/274/347/201/255/346/225/214/344/272/272.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/103-/347/276/216/345/233/275/342/200/234/350/260/203/350/247/243/342/200/235/347/234/237/347/233/270/345/222/214/344/270/255/345/233/275/345/206/205/346/210/230/345/211/215/351/200/224.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/104-/344/270/211/344/270/252/346/234/210/346/200/273/347/273/223.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/105-/350/277/216/346/216/245/344/270/255/345/233/275/351/235/251/345/221/275/347/232/204/346/226/260/351/253/230/346/275/256.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/106-/344/270/255/345/205/261/344/270/255/345/244/256/345/205/263/344/272/216/346/232/202/346/227/266/346/224/276/345/274/203/345/273/266/345/256/211/345/222/214/344/277/235/345/215/253/351/231/225/347/224/230/345/256/201/350/276/271/345/214/272/347/232/204/344/270/244/344/270/252/346/226/207/344/273/266.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/107-/345/205/263/344/272/216/350/245/277/345/214/227/346/210/230/345/234/272/347/232/204/344/275/234/346/210/230/346/226/271/351/222/210.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/108-/350/222/213/344/273/213/347/237/263/346/224/277/345/272/234/345/267/262/345/244/204/345/234/250/345/205/250/346/260/221/347/232/204/345/214/205/345/233/264/344/270/255.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/109-/350/247/243/346/224/276/346/210/230/344/272/211/347/254/254/344/272/214/345/271/264/347/232/204/346/210/230/347/225/245/346/226/271/351/222/210.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/110-/344/270/255/345/233/275/344/272/272/346/260/221/350/247/243/346/224/276/345/206/233/345/256/243/350/250/200.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/111-/344/270/255/345/233/275/344/272/272/346/260/221/350/247/243/346/224/276/345/206/233/346/200/273/351/203/250/345/205/263/344/272/216/351/207/215/350/241/214/351/242/201/345/270/203/344/270/211/345/244/247/347/272/252/345/276/213/345/205/253/351/241/271/346/263/250/346/204/217/347/232/204/350/256/255/344/273/244.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/112-/347/233/256/345/211/215/345/275/242/345/212/277/345/222/214/346/210/221/344/273/254/347/232/204/344/273/273/345/212/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/113-/345/205/263/344/272/216/345/273/272/347/253/213/346/212/245/345/221/212/345/210/266/345/272/246.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/114-/345/205/263/344/272/216/347/233/256/345/211/215/345/205/232/347/232/204/346/224/277/347/255/226/344/270/255/347/232/204/345/207/240/344/270/252/351/207/215/350/246/201/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/115-/345/206/233/351/230/237/345/206/205/351/203/250/347/232/204/346/260/221/344/270/273/350/277/220/345/212/250.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/116-/345/234/250/344/270/215/345/220/214/345/234/260/345/214/272/345/256/236/346/226/275/345/234/237/345/234/260/346/263/225/347/232/204/344/270/215/345/220/214/347/255/226/347/225/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/117-/347/272/240/346/255/243/345/234/237/345/234/260/346/224/271/351/235/251/345/256/243/344/274/240/344/270/255/347/232/204/342/200/234/345/267/246/342/200/235/345/200/276/351/224/231/350/257/257.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/118-/346/226/260/350/247/243/346/224/276/345/214/272/345/234/237/345/234/260/346/224/271/351/235/251/350/246/201/347/202/271.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/119-/345/205/263/344/272/216/345/267/245/345/225/206/344/270/232/346/224/277/347/255/226.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/120-/345/205/263/344/272/216/346/260/221/346/227/217/350/265/204/344/272/247/351/230/266/347/272/247/345/222/214/345/274/200/346/230/216/347/273/205/345/243/253/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/121-/350/257/204/350/245/277/345/214/227/345/244/247/346/215/267/345/205/274/350/256/272/350/247/243/346/224/276/345/206/233/347/232/204/346/226/260/345/274/217/346/225/264/345/206/233/350/277/220/345/212/250.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/122-/345/205/263/344/272/216/346/203/205/345/206/265/347/232/204/351/200/232/346/212/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/123-/345/234/250/346/231/213/347/273/245/345/271/262/351/203/250/344/274/232/350/256/256/344/270/212/347/232/204/350/256/262/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/124-/345/257/271/346/231/213/347/273/245/346/227/245/346/212/245/347/274/226/350/276/221/344/272/272/345/221/230/347/232/204/350/260/210/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/125-/345/206/215/345/205/213/346/264/233/351/230/263/345/220/216/347/273/231/346/264/233/351/230/263/345/211/215/347/272/277/346/214/207/346/214/245/351/203/250/347/232/204/347/224/265/346/212/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/126-/346/226/260/350/247/243/346/224/276/345/214/272/345/206/234/346/235/221/345/267/245/344/275/234/347/232/204/347/255/226/347/225/245/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/127-/344/270/200/344/271/235/345/233/233/345/205/253/345/271/264/347/232/204/345/234/237/345/234/260/346/224/271/351/235/251/345/267/245/344/275/234/345/222/214/346/225/264/345/205/232/345/267/245/344/275/234.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/128-/345/205/263/344/272/216/350/276/275/346/262/210/346/210/230/345/275/271/347/232/204/344/275/234/346/210/230/346/226/271/351/222/210.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/129-/345/205/263/344/272/216/345/201/245/345/205/250/345/205/232/345/247/224/345/210/266.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/130-/344/270/255/345/205/261/344/270/255/345/244/256/345/205/263/344/272/216/344/271/235/346/234/210/344/274/232/350/256/256/347/232/204/351/200/232/347/237/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/131-/345/205/263/344/272/216/346/267/256/346/265/267/346/210/230/345/275/271/347/232/204/347/232/204/344/275/234/346/210/230/346/226/271/351/222/210.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/132-/345/205/250/344/270/226/347/225/214/351/235/251/345/221/275/345/212/233/351/207/217/345/233/242/347/273/223/350/265/267/346/235/245/357/274/214/345/217/215/345/257/271/345/270/235/345/233/275/344/270/273/344/271/211/347/232/204/344/276/265/347/225/245.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/133-/344/270/255/345/233/275/345/206/233/344/272/213/345/275/242/345/212/277/347/232/204/351/207/215/345/244/247/345/217/230/345/214/226.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/134-/345/205/263/344/272/216/345/271/263/346/264/245/346/210/230/345/275/271/347/232/204/344/275/234/346/210/230/346/226/271/351/222/210.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/135-/346/225/246/344/277/203/346/235/234/350/201/277/346/230/216/347/255/211/346/212/225/351/231/215/344/271/246.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/136-/345/260/206/351/235/251/345/221/275/350/277/233/350/241/214/345/210/260/345/272/225.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/137-/350/257/204/346/210/230/347/212/257/346/261/202/345/222/214.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/138-/344/270/255/345/205/261/344/270/255/345/244/256/346/257/233/346/263/275/344/270/234/344/270/273/345/270/255/345/205/263/344/272/216/346/227/266/345/261/200/347/232/204/345/243/260/346/230/216.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/139-/344/270/255/345/205/261/345/217/221/350/250/200/344/272/272/350/257/204/345/215/227/344/272/254/350/241/214/346/224/277/351/231/242/347/232/204/345/206/263/350/256/256.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/140-/344/270/255/345/205/261/345/217/221/350/250/200/344/272/272/345/205/263/344/272/216/345/221/275/344/273/244/345/233/275/346/260/221/345/205/232/345/217/215/345/212/250/346/224/277/345/272/234/351/207/215/346/226/260/351/200/256/346/215/225/345/211/215/346/227/245/346/234/254/344/276/265/345/215/216/345/206/233/346/200/273/345/217/270/344/273/244/345/206/210/346/235/221/345/256/201/346/254/241/345/222/214/351/200/256/346/215/225/345/233/275/346/260/221/345/205/232/345/206/205/346/210/230/347/275/252/347/212/257/347/232/204/350/260/210/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/141-/344/270/255/345/205/261/345/217/221/350/250/200/344/272/272/345/205/263/344/272/216/345/222/214/345/271/263/346/235/241/344/273/266/345/277/205/351/241/273/345/214/205/346/213/254/346/203/251/345/212/236/346/227/245/346/234/254/346/210/230/347/212/257/345/222/214/345/233/275/346/260/221/345/205/232/346/210/230/347/212/257/347/232/204/345/243/260/346/230/216.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/142-/346/212/212/345/206/233/351/230/237/345/217/230/344/270/272/345/267/245/344/275/234/351/230/237.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/143-/345/233/233/345/210/206/344/272/224/350/243/202/347/232/204/345/217/215/345/212/250/346/264/276/344/270/272/344/273/200/344/271/210/350/277/230/350/246/201/347/251/272/345/226/212/342/200/234/345/205/250/351/235/242/345/222/214/345/271/263/342/200/235/357/274/237.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/144-/345/233/275/346/260/221/345/205/232/345/217/215/345/212/250/346/264/276/347/224/261/342/200/234/345/221/274/345/220/201/345/222/214/345/271/263/342/200/235/345/217/230/344/270/272/345/221/274/345/220/201/346/210/230/344/272/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/145-/350/257/204/345/233/275/346/260/221/345/205/232/345/257/271/346/210/230/344/272/211/350/264/243/344/273/273/351/227/256/351/242/230/347/232/204/345/207/240/347/247/215/347/255/224/346/241/210.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/146-/345/234/250/344/270/255/345/233/275/345/205/261/344/272/247/345/205/232/347/254/254/344/270/203/345/261/212/344/270/255/345/244/256/345/247/224/345/221/230/344/274/232/347/254/254/344/272/214/346/254/241/345/205/250/344/275/223/344/274/232/350/256/256/344/270/212/347/232/204/346/212/245/345/221/212.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/147-/345/205/232/345/247/224/344/274/232/347/232/204/345/267/245/344/275/234/346/226/271/346/263/225.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/148-/345/215/227/344/272/254/346/224/277/345/272/234/345/220/221/344/275/225/345/244/204/345/216/273/357/274/237.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/149-/345/220/221/345/205/250/345/233/275/350/277/233/345/206/233/347/232/204/345/221/275/344/273/244.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/150-/344/270/255/345/233/275/344/272/272/346/260/221/350/247/243/346/224/276/345/206/233/345/270/203/345/221/212.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/151-/344/270/255/345/233/275/344/272/272/346/260/221/350/247/243/346/224/276/345/206/233/346/200/273/351/203/250/345/217/221/350/250/200/344/272/272/344/270/272/350/213/261/345/233/275/345/206/233/350/210/260/346/232/264/350/241/214/345/217/221/350/241/250/347/232/204/345/243/260/346/230/216.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/152-/345/234/250/346/226/260/346/224/277/346/262/273/345/215/217/345/225/206/344/274/232/350/256/256/347/255/271/345/244/207/344/274/232/344/270/212/347/232/204/350/256/262/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/153-/350/256/272/344/272/272/346/260/221/346/260/221/344/270/273/344/270/223/346/224/277--/347/272/252/345/277/265/344/270/255/345/233/275/345/205/261/344/272/247/345/205/232/344/272/214/345/215/201/345/205/253/345/221/250/345/271/264.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/154-/344/270/242/346/216/211/345/271/273/346/203/263/357/274/214/345/207/206/345/244/207/346/226/227/344/272/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/155-/345/210/253/344/272/206/357/274/214/345/217/270/345/276/222/351/233/267/347/231/273.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/156-/342/200/234/345/217/213/350/260/212/342/200/235/357/274/214/350/277/230/346/230/257/344/276/265/347/225/245/357/274/237.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/157-/344/270/272/344/273/200/344/271/210/350/246/201/350/256/250/350/256/272/347/231/275/347/232/256/344/271/246/357/274/237.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/158-/345/224/257/345/277/203/345/216/206/345/217/262/350/247/202/347/232/204/347/240/264/344/272/247.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/159-/344/270/255/345/233/275/344/272/272/346/260/221/347/253/231/350/265/267/346/235/245/344/272/206.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/160-/344/270/255/345/233/275/344/272/272/346/260/221/345/244/247/345/233/242/347/273/223/344/270/207/345/262/201.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/161-/344/272/272/346/260/221/350/213/261/351/233/204/344/273/254/346/260/270/345/236/202/344/270/215/346/234/275.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/162-/346/260/270/350/277/234/344/277/235/346/214/201/350/211/260/350/213/246/345/245/213/346/226/227/347/232/204/344/275/234/351/243/216.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/163-/345/276/201/350/257/242/345/257/271/345/276/205/345/257/214/345/206/234/347/255/226/347/225/245/351/227/256/351/242/230/347/232/204/346/204/217/350/247/201.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/164-/344/270/272/344/272/211/345/217/226/345/233/275/345/256/266/350/264/242/346/224/277/347/273/217/346/265/216/347/212/266/345/206/265/347/232/204/345/237/272/346/234/254/345/245/275/350/275/254/350/200/214/346/226/227/344/272/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/165-/344/270/215/350/246/201/345/233/233/351/235/242/345/207/272/345/207/273.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/166-/345/201/232/344/270/200/344/270/252/345/256/214/345/205/250/347/232/204/351/235/251/345/221/275/346/264/276.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/167-/344/275/240/344/273/254/346/230/257/345/205/250/346/260/221/346/227/217/347/232/204/346/250/241/350/214/203/344/272/272/347/211/251.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/168-/347/273/231/344/270/255/345/233/275/344/272/272/346/260/221/345/277/227/346/204/277/345/206/233/347/232/204/345/221/275/344/273/244.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/169-/344/270/255/345/233/275/344/272/272/346/260/221/345/277/227/346/204/277/345/206/233/350/246/201/347/210/261/346/212/244/346/234/235/351/262/234/347/232/204/344/270/200/345/261/261/344/270/200/346/260/264/344/270/200/350/215/211/344/270/200/346/234/250.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/170-/344/270/255/345/205/261/344/270/255/345/244/256/346/224/277/346/262/273/345/261/200/346/211/251/345/244/247/344/274/232/350/256/256/345/206/263/350/256/256/350/246/201/347/202/271.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/171-/351/225/207/345/216/213/345/217/215/351/235/251/345/221/275/345/277/205/351/241/273/345/256/236/350/241/214/345/205/232/347/232/204/347/276/244/344/274/227/350/267/257/347/272/277.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/172-/351/225/207/345/216/213/345/217/215/351/235/251/345/221/275/345/277/205/351/241/273/346/211/223/345/276/227/347/250/263/357/274/214/346/211/223/345/276/227/345/207/206/357/274/214/346/211/223/345/276/227/347/213/240.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/173-/345/272/224/345/275/223/351/207/215/350/247/206/347/224/265/345/275/261/343/200/212/346/255/246/350/256/255/344/274/240/343/200/213/347/232/204/350/256/250/350/256/272.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/174-/344/270/211/345/244/247/350/277/220/345/212/250/347/232/204/344/274/237/345/244/247/350/203/234/345/210/251.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/175-/345/205/263/344/272/216/342/200/234/344/270/211/345/217/215/342/200/235/343/200/201/342/200/234/344/272/224/345/217/215/342/200/235/347/232/204/346/226/227/344/272/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/176-/346/212/212/345/206/234/344/270/232/344/272/222/345/212/251/345/220/210/344/275/234/345/275/223/344/275/234/344/270/200/344/273/266/345/244/247/344/272/213/345/216/273/345/201/232.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/177-/345/205/203/346/227/246/347/245/235/350/257/215.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/178-/344/270/255/345/205/261/344/270/255/345/244/256/345/205/263/344/272/216/350/245/277/350/227/217/345/267/245/344/275/234/346/226/271/351/222/210/347/232/204/346/214/207/347/244/272.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/179-/345/267/245/344/272/272/351/230/266/347/272/247/344/270/216/350/265/204/344/272/247/351/230/266/347/272/247/347/232/204/347/237/233/347/233/276/346/230/257/345/233/275/345/206/205/347/232/204/344/270/273/350/246/201/347/237/233/347/233/276.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/180-/345/233/242/347/273/223/350/265/267/346/235/245/357/274/214/345/210/222/346/270/205/346/225/214/346/210/221/347/225/214/351/231/220.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/181-/347/245/235/350/264/272/344/270/255/345/233/275/344/272/272/346/260/221/345/277/227/346/204/277/345/206/233/347/232/204/351/207/215/345/244/247/350/203/234/345/210/251.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/182-/345/217/215/345/257/271/345/256/230/345/203/232/344/270/273/344/271/211/343/200/201/345/221/275/344/273/244/344/270/273/344/271/211/345/222/214/350/277/235/346/263/225/344/271/261/347/272/252.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/183-/346/211/271/345/210/244/345/244/247/346/261/211/346/227/217/344/270/273/344/271/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/184-/350/247/243/345/206/263/342/200/234/344/272/224/345/244/232/342/200/235/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/185-/345/257/271/345/210/230/345/260/221/345/245/207/343/200/201/346/235/250/345/260/232/346/230/206/347/240/264/345/235/217/347/272/252/345/276/213/346/223/205/350/207/252/344/273/245/344/270/255/345/244/256/345/220/215/344/271/211/345/217/221/345/207/272/346/226/207/344/273/266/347/232/204/346/211/271/350/257/204.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/186-/346/211/271/345/210/244/347/246/273/345/274/200/346/200/273/350/267/257/347/272/277/347/232/204/345/217/263/345/200/276/350/247/202/347/202/271.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/187-/351/235/222/345/271/264/345/233/242/347/232/204/345/267/245/344/275/234/350/246/201/347/205/247/351/241/276/351/235/222/345/271/264/347/232/204/347/211/271/347/202/271.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/188-/345/205/263/344/272/216/345/233/275/345/256/266/350/265/204/346/234/254/344/270/273/344/271/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/189-/345/205/232/345/234/250/350/277/207/346/270/241/346/227/266/346/234/237/347/232/204/346/200/273/350/267/257/347/272/277.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/190-/345/217/215/345/257/271/345/205/232/345/206/205/347/232/204/350/265/204/344/272/247/351/230/266/347/272/247/346/200/235/346/203/263.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/191-/346/224/271/351/200/240/350/265/204/346/234/254/344/270/273/344/271/211/345/267/245/345/225/206/344/270/232/347/232/204/345/277/205/347/273/217/344/271/213/350/267/257.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/192-/346/212/227/347/276/216/346/217/264/346/234/235/347/232/204/344/274/237/345/244/247/350/203/234/345/210/251/345/222/214/344/273/212/345/220/216/347/232/204/344/273/273/345/212/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/193-/346/211/271/345/210/244/346/242/201/346/274/261/346/272/237/347/232/204/345/217/215/345/212/250/346/200/235/346/203/263.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/194-/345/205/263/344/272/216/345/206/234/344/270/232/344/272/222/345/212/251/345/220/210/344/275/234/347/232/204/344/270/244/346/254/241/350/260/210/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/195-/345/205/263/344/272/216/344/270/255/345/215/216/344/272/272/346/260/221/345/205/261/345/222/214/345/233/275/345/256/252/346/263/225/350/215/211/346/241/210.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/196-/344/270/272/345/273/272/350/256/276/344/270/200/344/270/252/344/274/237/345/244/247/347/232/204/347/244/276/344/274/232/344/270/273/344/271/211/345/233/275/345/256/266/350/200/214/345/245/213/346/226/227.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/197-/345/205/263/344/272/216/343/200/212/347/272/242/346/245/274/346/242/246/343/200/213/347/240/224/347/251/266/351/227/256/351/242/230/347/232/204/344/277/241.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/198-/345/216/237/345/255/220/345/274/271/345/220/223/344/270/215/345/200/222/344/270/255/345/233/275/344/272/272/346/260/221.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/199-/345/234/250/344/270/255/345/233/275/345/205/261/344/272/247/345/205/232/345/205/250/345/233/275/344/273/243/350/241/250/344/274/232/350/256/256/344/270/212/347/232/204/350/256/262/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/200-/351/251/263/342/200/234/350/210/206/350/256/272/344/270/200/345/276/213/342/200/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/201-/343/200/212/345/205/263/344/272/216/350/203/241/351/243/216/345/217/215/351/235/251/345/221/275/351/233/206/345/233/242/347/232/204/346/235/220/346/226/231/343/200/213/347/232/204/345/272/217/350/250/200/345/222/214/346/214/211/350/257/255.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/202-/345/205/263/344/272/216/345/206/234/344/270/232/345/220/210/344/275/234/345/214/226/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/203-/345/206/234/344/270/232/345/220/210/344/275/234/345/214/226/345/277/205/351/241/273/344/276/235/351/235/240/345/205/232/345/233/242/345/221/230/345/222/214/350/264/253/345/206/234/344/270/213/344/270/255/345/206/234.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/204-/345/206/234/344/270/232/345/220/210/344/275/234/345/214/226/347/232/204/344/270/200/345/234/272/350/276/251/350/256/272/345/222/214/345/275/223/345/211/215/347/232/204/351/230/266/347/272/247/346/226/227/344/272/211.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/205-/343/200/212/344/270/255/345/233/275/345/206/234/346/235/221/347/232/204/347/244/276/344/274/232/344/270/273/344/271/211/351/253/230/346/275/256/343/200/213/347/232/204/345/272/217/350/250/200.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/206-/343/200/212/344/270/255/345/233/275/345/206/234/346/235/221/347/232/204/347/244/276/344/274/232/344/270/273/344/271/211/351/253/230/346/275/256/343/200/213/347/232/204/346/214/211/350/257/255.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/207-/345/276/201/350/257/242/345/257/271/345/206/234/344/270/232/345/215/201/344/270/203/346/235/241/347/232/204/346/204/217/350/247/201.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/208-/345/212/240/345/277/253/346/211/213/345/267/245/344/270/232/347/232/204/347/244/276/344/274/232/344/270/273/344/271/211/346/224/271/351/200/240.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/209-/350/256/272/345/215/201/345/244/247/345/205/263/347/263/273.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/210-/347/276/216/345/270/235/345/233/275/344/270/273/344/271/211/346/230/257/347/272/270/350/200/201/350/231/216.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/211-/345/242/236/345/274/272/345/205/232/347/232/204/345/233/242/347/273/223/357/274/214/347/273/247/346/211/277/345/205/232/347/232/204/344/274/240/347/273/237.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/212-/346/210/221/344/273/254/345/205/232/347/232/204/342/200/224/344/272/233/345/216/206/345/217/262/347/273/217/351/252/214.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/213-/347/272/252/345/277/265/345/255/231/344/270/255/345/261/261/345/205/210/347/224/237.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/214-/345/234/250/344/270/255/345/233/275/345/205/261/344/272/247/345/205/232/347/254/254/345/205/253/345/261/212/344/270/255/345/244/256/345/247/224/345/221/230/344/274/232/347/254/254/344/272/214/346/254/241/345/205/250/344/275/223/344/274/232/350/256/256/344/270/212/347/232/204/350/256/262/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/215-/345/234/250/347/234/201/345/270/202/350/207/252/346/262/273/345/214/272/345/205/232/345/247/224/344/271/246/350/256/260/344/274/232/350/256/256/344/270/212/347/232/204/350/256/262/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/216-/345/205/263/344/272/216/346/255/243/347/241/256/345/244/204/347/220/206/344/272/272/346/260/221/345/206/205/351/203/250/347/237/233/347/233/276/347/232/204/351/227/256/351/242/230.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/217-/345/234/250/344/270/255/345/233/275/345/205/261/344/272/247/345/205/232/345/205/250/345/233/275/345/256/243/344/274/240/345/267/245/344/275/234/344/274/232/350/256/256/344/270/212/347/232/204/350/256/262/350/257/235.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/218-/345/235/232/346/214/201/350/211/260/350/213/246/345/245/213/346/226/227/357/274/214/345/257/206/345/210/207/350/201/224/347/263/273/347/276/244/344/274/227.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/219-/344/272/213/346/203/205/346/255/243/345/234/250/350/265/267/345/217/230/345/214/226.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/220-/344/270/255/345/233/275/345/205/261/344/272/247/345/205/232/346/230/257/345/205/250/344/270/255/345/233/275/344/272/272/346/260/221/347/232/204/351/242/206/345/257/274/346/240/270/345/277/203.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/221-/347/273/204/347/273/207/345/212/233/351/207/217/345/217/215/345/207/273/345/217/263/346/264/276/345/210/206/345/255/220/347/232/204/347/214/226/347/213/202/350/277/233/346/224/273.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/222-/346/226/207/346/261/207/346/212/245/347/232/204/350/265/204/344/272/247/351/230/266/347/272/247/346/226/271/345/220/221/345/272/224/345/275/223/346/211/271/345/210/244.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/223-/346/211/223/351/200/200/350/265/204/344/272/247/351/230/266/347/272/247/345/217/263/346/264/276/347/232/204/350/277/233/346/224/273.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/224-/344/270/200/344/271/235/344/272/224/344/270/203/345/271/264/345/244/217/345/255/243/347/232/204/345/275/242/345/212/277.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/225-/345/201/232/351/235/251/345/221/275/347/232/204/344/277/203/350/277/233/346/264/276.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/226-/345/235/232/345/256/232/345/234/260/347/233/270/344/277/241/347/276/244/344/274/227/347/232/204/345/244/247/345/244/232/346/225/260.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/227-/345/205/232/345/206/205/345/233/242/347/273/223/347/232/204/350/276/251/350/257/201/346/226/271/346/263/225.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/books/src/228-/344/270/200/345/210/207/345/217/215/345/212/250/346/264/276/351/203/275/346/230/257/347/272/270/350/200/201/350/231/216.md" +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/references/research/10-personality-profile.md +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/references/research/11-analysis-frameworks.md +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/references/research/12-strategy-frameworks.md +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/references/research/13-organization-action.md +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/references/research/14-voice-and-dialogue.md +0 -0
- /package/template/workflows/person/{M-mao-zedong-cognitive-os → person-m-mao-zedong-cognitive-os}/references/research/15-quote-bank.md +0 -0
- /package/template/workflows/person/{S-steelman-deliberation/_templates → person-s-steelman-deliberation/assets/templates}/decision-template.md +0 -0
- /package/template/workflows/person/{S-steelman-deliberation/_templates → person-s-steelman-deliberation/assets/templates}/steelman-dossier-template.md +0 -0
- /package/template/workflows/person/{S-steelman-deliberation → person-s-steelman-deliberation/references}/deliberate.md +0 -0
- /package/template/workflows/person/{S-steelman-deliberation → person-s-steelman-deliberation/references}/evidence-gate.md +0 -0
- /package/template/workflows/person/{S-steelman-deliberation → person-s-steelman-deliberation/references}/judge.md +0 -0
- /package/template/workflows/specdev/{D-diagnose-bugs → specdev-d-diagnose-bugs}/scripts/hitl-loop.template.sh +0 -0
- /package/template/workflows/specdev/{G-grill-with-docs → specdev-g-grill-with-docs/assets}/design-tree-template.json +0 -0
- /package/template/workflows/specdev/{G-grill-with-docs → specdev-g-grill-with-docs/references}/log-format.md +0 -0
- /package/template/workflows/specdev/{G-grill-with-docs → specdev-g-grill-with-docs/references}/stakeholder-questionnaire.md +0 -0
- /package/template/workflows/specdev/{P-goal-plan → specdev-p-goal-plan}/references/multi-conflict-and-drift.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype/assets}/logic-template.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/METHODOLOGY.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/README.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/data/extended-projects.json +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/data/projects.json +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/reference/USAGE.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/reference/design-tokens.css +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/report/OPEN_SOURCE_UI_RESEARCH_2026.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/research/PROJECT_TEMPLATE.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/research/README.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/research/claude-code-modern-clients.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/research/creative-ai-communication.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/research/data-dev-tools.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/research/personal-multiplatform-apps.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/research/productivity-collaboration.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/01-dense-ide.html +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/02-monochrome-console.html +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/03-soft-personal-ai.html +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/04-responsive-web.html +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/05-mobile-supervisor.html +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/06-cross-platform-workspace.html +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/07-local-first-content.html +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/08-media-first.html +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/README.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/assets/ATTRIBUTION.md +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/assets/landscape.jpg +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/assets/lucide.js +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/assets/mountain.jpg +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/assets/workspace.jpg +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/index.html +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/package-lock.json +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/package.json +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/screenshots/index-desktop.png +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/scripts/gallery.js +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/styles/base.css +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/styles/pages.css +0 -0
- /package/template/workflows/specdev/{P-prototype → specdev-p-prototype}/design-library/research-snapshot/ui-gallery/tests/gallery.spec.js +0 -0
- /package/template/workflows/specdev/{P-prototype/tools → specdev-p-prototype/scripts}/materialize-prototype.mjs +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage/assets}/pr-record-template.md +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage/assets}/publish-template.md +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage/assets}/source-template.md +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage/assets}/triage-run-template.md +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage}/references/classification-map.md +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage}/references/public-projection.md +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage}/references/release-authentication.md +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage}/references/release-notes-injection.md +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage}/references/workflow-yaml-reference.md +0 -0
- /package/template/workflows/specdev/{T-triage → specdev-t-triage}/scripts/github-transport.mjs +0 -0
- /package/template/workflows/specdev/{W-wayfinder → specdev-w-wayfinder/assets}/solution-comment-template.md +0 -0
- /package/template/workflows/specdev/{W-wayfinder → specdev-w-wayfinder}/references/initiative-template.json +0 -0
|
@@ -4,17 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
本文是可独立上传的单文件能力快照,不依赖 Speculo CLI 的根别名或源目录。执行时统一采用以下逻辑布局:
|
|
6
6
|
|
|
7
|
-
- 项目根下的 `specdev/`
|
|
8
|
-
- 当前 change 位于 `specdev/changes/{change}/`,其中 `{change}`
|
|
9
|
-
- 当前 change 的设计、规划和证据工件都写入该目录;永久 ADR、领域上下文和研究分别写入 `specdev/adr/`、`specdev/context/` 和 `specdev/research
|
|
10
|
-
- `specdev/
|
|
7
|
+
- 项目根下的 `specdev/` 是业务工件区。普通 Work 的直接使用不要求安装元数据;先明确项目、可读方法资源和获批写入根,不按 cwd 猜测另一个项目。
|
|
8
|
+
- 当前 change 位于 `specdev/changes/{change}/`,其中 `{change}` 使用真实日期 `YYYY-MM-DD-<kebab-topic>`。新归档位于 `specdev/changes/archive/{change}/`;旧月份归档原位只读,同名跨位置冲突必须先解决。
|
|
9
|
+
- 当前 change 的设计、规划和证据工件都写入该目录;永久 ADR、领域上下文和研究分别写入 `specdev/adr/`、`specdev/context/` 和 `specdev/research/`。永久设计位于 `specdev/design/`,消费、确认、离线导出和原 owner 恢复遵守下方 `<design-portability>` 标签。
|
|
10
|
+
- 整体结论只在 `specdev/changes/{change}/README.md` 的唯一正文行 `Outcome: active|completed|cancelled` 中表达。新 change 不创建重复业务状态 JSON,也不默认创建 config;实际工具配置只在使用该分支时读取。正文、真实验收与 owner 证据共同决定能否完成或取消,Outcome 本身不授权。任务进度由 README、Goal 或 Ticket 择一负责。
|
|
11
|
+
- 轻量 README 保留 scope、acceptance、verification 明确锚点、真实 AC 和证据;复杂 Goal/Ticket、并行隔离、Git 集成与 UI 专用合同仍按内联规则执行。当前工程 docs 位于 `docs/` 或引用项目原有负责文档;只在明确请求时建立基线。
|
|
11
12
|
- 项目代码与测试始终使用项目根相对路径;不写机器绝对路径。工件之间使用上述逻辑路径,不使用 Speculo 的运行时路径标签。
|
|
12
|
-
-
|
|
13
|
+
- 如果网页平台不能直接写项目文件,则以 `### FILE: specdev/changes/{change}/README.md` 等完整路径输出所有本次修改文件的完整内容,标明需要保存,随后列实际所需的 Spec/Goal/Ticket、源码资源、确认/浏览器证据与 pending 网关请求;不输出重复旧业务状态。下一会话先读用户保存后重新提供的完整工件;不得把无法写文件伪装成已经持久化。
|
|
13
14
|
- 若本地项目提供 Speculo Node 校验器,可运行它补充结构校验;纯网页环境按本文内联的 schema、Ready 清单和完成标准逐项核对,并明确记录未运行的自动校验。
|
|
14
15
|
- 本地只读 Goal 控制器和 Plan 合同校验库不随网页快照提供,不能把其名称当作可执行命令。网页执行者按内联 map-control/调用合同逐项计算依赖与门禁;缺少真实项目 Skill 源或执行能力时阻塞对应任务,不声称自动验证通过。
|
|
15
16
|
- 提交、推送、合并、部署、发布、归档移动和不可逆迁移仍需用户明确授权。
|
|
16
17
|
|
|
17
|
-
> 激活后读取
|
|
18
|
+
> 激活后读取 下方 `<domain-runtime>` 标签。
|
|
18
19
|
|
|
19
20
|
每张票都是供新上下文执行的 Plan:说明背景、来源、目标、非目标、真实项目 SKILL 调用、修改顺序、验证和失败停止点。Tickets Map 是统一启动与恢复入口,不是静态清单;它不复制 Ticket 的状态权威。
|
|
20
21
|
|
|
@@ -22,13 +23,15 @@
|
|
|
22
23
|
|
|
23
24
|
先读 下方 `<activation-and-memory>` 标签;按相关条目定位上游 Spec/ADR/CONTEXT、代码与项目 Agent 指令,再回读当前拆分所需原文。只枚举 Skill 的元数据与触发路由,不默认展开全部技能。
|
|
24
25
|
|
|
26
|
+
先判断是否确需拆票;单 change、明确范围/AC 且无需 DAG/独立票的任务保留 README 或无票 Goal 清单,不为工具制造 Map。用户明确要求 Ticket 则交付;复杂并行、Deep 或跨 change 使用完整合同。
|
|
27
|
+
|
|
25
28
|
## 从合同到可执行票
|
|
26
29
|
|
|
27
30
|
1. **输入与范围**:确认目标、非目标、用户指定数量、验收合同和未知项。高影响未决问题回到 G;无 Ready Spec 时,只有用户材料已等价覆盖全部合同才可规划。
|
|
28
31
|
2. **地形与绑定**:定位真实可维护源、调用方、测试接缝和 Skill 根。按 下方 `<ref-common-rules-skill-invocation>` 标签 为每票解析实际 Skill ID、入口摘要、调用阶段、输入、产出与失败动作;没有适用项目 Skill 时记录扫描证据,不造名称。
|
|
29
|
-
3. **垂直切片**:需要具体拆分时读取 下方 `<ref-t-tickets-references-planning-procedure>` 标签 与 下方 `<decomposition-rules>` 标签。保留 Prefactor、Expand → Migrate → Contract 和真实 DAG,不按技术层制造空价值任务。
|
|
30
|
-
4. **写 Plan**:使用 下方 `<ticket-template>` 标签。Lite
|
|
31
|
-
5. **写总控**:使用 下方 `<tickets-map-template>` 标签,记录共同背景、Skill
|
|
32
|
+
3. **垂直切片**:需要具体拆分时读取 下方 `<ref-specdev-t-tickets-references-planning-procedure>` 标签 与 下方 `<decomposition-rules>` 标签。保留 Prefactor、Expand → Migrate → Contract 和真实 DAG,不按技术层制造空价值任务。
|
|
33
|
+
4. **写 Plan**:使用 下方 `<ticket-template>` 标签。Lite 仅减少不适用说明,不删用户数量、权限、验收或停止条件。所有票必须使用 `plan_contract_version: 1`;旧格式不进入执行。
|
|
34
|
+
5. **写总控**:使用 下方 `<tickets-map-template>` 标签,记录共同背景、Skill 最低路由、合同覆盖、依赖和明确控制入口;进度、Ready 与执行 owner 每次从 Ticket/Evidence 回读,不写入 Map。按 AC 反查至少一个负责验证的 Ticket,暴露未覆盖和重复所有权;依赖环、路径重叠与语义共享资源分别检查,不能用“可并行”文字替代实际 DAG/写集。
|
|
32
35
|
6. **Definition of Ready**:读取 下方 `<ticket-readiness>` 标签,并调用 下方 `<ref-common-skills-plan-quality-review-skill>` 标签。缺失引用、必需 Skill、可运行验收或权限边界,当前票不可 ready。
|
|
33
36
|
7. **与用户核对**:展示全部票、可观察产物、依赖、深度、风险、Skill 和未决问题。保留用户要求的交付数量;已授权自主规划且无关键未知时不重复请求形式确认。
|
|
34
37
|
8. **验证、回读和交付**:按下述命令检查,再回读真实 Ticket/Map,报告修改、验证结果和未完成项。规划完成不自动进入实现。
|
|
@@ -40,9 +43,17 @@ node 本地只读 Goal 控制器(不含于网页快照) --map specdev/change
|
|
|
40
43
|
|
|
41
44
|
需要正式 Goal、多 change、迁移或跨票 Gate 时交给 “目标规划阶段”;少量线性票可从 map 按已授权范围调用 “实现阶段”。不得以“精简”为理由静默更换默认工具或少交付。
|
|
42
45
|
|
|
43
|
-
##
|
|
46
|
+
## 工程义务与证据失效
|
|
47
|
+
|
|
48
|
+
每票按实际影响列明真实生产消费者、接口两端、文档/升级说明、回归与模型可见输出的责任;删除测试要给出原风险在新测试中的承接。风险及证据选择使用 下方 `<evidence-and-verification>` 标签,失败状态使用 下方 `<ref-common-rules-error-handling>` 标签。工具定义或上下文变更才加载 下方 `<ref-common-rules-agent-experience>` 标签。
|
|
49
|
+
|
|
50
|
+
将有关检查合并进负责该行为的 Ticket,不为每个检查项创建一票。documentation 仍用现有 kind,性能实施引用 R 的测量基线,不增加分类 schema。每票说明 base/head、配置、输入或 Skill 改变后哪些证据需重新验证。
|
|
51
|
+
|
|
52
|
+
## UI 设计绑定与逻辑证据
|
|
44
53
|
|
|
45
|
-
|
|
54
|
+
UI 拆票必读 下方 `<design-contract>` 标签 与已批准 specdev/changes/{change}/DESIGN.md。UI Ticket 使用 `ui_change: true` 和 `design_ref: {revision, digest, pages, acceptance}` 固定本 change 设计版本、designDigest、页面 ID 与验收 ID;Map 给出共同基线与读取位置。expected_changes 明确命中 UI 文件时同样需要绑定,不能以缺字段绕过。纯非 UI 票可省略或设 ui_change=false、design_ref=null,不制造 UI 门禁。
|
|
55
|
+
|
|
56
|
+
将组件复用、页面/状态、响应式与真实浏览器验收放入相应垂直切片;缺确认或摘要漂移返回 P,不让执行者重新选择。LOGIC 证据保留 locator/hash,模拟原型不能自动成为生产实现。
|
|
46
57
|
|
|
47
58
|
---
|
|
48
59
|
|
|
@@ -109,6 +120,10 @@ node 本地只读 Goal 控制器(不含于网页快照) --map specdev/change
|
|
|
109
120
|
|
|
110
121
|
已确认根因时,以 `specdev/changes/{change}/diagnosis.md` 的修复契约为依据;根因未知时先运行 “Bug 诊断阶段”。
|
|
111
122
|
|
|
123
|
+
## 工程证据随行为切片
|
|
124
|
+
|
|
125
|
+
把文档、失败恢复、真实入口与回归检查放入拥有该行为的票,不逐检查项拆票制造交接。复杂迁移保留 Expand → Migrate → Contract 的真实顺序和旧数据核对;低风险文档继续使用现有 documentation kind。
|
|
126
|
+
|
|
112
127
|
</decomposition-rules>
|
|
113
128
|
|
|
114
129
|
<ticket-readiness>
|
|
@@ -122,9 +137,11 @@ node 本地只读 Goal 控制器(不含于网页快照) --map specdev/change
|
|
|
122
137
|
- [ ] frontmatter 字段完整,Ticket ID、文件名和 `specdev/changes/{change}/tickets-map.md` 一致。
|
|
123
138
|
- [ ] Tickets Map 包含总体实施背景与项目 Skill 读取矩阵;当前 Ticket 被 `ALL` 或自身 Ticket ID 覆盖。
|
|
124
139
|
- [ ] 矩阵中的项目 Skill 均使用真实存在的项目根相对 `.../SKILL.md`,并声明 Trigger / Scope、读取时机和用途;没有适用项时记录实际扫描范围而不生成虚假路径。
|
|
125
|
-
- [ ] Ticket 明确要求 Lead 与
|
|
140
|
+
- [ ] Ticket 明确要求 Lead 与 实现执行者 按 Map -> 适用项目 Skill -> 当前 Ticket 的顺序读取;矩阵是最低必读集合而非 allowlist。
|
|
126
141
|
- [ ] 可观察产出单一、明确且可验证。
|
|
127
142
|
- [ ] 来源和验收合同映射存在。
|
|
143
|
+
- [ ] UI Ticket 的 ui_change/design_ref 固定批准 DESIGN 的 revision、digest、pages 与 acceptance;实际 UI 文件范围不能靠省略标记绕过,非 UI 票无此门禁。
|
|
144
|
+
- [ ] UI 实施的 Design Conformance 证据责任、页面/状态验收与真实浏览器路径明确;设计漂移返回 P。
|
|
128
145
|
- [ ] IN、REUSE、OUT 无冲突。
|
|
129
146
|
- [ ] 高影响未决问题为零。
|
|
130
147
|
- [ ] `blocked_by` 指向存在的 Ticket,DAG 无环。
|
|
@@ -164,6 +181,10 @@ status: ready
|
|
|
164
181
|
|
|
165
182
|
未通过时保持 `ready: false`,并在未决问题、阻塞原因或偏差记录中写明原因。
|
|
166
183
|
|
|
184
|
+
## 适用工程义务
|
|
185
|
+
|
|
186
|
+
Ready 前确认真实调用方、文档/升级说明、正常与失败验证、恢复条件和证据失效条件。删除测试有风险承接;性能票有测量基线和真实用户操作;文档票分清纯说明与可见行为。缺少 required 验证不因工具暂不可用而标 ready。
|
|
187
|
+
|
|
167
188
|
</ticket-readiness>
|
|
168
189
|
|
|
169
190
|
<ticket-template>
|
|
@@ -179,6 +200,8 @@ skill_scan: unreviewed
|
|
|
179
200
|
skill_bindings: []
|
|
180
201
|
resource_claims: []
|
|
181
202
|
artifact: ticket
|
|
203
|
+
ui_change: false
|
|
204
|
+
design_ref: null
|
|
182
205
|
change: <YYYY-MM-DD-topic>
|
|
183
206
|
id: T-01
|
|
184
207
|
title: <标题>
|
|
@@ -205,7 +228,7 @@ shared_path_owners: []
|
|
|
205
228
|
- **上游 Spec:** `specdev/changes/{change}/spec.md`
|
|
206
229
|
- **完成 Evidence:** `specdev/changes/{change}/evidence/T-01.md`
|
|
207
230
|
|
|
208
|
-
实现本 Ticket 时,Lead 与
|
|
231
|
+
实现本 Ticket 时,Lead 与 实现执行者 必须按顺序完整读取总体 Map,读取项目 Skill 的 frontmatter 与入口并只展开适用于 `ALL`/`T-01` 的匹配项,再读取本 Ticket 与相关上游工件。Map 中的 Skill 是最低必读集合;新的匹配项先由 Lead 同步到 Map 并重新校验。
|
|
209
232
|
|
|
210
233
|
## 1. 战略与来源
|
|
211
234
|
|
|
@@ -310,7 +333,7 @@ E2E 由实际跨边界行为与风险决定,不限于 UI;required 模式不
|
|
|
310
333
|
- [ ] Ticket 已按 Goal Plan 策略形成非空 implementation/source commit,direct-parent 或 candidate 验证通过且父分支 result 已记录。
|
|
311
334
|
- [ ] E2E disposition 已执行;required 模式 E2E 在 parent-candidate、current 模式在 current workspace 由 Lead 完成。
|
|
312
335
|
- [ ] 未发生未批准的范围、契约或发布偏差。
|
|
313
|
-
- [ ] Ticket
|
|
336
|
+
- [ ] Ticket 状态有本票 Evidence 支撑;Tickets Map 的导航、依赖和合同覆盖仍有效,不复制本票进度。
|
|
314
337
|
|
|
315
338
|
## 11. SKILL 调用计划
|
|
316
339
|
|
|
@@ -324,6 +347,10 @@ E2E 由实际跨边界行为与风险决定,不限于 UI;required 模式不
|
|
|
324
347
|
- **检查点:** 记录源版本、绑定摘要、已完成步骤、Evidence 和未闭合动作;恢复前回读。
|
|
325
348
|
- **完成出口:** 全部适用验收及实际 Skill 证据通过,再将结果交回 Goal;未完成项明确列出。
|
|
326
349
|
|
|
350
|
+
## 工程验收补充(适用时)
|
|
351
|
+
|
|
352
|
+
列明真实消费者/入口、文档和升级说明、错误后的状态保证、恢复责任、旧测试的风险承接,以及代码/输入/配置/Skill 变化时需重验的证据。性能票引用用户操作与基线;documentation 票区分纯说明与模型/用户可见变化。无关项写不适用及理由,不逐项另造 Ticket。
|
|
353
|
+
|
|
327
354
|
</ticket-template>
|
|
328
355
|
|
|
329
356
|
<tickets-map-template>
|
|
@@ -361,7 +388,7 @@ status: draft
|
|
|
361
388
|
|
|
362
389
|
### 项目 Skill 读取矩阵
|
|
363
390
|
|
|
364
|
-
每个 Ticket 的 Lead 或
|
|
391
|
+
每个 Ticket 的 Lead 或 实现执行者 都必须先完整读取本 Map,再读取候选项目 Skill 的 frontmatter 与入口;只有适用于 `ALL` 或当前 Ticket ID、且 scope/路径/技术域/验证条件命中的 Skill 才完整读取,最后进入当前 Ticket。下表是发布时已确认的**最低必读集合,不是 Skill allowlist**;项目 Agent 指令或实现范围触发其他项目 Skill 时,先定位并读取其入口,由 Lead 更新本 Map、重新校验后继续。
|
|
365
392
|
|
|
366
393
|
项目 Skill 使用项目根相对 Path,例如 `.agents/skills/{skill-name}/SKILL.md`;不得写机器绝对路径。若没有适用项目 Skill,保留一行 `无(已扫描项目 Skill 入口,未发现适用项)`,并在 Trigger / Scope 中记录实际扫描范围。
|
|
367
394
|
|
|
@@ -371,16 +398,16 @@ status: draft
|
|
|
371
398
|
|
|
372
399
|
## 2. 执行清单
|
|
373
400
|
|
|
374
|
-
| ID | Ticket |
|
|
375
|
-
|
|
376
|
-
| T-01 | `specdev/changes/{change}/ticket/01-<ticket-name>.md` |
|
|
401
|
+
| ID | Ticket | 跨票 Gate/依赖导航 |
|
|
402
|
+
|---|---|---|
|
|
403
|
+
| T-01 | `specdev/changes/{change}/ticket/01-<ticket-name>.md` | 本 Map 第 3、6 节;正式 Goal 存在时指向原 Gate |
|
|
377
404
|
|
|
378
|
-
Ticket frontmatter
|
|
405
|
+
本表只导航实际 Ticket 和跨票合同。状态、Ready、执行 owner、深度、风险及本票写集从 Ticket frontmatter 回读,实际 workspace/集成结果从本票 Evidence 回读;不在 Map 缓存或随进度更新。Map frontmatter 的 status 表示本 Map 的结构/合同就绪与验收,不汇总或代替单票进度。
|
|
379
406
|
|
|
380
407
|
## 3. 依赖 DAG
|
|
381
408
|
|
|
382
409
|
```text
|
|
383
|
-
T-01
|
|
410
|
+
T-01
|
|
384
411
|
├─→ T-02
|
|
385
412
|
└─→ T-03
|
|
386
413
|
└─→ T-04
|
|
@@ -398,7 +425,7 @@ T-01 [READY]
|
|
|
398
425
|
|
|
399
426
|
## 5. 并行与路径所有权
|
|
400
427
|
|
|
401
|
-
-
|
|
428
|
+
- 并发与集成尝试策略来自原 Goal 的 `Execution Policy Source` 或实际项目约定;存在有效 `specdev/config.json` 时核对其限制,不为确定上限创建 config。未采用完整并行计划时缺省 current/direct-parent、单 writer;required 模式取计划、现有 config 和宿主能力允许的上限,Lead 实际参与实现时计入。
|
|
402
429
|
- review/research/test-observation agent 不设 SpecDev 数字上限,但保持只读。
|
|
403
430
|
- shared owner 为专用 Ticket;Lead 是 SpecDev 状态与父分支 integration owner。
|
|
404
431
|
- 项目路径契约以 Ticket frontmatter 为准。
|
|
@@ -410,16 +437,16 @@ T-01 [READY]
|
|
|
410
437
|
|
|
411
438
|
## 6. Gate、Wave 与集成点
|
|
412
439
|
|
|
413
|
-
T-tickets 可以标注候选 Wave
|
|
440
|
+
T-tickets 可以标注候选 Wave 和行为里程碑;单票 E2E disposition 在原 Ticket。需要正式跨 Ticket 编排时,由 “目标规划阶段” 完成 Gate、Wave、Lead、动态派单边界、candidate 集成顺序、发布与恢复,本 Map 只导航相应 Goal 章节。
|
|
414
441
|
|
|
415
442
|
## 7. 横切契约与风险
|
|
416
443
|
|
|
417
444
|
只记录跨多个 Ticket 的数据、安全、兼容、共享接口、迁移、发布和恢复规则。单 Ticket 规则留在具体 `specdev/changes/{change}/ticket/NN-<ticket-name>.md`。
|
|
418
445
|
|
|
419
|
-
## 8.
|
|
446
|
+
## 8. 维护规则
|
|
420
447
|
|
|
421
|
-
- Ticket
|
|
422
|
-
- Ticket ID
|
|
448
|
+
- Ticket 进度改变时只更新原 Ticket/Evidence;查看进度或恢复时重新读取它们,Map 保持不变;
|
|
449
|
+
- Ticket 新增、移除、ID/路径或依赖合同变化时,修复本 Map 的导航、DAG 与覆盖;不从旧 Map 恢复票级状态;
|
|
423
450
|
- 项目 Skill 新增、移动、删除、触发范围变化或实现中发现新的适用 Skill 时,先同步读取矩阵并重新校验;
|
|
424
451
|
- Goal Plan 存在时,Wave、Gate 和 owner 以 `specdev/changes/{change}/goal-plan.md` 为编排权威;
|
|
425
452
|
- 依赖、合同覆盖或路径所有权变化后运行 Speculo Node 校验器;
|
|
@@ -427,7 +454,7 @@ T-tickets 可以标注候选 Wave、E2E disposition 和行为里程碑。需要
|
|
|
427
454
|
|
|
428
455
|
## 9. 总控与恢复
|
|
429
456
|
|
|
430
|
-
从本 Map 进入 “目标规划阶段” 的 plan/run/resume/replan/verify。先运行 本地只读 Goal 控制器(不含于网页快照) 的 `--map` 只读检查,再按 下方 `<ref-p-goal-plan-references-map-control>` 标签 调用 I 和真实 Skill、验收、更新状态直到完成或明确阻塞;此工具本身不执行代码。
|
|
457
|
+
从本 Map 进入 “目标规划阶段” 的 plan/run/resume/replan/verify。先运行 本地只读 Goal 控制器(不含于网页快照) 的 `--map` 只读检查,再按 下方 `<ref-specdev-p-goal-plan-references-map-control>` 标签 调用 I 和真实 Skill、验收、更新状态直到完成或明确阻塞;此工具本身不执行代码。
|
|
431
458
|
|
|
432
459
|
- frontmatter 中 requested_deliverables 用 JSON 对象数组记录用户明确要求的名称与正整数 count;没有额外数量要求时用空数组,并在 deliverable_policy 记录依据,不能保留 unreviewed。
|
|
433
460
|
- requested_deliverables 属于用户交付合同;done 之前按实际产物核对,不从 Ticket 数量推断交付数量。
|
|
@@ -505,6 +532,12 @@ Ticket 告诉执行者:做什么、为什么、不能改变什么、按什么
|
|
|
505
532
|
|
|
506
533
|
SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个工件只承担自己的权威边界。
|
|
507
534
|
|
|
535
|
+
## 轻量输入与唯一事实
|
|
536
|
+
|
|
537
|
+
整体结论仅在 change README 顶层唯一 `Outcome: active | completed | cancelled` 行;简单任务的范围、可判定 AC、当前清单、真实验证与下一步也由 README 负责。被工具引用的章节使用唯一显式 `<a id="scope"></a>`、`<a id="acceptance"></a>`、`<a id="verification"></a>` 锚点。无 Ticket 的 Goal 只在原计划维护清单;有独立 Ticket 的进度在票及 Evidence,README/Goal/Map 不复制状态。
|
|
538
|
+
|
|
539
|
+
工具用临时 `{path, section?}` 定位原文,不创建登记表。存在独立 Spec 默认读取它;仅当前合同允许且 README 等价章节完整时读取 README。两份都自称规格权威时停止裁决,不按时间挑一份。跨 change 集成、Deep、真实并行或复杂设计依赖使用完整工件,迁出位置改成导航;用户明确要求 Spec/Ticket/Goal 时照办。UI 小任务同样保留 DESIGN、具体批准及真实浏览器;LOGIC-only 保留独立验证。无需拆票的轻量任务不制造 Ticket/Map。
|
|
540
|
+
|
|
508
541
|
## 1. 工件职责
|
|
509
542
|
|
|
510
543
|
| 工件 | 具体位置 | 必须决定 | 不应决定 |
|
|
@@ -520,7 +553,7 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
520
553
|
| Change 架构决策 | `specdev/changes/{change}/ADR.md` | 已成为本 change 下游合同的架构决策、原因、后果和替代关系 | 永久项目 ADR 或尚未决定的方案集合 |
|
|
521
554
|
| Spec | `specdev/changes/{change}/spec.md` | 用户问题、外部行为、范围、验收合同、非功能要求和已锁定实现约束 | 文件级施工步骤 |
|
|
522
555
|
| Ticket | `specdev/changes/{change}/ticket/NN-<ticket-name>.md` | 单一垂直切片的行为、决策、范围、路径所有权、执行路线和验证证据 | 跨 Ticket 里程碑治理或远程 Issue 编号 |
|
|
523
|
-
| Tickets Map | `specdev/changes/{change}/tickets-map.md` | 总体实施背景、项目 Skill 最低调用路由、依赖 DAG、合同覆盖、
|
|
556
|
+
| Tickets Map | `specdev/changes/{change}/tickets-map.md` | 总体实施背景、项目 Skill 最低调用路由、依赖 DAG、合同覆盖、Gate 导航、并行候选和路径冲突 | 单 Ticket 的完整实现契约、Ready、状态或执行 owner 副本 |
|
|
524
557
|
| Goal Plan | `specdev/changes/{change}/goal-plan.md` | 跨 Ticket 调度、Gate、共享所有权、迁移顺序、集成和偏差治理 | 复制 Ticket 全文 |
|
|
525
558
|
| Implementation Map | `specdev/changes/{change}/implementation-map.md` | Ready 成员、组合 Ticket inventory、跨 change dependency/serialization 与 revision | 创建或改写子 Spec、Ticket 或实现细节 |
|
|
526
559
|
| Implementation Plan | `specdev/changes/{change}/implementation-plan.md` | 父 Lead、全局 workspace/实现上限、frontier/Wave/locks/integration queue 和可恢复进度投影 | 改写子 change 权威或伪造完成 |
|
|
@@ -528,32 +561,33 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
528
561
|
| Evidence | `specdev/changes/{change}/evidence/T-NN.md` | 实际修改、命令、结果、验收映射、偏差、风险和提交引用 | 新的产品或架构决策或远程 Issue 正文 |
|
|
529
562
|
| Change 学习图解 | `specdev/changes/{change}/learning/index.md` 与 `specdev/changes/{change}/learning/{number}_{topic}.md` | 面向零专业背景读者解释当前 change 的已验证工件、实现和测试事实;索引按序号持续追加 | 产品决定、架构决定、实现授权或 Learning workflow 知识 |
|
|
530
563
|
| 代码审查 | `specdev/changes/{change}/reviews/CR-###.md` | 固定点、标准轴和规范轴 finding | 实施修复或合并两轴排名 |
|
|
531
|
-
|
|
|
564
|
+
| 项目设计基线 | specdev/design/DESIGN.md | 跨 change 的语义 token、组件/交互规范、版本及来源;A 唯一正式写入 | 单次页面设计或未批准提案 |
|
|
565
|
+
| Change 设计合同 | specdev/changes/{change}/DESIGN.md | 本 change 已批准的页面、状态、视觉/交互、基线版本和例外;P 拥有 | 改写永久基线或替代 Spec/ADR |
|
|
566
|
+
| UI 设计包 | `specdev/changes/{change}/prototypes/{design-id}/design-system.md`、`specdev/changes/{change}/prototypes/{design-id}/comparison/` 与 `specdev/changes/{change}/prototypes/{design-id}/final/` | 项目 UI 检测、模板组合、集中批准证据、可运行 HTML/CSS/JS 源码与浏览器证据 | 生产 UI 实现或替用户确认高影响偏好 |
|
|
532
567
|
| Stakeholder 问卷 | `specdev/changes/{change}/questionnaires/{slug}.md` | 第三方原始回答和恢复条件 | 未经转录确认的产品/架构决定 |
|
|
533
568
|
| Wayfinder 地图 | `specdev/changes/{change}/wayfinder-map.md` | 目的地、说明、已关闭决策索引、战争迷雾和范围之外 | 开放 Ticket 正文或答案详情 |
|
|
534
569
|
| Wayfinder Ticket | `specdev/changes/{change}/investigation/{investigation-id}.md` | 一个可精确陈述的问题、类型、阻塞和关闭状态 | 解决方案评论或交付目标 |
|
|
535
570
|
| Wayfinder solution comment | `specdev/changes/{change}/investigation/comments/{investigation-id}/NN-solution.md` | Ticket 的答案、结果事实和资产指针 | 地图索引或产品实现 |
|
|
536
571
|
| 架构审查 | `specdev/changes/{change}/architecture-review.md` | 结构性候选、code-judo 机会、证据、选择和访谈状态 | 未经用户选择的执行契约 |
|
|
537
572
|
|
|
538
|
-
UI 设计包中的 `{design-id}` 由 P-prototype 分配为当前 change 内最小未占用的 `UI-NNN
|
|
573
|
+
UI 设计包中的 `{design-id}` 由 P-prototype 分配为当前 change 内最小未占用的 `UI-NNN`;design-system.md 保留文件名但只拥有源码与证据,change DESIGN 是当前设计合同;comparison 与 final 不建立第二套规则。UI 分支按 下方 `<design-contract>` 标签 处理继承、确认、失效与下游硬引用。
|
|
539
574
|
|
|
540
|
-
Change CONTEXT/ADR 是 active change
|
|
575
|
+
Change CONTEXT/ADR/DESIGN 是 active change 内各自领域的执行权威,不是 workflow 级永久知识。G 和其他设计/执行 Works 只读 `specdev/context/` 与 `specdev/adr/`;ADR/context 的正式写入只有 A 在适用证据、价值评估和具体授权通过后执行;独立维护无需虚构 change,research/非标准 store 仍按实际声明及原 owner 判断,不能自动纳管;design 的首次批准意图发布与归档提升均只经 A 设计网关,按 design-contract 执行。未毕业内容随归档 change 保留,不能从 change 工件消失。
|
|
541
576
|
|
|
542
577
|
## 2. 权威顺序
|
|
543
578
|
|
|
544
|
-
|
|
579
|
+
先确定问题类型,不以一个万能优先级覆盖全部事实:
|
|
580
|
+
|
|
581
|
+
- 原始请求由 source 负责;产品目标和真实授权来自用户决定,当前 Spec/README 负责已确认外部行为。
|
|
582
|
+
- 当前实现是什么,以真实源码、运行与验证为证;代码不静默授权修改已批准目标。
|
|
583
|
+
- 长期取舍由 ADR 负责,领域含义和兼容范围由 context 负责;当前工程用法由负责 docs/源码维护,不复制决策全文。
|
|
584
|
+
- 当前 change 的已接受 ADR 约束本次架构;与永久知识冲突必须显式记录替代范围,未通过 A 网关不改永久版本。
|
|
585
|
+
- Ticket 拥有本票范围/依赖/写集/实现证据;Goal 和父 Implementation Map/Plan 拥有各自的 Gate、组合依赖、workspace 与集成安排,不能覆盖子行为合同。
|
|
586
|
+
- 日志与历史解释出处,未确认推断不能提升为当前事实。
|
|
545
587
|
|
|
546
|
-
|
|
547
|
-
2. 当前 change 已接受的架构决策:`specdev/changes/{change}/ADR.md`;
|
|
548
|
-
3. 永久 ADR 与领域上下文:`specdev/adr/`、`specdev/context/`;
|
|
549
|
-
4. 当前外部行为权威:`specdev/changes/{change}/spec.md`;
|
|
550
|
-
5. 当前 Ticket 契约:`specdev/changes/{change}/ticket/NN-<ticket-name>.md`;
|
|
551
|
-
6. 当前跨 Ticket 编排:`specdev/changes/{change}/goal-plan.md`;
|
|
552
|
-
7. 若当前 change 属于父实现 change,父 Implementation Map 对组合 Ticket dependency/serialization 具有权威,父 Implementation Plan 拥有全局 workspace、frontier 与 integration queue;
|
|
553
|
-
8. 当前代码与运行事实;
|
|
554
|
-
9. 旧计划、旧日志和未经确认的推断。
|
|
588
|
+
视觉/交互事项先读取已批准 change DESIGN 和其引用的项目设计 revision;它不能覆盖 Spec 的外部行为或 ADR 的架构决定。缺少确认、内容漂移或规则冲突时返回 P,不由下游重新选择设计。
|
|
555
589
|
|
|
556
|
-
当前 change 决定与永久知识冲突时,必须在 LOG/ADR
|
|
590
|
+
当前 change 决定与永久知识冲突时,必须在 LOG/ADR(设计事项为 DESIGN overrides)中显式说明替代关系;它只约束当前 change,直到 A 决定是否提升并更新永久版本。
|
|
557
591
|
|
|
558
592
|
`specdev/changes/{change}/source.md` 只对“原始输入是什么”具有权威;后续用户决定、ADR 和 Spec 可以显式演进该意图。远程来源在摄入后发生变化不会自动改写本地合同,必须重新 Triage。GitHub 上由 publish 投影出的 Issue 不是开发权威;发布计数以 `specdev/changes/{change}/publish.md` 为准。GitHub 上由 capture 记下的 inbox Issue 也不是开发权威;inbox 计数以 `specdev/capture.md` 为准,缺失该文件视为空 inbox。
|
|
559
593
|
|
|
@@ -599,6 +633,12 @@ W 的 `specdev/changes/{change}/initiative.json` 只拥有候选 change 的边
|
|
|
599
633
|
- P:specdev/changes/{change}/prototypes/LOGIC-NNN/logic.md 记录逻辑模型与浏览器证据;index.html 是可运行原型,ready 时 hash 与记录一致。
|
|
600
634
|
- 来源更新:specdev/changes/{change}/source.md 冻结后保持不变。T 将后续读取写入 specdev/changes/{change}/sources/SRC-###.md,记录 replaces、固定 SHA/hash、完整性和原 locator,triage 正文选择有效快照;不得把新远程事实自动升级为已接受 Spec。
|
|
601
635
|
|
|
636
|
+
## 专业分支的证据归属
|
|
637
|
+
|
|
638
|
+
R.performance 的测量卡、原始样本引用和优化候选仍由 architecture-review 拥有,不直接修改生产代码。I.documentation 修改获批项目文档并在原本票或 Direct Spec Evidence 保存验证;不另造文档状态。D.evidence-triage 在 diagnosis 的现象/事件节记录观察、未知与下一检查;它不是已经接受的根因或修复合同。具体记录见 下方 `<ref-common-rules-engineering-evidence>` 标签。
|
|
639
|
+
|
|
640
|
+
代码、运行证据可以证明计划尚未实现或已过时,但不能改写用户目标。ADR 记录采纳与真实备选;未确认解释属于 LOG/设计树,未完成计划不能进入当前事实摘要。实际文档职责遵守 下方 `<ref-common-rules-documentation-standard>` 标签。
|
|
641
|
+
|
|
602
642
|
</artifact-contract>
|
|
603
643
|
|
|
604
644
|
<readiness-and-depth>
|
|
@@ -632,6 +672,7 @@ Ticket 只有同时满足以下适用条件才可设置 `ready: true`:
|
|
|
632
672
|
- 外部行为和可观察产出明确;
|
|
633
673
|
- IN、REUSE、OUT 无冲突;
|
|
634
674
|
- 高影响决策已锁定;
|
|
675
|
+
- UI 范围按 下方 `<design-contract>` 标签 硬引用已批准 change DESIGN、基线版本和原型,确认/摘要未失效;
|
|
635
676
|
- 没有会改变行为、接口、数据、兼容、安全、范围或验收的未决问题;
|
|
636
677
|
- 依赖存在且无循环;
|
|
637
678
|
- `writable_paths`、`read_only_paths` 和 `shared_paths` 使用项目根相对路径;
|
|
@@ -648,6 +689,10 @@ Ticket 只有同时满足以下适用条件才可设置 `ready: true`:
|
|
|
648
689
|
|
|
649
690
|
`specdev/changes/{change}/spec.md` 只有在外部行为、范围、公共接口、数据、安全、兼容、迁移和验收合同不存在高影响未知项时,才可设置 `ready_for_tickets: true`。
|
|
650
691
|
|
|
692
|
+
UI 范围的 Ready Spec 同样要求已批准且未漂移的 change DESIGN 和页面/状态 AC 映射;纯后端或 LOGIC-only 无此要求。
|
|
693
|
+
|
|
694
|
+
轻量 README 的 scope/acceptance/verification 使用同样的外部行为、风险与可判定 AC 门;没有独立票不要求 Spec YAML 或 Map。Deep、真实并行、跨 change 或复杂设计依赖必须使用完整工件;用户明确产物要求不因轻量分支降低。
|
|
695
|
+
|
|
651
696
|
## 4. 假设规则
|
|
652
697
|
|
|
653
698
|
- 低影响、可逆的默认值可以作为显式假设继续;
|
|
@@ -676,22 +721,22 @@ Ticket 只有同时满足以下适用条件才可设置 `ready: true`:
|
|
|
676
721
|
|
|
677
722
|
1. 可能并行的 Ticket,其 writable paths 不得相交;glob 按覆盖关系判断。
|
|
678
723
|
2. shared path 只由专用 owner Ticket 修改;消费者 Ticket 只读。Lead 负责集成,不以冲突解决替代 shared owner。
|
|
679
|
-
3.
|
|
724
|
+
3. 实现执行者 只写其 Packet 与 Ticket 授权路径;Lead 自行实现也受同一边界约束。
|
|
680
725
|
4. review/research/test-observation agent 只读项目与 SpecDev 工件。
|
|
681
726
|
5. 越界前停止并按 deviation control 提出 ownership change;不得先改后报。
|
|
682
727
|
6. 上游 Ticket 改变目录/合同后,下游基于已集成父分支重新解析路径和 preflight。
|
|
683
728
|
|
|
684
729
|
## 3. Ticket workspace strategy
|
|
685
730
|
|
|
686
|
-
Goal Plan 创建时选择 Ticket workspace strategy,默认 `current`。`current` 模式的 Ticket 使用当前分支、当前 workspace 和严格串行执行;允许一个
|
|
731
|
+
Goal Plan 创建时选择 Ticket workspace strategy,默认 `current`。`current` 模式的 Ticket 使用当前分支、当前 workspace 和严格串行执行;允许一个 实现执行者 写入当前 workspace,但前一 Ticket 必须完成 commit、Lead 验收和 direct-parent 验证后才能开始下一个。`required` 模式每个 Ticket 使用唯一来源 worktree `specdev-worktree/<ticket-id>`,并通过 candidate-merge 集成。没有 Ticket 的获批 Direct Spec 继续由 current workspace 唯一 owner 执行;只读调查不创建实现 worktree。
|
|
687
732
|
|
|
688
|
-
workspace/implementation owner 可以是 Lead 或动态
|
|
733
|
+
workspace/implementation owner 可以是 Lead 或动态 实现执行者;integration owner 固定为 Lead。current 模式 Lead 在父分支直接验收和推进,required 模式 Lead 建立 parent-candidate、运行适用 E2E 并推进父分支。required 生命周期由 下方 `<dev-worktree>` 标签 管理,current 生命周期由 I-implement 的 direct-parent 规则管理。
|
|
689
734
|
|
|
690
735
|
## 4. 并发
|
|
691
736
|
|
|
692
|
-
required 模式
|
|
737
|
+
required 模式 实现执行者 上限取 Goal Plan、config 和平台能力共同约束,Lead 参与实现时计入。current 模式保持单 writer 串行安全不变量,Ticket 严格串行。review/research/test-observation agent 不设置 SpecDev 数字上限,但 Lead 必须避免重复工作与可变环境争用。
|
|
693
738
|
|
|
694
|
-
子 change 属于父 Implementation Map 时,再取父 Implementation Plan 的全局
|
|
739
|
+
子 change 属于父 Implementation Map 时,再取父 Implementation Plan 的全局 实现执行者 上限与 workspace 策略;该上限跨全部成员合计。无 dependency 的组合 Ready Tickets 若 writable/shared paths 重叠,也必须在父 Map 建立 serialization。相同 repository/ref 的 parent integration 严格串行;一次父 HEAD 推进会使其他成员旧 candidate 失效。
|
|
695
740
|
|
|
696
741
|
**完成标准**:每个项目写入映射到唯一 change、Ticket、owner 和来源 worktree;shared 与父分支写入 owner 唯一。
|
|
697
742
|
|
|
@@ -735,7 +780,7 @@ required 模式下,Lead 在最新父分支与 source commit 的 candidate 状
|
|
|
735
780
|
|
|
736
781
|
## 3. Agent 声明
|
|
737
782
|
|
|
738
|
-
|
|
783
|
+
任务执行者 只返回候选命令与结果,不写 Evidence。Lead 重读 workspace/Git、必要时复跑或核对输出后落盘;外部 provider 自报、截图、模拟和推断在此之前标记 `unverified`。review/research/test-observation agent 不拥有 E2E Gate。
|
|
739
784
|
|
|
740
785
|
## 4. 失败分类与完整性
|
|
741
786
|
|
|
@@ -755,6 +800,22 @@ Direct Spec Evidence 至少包含:用户批准与轻量合同、Lead、实施
|
|
|
755
800
|
|
|
756
801
|
Evidence 原文不出仓库。对 GitHub 的公共投影由 T-triage publish 按公共投影规则生成,不替代本文件的完整记录。
|
|
757
802
|
|
|
803
|
+
## 6. 按改动选择检查与复用证据
|
|
804
|
+
|
|
805
|
+
先固定当前真实 base/head、dirty 写集、配置和消费者,选择能在本次回归上失败的最窄检查;动态配置、Worker、子进程、发布构件或跨模块接口需显式选择真实入口。CI 负责目标项目规定的全量矩阵,本地不因 commit/push 机械重跑刚通过且仍有效的检查;原 required Gate 不因此降级。
|
|
806
|
+
|
|
807
|
+
复用记录须给出原证据、代码/输入/配置/Skill 摘要、命令选择、环境和仍成立的原因。基线合入、head 改变、配置/依赖/生成器或被测输入变化时重估失效范围;不能把不相关改动当作所有证据永久无效,也不能沿用旧 head 的完成结论。readiness、skipped、pending、环境失败和未运行分别报告。
|
|
808
|
+
|
|
809
|
+
异步、资源、CI 或测试删除使用 下方 `<ref-common-rules-test-reliability>` 标签;失败后的状态和安全继续使用 下方 `<ref-common-rules-error-handling>` 标签。验证结果须关联真实退出、事件、文件或输出,不能只相信组件/Agent 自报。
|
|
810
|
+
|
|
811
|
+
## 7. 特殊行为与文档证据
|
|
812
|
+
|
|
813
|
+
纯文档使用可执行示例、链接、类型与生成一致性、源码语义核对;不适用代码 TDD/E2E时明确理由。prompt、工具定义、错误或 UI/CLI 字符串改变属于行为变化,检查真实模型/用户可见内容,不只检查 Markdown。UI 原型、mock、真实服务器演示分别标记;录制证据对应准确提交、环境、运行方式和片段,不能拼接不同运行冒充一次成功,也不强制无关任务录 GIF。
|
|
814
|
+
|
|
815
|
+
性能测量必须有真实用户操作、可比较工作量/时钟/冷暖状态、原始样本与端到端结论;微基准改善不能代替整体收益。专业分支仅在原报告追加 下方 `<ref-common-rules-engineering-evidence>` 标签,结构通过不证明测量、翻译或工具执行真实。
|
|
816
|
+
|
|
817
|
+
删除、合并测试的决定需记录旧行为/错误/兼容/回归到新用例的覆盖承接;无法证明就保留。新准入规则至少有一个从真实执行入口失败的反例,并在恢复基线后确认通过。
|
|
818
|
+
|
|
758
819
|
</evidence-and-verification>
|
|
759
820
|
|
|
760
821
|
<deviation-control>
|
|
@@ -802,7 +863,7 @@ Evidence 原文不出仓库。对 GitHub 的公共投影由 T-triage publish 按
|
|
|
802
863
|
|
|
803
864
|
- 未批准的 ticket、spec、architecture 或 release 偏差不得继续实现。
|
|
804
865
|
- 不得通过扩大 `writable_paths`、删除测试、降低断言或把风险改写成“已知限制”来绕过停止。
|
|
805
|
-
- 偏差影响并行执行、source checkpoint 或 candidate 集成时,Lead 必须暂停受影响 Wave,重新计算路径所有权、依赖、Gate 与父分支顺序;任何
|
|
866
|
+
- 偏差影响并行执行、source checkpoint 或 candidate 集成时,Lead 必须暂停受影响 Wave,重新计算路径所有权、依赖、Gate 与父分支顺序;任何 任务执行者 都不能自行改写上层合同。
|
|
806
867
|
- 偏差跨越多个成员时,父 Lead 先递增 Implementation Map revision,再重算 Implementation Plan;旧派单和 candidate 全部标记 stale。
|
|
807
868
|
|
|
808
869
|
</deviation-control>
|
|
@@ -811,7 +872,7 @@ Evidence 原文不出仓库。对 GitHub 的公共投影由 T-triage publish 按
|
|
|
811
872
|
|
|
812
873
|
# Parent Implementation Orchestration
|
|
813
874
|
|
|
814
|
-
本规则只约束 Ready Spec/Tickets 之后的跨 change 实现,供统一 P-goal-plan
|
|
875
|
+
本规则只约束 Ready Spec/Tickets 之后的跨 change 实现,供统一 P-goal-plan、I-implement 与 A-archive-and-consolidate 读取。
|
|
815
876
|
|
|
816
877
|
## 输入边界
|
|
817
878
|
|
|
@@ -827,11 +888,11 @@ Evidence 原文不出仓库。对 GitHub 的公共投影由 T-triage publish 按
|
|
|
827
888
|
|
|
828
889
|
## 唯一所有权
|
|
829
890
|
|
|
830
|
-
一个 active/blocked 子 change 最多属于一个未完成父实现 change。v1 不支持父实现 change 嵌套。父 Lead
|
|
891
|
+
一个 active/blocked 子 change 最多属于一个未完成父实现 change。v1 不支持父实现 change 嵌套。父 Lead 是父工件、父计划及授权 Evidence 写入、E2E、repository/ref integration queue 和父分支推进的唯一 owner;implementation agent 只写授权项目 workspace。
|
|
831
892
|
|
|
832
893
|
## I-implement 调用
|
|
833
894
|
|
|
834
|
-
父 Plan 可以替代缺失的子 Goal Plan 提供 workspace/integration 策略和全局执行边界。子 Goal Plan 存在时继续拥有子 change 内 Gate,但不得与父策略冲突。I-implement 完成或阻塞一个组合 Ticket 后返回父 P Goal
|
|
895
|
+
父 Plan 可以替代缺失的子 Goal Plan 提供 workspace/integration 策略和全局执行边界。子 Goal Plan 存在时继续拥有子 change 内 Gate,但不得与父策略冲突。I-implement 完成或阻塞一个组合 Ticket 后返回父 P Goal,不要求用户重新激活 change。
|
|
835
896
|
|
|
836
897
|
## 归档与完成
|
|
837
898
|
|
|
@@ -970,7 +1031,7 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
970
1031
|
4. 从 `base_sha` 创建 Git worktree,不复用其他 Ticket 目录;
|
|
971
1032
|
5. 在来源 worktree 读取项目 Agent 指令、依赖、构建与路径合同;
|
|
972
1033
|
6. 安装实际需要的依赖,运行最小非 E2E 基线;
|
|
973
|
-
7. Lead
|
|
1034
|
+
7. Lead 将实际 workspace、owner、checkpoint 和 `status: active` 记录在该票 Evidence 的 `## Workspace Execution Record` 唯一 JSON object 中,保留原执行字段;不创建全局 worktree 镜像。
|
|
974
1035
|
|
|
975
1036
|
初始记录:
|
|
976
1037
|
|
|
@@ -1101,7 +1162,7 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1101
1162
|
- 新产品决定没有藏在冲突解决中;
|
|
1102
1163
|
- 验证记录命令、运行环境、退出码和摘要;
|
|
1103
1164
|
- Git 副作用来自明确的 candidate integration 或其他逐动作授权;
|
|
1104
|
-
- 完成/暂停可以从 Git
|
|
1165
|
+
- 完成/暂停可以从 Git、原计划/README 与 Evidence 恢复。
|
|
1105
1166
|
|
|
1106
1167
|
</merge-conflict-protocol>
|
|
1107
1168
|
|
|
@@ -1109,14 +1170,14 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1109
1170
|
|
|
1110
1171
|
```json
|
|
1111
1172
|
{
|
|
1112
|
-
"schema_version":
|
|
1173
|
+
"schema_version": 7,
|
|
1113
1174
|
"interaction_language": "zh-CN",
|
|
1114
1175
|
"artifact_language": "zh-CN",
|
|
1115
1176
|
"git": {
|
|
1116
1177
|
"default_branch": null
|
|
1117
1178
|
},
|
|
1118
1179
|
"execution": {
|
|
1119
|
-
"
|
|
1180
|
+
"max_concurrent_implementations": 3,
|
|
1120
1181
|
"max_integration_attempts": 3,
|
|
1121
1182
|
"deep_ticket_human_approval": true,
|
|
1122
1183
|
"shared_path_owner": "explicit"
|
|
@@ -1148,7 +1209,7 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1148
1209
|
```json
|
|
1149
1210
|
{
|
|
1150
1211
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1151
|
-
"$id": "urn:speculo:specdev:config:
|
|
1212
|
+
"$id": "urn:speculo:specdev:config:v7",
|
|
1152
1213
|
"title": "SpecDev Configuration",
|
|
1153
1214
|
"type": "object",
|
|
1154
1215
|
"required": [
|
|
@@ -1163,7 +1224,7 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1163
1224
|
],
|
|
1164
1225
|
"properties": {
|
|
1165
1226
|
"schema_version": {
|
|
1166
|
-
"const":
|
|
1227
|
+
"const": 7
|
|
1167
1228
|
},
|
|
1168
1229
|
"interaction_language": {
|
|
1169
1230
|
"type": "string",
|
|
@@ -1191,13 +1252,13 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1191
1252
|
"execution": {
|
|
1192
1253
|
"type": "object",
|
|
1193
1254
|
"required": [
|
|
1194
|
-
"
|
|
1255
|
+
"max_concurrent_implementations",
|
|
1195
1256
|
"max_integration_attempts",
|
|
1196
1257
|
"deep_ticket_human_approval",
|
|
1197
1258
|
"shared_path_owner"
|
|
1198
1259
|
],
|
|
1199
1260
|
"properties": {
|
|
1200
|
-
"
|
|
1261
|
+
"max_concurrent_implementations": {
|
|
1201
1262
|
"type": "integer",
|
|
1202
1263
|
"minimum": 1
|
|
1203
1264
|
},
|
|
@@ -1319,283 +1380,95 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1319
1380
|
|
|
1320
1381
|
</config-schema>
|
|
1321
1382
|
|
|
1322
|
-
<
|
|
1383
|
+
<workflow-state-and-lifecycle>
|
|
1323
1384
|
|
|
1324
|
-
|
|
1325
|
-
{
|
|
1326
|
-
"schema_version": 5,
|
|
1327
|
-
"workflow": "specdev",
|
|
1328
|
-
"active": [],
|
|
1329
|
-
"archived": []
|
|
1330
|
-
}
|
|
1331
|
-
```
|
|
1385
|
+
# 工件生命周期与恢复
|
|
1332
1386
|
|
|
1333
|
-
|
|
1387
|
+
创建、恢复、结束或归档 change 时读取。安装与业务运行分开;新项目不预造空目录、全局状态或工作调用记录。
|
|
1334
1388
|
|
|
1335
|
-
|
|
1389
|
+
## 身份与位置
|
|
1336
1390
|
|
|
1337
|
-
|
|
1338
|
-
{
|
|
1339
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1340
|
-
"$id": "urn:speculo:specdev:status:v5",
|
|
1341
|
-
"title": "SpecDev Global Status",
|
|
1342
|
-
"type": "object",
|
|
1343
|
-
"required": ["schema_version", "workflow", "active", "archived"],
|
|
1344
|
-
"properties": {
|
|
1345
|
-
"schema_version": {"const": 5},
|
|
1346
|
-
"workflow": {"const": "specdev"},
|
|
1347
|
-
"active": {
|
|
1348
|
-
"type": "array",
|
|
1349
|
-
"items": {
|
|
1350
|
-
"type": "object",
|
|
1351
|
-
"required": ["change"],
|
|
1352
|
-
"properties": {
|
|
1353
|
-
"change": {
|
|
1354
|
-
"type": "string",
|
|
1355
|
-
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
1356
|
-
}
|
|
1357
|
-
},
|
|
1358
|
-
"additionalProperties": false
|
|
1359
|
-
},
|
|
1360
|
-
"uniqueItems": true
|
|
1361
|
-
},
|
|
1362
|
-
"archived": {
|
|
1363
|
-
"type": "array",
|
|
1364
|
-
"items": {
|
|
1365
|
-
"type": "string",
|
|
1366
|
-
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
1367
|
-
},
|
|
1368
|
-
"uniqueItems": true
|
|
1369
|
-
}
|
|
1370
|
-
},
|
|
1371
|
-
"additionalProperties": false
|
|
1372
|
-
}
|
|
1373
|
-
```
|
|
1391
|
+
change 的稳定身份是同一项目、领域内的 `YYYY-MM-DD-topic[-NN]` 目录名,日期为创建日期,不随归档重命名。真实首次创建时选择未占用名称;检查 active、新 archive 和旧历史,重名或多位置阻塞。只有需要相应内容时才建目录。
|
|
1374
1392
|
|
|
1375
|
-
|
|
1393
|
+
- 活动/已结束未归档对象:specdev/changes/{change}/README.md。
|
|
1394
|
+
- 新封存对象:specdev/changes/archive/{change}/README.md。
|
|
1395
|
+
- 既有历史:specdev/archive/YYYY-MM/{change}/,原位只读,保留原 schema、许可、模式和字节。
|
|
1396
|
+
- 直接 A 无 change 的必要维护回执:specdev/maintenance/{date}-{topic}[-NN].md,只在跨会话/跨对象恢复需要时创建。
|
|
1397
|
+
- 工程 docs:docs/README.md,明确请求基线后按需存在;它是跨领域工程事实,不是 SpecDev 独占知识 store。
|
|
1376
1398
|
|
|
1377
|
-
|
|
1399
|
+
归档实际位置和原回执表示封存;不在 README 增加 archived、archive_path 或全局 active/archived 列表。新 archive 不嵌套月份。旧历史移动须另有明确计划,验证所有 locator 和 DESIGN 摘要;不可变正文不做路径替换。
|
|
1378
1400
|
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
"current_work": null,
|
|
1386
|
-
"works_run": [],
|
|
1387
|
-
"claimed_investigations": [],
|
|
1388
|
-
"execution_authorization": {
|
|
1389
|
-
"implementation_commit": {"status": "not-authorized", "source": null, "granted_at": null, "scope": "Ticket implementation commits"},
|
|
1390
|
-
"local_candidate_integration": {"status": "not-authorized", "source": null, "granted_at": null, "scope": "Lead-owned local direct-parent or candidate integration and parent update"},
|
|
1391
|
-
"source_cleanup": {"status": "not-authorized", "source": null, "granted_at": null, "scope": "Source worktree and branch cleanup"}
|
|
1392
|
-
},
|
|
1393
|
-
"leadership": {
|
|
1394
|
-
"current": "<owner-or-session-locator>",
|
|
1395
|
-
"epoch": 1,
|
|
1396
|
-
"assigned_at": "<ISO-8601>",
|
|
1397
|
-
"history": []
|
|
1398
|
-
},
|
|
1399
|
-
"created_at": "<ISO-8601>",
|
|
1400
|
-
"updated_at": "<ISO-8601>",
|
|
1401
|
-
"completed_at": null,
|
|
1402
|
-
"archived": false,
|
|
1403
|
-
"archive_path": null,
|
|
1404
|
-
"blockers": [],
|
|
1405
|
-
"deviations": [],
|
|
1406
|
-
"worktrees": []
|
|
1407
|
-
}
|
|
1401
|
+
## 唯一整体结论
|
|
1402
|
+
|
|
1403
|
+
每个新 change README 正文恰有一行:
|
|
1404
|
+
|
|
1405
|
+
```text
|
|
1406
|
+
Outcome: active
|
|
1408
1407
|
```
|
|
1409
1408
|
|
|
1410
|
-
|
|
1409
|
+
合法值只有 `active | completed | cancelled`,ASCII 大小写和格式固定;不从标题、YAML、清单、代码围栏或时间推断。重复/缺失/非法 Outcome、同义 YAML status 或新旧混合权威均拒绝写入。README 保存目的、当前接续和验收导航;完成/取消必须先通过 下方 `<ref-common-rules-change-completion>` 标签,结论文本本身不是证据。
|
|
1411
1410
|
|
|
1412
|
-
|
|
1411
|
+
简单任务清单、范围、AC 和验证在 README;无独立 Ticket 的 Goal 用 goal-plan 清单;有 Ticket 则票和对应 Evidence 负责进度。迁出进度的位置改成导航,不能双写。复杂 Spec、Ticket、Map、Goal、Implementation、DESIGN 与专用工具合同保留真实消费者需要的字段。
|
|
1413
1412
|
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
"archive_path": {"anyOf": [{"type": "null"}, {"type": "string", "pattern": "^specdev/archive/[0-9]{4}-[0-9]{2}/.+/$"}]},
|
|
1440
|
-
"blockers": {"type": "array", "items": {"type": "string"}},
|
|
1441
|
-
"deviations": {"type": "array", "items": {"type": "string"}},
|
|
1442
|
-
"worktrees": {"type": "array", "items": {"$ref": "#/$defs/worktree"}}
|
|
1443
|
-
},
|
|
1444
|
-
"$defs": {
|
|
1445
|
-
"claim": {
|
|
1446
|
-
"type": "object",
|
|
1447
|
-
"required": ["id", "owner", "session", "claimed_at"],
|
|
1448
|
-
"properties": {
|
|
1449
|
-
"id": {"type": "string", "minLength": 1},
|
|
1450
|
-
"owner": {"type": "string", "minLength": 1},
|
|
1451
|
-
"session": {"type": ["string", "null"]},
|
|
1452
|
-
"claimed_at": {"type": "string", "minLength": 1}
|
|
1453
|
-
},
|
|
1454
|
-
"additionalProperties": false
|
|
1455
|
-
},
|
|
1456
|
-
"authorization-entry": {
|
|
1457
|
-
"type": "object",
|
|
1458
|
-
"required": ["status", "source", "granted_at", "scope"],
|
|
1459
|
-
"properties": {
|
|
1460
|
-
"status": {"enum": ["authorized", "not-authorized", "revoked"]},
|
|
1461
|
-
"source": {"type": ["string", "null"]},
|
|
1462
|
-
"granted_at": {"type": ["string", "null"]},
|
|
1463
|
-
"scope": {"type": "string", "minLength": 1}
|
|
1464
|
-
},
|
|
1465
|
-
"allOf": [{
|
|
1466
|
-
"if": {"properties": {"status": {"const": "authorized"}}, "required": ["status"]},
|
|
1467
|
-
"then": {"properties": {"source": {"type": "string", "minLength": 1}, "granted_at": {"type": "string", "minLength": 1}}}
|
|
1468
|
-
}],
|
|
1469
|
-
"additionalProperties": false
|
|
1470
|
-
},
|
|
1471
|
-
"authorization": {
|
|
1472
|
-
"type": "object",
|
|
1473
|
-
"required": ["implementation_commit", "local_candidate_integration", "source_cleanup"],
|
|
1474
|
-
"properties": {
|
|
1475
|
-
"implementation_commit": {"$ref": "#/$defs/authorization-entry"},
|
|
1476
|
-
"local_candidate_integration": {"$ref": "#/$defs/authorization-entry"},
|
|
1477
|
-
"source_cleanup": {"$ref": "#/$defs/authorization-entry"}
|
|
1478
|
-
},
|
|
1479
|
-
"additionalProperties": false
|
|
1480
|
-
},
|
|
1481
|
-
"leadership-history": {
|
|
1482
|
-
"type": "object",
|
|
1483
|
-
"required": ["owner", "epoch", "assigned_at", "ended_at"],
|
|
1484
|
-
"properties": {
|
|
1485
|
-
"owner": {"type": "string", "minLength": 1},
|
|
1486
|
-
"epoch": {"type": "integer", "minimum": 1},
|
|
1487
|
-
"assigned_at": {"type": "string", "minLength": 1},
|
|
1488
|
-
"ended_at": {"type": "string", "minLength": 1}
|
|
1489
|
-
},
|
|
1490
|
-
"additionalProperties": false
|
|
1491
|
-
},
|
|
1492
|
-
"leadership": {
|
|
1493
|
-
"type": "object",
|
|
1494
|
-
"required": ["current", "epoch", "assigned_at", "history"],
|
|
1495
|
-
"properties": {
|
|
1496
|
-
"current": {"type": "string", "minLength": 1},
|
|
1497
|
-
"epoch": {"type": "integer", "minimum": 1},
|
|
1498
|
-
"assigned_at": {"type": "string", "minLength": 1},
|
|
1499
|
-
"history": {"type": "array", "items": {"$ref": "#/$defs/leadership-history"}}
|
|
1500
|
-
},
|
|
1501
|
-
"additionalProperties": false
|
|
1502
|
-
},
|
|
1503
|
-
"full-suite": {
|
|
1504
|
-
"type": "object",
|
|
1505
|
-
"required": ["required", "status", "reason", "evidence"],
|
|
1506
|
-
"properties": {
|
|
1507
|
-
"required": {"type": "boolean"},
|
|
1508
|
-
"status": {"enum": ["not-required", "pending", "passed", "failed"]},
|
|
1509
|
-
"reason": {"type": ["string", "null"]},
|
|
1510
|
-
"evidence": {"type": ["string", "null"]}
|
|
1511
|
-
},
|
|
1512
|
-
"allOf": [{
|
|
1513
|
-
"if": {"properties": {"required": {"const": false}}, "required": ["required"]},
|
|
1514
|
-
"then": {"properties": {"status": {"const": "not-required"}, "reason": {"type": "string", "minLength": 1}}}
|
|
1515
|
-
}],
|
|
1516
|
-
"additionalProperties": false
|
|
1517
|
-
},
|
|
1518
|
-
"worktree": {
|
|
1519
|
-
"type": "object",
|
|
1520
|
-
"required": ["ticket_id", "owner", "implementation_owner", "integration_owner", "provider", "base_sha", "parent_branch", "branch", "workspace_ref", "source_checkpoint", "integration", "status", "updated_at"],
|
|
1521
|
-
"properties": {
|
|
1522
|
-
"ticket_id": {"type": "string", "pattern": "^T-[0-9]{2,}$"},
|
|
1523
|
-
"owner": {"type": "string", "minLength": 1},
|
|
1524
|
-
"implementation_owner": {"type": "string", "minLength": 1},
|
|
1525
|
-
"integration_owner": {"type": "string", "minLength": 1},
|
|
1526
|
-
"provider": {"const": "git"},
|
|
1527
|
-
"base_sha": {"type": "string", "minLength": 1},
|
|
1528
|
-
"parent_branch": {"type": "string", "minLength": 1},
|
|
1529
|
-
"branch": {"type": "string", "minLength": 1},
|
|
1530
|
-
"workspace_ref": {"type": "string", "pattern": "^(?:current|specdev-worktree/[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*/T-[0-9]{2,})$"},
|
|
1531
|
-
"source_checkpoint": {"type": ["string", "null"]},
|
|
1532
|
-
"integration": {"$ref": "#/$defs/integration"},
|
|
1533
|
-
"status": {"enum": ["planned", "active", "review", "integrating", "integrated", "removed", "blocked"]},
|
|
1534
|
-
"updated_at": {"type": "string", "minLength": 1}
|
|
1535
|
-
},
|
|
1536
|
-
"allOf": [
|
|
1537
|
-
{
|
|
1538
|
-
"if": {"properties": {"workspace_ref": {"const": "current"}}, "required": ["workspace_ref"]},
|
|
1539
|
-
"then": {
|
|
1540
|
-
"properties": {
|
|
1541
|
-
"integration": {
|
|
1542
|
-
"allOf": [{
|
|
1543
|
-
"properties": {
|
|
1544
|
-
"candidate_sha": {"const": null},
|
|
1545
|
-
"candidate_tree_sha": {"const": null},
|
|
1546
|
-
"candidate_branch": {"const": null},
|
|
1547
|
-
"candidate_workspace_ref": {"const": null},
|
|
1548
|
-
"method": {"enum": [null, "direct-parent"]}
|
|
1549
|
-
}
|
|
1550
|
-
}]
|
|
1551
|
-
}
|
|
1552
|
-
}
|
|
1553
|
-
},
|
|
1554
|
-
"else": {
|
|
1555
|
-
"properties": {
|
|
1556
|
-
"integration": {
|
|
1557
|
-
"allOf": [{"properties": {"method": {"enum": [null, "fast-forward", "merge-commit"]}}}]
|
|
1558
|
-
}
|
|
1559
|
-
}
|
|
1560
|
-
}
|
|
1561
|
-
}
|
|
1562
|
-
],
|
|
1563
|
-
"additionalProperties": false
|
|
1564
|
-
},
|
|
1565
|
-
"integration": {
|
|
1566
|
-
"type": "object",
|
|
1567
|
-
"required": ["status", "parent_ref", "parent_before_sha", "source_sha", "candidate_sha", "candidate_tree_sha", "candidate_branch", "candidate_workspace_ref", "result_sha", "method", "conflict_paths", "verification", "full_suite", "e2e", "evidence", "attempts", "promotion_status"],
|
|
1568
|
-
"properties": {
|
|
1569
|
-
"status": {"enum": ["pending", "candidate", "passed", "failed", "stale"]},
|
|
1570
|
-
"parent_ref": {"type": ["string", "null"]},
|
|
1571
|
-
"parent_before_sha": {"type": ["string", "null"]},
|
|
1572
|
-
"source_sha": {"type": ["string", "null"]},
|
|
1573
|
-
"candidate_sha": {"type": ["string", "null"]},
|
|
1574
|
-
"candidate_tree_sha": {"type": ["string", "null"]},
|
|
1575
|
-
"candidate_branch": {"type": ["string", "null"]},
|
|
1576
|
-
"candidate_workspace_ref": {"anyOf": [{"type": "null"}, {"type": "string", "pattern": "^specdev-worktree/\\.integration/[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*/T-[0-9]{2,}$"}]},
|
|
1577
|
-
"result_sha": {"type": ["string", "null"]},
|
|
1578
|
-
"method": {"enum": [null, "direct-parent", "fast-forward", "merge-commit"]},
|
|
1579
|
-
"conflict_paths": {"type": "array", "items": {"type": "string"}},
|
|
1580
|
-
"verification": {"enum": ["pending", "passed", "failed"]},
|
|
1581
|
-
"full_suite": {"$ref": "#/$defs/full-suite"},
|
|
1582
|
-
"e2e": {"$ref": "#/$defs/full-suite"},
|
|
1583
|
-
"evidence": {"type": "string", "pattern": "^\\{roots\\.state\\}/specdev/changes/[^<]+/evidence/T-[0-9]{2,}\\.md$"},
|
|
1584
|
-
"attempts": {"type": "integer", "minimum": 0},
|
|
1585
|
-
"promotion_status": {"enum": ["pending", "applying", "applied", "failed", "stale"]}
|
|
1586
|
-
},
|
|
1587
|
-
"additionalProperties": false
|
|
1588
|
-
}
|
|
1589
|
-
},
|
|
1590
|
-
"allOf": [{
|
|
1591
|
-
"if": {"properties": {"change_status": {"const": "archived"}}, "required": ["change_status"]},
|
|
1592
|
-
"then": {"properties": {"archived": {"const": true}, "archive_path": {"type": "string", "pattern": "^specdev/archive/[0-9]{4}-[0-9]{2}/.+/$"}}}
|
|
1593
|
-
}],
|
|
1594
|
-
"additionalProperties": false
|
|
1595
|
-
}
|
|
1596
|
-
```
|
|
1413
|
+
## owner 与独有事实
|
|
1414
|
+
|
|
1415
|
+
不默认创建 leadership epoch、空批准槽或每 Work 记录。实际交接、并行、worktree/集成发生时,在原计划、Ticket Evidence 或操作回执记录唯一负责者、获批写集、输入、真实交接与下一步。复杂任务 owner 从原 implementation-plan/goal-plan 的 `lead` 读取。无 Goal 且动作确需 owner 时,README 的 `## Ownership` 内保存 `Owner: <session locator>` 与 `Evidence: <对象内相对路径>[#anchor]`,证据指向实际会话/交接;设计 bootstrap 还保存 `Work: specdev/prototype` 且依据正文绑定该 Work。普通只读不预建所有权记录,字段不创造授权。
|
|
1416
|
+
|
|
1417
|
+
每个实现 Ticket 的 Evidence 在 `## Workspace Execution Record` 下以唯一 JSON object 保留实际执行记录(原 worktree 字段),不创建全局 array 镜像;其中保留 base SHA、父分支、workspace/implementation/integration owner、workspace locator、implementation/source checkpoint、candidate/result SHA、验证与 E2E disposition。current 使用 current/direct-parent;required 使用 source/parent-candidate,清理后也保留集成证据。父计划只导航,不另复制一套结果。
|
|
1418
|
+
|
|
1419
|
+
语言、用户工具和数量来自当前请求/既有项目说明;实际并发、worktree 与尝试上限由原 Goal/项目约定负责,原 Goal/Implementation Plan 的 `## Execution Policy Source` 说明实际策略来源;已有 config 仍校验相应上限,Lead 自己实现计入并发。旧 config 的真实远程/验证用途可选保留;未知独有字段不能以简化为由丢弃。默认 UI 3 个、配置 2–4、明确用户数量覆盖,均不变。
|
|
1420
|
+
|
|
1421
|
+
## 创建、恢复和历史边界
|
|
1422
|
+
|
|
1423
|
+
首次真实任务才创建 README 和实际需要的其他工件。简单形态参考 下方 `<ref-specdev-i-init-setup-assets-change-readme-template>` 标签;实际需要 owner、验证或取消记录时读取 下方 `<ref-specdev-i-init-setup-references-change-record-examples>` 标签,不预填空槽。默认目录发现只枚举 changes 直接子目录,不递归把 ticket、archive 或临时目录当 change。指定历史再查询新 archive/旧月份 archive;同身份多位置报冲突。
|
|
1424
|
+
|
|
1425
|
+
恢复重读原 owner、输入摘要、实际 writer、Git/工具结果与未决动作。结果未保存不等于操作没发生;超时不证明 writer 结束。仅使受影响证据失效,不清零尝试、不抢锁,不改完成历史。review-only、performance、documentation、evidence-triage 留原报告或 Evidence,不能伪造问题已解决。
|
|
1426
|
+
|
|
1427
|
+
新 writer 不新增或更新旧 status 镜像。发现旧活动 status、未知 schema、混合协议或 specdev/.markdown-conversion-pending 时只读盘点,停止重叠写入并交显式转换 owner;不自动升级、不因 README 存在跳过。pending 不证明互斥,也不能按年龄删除。旧 archive 原位冻结,历史 reader 不产生可写新对象。
|
|
1428
|
+
|
|
1429
|
+
CLI 刷新先 staging/验证再原子替换并保全未知 runtime;Work 不修改 back/、安装元数据或命令 sidecar。安装故障只在与本次路径冲突时阻塞相关动作。
|
|
1430
|
+
|
|
1431
|
+
</workflow-state-and-lifecycle>
|
|
1432
|
+
|
|
1433
|
+
<domain-runtime>
|
|
1434
|
+
|
|
1435
|
+
# SpecDev 运行合同
|
|
1436
|
+
|
|
1437
|
+
只在用户明确激活当前 Work 后读取;当前入口已明确时不重入领域 Skill,也不先执行初始化。项目与必要资源明确即可直接使用,无需 Speculo CLI 或安装元数据。
|
|
1597
1438
|
|
|
1598
|
-
|
|
1439
|
+
## 启动顺序
|
|
1440
|
+
|
|
1441
|
+
1. 明确项目根、方法资源根与获批业务数据根。已有安装时验证真实 workspace 与 roots;没有安装时使用明确根参数,方法资源可以只读。相对参数基于项目根,cwd 只作线索;不静默切换项目。根冲突、越界链接或重叠安装事务仅阻塞依赖该根的写入。详见 本文的网页平台运行约定。
|
|
1442
|
+
2. 读取当前请求和所选 Work;按 下方 `<activation-and-memory>` 标签 检索相关知识 ID/关键词,再回读少量原文与 provenance。没有相关知识不要求先初始化知识目录。
|
|
1443
|
+
3. 有 change 时定位用户指定对象或唯一合法候选,读取 README 的唯一 Outcome、当前负责工件和接续点。只枚举 changes 直接子目录,排除 archive;多个候选真实消歧。只读代码/架构审查、知识审计、capture 和初始化不强造 change。
|
|
1444
|
+
4. 按实际分支读取必要参考。创建、恢复、完成、取消或归档时读取 下方 `<workflow-state-and-lifecycle>` 标签;轻量/完整输入或事实冲突读取 下方 `<artifact-contract>` 标签;实际交接、并行、父子集成才加载 下方 `<ref-common-rules-operating-governance>` 标签 和 下方 `<parent-implementation-orchestration>` 标签。
|
|
1445
|
+
5. 写前核对路径、原 owner、实际写入者、相关 pending transaction、lock 和 recovery evidence。失败/阻塞记录在原 README、计划、Evidence 或操作回执;真实交接只更新原负责位置。完成产物、适用验证并回读,返回证据和下一入口。
|
|
1446
|
+
|
|
1447
|
+
新普通流程不读写全局 status、change status 或 Work 调用镜像。发现旧活动协议、混合权威或转换 pending 标记时停止受影响写入,保留原件并交显式转换;README 存在不证明转换已完成。旧归档仅走独立历史只读定位。
|
|
1448
|
+
|
|
1449
|
+
## 工件与能力
|
|
1450
|
+
|
|
1451
|
+
小请求使用 README 中等价范围、AC 与验证;用户明确要求 Spec/Ticket/Goal 时交付指定工件。复杂需求可经 W → G → S → T → P → I 逐步形成合同,不要求全部 Work 串行必跑。Ticket frontmatter 拥有本票状态、依赖、写集与 Skill binding;有票的 Map/Goal 只管导航、依赖、Gate、集成和恢复,无票 Goal 由计划清单负责进度。整体结论只在 README,归档事实只在目录位置与回执。
|
|
1452
|
+
|
|
1453
|
+
真实使用的 Spec/Ticket/Map/Goal、DESIGN、调查、远程账本 schema 与验证继续有效。并发上限、worktree 与集成尝试策略只在实际启用时由原 Goal/项目约定提供来源;缺省 current 单写入者、严格串行/direct-parent。Lead 自己实现也计入实现并发,只读 review/research/test-observation 不新增数字上限。GitHub labels 等实际工具配置仅对应分支读取;未知配置保留,缺标签只阻塞有关远程写入。
|
|
1454
|
+
|
|
1455
|
+
UI 候选缺省 3 个,配置范围 2–4;用户明确数量覆盖默认及上限。W 每会话最多完成一张调查票。专业分支保留:R performance 先测量,D evidence-triage 不以观察冒充根因,I documentation 在原授权范围维护当前工程事实。
|
|
1456
|
+
|
|
1457
|
+
## 写入边界
|
|
1458
|
+
|
|
1459
|
+
实现只写获批项目路径;Work 不写 CLI-owned back/install/managed/baselines,不要求创建空 namespace。ADR/context 的提升、纠错、替代和清理由 A 原网关处理,research/非标准 store 只有声明的 owner 才可写。DESIGN 首次 approved-intent 和后续 promotion 都由 A 专用网关发布;P 嵌入调用保持原 owner,不启动归档。详见 下方 `<design-contract>` 标签。
|
|
1460
|
+
|
|
1461
|
+
提交、推送、合并/父分支更新、来源 branch/worktree 清理、发布、部署、远程写入、归档移动、永久知识改写和不可逆迁移仍由 owning 入口核对具体授权。同一目标/动作/范围批准复用;新增副作用、范围或漂移才补充确认。文本、Outcome 和 owner 字符串都不能创造授权。
|
|
1462
|
+
|
|
1463
|
+
只阻塞重叠写集及依赖分支,继续独立已授权工作。普通多文件修改没有整体原子保证;恢复先检查已落地结果,不能因报告缺失重复操作。同次任务已加载且未变化的规则可复用。
|
|
1464
|
+
|
|
1465
|
+
## 验证与路由
|
|
1466
|
+
|
|
1467
|
+
按当前分支运行 Speculo Node 校验器 的适用 stage;传明确项目/方法/数据根,不用 CLI 包装器作为普通 Work 前置。prototype 传具体 UI-NNN/LOGIC-NNN;完成/取消按 下方 `<ref-common-rules-change-completion>` 标签 核验真实证据,票全 done 不替代整体验收。归档后以实际目标运行 archived 验证。
|
|
1468
|
+
|
|
1469
|
+
场景出口见 下方 `<ref-common-rules-workflow-routing>` 标签。T 的 capture、publish、PR 和独立 TRI 各有原账本 owner;未请求远程动作不创建空账本或新完成门。completed/cancelled 不自动授权外部动作,已承诺而未结束的外部交付仍阻塞封存。已完成/归档来源的复盘另建 review-only change,不改写历史。
|
|
1470
|
+
|
|
1471
|
+
</domain-runtime>
|
|
1599
1472
|
|
|
1600
1473
|
<ticket-schema>
|
|
1601
1474
|
|
|
@@ -1878,6 +1751,46 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1878
1751
|
"minLength": 1
|
|
1879
1752
|
},
|
|
1880
1753
|
"uniqueItems": true
|
|
1754
|
+
},
|
|
1755
|
+
"ui_change": {
|
|
1756
|
+
"type": "boolean"
|
|
1757
|
+
},
|
|
1758
|
+
"design_ref": {
|
|
1759
|
+
"type": [
|
|
1760
|
+
"object",
|
|
1761
|
+
"null"
|
|
1762
|
+
],
|
|
1763
|
+
"properties": {
|
|
1764
|
+
"revision": {
|
|
1765
|
+
"type": "integer",
|
|
1766
|
+
"minimum": 1
|
|
1767
|
+
},
|
|
1768
|
+
"digest": {
|
|
1769
|
+
"type": "string",
|
|
1770
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
1771
|
+
},
|
|
1772
|
+
"pages": {
|
|
1773
|
+
"type": "array",
|
|
1774
|
+
"minItems": 1,
|
|
1775
|
+
"items": {
|
|
1776
|
+
"type": "string"
|
|
1777
|
+
}
|
|
1778
|
+
},
|
|
1779
|
+
"acceptance": {
|
|
1780
|
+
"type": "array",
|
|
1781
|
+
"minItems": 1,
|
|
1782
|
+
"items": {
|
|
1783
|
+
"type": "string"
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
},
|
|
1787
|
+
"required": [
|
|
1788
|
+
"revision",
|
|
1789
|
+
"digest",
|
|
1790
|
+
"pages",
|
|
1791
|
+
"acceptance"
|
|
1792
|
+
],
|
|
1793
|
+
"additionalProperties": false
|
|
1881
1794
|
}
|
|
1882
1795
|
},
|
|
1883
1796
|
"$defs": {
|
|
@@ -2009,11 +1922,15 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
2009
1922
|
|
|
2010
1923
|
## Locate before read
|
|
2011
1924
|
|
|
2012
|
-
1.
|
|
1925
|
+
1. 复用当前入口已经明确的项目、方法和数据根。已安装时验证 workspace roots;未安装时使用明确根参数与 Skill 内相对资源,不猜旧路径。根不明只阻塞依赖它的写入;按稳定名称定位所需对象。
|
|
2013
1926
|
2. 根据当前请求、Work 分支、关键词、稳定 ID、状态和 provenance,先搜索相关索引行或目录项,再定位最小相关 entry;不把索引全文默认装入上下文。
|
|
2014
1927
|
3. 只回读命中的 entry 和直接 provenance;需要恢复、冲突裁决、归档、迁移或执行安全证明时,才读取该阶段声明的完整证据集合。
|
|
2015
1928
|
4. 没有匹配证据时返回缺失证据并停止依赖该结论的分支,不补造事实。
|
|
2016
1929
|
|
|
1930
|
+
## Design retrieval
|
|
1931
|
+
|
|
1932
|
+
UI 工作先按 specdev/design/ 的索引条目或 scope/规则 ID 定位,再读取命中的 DESIGN revision 和来源。已有 change DESIGN 按它固定的 baseline revision/digest 回读,不静默换成最新版本。永久设计的唯一 owner 是 A,网关为 下方 `<design-portability>` 标签的设计检查、发布与恢复协议;首次批准和归档提升遵守 下方 `<design-contract>` 标签。
|
|
1933
|
+
|
|
2017
1934
|
## Memory writes
|
|
2018
1935
|
|
|
2019
1936
|
正式知识、永久 context、synthesis 或 archive 写入前,先解析唯一 owner 与 gateway,检查 pending transaction、lock、未完成 promotion 和 recovery evidence。gateway 不明或事务未闭合时,只阻塞记忆写入,继续独立且已授权的审计、定位、验证和其他工作。
|
|
@@ -2030,333 +1947,2265 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
2030
1947
|
|
|
2031
1948
|
</activation-and-memory>
|
|
2032
1949
|
|
|
2033
|
-
<
|
|
1950
|
+
<design-contract>
|
|
2034
1951
|
|
|
2035
|
-
#
|
|
1952
|
+
# UI 设计权威、批准与继承
|
|
2036
1953
|
|
|
2037
|
-
|
|
1954
|
+
P 创建 UI 包,或 S/T/I/C/W 消费 UI 决定时读取。纯 LOGIC 和没有 UI 影响的 change 不强制生成 DESIGN;不能以缺少 UI 工件阻塞独立的后端工作。
|
|
2038
1955
|
|
|
2039
|
-
##
|
|
1956
|
+
## 三层产物与 owner
|
|
2040
1957
|
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
1958
|
+
| 层 | 位置 | 权威与 owner |
|
|
1959
|
+
|---|---|---|
|
|
1960
|
+
| 项目设计基线 | specdev/design/DESIGN.md | 跨 change 的视觉语言、语义 token、组件与交互规范;唯一正式写入 owner 为 A |
|
|
1961
|
+
| Change 设计合同 | specdev/changes/{change}/DESIGN.md | 本 change 的页面、任务流、状态、响应式、基线引用与已批准例外;P 写入并维护 |
|
|
1962
|
+
| 原型源码与证据 | specdev/changes/{change}/prototypes/{design-id}/design-system.md | P 拥有项目检测、候选来源、HTML/CSS/JS 源码、验证和批准证据;不再重复拥有设计规则 |
|
|
2046
1963
|
|
|
2047
|
-
|
|
1964
|
+
`design-id` 为当前 change 内最小未用的 `UI-NNN`。每个 UI 包引用同一 change DESIGN 的适用页面/规则;不能以新包覆盖其他已批准页面。comparison 与 final 是源码投影,项目内预览是有明确写集的临时验证。CONTEXT 拥有产品事实,ADR 拥有架构决定,Spec 拥有外部行为;DESIGN 不夺取这些职责。
|
|
2048
1965
|
|
|
2049
|
-
|
|
2050
|
-
{"id":"project-test","path":".agents/skills/project-test/SKILL.md","sha256":"<真实64位摘要>","phase":"verify","operation":"run-regression","inputs":["当前Ticket与定向diff"],"outputs":["含命令、退出码和验收映射的Evidence"],"required":true,"on_failure":"block-ticket","references":[]}
|
|
2051
|
-
```
|
|
1966
|
+
初始化只创建空的 specdev/design/,不从模板预填品牌或创建已批准 DESIGN。根项目已有 DESIGN.md 或其他设计规范时记录实际 locator 和 owner;不得自动覆盖或同步出第二套可写基线。
|
|
2052
1967
|
|
|
2053
|
-
|
|
1968
|
+
## 基线生命周期
|
|
2054
1969
|
|
|
2055
|
-
|
|
1970
|
+
1. 先按 design 索引的 app、页面、关键词或规则 ID 定位,再读取相关原文与 provenance。已有基线时核验 revision/digest 与代码;未声明 rebrand 的局部变更继承它。
|
|
1971
|
+
2. 没有基线时先检测现有 token、组件和真实页面;新项目明确没有既有事实。P 在 change 内准备 baseline draft,观察值、用户约束与待验证建议分开。持久化草案不等于永久知识。
|
|
1972
|
+
3. 默认先自动组合模板并生成 HTML,再把基线差异、候选、推荐最终页、关键交互和提升范围作为一次初始批准包展示。用户可以选择、组合、修改或拒绝;不逐项追问可由代码或模板推导的 CSS 偏好。首次批准前,将候选基线的确定 revision/designDigest 预绑定到 draft DESIGN,以 draft 状态及包内发布记录明确它尚未发布,并连同候选完整字节 SHA-256、HTML 摘要及当前基线 CAS 条件一并展示。这样批准涵盖最终规范内容;发布后仅验证同一内容落盘。临时发布状态保存在包/回执中,不写入会改变 designDigest 的规范正文。
|
|
2056
1973
|
|
|
2057
|
-
|
|
1974
|
+
4. 包获批后,P 通过 下方 `<design-portability>` 标签的设计检查、发布与恢复协议 请求 A 创建首次永久基线;该嵌入网关保持调用方原 owner,不执行整项归档。P 无永久目录直写权。已有基线的普通 change 仅记录 delta,不能借初始批准覆盖永久基线。正式 baseline 的不可变快照保存到 specdev/design/revisions/{revision}.md,`revision` 来自网关验证的 DESIGN-NNNN;恢复和历史 change 按引用版本读取,不静默替换为 current。
|
|
2058
1975
|
|
|
2059
|
-
|
|
1976
|
+
5. 实施与验证后,A 在归档阶段按同一网关评估共享规则,生成 promotion diff 并在原授权范围内写入;一次性页面内容、未采纳方向、纯原型设想不提升。保持原 ID、来源和替代关系;未提升内容随 change 归档。
|
|
2060
1977
|
|
|
2061
|
-
|
|
1978
|
+
基线冲突、未知 owner、未闭合事务或相关锁只阻塞永久写入及依赖分支。仍可完成独立的检测、草案和候选,但不得把未成功发布的基线当作已存在。正式写入前后遵循 activation-and-memory 的定位、事务检查、原子写入与回读。
|
|
2062
1979
|
|
|
2063
|
-
|
|
1980
|
+
## 批准与失效
|
|
2064
1981
|
|
|
2065
|
-
|
|
1982
|
+
用户批准绑定具体 change DESIGN 内容、基线版本和原型文件摘要,并记录可回读的确认来源。发布批准的 record.path/sha256 绑定不可追加改写的本次确认快照;LOG 追加其定位和回执。项目根已有设计规范时保留原 owner,以 derived-readonly 和根文件字节摘要明确只读派生关系。模板推荐和 Agent 自评不构成人类批准。用户已指定方向或已授权自主组合时直接完成 HTML;仍需取得最终 HTML/交互与设计合同的集中确认,不额外要求重复的风格选单。
|
|
2066
1983
|
|
|
2067
|
-
|
|
1984
|
+
HTML、交互、设计合同、引用基线或影响布局的输入变化时,旧批准只对原摘要有效。先标记受影响部分待重新确认,完成新证据后再批准;无关页面不重新访谈。多个原型包与历史失败包并存时按 `--prototype-id UI-NNN` 选择本次目标,不能以任意一个 ready 包掩盖当前包失败。
|
|
2068
1985
|
|
|
1986
|
+
## 下游硬引用
|
|
2069
1987
|
|
|
2070
|
-
|
|
1988
|
+
- **S**:UI 范围的 Spec 明确引用 change DESIGN、项目基线版本与原型 ID;将页面/状态映射到 AC。设计未批准或漂移时 UI 合同不可 Ready,返回 P。
|
|
1989
|
+
- **T**:UI Ticket 使用 ui_change=true、design_ref={revision,digest,pages,acceptance},Map 引用同一版本和适用规则;实现票明确只读设计来源、组件复用边界与视觉/交互验收。不可让执行者重新选风格。
|
|
1990
|
+
- **I**:预检重算 design_ref 引用和摘要;按已批准设计实现,在 Evidence 的 Design Conformance 记录 digest/page/AC 与真实页面、原型差异、视口及任务证据。发现设计无效返回 P,行为冲突返回 S,不能修改设计文件给实现偏差补票。
|
|
1991
|
+
- **C**:规范轴读取适用 DESIGN 与批准证据,区分规则偏离、未验证 UI 与可接受实现差异;审查不代替用户确认。
|
|
1992
|
+
- **W**:solution comment 只保留 change DESIGN、指定 UI 包和 comparison/final 的定位与证据。探索原型不是 child change 的默认批准;child 复用时必须绑定自身范围并验证引用。
|
|
2071
1993
|
|
|
2072
|
-
|
|
1994
|
+
下游必须实际读取引用内容;仅写路径或模板中的 `approved` 文本不算已消费。纯 LOGIC 仍用自身 logic.md/hash/浏览器合同,不生成虚假 UI DESIGN。
|
|
2073
1995
|
|
|
1996
|
+
## 质量与证据
|
|
2074
1997
|
|
|
2075
|
-
|
|
1998
|
+
先做独立的视觉/任务 critique,再做可机械验证的 audit,最后按严重程度修复和 polish。检查产品特征、层级、字体、密度、色彩语义、完整状态、键盘/focus、缩放、触屏、长文案、响应式和 reduced motion。审美反模式是诊断提示,用户约束与已批准项目体系优先;检测器无告警不证明设计优秀。
|
|
2076
1999
|
|
|
2077
|
-
|
|
2000
|
+
浏览器证据必须来自实际打开的本次产物,保存工具、环境、视口、操作、结果和截图相对路径。至少覆盖桌面与窄屏,适用手势单独操作;模拟 viewport 不证明真实触屏。无浏览器时可交付 draft,但不能 ready。原型 mock 只证明原型,不证明真实服务、生产性能或真实用户研究。
|
|
2078
2001
|
|
|
2079
|
-
-
|
|
2080
|
-
- 当前架构决策:`specdev/changes/{change}/ADR.md`
|
|
2081
|
-
- 当前领域上下文:`specdev/changes/{change}/CONTEXT.md`
|
|
2082
|
-
- 当前设计日志:`specdev/changes/{change}/LOG.md`
|
|
2083
|
-
- Bug 诊断:`specdev/changes/{change}/diagnosis.md`
|
|
2084
|
-
- 永久架构决策:`specdev/adr/`
|
|
2085
|
-
- 永久领域上下文:`specdev/context/`
|
|
2086
|
-
- 项目 Agent 指令及其声明的项目 Skill 根;
|
|
2087
|
-
- 项目当前代码、测试、配置、schema 和 CI 事实。
|
|
2002
|
+
schema 与 hash 校验由 下方 `<design-portability>` 标签的设计检查、发布与恢复协议 和 下方 `<design-portability>` 标签的设计检查、发布与恢复协议 承担;通过结构校验后仍需上述人工批准及运行证据。归档引用按 `--stage archived` 验证,不能用活动 change 的路径判断历史失效。
|
|
2088
2003
|
|
|
2089
|
-
|
|
2004
|
+
</design-contract>
|
|
2090
2005
|
|
|
2091
|
-
|
|
2006
|
+
<design-portability>
|
|
2092
2007
|
|
|
2093
|
-
|
|
2008
|
+
# 设计合同的离线消费、导出与恢复
|
|
2094
2009
|
|
|
2095
|
-
|
|
2096
|
-
2. 检查 `specdev/changes/{change}/spec.md` 的 `ready_for_tickets`;
|
|
2097
|
-
3. 按 下方 `<artifact-contract>` 标签 处理 Spec、ADR、用户决定与代码事实的冲突;
|
|
2098
|
-
4. 将未知项分类为可发现事实、高影响用户决定和低影响实现细节;
|
|
2099
|
-
5. 高影响未决问题没有关闭时停止,不通过更详细的 Ticket 文字伪装决策完备。
|
|
2010
|
+
单文件能力消费 UI 决定、需要首次基线发布或归档提升,而宿主不具备原项目工具时使用。本文保留相同 owner、摘要和批准门;不能把不可执行工具的名称当作已执行能力。纯 LOGIC 与无 UI 影响的工作独立继续。
|
|
2100
2011
|
|
|
2101
|
-
|
|
2012
|
+
## 工件与能力检查
|
|
2102
2013
|
|
|
2103
|
-
|
|
2014
|
+
项目基线位于 specdev/design/DESIGN.md,不可变版本位于 specdev/design/revisions/{revision}.md,检索投影位于 specdev/design/INDEX.md。当前 change 的合同位于 specdev/changes/{change}/DESIGN.md,原型、确认和浏览器证据位于 specdev/changes/{change}/prototypes/{design-id}/。change DESIGN 是规范,源码包不是第二份规则来源;跨 change 发布仍由项目设计知识网关唯一负责,消费方不能直写基线。
|
|
2104
2015
|
|
|
2105
|
-
|
|
2016
|
+
先确定宿主能否读取全部相关文件、保留原始字节、计算 SHA-256、解析无重复键的 YAML/JSON、实际打开浏览器、写入文件,以及调用原 owner 的发布网关。缺少某能力只阻塞需要它的门。不能计算摘要时输出原始材料和待计算清单,不能编造 64 位字符串;没有真实浏览器时原型保持 draft/blocked;不能调用网关时导出待执行发布包,不宣称基线已发布。
|
|
2106
2017
|
|
|
2107
|
-
|
|
2108
|
-
- 查找相邻或类似实现,优先复用项目现有模式;
|
|
2109
|
-
- 识别可能修改的模块、公共路径、共享文件、迁移索引和全局注册点;
|
|
2110
|
-
- 查找现有测试命令、夹具、类型检查、构建和 CI 门禁;
|
|
2111
|
-
- 对照 `specdev/changes/{change}/CONTEXT.md` 使用项目领域词汇;
|
|
2112
|
-
- 对照 `specdev/changes/{change}/ADR.md` 与 `specdev/adr/` 避免重新争论已接受决策。
|
|
2018
|
+
使用本文内联的项目设计、change 设计、UI 源码包和浏览器证据 schema 核对字段、类型、必需值和枚举;字段表不是许可。路径必须是所属根内的正斜杠相对 locator,不含绝对路径、反斜杠、空段、点段或符号链接。已有用户根设计文件保留原 owner,记录只读派生来源,冲突未解决不发布。
|
|
2113
2019
|
|
|
2114
|
-
|
|
2020
|
+
## 可移植的摘要算法
|
|
2115
2021
|
|
|
2116
|
-
|
|
2022
|
+
拥有确定性解析和加密工具时按以下算法计算;对话推测和人工抄写不能代替它们。
|
|
2117
2023
|
|
|
2118
|
-
1.
|
|
2119
|
-
2.
|
|
2120
|
-
3.
|
|
2121
|
-
4. 使用项目根相对 Path 记录每个 Skill 的入口文件,同时记录触发 scope、读取时机和用途;不得把 Speculo 自带 Skill 或机器绝对路径伪装成项目 Skill;
|
|
2122
|
-
5. 未发现适用项目 Skill 时,记录已扫描的 Skill 根和“无适用项”,不生成虚假路径;项目 Skill 清单是最低集合而非 allowlist。
|
|
2024
|
+
1. `byte SHA-256` 对文件原始字节计算,保留换行和编码差异;用于候选、确认快照、实际 HTML、根设计文件和 current 的并发比较。
|
|
2025
|
+
2. `designDigest`:解析 Markdown YAML 头部及正文;删除头部顶层 confirmation、status、updated_at;递归按键名排序对象,数组次序保持不变;对排序结果生成无额外空白的 JSON,再连接一个换行和将 CRLF 换成 LF、首尾 trim 后的正文;以 UTF-8 计算 SHA-256。同一算法用于项目基线与 change 合同,不能用全文字节摘要替代。
|
|
2026
|
+
3. `prototype digest`:递归枚举该包 final/ 和 comparison/ 中全部普通文件,拒绝符号链接和其他文件类型;按路径排序,形成 `[包内相对路径, 文件字节SHA-256]` 数组。将 `{candidates, selected_candidate, files}` 递归按对象键排序后生成无额外空白 JSON,以 UTF-8 计算 SHA-256。候选内容、选择或任一运行文件变化都会使旧确认失效。所有运行依赖必须位于这两个目录中,离线运行,不能通过其他目录或网络旁路摘要。
|
|
2123
2027
|
|
|
2124
|
-
|
|
2028
|
+
token 引用必须可解析且无循环;页面/规则/来源 ID 唯一。正式合同的 confirmation.digest 等于 designDigest,confirmation.record_digest 等于固定确认快照的字节 SHA-256,快照正文必须包含当前 designDigest、prototype_ref.digest 与 baseline.digest。baseline 指向存在的不可变 revision 且其 digest 相同;prototype_ref 与当前选中的包 ID、prototype digest 和 selection 一致。不得静默更新历史 change 所引用的基线。
|
|
2125
2029
|
|
|
2126
|
-
|
|
2030
|
+
## 初始设计与下游消费门
|
|
2127
2031
|
|
|
2128
|
-
-
|
|
2129
|
-
|
|
2130
|
-
-
|
|
2131
|
-
|
|
2032
|
+
1. 已有项目先读代码中的 token、组件和真实页面,再继承已批准基线;没有基线时准备 change 内的 baseline-draft。默认自动组合候选并生成同任务 HTML,再集中展示。默认 3 个候选,配置范围 2–4 个;用户明确指定数量则记录 candidate_count_override 并严格按该数量生成。候选结构需要实质差异,不用换色复制冒充选择。
|
|
2033
|
+
2. 源码包保留 final/index.html、final/styles.css、final/app.js 三个具名源码块;提取后与实际文件逐字一致。comparison 索引能访问每个候选,候选和 final 内容、控制与状态完整,所有资源存在且离线。源码、候选、资源先全部生成,包仍处于 awaiting-confirmation。
|
|
2034
|
+
3. 浏览器证据对应当前 prototype digest。inspected_files 包含所有 candidate.entry 与 final/index.html;每个候选及 final 都至少有 390px、1440px case,case.entry 与实际入口相同,保存真实 PNG,final cases.states 覆盖每个页面的 `page-id:state`。实际检查操作、键盘/focus、溢出、长文案、缩放、reduced motion,记录 console_errors、offline、设计审查、技术审查及修复复核。模板或布尔标记不证明真实执行。
|
|
2035
|
+
4. 预览门先核对全部资源、源码一致性、页面状态与浏览器证据。首次批准前,将候选基线的确定 revision/designDigest 预绑定到 draft change DESIGN;一次展示最终 HTML、change 合同、候选基线、永久目标、来源和例外。批准绑定上述原始字节与规范摘要,固定用户决定为 approval.md;后续 LOG 只追加定位。首次批准范围必须包含永久规范写入,原有同范围批准可继续使用。
|
|
2036
|
+
5. 首次基线经原 owner 网关成功发布后回读 current、revision 和回执,确认与获批候选一致;再登记同一次 change confirmation。完整 approved 门通过后才能 ready。内容或摘要漂移时保持 blocked,先修订证据并重新确认受影响内容;不得用 pending 发布包满足 ready。
|
|
2037
|
+
6. S 的 UI 行为/页面/状态 AC 引用 change 合同和基线版本。T 的 UI Ticket 使用 ui_change 和 design_ref 的 revision/digest/pages/acceptance;I/C 在开始时重新计算并实际读取对应内容,在 Design Conformance 中逐页逐 AC 记录实现证据。仅引用路径或标记 approved 不算消费。W 探索材料复用于子 change 时重新绑定其范围;历史包保留,消费的是 change prototype_ref 指定的包。
|
|
2132
2038
|
|
|
2133
|
-
|
|
2039
|
+
## 待执行网关包
|
|
2134
2040
|
|
|
2135
|
-
|
|
2041
|
+
无法调用原 owner 网关或无法写项目时,在 specdev/changes/{change}/prototypes/{design-id}/gateway-request.json 输出完整请求,状态为 `pending`;这是交接记录,不是新写入网关。请求明确 owner、mode(bootstrap/promotion)、候选路径、目标 current、预期 current 字节摘要(首次为 null)、批准对象、所需但尚未运行的门、已经完成的检查点。批准对象保留 approved、source、confirmed_at、candidate_sha256、current_sha256 和 新 `locator_version: 2`、`record: {base: "change", change, path, sha256}`;bootstrap 的 `preview: {base: "change", change, path, sha256, package_path, prototype_digest}` 绑定同一包实际 final HTML 和所有候选/运行资源。根项目已有设计规范时添加 `project_design: {owner, disposition: derived-readonly, sha256}`,候选 sources 保留相同 locator/digest。
|
|
2136
2042
|
|
|
2137
|
-
|
|
2043
|
+
按稳定路径顺序输出完整 FILE 文件包:README 与原负责计划/owner 依据、原始请求、draft change DESIGN、候选 baseline、源码包、comparison/各候选/final 全部运行文件、浏览器证据和截图、固定确认、gateway-request、LOG。二进制截图保留为可下载原文件;若宿主不能导出则明确缺失并保持 blocked,不用 Markdown 假装 PNG。不要只提供 diff 或摘要,不导出并声称已经发布永久 current。若缺少真实批准,approval 为 null 且请求保持 draft,不伪造批准字段。
|
|
2138
2044
|
|
|
2139
|
-
|
|
2045
|
+
答复必须区分“已实际保存”“待保存”“待网关执行”和“已验证/未验证”,列出每个完整相对路径、当前 phase、阻塞条件与下一步。只有工具成功回执才能宣称持久化或发布;消费方可以在依赖未满足时完成独立非 UI 工作。
|
|
2140
2046
|
|
|
2141
|
-
|
|
2142
|
-
- 完成后可以独立演示、测试或验证;
|
|
2143
|
-
- 适合一个全新 Agent 上下文在不中断的情况下完成;
|
|
2144
|
-
- 与其他 Ticket 有实质行为差异;
|
|
2145
|
-
- 只依赖真正阻止它开始的前置产物;
|
|
2146
|
-
- 自带至少一种完成证据。
|
|
2047
|
+
## 原 owner 恢复与归档提升
|
|
2147
2048
|
|
|
2148
|
-
|
|
2049
|
+
恢复先重新读取用户保存或工具实际写入的状态、gateway-request、固定批准快照、全部候选与资源;检查原 pending transaction、相关锁、owner 和 recovery evidence。重新计算候选/确认/current/HTML/prototype 摘要,任一变化停止该发布并重备具体 diff。未知锁不接管,不因年龄删除,不改其他任务状态。
|
|
2149
2050
|
|
|
2150
|
-
|
|
2051
|
+
由原 owner 先 dry-run,再按同一明确批准 apply;写入顺序是不可变 revision、current、INDEX,逐步保存 validated/revision-written/current-published/index-written 的真实回执。current 已是相同候选且 snapshot 一致时只修复缺失索引/回执,不重复发布;只有 snapshot 存在时核验原批准和 expected current 后继续;current 已被其他发布更新则停止合并。调用方原 owner 保持不变。
|
|
2151
2052
|
|
|
2152
|
-
|
|
2153
|
-
|
|
2053
|
+
实施完成后,归档仅提升有跨 change 价值并有来源的规则。一次性页面与未采用候选留在原 change;implemented 必须有实质实现证据,只有设计确认的规则保持 approved-intent。promotion 展示下一连续 revision、保留规则、merge/supersede/skip、证据和 current 并发条件,取得该具体 diff 的授权后交给同一网关。promotion 在移动前完成;若原操作已移动,则从 archive 实际位置恢复,只补原批准操作缺失步骤、不再次移动。移动后核验唯一位置、未变 Outcome、原型/合同/批准 locator 与原发布回执,完成原回执后冻结。
|
|
2054
|
+
|
|
2055
|
+
请求 v2 的 path/package_path 相对稳定 change 根;旧请求 v1 保持 project locator 只读解释。移动不可变材料前后须能解析相同原字节,不能为修路径重算批准或另建 operation。
|
|
2056
|
+
|
|
2057
|
+
</design-portability>
|
|
2058
|
+
|
|
2059
|
+
<project-design-schema>
|
|
2060
|
+
|
|
2061
|
+
```json
|
|
2062
|
+
{
|
|
2063
|
+
"type": "object",
|
|
2064
|
+
"additionalProperties": false,
|
|
2065
|
+
"properties": {
|
|
2066
|
+
"schema_version": {
|
|
2067
|
+
"const": 1
|
|
2068
|
+
},
|
|
2069
|
+
"artifact": {
|
|
2070
|
+
"const": "project-design"
|
|
2071
|
+
},
|
|
2072
|
+
"revision": {
|
|
2073
|
+
"type": "string",
|
|
2074
|
+
"pattern": "^DESIGN-\\d{4,}$"
|
|
2075
|
+
},
|
|
2076
|
+
"owner": {
|
|
2077
|
+
"const": "specdev/archive-and-consolidate"
|
|
2078
|
+
},
|
|
2079
|
+
"scope": {
|
|
2080
|
+
"type": "array",
|
|
2081
|
+
"minItems": 1,
|
|
2082
|
+
"items": {
|
|
2083
|
+
"type": "string",
|
|
2084
|
+
"minLength": 1
|
|
2085
|
+
}
|
|
2086
|
+
},
|
|
2087
|
+
"tokens": {
|
|
2088
|
+
"type": "object",
|
|
2089
|
+
"minProperties": 1
|
|
2090
|
+
},
|
|
2091
|
+
"rules": {
|
|
2092
|
+
"type": "array",
|
|
2093
|
+
"minItems": 1,
|
|
2094
|
+
"items": {
|
|
2095
|
+
"type": "object",
|
|
2096
|
+
"additionalProperties": false,
|
|
2097
|
+
"properties": {
|
|
2098
|
+
"id": {
|
|
2099
|
+
"type": "string",
|
|
2100
|
+
"minLength": 1
|
|
2101
|
+
},
|
|
2102
|
+
"statement": {
|
|
2103
|
+
"type": "string",
|
|
2104
|
+
"minLength": 1
|
|
2105
|
+
},
|
|
2106
|
+
"scope": {
|
|
2107
|
+
"type": "array",
|
|
2108
|
+
"minItems": 1,
|
|
2109
|
+
"items": {
|
|
2110
|
+
"type": "string",
|
|
2111
|
+
"minLength": 1
|
|
2112
|
+
}
|
|
2113
|
+
},
|
|
2114
|
+
"verification": {
|
|
2115
|
+
"enum": [
|
|
2116
|
+
"approved-intent",
|
|
2117
|
+
"implemented"
|
|
2118
|
+
]
|
|
2119
|
+
},
|
|
2120
|
+
"sources": {
|
|
2121
|
+
"type": "array",
|
|
2122
|
+
"minItems": 0,
|
|
2123
|
+
"items": {
|
|
2124
|
+
"type": "object",
|
|
2125
|
+
"additionalProperties": false,
|
|
2126
|
+
"properties": {
|
|
2127
|
+
"change": {
|
|
2128
|
+
"type": "string",
|
|
2129
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
2130
|
+
},
|
|
2131
|
+
"locator": {
|
|
2132
|
+
"type": "string",
|
|
2133
|
+
"minLength": 1
|
|
2134
|
+
},
|
|
2135
|
+
"digest": {
|
|
2136
|
+
"type": "string",
|
|
2137
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2138
|
+
}
|
|
2139
|
+
},
|
|
2140
|
+
"required": [
|
|
2141
|
+
"change",
|
|
2142
|
+
"locator",
|
|
2143
|
+
"digest"
|
|
2144
|
+
]
|
|
2145
|
+
}
|
|
2146
|
+
}
|
|
2147
|
+
},
|
|
2148
|
+
"required": [
|
|
2149
|
+
"id",
|
|
2150
|
+
"statement",
|
|
2151
|
+
"scope",
|
|
2152
|
+
"verification",
|
|
2153
|
+
"sources"
|
|
2154
|
+
]
|
|
2155
|
+
}
|
|
2156
|
+
},
|
|
2157
|
+
"sources": {
|
|
2158
|
+
"type": "array",
|
|
2159
|
+
"minItems": 1,
|
|
2160
|
+
"items": {
|
|
2161
|
+
"type": "object",
|
|
2162
|
+
"additionalProperties": false,
|
|
2163
|
+
"properties": {
|
|
2164
|
+
"id": {
|
|
2165
|
+
"type": "string",
|
|
2166
|
+
"minLength": 1
|
|
2167
|
+
},
|
|
2168
|
+
"locator": {
|
|
2169
|
+
"type": "string",
|
|
2170
|
+
"minLength": 1
|
|
2171
|
+
},
|
|
2172
|
+
"url": {
|
|
2173
|
+
"type": "string",
|
|
2174
|
+
"minLength": 1
|
|
2175
|
+
},
|
|
2176
|
+
"revision": {
|
|
2177
|
+
"type": "string",
|
|
2178
|
+
"minLength": 1
|
|
2179
|
+
},
|
|
2180
|
+
"license": {
|
|
2181
|
+
"type": "string",
|
|
2182
|
+
"minLength": 1
|
|
2183
|
+
},
|
|
2184
|
+
"digest": {
|
|
2185
|
+
"type": "string",
|
|
2186
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2187
|
+
}
|
|
2188
|
+
},
|
|
2189
|
+
"required": [
|
|
2190
|
+
"id",
|
|
2191
|
+
"locator"
|
|
2192
|
+
]
|
|
2193
|
+
}
|
|
2194
|
+
},
|
|
2195
|
+
"supersedes": {
|
|
2196
|
+
"anyOf": [
|
|
2197
|
+
{
|
|
2198
|
+
"type": "string",
|
|
2199
|
+
"minLength": 1
|
|
2200
|
+
},
|
|
2201
|
+
{
|
|
2202
|
+
"type": "null"
|
|
2203
|
+
}
|
|
2204
|
+
]
|
|
2205
|
+
},
|
|
2206
|
+
"updated_at": {
|
|
2207
|
+
"type": "string",
|
|
2208
|
+
"format": "date-time"
|
|
2209
|
+
}
|
|
2210
|
+
},
|
|
2211
|
+
"required": [
|
|
2212
|
+
"schema_version",
|
|
2213
|
+
"artifact",
|
|
2214
|
+
"revision",
|
|
2215
|
+
"owner",
|
|
2216
|
+
"scope",
|
|
2217
|
+
"tokens",
|
|
2218
|
+
"rules",
|
|
2219
|
+
"sources",
|
|
2220
|
+
"supersedes",
|
|
2221
|
+
"updated_at"
|
|
2222
|
+
],
|
|
2223
|
+
"$id": "urn:speculo:specdev:project-design:v1",
|
|
2224
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema"
|
|
2225
|
+
}
|
|
2226
|
+
```
|
|
2227
|
+
|
|
2228
|
+
</project-design-schema>
|
|
2229
|
+
|
|
2230
|
+
<change-design-schema>
|
|
2231
|
+
|
|
2232
|
+
```json
|
|
2233
|
+
{
|
|
2234
|
+
"type": "object",
|
|
2235
|
+
"additionalProperties": false,
|
|
2236
|
+
"properties": {
|
|
2237
|
+
"schema_version": {
|
|
2238
|
+
"const": 1
|
|
2239
|
+
},
|
|
2240
|
+
"artifact": {
|
|
2241
|
+
"const": "change-design"
|
|
2242
|
+
},
|
|
2243
|
+
"change": {
|
|
2244
|
+
"type": "string",
|
|
2245
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
2246
|
+
},
|
|
2247
|
+
"revision": {
|
|
2248
|
+
"type": "integer",
|
|
2249
|
+
"minimum": 1
|
|
2250
|
+
},
|
|
2251
|
+
"status": {
|
|
2252
|
+
"enum": [
|
|
2253
|
+
"draft",
|
|
2254
|
+
"approved",
|
|
2255
|
+
"superseded",
|
|
2256
|
+
"blocked"
|
|
2257
|
+
]
|
|
2258
|
+
},
|
|
2259
|
+
"scope": {
|
|
2260
|
+
"type": "array",
|
|
2261
|
+
"minItems": 1,
|
|
2262
|
+
"items": {
|
|
2263
|
+
"type": "string",
|
|
2264
|
+
"minLength": 1
|
|
2265
|
+
}
|
|
2266
|
+
},
|
|
2267
|
+
"baseline": {
|
|
2268
|
+
"anyOf": [
|
|
2269
|
+
{
|
|
2270
|
+
"type": "object",
|
|
2271
|
+
"additionalProperties": false,
|
|
2272
|
+
"properties": {
|
|
2273
|
+
"revision": {
|
|
2274
|
+
"type": "string",
|
|
2275
|
+
"pattern": "^DESIGN-\\d{4,}$"
|
|
2276
|
+
},
|
|
2277
|
+
"digest": {
|
|
2278
|
+
"type": "string",
|
|
2279
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2280
|
+
}
|
|
2281
|
+
},
|
|
2282
|
+
"required": [
|
|
2283
|
+
"revision",
|
|
2284
|
+
"digest"
|
|
2285
|
+
]
|
|
2286
|
+
},
|
|
2287
|
+
{
|
|
2288
|
+
"type": "null"
|
|
2289
|
+
}
|
|
2290
|
+
]
|
|
2291
|
+
},
|
|
2292
|
+
"prototype_ref": {
|
|
2293
|
+
"type": "object",
|
|
2294
|
+
"additionalProperties": false,
|
|
2295
|
+
"properties": {
|
|
2296
|
+
"id": {
|
|
2297
|
+
"type": "string",
|
|
2298
|
+
"pattern": "^UI-\\d{3,}$"
|
|
2299
|
+
},
|
|
2300
|
+
"digest": {
|
|
2301
|
+
"type": "string",
|
|
2302
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2303
|
+
}
|
|
2304
|
+
},
|
|
2305
|
+
"required": [
|
|
2306
|
+
"id",
|
|
2307
|
+
"digest"
|
|
2308
|
+
]
|
|
2309
|
+
},
|
|
2310
|
+
"selection": {
|
|
2311
|
+
"type": "object",
|
|
2312
|
+
"additionalProperties": false,
|
|
2313
|
+
"properties": {
|
|
2314
|
+
"candidate_id": {
|
|
2315
|
+
"type": "string",
|
|
2316
|
+
"minLength": 1
|
|
2317
|
+
}
|
|
2318
|
+
},
|
|
2319
|
+
"required": [
|
|
2320
|
+
"candidate_id"
|
|
2321
|
+
]
|
|
2322
|
+
},
|
|
2323
|
+
"tokens": {
|
|
2324
|
+
"type": "object",
|
|
2325
|
+
"minProperties": 1
|
|
2326
|
+
},
|
|
2327
|
+
"pages": {
|
|
2328
|
+
"type": "array",
|
|
2329
|
+
"minItems": 1,
|
|
2330
|
+
"items": {
|
|
2331
|
+
"type": "object",
|
|
2332
|
+
"additionalProperties": false,
|
|
2333
|
+
"properties": {
|
|
2334
|
+
"id": {
|
|
2335
|
+
"type": "string",
|
|
2336
|
+
"minLength": 1
|
|
2337
|
+
},
|
|
2338
|
+
"route": {
|
|
2339
|
+
"type": "string",
|
|
2340
|
+
"minLength": 1
|
|
2341
|
+
},
|
|
2342
|
+
"task": {
|
|
2343
|
+
"type": "string",
|
|
2344
|
+
"minLength": 1
|
|
2345
|
+
},
|
|
2346
|
+
"states": {
|
|
2347
|
+
"type": "array",
|
|
2348
|
+
"minItems": 1,
|
|
2349
|
+
"items": {
|
|
2350
|
+
"type": "string",
|
|
2351
|
+
"minLength": 1
|
|
2352
|
+
}
|
|
2353
|
+
},
|
|
2354
|
+
"acceptance": {
|
|
2355
|
+
"type": "array",
|
|
2356
|
+
"minItems": 1,
|
|
2357
|
+
"items": {
|
|
2358
|
+
"type": "string",
|
|
2359
|
+
"minLength": 1
|
|
2360
|
+
}
|
|
2361
|
+
}
|
|
2362
|
+
},
|
|
2363
|
+
"required": [
|
|
2364
|
+
"id",
|
|
2365
|
+
"route",
|
|
2366
|
+
"task",
|
|
2367
|
+
"states",
|
|
2368
|
+
"acceptance"
|
|
2369
|
+
]
|
|
2370
|
+
}
|
|
2371
|
+
},
|
|
2372
|
+
"overrides": {
|
|
2373
|
+
"type": "array",
|
|
2374
|
+
"minItems": 0,
|
|
2375
|
+
"items": {
|
|
2376
|
+
"type": "object",
|
|
2377
|
+
"additionalProperties": false,
|
|
2378
|
+
"properties": {
|
|
2379
|
+
"rule_id": {
|
|
2380
|
+
"type": "string",
|
|
2381
|
+
"minLength": 1
|
|
2382
|
+
},
|
|
2383
|
+
"reason": {
|
|
2384
|
+
"type": "string",
|
|
2385
|
+
"minLength": 1
|
|
2386
|
+
},
|
|
2387
|
+
"scope": {
|
|
2388
|
+
"type": "array",
|
|
2389
|
+
"minItems": 1,
|
|
2390
|
+
"items": {
|
|
2391
|
+
"type": "string",
|
|
2392
|
+
"minLength": 1
|
|
2393
|
+
}
|
|
2394
|
+
}
|
|
2395
|
+
},
|
|
2396
|
+
"required": [
|
|
2397
|
+
"rule_id",
|
|
2398
|
+
"reason",
|
|
2399
|
+
"scope"
|
|
2400
|
+
]
|
|
2401
|
+
}
|
|
2402
|
+
},
|
|
2403
|
+
"confirmation": {
|
|
2404
|
+
"anyOf": [
|
|
2405
|
+
{
|
|
2406
|
+
"type": "object",
|
|
2407
|
+
"additionalProperties": false,
|
|
2408
|
+
"properties": {
|
|
2409
|
+
"by": {
|
|
2410
|
+
"const": "user"
|
|
2411
|
+
},
|
|
2412
|
+
"at": {
|
|
2413
|
+
"type": "string",
|
|
2414
|
+
"format": "date-time"
|
|
2415
|
+
},
|
|
2416
|
+
"record": {
|
|
2417
|
+
"type": "string",
|
|
2418
|
+
"minLength": 1
|
|
2419
|
+
},
|
|
2420
|
+
"digest": {
|
|
2421
|
+
"type": "string",
|
|
2422
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2423
|
+
},
|
|
2424
|
+
"record_digest": {
|
|
2425
|
+
"type": "string",
|
|
2426
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2427
|
+
}
|
|
2428
|
+
},
|
|
2429
|
+
"required": [
|
|
2430
|
+
"by",
|
|
2431
|
+
"at",
|
|
2432
|
+
"record",
|
|
2433
|
+
"digest",
|
|
2434
|
+
"record_digest"
|
|
2435
|
+
]
|
|
2436
|
+
},
|
|
2437
|
+
{
|
|
2438
|
+
"type": "null"
|
|
2439
|
+
}
|
|
2440
|
+
]
|
|
2441
|
+
},
|
|
2442
|
+
"updated_at": {
|
|
2443
|
+
"type": "string",
|
|
2444
|
+
"format": "date-time"
|
|
2445
|
+
}
|
|
2446
|
+
},
|
|
2447
|
+
"required": [
|
|
2448
|
+
"schema_version",
|
|
2449
|
+
"artifact",
|
|
2450
|
+
"change",
|
|
2451
|
+
"revision",
|
|
2452
|
+
"status",
|
|
2453
|
+
"scope",
|
|
2454
|
+
"baseline",
|
|
2455
|
+
"prototype_ref",
|
|
2456
|
+
"selection",
|
|
2457
|
+
"tokens",
|
|
2458
|
+
"pages",
|
|
2459
|
+
"overrides",
|
|
2460
|
+
"confirmation",
|
|
2461
|
+
"updated_at"
|
|
2462
|
+
],
|
|
2463
|
+
"$id": "urn:speculo:specdev:change-design:v1",
|
|
2464
|
+
"allOf": [
|
|
2465
|
+
{
|
|
2466
|
+
"if": {
|
|
2467
|
+
"properties": {
|
|
2468
|
+
"status": {
|
|
2469
|
+
"const": "approved"
|
|
2470
|
+
}
|
|
2471
|
+
}
|
|
2472
|
+
},
|
|
2473
|
+
"then": {
|
|
2474
|
+
"properties": {
|
|
2475
|
+
"baseline": {
|
|
2476
|
+
"type": "object"
|
|
2477
|
+
},
|
|
2478
|
+
"confirmation": {
|
|
2479
|
+
"type": "object"
|
|
2480
|
+
}
|
|
2481
|
+
}
|
|
2482
|
+
}
|
|
2483
|
+
}
|
|
2484
|
+
],
|
|
2485
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema"
|
|
2486
|
+
}
|
|
2487
|
+
```
|
|
2488
|
+
|
|
2489
|
+
</change-design-schema>
|
|
2490
|
+
|
|
2491
|
+
<design-package-schema>
|
|
2492
|
+
|
|
2493
|
+
```json
|
|
2494
|
+
{
|
|
2495
|
+
"type": "object",
|
|
2496
|
+
"additionalProperties": false,
|
|
2497
|
+
"properties": {
|
|
2498
|
+
"schema_version": {
|
|
2499
|
+
"const": 3
|
|
2500
|
+
},
|
|
2501
|
+
"artifact": {
|
|
2502
|
+
"const": "ui-prototype"
|
|
2503
|
+
},
|
|
2504
|
+
"change": {
|
|
2505
|
+
"type": "string",
|
|
2506
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
2507
|
+
},
|
|
2508
|
+
"design_id": {
|
|
2509
|
+
"type": "string",
|
|
2510
|
+
"pattern": "^UI-\\d{3,}$"
|
|
2511
|
+
},
|
|
2512
|
+
"status": {
|
|
2513
|
+
"enum": [
|
|
2514
|
+
"detecting",
|
|
2515
|
+
"selecting",
|
|
2516
|
+
"awaiting-confirmation",
|
|
2517
|
+
"ready",
|
|
2518
|
+
"blocked"
|
|
2519
|
+
]
|
|
2520
|
+
},
|
|
2521
|
+
"project_kind": {
|
|
2522
|
+
"enum": [
|
|
2523
|
+
"existing",
|
|
2524
|
+
"new"
|
|
2525
|
+
]
|
|
2526
|
+
},
|
|
2527
|
+
"platforms": {
|
|
2528
|
+
"type": "array",
|
|
2529
|
+
"minItems": 1,
|
|
2530
|
+
"items": {
|
|
2531
|
+
"enum": [
|
|
2532
|
+
"desktop",
|
|
2533
|
+
"web",
|
|
2534
|
+
"mobile"
|
|
2535
|
+
]
|
|
2536
|
+
}
|
|
2537
|
+
},
|
|
2538
|
+
"candidates": {
|
|
2539
|
+
"type": "array",
|
|
2540
|
+
"minItems": 1,
|
|
2541
|
+
"items": {
|
|
2542
|
+
"type": "object",
|
|
2543
|
+
"additionalProperties": false,
|
|
2544
|
+
"properties": {
|
|
2545
|
+
"id": {
|
|
2546
|
+
"type": "string",
|
|
2547
|
+
"minLength": 1
|
|
2548
|
+
},
|
|
2549
|
+
"template_id": {
|
|
2550
|
+
"type": "string",
|
|
2551
|
+
"minLength": 1
|
|
2552
|
+
},
|
|
2553
|
+
"primary_reference": {
|
|
2554
|
+
"type": "string",
|
|
2555
|
+
"minLength": 1
|
|
2556
|
+
},
|
|
2557
|
+
"auxiliaries": {
|
|
2558
|
+
"type": "array",
|
|
2559
|
+
"minItems": 0,
|
|
2560
|
+
"items": {
|
|
2561
|
+
"type": "object",
|
|
2562
|
+
"additionalProperties": false,
|
|
2563
|
+
"properties": {
|
|
2564
|
+
"reference_id": {
|
|
2565
|
+
"type": "string",
|
|
2566
|
+
"minLength": 1
|
|
2567
|
+
},
|
|
2568
|
+
"dimension": {
|
|
2569
|
+
"type": "string",
|
|
2570
|
+
"minLength": 1
|
|
2571
|
+
}
|
|
2572
|
+
},
|
|
2573
|
+
"required": [
|
|
2574
|
+
"reference_id",
|
|
2575
|
+
"dimension"
|
|
2576
|
+
]
|
|
2577
|
+
}
|
|
2578
|
+
},
|
|
2579
|
+
"rationale": {
|
|
2580
|
+
"type": "string",
|
|
2581
|
+
"minLength": 1
|
|
2582
|
+
},
|
|
2583
|
+
"structural_difference": {
|
|
2584
|
+
"type": "string",
|
|
2585
|
+
"minLength": 1
|
|
2586
|
+
},
|
|
2587
|
+
"task_id": {
|
|
2588
|
+
"type": "string",
|
|
2589
|
+
"minLength": 1
|
|
2590
|
+
},
|
|
2591
|
+
"entry": {
|
|
2592
|
+
"type": "string",
|
|
2593
|
+
"minLength": 1
|
|
2594
|
+
}
|
|
2595
|
+
},
|
|
2596
|
+
"required": [
|
|
2597
|
+
"id",
|
|
2598
|
+
"template_id",
|
|
2599
|
+
"primary_reference",
|
|
2600
|
+
"auxiliaries",
|
|
2601
|
+
"rationale",
|
|
2602
|
+
"structural_difference",
|
|
2603
|
+
"task_id",
|
|
2604
|
+
"entry"
|
|
2605
|
+
]
|
|
2606
|
+
}
|
|
2607
|
+
},
|
|
2608
|
+
"candidate_count_override": {
|
|
2609
|
+
"anyOf": [
|
|
2610
|
+
{
|
|
2611
|
+
"type": "object",
|
|
2612
|
+
"additionalProperties": false,
|
|
2613
|
+
"properties": {
|
|
2614
|
+
"count": {
|
|
2615
|
+
"type": "integer",
|
|
2616
|
+
"minimum": 1
|
|
2617
|
+
},
|
|
2618
|
+
"request": {
|
|
2619
|
+
"type": "string",
|
|
2620
|
+
"minLength": 1
|
|
2621
|
+
}
|
|
2622
|
+
},
|
|
2623
|
+
"required": [
|
|
2624
|
+
"count",
|
|
2625
|
+
"request"
|
|
2626
|
+
]
|
|
2627
|
+
},
|
|
2628
|
+
{
|
|
2629
|
+
"type": "null"
|
|
2630
|
+
}
|
|
2631
|
+
]
|
|
2632
|
+
},
|
|
2633
|
+
"selected_candidate": {
|
|
2634
|
+
"anyOf": [
|
|
2635
|
+
{
|
|
2636
|
+
"type": "string",
|
|
2637
|
+
"minLength": 1
|
|
2638
|
+
},
|
|
2639
|
+
{
|
|
2640
|
+
"type": "null"
|
|
2641
|
+
}
|
|
2642
|
+
]
|
|
2643
|
+
},
|
|
2644
|
+
"sources": {
|
|
2645
|
+
"type": "array",
|
|
2646
|
+
"minItems": 1,
|
|
2647
|
+
"items": {
|
|
2648
|
+
"type": "object",
|
|
2649
|
+
"additionalProperties": false,
|
|
2650
|
+
"properties": {
|
|
2651
|
+
"id": {
|
|
2652
|
+
"type": "string",
|
|
2653
|
+
"minLength": 1
|
|
2654
|
+
},
|
|
2655
|
+
"locator": {
|
|
2656
|
+
"type": "string",
|
|
2657
|
+
"minLength": 1
|
|
2658
|
+
},
|
|
2659
|
+
"url": {
|
|
2660
|
+
"type": "string",
|
|
2661
|
+
"minLength": 1
|
|
2662
|
+
},
|
|
2663
|
+
"revision": {
|
|
2664
|
+
"type": "string",
|
|
2665
|
+
"minLength": 1
|
|
2666
|
+
},
|
|
2667
|
+
"license": {
|
|
2668
|
+
"type": "string",
|
|
2669
|
+
"minLength": 1
|
|
2670
|
+
},
|
|
2671
|
+
"digest": {
|
|
2672
|
+
"type": "string",
|
|
2673
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2674
|
+
}
|
|
2675
|
+
},
|
|
2676
|
+
"required": [
|
|
2677
|
+
"id",
|
|
2678
|
+
"locator"
|
|
2679
|
+
]
|
|
2680
|
+
}
|
|
2681
|
+
},
|
|
2682
|
+
"prototype_files": {
|
|
2683
|
+
"type": "array",
|
|
2684
|
+
"uniqueItems": true,
|
|
2685
|
+
"items": {
|
|
2686
|
+
"type": "string",
|
|
2687
|
+
"minLength": 1
|
|
2688
|
+
},
|
|
2689
|
+
"allOf": [
|
|
2690
|
+
{
|
|
2691
|
+
"contains": {
|
|
2692
|
+
"const": "final/index.html"
|
|
2693
|
+
}
|
|
2694
|
+
},
|
|
2695
|
+
{
|
|
2696
|
+
"contains": {
|
|
2697
|
+
"const": "final/styles.css"
|
|
2698
|
+
}
|
|
2699
|
+
},
|
|
2700
|
+
{
|
|
2701
|
+
"contains": {
|
|
2702
|
+
"const": "final/app.js"
|
|
2703
|
+
}
|
|
2704
|
+
}
|
|
2705
|
+
]
|
|
2706
|
+
},
|
|
2707
|
+
"browser_evidence": {
|
|
2708
|
+
"anyOf": [
|
|
2709
|
+
{
|
|
2710
|
+
"type": "string",
|
|
2711
|
+
"minLength": 1
|
|
2712
|
+
},
|
|
2713
|
+
{
|
|
2714
|
+
"type": "null"
|
|
2715
|
+
}
|
|
2716
|
+
]
|
|
2717
|
+
},
|
|
2718
|
+
"updated_at": {
|
|
2719
|
+
"type": "string",
|
|
2720
|
+
"format": "date-time"
|
|
2721
|
+
}
|
|
2722
|
+
},
|
|
2723
|
+
"required": [
|
|
2724
|
+
"schema_version",
|
|
2725
|
+
"artifact",
|
|
2726
|
+
"change",
|
|
2727
|
+
"design_id",
|
|
2728
|
+
"status",
|
|
2729
|
+
"project_kind",
|
|
2730
|
+
"platforms",
|
|
2731
|
+
"candidates",
|
|
2732
|
+
"candidate_count_override",
|
|
2733
|
+
"selected_candidate",
|
|
2734
|
+
"sources",
|
|
2735
|
+
"prototype_files",
|
|
2736
|
+
"browser_evidence",
|
|
2737
|
+
"updated_at"
|
|
2738
|
+
],
|
|
2739
|
+
"$id": "urn:speculo:specdev:ui-prototype:v3",
|
|
2740
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema"
|
|
2741
|
+
}
|
|
2742
|
+
```
|
|
2743
|
+
|
|
2744
|
+
</design-package-schema>
|
|
2745
|
+
|
|
2746
|
+
<prototype-browser-evidence-schema>
|
|
2747
|
+
|
|
2748
|
+
```json
|
|
2749
|
+
{
|
|
2750
|
+
"type": "object",
|
|
2751
|
+
"additionalProperties": false,
|
|
2752
|
+
"properties": {
|
|
2753
|
+
"schema_version": {
|
|
2754
|
+
"const": 1
|
|
2755
|
+
},
|
|
2756
|
+
"artifact": {
|
|
2757
|
+
"const": "prototype-browser-evidence"
|
|
2758
|
+
},
|
|
2759
|
+
"prototype_digest": {
|
|
2760
|
+
"type": "string",
|
|
2761
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2762
|
+
},
|
|
2763
|
+
"generated_at": {
|
|
2764
|
+
"type": "string",
|
|
2765
|
+
"format": "date-time"
|
|
2766
|
+
},
|
|
2767
|
+
"provider": {
|
|
2768
|
+
"type": "string",
|
|
2769
|
+
"minLength": 1
|
|
2770
|
+
},
|
|
2771
|
+
"inspected_files": {
|
|
2772
|
+
"type": "array",
|
|
2773
|
+
"minItems": 1,
|
|
2774
|
+
"items": {
|
|
2775
|
+
"type": "string",
|
|
2776
|
+
"minLength": 1
|
|
2777
|
+
}
|
|
2778
|
+
},
|
|
2779
|
+
"cases": {
|
|
2780
|
+
"type": "array",
|
|
2781
|
+
"minItems": 1,
|
|
2782
|
+
"items": {
|
|
2783
|
+
"type": "object",
|
|
2784
|
+
"additionalProperties": false,
|
|
2785
|
+
"properties": {
|
|
2786
|
+
"id": {
|
|
2787
|
+
"type": "string",
|
|
2788
|
+
"minLength": 1
|
|
2789
|
+
},
|
|
2790
|
+
"width": {
|
|
2791
|
+
"type": "integer",
|
|
2792
|
+
"minimum": 320
|
|
2793
|
+
},
|
|
2794
|
+
"height": {
|
|
2795
|
+
"type": "integer",
|
|
2796
|
+
"minimum": 200
|
|
2797
|
+
},
|
|
2798
|
+
"screenshot": {
|
|
2799
|
+
"type": "string",
|
|
2800
|
+
"minLength": 1
|
|
2801
|
+
},
|
|
2802
|
+
"checks": {
|
|
2803
|
+
"type": "object",
|
|
2804
|
+
"additionalProperties": false,
|
|
2805
|
+
"properties": {
|
|
2806
|
+
"rendered": {
|
|
2807
|
+
"const": true
|
|
2808
|
+
},
|
|
2809
|
+
"no_overflow": {
|
|
2810
|
+
"const": true
|
|
2811
|
+
},
|
|
2812
|
+
"keyboard": {
|
|
2813
|
+
"const": true
|
|
2814
|
+
},
|
|
2815
|
+
"focus": {
|
|
2816
|
+
"const": true
|
|
2817
|
+
},
|
|
2818
|
+
"long_text": {
|
|
2819
|
+
"const": true
|
|
2820
|
+
},
|
|
2821
|
+
"zoom": {
|
|
2822
|
+
"const": true
|
|
2823
|
+
},
|
|
2824
|
+
"reduced_motion": {
|
|
2825
|
+
"const": true
|
|
2826
|
+
},
|
|
2827
|
+
"states": {
|
|
2828
|
+
"const": true
|
|
2829
|
+
}
|
|
2830
|
+
},
|
|
2831
|
+
"required": [
|
|
2832
|
+
"rendered",
|
|
2833
|
+
"no_overflow",
|
|
2834
|
+
"keyboard",
|
|
2835
|
+
"focus",
|
|
2836
|
+
"long_text",
|
|
2837
|
+
"zoom",
|
|
2838
|
+
"reduced_motion",
|
|
2839
|
+
"states"
|
|
2840
|
+
]
|
|
2841
|
+
},
|
|
2842
|
+
"states": {
|
|
2843
|
+
"type": "array",
|
|
2844
|
+
"minItems": 1,
|
|
2845
|
+
"items": {
|
|
2846
|
+
"type": "string",
|
|
2847
|
+
"minLength": 1
|
|
2848
|
+
}
|
|
2849
|
+
},
|
|
2850
|
+
"entry": {
|
|
2851
|
+
"type": "string",
|
|
2852
|
+
"minLength": 1
|
|
2853
|
+
}
|
|
2854
|
+
},
|
|
2855
|
+
"required": [
|
|
2856
|
+
"id",
|
|
2857
|
+
"width",
|
|
2858
|
+
"height",
|
|
2859
|
+
"screenshot",
|
|
2860
|
+
"checks",
|
|
2861
|
+
"states",
|
|
2862
|
+
"entry"
|
|
2863
|
+
]
|
|
2864
|
+
}
|
|
2865
|
+
},
|
|
2866
|
+
"console_errors": {
|
|
2867
|
+
"type": "array",
|
|
2868
|
+
"maxItems": 0
|
|
2869
|
+
},
|
|
2870
|
+
"offline": {
|
|
2871
|
+
"const": true
|
|
2872
|
+
},
|
|
2873
|
+
"design_review": {
|
|
2874
|
+
"type": "string",
|
|
2875
|
+
"minLength": 1
|
|
2876
|
+
},
|
|
2877
|
+
"technical_review": {
|
|
2878
|
+
"type": "string",
|
|
2879
|
+
"minLength": 1
|
|
2880
|
+
},
|
|
2881
|
+
"rechecked": {
|
|
2882
|
+
"const": true
|
|
2883
|
+
}
|
|
2884
|
+
},
|
|
2885
|
+
"required": [
|
|
2886
|
+
"schema_version",
|
|
2887
|
+
"artifact",
|
|
2888
|
+
"prototype_digest",
|
|
2889
|
+
"generated_at",
|
|
2890
|
+
"provider",
|
|
2891
|
+
"inspected_files",
|
|
2892
|
+
"cases",
|
|
2893
|
+
"console_errors",
|
|
2894
|
+
"offline",
|
|
2895
|
+
"design_review",
|
|
2896
|
+
"technical_review",
|
|
2897
|
+
"rechecked"
|
|
2898
|
+
],
|
|
2899
|
+
"$id": "urn:speculo:specdev:prototype-browser-evidence:v1",
|
|
2900
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema"
|
|
2901
|
+
}
|
|
2902
|
+
```
|
|
2903
|
+
|
|
2904
|
+
</prototype-browser-evidence-schema>
|
|
2905
|
+
|
|
2906
|
+
<ref-common-rules-skill-invocation>
|
|
2907
|
+
|
|
2908
|
+
# 可验证的 Skill 调用契约
|
|
2909
|
+
|
|
2910
|
+
本规则用于 T 规划、P 调度和 I 执行。Map 维护最低读取路由;每票 `skill_bindings` 才定义本票调用,二者不得互相代替。
|
|
2911
|
+
|
|
2912
|
+
## 定位与绑定
|
|
2913
|
+
|
|
2914
|
+
1. 从项目 Agent 指令解析真实 Skill 根,先枚举元数据和触发条件,再读取命中入口及当前阶段要求的参考;不整读所有 Skills。
|
|
2915
|
+
2. 保留逻辑路径、解析真实源,检查不存在的路径、越界软链接、缓存和入口 `name`。默认不使用插件缓存或 node_modules 充当项目可维护源;用户维护的项目内软链接保持原状。仓库外技能需要先取得明确源域授权并由项目网关处理,控制器不会自行扩大根目录。
|
|
2916
|
+
3. 每个绑定必须包含真实 `id`(SKILL 的 name)、项目根相对路径 `path`、入口字节 `sha256`、`phase`(plan/implement/verify)、`operation`、非空 `inputs`、`outputs`、`required` 与 `on_failure`。引用较长参考时在 references 字段 中记录明确 Path、sha256 与 `when`;相关参考在调用前按条件回读。
|
|
2917
|
+
4. 必需绑定失败固定为 `block-ticket`;可选绑定只有说明 `condition` 与不适用原因才允许 `report-and-continue`。可选标记不能覆盖用户要求或技能自身硬门禁。
|
|
2918
|
+
5. 在模板 frontmatter 中,数组对象用单行 JSON;不使用自定义 YAML 对象语法。缺失 Skill、摘要漂移、占位符或入口 ID 不符,票不得进入 ready。没有适用项目 Skill 时 `skill_bindings: []`,`skill_scan` 必须写真实扫描范围与不适用理由,Map 同步无适用项。
|
|
2919
|
+
|
|
2920
|
+
## 示例形状(生成真实票时全部替换)
|
|
2921
|
+
|
|
2922
|
+
```json
|
|
2923
|
+
{"id":"project-test","path":".agents/skills/project-test/SKILL.md","sha256":"<真实64位摘要>","phase":"verify","operation":"run-regression","inputs":["当前Ticket与定向diff"],"outputs":["含命令、退出码和验收映射的Evidence"],"required":true,"on_failure":"block-ticket","references":[]}
|
|
2924
|
+
```
|
|
2925
|
+
|
|
2926
|
+
此示例不是项目已存在的 Skill,不得复制为可执行绑定。SpecDev 自带技能在 Work 中按明确 Path 调用,不能伪装为项目 Skill。
|
|
2927
|
+
|
|
2928
|
+
## 执行证据
|
|
2929
|
+
|
|
2930
|
+
到相应阶段后,实际调用宿主能力或执行该 Skill 明确的步骤。记录技能 ID、phase、operation、所用摘要、输入定位、执行轨迹、输出与结果。仅展示 `@skill`、复制入口、声明“已读”都不是完成证据。
|
|
2931
|
+
|
|
2932
|
+
新版票 done 前,在本票 `specdev/changes/{change}/evidence/T-NN.md` 增加 `## Skill Execution Records`,紧接一个 JSON 数组代码块。每项有 `id`、`phase`、`operation`、`sha256`、`status`(passed/failed/skipped)、非空 `evidence` 字符串数组。required 项必须 passed;验证器只能检查记录结构与摘要一致,Lead 仍需回读真实工具/过程证据,不能把结构通过称为宿主调用已经被认证。
|
|
2933
|
+
|
|
2934
|
+
摘要变更先由 Lead 检查影响、更新绑定和 map 后重验;不自动接受最新文件,不回写已完成旧证据。
|
|
2935
|
+
|
|
2936
|
+
</ref-common-rules-skill-invocation>
|
|
2937
|
+
|
|
2938
|
+
<ref-specdev-t-tickets-references-planning-procedure>
|
|
2939
|
+
|
|
2940
|
+
# 拆分 Tickets
|
|
2941
|
+
|
|
2942
|
+
|
|
2943
|
+
Ticket 是**决策完备的微型执行计划**:它消除执行者在目标、范围、公共契约、关键顺序和验收上的关键决策,但不展开逐行代码、局部变量或可从现有惯例自然推导的实现细节。
|
|
2944
|
+
|
|
2945
|
+
本 work 保留原有能力:代码库探索、prefactor 识别、曳光弹垂直切片、真实阻塞边、用户粒度核对、宽重构的 expand-contract 排序、Ticket 独立文件和总体 Tickets Map。
|
|
2946
|
+
|
|
2947
|
+
|
|
2948
|
+
## 输入
|
|
2949
|
+
|
|
2950
|
+
优先读取:
|
|
2951
|
+
|
|
2952
|
+
- 当前 Spec:`specdev/changes/{change}/spec.md`
|
|
2953
|
+
- 当前架构决策:`specdev/changes/{change}/ADR.md`
|
|
2954
|
+
- 当前领域上下文:`specdev/changes/{change}/CONTEXT.md`
|
|
2955
|
+
- 当前设计日志:`specdev/changes/{change}/LOG.md`
|
|
2956
|
+
- Bug 诊断:`specdev/changes/{change}/diagnosis.md`
|
|
2957
|
+
- 永久架构决策:`specdev/adr/`
|
|
2958
|
+
- 永久领域上下文:`specdev/context/`
|
|
2959
|
+
- 项目 Agent 指令及其声明的项目 Skill 根;
|
|
2960
|
+
- 项目当前代码、测试、配置、schema 和 CI 事实。
|
|
2961
|
+
|
|
2962
|
+
若尚无 `specdev/changes/{change}/spec.md`,只有在用户提供的计划或对话已经等价覆盖目标、范围、关键决定和可判定验收时才可继续;否则建议先运行 “编写 Spec 阶段”。
|
|
2963
|
+
|
|
2964
|
+
## 流程
|
|
2965
|
+
|
|
2966
|
+
### 1. 输入预检
|
|
2967
|
+
|
|
2968
|
+
1. 先读取上游工件索引,按当前 Ticket 的依赖、缺口和冲突关键词定位,再回读相关工件;
|
|
2969
|
+
2. 检查 `specdev/changes/{change}/spec.md` 的 `ready_for_tickets`;
|
|
2970
|
+
3. 按 下方 `<artifact-contract>` 标签 处理 Spec、ADR、用户决定与代码事实的冲突;
|
|
2971
|
+
4. 将未知项分类为可发现事实、高影响用户决定和低影响实现细节;
|
|
2972
|
+
5. 高影响未决问题没有关闭时停止,不通过更详细的 Ticket 文字伪装决策完备。
|
|
2973
|
+
|
|
2974
|
+
**完成标准**:拆分依据、权威顺序、合同范围与未决问题已明确。
|
|
2975
|
+
|
|
2976
|
+
UI 范围同时读取 下方 `<design-contract>` 标签 与 specdev/changes/{change}/DESIGN.md,核对批准、revision/digest、基线、prototype 和页面/状态。每张 UI 票以 `design_ref` 绑定所负责的 pages/acceptance,不能复制一份可独立修改的视觉规则。设计缺失或漂移先返回 P。
|
|
2977
|
+
|
|
2978
|
+
### 2. 探索代码库与实现地形
|
|
2979
|
+
|
|
2980
|
+
如果尚未探索,进行只读探索:
|
|
2981
|
+
|
|
2982
|
+
- 找到行为入口、稳定接口、测试接缝、数据流和错误路径;
|
|
2983
|
+
- 查找相邻或类似实现,优先复用项目现有模式;
|
|
2984
|
+
- 识别可能修改的模块、公共路径、共享文件、迁移索引和全局注册点;
|
|
2985
|
+
- 查找现有测试命令、夹具、类型检查、构建和 CI 门禁;
|
|
2986
|
+
- 对照 `specdev/changes/{change}/CONTEXT.md` 使用项目领域词汇;
|
|
2987
|
+
- 对照 `specdev/changes/{change}/ADR.md` 与 `specdev/adr/` 避免重新争论已接受决策。
|
|
2988
|
+
|
|
2989
|
+
遇到不熟悉的模块、外部依赖或第三方库时,使用 下方 `<research>` 标签,再继续拆分。
|
|
2990
|
+
|
|
2991
|
+
#### 项目 Skill 路由
|
|
2992
|
+
|
|
2993
|
+
1. 读取项目 Agent 指令,确定项目声明的 Skill 根;至少枚举 `.agents/skills/**/SKILL.md`,存在其他项目级 Skill 根时一并枚举;
|
|
2994
|
+
2. 先读取候选 Skill 的 frontmatter 与入口路由;只有命中当前 change 的 scope、路径、技术域或验证条件时才完整读取,并按其 Skill Map 路由到当前 change 需要的领域 Skill;
|
|
2995
|
+
3. 根据 change 索引、每个 Ticket 的 frontmatter、路径、技术域、公共契约、迁移与验证范围,确定 `ALL` 或具体 Ticket 的最低必读集合;只把真实存在且触发条件匹配的项目 Skill 纳入;
|
|
2996
|
+
4. 使用项目根相对 Path 记录每个 Skill 的入口文件,同时记录触发 scope、读取时机和用途;不得把 Speculo 自带 Skill 或机器绝对路径伪装成项目 Skill;
|
|
2997
|
+
5. 未发现适用项目 Skill 时,记录已扫描的 Skill 根和“无适用项”,不生成虚假路径;项目 Skill 清单是最低集合而非 allowlist。
|
|
2998
|
+
|
|
2999
|
+
#### Prefactor
|
|
3000
|
+
|
|
3001
|
+
遵循“让变更变容易,然后做容易的变更”:
|
|
3002
|
+
|
|
3003
|
+
- 如果当前接口、依赖或接缝会使后续实现明显不安全或重复,提出前置 prefactor Ticket;
|
|
3004
|
+
- prefactor 必须说明它解除的具体阻碍;
|
|
3005
|
+
- prefactor 必须独立有价值且可验证;
|
|
3006
|
+
- 不为了“更干净”而创建与目标无关的重构 Ticket。
|
|
3007
|
+
|
|
3008
|
+
**完成标准**:实现地形、稳定接缝、共享路径、必要 prefactor 与逐 Ticket 项目 Skill 路由已识别。
|
|
3009
|
+
|
|
3010
|
+
### 3. 草拟曳光弹式垂直切片
|
|
3011
|
+
|
|
3012
|
+
加载 下方 `<decomposition-rules>` 标签。每个切片应横向穿过交付该行为所需的最小层次组合,而不是把数据库、后端、前端和测试拆成互相无价值的水平 Ticket。
|
|
3013
|
+
|
|
3014
|
+
每个 Ticket 必须:
|
|
3015
|
+
|
|
3016
|
+
- 交付一个可观察行为,或一个能独立解除后续阻塞的安全准备能力;
|
|
3017
|
+
- 完成后可以独立演示、测试或验证;
|
|
3018
|
+
- 适合一个全新 Agent 上下文在不中断的情况下完成;
|
|
3019
|
+
- 与其他 Ticket 有实质行为差异;
|
|
3020
|
+
- 只依赖真正阻止它开始的前置产物;
|
|
3021
|
+
- 自带至少一种完成证据。
|
|
3022
|
+
|
|
3023
|
+
#### 宽重构例外
|
|
3024
|
+
|
|
3025
|
+
字段重命名、共享符号类型变化、协议升级等宽机械变更无法安全塞入单个垂直切片时,按以下顺序:
|
|
3026
|
+
|
|
3027
|
+
1. **Expand**:在旧形式旁增加新形式,保持旧调用方可工作;
|
|
3028
|
+
2. **Migrate batches**:按包、目录、消费者或风险分批迁移,每批独立成 Ticket;
|
|
2154
3029
|
3. **Contract**:确认旧调用点为零后删除旧形式;
|
|
2155
3030
|
4. 若迁移批次无法各自保持绿色,使用隔离集成分支和最终集成验证 Gate,但仍保留明确的批次与责任边界。
|
|
2156
3031
|
|
|
2157
|
-
**完成标准**:每个 Ticket 的可观察产出、真实阻塞边和验证方式已草拟。
|
|
3032
|
+
**完成标准**:每个 Ticket 的可观察产出、真实阻塞边和验证方式已草拟。
|
|
3033
|
+
|
|
3034
|
+
### 4. 判定规划深度与风险
|
|
3035
|
+
|
|
3036
|
+
按 下方 `<readiness-and-depth>` 标签 为每个 Ticket 标注:
|
|
3037
|
+
|
|
3038
|
+
- `lite`:局部、可逆、沿用既有模式、无公共契约或迁移影响;
|
|
3039
|
+
- `standard`:大多数多文件或跨层垂直切片;
|
|
3040
|
+
- `deep`:公共 API/schema、数据迁移、安全/隐私/资金、不可逆操作、expand-contract、共享核心路径、多个 implementation owner 的跨 Ticket 写入协调或高事故半径。
|
|
3041
|
+
|
|
3042
|
+
规划深度不是优先级,也不是 Gate。每个 Ticket 必须记录触发该深度的原因。
|
|
3043
|
+
|
|
3044
|
+
### 5. 写成决策完备 Ticket
|
|
3045
|
+
|
|
3046
|
+
必须按 下方 `<ref-common-rules-skill-invocation>` 标签 填写本票真实调用绑定;Map 中的读取路由不能代替调用。
|
|
3047
|
+
|
|
3048
|
+
使用 下方 `<ticket-template>` 标签 填写:
|
|
3049
|
+
|
|
3050
|
+
- 战略目标、可观察产出与来源追踪;
|
|
3051
|
+
- 当前代码事实和需求差距;
|
|
3052
|
+
- 已锁定决策、低影响假设和未决问题;
|
|
3053
|
+
- IN / REUSE / OUT;
|
|
3054
|
+
- 用户或调用者视角的端到端行为;
|
|
3055
|
+
- Standard/Deep 的接口、输入输出、不变量、数据流、失败与兼容契约;
|
|
3056
|
+
- 有序执行路线和安全落点;
|
|
3057
|
+
- expected、writable、read-only、shared 路径;
|
|
3058
|
+
- 正常、失败和回归验证矩阵;
|
|
3059
|
+
- 每个 Ticket 按 Goal Plan 的 workspace 策略定义 current-workspace/direct-parent 或 source-worktree/parent-candidate 检查,以及按实际跨边界风险判定的 E2E disposition;
|
|
3060
|
+
- 每个实现 Ticket 的 implementation commit 与对应父分支完成条件;仅 required 模式创建独立 worktree;
|
|
3061
|
+
- Deep 的迁移、兼容窗口、监控、回滚和不可逆批准点;
|
|
3062
|
+
- 可判定验收标准。
|
|
3063
|
+
|
|
3064
|
+
路径所有权必须遵守 下方 `<path-ownership>` 标签,证据设计必须遵守 下方 `<evidence-and-verification>` 标签。
|
|
3065
|
+
|
|
3066
|
+
### 6. 构建依赖 DAG、合同覆盖与并发检查
|
|
3067
|
+
|
|
3068
|
+
1. 使用 Ticket ID 建立 `blocked_by`;
|
|
3069
|
+
2. 检测循环和不存在的引用;
|
|
3070
|
+
3. 识别根 Ticket、汇合点、扇出与收缩点;
|
|
3071
|
+
4. 为每个 Spec 验收合同映射至少一个 Ticket;
|
|
3072
|
+
5. 检查并行候选的 `writable_paths` 是否相交;
|
|
3073
|
+
6. 共享路径必须指定唯一 owner,通常由专门 Ticket 或明确的集成 owner 修改;
|
|
3074
|
+
7. 不得用依赖边表达“可能更方便”或纯粹的人员交接。
|
|
3075
|
+
|
|
3076
|
+
使用 下方 `<tickets-map-template>` 标签 草拟总体 Map;写入所有 Ticket 共享的总体实施背景与项目 Skill 读取矩阵。矩阵中的每个 Ticket 必须由 `ALL` 或自己的 Ticket ID 覆盖。
|
|
3077
|
+
|
|
3078
|
+
### 7. Definition of Ready
|
|
3079
|
+
|
|
3080
|
+
加载 下方 `<ticket-readiness>` 标签 逐个检查。
|
|
3081
|
+
|
|
3082
|
+
存在以下任一情况时 `ready: false`:
|
|
3083
|
+
|
|
3084
|
+
- 会改变行为、接口、数据、兼容、安全、范围或验收的未决问题;
|
|
3085
|
+
- 依赖缺失或 DAG 有环;
|
|
3086
|
+
- 可写路径不明确或并行所有权冲突;
|
|
3087
|
+
- 验证方法不能执行且没有批准的替代证据;
|
|
3088
|
+
- Ticket 未声明 E2E required/not-required 及理由,或在 required 模式把 E2E 安排到 source worktree;
|
|
3089
|
+
- Tickets Map 缺少总体实施背景或项目 Skill 读取矩阵,项目 Skill 路径不存在、不是项目根相对路径,或当前 Ticket 未被 `ALL`/自身 ID 覆盖;
|
|
3090
|
+
- 无法形成实现 commit 与 Goal Plan 所选 direct-parent/candidate-merge 父分支出口;
|
|
3091
|
+
- 单个新上下文无法完成;
|
|
3092
|
+
- Standard/Deep 缺少有序执行路线;
|
|
3093
|
+
- Deep 缺少迁移、兼容、监控、回滚或批准点。
|
|
3094
|
+
|
|
3095
|
+
### 8. 与用户核对
|
|
3096
|
+
|
|
3097
|
+
以完整编号列表展示所有 Ticket,至少包含:
|
|
3098
|
+
|
|
3099
|
+
- 标题;
|
|
3100
|
+
- 可观察交付;
|
|
3101
|
+
- 被阻塞于;
|
|
3102
|
+
- Planning Depth 与触发原因;
|
|
3103
|
+
- 风险;
|
|
3104
|
+
- Ready 状态;
|
|
3105
|
+
- 关键未决问题;
|
|
3106
|
+
- 预计并行组和共享路径 owner;
|
|
3107
|
+
- `ALL` 与逐 Ticket 的项目 Skill 最低必读集合。
|
|
3108
|
+
|
|
3109
|
+
核对:
|
|
3110
|
+
|
|
3111
|
+
- 粒度是否适合单一上下文;
|
|
3112
|
+
- 是否出现水平切片;
|
|
3113
|
+
- 阻塞边是否真实;
|
|
3114
|
+
- 是否应合并、进一步拆分或增加 prefactor;
|
|
3115
|
+
- 合同是否全部覆盖;
|
|
3116
|
+
- 路径所有权和验证是否可信。
|
|
3117
|
+
|
|
3118
|
+
每次修改后重新展示完整列表,直到用户批准。用户明确要求一次性自主规划且不存在高影响未知项时,可使用推荐默认值并把假设写入 Ticket,不为形式重复询问。
|
|
3119
|
+
|
|
3120
|
+
### 9. 发布
|
|
3121
|
+
|
|
3122
|
+
创建:
|
|
3123
|
+
|
|
3124
|
+
- Ticket 目录:`specdev/changes/{change}/ticket/`
|
|
3125
|
+
- Tickets Map:`specdev/changes/{change}/tickets-map.md`
|
|
3126
|
+
- Evidence 目录:`specdev/changes/{change}/evidence/`
|
|
3127
|
+
|
|
3128
|
+
按拓扑顺序写入 Ticket:
|
|
3129
|
+
|
|
3130
|
+
```text
|
|
3131
|
+
specdev/changes/{change}/ticket/NN-<ticket-name>.md
|
|
3132
|
+
```
|
|
3133
|
+
|
|
3134
|
+
`NN` 使用两位或更多位零填充数字;Ticket frontmatter ID 使用 `T-NN`。Ticket 的 `blocked_by` 使用 Ticket ID,而不是相对文件路径。
|
|
3135
|
+
|
|
3136
|
+
使用 下方 `<ticket-template>` 标签 和 下方 `<tickets-map-template>` 标签 生成工件,并对照:
|
|
3137
|
+
|
|
3138
|
+
- 下方 `<ticket-schema>` 标签
|
|
3139
|
+
- 下方 `<tickets-map-schema>` 标签
|
|
3140
|
+
|
|
3141
|
+
运行:
|
|
3142
|
+
|
|
3143
|
+
```bash
|
|
3144
|
+
node Speculo Node 校验器 \
|
|
3145
|
+
--stage tickets \
|
|
3146
|
+
--repo <project-root> \
|
|
3147
|
+
specdev/changes/{change}
|
|
3148
|
+
```
|
|
3149
|
+
|
|
3150
|
+
回读 Ticket 的状态、Map 的依赖/导航以及 README 接续点,不另写状态镜像。
|
|
3151
|
+
|
|
3152
|
+
## 完成标准
|
|
3153
|
+
|
|
3154
|
+
- Ticket 目录和 Map 已写入本文约定的位置;
|
|
3155
|
+
- Spec 合同全部 covered 或有明确批准的 deferred;
|
|
3156
|
+
- DAG 无环、阻塞引用存在;
|
|
3157
|
+
- Ready Ticket 无高影响未知项;
|
|
3158
|
+
- 并行 Ticket 无未解决的可写冲突;
|
|
3159
|
+
- 每个 Ticket 可独立验证且适配单一上下文;
|
|
3160
|
+
- Tickets Map 已记录总体实施背景;每个 Ticket 被项目 Skill 读取矩阵覆盖,Skill 路径存在且为项目根相对路径;
|
|
3161
|
+
- Prefactor 与 expand-contract 使用条件正确;
|
|
3162
|
+
- 用户已批准拆分或明确授权自主发布;
|
|
3163
|
+
- 校验器无 error。
|
|
3164
|
+
|
|
3165
|
+
## 子文件引用
|
|
3166
|
+
|
|
3167
|
+
- 拆分规则:下方 `<decomposition-rules>` 标签
|
|
3168
|
+
- Ticket 就绪规则:下方 `<ticket-readiness>` 标签
|
|
3169
|
+
- Ticket 模板:下方 `<ticket-template>` 标签
|
|
3170
|
+
- Tickets Map 模板:下方 `<tickets-map-template>` 标签
|
|
3171
|
+
|
|
3172
|
+
## 下一步
|
|
3173
|
+
|
|
3174
|
+
满足任一情况时建议运行 “目标规划阶段”:Ticket 数量达到或超过 10、存在多个 implementation owner 的并行写入协调、Deep Ticket、迁移、共享契约、多个 Gate 或高风险发布。只读 review/research 并行本身不触发 Goal Plan;少量线性 Ready Ticket 可直接进入 “实现阶段”。
|
|
3175
|
+
|
|
3176
|
+
</ref-specdev-t-tickets-references-planning-procedure>
|
|
3177
|
+
|
|
3178
|
+
<ref-common-skills-plan-quality-review-skill>
|
|
3179
|
+
|
|
3180
|
+
# Plan Quality Review
|
|
3181
|
+
|
|
3182
|
+
读取 下方 `<ref-common-skills-plan-quality-review-references-checklist>` 标签,输入当前范围的 Spec、Ticket、map、授权引用和真实技能元数据。只读检查,结果交回 T/P 写入其原有 LOG/Evidence,不创建独立状态根。
|
|
3183
|
+
|
|
3184
|
+
按背景与边界、调用可执行性、依赖/资源、验收与数量、权限与恢复逐项给出 pass/block/not-applicable 及证据。任一硬门禁缺失则阻塞受影响票;用户要求完整计划时不得用 Lite、少量样例或压缩输出代替全部交付。
|
|
3185
|
+
|
|
3186
|
+
</ref-common-skills-plan-quality-review-skill>
|
|
3187
|
+
|
|
3188
|
+
<ref-common-rules-error-handling>
|
|
3189
|
+
|
|
3190
|
+
# 错误、状态保证与恢复
|
|
3191
|
+
|
|
3192
|
+
在设计、实现或审查失败、重试、取消、后台任务和恢复时读取。此规则决定失败后的工程判断;既有授权、状态 owner 与远程操作协议仍分别拥有执行权,不在这里创建账本或更换恢复网关。
|
|
3193
|
+
|
|
3194
|
+
## 先定义失败后仍成立的事实
|
|
3195
|
+
|
|
3196
|
+
预期失败使用可区分的类型或稳定代码,保存必要原因和处理信息;不要解析展示文案来选择恢复分支。无法预期的缺陷可以作为异常报告,但不能被 catch 转成成功。对每个可能改变状态的操作,记录实际处理者、报告者、清理责任及失败后的保证:
|
|
3197
|
+
|
|
3198
|
+
| 已知副作用 | 可以作出的判断 | 下一步 |
|
|
3199
|
+
|---|---|---|
|
|
3200
|
+
| 未开始或确认未发生 | 未产生本次效果 | 仍需核对授权、取消与重试条件 |
|
|
3201
|
+
| 已确认全部提交 | 效果已发生 | 回读结果,不能再次创建相同效果 |
|
|
3202
|
+
| 已确认部分发生 | 只有已核实部分可信 | 停止依赖完整结果的工作,按 owner 的补偿或继续协议处理 |
|
|
3203
|
+
| 结果未知 | 无法保证没发生或已成功 | 保留原操作标识,先对账;不能声称回滚或安全重试 |
|
|
3204
|
+
|
|
3205
|
+
捕获异常不撤销已经发生的修改,记录日志不等于完成恢复。只有受影响状态的 owner 能证明后续操作的前置条件仍成立;否则停止依赖该状态的工作、弃用无效实例或升级处理。无关、独立且已授权工作仍可继续。
|
|
3206
|
+
|
|
3207
|
+
## 重试、取消与无进展
|
|
3208
|
+
|
|
3209
|
+
重试必须说明安全重复的依据、执行 owner、取消途径和预算。只读、可幂等重试和需要先确认副作用的操作分别处理;“发生了超时”本身不能证明可重复。持续监督需要可释放的生命周期和可见降级,不伪装为有限次数操作。
|
|
3210
|
+
|
|
3211
|
+
使用现有 config/Plan 的预算,不在下游偷偷扩大次数。只读操作也可能依赖已变化输入,仍需核实范围。
|
|
3212
|
+
|
|
3213
|
+
同一输入、同一方法、同一失败且没有新证据时,不通过更换 Agent、清空 attempts 或重复问用户来制造进展。恢复既有 Goal/Ticket 时沿用原失败记录,由 Lead 说明新增证据或方法变化后再派发。远程对账与 marker 去重由 “请求分诊阶段” 路由到原远程协议;进入远程分支后再读取,不在普通错误审查中加载传输实现。
|
|
3214
|
+
|
|
3215
|
+
取消只说明发出了取消请求,不保证远端副作用或子进程已经停止。传播 signal 后仍需等待属于本操作的完成信号;清理失败和业务失败分别报告,不能用后者隐藏前者。
|
|
3216
|
+
|
|
3217
|
+
取消必须说明停止接收、停止执行和外部工作终止各自的时点;无法确认终止时保留未知状态和后续核实责任。
|
|
3218
|
+
|
|
3219
|
+
## 面向用户的结果
|
|
3220
|
+
|
|
3221
|
+
最终说明必须指出受影响操作、已知影响、尚不确定的结果、系统当前处置和下一安全动作。失效状态持续存在时,提示也应持续可见;错误提示组件不能随已关闭的来源界面一起消失。保留有效数据,不为展示瞬时错误清空它。使用目标项目原有语言和诊断机制;敏感内部信息不进入公开文案。主要报告渠道失败时有独立的安全回退。
|
|
3222
|
+
|
|
3223
|
+
S 把适用保证写成行为合同,T-tickets 指定验证,I 落实和记录,D 调查实际失败,C 追踪所有可达路径。验证应观察外部状态、文件、事件、退出或用户可见结果,不只断言异常被捕获。
|
|
3224
|
+
|
|
3225
|
+
## 判断示例
|
|
3226
|
+
|
|
3227
|
+
请求创建 PR 后超时,应先按稳定 marker 查询原目标;直接重发可能重复创建。读取无副作用的数据遇到临时网络错误,在预算、取消和环境允许时可以重试。这两个场景不能共享无条件 retry。
|
|
3228
|
+
|
|
3229
|
+
方法参考:DeepSeek Harness 的错误处理标准,固定参考版本见 <Url>https://github.com/deepseek-ai/deepseek-harness/blob/d743267388641bc76f17c45ce8b4c231aed1d32c/.agents/skills/dsh-error-handling/SKILL.md</Url>;这里采用 SpecDev 原有 owner 和持久化,不导入其运行时实现。
|
|
3230
|
+
|
|
3231
|
+
</ref-common-rules-error-handling>
|
|
3232
|
+
|
|
3233
|
+
<ref-common-rules-agent-experience>
|
|
3234
|
+
|
|
3235
|
+
# 面向 Agent 的工具与 Work 体验
|
|
3236
|
+
|
|
3237
|
+
修改工具名称、描述、参数、返回、prompt、Work、Skill 或上下文加载时读取。Work 的具名入口 Markdown 就是本工作流的技能入口;保留原 ID 与文件名,不另建技能注册根,也不要求每个 Work 启动任务执行者。
|
|
3238
|
+
|
|
3239
|
+
普通代码修改不自动触发全库提示词审查。
|
|
3240
|
+
|
|
3241
|
+
## 发现、加载与执行分开
|
|
3242
|
+
|
|
3243
|
+
description 写真实触发时机、任务范围和相近但不适用的场景,不写“资深专家”式角色自述。先展示用途、可用动作和必要限制,再按模式加载正文或 reference。延后资源必须有可理解的描述、可靠定位和读取条件;不能为减少首轮内容把必要信息藏到不可发现的位置。
|
|
3244
|
+
|
|
3245
|
+
已加载同版本正文的同一次任务不重复读取;输入范围、摘要或 owner 变化时重读受影响内容。首次选中只看到摘要时必须读正文,不能从名称推导步骤。实际执行记录继续遵守 下方 `<ref-common-rules-skill-invocation>` 标签;读过入口不是执行完成。
|
|
3246
|
+
|
|
3247
|
+
## 工具描述与结果
|
|
3248
|
+
|
|
3249
|
+
参数的范围、默认值、配对和使用条件写在参数定义中。工具说明描述行为与返回,避免复制其他工具或系统段已经拥有的规则。权限、破坏性副作用、不可重复操作和必需验证必须在动作之前可见;描述不是底层权限检查的替代。
|
|
3250
|
+
|
|
3251
|
+
返回有界的结果摘要以及可回读的 ID、路径或游标,明确截断、遗漏、分页和证据完整性。包含少量当前动作确实需要的邻近上下文,不整页倒出日志,也不因过度裁剪迫使下一步反复搜索。缺少资源、格式无效和加载失败要能辨认,不伪造可用性。
|
|
3252
|
+
|
|
3253
|
+
要能区分无结果、读取失败、权限不足和不完整视图。分页未完整不能报告穷尽;有结果句柄不意味着结果已读。
|
|
3254
|
+
|
|
3255
|
+
## 作为行为验证
|
|
3256
|
+
|
|
3257
|
+
检查模型真正收到的工具 schema、prompt、结果和诊断,覆盖正常、失败、取消、权限不足、重复调用和恢复中的适用分支。用户直接调用已注入的 Work 不应再次重复加载同一正文。仅宿主支持时才依赖自动/显式调用元数据;文字字段本身不是安全控制。
|
|
3258
|
+
|
|
3259
|
+
增加空结果、截断后继续读取等真实行为场景。相同请求反复工具调用、换问法但没有进展时,记录已尝试方法与新增证据;使用原 I/P 的停止和恢复规则,不新建无限自动循环。失败后的副作用与安全动作按 下方 `<ref-common-rules-error-handling>` 标签。
|
|
3260
|
+
|
|
3261
|
+
比较优化前后实际首轮输入、总读取、重复调用、误触发和任务结果。在没有同模型、同工具、同任务的实际使用记录时,只报告文件字符或字节变化,不能宣称 token、费用或配额节省。已有正反任务观察与结构检查分别报告。
|
|
3262
|
+
|
|
3263
|
+
方法参考:<Url>https://github.com/deepseek-ai/deepseek-harness/blob/d743267388641bc76f17c45ce8b4c231aed1d32c/.agents/skills/agent-experience/SKILL.md</Url>。SpecDev 不因此获得 DSH 的运行时 Skill 加载器。
|
|
3264
|
+
|
|
3265
|
+
</ref-common-rules-agent-experience>
|
|
3266
|
+
|
|
3267
|
+
<ref-specdev-p-goal-plan-references-map-control>
|
|
3268
|
+
|
|
3269
|
+
# 从 tickets-map 控制整个 Goal
|
|
3270
|
+
|
|
3271
|
+
## 只读控制器
|
|
3272
|
+
|
|
3273
|
+
使用 本地只读 Goal 控制器(不含于网页快照),输入单 change tickets-map、父入口 tickets-map 或旧 Implementation Map。`--repo` 指项目根;可用 `--previous` 提供上轮 JSON 输出,比较输入漂移。输出仅建议 frontier、blocked、in-flight、完成票与受影响闭包,不写状态、不调用 Skill、不授予权限,也不代替既有阶段校验器。
|
|
3274
|
+
|
|
3275
|
+
```bash
|
|
3276
|
+
node 本地只读 Goal 控制器(不含于网页快照) --map <map-path> --repo <project-root>
|
|
3277
|
+
```
|
|
3278
|
+
|
|
3279
|
+
Lead 将输出保存到调用方自己的既有 Evidence 位置;不创建独立调度数据库。JSON 中 `input_digest`、`goal_contract_digest` 和逐票 `contract_digests` 是读集快照,不是授权凭据。
|
|
3280
|
+
|
|
3281
|
+
## 每轮循环
|
|
3282
|
+
|
|
3283
|
+
1. 重读当前 map、Ticket frontmatter、Gate 与 owner;机器检查依赖、Skill、语义资源和路径,Lead 核验真实授权及当前 Git 事实。
|
|
3284
|
+
2. 只有依赖成功满足、ready、owner 可判定且无冲突的票才能进入 dispatch。单 change 的未来 draft 票只阻塞自身及依赖闭包;上游 done 后仍需 Lead 按真实产物重审 DoR,不自动提升 Ready。cancelled 不是成功交付:下游必须重规划依赖,不能自动视为 satisfied。
|
|
3285
|
+
3. current 策略严格单 writer;required 使用原计划 `Execution Policy Source` 确定的并发与尝试上限,核对实际存在的 config/宿主限制,Lead 实际参与实现时计入。写集、语义资源、integration queue 无冲突才并行。不同文件可能共享 API、数据表、锁文件或公共契约,因此不能只比较文件名。
|
|
3286
|
+
4. 按票的调用阶段读取并实际执行必需 Skill;按项目协议调用的“技能”可以是宿主技能调用,也可以是完整执行该 SKILL 的程序步骤,但必须记录对应步骤/工具轨迹与输出,不得仅记录阅读完成。
|
|
3287
|
+
5. I 返回后核对实现、Skill 执行记录、验证矩阵、实际交付数量和集成证据。失败保留 blocker;不能用减少测试或替换工具来“修好”状态。
|
|
3288
|
+
6. 核验后只更新原 Ticket 的权威状态和本票 Evidence;跨票 Gate 的独有结果留原 Goal。仅当导航、依赖或合同覆盖发生变化时修订 Map,不为票级进度生成持久投影。恢复回读这些原工件与实际 Git,已完成票不重跑副作用;证据持久化失败不推进 done。
|
|
3289
|
+
7. 有他人资源/事务冲突只暂停该票与其依赖闭包,继续独立、已授权票。无法可靠分辨共享资源时,暂停相关资源而非抢占。
|
|
3290
|
+
8. frontier 空且仍有未完成票时返回精确缺口;全部票完成后执行 Goal 集成验收,按原完成合同关闭。
|
|
3291
|
+
|
|
3292
|
+
## 正式记忆
|
|
3293
|
+
|
|
3294
|
+
开始任何正式写入前,先检查原网关的 pending transaction、lock、recovery evidence 与 owner。Goal 只请求拥有 namespace 的原工作流执行,不直接写永久记忆,也不创建“更轻量”的旁路网关。
|
|
3295
|
+
|
|
3296
|
+
单票 blocked/deviated 不强制将父 Plan 的全局执行门关闭。只有全局合同失败或合法 frontier 为空时暂停父循环。检查点摘要覆盖 Spec、票合同、实际 Skill/参考版本、依赖、相关 serialization 与共享 Goal 门禁;原 Ticket 的普通 owner/status 变化不是合同变更。摘要是漂移检测,不替代授权和实证验收。
|
|
3297
|
+
|
|
3298
|
+
</ref-specdev-p-goal-plan-references-map-control>
|
|
3299
|
+
|
|
3300
|
+
<ref-common-rules-engineering-evidence>
|
|
3301
|
+
|
|
3302
|
+
# 专业分支的工程证据
|
|
3303
|
+
|
|
3304
|
+
本规则只约束新运行的 R.performance、I.documentation 和 D.evidence-triage;既有工件与主持久化 schema 不升级。普通 Work 不要求额外记录。记录是某次 checkpoint 的观察,不拥有 Ticket/Goal/change 状态、授权或恢复锁;不能用它代替原 Evidence、诊断和验收。
|
|
3305
|
+
|
|
3306
|
+
## 写入原 owner
|
|
3307
|
+
|
|
3308
|
+
在原工件正文添加 `Engineering Evidence` 小节及一个标记为 `json specdev-engineering-evidence` 的代码围栏,里面是一个 JSON 对象。performance 位于 specdev/changes/{change}/architecture-review.md;incident 位于 specdev/changes/{change}/diagnosis.md;documentation 位于原本票 specdev/changes/{change}/evidence/T-NN.md 或原 specdev/changes/{change}/evidence/direct-spec.md。禁止写到另一模式的 owner,旧归档与旧完成证据不回填。
|
|
3309
|
+
|
|
3310
|
+
公共字段:`version: 1`、`kind`、实际源码/输入的 `checkpoint`、非空 `evidence` 字符串数组。指针使用原 Path/来源定位约定,不写机器绝对路径、密钥或未脱敏数据。记录每次真实观察,恢复时追加新 checkpoint 的证据;不能更改旧事实来制造成功。
|
|
3311
|
+
|
|
3312
|
+
## Performance
|
|
3313
|
+
|
|
3314
|
+
`operation` 是用户操作,`outcome` 为 baseline、improved、no-gain 或 inconclusive,`uncertainty` 解释测量局限。没有样本时只能 inconclusive。baseline/candidate 各含实际 `checkpoint`、`entrypoint`、`environment`、`clock`、`workload`、64 位 `workload_digest`、`unit`(ms/bytes/ops/s)、`direction`(lower/higher)、`cache`(cold/warm/not-applicable)、`excluded_costs` 字符串数组和有限非负 `samples` 数组。
|
|
3315
|
+
|
|
3316
|
+
普通 R 调查只记录 baseline 或 inconclusive;improved/no-gain 需已有可比较的 baseline 与 candidate。比较除源码 checkpoint 外的工作量、入口、环境、时钟、单位、方向、缓存与排除成本必须一致。improved 还需 `behavior_verification: passed`,并且样本算术均值沿目标方向改善。满足这些必要条件仍不证明超过噪声、具备统计显著性、内存可接受或测量真实,Lead 必须回读数据与行为证据。
|
|
3317
|
+
|
|
3318
|
+
## Documentation
|
|
3319
|
+
|
|
3320
|
+
记录 `owner_paths`(真实源指针数组)、`outcome`(verified/partial/blocked)、`visible_behavior_changed` 布尔值、`behavior_verification`(passed/failed/not-run/not-applicable),以及非空 `claims` 数组。每项 claim 有 subject、method(command/source/manual)、state(verified/unverified)和 evidence。未验证项必须写 reason;verified 的 command 项还必须有 command、`executed: true`、`exit_code: 0` 和非空 output 原始结果摘要数组。
|
|
3321
|
+
|
|
3322
|
+
总体 verified 要求所有声明 verified;可见行为改变时必须有 passed 的行为证据。partial/blocked 是诚实的阶段结果,不授予 Ticket done。工具仍不能认证 Agent 自报,Lead 继续核对真实命令、输出和来源。
|
|
3323
|
+
|
|
3324
|
+
## Incident
|
|
3325
|
+
|
|
3326
|
+
记录非空 facts、unknowns、next_checks 字符串数组;`feedback_loop_ready: false` 与 `root_cause_confirmed: false` 必须明确。这是事件证据截面,不是根因结论。正式 diagnosis 的红灯、假设和状态仍由原诊断规则验证;未来获得红灯后保留原事件观察,转入正常 D 流程,不把旧观察改写成当时已确认。
|
|
3327
|
+
|
|
3328
|
+
## 验证入口
|
|
3329
|
+
|
|
3330
|
+
新分支分别执行现有校验器的 `--engineering performance`、`--engineering documentation` 或 `--stage diagnosis --engineering incident`,输入当前 change。可与原 `--repo` 和适用 `--stage` 结合。没有标记记录的历史工件继续按原规则验证;显式专业模式缺少记录会失败,已有标记记录在普通 change 校验中也会检查。
|
|
3331
|
+
|
|
3332
|
+
代码块语法是 `json specdev-engineering-evidence`,不是新文件类型。校验器只读,无论成功、失败或不完整都不写状态、不创建缺失工件、不执行命令、不获取授权。源记录、结构校验、真实工具执行和宿主观察是不同证据,报告时分别说明。
|
|
3333
|
+
|
|
3334
|
+
</ref-common-rules-engineering-evidence>
|
|
3335
|
+
|
|
3336
|
+
<ref-common-rules-documentation-standard>
|
|
3337
|
+
|
|
3338
|
+
# 开发文档的归属、保真与验证
|
|
3339
|
+
|
|
3340
|
+
在 SpecDev 中新增、修改、审查或整理项目文档时读取。本规则负责开发文档的工程要求,不改写全局写作能力。注释继续使用 下方 `<ref-common-rules-code-commenting-rule>` 标签;工件冲突遵守 下方 `<artifact-contract>` 标签。
|
|
3341
|
+
|
|
3342
|
+
## 一项事实的负责位置
|
|
3343
|
+
|
|
3344
|
+
Work 入口说明如何执行;common 说明跨 Work 判断;项目源码、接口说明与 README 描述当前行为;change ADR 保存已经接受的决定和真实取舍;CONTEXT 保存本 change 已确认领域语义;LOG 保存讨论、待验证解释和被替代结论;Evidence 记录实际验证。永久知识仅经 A 晋升,archive 是只读历史。
|
|
3345
|
+
|
|
3346
|
+
按读者与任务区分教程和查询参考。教程按前置知识与操作顺序组织,参考限定自身负责的主题。上层文档只说明下属职责并链接具体 owner,不复制整个子模块实现。用户不需要的内部过程不要挤进入口;详细信息需要可定位而不是被删掉。
|
|
3347
|
+
|
|
3348
|
+
## 改写前保留完整命题
|
|
3349
|
+
|
|
3350
|
+
逐项保留行动者、动作、条件、时间与顺序、必须/可以/禁止、例外、所有权、副作用、失败保证及后果。删掉这些词可能改变行为,不是简单精简。局部使用点仍要有安全调用所需的完整契约;长篇理由、历史和算法说明链接其 owner。参考或生成内容先改真实源,再重建派生文件,不手工改生成物。
|
|
3351
|
+
|
|
3352
|
+
正文描述当前机制,不保留“本轮修改”“下一张 PR”“审查者已认可”或只有某次会话才能解释的编号。必要历史与事故证据留在 LOG/ADR/复盘中;真实 issue、公开规范和可定位历史引用不因出现编号就删除。未知理由保持未知,不补写想象中的设计史。
|
|
3353
|
+
|
|
3354
|
+
数字和来源没有核实就写未验证,不编造备选方案或测试经历。HTTP API、服务、进程边界和事务边界有实际含义时保留精确术语,不机械替换成 module/seam。
|
|
3355
|
+
|
|
3356
|
+
## 运行声明与升级说明
|
|
3357
|
+
|
|
3358
|
+
字段、默认值、命令和平台行为查 owning source,并在有执行条件时运行文档给出的实际操作。仅检查文字或链接不能证明命令成功。缺少网络、凭据、平台或权限时,明确未执行项、风险与验证 owner;不换成模拟后声称真实路径已验证。
|
|
3359
|
+
|
|
3360
|
+
外部可感知的破坏性变更在引入时同步升级说明:受影响对象、旧新行为、精确迁移步骤、成功确认和真实恢复限制。用户数据已经发布就不是可随意覆盖的开发数据;预发布名称不解除兼容义务。使用目标项目已有升级文档位置,没有惯例时由当前任务批准的项目文档路径承载,不新建 SpecDev 永久 namespace。
|
|
3361
|
+
|
|
3362
|
+
双语或多语仅在目标项目要求时同步。保留未改变的已审文本,核对条款含义、术语、代码及链接;哈希或结构一致不证明翻译正确。不要照搬 DSH 的双语三件套、行数对齐和字数配额。
|
|
3363
|
+
|
|
3364
|
+
## 文档维护与可见行为
|
|
3365
|
+
|
|
3366
|
+
纯文档可以使用链接、示例、类型片段、生成一致性和事实核对,不伪造 TDD 或 E2E。涉及工具说明、prompt、错误消息或 CLI/UI 输出时按行为变更处理,追加实际模型/用户可见证据或明确未验证。执行入口见 下方 `<ref-specdev-i-implement-references-documentation-procedure>` 标签;C 可仅审查,不获得写入权。
|
|
3367
|
+
|
|
3368
|
+
没有所需行为层运行能力时报告缺口,并按原 Gate 保持未通过,不能借文档任务绕过。验收回读修改源和派生物,列出检查、未验证项及明确的新增行为;不用字数变化宣称 Token 或费用节省。
|
|
3369
|
+
|
|
3370
|
+
方法参考:<Url>https://github.com/deepseek-ai/deepseek-harness/blob/d743267388641bc76f17c45ce8b4c231aed1d32c/.agents/skills/dsh-prose-standard/SKILL.md</Url> 与 <Url>https://github.com/deepseek-ai/deepseek-harness/blob/d743267388641bc76f17c45ce8b4c231aed1d32c/docs/AGENTS.md</Url>。
|
|
3371
|
+
|
|
3372
|
+
</ref-common-rules-documentation-standard>
|
|
3373
|
+
|
|
3374
|
+
<ref-common-rules-test-reliability>
|
|
3375
|
+
|
|
3376
|
+
# 可重复的测试与有效反例
|
|
3377
|
+
|
|
3378
|
+
新增、修改或调查异步、资源、时钟、并发、进程或 CI 易抖动测试时读取。检查选择和执行证据由 下方 `<evidence-and-verification>` 标签 拥有;本规则只规定测试怎样可靠地观察目标行为。
|
|
3379
|
+
|
|
3380
|
+
## 按真实拓扑设计隔离
|
|
3381
|
+
|
|
3382
|
+
从实际测试配置与 CI 定义确认同文件用例、不同 worker、不同测试进程和共享主机的 job 是否可能重叠。进程隔离不隔离端口、可预测目录、数据库、外部服务和继承的子进程。
|
|
3383
|
+
|
|
3384
|
+
每个资源都有获取者、原子分配动作、可观察就绪、立即登记的清理和清理完成信号。测试服务器绑定 loopback 的系统分配端口后再读取地址,不先扫描“空闲端口”;目录使用独立临时根,数据库/会话使用独立 namespace。稳定录制 ID 与临时地址在 fixture 内映射,不强迫真实资源复用固定地址。仅作解析输入的 URL 或路径不属于已获取资源。
|
|
3385
|
+
|
|
3386
|
+
不得为了掩盖一个 fixture 的冲突把整个套件串行化。共享资源修复涉及跨进程隔离时,使用独立并发进程证明隔离,而不只把同一文件中的测试顺序执行。
|
|
3387
|
+
|
|
3388
|
+
## 全局变量、时钟与平台
|
|
3389
|
+
|
|
3390
|
+
优先注入依赖而不是修改进程全局状态。必须修改 env、cwd、timer、locale、模块 mock 或 fetch 拦截时,保存“缺失/存在及原值”,立即登记恢复,并在最小作用域用 finally 恢复;必要时增加失败兜底。拦截只覆盖本 fixture 的精确请求。
|
|
3391
|
+
|
|
3392
|
+
平台拥有的语义从真实读回结果确认。不要假定时间戳精度、环境变量大小写、信号、权限或文件句柄关闭语义跨平台相同;确实不适用的场景明确跳过并说明原因,不削弱所有平台断言。超时预算依据真实 lane 与被等待操作,setup/teardown 一并考虑。用例预算应明显大于被测试的超时。
|
|
3393
|
+
|
|
3394
|
+
## 同步与彻底清理
|
|
3395
|
+
|
|
3396
|
+
等待 readiness、handshake、状态、promise 或外部可观察条件;sleep 只可作为已经完成状态的展示停留,不作为正确性的依据。竞态使用 barrier/deferred 明确制造重叠,不靠随机重复碰运气。
|
|
3397
|
+
|
|
3398
|
+
清理要停止新工作、解除监听、恢复全局修改,并等待子进程 exit、server close、worker termination 或等价信号。仅调用 abort/close/kill 不代表清理完成。测试需能在断言失败后仍清理,并在存在晚到回调时验证它不能污染下一个测试。
|
|
3399
|
+
|
|
3400
|
+
清理失败保留原故障及清理故障,不吞掉其中一个。
|
|
3401
|
+
|
|
3402
|
+
## 有效 red、负向对照与测试删除
|
|
3403
|
+
|
|
3404
|
+
有效 red 必须来自目标行为断言。编译错误、没选中测试、fixture 初始化失败、探针未执行、timeout 杀死子进程都不是目标回归证据。强制变异先证明修改落在真实执行路径,观察预期断言失败,再还原并复跑基线。
|
|
3405
|
+
|
|
3406
|
+
新增静态或工件准入规则,要从实际顶层 runner 投入故意无效输入并观察预期拒绝;只单测未接入的辅助函数不算落实。对于普通回归,在实际可行且安全时观察修复前失败。无法重现的部分明确未验证。
|
|
3407
|
+
|
|
3408
|
+
删除旧测试前逐项核对它所保护的行为、错误、兼容和历史回归在新测试中的承接位置与有效证据。新的公共接口测试存在,不证明旧测试全部冗余;缺失承接则保留或补齐。不要用 sleep、宽断言、吞错、重试、归一化或跳过来制造绿色。真实外部服务允许的有界重试须由该测试政策明确批准,并报告重试与跳过。
|
|
3409
|
+
|
|
3410
|
+
覆盖率和测试数量不能证明等价。结构检查、可执行反例和真实宿主观察分别报告,不把第一层写成第三层。
|
|
3411
|
+
|
|
3412
|
+
方法参考:<Url>https://github.com/deepseek-ai/deepseek-harness/blob/d743267388641bc76f17c45ce8b4c231aed1d32c/.agents/skills/dsh-ci-test-reliability/SKILL.md</Url>。使用目标项目的框架和真实 CI,不照搬 DSH 的工具、覆盖率或超时常量。
|
|
3413
|
+
|
|
3414
|
+
</ref-common-rules-test-reliability>
|
|
3415
|
+
|
|
3416
|
+
<ref-common-rules-change-completion>
|
|
3417
|
+
|
|
3418
|
+
# Change Completion
|
|
3419
|
+
|
|
3420
|
+
本规则是 change 整体完成或取消的唯一合同。README 的 Outcome 只是结论,必须能沿原工件重建证据;结束不等于已归档。
|
|
3421
|
+
|
|
3422
|
+
## 完成门
|
|
3423
|
+
|
|
3424
|
+
一个 change 只有同时满足以下条件才能 completed:
|
|
3425
|
+
|
|
3426
|
+
1. 所有计划内 Ticket 为 done,或因权威事实无需改动而记录为 cancelled;Direct Spec/非实现流程有等价验收。
|
|
3427
|
+
2. required Ticket 有 source commit、passed candidate、父分支 result SHA,且父分支包含 source commit;current Ticket 有 implementation commit、passed direct-parent 验证和父分支 result SHA;对应 Ticket Evidence 的 workspace/集成记录均完整;不要求 JSON 镜像。
|
|
3428
|
+
3. 每个行为有 Lead Evidence,全部 Spec 合同与 Goal Gate 可定位。
|
|
3429
|
+
4. current Ticket 的 current-workspace 检查/回归和适用 E2E,或 required Ticket 的 source-worktree 非 E2E 检查、parent-candidate 集成/回归和 required E2E 已通过;not-required 有理由。
|
|
3430
|
+
5. 迁移、发布、监控、恢复和不可逆批准已完成或明确不适用。
|
|
3431
|
+
6. 没有未批准 deviation、blocker、unverified、活动 candidate 或未集成 source checkpoint。
|
|
3432
|
+
7. Ticket、Map 的依赖/导航、Goal Plan、Evidence、README 与实际 Git 一致;不复制单票状态。
|
|
3433
|
+
|
|
3434
|
+
UI 实施还需 Evidence 对照已批准 change DESIGN、固定基线与页面/状态验收;原型截图不代替实现的真实渲染。设计漂移或未确认例外按 下方 `<design-contract>` 标签 返回 owner,不能以票全 done 消除缺口。
|
|
3435
|
+
|
|
3436
|
+
Evidence-only Done 和 empty commit 不满足完成门.
|
|
3437
|
+
|
|
3438
|
+
父实现 change 还必须满足 下方 `<parent-implementation-orchestration>` 标签:全部成员 completed,Implementation Map 与 Implementation Plan completed 且 revision 一致,跨 change 全套验证通过,`specdev/changes/{change}/evidence/implementation-orchestration.md` 完整,没有活动派单、candidate、serialization lock 或未裁决冲突。父完成不自动归档或移动任何成员。
|
|
3439
|
+
|
|
3440
|
+
## 转换 Owner
|
|
3441
|
+
|
|
3442
|
+
- 有 Goal Plan:其唯一 Lead 在关闭最后 Gate 后拥有转换;
|
|
3443
|
+
- 无 Goal Plan 的 Ticket/Direct Spec:当前 I-implement 主会话 owner 拥有转换;
|
|
3444
|
+
- 非实现型终点:最终验收工件 owner 使用本规则。
|
|
3445
|
+
- 父实现 change:Implementation Plan 的唯一 Lead 在全部成员与 aggregate gate 关闭后拥有转换。
|
|
3446
|
+
|
|
3447
|
+
Owner 依据来自原 Goal/Implementation Plan、I 的真实会话或非实现验收工件,不由调用方任意声明。门全部通过后,重验 README 旧字节和证据,由同一 owner 原子更新 specdev/changes/{change}/README.md 唯一 `Outcome: completed` 行并链接完成依据,再重读;不连带改票时间戳或复制进度。轻量任务由 README 的范围、逐 AC 实际结果、适用验证和下一步承接等价证据;用户要求的独立工件和复杂实现门不得省略。
|
|
3448
|
+
|
|
3449
|
+
## 远程来源与归档
|
|
3450
|
+
|
|
3451
|
+
远程动作不参与本地完成判定。Triage `external_action` 为 `pending-close`/`close-failed` 时先 reconcile;`closed`、`waived` 或 `not-applicable` 才允许 Archive。Triage `publish_action` 为 `pending`/`publish-failed` 时先恢复或结束 publish;`not-requested`、`published` 或 `waived` 才允许 Archive。`not-requested` 是默认,未点过 publish 的 change 不被新模式绑架。归档后工件只读。
|
|
3452
|
+
|
|
3453
|
+
**完成标准**:完成声明可由本地工件、Git 与验证重建;只有一个 owner 命中;失败 candidate 不污染父分支。
|
|
3454
|
+
|
|
3455
|
+
## 非实现复盘终点与 PR 归档门
|
|
3456
|
+
|
|
3457
|
+
仅有 R-retro(可先经 T intake)的 review-only change,以 completed 的 RETRO 报告作为等价验收;不能同时存在 Spec、Ticket、Map、Goal Plan、implementation 工件、Evidence 或 worktree。报告 sources 非空、结果诚实、全部验收完成,owner 按原完成转换规则更新状态;存在实现工件时仍走原实现完成门。insufficient-evidence 仅表示报告完整,不表示问题已解决。
|
|
3458
|
+
|
|
3459
|
+
PR requested=true 且 status=planned/failed 时阻塞归档;delivery_target=ready 时 draft 也保持未闭合。draft 目标可由 draft/ready 满足,ready 目标只由 ready 满足;waived 须记录放弃交付的授权与原因。创建成功不等于已授权 merge。独立 TRI 不因关联 change 就参与完成/归档门。
|
|
3460
|
+
|
|
3461
|
+
## 整体取消
|
|
3462
|
+
|
|
3463
|
+
只有真实用户取消请求发生时,由原完成 owner 核对并记录:决定来源、范围和时间;未交付内容与已落地代码/数据/设计/远程影响;活动 writer 已停止或明确交接的证据;父子依赖、未集成 checkpoint/candidate 的处置;已承诺外部动作的结果或明确放弃/转交依据;后续 owner、保留材料和恢复限制。记录放 README 或原 Goal 决定章节并链接,齐全后重验旧字节,写入唯一 `Outcome: cancelled` 并重读。
|
|
3464
|
+
|
|
3465
|
+
A 只验证取消结果,不代替用户取消。单 Ticket cancelled 不推导整体取消;不批量改票为 done/cancelled,不自动回滚、远程关闭或删除 branch/worktree。未知外部结果继续阻塞归档;超时/无响应不能证明 writer 结束。已发布 DESIGN revision 保留,未实现候选随 change 保存;cancelled 不满足 promotion 的 implemented 完成来源门。
|
|
3466
|
+
|
|
3467
|
+
|
|
3468
|
+
## 轻量证据与取消的只读语法
|
|
3469
|
+
|
|
3470
|
+
轻量 README 使用唯一 scope/acceptance/verification 显式锚点,acceptance 列可观察的 AC-n。完成时 verification 表使用 `AC | Result | Evidence`(可选 SHA256 列),每个 AC 恰一行 `passed` 和可回读实际证据 locator;提供摘要时必须匹配真实字节。证据可用 #anchor 指向同 README 的独立证据段,不能指向 Outcome/Ownership 或该结果声明自身,记录 `Method`、`Source`、`Observed`、`Result: passed`;有 `Command` 时须 `Exit: 0`。实际运行后才形成,不为 active 任务先造空证据;静态字段只供回读,不认证语义真实性或授权。
|
|
3471
|
+
|
|
3472
|
+
无 Goal 的 owner 在 README `## Ownership` 写 `Owner` 与 `Evidence`;后者指向实际会话/交接原文或同 README 的独立证据锚点,其 `Owner` 或 `Session` 必须匹配。若动作绑定 `Work`,原证据必须同值;不是每 Work 调用登记。
|
|
3473
|
+
|
|
3474
|
+
取消在 README `<a id="cancellation"></a>` 下保留 `Source`、`Scope`、`Time`(实际 ISO 时间)、`Confirmed-By`(原 owner)、`Undelivered`、`Landed`、`Writers`、`Dependencies`、`Checkpoints`、`External`、`Next`。Source 指向真实取消决定原件或同 README 的独立原请求锚点,不能以取消结论自证。Writers 为 `none: <依据>` 或 `stopped: <停止/交接证据 locator>`;后者原件须有 `Writers: stopped` 与真实 Observed。Dependencies/Checkpoints/External 使用 `none|resolved|transferred|waived: <处置依据>`,不能把未知写成已解决。活动/review/integrating/blocked 的执行记录仍须原 owner 处置,不由取消声明抹掉。
|
|
3475
|
+
|
|
3476
|
+
独立 Spec 的无票 Direct Spec 使用原 evidence/direct-spec 的 `## Acceptance Verification` JSON array 逐 AC 回读实际结果:id/result/method/source/observed;command 存在时 exit 为 0,外部 evidence 引用须有匹配 sha256,内联观察无需另建文件。空 Evidence、仅标题或 passed 自评不通过。`--stage complete` 只判本地完成;A 移动前使用 `--stage archive-ready` 同时核对对应 completed/cancelled 门和已承诺远程交付,目标移动后再使用 archived。
|
|
3477
|
+
|
|
3478
|
+
</ref-common-rules-change-completion>
|
|
3479
|
+
|
|
3480
|
+
<ref-specdev-i-init-setup-assets-change-readme-template>
|
|
3481
|
+
|
|
3482
|
+
# <本次目标>
|
|
3483
|
+
|
|
3484
|
+
Outcome: active
|
|
3485
|
+
|
|
3486
|
+
<a id="scope"></a>
|
|
3487
|
+
## 目的与范围
|
|
3488
|
+
|
|
3489
|
+
<当前单一目标、授权写集、IN/OUT、真实请求出处和约束。独立 specdev/changes/{change}/spec.md 已负责规格时删除本模板 scope/acceptance/verification 并改为导航,不维护两套权威。>
|
|
3490
|
+
|
|
3491
|
+
<a id="acceptance"></a>
|
|
3492
|
+
## 验收
|
|
3493
|
+
|
|
3494
|
+
- [ ] AC-1:<可观察、可判定行为及验证方式>
|
|
3495
|
+
|
|
3496
|
+
## 当前工作
|
|
3497
|
+
|
|
3498
|
+
<简单任务清单与接续点;若使用无票 Goal 或独立 Ticket,则这里只导航其负责清单,不复制进度。>
|
|
3499
|
+
|
|
3500
|
+
<a id="verification"></a>
|
|
3501
|
+
## 验证依据
|
|
3502
|
+
|
|
3503
|
+
<尚未执行时如实描述缺口,不预填 passed。完成后每 AC 一个实际结果行:>
|
|
3504
|
+
|
|
3505
|
+
| AC | Result | Evidence |
|
|
3506
|
+
|---|---|---|
|
|
3507
|
+
| AC-1 | <实际结果> | <#独立证据锚点或对象内文件 locator> |
|
|
3508
|
+
|
|
3509
|
+
<需要校验原件摘要时可增加 SHA256 列,填写实际计算结果;非必需。真正执行后才在独立证据段记录 Method、Source、Observed、Result;有 Command 须有真实 Exit。>
|
|
3510
|
+
|
|
3511
|
+
## 下一步
|
|
3512
|
+
|
|
3513
|
+
<下一 owner、入口、阻塞与恢复限制;没有实际交接不建空 ownership/批准槽。>
|
|
3514
|
+
|
|
3515
|
+
</ref-specdev-i-init-setup-assets-change-readme-template>
|
|
3516
|
+
|
|
3517
|
+
<ref-specdev-i-init-setup-references-change-record-examples>
|
|
3518
|
+
|
|
3519
|
+
# 按需 owner、验证与取消记录
|
|
3520
|
+
|
|
3521
|
+
只在相关动作需要可回读证据时采用;不是每 Work 的默认表单。占位文本不是实际证据,也不创造批准。
|
|
3522
|
+
|
|
3523
|
+
## 简单任务的原 owner
|
|
3524
|
+
|
|
3525
|
+
无 Goal 时,README 可用以下段落绑定实际会话依据。复杂任务使用原 Goal/Implementation Plan 的 lead,不再复制:
|
|
3526
|
+
|
|
3527
|
+
```markdown
|
|
3528
|
+
## Ownership
|
|
3529
|
+
|
|
3530
|
+
Owner: session:actual-locator
|
|
3531
|
+
Evidence: #handoff
|
|
3532
|
+
|
|
3533
|
+
<a id="handoff"></a>
|
|
3534
|
+
## 本次会话依据
|
|
3535
|
+
|
|
3536
|
+
Session: session:actual-locator
|
|
3537
|
+
Source: 用户请求或真实交接的可回读来源
|
|
3538
|
+
Observed: 实际接受的目标、范围和当前负责关系
|
|
3539
|
+
```
|
|
3540
|
+
|
|
3541
|
+
需要绑定 P bootstrap 时,Ownership 与原会话依据都保存 `Work: specdev/prototype`;仅此实际动作需要,不逐 Work 更新镜像。Evidence 不得指回 Ownership 自身。
|
|
3542
|
+
|
|
3543
|
+
## 真实验证后记录
|
|
3544
|
+
|
|
3545
|
+
```markdown
|
|
3546
|
+
<a id="verified-ac-1"></a>
|
|
3547
|
+
## AC-1 观察
|
|
3548
|
+
|
|
3549
|
+
Method: 实际使用的验证方法
|
|
3550
|
+
Source: 被检验源码/工件与实际输入的 locator
|
|
3551
|
+
Observed: 实际输出、结果与覆盖边界
|
|
3552
|
+
Command: 确实执行的命令(未执行命令则省略本项)
|
|
3553
|
+
Exit: 0
|
|
3554
|
+
Result: passed
|
|
3555
|
+
```
|
|
3556
|
+
|
|
3557
|
+
README verification 的 AC-1 行引用 `#verified-ac-1`;可以引用原 Evidence 的对应段。不以声明 passed 替代真实运行;提供 SHA256 时工具严格匹配原件字节,缺摘要能力不编造值。
|
|
3558
|
+
|
|
3559
|
+
## 整体取消
|
|
3560
|
+
|
|
3561
|
+
用户确实取消后,保留独立原请求/交接依据,再按原完成 owner 核对下面字段。实际无某项时写有理由的 none,尚未知不能写 resolved。
|
|
3562
|
+
|
|
3563
|
+
```markdown
|
|
3564
|
+
<a id="cancellation"></a>
|
|
3565
|
+
## 取消说明
|
|
3566
|
+
|
|
3567
|
+
Source: #actual-cancellation-request
|
|
3568
|
+
Scope: 实际取消范围
|
|
3569
|
+
Time: 2026-10-14T10:00:00+08:00
|
|
3570
|
+
Confirmed-By: session:actual-locator
|
|
3571
|
+
Undelivered: 尚未交付的需求
|
|
3572
|
+
Landed: 已落地代码、数据、设计与远程影响
|
|
3573
|
+
Writers: none: 实际核验没有活动写入者的依据
|
|
3574
|
+
Dependencies: none: 没有父子依赖的依据
|
|
3575
|
+
Checkpoints: resolved: 未集成 checkpoint/candidate 的实际处置
|
|
3576
|
+
External: waived: 已承诺外部动作经具体决定放弃的依据
|
|
3577
|
+
Next: 后续 owner、保留材料和恢复限制
|
|
3578
|
+
```
|
|
3579
|
+
|
|
3580
|
+
Writers 有过实际写入者时用 `stopped: <证据 locator>`,原件须有 `Writers: stopped` 和真实 Observed;超时不是停止。Dependencies/Checkpoints/External 允许 none/resolved/transferred/waived,但都要具体依据。全部核对通过后才将唯一 Outcome 改 cancelled,不批量改票、不回滚或关闭远程。
|
|
3581
|
+
|
|
3582
|
+
</ref-specdev-i-init-setup-references-change-record-examples>
|
|
3583
|
+
|
|
3584
|
+
<ref-common-rules-operating-governance>
|
|
3585
|
+
|
|
3586
|
+
# 运行治理细则
|
|
3587
|
+
|
|
3588
|
+
仅真实交接、并行写入、共享所有权或父子集成时读取;普通启动不要求加载全部治理。
|
|
3589
|
+
|
|
3590
|
+
|
|
3591
|
+
1. **先发现、后询问**:仓库、配置、schema、测试和文档能回答的事实先探索;只询问真正影响行为、架构、风险、范围、迁移或验收的偏好。
|
|
3592
|
+
2. **规划深度随风险增长**:Lite、Standard、Deep 由复杂度和事故半径决定,不由文档长度决定。
|
|
3593
|
+
3. **Ticket 是微型计划**:每个 Ready Ticket 决策完备,但不展开逐行代码。
|
|
3594
|
+
4. **Goal Plan 按需出现**:简单单票可沿用既有 I/Direct Spec;用户要求长期目标、多个 change 或总控时由统一 P 显式生成,不以固定章节数量作为质量标准。
|
|
3595
|
+
5. **证据优先**:每个验收合同、Ticket 和 Gate 都必须有可重复验证与 Evidence。
|
|
3596
|
+
6. **路径所有权**:并发实现者只能修改授权项目路径;shared path 有唯一 owner。
|
|
3597
|
+
7. **偏差显式化**:计划与事实冲突时停止、记录、修订,不静默扩大范围或改写契约。
|
|
3598
|
+
8. **状态单一来源**:Ticket frontmatter 是单 Ticket 状态权威;Map 和 Goal Plan 是投影与编排。
|
|
3599
|
+
9. **知识以当前真相为目标**:归档保留历史,永久知识只保留仍真实且经实现验证的结论。
|
|
3600
|
+
10. **恢复依赖权威工件**:跨 Work 或 Agent 的实际交接在原 README/计划/Evidence 记录 owner、范围、未决动作和下一步,不维护 Work 调用镜像;返回下一 Work 和权威工件完整路径。
|
|
3601
|
+
11. **本地执行权威**:远程 Issue/PR/URL 只作为来源或完成投影;Spec、Ticket、Map、Goal Plan、Evidence 和状态始终以本地工件为准。
|
|
3602
|
+
12. **完成与归档分离**:本地完成按 change completion 合同决定;远程 close 失败不回滚完成,但必须 reconcile 或 waive 后才归档。
|
|
3603
|
+
13. **Lead 与隔离正交**:Lead 固定拥有原计划、Evidence 与父分支;是否派遣 任务执行者 由 Lead 动态决定。Goal Plan 创建时询问 Ticket 是否开启 worktree,默认不开启;选择只作用于当前 Goal Plan。
|
|
3604
|
+
14. **策略化验收**:current 模式使用当前 workspace 严格串行、direct-parent 验证;required 模式使用 source worktree 与 parent-candidate。只有 required 模式创建独立 Ticket worktree。
|
|
3605
|
+
15. **父子权威隔离**:父实现 change 只拥有 Ready 子 change 的组合 Ticket DAG、serialization、全局 workspace/资源和实现进度投影;子 change 继续拥有全部行为与实现合同。一个未完成子 change 只能属于一个未完成父实现 change。
|
|
3606
|
+
|
|
3607
|
+
共享规则:
|
|
3608
|
+
|
|
3609
|
+
- 下方 `<planning-principles>` 标签
|
|
3610
|
+
- 下方 `<artifact-contract>` 标签
|
|
3611
|
+
- 下方 `<readiness-and-depth>` 标签
|
|
3612
|
+
- 下方 `<path-ownership>` 标签
|
|
3613
|
+
- 下方 `<evidence-and-verification>` 标签
|
|
3614
|
+
- 下方 `<deviation-control>` 标签
|
|
3615
|
+
- 本文的网页平台运行约定
|
|
3616
|
+
- 下方 `<ref-common-rules-codebase-design>` 标签
|
|
3617
|
+
- 下方 `<ref-common-rules-change-completion>` 标签
|
|
3618
|
+
- 下方 `<parent-implementation-orchestration>` 标签
|
|
3619
|
+
|
|
3620
|
+
|
|
3621
|
+
## 保真与局部暂停
|
|
3622
|
+
|
|
3623
|
+
用户明确的交付数量、默认工具、风险门禁和权限不会因为入口精简而改变;行为变化必须显式列出。真实源优先,保留软链接、必要元数据、许可和用户未提交改动;系统或插件缓存不属于可写源。资源冲突只暂停相关写集及其依赖闭包;不接管他人 owner、锁或未闭合事务。正式知识必须走原网关。
|
|
3624
|
+
|
|
3625
|
+
</ref-common-rules-operating-governance>
|
|
3626
|
+
|
|
3627
|
+
<ref-common-rules-workflow-routing>
|
|
3628
|
+
|
|
3629
|
+
# 场景路由
|
|
3630
|
+
|
|
3631
|
+
|
|
3632
|
+
| 场景 | 入口 | 正常出口 |
|
|
3633
|
+
|---|---|---|
|
|
3634
|
+
| 需要冻结外部来源或审计摄入 | T-triage intake | D / G / W / P / S / C / T |
|
|
3635
|
+
| 尚未成 Change,只要先在 GitHub 留一条仍 open 的记事项 | T-triage capture | 停止 / 以后 intake / W |
|
|
3636
|
+
| 本地 change 完成且来源可关闭 | T-triage reconcile | A |
|
|
3637
|
+
| 本地 change 完成且要把 Ticket 记到 GitHub | T-triage publish | reconcile / A / 停止 |
|
|
3638
|
+
| 疑难 bug 或性能回归 | D-diagnose-bugs | S / T / I / R / W |
|
|
3639
|
+
| 模糊但可通过决策访谈收敛 | G-grill-with-docs | P / S / T / W |
|
|
3640
|
+
| 大需求包含多个未界定 change 或未知路径 | W-wayfinder | G / P / D / S / T |
|
|
3641
|
+
| 需要检测项目 UI、选择设计方向并生成可运行设计包 | P-prototype | G / S / T / I |
|
|
3642
|
+
| 固定点 diff、branch 或 PR review | C-code-review | completed / T / S / G |
|
|
3643
|
+
| 外部行为已清楚 | S-spec | T-tickets |
|
|
3644
|
+
| Ready Spec 需要垂直切片 | T-tickets | P-goal-plan / I |
|
|
3645
|
+
| 单个已拆票 change 或多个 Ready change 的 Goal 规划、持续实现与恢复 | P-goal-plan | I / verify / completed / blocked |
|
|
3646
|
+
| 旧 O 调用或恢复键 | P-goal-plan | 统一 P 多 change 模式 |
|
|
3647
|
+
| Ready 执行 | I-implement | Triage / A / blocked / deviation |
|
|
3648
|
+
| 开发完成后需要理解当前 change 或追问实现 | L-learn-change | 返回用户 / 继续提问 / Triage / A |
|
|
3649
|
+
| 架构健康扫描 | R-review-architecture | G / T |
|
|
3650
|
+
|
|
3651
|
+
同 change 下一阶段需要当前一手推理且上下文健康时继续;切换 repo/person/harness 或旁路时使用 交接能力(完整保存原工件、检查点、余项与下一 owner;不可用时输出完整交接包);严格限定且可独立派单时使用 Dispatch Packet;其他长上下文以权威工件路径恢复。平台不支持 clear/compact 时不虚构操作。
|
|
3652
|
+
|
|
3653
|
+
|
|
3654
|
+
本地已清晰请求不强制绕行 Triage。完成后要记账才选 publish;尚未成 Change、只想先留 inbox 记录才选 capture。publish、reconcile 与 capture 写不同远程对象,可先后执行。G 是单 change Grill,P-prototype 是 UI 设计,不与统一 P-goal-plan 混淆。W 发现候选后逐个交 G/S/T;单 change 拆票后可交 P 规划,多个 child 创建父 Goal 前仍须全部 Ready。原缺陷诊断 D、风险分诊、远程 reconcile、完成后发布投影和记事项捕获职责不删除。
|
|
3655
|
+
|
|
3656
|
+
## 复盘与交付路由
|
|
3657
|
+
|
|
3658
|
+
开发环境/流程复盘 → 下方 `<ref-specdev-r-retro-skill>` 标签。代码讲解仍为 L;Speculo 产品反馈仍为 retro command。CI/安全/PR/包发布 → “请求分诊阶段” 的对应模式;确定性修复回到 D/I,不由 T 接管代码。
|
|
3659
|
+
|
|
3660
|
+
长任务在阶段边界按产物与待决问题选择继续、压缩上下文或 handoff;交接只携带准确 owner、SHA、输入和未闭合动作,不硬编码特定模型的上下文阈值,不自动启动其他会话。
|
|
3661
|
+
|
|
3662
|
+
## 专业分支与相邻请求
|
|
3663
|
+
|
|
3664
|
+
| 请求 | 入口/分支 | 不因此触发 |
|
|
3665
|
+
|---|---|---|
|
|
3666
|
+
| 测量哪个用户操作值得优化 | R-review-architecture / performance | 不直接实现,不先发明性能阈值 |
|
|
3667
|
+
| 已有性能故障需要确认根因 | D-diagnose-bugs | 不把微基准替代原始症状 |
|
|
3668
|
+
| 一次性事件暂时无法重现 | D / evidence-triage | 不标记 root-cause-confirmed,不创建 Ready 修复 |
|
|
3669
|
+
| 已批准的文档维护 | I-implement / documentation | 不新建文档 workflow,不伪造 TDD |
|
|
3670
|
+
| 只审查文档或某个 commit | C-code-review | 不写项目、不把单 commit 扩大到 HEAD |
|
|
3671
|
+
| 理解已实现 change | L-learn-change | 不改 Learning workflow,不永久晋升 |
|
|
3672
|
+
|
|
3673
|
+
只读调查或审查不是后续修改授权。清晰的小请求继续走原适用阶段,不因增加专业分支强制进入 W/G/Triage;无差异、无候选和证据不足均可诚实返回,不制造工作量。
|
|
3674
|
+
|
|
3675
|
+
</ref-common-rules-workflow-routing>
|
|
3676
|
+
|
|
3677
|
+
<ref-common-skills-plan-quality-review-references-checklist>
|
|
3678
|
+
|
|
3679
|
+
# 计划发布检查
|
|
3680
|
+
|
|
3681
|
+
| 检查轴 | 通过证据 | 阻塞条件 |
|
|
3682
|
+
|---|---|---|
|
|
3683
|
+
| 背景与边界 | 用户问题、源基线、IN/REUSE/OUT、可观察行为 | 需实现者重新猜目标或高影响决定 |
|
|
3684
|
+
| Skill 调用 | 实际入口 ID/摘要、阶段、输入输出、失败动作;无适用项有扫描依据 | 假路径、缓存伪装源、仅 @名称 或“阅读完成” |
|
|
3685
|
+
| 执行计划 | 接缝、有序步骤、公共契约、异常、迁移/兼容与回滚 | 只有任务标题或横向技术层清单 |
|
|
3686
|
+
| 控制图 | 全部票、真实依赖、路径与语义资源、owner、失败闭包 | 环、未解析依赖、并发写冲突、取消被当成功 |
|
|
3687
|
+
| 验收与数量 | 每项 AC 和用户数量都有可复核证据目标 | 以字符预算削减验收、数量或风险处理 |
|
|
3688
|
+
| 权限 | 真实授权引用、明确计划与实现分界、独立审批点 | 自授权、默认提交/发布/远程写入 |
|
|
3689
|
+
| 恢复 | 基线/版本、检查点、原事务网关、源回读、停止条件 | 抢占他人事务、重复副作用、只看 done |
|
|
3690
|
+
|
|
3691
|
+
先利用代码、配置、测试和历史回答可发现事实;确有高影响取舍才回用户。不要为显得严格而制造与当前风险无关的关卡。用户要求全面审查时覆盖所有适用轴和所有票,不限制 finding 数量。
|
|
3692
|
+
|
|
3693
|
+
</ref-common-skills-plan-quality-review-references-checklist>
|
|
3694
|
+
|
|
3695
|
+
<ref-common-rules-code-commenting-rule>
|
|
3696
|
+
|
|
3697
|
+
# Code Commenting Rule
|
|
3698
|
+
|
|
3699
|
+
注释只用于记录**代码本身无法清晰表达,但对正确使用或安全修改至关重要的信息**。
|
|
3700
|
+
|
|
3701
|
+
## Requirements
|
|
3702
|
+
|
|
3703
|
+
- 优先通过命名、类型、结构、断言和测试表达意图;不要用注释掩盖复杂或含糊的代码。
|
|
3704
|
+
- 公共 API 应说明调用契约,包括重要的输入限制、返回语义、错误、副作用、并发、所有权和安全要求。
|
|
3705
|
+
- 内部实现仅在必要时解释非显然的:
|
|
3706
|
+
- 设计原因与取舍;
|
|
3707
|
+
- 不变量;
|
|
3708
|
+
- 顺序约束;
|
|
3709
|
+
- 安全或并发风险;
|
|
3710
|
+
- 兼容、迁移或 workaround 的原因与退出条件。
|
|
3711
|
+
- 单位、时区、精度、哨兵值、生命周期等无法由类型或名称表达时必须说明。
|
|
3712
|
+
- TODO 必须包含可追踪标识、具体动作以及完成或删除条件。
|
|
3713
|
+
- 修改代码行为时,必须同步检查并更新相关注释。
|
|
3714
|
+
|
|
3715
|
+
## Do Not
|
|
3716
|
+
|
|
3717
|
+
- 不要为每个函数或方法机械添加注释。
|
|
3718
|
+
- 不要逐行复述代码。
|
|
3719
|
+
- 不要解释名称和类型已经表达的信息。
|
|
3720
|
+
- 不要保留注释掉的旧代码。
|
|
3721
|
+
- 不要记录修改历史或临时开发过程。
|
|
3722
|
+
- 不要猜测“为了性能”“为了兼容”等设计原因。
|
|
3723
|
+
- 不要使用注释数量或覆盖率衡量质量。
|
|
3724
|
+
|
|
3725
|
+
## Decision Rule
|
|
3726
|
+
|
|
3727
|
+
添加注释前确认:
|
|
3728
|
+
|
|
3729
|
+
1. 这条信息是否无法由代码清晰表达?
|
|
3730
|
+
2. 缺少它是否可能导致错误使用或错误修改?
|
|
3731
|
+
3. 它是否在正常重构后仍然有效?
|
|
2158
3732
|
|
|
2159
|
-
|
|
3733
|
+
只有答案均为“是”时才添加注释。
|
|
2160
3734
|
|
|
2161
|
-
|
|
3735
|
+
> 公共接口记录 Contract;内部实现记录非显然的 Why、Invariant 和 Risk。
|
|
2162
3736
|
|
|
2163
|
-
-
|
|
2164
|
-
- `standard`:大多数多文件或跨层垂直切片;
|
|
2165
|
-
- `deep`:公共 API/schema、数据迁移、安全/隐私/资金、不可逆操作、expand-contract、共享核心路径、多个 implementation owner 的跨 Ticket 写入协调或高事故半径。
|
|
3737
|
+
</ref-common-rules-code-commenting-rule>
|
|
2166
3738
|
|
|
2167
|
-
|
|
3739
|
+
<ref-specdev-i-implement-references-documentation-procedure>
|
|
2168
3740
|
|
|
2169
|
-
|
|
3741
|
+
# 文档维护执行分支
|
|
2170
3742
|
|
|
2171
|
-
|
|
3743
|
+
仅在已授权的 Ready documentation Ticket 或满足原条件的 Direct Spec 中使用;当前 Work 仍为 `specdev/implement`,权限、workspace、commit 和验收仍走 I。文档建议或审查请求不授权写入。入口预检和两轴审查不因选择本分支消失。
|
|
2172
3744
|
|
|
2173
|
-
|
|
3745
|
+
## 定位事实与修改范围
|
|
2174
3746
|
|
|
2175
|
-
-
|
|
2176
|
-
- 当前代码事实和需求差距;
|
|
2177
|
-
- 已锁定决策、低影响假设和未决问题;
|
|
2178
|
-
- IN / REUSE / OUT;
|
|
2179
|
-
- 用户或调用者视角的端到端行为;
|
|
2180
|
-
- Standard/Deep 的接口、输入输出、不变量、数据流、失败与兼容契约;
|
|
2181
|
-
- 有序执行路线和安全落点;
|
|
2182
|
-
- expected、writable、read-only、shared 路径;
|
|
2183
|
-
- 正常、失败和回归验证矩阵;
|
|
2184
|
-
- 每个 Ticket 按 Goal Plan 的 workspace 策略定义 current-workspace/direct-parent 或 source-worktree/parent-candidate 检查,以及按实际跨边界风险判定的 E2E disposition;
|
|
2185
|
-
- 每个实现 Ticket 的 implementation commit 与对应父分支完成条件;仅 required 模式创建独立 worktree;
|
|
2186
|
-
- Deep 的迁移、兼容窗口、监控、回滚和不可逆批准点;
|
|
2187
|
-
- 可判定验收标准。
|
|
3747
|
+
直接使用 下方 `<shared-writing-for-agents-references-current-facts-docs>` 标签 六步;格式需要时读取 下方 `<ref-common-rules-documentation-standard>` 标签。区分只改说明、修正示例以及改变 prompt/tool/CLI/UI 可见行为。按 Ticket 的获批写集维护项目文档;Evidence 留在原 change 的本票文件或 Direct Spec Evidence,不创建第二份文档状态。
|
|
2188
3748
|
|
|
2189
|
-
|
|
3749
|
+
列出每条行为声明的 owner 与验证方法:源码、类型、实际命令、运行场景或人工核对。先修 owner,再同步相应派生物与项目要求的语言侧;禁止手改生成文件。保存行为、条件、否定、例外、失败与所有权,消除仅本会话可理解的叙述。
|
|
2190
3750
|
|
|
2191
|
-
|
|
3751
|
+
## 验证与交付
|
|
2192
3752
|
|
|
2193
|
-
|
|
2194
|
-
2. 检测循环和不存在的引用;
|
|
2195
|
-
3. 识别根 Ticket、汇合点、扇出与收缩点;
|
|
2196
|
-
4. 为每个 Spec 验收合同映射至少一个 Ticket;
|
|
2197
|
-
5. 检查并行候选的 `writable_paths` 是否相交;
|
|
2198
|
-
6. 共享路径必须指定唯一 owner,通常由专门 Ticket 或明确的集成 owner 修改;
|
|
2199
|
-
7. 不得用依赖边表达“可能更方便”或纯粹的人员交接。
|
|
3753
|
+
纯说明修改使用相关链接、类型片段、示例、生成一致性和语义核对,不伪造代码 red/green。写入命令实际运行后才记录对应成功结果;缺网络、平台、凭据或权限时保留未验证和责任人,不替换成 mock 后写“真实入口通过”。
|
|
2200
3754
|
|
|
2201
|
-
|
|
3755
|
+
可见行为改变时,补充实际输出或目标项目的行为快照/场景证据,并在需要时读取 下方 `<ref-common-rules-agent-experience>` 标签。默认值、错误、兼容或数据格式变化与代码同改;外部破坏的升级说明在当前改动产生,写清旧新行为、受影响者、迁移验证与真实回退限制。
|
|
2202
3756
|
|
|
2203
|
-
|
|
3757
|
+
在原 Evidence 记录 `Engineering Evidence`,kind 为 `documentation`;字段与校验见 下方 `<ref-common-rules-engineering-evidence>` 标签。每项声明为 verified 或 unverified;总体 partial/blocked 不等于 Ticket done。新分支使用 `--engineering documentation` 校验对应原工件,再完成 I 的适用项目验证、两轴审查、状态回读和交付。
|
|
2204
3758
|
|
|
2205
|
-
|
|
3759
|
+
## 失败与恢复
|
|
2206
3760
|
|
|
2207
|
-
|
|
3761
|
+
以原 Ticket/Spec、文档 owner、源摘要和已运行证据恢复;输入漂移使相应验证失效,不覆盖旧证据。上层行为合同冲突返回原 owner。required 验证未运行时不能以“只改文档”越过 Gate;不适用须说明原因。结果明确区分修改了什么、实际运行了什么、只核对了什么和仍待验证什么。
|
|
2208
3762
|
|
|
2209
|
-
-
|
|
2210
|
-
- 依赖缺失或 DAG 有环;
|
|
2211
|
-
- 可写路径不明确或并行所有权冲突;
|
|
2212
|
-
- 验证方法不能执行且没有批准的替代证据;
|
|
2213
|
-
- Ticket 未声明 E2E required/not-required 及理由,或在 required 模式把 E2E 安排到 source worktree;
|
|
2214
|
-
- Tickets Map 缺少总体实施背景或项目 Skill 读取矩阵,项目 Skill 路径不存在、不是项目根相对路径,或当前 Ticket 未被 `ALL`/自身 ID 覆盖;
|
|
2215
|
-
- 无法形成实现 commit 与 Goal Plan 所选 direct-parent/candidate-merge 父分支出口;
|
|
2216
|
-
- 单个新上下文无法完成;
|
|
2217
|
-
- Standard/Deep 缺少有序执行路线;
|
|
2218
|
-
- Deep 缺少迁移、兼容、监控、回滚或批准点。
|
|
3763
|
+
实现改变源码入口、接口、持久化、默认行为、错误或恢复时,核对本次范围内 docs 的当前事实;已有负责正文只更新原处。命令、事实核对和未验证项放原 Evidence,轻量任务放 README verification。不创建 docs-sync state/sidecar,不推进其 commit 基线,不因此取得 Git 或永久知识权限。
|
|
2219
3764
|
|
|
2220
|
-
|
|
3765
|
+
</ref-specdev-i-implement-references-documentation-procedure>
|
|
2221
3766
|
|
|
2222
|
-
|
|
3767
|
+
<ref-common-rules-codebase-design>
|
|
2223
3768
|
|
|
2224
|
-
|
|
2225
|
-
- 可观察交付;
|
|
2226
|
-
- 被阻塞于;
|
|
2227
|
-
- Planning Depth 与触发原因;
|
|
2228
|
-
- 风险;
|
|
2229
|
-
- Ready 状态;
|
|
2230
|
-
- 关键未决问题;
|
|
2231
|
-
- 预计并行组和共享路径 owner;
|
|
2232
|
-
- `ALL` 与逐 Ticket 的项目 Skill 最低必读集合。
|
|
3769
|
+
# 代码仓设计
|
|
2233
3770
|
|
|
2234
|
-
|
|
3771
|
+
设计**深层模块**:通过一个小接口承载大量行为,放置在干净的缝合点处,可通过该接口进行测试。在任何设计或重构代码的地方使用这些语言和原则。目标是为调用者提供杠杆效应,为维护者提供局部性,为所有人提供可测试性。
|
|
2235
3772
|
|
|
2236
|
-
|
|
2237
|
-
- 是否出现水平切片;
|
|
2238
|
-
- 阻塞边是否真实;
|
|
2239
|
-
- 是否应合并、进一步拆分或增加 prefactor;
|
|
2240
|
-
- 合同是否全部覆盖;
|
|
2241
|
-
- 路径所有权和验证是否可信。
|
|
3773
|
+
使用 `specdev/changes/{change}/CONTEXT.md` 和 `specdev/context/` 的词汇谈论领域;使用本规则的词汇谈论架构。
|
|
2242
3774
|
|
|
2243
|
-
|
|
3775
|
+
## 术语表
|
|
2244
3776
|
|
|
2245
|
-
|
|
3777
|
+
以下术语用于讨论设计的共同含义,不是词语禁令。项目已有精确的 API、service、component、process/security boundary 等概念时使用其原名;不要为了套用词汇掩盖真实工程语义。
|
|
2246
3778
|
|
|
2247
|
-
|
|
3779
|
+
**Module(模块)** — 任何具有接口和实现的东西。有意识地与规模无关:函数、类、包或跨层切片。unit、component 或 service 可以是项目内具体模块类型,不要求改名。
|
|
2248
3780
|
|
|
2249
|
-
|
|
2250
|
-
- Tickets Map:`specdev/changes/{change}/tickets-map.md`
|
|
2251
|
-
- Evidence 目录:`specdev/changes/{change}/evidence/`
|
|
3781
|
+
**Interface(接口)** — 调用者正确使用模块所需了解的一切:类型签名,还包括不变量、顺序约束、错误模式、必需配置和性能特征。API/signature 只覆盖部分调用知识时,补充遗漏的约束,而不是禁止这些准确名称。
|
|
2252
3782
|
|
|
2253
|
-
|
|
3783
|
+
**Implementation(实现)** — 模块内部的内容,它的代码体。区别于 **Adapter(适配器)**:一个东西可以是一个小适配器加一个大实现(Postgres 仓库),也可以是一个大适配器加一个小实现(内存假实现)。当讨论缝合点时用 "adapter";否则用 "implementation"。
|
|
3784
|
+
|
|
3785
|
+
**Depth(深度)** — 接口处的杠杆效应:调用者(或测试)每学习一个单位的接口可以驱动的行为量。当大量行为隐藏在小接口后面时,模块是**深层的**;当接口几乎和实现一样复杂时,模块是**浅层的**。
|
|
3786
|
+
|
|
3787
|
+
**Seam(缝合点)** _(Michael Feathers)_ — 一个可以在不编辑该位置的情况下改变行为的地方;模块接口所在的*位置*。缝合点放在哪里本身就是一个设计决策,与缝合点后面放什么不同。process、security、transaction boundary 与 DDD bounded context 各有明确含义,不统称为 seam。
|
|
3788
|
+
|
|
3789
|
+
**Adapter(适配器)** — 在缝合点处满足接口的具体事物。描述的是*角色*(它填充哪个槽位),而非实质(内部是什么)。
|
|
3790
|
+
|
|
3791
|
+
**Leverage(杠杆效应)** — 调用者从深度中获得的好处:每学习一个单位的接口获得更多的能力。一个实现为 N 个调用点和 M 个测试带来回报。
|
|
3792
|
+
|
|
3793
|
+
**Locality(局部性)** — 维护者从深度中获得的好处:变更、bug、知识和验证集中在一个地方,而非分散在调用者之间。一次修复,处处生效。
|
|
3794
|
+
|
|
3795
|
+
## 深层 vs 浅层
|
|
3796
|
+
|
|
3797
|
+
**深层模块** = 小接口 + 大量实现:
|
|
2254
3798
|
|
|
2255
3799
|
```text
|
|
2256
|
-
|
|
3800
|
+
┌─────────────────────┐
|
|
3801
|
+
│ 小接口 │ ← 少量方法,简单参数
|
|
3802
|
+
├─────────────────────┤
|
|
3803
|
+
│ │
|
|
3804
|
+
│ 深层实现 │ ← 隐藏的复杂逻辑
|
|
3805
|
+
│ │
|
|
3806
|
+
└─────────────────────┘
|
|
2257
3807
|
```
|
|
2258
3808
|
|
|
2259
|
-
|
|
3809
|
+
**浅层模块** = 大接口 + 少量实现(应避免):
|
|
2260
3810
|
|
|
2261
|
-
|
|
3811
|
+
```text
|
|
3812
|
+
┌─────────────────────────────────┐
|
|
3813
|
+
│ 大接口 │ ← 大量方法,复杂参数
|
|
3814
|
+
├─────────────────────────────────┤
|
|
3815
|
+
│ 薄实现 │ ← 仅仅是透传
|
|
3816
|
+
└─────────────────────────────────┘
|
|
3817
|
+
```
|
|
2262
3818
|
|
|
2263
|
-
|
|
2264
|
-
- 下方 `<tickets-map-schema>` 标签
|
|
3819
|
+
设计接口时,问自己:
|
|
2265
3820
|
|
|
2266
|
-
|
|
3821
|
+
- 我能减少方法数量吗?
|
|
3822
|
+
- 我能简化参数吗?
|
|
3823
|
+
- 我能隐藏更多内部的复杂性吗?
|
|
2267
3824
|
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
3825
|
+
## 原则
|
|
3826
|
+
|
|
3827
|
+
- **深度是接口的属性,而非实现的属性。** 一个深层模块内部可以由小型、可模拟、可替换的部分组成 — 只是它们不属于接口的一部分。一个模块可以拥有**内部缝合点**(对其实现私有,用于其自身测试)以及位于其接口处的**外部缝合点**。
|
|
3828
|
+
- **删除测试。** 想象删除这个模块。如果复杂性消失,它就是个透传层。如果复杂性在 N 个调用者中重新出现,它就在发挥价值。
|
|
3829
|
+
- **接口就是测试表面。** 调用者和测试穿过同一个缝合点。如果你想测试接口_之外_的内容,模块可能形状不对。
|
|
3830
|
+
- **适配器数量不是设计门槛。** 用真实消费者、测试隔离、安全、生命周期或扩展义务证明接缝价值;一个生产实现也可能需要稳定接口,两个实现也可能只是无价值间接层。不要为满足数量发明第二个适配器。
|
|
3831
|
+
|
|
3832
|
+
## 为可测试性而设计
|
|
3833
|
+
|
|
3834
|
+
良好的接口使测试变得自然:
|
|
3835
|
+
|
|
3836
|
+
1. **需要替换、测试隔离或独立资源生命周期时显式接收依赖。** 在组装入口创建实例是正常职责;不为注入无状态常量或没有变化依据的对象增加配置。下面比较需要替换外部支付依赖的情形:
|
|
3837
|
+
|
|
3838
|
+
```typescript
|
|
3839
|
+
// 可测试
|
|
3840
|
+
function processOrder(order, paymentGateway) {}
|
|
3841
|
+
|
|
3842
|
+
// 难以测试
|
|
3843
|
+
function processOrder(order) {
|
|
3844
|
+
const gateway = new StripeGateway();
|
|
3845
|
+
}
|
|
3846
|
+
```
|
|
3847
|
+
|
|
3848
|
+
2. **纯计算优先返回结果;必要副作用明确由谁拥有。** 写文件、发请求等业务行为不能为了纯函数形式被删除,需声明失败后的状态保证、重试与清理。以下示例只比较计算函数的局部设计:
|
|
3849
|
+
|
|
3850
|
+
```typescript
|
|
3851
|
+
// 可测试
|
|
3852
|
+
function calculateDiscount(cart): Discount {}
|
|
3853
|
+
|
|
3854
|
+
// 难以测试
|
|
3855
|
+
function applyDiscount(cart): void {
|
|
3856
|
+
cart.total -= discount;
|
|
3857
|
+
}
|
|
3858
|
+
```
|
|
3859
|
+
|
|
3860
|
+
3. **小而明确的调用接口。** 减少调用者必须理解的独立选择;方法变少不保证测试变少,隐藏分支、不明确的可选参数与隐式默认仍需要验证。
|
|
3861
|
+
|
|
3862
|
+
## 关系
|
|
3863
|
+
|
|
3864
|
+
- 一个 **Module** 恰好有一个 **Interface**(它向调用者和测试呈现的表面)。
|
|
3865
|
+
- **Depth** 是一个 **Module** 的属性,对照其 **Interface** 来度量。
|
|
3866
|
+
- 一个 **Seam** 是一个 **Module** 的 **Interface** 所在的位置。
|
|
3867
|
+
- 一个 **Adapter** 位于 **Seam** 处,满足 **Interface**。
|
|
3868
|
+
- **Depth** 为调用者产生 **Leverage**,为维护者产生 **Locality**。
|
|
3869
|
+
|
|
3870
|
+
## 已拒绝的框架
|
|
3871
|
+
|
|
3872
|
+
- **深度作为实现行数与接口行数之比** (Ousterhout):奖励填充实现。我们使用深度即杠杆效应来替代。
|
|
3873
|
+
- **"Interface" 作为 TypeScript 的 `interface` 关键字或类的公开方法**:太窄 — 此处的接口包括调用者必须了解的每个事实。
|
|
3874
|
+
- **模糊地互换 boundary、seam、interface**:分别说清进程/安全边界、可替换点或调用契约,不禁止具有准确语义的工程术语。
|
|
3875
|
+
|
|
3876
|
+
## 深化
|
|
3877
|
+
|
|
3878
|
+
如何在给定依赖关系的情况下,安全地深化一组浅模块。假定你已掌握上面的词汇 — **module**(模块)、**interface**(接口)、**seam**(接缝)、**adapter**(适配器)。
|
|
3879
|
+
|
|
3880
|
+
### 依赖类别
|
|
3881
|
+
|
|
3882
|
+
在评估一个深化候选时,对其依赖进行分类。类别决定了深化后的模块如何通过其缝合点进行测试。
|
|
3883
|
+
|
|
3884
|
+
#### 1. 进程内
|
|
3885
|
+
|
|
3886
|
+
纯计算、内存状态、无 I/O。先检查合并能否集中相关变化而保留独立职责;通过稳定调用接口测试。不要仅因进程内运行就合并不同领域或生命周期。
|
|
3887
|
+
|
|
3888
|
+
#### 2. 本地可替换
|
|
3889
|
+
|
|
3890
|
+
具有本地测试替代品的依赖(PGLite 替代 Postgres、内存文件系统)。先验证替代品覆盖目标契约,尤其是事务、并发、权限及失败语义;有替代品本身不证明等价。深化后的模块在测试套件中使用运行的替代品进行测试。接缝是内部的;在模块的外部接口处不需要端口。
|
|
3891
|
+
|
|
3892
|
+
#### 3. 远程但自有(端口与适配器)
|
|
3893
|
+
|
|
3894
|
+
跨网络边界的自有服务(微服务、内部 API)。在接缝处定义一个 **port**(端口,即接口)。深模块拥有逻辑;传输层作为 **adapter**(适配器)注入。测试使用内存适配器。生产环境使用 HTTP/gRPC/队列适配器。
|
|
3895
|
+
|
|
3896
|
+
建议形式:*"在接缝处定义一个端口,为生产环境实现 HTTP 适配器,为测试实现内存适配器,这样逻辑就驻留在一个深模块中,即使它跨网络部署。"*
|
|
3897
|
+
|
|
3898
|
+
#### 4. 真正的外部依赖(Mock)
|
|
3899
|
+
|
|
3900
|
+
你无法控制的第三方服务(Stripe、Twilio 等)。深化后的模块将外部依赖作为注入端口;测试提供一个 mock 适配器。
|
|
3901
|
+
|
|
3902
|
+
### 接缝纪律
|
|
3903
|
+
|
|
3904
|
+
- **证明接缝承担的义务,不按适配器计数。** 生产消费者、可靠测试、第三方扩展或安全隔离可以证明单实现接缝的价值;缺少这些依据时再质疑端口。不得仅凭数量删除已发布接口,也不发明第二实现来为抽象辩护。
|
|
3905
|
+
- **内部接缝 vs 外部接缝。** 一个深模块可以既有内部接缝(对其实现私有,供其自身的测试使用),也有其接口处的外部接缝。不要仅仅因为测试使用了内部接缝就通过接口暴露它们。
|
|
3906
|
+
|
|
3907
|
+
### 测试策略:替换,而非叠加
|
|
3908
|
+
|
|
3909
|
+
- 删除旧测试前,逐项列出其行为、错误路径、兼容约束和历史回归,并定位新测试的承接证据。仅仅存在新的深模块接口测试,不证明覆盖等价;不能证明时保留旧测试或补齐缺口。删除决定与必要反例记录在本票 Evidence。
|
|
3910
|
+
- 在深化后模块的接口处编写新测试。**接口就是测试表面**。
|
|
3911
|
+
- 测试通过接口断言可观察的结果,而非内部状态。
|
|
3912
|
+
- 测试优先描述可观察行为并经受内部重构;实现变化使某个测试需要调整,是复核其保护义务的信号,不自动证明测试冗余。生命周期、安全和性能约束可能需要内部观测,理由与公共行为证据分别说明。
|
|
3913
|
+
|
|
3914
|
+
## SpecDev 应用边界
|
|
3915
|
+
|
|
3916
|
+
扫描前先划定范围并遵循 YAGNI。用户指定 module、子系统或痛点时直接采用;否则从足够长的 Git 历史识别反复变化的热点,只有热点不明确时才扩大范围。实现中的局部设计遵守 Ticket/Spec;需要改变公共契约、数据、安全、兼容、范围、迁移或验收时返回拥有该决定的上游工件。
|
|
3917
|
+
|
|
3918
|
+
涉及生命周期、失败和重试时读取 下方 `<ref-common-rules-error-handling>` 标签;涉及测试替换或并发资源时读取 下方 `<ref-common-rules-test-reliability>` 标签。简化以减少实际维护义务为目标,不以删除行数、接口数或测试数为配额。
|
|
3919
|
+
|
|
3920
|
+
</ref-common-rules-codebase-design>
|
|
3921
|
+
|
|
3922
|
+
<ref-specdev-r-retro-skill>
|
|
3923
|
+
|
|
3924
|
+
# 开发复盘
|
|
3925
|
+
|
|
3926
|
+
先读 下方 `<domain-runtime>` 标签 和 下方 `<activation-and-memory>` 标签。本 Work 不自动修代码、提 Issue 或改永久知识。
|
|
3927
|
+
|
|
3928
|
+
## 流程
|
|
3929
|
+
|
|
3930
|
+
1. 固定本次会话/活动范围,按来源 ID 定位 change、测试、CI、交接和失败证据,不全读历史。缺失资料列 unknown;范围清楚且证据可定位才开始分析。
|
|
3931
|
+
2. 未归档且尚未 completed 的当前 change 使用其 retro 目录。completed 或 archived 来源以及独立复盘建立非实现 review change,引用原 locator;不重开来源状态或改写归档。按 下方 `<workflow-state-and-lifecycle>` 标签 初始化/恢复;存在重叠实际 writer 时先由原 owner 停止或真实交接。
|
|
3932
|
+
3. 调用 下方 `<shared-retrospective-retrospective-contract>` 标签,检查约束是否缺失、已有检查是否失效或未接入;区分环境事实、机械检查和判断规则。每个发现有因果证据或明确假设,建议有 owner、正反验收与路由。
|
|
3933
|
+
4. 按 下方 `<ref-specdev-r-retro-assets-retro-template>` 标签 创建 specdev/changes/{change}/retro/RETRO-###.md,选择最小未占用 ID。原子保存并重读,运行 SpecDev --stage retro;修订保留来源与被替代结论。
|
|
3934
|
+
5. 验证通过后回读原 RETRO 并在 README 导航接续;证据不足可完成一份 outcome=insufficient-evidence 的诚实报告,不冒充解决问题。只读复盘不创建 Spec/Ticket 或 implementation Evidence。review-only change 按专用完成门关闭。
|
|
3935
|
+
|
|
3936
|
+
## 改进必须能被证伪
|
|
3937
|
+
|
|
3938
|
+
逐项判断是规则缺失、规则未接入、规则判断错、测试不能失败或环境事实变化。建议说明真正修改位置、owner、正反验收、恢复影响和新增维护成本;不要对每个问题都增加一条提示词。记录已观察因果、尚未验证解释和不采纳理由,复盘报告不等于修复完成。
|
|
3939
|
+
|
|
3940
|
+
## 结果与路由
|
|
3941
|
+
|
|
3942
|
+
合法 outcome:findings、no-findings、insufficient-evidence。发现的 disposition 为 file-issue / lesson-only / discard / duplicate;每项记录理由,允许没有发现。
|
|
3943
|
+
|
|
3944
|
+
代码问题交 “Bug 诊断阶段”,计划改进交 “拆分 Tickets 阶段”,远程反馈交 “请求分诊阶段”;永久知识交 “归档与沉淀阶段”。返回完整报告、已验证与未验证项、下一入口;不自动推进这些后续副作用。
|
|
3945
|
+
|
|
3946
|
+
</ref-specdev-r-retro-skill>
|
|
3947
|
+
|
|
3948
|
+
<shared-writing-for-agents-references-current-facts-docs>
|
|
3949
|
+
|
|
3950
|
+
# 当前工程事实文档
|
|
3951
|
+
|
|
3952
|
+
跨领域局部方法,由实际调用方拥有范围、授权与原 Evidence/报告。只在建立或修改当前工程文档时读取;A/I/init/docs-sync 复用同一方法,不触发全局整理或增加常驻状态。
|
|
3953
|
+
|
|
3954
|
+
## 六步
|
|
3955
|
+
|
|
3956
|
+
1. 确定待回答的问题、主题 owner、唯一负责正文、目标路径和获批写集。已有负责文档时导航并补 Agent 必要边界,不建立镜像;生成文件先定位真实源。
|
|
3957
|
+
2. 固定事实依据:Git HEAD 加本次纳入的 staged/unstaged/untracked 内容,明确未提交限制;非 Git 记录实际范围、时间和复现限制。不擅自 stash、提交、清理;风险较大才保存相应摘要/原件,不为每篇文档加版本元数据。
|
|
3958
|
+
3. 读取负责源码、直接调用方、既有 docs 与必要验证,区分当前行为、目标、长期取舍和历史事件。文件覆盖不等于语义理解,静态理解不等于运行验证;不能从“代码用了 A”编造“团队为 B 放弃 C”,未知历史标待访谈/推断。
|
|
3959
|
+
4. 修正唯一负责正文,保留范围、依据、失败/恢复、兼容与未知。源码说明当前实现,ADR 说明取舍,context 说明领域含义;只导航相互关系,不复制第二份权威。当前参考原地维护,真实退役/事故/旧数据说明有独立价值才保存历史快照。
|
|
3960
|
+
5. 按变化验证事实、链接、例子、类型或行为;生成物重建并验证幂等。明确实际层级:源码核对、静态检查、隔离测试、真实运行/浏览器。没有执行不能写通过,未覆盖平台/状态保留具体限制。
|
|
3961
|
+
6. 回读正文与入站引用,在调用方原 Evidence/报告中交付变化、命令/退出码、事实核对、未验证项与下一 owner。输入漂移只重验受影响项;未知结果不伪装成功。
|
|
3962
|
+
|
|
3963
|
+
本方法不做全局盘点、Git 暂存/commit、同步游标、语言镜像调度、永久知识发布或定时审计;这些继续归原 owning 入口。I/A 不创建 docs-sync state/sidecar,也不推进其 commit 基线。正式知识候选交 ADR/context/DESIGN/research 原网关,不能借 docs 修正越权。
|
|
3964
|
+
|
|
3965
|
+
## 明确请求全面基线时
|
|
3966
|
+
|
|
3967
|
+
只有用户要求“建立工程文档基线/全面理解当前代码”才扩大覆盖。docs/ 是目标项目面向 Agent 的工程事实,不是方法手册、任务池或项目 docs 镜像;主题 owner 仍按项目确定,不注册为某一 workflow 的永久知识 store。
|
|
3968
|
+
|
|
3969
|
+
最小可为 README 与 architecture;已有项目文档负责的主题只导航。无内容不建立 operations/subsystems/archive/AGENTS 空骨架,不引入 policy.json、中央目录注册或新 roots.docs。
|
|
3970
|
+
|
|
3971
|
+
在 docs README 或本次已有报告记录每项“已核对/未核对/不适用”及真实依据:
|
|
3972
|
+
|
|
3973
|
+
| 覆盖主题 | 核对内容 |
|
|
3974
|
+
|---|---|
|
|
3975
|
+
| 项目边界与入口 | 用户/API/CLI 入口、真实系统边界 |
|
|
3976
|
+
| 模块职责与依赖 | 源目录、直接调用方、装配与构建依赖 |
|
|
3977
|
+
| 数据与持久化 | 存储、schema、owner、兼容与迁移 |
|
|
3978
|
+
| 关键运行路径 | 输入/处理/输出及失败路径 |
|
|
3979
|
+
| 错误与恢复 | 重试、取消、并发、中断的真实保证 |
|
|
3980
|
+
| 构建/验证/交付 | package/CI、实际命令和退出码、未验证环境 |
|
|
3981
|
+
| 既有知识与 docs | 负责文档、ADR/context 与冲突/出处 |
|
|
3982
|
+
| 排除与未知 | vendor/cache/generated/history/敏感材料的边界、理由及后续入口 |
|
|
3983
|
+
|
|
3984
|
+
基线说明不新增 baseline 状态枚举。后续源码入口、接口、持久化、默认行为、错误/恢复变化时局部维护相应正文;格式修正不重建全库。
|
|
3985
|
+
|
|
3986
|
+
</shared-writing-for-agents-references-current-facts-docs>
|
|
3987
|
+
|
|
3988
|
+
<shared-retrospective-retrospective-contract>
|
|
3989
|
+
|
|
3990
|
+
# Retrospective
|
|
3991
|
+
|
|
3992
|
+
## 输入
|
|
3993
|
+
|
|
3994
|
+
- 当前会话、开发活动及调用方明确关联的 change/commands/workflows。
|
|
3995
|
+
- `commands/<command>/*.md` 报告、active change 状态、archive 和 `INDEX.md` 声明的知识 store。
|
|
3996
|
+
- 可选已有 issues,用于语义去重。
|
|
3997
|
+
|
|
3998
|
+
## 流程
|
|
3999
|
+
|
|
4000
|
+
1. 按本次 scope 和来源 ID 定位相关证据,再读取 friction-taxonomy.md(下方 `<local-references-retrospective-references-friction-taxonomy>` 标签);穷尽当前范围内的已定位摩擦,不全量读取 archive/知识库。完成标准:每项都有来源路径或对话节点。
|
|
4001
|
+
2. 按 bug、friction、missing-capability、doc-gap、ergonomics 归类,合并同一根因。完成标准:每项只属于一个根因簇,合并关系可追溯。
|
|
4002
|
+
3. 按下方修复方向分类,再评估影响与频率,过滤一次性噪声;低信号项标为丢弃或仅记教训。完成标准:每项都有优先级和处置理由。
|
|
4003
|
+
4. 读取 issue-drafting-sop.md(下方 `<local-references-retrospective-references-issue-drafting-sop>` 标签),生成 issue-ready 提案并与已有 issue 去重。完成标准:标题、证据、问题、建议、验收、影响资产和去重结论齐全。
|
|
4004
|
+
|
|
4005
|
+
## 输出
|
|
4006
|
+
|
|
4007
|
+
- 按优先级排序的 `file-issue | lesson-only | discard | duplicate | insufficient-evidence | no-findings` 结果,不强行制造 Issue。
|
|
4008
|
+
- 合并/丢弃说明和调用方执行 `gh` 所需字段。
|
|
4009
|
+
|
|
4010
|
+
本 skill 不写文件、不调用外部 API;调用方 command/Work 负责持久化、授权和后续路由。
|
|
4011
|
+
|
|
4012
|
+
## 修复方向:先减少未来重复指令
|
|
4013
|
+
|
|
4014
|
+
每个根因簇保留原 issue type,同时选择一个 remediation_axis;这不是新的远程标签或状态机。
|
|
4015
|
+
|
|
4016
|
+
| remediation_axis | 首选提案与验收 |
|
|
4017
|
+
|---|---|
|
|
4018
|
+
| code-defect | 最小复现/回归测试与局部修复,证明目标症状红→绿 |
|
|
4019
|
+
| deterministic-check-gap | lint、validator、pre-commit 或 CI 中可判定断言,至少一个通过与一个拒绝样本 |
|
|
4020
|
+
| context-pointer | 修正触发、owner、失效路径或条件引用;验证应触发与近邻不触发 |
|
|
4021
|
+
| judgment-rule | 仅保留不能由机械检查替代的真实判断、权衡与边界,注明反例 |
|
|
4022
|
+
| environment-discovery | 修复命令/工具/配置的可发现性或环境反馈,避免文档缓存简单可查询事实 |
|
|
4023
|
+
|
|
4024
|
+
检查缺口优先提到测试/工具,不再把同一禁令复制到多个 Work。没有因果证据时标为假设并给验证方法;删除指令的提案必须附运行对照方案,不把“模型应该会”当作删除证据。
|
|
4025
|
+
|
|
4026
|
+
只提出建议,不直接改 AGENTS/全局提示词、永久知识或项目代码,不创建远程 Issue;调用方的报告、确认与目标仓库边界保持。
|
|
4027
|
+
|
|
4028
|
+
</shared-retrospective-retrospective-contract>
|
|
4029
|
+
|
|
4030
|
+
<ref-specdev-r-retro-assets-retro-template>
|
|
4031
|
+
|
|
4032
|
+
## 产物 YAML 头部
|
|
4033
|
+
|
|
4034
|
+
生成该工件时,将以下字段写在文档开头的 YAML frontmatter 中:
|
|
4035
|
+
|
|
4036
|
+
```yaml
|
|
4037
|
+
schema_version: 1
|
|
4038
|
+
artifact: retrospective
|
|
4039
|
+
change: <YYYY-MM-DD-topic>
|
|
4040
|
+
id: RETRO-001
|
|
4041
|
+
status: completed
|
|
4042
|
+
outcome: findings
|
|
4043
|
+
sources: []
|
|
4044
|
+
updated_at: <ISO-8601>
|
|
2273
4045
|
```
|
|
2274
4046
|
|
|
2275
|
-
|
|
4047
|
+
# 开发复盘
|
|
2276
4048
|
|
|
2277
|
-
##
|
|
4049
|
+
## Scope
|
|
4050
|
+
本次活动、会话、change 与来源 locator。扩大范围必须有来源。
|
|
2278
4051
|
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
- DAG 无环、阻塞引用存在;
|
|
2282
|
-
- Ready Ticket 无高影响未知项;
|
|
2283
|
-
- 并行 Ticket 无未解决的可写冲突;
|
|
2284
|
-
- 每个 Ticket 可独立验证且适配单一上下文;
|
|
2285
|
-
- Tickets Map 已记录总体实施背景;每个 Ticket 被项目 Skill 读取矩阵覆盖,Skill 路径存在且为项目根相对路径;
|
|
2286
|
-
- Prefactor 与 expand-contract 使用条件正确;
|
|
2287
|
-
- 用户已批准拆分或明确授权自主发布;
|
|
2288
|
-
- 校验器无 error。
|
|
4052
|
+
## Evidence
|
|
4053
|
+
原始现象、证据与未知项;已归档来源只引用不修改。
|
|
2289
4054
|
|
|
2290
|
-
##
|
|
4055
|
+
## Findings
|
|
4056
|
+
逐项:ID、根因/假设、影响和频率、已有约束是否失效/未接入、remediation_axis、owner、disposition、合并/重复关系。没有发现明确写 none;不能强造 Issue。
|
|
2291
4057
|
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
- Ticket 模板:下方 `<ticket-template>` 标签
|
|
2295
|
-
- Tickets Map 模板:下方 `<tickets-map-template>` 标签
|
|
4058
|
+
## Acceptance
|
|
4059
|
+
每项建议的正反样例、验证命令/方法与完成条件;区分机械检查和人的判断。
|
|
2296
4060
|
|
|
2297
|
-
##
|
|
4061
|
+
## Routes
|
|
4062
|
+
下一入口、所需授权、未完成项及恢复条件;无后续动作注明原因。
|
|
2298
4063
|
|
|
2299
|
-
|
|
4064
|
+
## 预防措施的验证
|
|
2300
4065
|
|
|
2301
|
-
|
|
4066
|
+
对每个建议指出缺规则/未接入/判断错误/测试失效/环境变化,给出实际 owner、修改位置、正向验收、目标反例和新增成本。未实施建议不写成修复;无发现和证据不足仍按原 outcome 报告。
|
|
2302
4067
|
|
|
2303
|
-
|
|
4068
|
+
</ref-specdev-r-retro-assets-retro-template>
|
|
2304
4069
|
|
|
2305
|
-
|
|
4070
|
+
<local-references-retrospective-references-friction-taxonomy>
|
|
2306
4071
|
|
|
2307
|
-
|
|
4072
|
+
# Friction Taxonomy SOP
|
|
2308
4073
|
|
|
2309
|
-
|
|
4074
|
+
复盘 Speculo 使用摩擦时的信号来源、分类法、优先级评分与噪声过滤规范。
|
|
2310
4075
|
|
|
2311
|
-
|
|
4076
|
+
## 信号来源清单
|
|
2312
4077
|
|
|
2313
|
-
|
|
4078
|
+
按以下顺序采集原始摩擦点,每条记录**证据出处**(文件路径或对话节点),后续起草 issue 时要引用:
|
|
2314
4079
|
|
|
2315
|
-
|
|
4080
|
+
1. **当前对话上下文** —— 本次会话激活过的 command / workflow;用户在哪一步卡住、追问、返工;为绕开限制做了哪些手动动作;哪些指令被误解。
|
|
4081
|
+
2. **命令产物** —— `commands/{command}/*.md`:其中记录的验证失败、未完成和阻塞点是一手摩擦。
|
|
4082
|
+
3. **change 状态机** —— 按所属 workflow schema 读取 `{workflow}/changes/{change}/.status.json`;SpecDev 使用 current_work、works_run、真实工件和失败记录,不假定存在 phase_history。停滞时间仅为线索,不能推断用户动机或问题根因。
|
|
4083
|
+
4. **change 产物正文** —— 所属 workflow 的 Spec、Ticket、Evidence、diagnosis.md 等真实工件中显式写下的待澄清、风险和阻塞;不臆造不存在的文件。
|
|
4084
|
+
5. **沉淀教训** —— 各 workflow 声明的 lessons/knowledge store:已记录但尚未转成改进项的教训,用于去重与佐证频率。
|
|
4085
|
+
6. **契约落差** —— 实际产物路径、frontmatter、命名是否偏离所属入口的合同及 schema;不同工件命名分别判断,不能强制全部使用日期前缀。
|
|
2316
4086
|
|
|
2317
|
-
##
|
|
4087
|
+
## 摩擦类型分类
|
|
2318
4088
|
|
|
2319
|
-
|
|
4089
|
+
先从实际证据检查以下七个环境维度;没有信号的维度记为不适用,不扩大当前会话范围。维度、主类型和 remediation_axis 分别描述发生位置、问题性质和改进方向,不能互相替代。
|
|
2320
4090
|
|
|
2321
|
-
|
|
2322
|
-
|
|
4091
|
+
| 维度 | 检查与建议 |
|
|
4092
|
+
|---|---|
|
|
4093
|
+
| 导航 | 隐藏依赖、跨模块跳转和关键文件入口是否可发现;优先修复上下文指针 |
|
|
4094
|
+
| 自动检查 | 回读关联 scripts、lint、测试与 CI;区分缺少检查、已有检查未接入和检查失效,避免重建同类检查 |
|
|
4095
|
+
| 编码标准 | 可确定判错的约束进入机械检查;权衡与设计判断留给审查规则 |
|
|
4096
|
+
| 全局指令 | AGENTS 中反复追加的 steering 能否归入既有工程标准或检查;不直接修改用户全局文件 |
|
|
4097
|
+
| 工具使用 | 无效调用、重复读取和命令发现成本;保留实际调用证据,建议可测量的改进 |
|
|
4098
|
+
| 无效指令 | 指令是否未被触发、重复、过时或无法影响行为;删除建议须有正反样例与对照验证 |
|
|
4099
|
+
| 信息访问 | 开发日志、只读服务、环境反馈是否足够定位问题;建议最小必要访问,不默认扩大凭据或服务权限 |
|
|
4100
|
+
|
|
4101
|
+
|
|
4102
|
+
每个摩擦点归且仅归一个**主类型**:
|
|
4103
|
+
|
|
4104
|
+
| 类型 | 含义 | 典型表现 |
|
|
4105
|
+
|------|------|---------|
|
|
4106
|
+
| `bug` | 资产行为不符合契约或文档 | 产物写错位置、`.status.json` 缺字段、命令覆盖了用户改动 |
|
|
4107
|
+
| `friction` | 能用但别扭、步骤冗余、易错 | 反复手动改路径、phase 频繁 `revisited`、确认环节缺失 |
|
|
4108
|
+
| `missing-capability` | 缺一个本该有的 command/workflow/skill | 用户手动拼凑某个反复出现的流程 |
|
|
4109
|
+
| `doc-gap` | 文档缺失、过时或与实现不符 | 指引说一套、资产做另一套;找不到用法 |
|
|
4110
|
+
| `ergonomics` | 命名、触发词、措辞、可发现性 | description 区分度差、关键词命中不到、术语不一致 |
|
|
4111
|
+
|
|
4112
|
+
## 优先级评分
|
|
4113
|
+
|
|
4114
|
+
优先级 = **影响面 × 发生频率**,落到四档(由调用方映射标签):
|
|
4115
|
+
|
|
4116
|
+
- 影响面:`broad`(影响所有使用者 / 破坏契约)|`partial`(影响部分流程)|`cosmetic`(轻微体验)
|
|
4117
|
+
- 发生频率:`recurring`(多次出现 / 多来源佐证)|`occasional`|`one-off`
|
|
4118
|
+
|
|
4119
|
+
| 优先级 | 判定 |
|
|
4120
|
+
|--------|------|
|
|
4121
|
+
| `critical` | 破坏契约、数据/产物丢失、覆盖用户改动 —— 无论频率 |
|
|
4122
|
+
| `high` | `broad` 影响且 `recurring`,或显著阻塞主流程 |
|
|
4123
|
+
| `medium` | `partial` 影响,或 `broad` 但仅 `occasional` |
|
|
4124
|
+
| `low` | `cosmetic`,或 `one-off` 且有 workaround |
|
|
4125
|
+
|
|
4126
|
+
## 噪声过滤规则
|
|
4127
|
+
|
|
4128
|
+
不是每个摩擦点都该变成 issue。按以下规则收敛:
|
|
4129
|
+
|
|
4130
|
+
- **合并** —— 语义重复的多条合成一条,频率累加(提升优先级佐证)。
|
|
4131
|
+
- **丢弃** —— 纯属本次会话一次性、不可复现、或已被其他提案覆盖的,标注「丢弃」并写明原因。
|
|
4132
|
+
- **降级为教训** —— 属于「用法/约定」而非「资产缺陷」的,建议记入 `LESSONS.md` 而非提 issue。
|
|
4133
|
+
- **可行动性闸门** —— 无法描述出「改哪个 asset、怎么改、怎么验收」的,先标 `needs-design`,不要凭空提模糊 issue。
|
|
4134
|
+
|
|
4135
|
+
只把通过闸门、`medium` 及以上、或 `recurring` 的高信号项推进到 issue 起草。
|
|
4136
|
+
|
|
4137
|
+
</local-references-retrospective-references-friction-taxonomy>
|
|
4138
|
+
|
|
4139
|
+
<local-references-retrospective-references-issue-drafting-sop>
|
|
4140
|
+
|
|
4141
|
+
# Issue Drafting SOP
|
|
4142
|
+
|
|
4143
|
+
把通过过滤的改进提案规范化成 issue-ready 结构、对照已存在 issue 去重、生成交给调用方 / `gh` 的交接字段。
|
|
4144
|
+
|
|
4145
|
+
## 提案字段(issue-ready)
|
|
4146
|
+
|
|
4147
|
+
每条提案产出以下结构化字段,调用方据此写报告并据此调 `gh`:
|
|
4148
|
+
|
|
4149
|
+
```jsonc
|
|
4150
|
+
{
|
|
4151
|
+
"title": "string, 见标题规范",
|
|
4152
|
+
"type": "bug | friction | missing-capability | doc-gap | ergonomics",
|
|
4153
|
+
"priority": "critical | high | medium | low",
|
|
4154
|
+
"area": "string|null, 例 commands / workflows / skills / cli / contract",
|
|
4155
|
+
"body": "string, 见正文结构",
|
|
4156
|
+
"remediation_axis": "code-defect | deterministic-check-gap | context-pointer | judgment-rule | environment-discovery",
|
|
4157
|
+
"regression": {"positive": "通过样本与可观察结果", "negative": "拒绝/停止样本与不应出现的副作用"},
|
|
4158
|
+
"affected": ["相对路径,例 .agents/speculo/commands/archive-and-consolidate/COMMAND.md"],
|
|
4159
|
+
"evidence": ["证据出处,例当前会话节点或具体工件及段落"],
|
|
4160
|
+
"disposition": "file-issue | lesson-only | discard | duplicate",
|
|
4161
|
+
"dup_of": "number|null, 疑似重复的已存在 issue 编号"
|
|
4162
|
+
}
|
|
2323
4163
|
```
|
|
2324
4164
|
|
|
2325
|
-
|
|
4165
|
+
## 标题规范
|
|
2326
4166
|
|
|
2327
|
-
|
|
4167
|
+
- 用祈使句描述「要改成什么」,不是「哪里坏了」:`命名` 区分度差 ❌ → `enhancement: 提升 command description 在系统提示里的区分度` ✅
|
|
4168
|
+
- 前缀对齐类型:`bug:` / `enhancement:` / `docs:` / `feature:`
|
|
4169
|
+
- 单行、可独立读懂、不超过约 70 字,含受影响的 asset 名。
|
|
2328
4170
|
|
|
2329
|
-
|
|
2330
|
-
2. 只有依赖成功满足、ready、owner 可判定且无冲突的票才能进入 dispatch。单 change 的未来 draft 票只阻塞自身及依赖闭包;上游 done 后仍需 Lead 按真实产物重审 DoR,不自动提升 Ready。cancelled 不是成功交付:下游必须重规划依赖,不能自动视为 satisfied。
|
|
2331
|
-
3. current 策略串行;required 仅在 config/宿主允许且写集、语义资源、integration queue 无冲突时并行。不同文件可能共享 API、数据表、锁文件或公共契约,因此不能只比较文件名。
|
|
2332
|
-
4. 按票的调用阶段读取并实际执行必需 Skill;按项目协议调用的“技能”可以是宿主技能调用,也可以是完整执行该 SKILL 的程序步骤,但必须记录对应步骤/工具轨迹与输出,不得仅记录阅读完成。
|
|
2333
|
-
5. I 返回后核对实现、Skill 执行记录、验证矩阵、实际交付数量和集成证据。失败保留 blocker;不能用减少测试或替换工具来“修好”状态。
|
|
2334
|
-
6. 同步 Ticket 权威状态,再生成 map 投影与检查点。已完成票不重跑副作用;持久化失败不推进 done。
|
|
2335
|
-
7. 有他人资源/事务冲突只暂停该票与其依赖闭包,继续独立、已授权票。无法可靠分辨共享资源时,暂停相关资源而非抢占。
|
|
2336
|
-
8. frontier 空且仍有未完成票时返回精确缺口;全部票完成后执行 Goal 集成验收,按原完成合同关闭。
|
|
4171
|
+
## 分类与标签
|
|
2337
4172
|
|
|
2338
|
-
|
|
4173
|
+
只返回语义类型、优先级与领域;标签名称、存在性、创建权限和映射由调用方决定,不要求每个仓库都具备某套标签。不确定改进方向时记录设计缺口,不自行增加远程标签。
|
|
2339
4174
|
|
|
2340
|
-
|
|
4175
|
+
## 正文结构
|
|
2341
4176
|
|
|
2342
|
-
|
|
4177
|
+
每条 issue body 用固定小节,占位符填实,禁止空话:
|
|
2343
4178
|
|
|
2344
|
-
|
|
4179
|
+
```markdown
|
|
4180
|
+
## 问题
|
|
4181
|
+
[一句话说清痛点 / 不符合预期的行为。]
|
|
2345
4182
|
|
|
2346
|
-
|
|
4183
|
+
## 证据
|
|
4184
|
+
[引用具体出处:对话节点、`...` 产物路径、`.status.json` 字段、文档段落。可附最小复现。]
|
|
2347
4185
|
|
|
2348
|
-
|
|
4186
|
+
## 根因
|
|
4187
|
+
[判断是 asset 设计 / 持久化契约 / 文档 / 工具问题,指明根因而非表象。]
|
|
2349
4188
|
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
| 背景与边界 | 用户问题、源基线、IN/REUSE/OUT、可观察行为 | 需实现者重新猜目标或高影响决定 |
|
|
2353
|
-
| Skill 调用 | 实际入口 ID/摘要、阶段、输入输出、失败动作;无适用项有扫描依据 | 假路径、缓存伪装源、仅 @名称 或“阅读完成” |
|
|
2354
|
-
| 执行计划 | 接缝、有序步骤、公共契约、异常、迁移/兼容与回滚 | 只有任务标题或横向技术层清单 |
|
|
2355
|
-
| 控制图 | 全部票、真实依赖、路径与语义资源、owner、失败闭包 | 环、未解析依赖、并发写冲突、取消被当成功 |
|
|
2356
|
-
| 验收与数量 | 每项 AC 和用户数量都有可复核证据目标 | 以字符预算削减验收、数量或风险处理 |
|
|
2357
|
-
| 权限 | 真实授权引用、明确计划与实现分界、独立审批点 | 自授权、默认提交/发布/远程写入 |
|
|
2358
|
-
| 恢复 | 基线/版本、检查点、原事务网关、源回读、停止条件 | 抢占他人事务、重复副作用、只看 done |
|
|
4189
|
+
## 建议改动
|
|
4190
|
+
[改哪个 asset、怎么改。给相对路径与具体方向,不要泛泛而谈。]
|
|
2359
4191
|
|
|
2360
|
-
|
|
4192
|
+
## 验收标准
|
|
4193
|
+
[可验证的完成判据、通过/拒绝样本、回归命令与未验证项。机械问题写确定性检查,不以新增提示词代替测试。]
|
|
2361
4194
|
|
|
2362
|
-
|
|
4195
|
+
## 受影响资产
|
|
4196
|
+
[列出相关相对路径。]
|
|
4197
|
+
```
|
|
4198
|
+
|
|
4199
|
+
## 去重
|
|
4200
|
+
|
|
4201
|
+
起草后、交给调用方提交前,对每条做去重判定:
|
|
4202
|
+
|
|
4203
|
+
1. 提取标题与根因的关键词。
|
|
4204
|
+
2. 由调用方用 `gh issue list --repo <owner/repo> --search "<关键词>" --state all --limit 20` 检索;Skill 自身不执行远程检索。
|
|
4205
|
+
3. 命中语义重复:把 `disposition` 设为 `duplicate` 并在 `dup_of` 记录已存在编号,默认不重复提;仅当用户明确要求才补提。
|
|
4206
|
+
|
|
4207
|
+
## 交接契约
|
|
4208
|
+
|
|
4209
|
+
本 skill 只返回结构化提案清单与丢弃/合并说明,**不写文件、不调用 `gh`、不创建 issue**。command 或 Work 选择自己的报告路径、标签和授权方式;无发现与证据不足同样是有效分析结果。
|
|
4210
|
+
|
|
4211
|
+
</local-references-retrospective-references-issue-drafting-sop>
|