@blxzer/cursor-trellis 0.4.1 → 0.4.3
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/CHANGELOG.md +49 -0
- package/README.md +25 -14
- package/README.zh-CN.md +14 -10
- package/bin/smart-search.js +10 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +36 -15
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +42 -153
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +10 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +38 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/update.d.ts +5 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +144 -41
- package/dist/commands/update.js.map +1 -1
- package/dist/configurators/cursor.d.ts +2 -1
- package/dist/configurators/cursor.d.ts.map +1 -1
- package/dist/configurators/cursor.js +4 -2
- package/dist/configurators/cursor.js.map +1 -1
- package/dist/configurators/index.js +4 -4
- package/dist/configurators/index.js.map +1 -1
- package/dist/configurators/shared.d.ts +8 -0
- package/dist/configurators/shared.d.ts.map +1 -1
- package/dist/configurators/shared.js +27 -1
- package/dist/configurators/shared.js.map +1 -1
- package/dist/configurators/workflow.d.ts +0 -9
- package/dist/configurators/workflow.d.ts.map +1 -1
- package/dist/configurators/workflow.js +12 -45
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/constants/paths.d.ts +13 -0
- package/dist/constants/paths.d.ts.map +1 -1
- package/dist/constants/paths.js +17 -0
- package/dist/constants/paths.js.map +1 -1
- package/dist/migrations/manifests/0.3.0.json +1 -1
- package/dist/templates/common/bundled-skills/cstl-check/SKILL.md +1 -1
- package/dist/templates/common/bundled-skills/cstl-meta/references/platform-files/hooks-and-settings.md +2 -2
- package/dist/templates/common/bundled-skills/cstl-meta/references/platform-files/overview.md +1 -1
- package/dist/templates/common/bundled-skills/cstl-meta/references/platform-files/skills-and-commands.md +2 -4
- package/dist/templates/common/bundled-skills/cstl-skill-creator/SKILL.md +10 -7
- package/dist/templates/common/bundled-skills/cstl-skill-creator/references/authoring-rules.md +93 -19
- package/dist/templates/common/bundled-skills/cstl-skill-creator/references/general-authoring.md +189 -0
- package/dist/templates/common/bundled-skills/cstl-skill-creator/references/review-checklist.md +10 -5
- package/dist/templates/common/commands/continue.md +6 -5
- package/dist/templates/common/index.d.ts +20 -0
- package/dist/templates/common/index.d.ts.map +1 -1
- package/dist/templates/common/index.js +21 -2
- package/dist/templates/common/index.js.map +1 -1
- package/dist/templates/common/optional-skills/chrome-cdp/SKILL.md +179 -0
- package/dist/templates/common/optional-skills/chrome-cdp/examples/fetch-hook-api-capture.md +149 -0
- package/dist/templates/common/optional-skills/chrome-cdp/scripts/cdp.mjs +903 -0
- package/dist/templates/common/skills/brainstorm.md +2 -2
- package/dist/templates/cursor/agents/cstl-check.md +2 -2
- package/dist/templates/cursor/agents/cstl-implement.md +1 -1
- package/dist/templates/cursor/agents/cstl-research.md +2 -2
- package/dist/templates/cursor/fixtures/expected-rules.d.ts +1 -1
- package/dist/templates/cursor/fixtures/expected-rules.d.ts.map +1 -1
- package/dist/templates/cursor/fixtures/expected-rules.js +7 -24
- package/dist/templates/cursor/fixtures/expected-rules.js.map +1 -1
- package/dist/templates/cursor/hooks.json +4 -0
- package/dist/templates/cursor/index.d.ts +1 -1
- package/dist/templates/cursor/index.js +1 -1
- package/dist/templates/cursor/rules/cstl-bootstrap.mdc +17 -0
- package/dist/templates/markdown/agents.md +36 -3
- package/dist/templates/markdown/{spec/guides → framework}/cursor-native-modes-guide.md.txt +13 -10
- package/dist/templates/markdown/{spec/guides → framework}/cursor-subagent-policy.md.txt +63 -127
- package/dist/templates/markdown/framework/dogfood-only-surfaces.md.txt +29 -0
- package/dist/templates/markdown/{spec/guides → framework}/execution-strategy.md.txt +2 -0
- package/dist/templates/markdown/framework/index.md.txt +31 -0
- package/dist/templates/markdown/framework/internal-skills-cursor-reachability.md.txt +45 -0
- package/dist/templates/markdown/framework/middleware-protocol.md.txt +83 -0
- package/dist/templates/markdown/framework/parallel-first-execution.md.txt +78 -0
- package/dist/templates/markdown/framework/prd-grill-frontier.md.txt +83 -0
- package/dist/templates/markdown/framework/release-boundary.md.txt +30 -0
- package/dist/templates/markdown/{spec/guides → framework}/retrieval-daily-guide.md.txt +1 -1
- package/dist/templates/markdown/framework/upgrade.md.txt +15 -0
- package/dist/templates/markdown/{spec/guides → framework}/verification-strength-guide.md.txt +2 -2
- package/dist/templates/markdown/index.d.ts +26 -10
- package/dist/templates/markdown/index.d.ts.map +1 -1
- package/dist/templates/markdown/index.js +87 -11
- package/dist/templates/markdown/index.js.map +1 -1
- package/dist/templates/markdown/prompts/run-semantic-slice-12.md.txt +1 -1
- package/dist/templates/markdown/spec/guides/index.md.txt +5 -19
- package/dist/templates/markdown/spec/guides/prototype-guide.md.txt +10 -10
- package/dist/templates/markdown/spec/guides/test-discipline-guide.md.txt +1 -1
- package/dist/templates/shared-hooks/event-bridge.py +60 -0
- package/dist/templates/shared-hooks/index.d.ts +1 -1
- package/dist/templates/shared-hooks/index.d.ts.map +1 -1
- package/dist/templates/shared-hooks/index.js +1 -0
- package/dist/templates/shared-hooks/index.js.map +1 -1
- package/dist/templates/shared-hooks/session-start.py +19 -2
- package/dist/templates/trellis/CONTEXT.md +63 -3
- package/dist/templates/trellis/config.yaml +1 -1
- package/dist/templates/trellis/gitignore.txt +39 -39
- package/dist/templates/trellis/index.d.ts +12 -0
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +73 -15
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/templates/trellis/pool/README.md +12 -3
- package/dist/templates/trellis/pool/plan.md +24 -5
- package/dist/templates/trellis/scripts/common/adapter_middleware.py +158 -0
- package/dist/templates/trellis/scripts/common/artifact_locale.py +12 -3
- package/dist/templates/trellis/scripts/common/cursor_retrieval_env.py +5 -2
- package/dist/templates/trellis/scripts/common/full_quality.py +237 -0
- package/dist/templates/trellis/scripts/common/git.py +6 -0
- package/dist/templates/trellis/scripts/common/git_context.py +17 -5
- package/dist/templates/trellis/scripts/common/kernel_command.py +367 -0
- package/dist/templates/trellis/scripts/common/lite_context.py +280 -0
- package/dist/templates/trellis/scripts/common/ondemand_topology.py +225 -0
- package/dist/templates/trellis/scripts/common/parent_orchestration.py +1 -1
- package/dist/templates/trellis/scripts/common/pool_store.py +16 -4
- package/dist/templates/trellis/scripts/common/retrieval_agent_instructions.py +2 -2
- package/dist/templates/trellis/scripts/common/session_context.py +28 -2
- package/dist/templates/trellis/scripts/common/task_gates.py +73 -12
- package/dist/templates/trellis/scripts/common/task_map.py +42 -9
- package/dist/templates/trellis/scripts/common/task_store.py +293 -61
- package/dist/templates/trellis/scripts/common/test_adapter_middleware.py +56 -0
- package/dist/templates/trellis/scripts/common/test_depends_mode_block.py +9 -0
- package/dist/templates/trellis/scripts/common/test_full_quality.py +197 -0
- package/dist/templates/trellis/scripts/common/test_kernel_command.py +326 -0
- package/dist/templates/trellis/scripts/common/test_lite_path.py +190 -0
- package/dist/templates/trellis/scripts/common/test_observable_defaults.py +10 -4
- package/dist/templates/trellis/scripts/common/test_ondemand_topology.py +122 -0
- package/dist/templates/trellis/scripts/common/test_pool_store.py +17 -0
- package/dist/templates/trellis/scripts/common/test_task_store_kernel_patch.py +163 -0
- package/dist/templates/trellis/scripts/common/workflow_phase.py +3 -0
- package/dist/templates/trellis/scripts/cursor_retrieval_probe_prompt.md +4 -5
- package/dist/templates/trellis/scripts/get_context.py +1 -0
- package/dist/templates/trellis/scripts/pool.py +5 -0
- package/dist/templates/trellis/scripts/task.py +83 -7
- package/dist/templates/trellis/workflow.md +109 -23
- package/dist/utils/cursor-retrieval-env.d.ts +2 -1
- package/dist/utils/cursor-retrieval-env.d.ts.map +1 -1
- package/dist/utils/cursor-retrieval-env.js +3 -2
- package/dist/utils/cursor-retrieval-env.js.map +1 -1
- package/dist/utils/cursor2plus-residue-cleanup.d.ts +38 -0
- package/dist/utils/cursor2plus-residue-cleanup.d.ts.map +1 -0
- package/dist/utils/cursor2plus-residue-cleanup.js +145 -0
- package/dist/utils/cursor2plus-residue-cleanup.js.map +1 -0
- package/dist/utils/manifest-prune.d.ts.map +1 -1
- package/dist/utils/manifest-prune.js +7 -2
- package/dist/utils/manifest-prune.js.map +1 -1
- package/dist/utils/p36-upgrade.d.ts +62 -0
- package/dist/utils/p36-upgrade.d.ts.map +1 -0
- package/dist/utils/p36-upgrade.js +160 -0
- package/dist/utils/p36-upgrade.js.map +1 -0
- package/dist/utils/project-capabilities.d.ts +1 -12
- package/dist/utils/project-capabilities.d.ts.map +1 -1
- package/dist/utils/project-capabilities.js +3 -100
- package/dist/utils/project-capabilities.js.map +1 -1
- package/dist/utils/readiness.d.ts +10 -0
- package/dist/utils/readiness.d.ts.map +1 -1
- package/dist/utils/readiness.js +58 -26
- package/dist/utils/readiness.js.map +1 -1
- package/dist/utils/retrieval-agent-instructions.js +1 -1
- package/dist/utils/retrieval-agent-instructions.js.map +1 -1
- package/dist/utils/retrieval-execution-telemetry.js +1 -1
- package/dist/utils/retrieval-execution-telemetry.js.map +1 -1
- package/dist/utils/template-hash.d.ts.map +1 -1
- package/dist/utils/template-hash.js +11 -1
- package/dist/utils/template-hash.js.map +1 -1
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
- package/dist/utils/uninstall-scrubbers.js +52 -14
- package/dist/utils/uninstall-scrubbers.js.map +1 -1
- package/dist/utils/update-rollout-report.d.ts +14 -0
- package/dist/utils/update-rollout-report.d.ts.map +1 -1
- package/dist/utils/update-rollout-report.js +1 -0
- package/dist/utils/update-rollout-report.js.map +1 -1
- package/dist/utils/workflow-ownership.d.ts +1 -1
- package/dist/utils/workflow-ownership.js +4 -4
- package/dist/utils/workflow-ownership.js.map +1 -1
- package/package.json +5 -4
- package/scripts/postinstall.js +6 -7
- package/dist/commands/campaign/canvas-render.d.ts +0 -68
- package/dist/commands/campaign/canvas-render.d.ts.map +0 -1
- package/dist/commands/campaign/canvas-render.js +0 -414
- package/dist/commands/campaign/canvas-render.js.map +0 -1
- package/dist/commands/campaign/compose.d.ts +0 -15
- package/dist/commands/campaign/compose.d.ts.map +0 -1
- package/dist/commands/campaign/compose.js +0 -110
- package/dist/commands/campaign/compose.js.map +0 -1
- package/dist/commands/campaign/index.d.ts +0 -13
- package/dist/commands/campaign/index.d.ts.map +0 -1
- package/dist/commands/campaign/index.js +0 -134
- package/dist/commands/campaign/index.js.map +0 -1
- package/dist/commands/campaign/kind-map.d.ts +0 -6
- package/dist/commands/campaign/kind-map.d.ts.map +0 -1
- package/dist/commands/campaign/kind-map.js +0 -21
- package/dist/commands/campaign/kind-map.js.map +0 -1
- package/dist/commands/campaign/mcp-server.d.ts +0 -6
- package/dist/commands/campaign/mcp-server.d.ts.map +0 -1
- package/dist/commands/campaign/mcp-server.js +0 -167
- package/dist/commands/campaign/mcp-server.js.map +0 -1
- package/dist/commands/campaign/render.d.ts +0 -5
- package/dist/commands/campaign/render.d.ts.map +0 -1
- package/dist/commands/campaign/render.js +0 -103
- package/dist/commands/campaign/render.js.map +0 -1
- package/dist/commands/campaign/trellis-load.d.ts +0 -13
- package/dist/commands/campaign/trellis-load.d.ts.map +0 -1
- package/dist/commands/campaign/trellis-load.js +0 -122
- package/dist/commands/campaign/trellis-load.js.map +0 -1
- package/dist/commands/campaign/types.d.ts +0 -61
- package/dist/commands/campaign/types.d.ts.map +0 -1
- package/dist/commands/campaign/types.js +0 -3
- package/dist/commands/campaign/types.js.map +0 -1
- package/dist/commands/goal/index.d.ts +0 -3
- package/dist/commands/goal/index.d.ts.map +0 -1
- package/dist/commands/goal/index.js +0 -159
- package/dist/commands/goal/index.js.map +0 -1
- package/dist/commands/goal/review.d.ts +0 -6
- package/dist/commands/goal/review.d.ts.map +0 -1
- package/dist/commands/goal/review.js +0 -28
- package/dist/commands/goal/review.js.map +0 -1
- package/dist/commands/rpc/client.d.ts +0 -51
- package/dist/commands/rpc/client.d.ts.map +0 -1
- package/dist/commands/rpc/client.js +0 -147
- package/dist/commands/rpc/client.js.map +0 -1
- package/dist/commands/rpc/index.d.ts +0 -10
- package/dist/commands/rpc/index.d.ts.map +0 -1
- package/dist/commands/rpc/index.js +0 -157
- package/dist/commands/rpc/index.js.map +0 -1
- package/dist/commands/rpc/serve.d.ts +0 -23
- package/dist/commands/rpc/serve.d.ts.map +0 -1
- package/dist/commands/rpc/serve.js +0 -60
- package/dist/commands/rpc/serve.js.map +0 -1
- package/dist/commands/rpc/smoke.d.ts +0 -16
- package/dist/commands/rpc/smoke.d.ts.map +0 -1
- package/dist/commands/rpc/smoke.js +0 -92
- package/dist/commands/rpc/smoke.js.map +0 -1
- package/dist/commands/sdk/index.d.ts +0 -9
- package/dist/commands/sdk/index.d.ts.map +0 -1
- package/dist/commands/sdk/index.js +0 -58
- package/dist/commands/sdk/index.js.map +0 -1
- package/dist/commands/sdk/run.d.ts +0 -42
- package/dist/commands/sdk/run.d.ts.map +0 -1
- package/dist/commands/sdk/run.js +0 -220
- package/dist/commands/sdk/run.js.map +0 -1
- package/dist/commands/sdk/status.d.ts +0 -14
- package/dist/commands/sdk/status.d.ts.map +0 -1
- package/dist/commands/sdk/status.js +0 -69
- package/dist/commands/sdk/status.js.map +0 -1
- package/dist/configurators/cursor2plus-local.d.ts +0 -6
- package/dist/configurators/cursor2plus-local.d.ts.map +0 -1
- package/dist/configurators/cursor2plus-local.js +0 -21
- package/dist/configurators/cursor2plus-local.js.map +0 -1
- package/dist/goal/action-packet.d.ts +0 -89
- package/dist/goal/action-packet.d.ts.map +0 -1
- package/dist/goal/action-packet.js +0 -113
- package/dist/goal/action-packet.js.map +0 -1
- package/dist/goal/audit.d.ts +0 -14
- package/dist/goal/audit.d.ts.map +0 -1
- package/dist/goal/audit.js +0 -12
- package/dist/goal/audit.js.map +0 -1
- package/dist/goal/constants.d.ts +0 -26
- package/dist/goal/constants.d.ts.map +0 -1
- package/dist/goal/constants.js +0 -24
- package/dist/goal/constants.js.map +0 -1
- package/dist/goal/paths.d.ts +0 -8
- package/dist/goal/paths.d.ts.map +0 -1
- package/dist/goal/paths.js +0 -36
- package/dist/goal/paths.js.map +0 -1
- package/dist/goal/preflight.d.ts +0 -21
- package/dist/goal/preflight.d.ts.map +0 -1
- package/dist/goal/preflight.js +0 -97
- package/dist/goal/preflight.js.map +0 -1
- package/dist/goal/review-seam.d.ts +0 -44
- package/dist/goal/review-seam.d.ts.map +0 -1
- package/dist/goal/review-seam.js +0 -153
- package/dist/goal/review-seam.js.map +0 -1
- package/dist/goal/reviewer-rules.d.ts +0 -13
- package/dist/goal/reviewer-rules.d.ts.map +0 -1
- package/dist/goal/reviewer-rules.js +0 -153
- package/dist/goal/reviewer-rules.js.map +0 -1
- package/dist/goal/reviewer.d.ts +0 -9
- package/dist/goal/reviewer.d.ts.map +0 -1
- package/dist/goal/reviewer.js +0 -54
- package/dist/goal/reviewer.js.map +0 -1
- package/dist/goal/runtime.d.ts +0 -32
- package/dist/goal/runtime.d.ts.map +0 -1
- package/dist/goal/runtime.js +0 -242
- package/dist/goal/runtime.js.map +0 -1
- package/dist/goal/sdk-client.d.ts +0 -10
- package/dist/goal/sdk-client.d.ts.map +0 -1
- package/dist/goal/sdk-client.js +0 -34
- package/dist/goal/sdk-client.js.map +0 -1
- package/dist/goal/state.d.ts +0 -40
- package/dist/goal/state.d.ts.map +0 -1
- package/dist/goal/state.js +0 -37
- package/dist/goal/state.js.map +0 -1
- package/dist/goal/task-triggers.d.ts +0 -15
- package/dist/goal/task-triggers.d.ts.map +0 -1
- package/dist/goal/task-triggers.js +0 -23
- package/dist/goal/task-triggers.js.map +0 -1
- package/dist/goal/walls.d.ts +0 -12
- package/dist/goal/walls.d.ts.map +0 -1
- package/dist/goal/walls.js +0 -65
- package/dist/goal/walls.js.map +0 -1
- package/dist/goal/worker-prompt.d.ts +0 -13
- package/dist/goal/worker-prompt.d.ts.map +0 -1
- package/dist/goal/worker-prompt.js +0 -41
- package/dist/goal/worker-prompt.js.map +0 -1
- package/dist/goal/worker.d.ts +0 -42
- package/dist/goal/worker.d.ts.map +0 -1
- package/dist/goal/worker.js +0 -180
- package/dist/goal/worker.js.map +0 -1
- package/dist/templates/common/bundled-skills/cstl-cursor2plus-setup/SKILL.md +0 -63
- package/dist/templates/cursor/commands/cursor2plus-setup.md +0 -82
- package/dist/templates/cursor/rules/cstl-cursor-modes.mdc +0 -32
- package/dist/templates/cursor/rules/cstl-session-rename.mdc +0 -31
- package/dist/templates/cursor/rules/cstl-subagent-dispatch.mdc +0 -34
- package/dist/templates/cursor/rules/cstl-triage.mdc +0 -36
- package/dist/templates/cursor/rules/retrieval-routing.mdc +0 -78
- package/dist/templates/markdown/spec/guides/cursor-trellis-release-coexistence-guide.md.txt +0 -166
- package/dist/templates/markdown/spec/guides/goal-release-regression-runbook.md.txt +0 -132
- package/dist/templates/trellis/local/README.md +0 -85
- package/dist/templates/trellis/local/config.local.json.example +0 -6
- package/dist/templates/trellis/local/index.d.ts +0 -8
- package/dist/templates/trellis/local/index.d.ts.map +0 -1
- package/dist/templates/trellis/local/index.js +0 -15
- package/dist/templates/trellis/local/index.js.map +0 -1
- package/dist/templates/trellis/local/patch_wpelc8.py +0 -421
- package/dist/templates/trellis/local/smoke.py +0 -94
- package/dist/templates/trellis/local/subagent-models.json.example +0 -4
- package/dist/templates/trellis/local/trellis-task-models.json.example +0 -10
- package/dist/templates/trellis/local/trellis-task-models.json5.example +0 -45
- package/dist/templates/trellis/local/trellis_task_models_config.py +0 -200
- package/dist/utils/cursor-sdk-gate.d.ts +0 -10
- package/dist/utils/cursor-sdk-gate.d.ts.map +0 -1
- package/dist/utils/cursor-sdk-gate.js +0 -32
- package/dist/utils/cursor-sdk-gate.js.map +0 -1
- /package/dist/templates/markdown/{spec/guides → framework}/artifact-locale-guide.md.txt +0 -0
- /package/dist/templates/markdown/{spec/guides → framework}/cursor-context-injection-guide.md.txt +0 -0
- /package/dist/templates/markdown/{spec/guides → framework}/cursor-semantic-compliance.md.txt +0 -0
- /package/dist/templates/markdown/{spec/guides → framework}/injection-budget-guide.md.txt +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Parallel-first execution contract
|
|
2
|
+
|
|
3
|
+
> **Purpose**: Make “parallel by default, serial by written reason” a **product** principle and an executable planning contract. Prefer Cursor native parallel; Trellis owns declaration + integration only.
|
|
4
|
+
>
|
|
5
|
+
> **Not a scheduler.** No queue, no new CLI, no Multitask replacement, no cross-platform parallel.
|
|
6
|
+
>
|
|
7
|
+
> **Scope:** review-pool accepted items, development-plan batches, Parent/Full fan-out, and independent middleware / protocol / release tracks. **Not:** Lite / single-file; unisolatable write-sets; HITL / `start-execution --approved` / reviewer / `integrate-child`.
|
|
8
|
+
>
|
|
9
|
+
> **Strength:** convention + review call-out. Not a CLI hard gate. Attention order (`priority`) is not a serial lock.
|
|
10
|
+
|
|
11
|
+
Full Prefer/Adapt/Own and serial-exception list: `.cstl/workflow.md` (Parallel-first). Native surface: `.cstl/framework/cursor-native-modes-guide.md` (Multitask). Who/where dispatch: `.cstl/framework/execution-strategy.md` (orthogonal).
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Declaration fields (task-map / implement.md)
|
|
16
|
+
|
|
17
|
+
Declare these in Parent `task-map.md` (frontmatter and/or Orchestration notes). For a Full task with explicit Task fan-out and no Parent, put the same block in `implement.md`. **Lite / single-file work omits this block.**
|
|
18
|
+
|
|
19
|
+
| Need | Field | Where it already lives | Notes |
|
|
20
|
+
| --- | --- | --- | --- |
|
|
21
|
+
| Topology | `execution_topology` | task-map frontmatter | `parallel` (default when ≥2 independent units) or `serial` (requires `serial_reason`) |
|
|
22
|
+
| 可并行组 | `parallel_groups` *or* `stages[].units` | `stages:` already groups units | List child ids that may run concurrently (empty `depends_on`) |
|
|
23
|
+
| 合并点 | `merge_points` *or* `merge_limit` | `merge_limit: 1` + `integrate-child` | HITL, `start-execution --approved`, reviewer gates, and Parent integrate stay **serial** |
|
|
24
|
+
| 冲突面 | `conflict_surface` *or* `children[].touches` | per-child `touches` | Write-sets that can collide; isolate with worktrees or serialize |
|
|
25
|
+
| 串行理由 | `serial_reason` | **new** — required iff topology is `serial` | Exactly one of the exception list below |
|
|
26
|
+
|
|
27
|
+
`serial_reason` (one of):
|
|
28
|
+
|
|
29
|
+
- shared write-set
|
|
30
|
+
- HITL or reviewer gate
|
|
31
|
+
- `depends_on` unmet
|
|
32
|
+
- user asked serial
|
|
33
|
+
- conflict surface cannot isolate
|
|
34
|
+
|
|
35
|
+
Optional YAML (Parent frontmatter or Full `implement.md`):
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
execution_topology: parallel
|
|
39
|
+
parallel_groups: [child-a, child-b]
|
|
40
|
+
merge_points: [integrate-child, reviewer-gates]
|
|
41
|
+
conflict_surface: [path/that/collides]
|
|
42
|
+
# serial_reason: # omit when parallel
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
These fields are **planning declarations**. CLI may round-trip them on `task-map.md` writes; nothing in Trellis auto-dispatches workers from them.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Archived Parent 对照 (do not edit the archive)
|
|
50
|
+
|
|
51
|
+
Source (read-only): `.cstl/tasks/archive/2026-08/08-05-cursor-trellis-optimization/task-map.md`
|
|
52
|
+
|
|
53
|
+
That campaign already behaved parallel-first; this table shows which **named** fields the contract would ask for vs what the archive already has. The archive body is **not** rewritten.
|
|
54
|
+
|
|
55
|
+
| Contract field | Archive evidence | Gap |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| Default parallel (≥2 children, `depends_on: []`) | Five children, all `depends_on: []`; notes say 可并行尽量并行 | Met |
|
|
58
|
+
| `execution_topology` | `parallel_work_serial_merge` | Met in spirit (parallel work, serial merge). Today’s spelling is `parallel` + serial merge_points — do not rename the archive |
|
|
59
|
+
| 可并行组 | `stages:` `stage-p0` / `stage-p1` / `stage-p1-lsp` with “可并行” titles | Met via `stages:` (alias of `parallel_groups`) |
|
|
60
|
+
| 合并点 | `merge_limit: 1`; Event Log integrates one Child at a time; Suggested integration order: 合入仍串行 | Met via `merge_limit` + notes. Missing the literal key `merge_points:` |
|
|
61
|
+
| 冲突面 | Per-child `touches` (hooks/rules/templates overlap called out) | Met via `touches`. Missing top-level `conflict_surface:` |
|
|
62
|
+
| `serial_reason` | Topology is not `serial`, so none required. HITL/gates stayed serial through `merge_limit` | No gap for this map. A **serial** topology would need one exception line |
|
|
63
|
+
| Prefer native | Parent routing to Multitask / worktrees; workers not scheduled by Trellis | Met (capability). Contract now makes that the **default**, not “when useful” |
|
|
64
|
+
| Worker prompt path | Child prompts under `child-prompts/` with explicit task dirs | Met |
|
|
65
|
+
|
|
66
|
+
**Would-write `serial_reason` only if** this Parent had set `execution_topology: serial` despite empty `depends_on` — e.g. shared write-set on `cursor-trellis/packages/cli/src/templates/`. It did not; it kept topology parallel and serialized **merge** only.
|
|
67
|
+
|
|
68
|
+
Contrast (not edited): `.cstl/tasks/archive/2026-08/08-20-08-20-byok-headless-backend/task-map.md` has `execution_topology: serial` with every `depends_on: []` and **no** `serial_reason`. Under this contract that map would add one line (likely shared write-set / same branch `feat/byok-headless`).
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Non-goals
|
|
73
|
+
|
|
74
|
+
- Auto parallel dispatch, queues, or new CLI
|
|
75
|
+
- Forcing Lite tasks into parallel agents
|
|
76
|
+
- Replacing Cursor Multitask
|
|
77
|
+
- Relaxing HITL / `start-execution --approved` / reviewer-gate serial semantics
|
|
78
|
+
- Cross-platform parallel (P16)
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# PRD Grill & Frontier Discipline
|
|
2
|
+
|
|
3
|
+
> **Purpose**: When the workflow routes to planning / PRD Grill, this is the on-demand path to the grill and Frontier discipline on Cursor. The full interview contract and Thinking Principles live in the bundled `brainstorm` skill (SSOT) — this guide is the Cursor loadable summary, not a second source of truth.
|
|
4
|
+
|
|
5
|
+
## When to read this
|
|
6
|
+
|
|
7
|
+
The workflow or AGENTS invocation map says planning / PRD Grill → **`Read ./prd-grill-frontier.md`** (this file) or the full bundled `common/skills/brainstorm.md` when another carrier is available. Read it **before** asking any user questions. Do **not** claim the grill discipline is loaded without a file read.
|
|
8
|
+
|
|
9
|
+
## Non-negotiable evidence rule
|
|
10
|
+
|
|
11
|
+
If a question can be answered by exploring the codebase, explore the codebase instead — never ask the user to confirm facts the repo can answer. Read root `CONTEXT.md` (if present) before asking and use its glossary terms. Ask only for product intent, preference, scope, risk tolerance, or decisions that remain ambiguous after inspection.
|
|
12
|
+
|
|
13
|
+
## PRD Grill (Phase B)
|
|
14
|
+
|
|
15
|
+
Treat `prd.md` (+ existing `design.md` fragments) as the **only document surface**. Run this checklist and fix the PRD in place (no new subagent):
|
|
16
|
+
|
|
17
|
+
| # | Check |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| 1 | **Goal & user value** — single clear statement |
|
|
20
|
+
| 2 | **Confirmed facts vs assumptions** — repo facts not listed as assumptions |
|
|
21
|
+
| 3 | **Testable acceptance criteria** |
|
|
22
|
+
| 4 | **Out of scope** explicit |
|
|
23
|
+
| 5 | **Dependencies & sequencing** |
|
|
24
|
+
| 6 | **Parent/Child & deliverables** when applicable |
|
|
25
|
+
| 7 | **Research & external facts** — smart-search or documented fallback |
|
|
26
|
+
| 8 | **Execution gate & artifacts** — `design.md` / `implement.md` / `verify.md` expectations |
|
|
27
|
+
| 9 | **Durable Learning** — Phase 3.3 will need `update-spec` \| `no-update` \| `unsure` |
|
|
28
|
+
| 10 | **Platform** — Cursor-first; PRD Grill in-session (no legacy grill-me / grill-with-docs subagent gate) |
|
|
29
|
+
| 11 | **Risk & rollback** for complex tasks |
|
|
30
|
+
| 12 | **Open questions** — only **blocking** strategic/preference items remain |
|
|
31
|
+
| 13 | **Root vs inherited assumptions** — every requirement traces to a user-facing root need; inherited assumptions flagged or removed (First Principles) |
|
|
32
|
+
| 14 | **Minimal sufficient design** — simplest design that meets acceptance wins (Occam's Razor) |
|
|
33
|
+
|
|
34
|
+
## Micro-grill unresolved
|
|
35
|
+
|
|
36
|
+
For each **blocking** open question after the checklist, embed the `cstl-micro-grill` contract:
|
|
37
|
+
|
|
38
|
+
- exactly **one** question per message
|
|
39
|
+
- user-facing text in the project's human-review language (default Simplified Chinese)
|
|
40
|
+
- recommended answer + trade-off
|
|
41
|
+
- **update `prd.md` after every answer** before the next question
|
|
42
|
+
|
|
43
|
+
Stop micro-grill when no blocking open questions remain. Do not ask process questions ("should I search?"); do not re-ask facts Discovery already confirmed.
|
|
44
|
+
|
|
45
|
+
## Frontier rounds (question pacing)
|
|
46
|
+
|
|
47
|
+
- **frontier** = all "prerequisite-decided" questions: their prerequisite decisions are resolved, so they can be asked now without guessing unheard answers.
|
|
48
|
+
- Each round lists the current frontier at once, each question numbered (❓Q1/Q2/Q3…) with a recommended answer.
|
|
49
|
+
- **≤3 questions per round**; split into more rounds beyond that to avoid information overload.
|
|
50
|
+
- **Facts are the agent's job**: when a frontier question needs environment facts, dispatch a sub-agent to check; while exploration is pending it counts as an unresolved prerequisite that only blocks its downstream questions — ask the rest of the frontier anyway.
|
|
51
|
+
- **Decisions are the user's job**: every decision waits for the user's answer; do not answer for them.
|
|
52
|
+
- A user answer reshapes the design tree and the frontier extrapolates into the next round; **an empty frontier = the design tree is exhausted** — summarize the consensus and confirm before treating planning as done.
|
|
53
|
+
|
|
54
|
+
> **Override note**: this pacing overrides the "Ask the questions one at a time" line in the Non-Negotiable Interview Contract — Phase B (PRD Grill) follows frontier rounds; `cstl-micro-grill` still defaults to one question at a time.
|
|
55
|
+
|
|
56
|
+
## Question rules
|
|
57
|
+
|
|
58
|
+
Each question must include: the decision needed, why it matters, your recommended answer, and the trade-off if the user chooses differently. Default recommendation = Occam's Razor: the **minimal sufficient** option that still satisfies the acceptance criteria. Only recommend a more complex option when you can cite evidence (a contract, a verified edge case, a repo constraint).
|
|
59
|
+
|
|
60
|
+
## Artifact rules (summary)
|
|
61
|
+
|
|
62
|
+
- `prd.md` records requirements + acceptance (goal, confirmed facts, requirements, acceptance criteria, out of scope, blocking open questions).
|
|
63
|
+
- `design.md` records technical design for complex tasks (architecture, data flow, contracts, trade-offs, rollback).
|
|
64
|
+
- `implement.md` records execution planning (ordered checklist, validation commands, Development Strategy Contract via `task.py suggest-execution-strategy`).
|
|
65
|
+
- Complex tasks need all three before `start-execution --check`; lightweight tasks may be PRD-only.
|
|
66
|
+
|
|
67
|
+
## Completion — PRD Grill done
|
|
68
|
+
|
|
69
|
+
Planning is ready for the execution gate when **all** hold:
|
|
70
|
+
|
|
71
|
+
- PRD Grill checklist satisfied or explicitly N/A with rationale in `prd.md`
|
|
72
|
+
- **No blocking** open questions in `prd.md`
|
|
73
|
+
- Acceptance criteria testable; out of scope explicit
|
|
74
|
+
- Complex tasks: `design.md` and `implement.md` present
|
|
75
|
+
- User reviewed artifacts or explicitly approved proceeding
|
|
76
|
+
|
|
77
|
+
Then proceed to Research (if needed), `task.py start-execution <task> --check`, and implementation **only after** explicit user execution approval. Do not start implementation until the user approves or asks for implementation.
|
|
78
|
+
|
|
79
|
+
## Related
|
|
80
|
+
|
|
81
|
+
- Full SSOT: bundled `brainstorm` skill (`common/skills/brainstorm.md`) — interview contract, First Principles, Occam's Razor.
|
|
82
|
+
- Reachability: [internal-skills-cursor-reachability.md](./internal-skills-cursor-reachability.md).
|
|
83
|
+
- Workflow routing: `.cstl/workflow.md` Phase 1 (Plan) and Active Task Routing.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# 发布边界:CSTL 与 cstl-byok
|
|
2
|
+
|
|
3
|
+
CSTL(cursor-trellis)本批带走**中间件协议**与**并行原则**,外加半页用户升级说明。**cstl-byok** 是另一条产品线、另一个仓库、另一次发布。两者可并行准备,互不门禁。
|
|
4
|
+
|
|
5
|
+
## CSTL 本批带走
|
|
6
|
+
|
|
7
|
+
- Middleware Protocol v1(义务 + Manifest 样例 + `update` 不顶掉)。Overlay 路径写死为 `.cstl/middleware/`。
|
|
8
|
+
- 并行第一原则(workflow / 池 / 规划模板)。强度是约定 + 审核指出,不是新 CLI gate。
|
|
9
|
+
- 升级合同给终端用户看的半页:升包 → `cstl update` → 确认 → 接着干活。官方面可随 `update` 开迁;产物先双读;Contract 另批。
|
|
10
|
+
- 池注意力刻度(`priority`)与可并行组说明。注意力排序不是串行锁。
|
|
11
|
+
|
|
12
|
+
文档/约定即可。本批不强制写完安装器,不实现产物迁移器。
|
|
13
|
+
|
|
14
|
+
## CSTL 本批不带走
|
|
15
|
+
|
|
16
|
+
- cstl-byok 建仓、分析、合成、npm/改名、Cursor patch 安装器。
|
|
17
|
+
- 任何 BYOK 实现或可选安装器。全库 BYOK 盘点仍搁置。
|
|
18
|
+
- Cursor++ 活入口不回默认安装面。
|
|
19
|
+
|
|
20
|
+
未就绪的 BYOK **不是** CSTL 发版硬依赖。成功标准看 CSTL 自己的工作流轴,不用「BYOK 是否合成」当门禁。
|
|
21
|
+
|
|
22
|
+
## 用户说明边界
|
|
23
|
+
|
|
24
|
+
用户升级说明见 [upgrade.md](./upgrade.md)。那一页不写内部迁移地图,也不写维护者本机步骤。
|
|
25
|
+
|
|
26
|
+
## 相关
|
|
27
|
+
|
|
28
|
+
- [middleware-protocol.md](./middleware-protocol.md)
|
|
29
|
+
- [upgrade.md](./upgrade.md)
|
|
30
|
+
- [parallel-first-execution.md](./parallel-first-execution.md)
|
|
@@ -48,7 +48,7 @@ Prefer **primary sources** — official docs, source code, first-party API refer
|
|
|
48
48
|
| Named-symbol definition | **Grep → Read** (Prefer); **codegraph** when trap/blast | Native first; structure when ambiguous |
|
|
49
49
|
| IDE diagnostics | **ReadLints** | Cursor-native linter/diagnostic surface |
|
|
50
50
|
| Symbol, callers, edit blast radius | **codegraph** MCP | Own layer: structure-first for caller/trap/extension intents |
|
|
51
|
-
| Unknown keywords, semantic discovery | **@codebase** (Cursor Native) / **fast-context** (
|
|
51
|
+
| Unknown keywords, semantic discovery | **@codebase** (Cursor Native) / **fast-context** (BYOK env) | Native: built-in semantic; BYOK: `fast_context_search` MCP (see `cursorEnv` in plans) |
|
|
52
52
|
| External / current facts | **smart-search-cli** | **Mandatory first** — built-in web tools are downgrade-only (see rule above) |
|
|
53
53
|
| Trellis durable docs | **artifact-search** | `search_artifacts.py` |
|
|
54
54
|
| Past sessions | **session-memory** | Historical; verify against tasks/spec |
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# 升级 CSTL
|
|
2
|
+
|
|
3
|
+
给已经在用旧版 CSTL 的仓库。不要重做 `init`,不要手搬任务目录。
|
|
4
|
+
|
|
5
|
+
1. 按发布说明升级 CSTL 包(或你原来的安装面)。
|
|
6
|
+
2. 在项目根目录跑一次 **`cstl update`**。
|
|
7
|
+
3. 看摘要:刷新了哪些官方文件、迁了哪些官方规则、哪些进行中的任务仍按旧形状可读、有没有 degraded。
|
|
8
|
+
4. **确认一次。** 拒绝则项目保持原状,不会半写。`--force` / `--skip-all` / `--create-new` 会套官方文件,但不算这次确认,也不写停读旗标。
|
|
9
|
+
5. 照常开对话或 `/cstl-continue`。进行中的任务还能做、还能收工。
|
|
10
|
+
|
|
11
|
+
官方面(CSTL 装进项目的指令与规则)能随这次 `update` 开迁。任务产物先双读,以后再写。确认后才会停读旧形状。从更老的版本一次升上来,也走同一条 `update`。
|
|
12
|
+
|
|
13
|
+
你改过的官方文件会单独列出并保留。只在 Cursor 里配了 MCP、没写成中间件的,CSTL 不管。失败则回滚或维持双读,项目仍可用。
|
|
14
|
+
|
|
15
|
+
团队其他人:拉代码即可。若这次只改了本地未提交文件,发布说明会写清谁跑 `update`、谁只要 pull。
|
package/dist/templates/markdown/{spec/guides → framework}/verification-strength-guide.md.txt
RENAMED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- **No TDD productization** — cstl does not require red-green-refactor loops, "write tests first" gates, or per-function unit test mandates.
|
|
10
10
|
- **No per-task full-suite burden** — Lite tasks must not be forced through architecture review or whole-repo CI.
|
|
11
11
|
- **No replacement for project test frameworks** — cstl validation checks **task evidence** in `verify.md` and configured quality gates; it does not run or replace your project's test runner.
|
|
12
|
-
- **No test-writing mandate** — how to write good tests (pre-agreed seams, anti-patterns, mock boundaries) lives in the [Test Discipline Guide](
|
|
12
|
+
- **No test-writing mandate** — how to write good tests (pre-agreed seams, anti-patterns, mock boundaries) lives in the [Test Discipline Guide](.cstl/spec/guides/test-discipline-guide.md); verification strength is orthogonal to test-writing style.
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -48,7 +48,7 @@ Details: `task_gates.py` → `PROFILE_DEFAULT_GATES`.
|
|
|
48
48
|
- [ ] Focused validation on **touched behavior** (command + result in `verify.md`)
|
|
49
49
|
- [ ] `python ./.cstl/scripts/task.py validate <task>`
|
|
50
50
|
- [ ] Final acceptance mapped to PRD AC
|
|
51
|
-
- [ ] Durable-learning decision line (see [Durable Learning Decision Guide](
|
|
51
|
+
- [ ] Durable-learning decision line (see [Durable Learning Decision Guide](.cstl/spec/guides/durable-learning-decision-guide.md))
|
|
52
52
|
|
|
53
53
|
**Example `verify.md` lines:**
|
|
54
54
|
|
|
@@ -25,18 +25,34 @@ export declare const guidesIndexContent: string;
|
|
|
25
25
|
export declare const guidesCrossLayerThinkingGuideContent: string;
|
|
26
26
|
export declare const guidesCodeReuseThinkingGuideContent: string;
|
|
27
27
|
export declare const guidesDurableLearningDecisionGuideContent: string;
|
|
28
|
-
export declare const guidesRetrievalDailyGuideContent: string;
|
|
29
|
-
export declare const guidesCursorSemanticComplianceContent: string;
|
|
30
|
-
export declare const guidesCursorSubagentPolicyContent: string;
|
|
31
|
-
export declare const guidesExecutionStrategyContent: string;
|
|
32
|
-
export declare const guidesCursorContextInjectionGuideContent: string;
|
|
33
|
-
export declare const guidesCursorNativeModesGuideContent: string;
|
|
34
|
-
export declare const guidesVerificationStrengthGuideContent: string;
|
|
35
|
-
export declare const guidesInjectionBudgetGuideContent: string;
|
|
36
|
-
export declare const guidesArtifactLocaleGuideContent: string;
|
|
37
28
|
export declare const guidesDebugLoopGuideContent: string;
|
|
38
|
-
export declare const guidesGoalReleaseRegressionRunbookContent: string;
|
|
39
29
|
export declare const guidesPrototypeGuideContent: string;
|
|
40
30
|
export declare const guidesTestDisciplineGuideContent: string;
|
|
41
31
|
export declare const guidesCrossPlatformThinkingGuideContent: string;
|
|
32
|
+
export declare const frameworkIndexContent: string;
|
|
33
|
+
export declare const frameworkRetrievalDailyGuideContent: string;
|
|
34
|
+
export declare const frameworkCursorSemanticComplianceContent: string;
|
|
35
|
+
export declare const frameworkCursorSubagentPolicyContent: string;
|
|
36
|
+
export declare const frameworkExecutionStrategyContent: string;
|
|
37
|
+
export declare const frameworkCursorContextInjectionGuideContent: string;
|
|
38
|
+
export declare const frameworkCursorNativeModesGuideContent: string;
|
|
39
|
+
export declare const frameworkVerificationStrengthGuideContent: string;
|
|
40
|
+
export declare const frameworkInjectionBudgetGuideContent: string;
|
|
41
|
+
export declare const frameworkArtifactLocaleGuideContent: string;
|
|
42
|
+
export declare const frameworkPrdGrillFrontierGuideContent: string;
|
|
43
|
+
export declare const frameworkInternalSkillsReachabilityGuideContent: string;
|
|
44
|
+
export declare const frameworkDogfoodOnlySurfacesGuideContent: string;
|
|
45
|
+
export declare const frameworkParallelFirstExecutionContent: string;
|
|
46
|
+
export declare const frameworkMiddlewareProtocolContent: string;
|
|
47
|
+
export declare const frameworkUpgradeContent: string;
|
|
48
|
+
export declare const frameworkReleaseBoundaryContent: string;
|
|
49
|
+
/**
|
|
50
|
+
* Single source of truth for `.cstl/framework/` docs.
|
|
51
|
+
* Consumed by init (configurators/workflow.ts) and update (commands/update.ts)
|
|
52
|
+
* so the two paths can never drift.
|
|
53
|
+
*/
|
|
54
|
+
export declare const frameworkDocs: readonly {
|
|
55
|
+
name: string;
|
|
56
|
+
content: string;
|
|
57
|
+
}[];
|
|
42
58
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/markdown/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,eAAO,MAAM,eAAe,EAAE,MAAuC,CAAC;AAGtE,eAAO,MAAM,qBAAqB,EAAE,MACK,CAAC;AAG1C,eAAO,MAAM,yBAAyB,QAAwB,CAAC;AAG/D,eAAO,MAAM,wBAAwB,EAAE,MACH,CAAC;AAQrC,eAAO,MAAM,mBAAmB,EAAE,MAEjC,CAAC;AACF,eAAO,MAAM,gCAAgC,EAAE,MAE9C,CAAC;AACF,eAAO,MAAM,gCAAgC,EAAE,MAE9C,CAAC;AACF,eAAO,MAAM,+BAA+B,EAAE,MAE7C,CAAC;AACF,eAAO,MAAM,+BAA+B,EAAE,MAE7C,CAAC;AACF,eAAO,MAAM,2BAA2B,EAAE,MAEzC,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,MAElC,CAAC;AACF,eAAO,MAAM,iCAAiC,EAAE,MAE/C,CAAC;AACF,eAAO,MAAM,yBAAyB,EAAE,MAEvC,CAAC;AACF,eAAO,MAAM,6BAA6B,EAAE,MAE3C,CAAC;AACF,eAAO,MAAM,kCAAkC,EAAE,MAEhD,CAAC;AACF,eAAO,MAAM,gCAAgC,EAAE,MAE9C,CAAC;AACF,eAAO,MAAM,8BAA8B,EAAE,MAE5C,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,MAEhC,CAAC;AACF,eAAO,MAAM,oCAAoC,EAAE,MAElD,CAAC;AACF,eAAO,MAAM,mCAAmC,EAAE,MAEjD,CAAC;AACF,eAAO,MAAM,yCAAyC,EAAE,MACiB,CAAC;AAC1E,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/markdown/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,eAAO,MAAM,eAAe,EAAE,MAAuC,CAAC;AAGtE,eAAO,MAAM,qBAAqB,EAAE,MACK,CAAC;AAG1C,eAAO,MAAM,yBAAyB,QAAwB,CAAC;AAG/D,eAAO,MAAM,wBAAwB,EAAE,MACH,CAAC;AAQrC,eAAO,MAAM,mBAAmB,EAAE,MAEjC,CAAC;AACF,eAAO,MAAM,gCAAgC,EAAE,MAE9C,CAAC;AACF,eAAO,MAAM,gCAAgC,EAAE,MAE9C,CAAC;AACF,eAAO,MAAM,+BAA+B,EAAE,MAE7C,CAAC;AACF,eAAO,MAAM,+BAA+B,EAAE,MAE7C,CAAC;AACF,eAAO,MAAM,2BAA2B,EAAE,MAEzC,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,MAElC,CAAC;AACF,eAAO,MAAM,iCAAiC,EAAE,MAE/C,CAAC;AACF,eAAO,MAAM,yBAAyB,EAAE,MAEvC,CAAC;AACF,eAAO,MAAM,6BAA6B,EAAE,MAE3C,CAAC;AACF,eAAO,MAAM,kCAAkC,EAAE,MAEhD,CAAC;AACF,eAAO,MAAM,gCAAgC,EAAE,MAE9C,CAAC;AACF,eAAO,MAAM,8BAA8B,EAAE,MAE5C,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,MAEhC,CAAC;AACF,eAAO,MAAM,oCAAoC,EAAE,MAElD,CAAC;AACF,eAAO,MAAM,mCAAmC,EAAE,MAEjD,CAAC;AACF,eAAO,MAAM,yCAAyC,EAAE,MACiB,CAAC;AAC1E,eAAO,MAAM,2BAA2B,EAAE,MAEzC,CAAC;AACF,eAAO,MAAM,2BAA2B,EAAE,MAEzC,CAAC;AACF,eAAO,MAAM,gCAAgC,EAAE,MAE9C,CAAC;AACF,eAAO,MAAM,uCAAuC,EAAE,MACiB,CAAC;AAMxE,eAAO,MAAM,qBAAqB,EAAE,MAEnC,CAAC;AACF,eAAO,MAAM,mCAAmC,EAAE,MAEjD,CAAC;AACF,eAAO,MAAM,wCAAwC,EAAE,MACW,CAAC;AACnE,eAAO,MAAM,oCAAoC,EAAE,MAElD,CAAC;AACF,eAAO,MAAM,iCAAiC,EAAE,MAE/C,CAAC;AACF,eAAO,MAAM,2CAA2C,EAAE,MACY,CAAC;AACvE,eAAO,MAAM,sCAAsC,EAAE,MAEpD,CAAC;AACF,eAAO,MAAM,yCAAyC,EAAE,MACW,CAAC;AACpE,eAAO,MAAM,oCAAoC,EAAE,MAElD,CAAC;AACF,eAAO,MAAM,mCAAmC,EAAE,MAEjD,CAAC;AACF,eAAO,MAAM,qCAAqC,EAAE,MAEnD,CAAC;AACF,eAAO,MAAM,+CAA+C,EAAE,MACa,CAAC;AAC5E,eAAO,MAAM,wCAAwC,EAAE,MACM,CAAC;AAC9D,eAAO,MAAM,sCAAsC,EAAE,MAEpD,CAAC;AACF,eAAO,MAAM,kCAAkC,EAAE,MAEhD,CAAC;AACF,eAAO,MAAM,uBAAuB,EAAE,MAErC,CAAC;AACF,eAAO,MAAM,+BAA+B,EAAE,MAE7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,EA4DA,CAAC"}
|
|
@@ -45,23 +45,99 @@ export const frontendHookGuidelinesContent = readLocalTemplate("spec/frontend/ho
|
|
|
45
45
|
export const frontendComponentGuidelinesContent = readLocalTemplate("spec/frontend/component-guidelines.md.txt");
|
|
46
46
|
export const frontendQualityGuidelinesContent = readLocalTemplate("spec/frontend/quality-guidelines.md.txt");
|
|
47
47
|
export const frontendStateManagementContent = readLocalTemplate("spec/frontend/state-management.md.txt");
|
|
48
|
-
// Guides structure
|
|
48
|
+
// Guides structure (user-owned project thinking guides — init-only seeds)
|
|
49
49
|
export const guidesIndexContent = readLocalTemplate("spec/guides/index.md.txt");
|
|
50
50
|
export const guidesCrossLayerThinkingGuideContent = readLocalTemplate("spec/guides/cross-layer-thinking-guide.md.txt");
|
|
51
51
|
export const guidesCodeReuseThinkingGuideContent = readLocalTemplate("spec/guides/code-reuse-thinking-guide.md.txt");
|
|
52
52
|
export const guidesDurableLearningDecisionGuideContent = readLocalTemplate("spec/guides/durable-learning-decision-guide.md.txt");
|
|
53
|
-
export const guidesRetrievalDailyGuideContent = readLocalTemplate("spec/guides/retrieval-daily-guide.md.txt");
|
|
54
|
-
export const guidesCursorSemanticComplianceContent = readLocalTemplate("spec/guides/cursor-semantic-compliance.md.txt");
|
|
55
|
-
export const guidesCursorSubagentPolicyContent = readLocalTemplate("spec/guides/cursor-subagent-policy.md.txt");
|
|
56
|
-
export const guidesExecutionStrategyContent = readLocalTemplate("spec/guides/execution-strategy.md.txt");
|
|
57
|
-
export const guidesCursorContextInjectionGuideContent = readLocalTemplate("spec/guides/cursor-context-injection-guide.md.txt");
|
|
58
|
-
export const guidesCursorNativeModesGuideContent = readLocalTemplate("spec/guides/cursor-native-modes-guide.md.txt");
|
|
59
|
-
export const guidesVerificationStrengthGuideContent = readLocalTemplate("spec/guides/verification-strength-guide.md.txt");
|
|
60
|
-
export const guidesInjectionBudgetGuideContent = readLocalTemplate("spec/guides/injection-budget-guide.md.txt");
|
|
61
|
-
export const guidesArtifactLocaleGuideContent = readLocalTemplate("spec/guides/artifact-locale-guide.md.txt");
|
|
62
53
|
export const guidesDebugLoopGuideContent = readLocalTemplate("spec/guides/debug-loop-guide.md.txt");
|
|
63
|
-
export const guidesGoalReleaseRegressionRunbookContent = readLocalTemplate("spec/guides/goal-release-regression-runbook.md.txt");
|
|
64
54
|
export const guidesPrototypeGuideContent = readLocalTemplate("spec/guides/prototype-guide.md.txt");
|
|
65
55
|
export const guidesTestDisciplineGuideContent = readLocalTemplate("spec/guides/test-discipline-guide.md.txt");
|
|
66
56
|
export const guidesCrossPlatformThinkingGuideContent = readLocalTemplate("spec/guides/cross-platform-thinking-guide.md.txt");
|
|
57
|
+
// =============================================================================
|
|
58
|
+
// Framework docs (.cstl/framework/ — framework-owned, refreshed by update)
|
|
59
|
+
// =============================================================================
|
|
60
|
+
export const frameworkIndexContent = readLocalTemplate("framework/index.md.txt");
|
|
61
|
+
export const frameworkRetrievalDailyGuideContent = readLocalTemplate("framework/retrieval-daily-guide.md.txt");
|
|
62
|
+
export const frameworkCursorSemanticComplianceContent = readLocalTemplate("framework/cursor-semantic-compliance.md.txt");
|
|
63
|
+
export const frameworkCursorSubagentPolicyContent = readLocalTemplate("framework/cursor-subagent-policy.md.txt");
|
|
64
|
+
export const frameworkExecutionStrategyContent = readLocalTemplate("framework/execution-strategy.md.txt");
|
|
65
|
+
export const frameworkCursorContextInjectionGuideContent = readLocalTemplate("framework/cursor-context-injection-guide.md.txt");
|
|
66
|
+
export const frameworkCursorNativeModesGuideContent = readLocalTemplate("framework/cursor-native-modes-guide.md.txt");
|
|
67
|
+
export const frameworkVerificationStrengthGuideContent = readLocalTemplate("framework/verification-strength-guide.md.txt");
|
|
68
|
+
export const frameworkInjectionBudgetGuideContent = readLocalTemplate("framework/injection-budget-guide.md.txt");
|
|
69
|
+
export const frameworkArtifactLocaleGuideContent = readLocalTemplate("framework/artifact-locale-guide.md.txt");
|
|
70
|
+
export const frameworkPrdGrillFrontierGuideContent = readLocalTemplate("framework/prd-grill-frontier.md.txt");
|
|
71
|
+
export const frameworkInternalSkillsReachabilityGuideContent = readLocalTemplate("framework/internal-skills-cursor-reachability.md.txt");
|
|
72
|
+
export const frameworkDogfoodOnlySurfacesGuideContent = readLocalTemplate("framework/dogfood-only-surfaces.md.txt");
|
|
73
|
+
export const frameworkParallelFirstExecutionContent = readLocalTemplate("framework/parallel-first-execution.md.txt");
|
|
74
|
+
export const frameworkMiddlewareProtocolContent = readLocalTemplate("framework/middleware-protocol.md.txt");
|
|
75
|
+
export const frameworkUpgradeContent = readLocalTemplate("framework/upgrade.md.txt");
|
|
76
|
+
export const frameworkReleaseBoundaryContent = readLocalTemplate("framework/release-boundary.md.txt");
|
|
77
|
+
/**
|
|
78
|
+
* Single source of truth for `.cstl/framework/` docs.
|
|
79
|
+
* Consumed by init (configurators/workflow.ts) and update (commands/update.ts)
|
|
80
|
+
* so the two paths can never drift.
|
|
81
|
+
*/
|
|
82
|
+
export const frameworkDocs = [
|
|
83
|
+
{ name: "index.md", content: frameworkIndexContent },
|
|
84
|
+
{
|
|
85
|
+
name: "retrieval-daily-guide.md",
|
|
86
|
+
content: frameworkRetrievalDailyGuideContent,
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "cursor-semantic-compliance.md",
|
|
90
|
+
content: frameworkCursorSemanticComplianceContent,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "cursor-subagent-policy.md",
|
|
94
|
+
content: frameworkCursorSubagentPolicyContent,
|
|
95
|
+
},
|
|
96
|
+
{ name: "execution-strategy.md", content: frameworkExecutionStrategyContent },
|
|
97
|
+
{
|
|
98
|
+
name: "cursor-context-injection-guide.md",
|
|
99
|
+
content: frameworkCursorContextInjectionGuideContent,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: "cursor-native-modes-guide.md",
|
|
103
|
+
content: frameworkCursorNativeModesGuideContent,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: "verification-strength-guide.md",
|
|
107
|
+
content: frameworkVerificationStrengthGuideContent,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: "injection-budget-guide.md",
|
|
111
|
+
content: frameworkInjectionBudgetGuideContent,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "artifact-locale-guide.md",
|
|
115
|
+
content: frameworkArtifactLocaleGuideContent,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: "prd-grill-frontier.md",
|
|
119
|
+
content: frameworkPrdGrillFrontierGuideContent,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: "internal-skills-cursor-reachability.md",
|
|
123
|
+
content: frameworkInternalSkillsReachabilityGuideContent,
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: "dogfood-only-surfaces.md",
|
|
127
|
+
content: frameworkDogfoodOnlySurfacesGuideContent,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: "parallel-first-execution.md",
|
|
131
|
+
content: frameworkParallelFirstExecutionContent,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: "middleware-protocol.md",
|
|
135
|
+
content: frameworkMiddlewareProtocolContent,
|
|
136
|
+
},
|
|
137
|
+
{ name: "upgrade.md", content: frameworkUpgradeContent },
|
|
138
|
+
{
|
|
139
|
+
name: "release-boundary.md",
|
|
140
|
+
content: frameworkReleaseBoundaryContent,
|
|
141
|
+
},
|
|
142
|
+
];
|
|
67
143
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/markdown/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;GAEG;AACH,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAW,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAEtE,oDAAoD;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAChC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;AAE1C,gCAAgC;AAChC,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAE/D,2DAA2D;AAC3D,MAAM,CAAC,MAAM,wBAAwB,GACnC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAErC,gFAAgF;AAChF,0DAA0D;AAC1D,wEAAwE;AACxE,gFAAgF;AAEhF,uCAAuC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAW,iBAAiB,CAC1D,2BAA2B,CAC5B,CAAC;AACF,MAAM,CAAC,MAAM,gCAAgC,GAAW,iBAAiB,CACvE,yCAAyC,CAC1C,CAAC;AACF,MAAM,CAAC,MAAM,gCAAgC,GAAW,iBAAiB,CACvE,yCAAyC,CAC1C,CAAC;AACF,MAAM,CAAC,MAAM,+BAA+B,GAAW,iBAAiB,CACtE,wCAAwC,CACzC,CAAC;AACF,MAAM,CAAC,MAAM,+BAA+B,GAAW,iBAAiB,CACtE,wCAAwC,CACzC,CAAC;AACF,MAAM,CAAC,MAAM,2BAA2B,GAAW,iBAAiB,CAClE,oCAAoC,CACrC,CAAC;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAW,iBAAiB,CAC3D,4BAA4B,CAC7B,CAAC;AACF,MAAM,CAAC,MAAM,iCAAiC,GAAW,iBAAiB,CACxE,0CAA0C,CAC3C,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAW,iBAAiB,CAChE,kCAAkC,CACnC,CAAC;AACF,MAAM,CAAC,MAAM,6BAA6B,GAAW,iBAAiB,CACpE,sCAAsC,CACvC,CAAC;AACF,MAAM,CAAC,MAAM,kCAAkC,GAAW,iBAAiB,CACzE,2CAA2C,CAC5C,CAAC;AACF,MAAM,CAAC,MAAM,gCAAgC,GAAW,iBAAiB,CACvE,yCAAyC,CAC1C,CAAC;AACF,MAAM,CAAC,MAAM,8BAA8B,GAAW,iBAAiB,CACrE,uCAAuC,CACxC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/markdown/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ Run each query in a live Cursor session. Append one JSON object per line to `run
|
|
|
18
18
|
|
|
19
19
|
- `query_id`, `platform`: `"cursor"`
|
|
20
20
|
- `tools_called`, `plan_block_in_prompt`, `semantic_in_plan`
|
|
21
|
-
- Classify with `common/retrieval_tool_classification.py` (see
|
|
21
|
+
- Classify with `common/retrieval_tool_classification.py` (see `.cstl/framework/cursor-semantic-compliance.md`)
|
|
22
22
|
|
|
23
23
|
## Report
|
|
24
24
|
|
|
@@ -22,28 +22,14 @@ These guides help you **ask the right questions before coding**.
|
|
|
22
22
|
| Guide | Purpose | When to Use |
|
|
23
23
|
|-------|---------|-------------|
|
|
24
24
|
| [Durable Learning Decision Guide](./durable-learning-decision-guide.md) | Choose no-learning vs spec update vs learning artifact before archive | Finishing a task, parent review, or after `/cstl:break-loop` |
|
|
25
|
-
| [Verification Strength Guide](./verification-strength-guide.md) | Graded verify depth (Lite/Full/Parent × verification_profile); false-green probes; **not** TDD | Phase 3.1, writing `verify.md`, choosing check depth, archive prep |
|
|
26
25
|
| [Debug Loop Guide](./debug-loop-guide.md) | Debug discipline: tight red-capable feedback loop before hypotheses; six phases; `[DEBUG-xxx]` tags; Redact; PS7 HITL | User reports a hard bug / performance regression; diagnosis in progress (before `cstl-break-loop`) |
|
|
27
26
|
| [Test Discipline Guide](./test-discipline-guide.md) | 测试写作纪律:pre-agreed seams、垂直切片、三反模式、mock 边界;**不是 TDD 要求** | Writing or reviewing tests; planning what to test; choosing mock boundaries |
|
|
28
|
-
| [Prototype Guide](./prototype-guide.md) | 原型纪律:一次性代码回答设计问题;问题决定形态;LOGIC/Python 默认、UI
|
|
29
|
-
| [Injection Budget Guide](./injection-budget-guide.md) | Per-channel caps, jsonl manifest limits, Layer 2 defaults; matrix-aligned | Adding alwaysApply rules, curating jsonl, subagent dispatch |
|
|
27
|
+
| [Prototype Guide](./prototype-guide.md) | 原型纪律:一次性代码回答设计问题;问题决定形态;LOGIC/Python 默认、UI 原型按项目约定;折叠重写不 mv、留证 + 清理 | A design question needs a runnable throwaway answer (mechanism / state model / algorithm); folding a verdict into design or real code |
|
|
30
28
|
| [Code Reuse Thinking Guide](./code-reuse-thinking-guide.md) | Identify patterns and reduce duplication | When you notice repeated patterns |
|
|
31
29
|
| [Cross-Layer Thinking Guide](./cross-layer-thinking-guide.md) | Think through data flow across layers | Features spanning multiple layers |
|
|
32
|
-
| [
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
| [Execution strategy](./execution-strategy.md) | `suggest-execution-strategy`, rules JSON, inline vs worker vs child-task | Writing `implement.md` contract, Phase 2 dispatch |
|
|
36
|
-
| [Cursor context injection guide](./cursor-context-injection-guide.md) | Which Cursor channels reach the model (sessionStart bug, .cursor/rules, AGENTS.md) | "Agent ignored instructions" on Cursor, adding always-visible rules |
|
|
37
|
-
| [Cursor native modes guide](./cursor-native-modes-guide.md) | Prefer Plan / Ask / Debug / Agent / Multitask × Trellis phases & artifacts | P1 mode routing, Parent/Multitask, Ask↔No Task, Plan↔Phase 1, Debug evidence |
|
|
38
|
-
| [Artifact locale guide](./artifact-locale-guide.md) | Human-reviewed PRD/design/implement/verify/handoff language (zh \| en) | `task.py create`, planning skills, session context; not full CLI i18n |
|
|
39
|
-
| [cursor-trellis release & coexistence](./cursor-trellis-release-coexistence-guide.md) | npm publish runbook, `cstl-v*` tags, upstream Trellis coexistence | Releasing cstl, scenario 2 init, migrate gate, uninstall AGENTS strip |
|
|
40
|
-
| [Goal release regression runbook](./goal-release-regression-runbook.md) | Goal npm 发布前回归闸:mock/live 命令、契约路径、SDK timeout 残余风险 | Root npm 闸、Parent integrate 前 Goal 自检、hardening 后发布 |
|
|
41
|
-
|
|
42
|
-
### When using `/cstl-goal` (optional long-horizon mode)
|
|
43
|
-
|
|
44
|
-
- [ ] User explicitly invoked `/cstl-goal` — default cstl spine unchanged otherwise
|
|
45
|
-
- [ ] Read [cstl-goal Contract](../Trellis/framework/cstl-goal-contract.md) §1 preflight + §3 hard deny before G1 self-drive
|
|
46
|
-
- [ ] High-risk actions: pack per [Action Packet](../Trellis/framework/cstl-goal-action-packet.md) → reviewer seam; no bare execute
|
|
30
|
+
| [Cross-Platform Thinking Guide](./cross-platform-thinking-guide.md) | Catch OS / filesystem assumptions (paths, shells, line endings, command availability) before they become bugs | Code that may run on Windows / macOS / Linux; paths or shell commands in scripts, hooks, or docs |
|
|
31
|
+
|
|
32
|
+
> **Framework & platform docs live in `.cstl/framework/`** (framework-owned, refreshed by `cstl update`) — verification strength, injection budget, retrieval routing, Cursor modes/agents/injection, PRD Grill, execution strategy, artifact locale, and more. See [`.cstl/framework/index.md`](../../framework/index.md).
|
|
47
33
|
|
|
48
34
|
---
|
|
49
35
|
|
|
@@ -110,7 +96,7 @@ These guides help you **ask the right questions before coding**.
|
|
|
110
96
|
- [ ] 结论要写回 design / prd / 真实代码,但想先跑起来看证据
|
|
111
97
|
- [ ] 准备写一次性脚本回答「如果……会怎样」
|
|
112
98
|
|
|
113
|
-
→ Read [Prototype Guide](./prototype-guide.md) (LOGIC/Python default; UI
|
|
99
|
+
→ Read [Prototype Guide](./prototype-guide.md) (LOGIC/Python default; UI prototypes only by project convention; fold+evidence+cleanup)
|
|
114
100
|
|
|
115
101
|
---
|
|
116
102
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Prototype Guide(原型纪律)
|
|
2
2
|
|
|
3
|
-
> **Purpose**: 用一次性代码回答**设计问题**——先写清问题,再由问题决定原型形态;答案折叠进真实代码(**重写不 mv
|
|
3
|
+
> **Purpose**: 用一次性代码回答**设计问题**——先写清问题,再由问题决定原型形态;答案折叠进真实代码(**重写不 mv**),原型留证后清理,不留工作区腐烂。默认形态 **LOGIC / Python 单脚本**;若项目有 UI 面,UI 原型按项目约定执行(见 §5 / §6)。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
- **不接真实 DB / 服务**:原型依赖一律假数据 / 内存 / 显式标记的临时本地文件。
|
|
20
20
|
- **不直接升生产**:原型的代码路径不是生产代码的捷径;折叠时**重写**,不 `mv`。
|
|
21
|
-
- **不做 UI
|
|
21
|
+
- **不做 UI(默认)**:默认形态是 LOGIC / Python 单脚本;除非项目明确有 UI 面且约定 UI 原型(见 §6)。
|
|
22
22
|
- **不替代测试 / 调试 / 需求发现**:见 §12 边界(单向链)。
|
|
23
23
|
|
|
24
24
|
## 3. Hard rules
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
|
|
38
38
|
回答不了这个问题,就说明原型还没开始对。
|
|
39
39
|
|
|
40
|
-
## 5. Shape: LOGIC(Python)— default
|
|
40
|
+
## 5. Shape: LOGIC(Python)— default
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
默认形态 **LOGIC / Python 单脚本**(可替代单 HTML 默认;项目无 UI 面时即此形态):
|
|
43
43
|
|
|
44
44
|
- **单个可运行脚本**,路径二选一:
|
|
45
45
|
- `.tmp/prototypes/<slug>/run.py`(工作区 scratch;**惰性创建,不预建空目录**)
|
|
@@ -50,9 +50,9 @@
|
|
|
50
50
|
- **运行**:`python run.py` 即得可观察输出,无额外步骤。
|
|
51
51
|
- 最小骨架示例见 §13。
|
|
52
52
|
|
|
53
|
-
## 6. Shape: UI —
|
|
53
|
+
## 6. Shape: UI — opt-in by project convention
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
默认**不做 UI 原型**(LOGIC / Python 单脚本优先)。仅当项目明确有 UI 面且已有 UI 原型约定时,才按项目约定写 UI 脚手架 / UI 变体原型;否则**不写 UI 脚手架**、不做 UI 变体原型、不引入 UI 分支。若不确定项目是否需要 UI 原型,先问,不默认开写。
|
|
56
56
|
|
|
57
57
|
## 7. Visibility of state
|
|
58
58
|
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
|
|
76
76
|
| 层 | 手段 | 适用 |
|
|
77
77
|
| --- | --- | --- |
|
|
78
|
-
| A | git **throwaway 分支**提交(如 `proto/<slug>`,离开 main),留上下文指针 | git
|
|
79
|
-
| B | **路径快照**:复制到 `.cstl/tasks/<task>/research/prototype-<slug>.py`(或任务目录等价位置),并在 handoff.md / verify.md 记录路径 | **非 git
|
|
78
|
+
| A | git **throwaway 分支**提交(如 `proto/<slug>`,离开 main),留上下文指针 | git 仓库 |
|
|
79
|
+
| B | **路径快照**:复制到 `.cstl/tasks/<task>/research/prototype-<slug>.py`(或任务目录等价位置),并在 handoff.md / verify.md 记录路径 | **非 git 仓库的默认手段** |
|
|
80
80
|
|
|
81
81
|
- 工作位置本身是任务 `research/prototype-<slug>.py` 时,即工作即留证,无需再复制。
|
|
82
82
|
- A / B 可并用。
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
| 过早泛化 | 加参数 / 抽象 / 配置,问题还没回答完 | 回到最小:只够回答问题 |
|
|
95
95
|
| 接生产依赖 | 连真实 DB / 服务 / 凭据 | 假数据 / 内存 / 显式临时文件 |
|
|
96
96
|
| 当长期分支养 | 原型分支 / 目录持续叠加功能、迟迟不折叠 | 答案到手即折叠 + 清理 |
|
|
97
|
-
| 在本项目启用 UI 分支 | 写 UI 脚手架 / UI 变体原型 |
|
|
97
|
+
| 在本项目启用 UI 分支 | 写 UI 脚手架 / UI 变体原型 | 默认不做 UI 原型;项目有 UI 约定时按 §6 执行 |
|
|
98
98
|
| `mv` 升生产 | 原型文件直接改名 / 移入真实路径 | 折叠时重写进真实 module |
|
|
99
99
|
| 答案不留证 | 跑完即删、结论没落任何地方 | §8 折叠 + §9 留证先行 |
|
|
100
100
|
|
|
@@ -130,7 +130,7 @@ if __name__ == "__main__":
|
|
|
130
130
|
## 14. Checklist
|
|
131
131
|
|
|
132
132
|
- [ ] §4 设计问题已写清(一句话,在文件头)
|
|
133
|
-
- [ ] 形态:LOGIC / Python 单脚本;UI
|
|
133
|
+
- [ ] 形态:LOGIC / Python 单脚本;UI 原型仅按项目约定(默认不做)
|
|
134
134
|
- [ ] 不接真实 DB / 服务;无持久化(或显式临时文件且会清理)
|
|
135
135
|
- [ ] 无测试、无泛化——可跑即可
|
|
136
136
|
- [ ] 状态可见:关键状态每次 action 后打印
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
- **不要求 red-before-green**。可以先写测试(test-first 是可选的节奏),也可以实现后补测试——纪律在两种时序下同样适用。
|
|
12
12
|
- **不强制 TDD 循环**。本 guide 不定义 red → green → refactor 流程;不设「每个函数必须单测」门槛。
|
|
13
|
-
- 与 [Verification Strength Guide](
|
|
13
|
+
- 与 [Verification Strength Guide](.cstl/framework/verification-strength-guide.md) 兼容:验证**强度**(任务 closeout 要验多深)≠ red-green 仪式;本 guide 管的是「测试怎么写才值得保留」。
|
|
14
14
|
|
|
15
15
|
> 一句话:**先确认测点(seam),再写测试;测试验公共行为,不验实现。**
|
|
16
16
|
|