@blxzer/cursor-trellis 0.4.2 → 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.
Files changed (315) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +23 -14
  3. package/README.zh-CN.md +14 -10
  4. package/bin/smart-search.js +10 -2
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +36 -15
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/commands/init.d.ts +1 -1
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +42 -153
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/migrate.d.ts +10 -0
  13. package/dist/commands/migrate.d.ts.map +1 -0
  14. package/dist/commands/migrate.js +38 -0
  15. package/dist/commands/migrate.js.map +1 -0
  16. package/dist/commands/update.d.ts +5 -0
  17. package/dist/commands/update.d.ts.map +1 -1
  18. package/dist/commands/update.js +137 -40
  19. package/dist/commands/update.js.map +1 -1
  20. package/dist/configurators/cursor.d.ts +2 -1
  21. package/dist/configurators/cursor.d.ts.map +1 -1
  22. package/dist/configurators/cursor.js +4 -2
  23. package/dist/configurators/cursor.js.map +1 -1
  24. package/dist/configurators/index.js +4 -4
  25. package/dist/configurators/index.js.map +1 -1
  26. package/dist/configurators/shared.d.ts +8 -0
  27. package/dist/configurators/shared.d.ts.map +1 -1
  28. package/dist/configurators/shared.js +27 -1
  29. package/dist/configurators/shared.js.map +1 -1
  30. package/dist/configurators/workflow.d.ts +0 -9
  31. package/dist/configurators/workflow.d.ts.map +1 -1
  32. package/dist/configurators/workflow.js +2 -4
  33. package/dist/configurators/workflow.js.map +1 -1
  34. package/dist/constants/paths.d.ts +9 -0
  35. package/dist/constants/paths.d.ts.map +1 -1
  36. package/dist/constants/paths.js +13 -0
  37. package/dist/constants/paths.js.map +1 -1
  38. package/dist/migrations/manifests/0.3.0.json +1 -1
  39. package/dist/templates/common/bundled-skills/cstl-meta/references/platform-files/skills-and-commands.md +2 -4
  40. package/dist/templates/common/bundled-skills/cstl-skill-creator/SKILL.md +10 -7
  41. package/dist/templates/common/bundled-skills/cstl-skill-creator/references/authoring-rules.md +93 -19
  42. package/dist/templates/common/bundled-skills/cstl-skill-creator/references/general-authoring.md +189 -0
  43. package/dist/templates/common/bundled-skills/cstl-skill-creator/references/review-checklist.md +10 -5
  44. package/dist/templates/common/commands/continue.md +5 -4
  45. package/dist/templates/common/index.d.ts +20 -0
  46. package/dist/templates/common/index.d.ts.map +1 -1
  47. package/dist/templates/common/index.js +21 -2
  48. package/dist/templates/common/index.js.map +1 -1
  49. package/dist/templates/common/optional-skills/chrome-cdp/SKILL.md +179 -0
  50. package/dist/templates/common/optional-skills/chrome-cdp/examples/fetch-hook-api-capture.md +149 -0
  51. package/dist/templates/common/optional-skills/chrome-cdp/scripts/cdp.mjs +903 -0
  52. package/dist/templates/cursor/agents/cstl-research.md +1 -1
  53. package/dist/templates/cursor/fixtures/expected-rules.d.ts +1 -1
  54. package/dist/templates/cursor/fixtures/expected-rules.d.ts.map +1 -1
  55. package/dist/templates/cursor/fixtures/expected-rules.js +7 -24
  56. package/dist/templates/cursor/fixtures/expected-rules.js.map +1 -1
  57. package/dist/templates/cursor/hooks.json +4 -0
  58. package/dist/templates/cursor/index.d.ts +1 -1
  59. package/dist/templates/cursor/index.js +1 -1
  60. package/dist/templates/cursor/rules/cstl-bootstrap.mdc +17 -0
  61. package/dist/templates/markdown/agents.md +15 -10
  62. package/dist/templates/markdown/framework/cursor-native-modes-guide.md.txt +12 -9
  63. package/dist/templates/markdown/framework/cursor-subagent-policy.md.txt +62 -126
  64. package/dist/templates/markdown/framework/dogfood-only-surfaces.md.txt +4 -6
  65. package/dist/templates/markdown/framework/execution-strategy.md.txt +2 -0
  66. package/dist/templates/markdown/framework/index.md.txt +4 -0
  67. package/dist/templates/markdown/framework/internal-skills-cursor-reachability.md.txt +4 -3
  68. package/dist/templates/markdown/framework/middleware-protocol.md.txt +83 -0
  69. package/dist/templates/markdown/framework/parallel-first-execution.md.txt +78 -0
  70. package/dist/templates/markdown/framework/release-boundary.md.txt +30 -0
  71. package/dist/templates/markdown/framework/retrieval-daily-guide.md.txt +1 -1
  72. package/dist/templates/markdown/framework/upgrade.md.txt +15 -0
  73. package/dist/templates/markdown/index.d.ts +4 -0
  74. package/dist/templates/markdown/index.d.ts.map +1 -1
  75. package/dist/templates/markdown/index.js +17 -0
  76. package/dist/templates/markdown/index.js.map +1 -1
  77. package/dist/templates/markdown/spec/guides/index.md.txt +0 -6
  78. package/dist/templates/shared-hooks/event-bridge.py +60 -0
  79. package/dist/templates/shared-hooks/index.d.ts +1 -1
  80. package/dist/templates/shared-hooks/index.d.ts.map +1 -1
  81. package/dist/templates/shared-hooks/index.js +1 -0
  82. package/dist/templates/shared-hooks/index.js.map +1 -1
  83. package/dist/templates/shared-hooks/session-start.py +18 -1
  84. package/dist/templates/trellis/CONTEXT.md +63 -3
  85. package/dist/templates/trellis/gitignore.txt +39 -39
  86. package/dist/templates/trellis/index.d.ts +12 -0
  87. package/dist/templates/trellis/index.d.ts.map +1 -1
  88. package/dist/templates/trellis/index.js +73 -15
  89. package/dist/templates/trellis/index.js.map +1 -1
  90. package/dist/templates/trellis/pool/README.md +12 -3
  91. package/dist/templates/trellis/pool/plan.md +24 -5
  92. package/dist/templates/trellis/scripts/common/adapter_middleware.py +158 -0
  93. package/dist/templates/trellis/scripts/common/artifact_locale.py +12 -3
  94. package/dist/templates/trellis/scripts/common/cursor_retrieval_env.py +5 -2
  95. package/dist/templates/trellis/scripts/common/full_quality.py +237 -0
  96. package/dist/templates/trellis/scripts/common/git.py +6 -0
  97. package/dist/templates/trellis/scripts/common/git_context.py +17 -5
  98. package/dist/templates/trellis/scripts/common/kernel_command.py +367 -0
  99. package/dist/templates/trellis/scripts/common/lite_context.py +280 -0
  100. package/dist/templates/trellis/scripts/common/ondemand_topology.py +225 -0
  101. package/dist/templates/trellis/scripts/common/parent_orchestration.py +1 -1
  102. package/dist/templates/trellis/scripts/common/pool_store.py +16 -4
  103. package/dist/templates/trellis/scripts/common/retrieval_agent_instructions.py +2 -2
  104. package/dist/templates/trellis/scripts/common/session_context.py +28 -2
  105. package/dist/templates/trellis/scripts/common/task_gates.py +73 -12
  106. package/dist/templates/trellis/scripts/common/task_map.py +42 -9
  107. package/dist/templates/trellis/scripts/common/task_store.py +286 -56
  108. package/dist/templates/trellis/scripts/common/test_adapter_middleware.py +56 -0
  109. package/dist/templates/trellis/scripts/common/test_depends_mode_block.py +9 -0
  110. package/dist/templates/trellis/scripts/common/test_full_quality.py +197 -0
  111. package/dist/templates/trellis/scripts/common/test_kernel_command.py +326 -0
  112. package/dist/templates/trellis/scripts/common/test_lite_path.py +190 -0
  113. package/dist/templates/trellis/scripts/common/test_ondemand_topology.py +122 -0
  114. package/dist/templates/trellis/scripts/common/test_pool_store.py +17 -0
  115. package/dist/templates/trellis/scripts/common/test_task_store_kernel_patch.py +163 -0
  116. package/dist/templates/trellis/scripts/common/workflow_phase.py +3 -0
  117. package/dist/templates/trellis/scripts/get_context.py +1 -0
  118. package/dist/templates/trellis/scripts/pool.py +5 -0
  119. package/dist/templates/trellis/scripts/task.py +83 -7
  120. package/dist/templates/trellis/workflow.md +100 -18
  121. package/dist/utils/cursor-retrieval-env.d.ts +2 -1
  122. package/dist/utils/cursor-retrieval-env.d.ts.map +1 -1
  123. package/dist/utils/cursor-retrieval-env.js +3 -2
  124. package/dist/utils/cursor-retrieval-env.js.map +1 -1
  125. package/dist/utils/cursor2plus-residue-cleanup.d.ts +38 -0
  126. package/dist/utils/cursor2plus-residue-cleanup.d.ts.map +1 -0
  127. package/dist/utils/cursor2plus-residue-cleanup.js +145 -0
  128. package/dist/utils/cursor2plus-residue-cleanup.js.map +1 -0
  129. package/dist/utils/manifest-prune.d.ts.map +1 -1
  130. package/dist/utils/manifest-prune.js +7 -2
  131. package/dist/utils/manifest-prune.js.map +1 -1
  132. package/dist/utils/p36-upgrade.d.ts +62 -0
  133. package/dist/utils/p36-upgrade.d.ts.map +1 -0
  134. package/dist/utils/p36-upgrade.js +160 -0
  135. package/dist/utils/p36-upgrade.js.map +1 -0
  136. package/dist/utils/project-capabilities.d.ts +1 -12
  137. package/dist/utils/project-capabilities.d.ts.map +1 -1
  138. package/dist/utils/project-capabilities.js +3 -100
  139. package/dist/utils/project-capabilities.js.map +1 -1
  140. package/dist/utils/readiness.d.ts +10 -0
  141. package/dist/utils/readiness.d.ts.map +1 -1
  142. package/dist/utils/readiness.js +58 -26
  143. package/dist/utils/readiness.js.map +1 -1
  144. package/dist/utils/retrieval-agent-instructions.js +1 -1
  145. package/dist/utils/retrieval-agent-instructions.js.map +1 -1
  146. package/dist/utils/template-hash.d.ts.map +1 -1
  147. package/dist/utils/template-hash.js +11 -1
  148. package/dist/utils/template-hash.js.map +1 -1
  149. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
  150. package/dist/utils/uninstall-scrubbers.js +52 -14
  151. package/dist/utils/uninstall-scrubbers.js.map +1 -1
  152. package/dist/utils/update-rollout-report.d.ts +14 -0
  153. package/dist/utils/update-rollout-report.d.ts.map +1 -1
  154. package/dist/utils/update-rollout-report.js +1 -0
  155. package/dist/utils/update-rollout-report.js.map +1 -1
  156. package/dist/utils/workflow-ownership.d.ts +1 -1
  157. package/dist/utils/workflow-ownership.js +4 -4
  158. package/dist/utils/workflow-ownership.js.map +1 -1
  159. package/package.json +5 -4
  160. package/scripts/postinstall.js +6 -7
  161. package/dist/commands/campaign/canvas-render.d.ts +0 -68
  162. package/dist/commands/campaign/canvas-render.d.ts.map +0 -1
  163. package/dist/commands/campaign/canvas-render.js +0 -414
  164. package/dist/commands/campaign/canvas-render.js.map +0 -1
  165. package/dist/commands/campaign/compose.d.ts +0 -15
  166. package/dist/commands/campaign/compose.d.ts.map +0 -1
  167. package/dist/commands/campaign/compose.js +0 -110
  168. package/dist/commands/campaign/compose.js.map +0 -1
  169. package/dist/commands/campaign/index.d.ts +0 -13
  170. package/dist/commands/campaign/index.d.ts.map +0 -1
  171. package/dist/commands/campaign/index.js +0 -134
  172. package/dist/commands/campaign/index.js.map +0 -1
  173. package/dist/commands/campaign/kind-map.d.ts +0 -6
  174. package/dist/commands/campaign/kind-map.d.ts.map +0 -1
  175. package/dist/commands/campaign/kind-map.js +0 -21
  176. package/dist/commands/campaign/kind-map.js.map +0 -1
  177. package/dist/commands/campaign/mcp-server.d.ts +0 -6
  178. package/dist/commands/campaign/mcp-server.d.ts.map +0 -1
  179. package/dist/commands/campaign/mcp-server.js +0 -167
  180. package/dist/commands/campaign/mcp-server.js.map +0 -1
  181. package/dist/commands/campaign/render.d.ts +0 -5
  182. package/dist/commands/campaign/render.d.ts.map +0 -1
  183. package/dist/commands/campaign/render.js +0 -103
  184. package/dist/commands/campaign/render.js.map +0 -1
  185. package/dist/commands/campaign/trellis-load.d.ts +0 -13
  186. package/dist/commands/campaign/trellis-load.d.ts.map +0 -1
  187. package/dist/commands/campaign/trellis-load.js +0 -122
  188. package/dist/commands/campaign/trellis-load.js.map +0 -1
  189. package/dist/commands/campaign/types.d.ts +0 -61
  190. package/dist/commands/campaign/types.d.ts.map +0 -1
  191. package/dist/commands/campaign/types.js +0 -3
  192. package/dist/commands/campaign/types.js.map +0 -1
  193. package/dist/commands/goal/index.d.ts +0 -3
  194. package/dist/commands/goal/index.d.ts.map +0 -1
  195. package/dist/commands/goal/index.js +0 -159
  196. package/dist/commands/goal/index.js.map +0 -1
  197. package/dist/commands/goal/review.d.ts +0 -6
  198. package/dist/commands/goal/review.d.ts.map +0 -1
  199. package/dist/commands/goal/review.js +0 -28
  200. package/dist/commands/goal/review.js.map +0 -1
  201. package/dist/commands/rpc/client.d.ts +0 -51
  202. package/dist/commands/rpc/client.d.ts.map +0 -1
  203. package/dist/commands/rpc/client.js +0 -147
  204. package/dist/commands/rpc/client.js.map +0 -1
  205. package/dist/commands/rpc/index.d.ts +0 -10
  206. package/dist/commands/rpc/index.d.ts.map +0 -1
  207. package/dist/commands/rpc/index.js +0 -157
  208. package/dist/commands/rpc/index.js.map +0 -1
  209. package/dist/commands/rpc/serve.d.ts +0 -23
  210. package/dist/commands/rpc/serve.d.ts.map +0 -1
  211. package/dist/commands/rpc/serve.js +0 -60
  212. package/dist/commands/rpc/serve.js.map +0 -1
  213. package/dist/commands/rpc/smoke.d.ts +0 -16
  214. package/dist/commands/rpc/smoke.d.ts.map +0 -1
  215. package/dist/commands/rpc/smoke.js +0 -92
  216. package/dist/commands/rpc/smoke.js.map +0 -1
  217. package/dist/commands/sdk/index.d.ts +0 -9
  218. package/dist/commands/sdk/index.d.ts.map +0 -1
  219. package/dist/commands/sdk/index.js +0 -58
  220. package/dist/commands/sdk/index.js.map +0 -1
  221. package/dist/commands/sdk/run.d.ts +0 -42
  222. package/dist/commands/sdk/run.d.ts.map +0 -1
  223. package/dist/commands/sdk/run.js +0 -220
  224. package/dist/commands/sdk/run.js.map +0 -1
  225. package/dist/commands/sdk/status.d.ts +0 -14
  226. package/dist/commands/sdk/status.d.ts.map +0 -1
  227. package/dist/commands/sdk/status.js +0 -69
  228. package/dist/commands/sdk/status.js.map +0 -1
  229. package/dist/configurators/cursor2plus-local.d.ts +0 -6
  230. package/dist/configurators/cursor2plus-local.d.ts.map +0 -1
  231. package/dist/configurators/cursor2plus-local.js +0 -21
  232. package/dist/configurators/cursor2plus-local.js.map +0 -1
  233. package/dist/goal/action-packet.d.ts +0 -89
  234. package/dist/goal/action-packet.d.ts.map +0 -1
  235. package/dist/goal/action-packet.js +0 -113
  236. package/dist/goal/action-packet.js.map +0 -1
  237. package/dist/goal/audit.d.ts +0 -14
  238. package/dist/goal/audit.d.ts.map +0 -1
  239. package/dist/goal/audit.js +0 -12
  240. package/dist/goal/audit.js.map +0 -1
  241. package/dist/goal/constants.d.ts +0 -26
  242. package/dist/goal/constants.d.ts.map +0 -1
  243. package/dist/goal/constants.js +0 -24
  244. package/dist/goal/constants.js.map +0 -1
  245. package/dist/goal/paths.d.ts +0 -8
  246. package/dist/goal/paths.d.ts.map +0 -1
  247. package/dist/goal/paths.js +0 -36
  248. package/dist/goal/paths.js.map +0 -1
  249. package/dist/goal/preflight.d.ts +0 -21
  250. package/dist/goal/preflight.d.ts.map +0 -1
  251. package/dist/goal/preflight.js +0 -97
  252. package/dist/goal/preflight.js.map +0 -1
  253. package/dist/goal/review-seam.d.ts +0 -44
  254. package/dist/goal/review-seam.d.ts.map +0 -1
  255. package/dist/goal/review-seam.js +0 -153
  256. package/dist/goal/review-seam.js.map +0 -1
  257. package/dist/goal/reviewer-rules.d.ts +0 -13
  258. package/dist/goal/reviewer-rules.d.ts.map +0 -1
  259. package/dist/goal/reviewer-rules.js +0 -153
  260. package/dist/goal/reviewer-rules.js.map +0 -1
  261. package/dist/goal/reviewer.d.ts +0 -9
  262. package/dist/goal/reviewer.d.ts.map +0 -1
  263. package/dist/goal/reviewer.js +0 -54
  264. package/dist/goal/reviewer.js.map +0 -1
  265. package/dist/goal/runtime.d.ts +0 -32
  266. package/dist/goal/runtime.d.ts.map +0 -1
  267. package/dist/goal/runtime.js +0 -242
  268. package/dist/goal/runtime.js.map +0 -1
  269. package/dist/goal/sdk-client.d.ts +0 -10
  270. package/dist/goal/sdk-client.d.ts.map +0 -1
  271. package/dist/goal/sdk-client.js +0 -34
  272. package/dist/goal/sdk-client.js.map +0 -1
  273. package/dist/goal/state.d.ts +0 -40
  274. package/dist/goal/state.d.ts.map +0 -1
  275. package/dist/goal/state.js +0 -37
  276. package/dist/goal/state.js.map +0 -1
  277. package/dist/goal/task-triggers.d.ts +0 -15
  278. package/dist/goal/task-triggers.d.ts.map +0 -1
  279. package/dist/goal/task-triggers.js +0 -23
  280. package/dist/goal/task-triggers.js.map +0 -1
  281. package/dist/goal/walls.d.ts +0 -12
  282. package/dist/goal/walls.d.ts.map +0 -1
  283. package/dist/goal/walls.js +0 -65
  284. package/dist/goal/walls.js.map +0 -1
  285. package/dist/goal/worker-prompt.d.ts +0 -13
  286. package/dist/goal/worker-prompt.d.ts.map +0 -1
  287. package/dist/goal/worker-prompt.js +0 -41
  288. package/dist/goal/worker-prompt.js.map +0 -1
  289. package/dist/goal/worker.d.ts +0 -42
  290. package/dist/goal/worker.d.ts.map +0 -1
  291. package/dist/goal/worker.js +0 -180
  292. package/dist/goal/worker.js.map +0 -1
  293. package/dist/templates/common/bundled-skills/cstl-cursor2plus-setup/SKILL.md +0 -63
  294. package/dist/templates/cursor/commands/cursor2plus-setup.md +0 -82
  295. package/dist/templates/cursor/rules/cstl-cursor-modes.mdc +0 -32
  296. package/dist/templates/cursor/rules/cstl-session-rename.mdc +0 -31
  297. package/dist/templates/cursor/rules/cstl-subagent-dispatch.mdc +0 -34
  298. package/dist/templates/cursor/rules/cstl-triage.mdc +0 -36
  299. package/dist/templates/cursor/rules/retrieval-routing.mdc +0 -78
  300. package/dist/templates/trellis/local/README.md +0 -85
  301. package/dist/templates/trellis/local/config.local.json.example +0 -6
  302. package/dist/templates/trellis/local/index.d.ts +0 -8
  303. package/dist/templates/trellis/local/index.d.ts.map +0 -1
  304. package/dist/templates/trellis/local/index.js +0 -15
  305. package/dist/templates/trellis/local/index.js.map +0 -1
  306. package/dist/templates/trellis/local/patch_wpelc8.py +0 -421
  307. package/dist/templates/trellis/local/smoke.py +0 -94
  308. package/dist/templates/trellis/local/subagent-models.json.example +0 -4
  309. package/dist/templates/trellis/local/trellis-task-models.json.example +0 -10
  310. package/dist/templates/trellis/local/trellis-task-models.json5.example +0 -45
  311. package/dist/templates/trellis/local/trellis_task_models_config.py +0 -200
  312. package/dist/utils/cursor-sdk-gate.d.ts +0 -10
  313. package/dist/utils/cursor-sdk-gate.d.ts.map +0 -1
  314. package/dist/utils/cursor-sdk-gate.js +0 -32
  315. package/dist/utils/cursor-sdk-gate.js.map +0 -1
@@ -11,21 +11,19 @@
11
11
 
12
12
  | Surface | Where it exists | Why dogfood-only | Decision |
13
13
  | --- | --- | --- | --- |
14
- | `goal_preflight.py` / `goal_run.py` / `goal_review_packet.py` / `goal_wall_smoke.py` | `.cstl/scripts/` in the harness | Portable-goal regression scripts for the maintainer runbook; not needed by consumers | **harness-only** (do not ship as default templates) |
15
- | `/cstl-goal` slash command + `cstl-goal-worker` / `cstl-goal-reviewer` agents | `.cursor/commands/`, `.cursor/agents/` in the harness | Long-horizon goal surface is an extension; the indexed entry point is the CLI `cstl goal` (see AGENTS.md Goal runtime) | **dogfood** — index shipped (P12), slash not shipped by default |
16
14
  | `.claude/skills/*` full suite | `.claude/skills/` in the harness | Cursor default install is **commands-only**; Claude skill files are for Claude platforms, not Cursor consumers | **non-Cursor** (not in Cursor default install) |
17
- | `.cstl/local/cursor2plus/`, `.cstl/local/*.json5` / `.json.example`, model overlay (e.g. `.cursor/agents/.trellis-model-overlay.local.md`) | `.cstl/local/` + `.cursor/agents/` in the harness | Local BYOK / model-routing patch layer; machine-specific, never force-installed | **local only** — opt-in (`cstl init --cursor2plus`) or manual |
18
- | Private review-pool items / plan narratives / goal-regression runbook habits | `.cstl/pool/items/`, `{TASK}/research/` in the harness | Personal or project-specific content; the pool **mechanism** ships, the items do not | **narrative not packaged** — mechanism ships, content stays local |
15
+ | `.cstl/local/cursor2plus/` residue (if present) | (retired) | Cursor++ local bundle retired **not** an optional live surface and **not** an install path; hash-safe cleanup on update | **retired residue** — do not patch; do not treat as optional |
16
+ | Private review-pool items / plan narratives | `.cstl/pool/items/`, `{TASK}/research/` in the harness | Personal or project-specific content; the pool **mechanism** ships, the items do not | **narrative not packaged** — mechanism ships, content stays local |
19
17
  | `.codegraph/`, `.worktrees/`, scratch/analysis files | Harness root | Per-machine index / tooling state | **local only** |
20
18
 
21
19
  ## If a capability seems missing in a consumer repo
22
20
 
23
21
  1. Check the [internal-skills-cursor-reachability.md](./internal-skills-cursor-reachability.md) matrix — the capability's load channel (guide / script / agent / CLI) should be present.
24
- 2. Check AGENTS.md `Invocation map (short)` — the intended entry point (CLI `cstl goal`, `/cstl-handoff`, etc.).
22
+ 2. Check AGENTS.md `Invocation map (short)` — the intended entry point (`/cstl-handoff`, etc.).
25
23
  3. If the entry point is a harness-only file from the table above, the capability is intentionally **not** shipped to consumers — do not backfill it by copying harness files.
26
24
 
27
25
  ## Related
28
26
 
29
27
  - [internal-skills-cursor-reachability.md](./internal-skills-cursor-reachability.md) — reachability of internal skill names.
30
28
  - [prd-grill-frontier.md](./prd-grill-frontier.md) — P11 grilling on-demand path.
31
- - AGENTS.md `Invocation map (short)` — Goal = CLI, not Parent/Child; session handoff = `/cstl-handoff`.
29
+ - AGENTS.md `Invocation map (short)` — session handoff = `/cstl-handoff`.
@@ -2,6 +2,8 @@
2
2
 
3
3
  > **Purpose**: Suggest a Development Strategy Contract before you freeze `implement.md`, and align Phase 2 dispatch with the approved contract.
4
4
 
5
+ This file answers **who** implements/checks and **where** files are edited. It is **not** a parallel scheduler. Parallel-first (default native parallel, serial needs `serial_reason`) lives in `workflow.md` and `cursor-native-modes-guide.md`; declaration fields in `parallel-first-execution.md`.
6
+
5
7
  ---
6
8
 
7
9
  ## Two orthogonal dimensions
@@ -14,6 +14,10 @@ Versioned framework and platform-adapter documentation. Project/team knowledge l
14
14
  | [cursor-subagent-policy.md](./cursor-subagent-policy.md) | When to spawn Trellis custom agents; model policy stays on the Cursor side |
15
15
  | [retrieval-daily-guide.md](./retrieval-daily-guide.md) | Daily retrieval tool routing (search vs retrieval-pack scoring; web-research gate) |
16
16
  | [cursor-native-modes-guide.md](./cursor-native-modes-guide.md) | Mapping Cursor Plan / Ask / Debug / Agent / Multitask onto Trellis phases |
17
+ | [parallel-first-execution.md](./parallel-first-execution.md) | Parallel-first **product** principle + execution contract: native parallel default, `serial_reason`, task-map fields |
18
+ | [middleware-protocol.md](./middleware-protocol.md) | Middleware Protocol v1: one ABI, overlay `.cstl/middleware/`, `update` never writes/deletes/hashes it |
19
+ | [upgrade.md](./upgrade.md) | Terminal-user upgrade half-page: install package → `cstl update` → confirm → keep working |
20
+ | [release-boundary.md](./release-boundary.md) | CSTL this-batch ship vs independent cstl-byok ship; BYOK is not a CSTL release gate |
17
21
  | [cursor-context-injection-guide.md](./cursor-context-injection-guide.md) | Which Cursor injection channels actually reach the model |
18
22
  | [cursor-semantic-compliance.md](./cursor-semantic-compliance.md) | Plan-vs-exec semantic compliance on Cursor |
19
23
  | [injection-budget-guide.md](./injection-budget-guide.md) | Context injection budget across reliable Cursor channels |
@@ -20,7 +20,7 @@
20
20
  | `cstl-check` | `bundled-skills/cstl-check/SKILL.md` | **Agent form `.cursor/agents/cstl-check.md`** (Task tool, dual-axis) — prefer Agent when `execution_mode: worker` | no | yes |
21
21
  | `cstl-meta` | `bundled-skills/cstl-meta/SKILL.md` | Maintainer skill; body in npm package; no Cursor project file (not routed in consumer workflows) | no | yes |
22
22
  | `cstl-spec-bootstrap` | `bundled-skills/cstl-spec-bootstrap/SKILL.md` | One-shot scaffolding skill; body in npm package; not routed in steady-state consumer workflow | no | yes |
23
- | `cstl-skill-creator` | `bundled-skills/cstl-skill-creator/SKILL.md` | Authoring-time skill; body in npm package; not routed in consumer workflow | no | yes |
23
+ | `cstl-skill-creator` | `bundled-skills/cstl-skill-creator/SKILL.md` | **Authoring-time (mandatory for new / structural skill edits):** Read `cursor-trellis/packages/cli/src/templates/common/bundled-skills/cstl-skill-creator/SKILL.md` then `…/references/review-checklist.md`. Harness dogfood copy: `.claude/skills/cstl-skill-creator/SKILL.md` and `.claude/skills/cstl-skill-creator/references/review-checklist.md`. Installed npm: `dist/templates/common/bundled-skills/cstl-skill-creator/`. Not a slash command. Skip typo/link-only. Does **not** apply to Cursor product skills (`~/.cursor/skills-cursor/`). | no | yes |
24
24
  | `smart-search-cli` | `bundled-skills/smart-search-cli/SKILL.md` | **`python ./.cstl/scripts/run_smart_search.py "<question>" --intent deep-research --json`** (shipped script); Cursor web tools are downgrade-only fallback | no | yes |
25
25
  | `cstl-handoff` | `bundled-skills/cstl-handoff/SKILL.md` | **Slash `/cstl-handoff`** (writes session handoff to OS temp dir) | **yes** | n/a (user command) |
26
26
  | `cstl-continue` / `cstl-finish-work` / `cstl-start` | `common/commands/*.md` | **Slash `/cstl-continue`, `/cstl-finish-work`** (`cstl-start` filtered on agent-capable platforms) | **yes** | n/a (user commands) |
@@ -28,9 +28,10 @@
28
28
 
29
29
  ## Reading this matrix
30
30
 
31
- - **Reachable on-demand** (green path): brainstorm → guide; check → agent; smart-search → script; micro-grill → embedded contract.
31
+ - **Reachable on-demand** (green path): brainstorm → guide; check → agent; smart-search → script; micro-grill → embedded contract; **skill authoring → Read `cstl-skill-creator/SKILL.md` + `review-checklist.md`** (paths in the matrix row).
32
32
  - **Body in npm package only**: the skill is real and shipped, but a pure Cursor project has no project-relative copy. The workflow routes its **behavior** directly; the full body is discoverable under the installed package (`npm root -g` → `dist/templates/…`). Do not claim these are loaded without reading the actual body when the behavior matters.
33
- - **Maintainer/authoring-only** (`cstl-meta`, `cstl-spec-bootstrap`, `cstl-skill-creator`): named in AGENTS for framework completeness; not part of the consumer execution path. They stay on the list because they are real shipped skills, but no consumer-facing load path is promised beyond the package body.
33
+ - **Maintainer-only** (`cstl-meta`, `cstl-spec-bootstrap`): named in AGENTS for framework completeness; not part of the consumer execution path. No extra consumer load path beyond the package body.
34
+ - **Authoring-time mandatory** (`cstl-skill-creator`): not a consumer runtime path and not a slash command, but **must** be Read before creating or structurally changing Trellis / blaze-skills / harness skills. Cursor product skills are out of scope.
34
35
 
35
36
  ## Honesty rule
36
37
 
@@ -0,0 +1,83 @@
1
+ # Middleware Protocol v1
2
+
3
+ > 一种中间件。官方与用户同一契约,只靠 `source` 区分。字段名英文;正文跟 `artifact_locale`(当前 zh)。
4
+ >
5
+ > Overlay(已拍):项目 **`.cstl/middleware/`**。默认可进 git。`cstl init` / `cstl update` **永不写入、不删除、不纳入 `.template-hashes.json`**。Cursor++ 残渣清理是另一条 allow-list,不得误删本目录。
6
+
7
+ Capability router 只声明 `exact` / `semantic` / `structural` / `external`,不绑 Agent 工具名。
8
+
9
+ ## 双轨
10
+
11
+ | 轨 | CSTL 管什么 |
12
+ | --- | --- |
13
+ | 集成 | 本协议:Manifest + Profile + 健康 |
14
+ | Extra | 只在宿主里配 Agent / MCP,不写成中间件 → CSTL 不管 |
15
+
16
+ ## 义务
17
+
18
+ 1. **一种 ABI。** `source: shipped | user` 不是两套协议。
19
+ 2. **Update 不顶掉。** 用户 overlay 不进模板 hash / 官方 refresh 写集。同 id:用户赢,并报告。
20
+ 3. **Secret。** Manifest 只许引用(环境变量名 / 平台 Secret),不许写密钥原文。日志与 Artifact 同样禁止。
21
+ 4. **权限。** 新权限首次启用走一次 Resolution Approval。后续 `update` 不得扩大已批权限;要扩大再批一次。
22
+ 5. **校验。** 缺必填字段则拒绝接入并说明,不得半接入。
23
+ 6. **Hook。** 只订 Event Bridge 已有事件。未订阅模块不得让 hook 失败。
24
+ 7. **协议版本。** Manifest 可带 `protocol: 1`。不兼容升级必须在应用前被发现。
25
+
26
+ 本条不实现安装器、不做商店、不改全局 MCP。可选日后加 `cstl middleware add`,非发布阻塞。
27
+
28
+ ## 生命周期
29
+
30
+ 添加(放入 overlay 的 Manifest)→ 启用/停用(Profile `required` / `optional` / `unset`)→ 移除(用户删 overlay,CSTL 忘记)。
31
+
32
+ 停用 ≠ 删除文件。官方 shipped 可被用户停用,不得被 `update` 强行再打开。`update` 可刷新 shipped 声明,但不得删用户 overlay,也不得在用户停用后自动重装实现。
33
+
34
+ 同一 capability 多个 Provider:Profile 选一个 active;其余 standby。不得静默抢当前 active。
35
+
36
+ ## 传输类
37
+
38
+ `transport` 取其一:`skill+cli` | `mcp` | `skill` | `hook`。宿主里额外配置的,CSTL 不管。
39
+
40
+ ## 发现与健康
41
+
42
+ 发现方式:在 `.cstl/middleware/` 放 Manifest。缺必填字段则拒绝接入。
43
+
44
+ Status / Continue 在任务需要该 capability 时展示 `ready` / `missing` / `failed` / `degraded`。不把 Extra 轨的 MCP 列进健康表。
45
+
46
+ ## 第一波 shipped(不挡用户自添)
47
+
48
+ | Provider | Profile | 说明 |
49
+ | --- | --- | --- |
50
+ | smart-search | required `external-knowledge` | 独立包;缺失则 degrade |
51
+ | codegraph / fast-context | optional | 默认不装 |
52
+ | cstl-byok | 协议里占可选位 | **实现与发版延后**;本批发协议,不带 BYOK 安装 |
53
+ | Playwright / GitHub | 默认不集成 | — |
54
+
55
+ ## Manifest 样例
56
+
57
+ ```yaml
58
+ id: smart-search
59
+ protocol: 1
60
+ capability: external-knowledge
61
+ source: shipped # shipped | user
62
+ ownership:
63
+ kind: external-package
64
+ name: smart-search
65
+ transport: skill+cli # skill+cli | mcp | skill | hook
66
+ profile: required # required | optional | unset
67
+ readiness:
68
+ probe: cli
69
+ command_hint: smart-search doctor
70
+ on_missing: degrade # degrade | block-if-required
71
+ permissions:
72
+ network: true
73
+ shell: true
74
+ secrets: true
75
+ secret_refs: [] # 只写引用名,不写值
76
+ update_policy: preserve-user-overlay
77
+ ```
78
+
79
+ ## 相关
80
+
81
+ - [upgrade.md](./upgrade.md) — 终端用户升级半页
82
+ - [release-boundary.md](./release-boundary.md) — CSTL 本批 vs cstl-byok
83
+ - `.cstl/workflow.md` — 并行第一原则(约定,不是 CLI gate)
@@ -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,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** (Cursor++ BYOK) | Native: built-in semantic; BYOK: `fast_context_search` MCP (see `cursorEnv` in plans) |
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。
@@ -42,6 +42,10 @@ export declare const frameworkArtifactLocaleGuideContent: string;
42
42
  export declare const frameworkPrdGrillFrontierGuideContent: string;
43
43
  export declare const frameworkInternalSkillsReachabilityGuideContent: string;
44
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;
45
49
  /**
46
50
  * Single source of truth for `.cstl/framework/` docs.
47
51
  * Consumed by init (configurators/workflow.ts) and update (commands/update.ts)
@@ -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,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;AAE9D;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,EA+CA,CAAC"}
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"}
@@ -70,6 +70,10 @@ export const frameworkArtifactLocaleGuideContent = readLocalTemplate("framework/
70
70
  export const frameworkPrdGrillFrontierGuideContent = readLocalTemplate("framework/prd-grill-frontier.md.txt");
71
71
  export const frameworkInternalSkillsReachabilityGuideContent = readLocalTemplate("framework/internal-skills-cursor-reachability.md.txt");
72
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");
73
77
  /**
74
78
  * Single source of truth for `.cstl/framework/` docs.
75
79
  * Consumed by init (configurators/workflow.ts) and update (commands/update.ts)
@@ -122,5 +126,18 @@ export const frameworkDocs = [
122
126
  name: "dogfood-only-surfaces.md",
123
127
  content: frameworkDogfoodOnlySurfacesGuideContent,
124
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
+ },
125
142
  ];
126
143
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/markdown/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/markdown/index.ts"],"names":[],"mappings":"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"}
@@ -31,12 +31,6 @@ These guides help you **ask the right questions before coding**.
31
31
 
32
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).
33
33
 
34
- ### When using `/cstl-goal` (optional long-horizon mode)
35
-
36
- - [ ] User explicitly invoked `/cstl-goal` — default cstl spine unchanged otherwise
37
- - [ ] Read [cstl-goal Contract](../Trellis/framework/cstl-goal-contract.md) §1 preflight + §3 hard deny before G1 self-drive
38
- - [ ] High-risk actions: pack per [Action Packet](../Trellis/framework/cstl-goal-action-packet.md) → reviewer seam; no bare execute
39
-
40
34
  ---
41
35
 
42
36
  ## Quick Reference: Thinking Triggers
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """Thin Cursor Event Bridge hook.
4
+
5
+ Records one standard hook event. Unsubscribed modules must never fail the hook.
6
+ Does not write Kernel store primitives; optional Kernel patch is best-effort.
7
+ """
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ import json
12
+ import sys
13
+ from pathlib import Path
14
+
15
+
16
+ def _event_name(argv: list[str], hook_input: dict) -> str:
17
+ parser = argparse.ArgumentParser(add_help=False)
18
+ parser.add_argument("--event", default="")
19
+ args, _unknown = parser.parse_known_args(argv)
20
+ if args.event.strip():
21
+ return args.event.strip()
22
+ for key in ("hook_event_name", "event", "eventName"):
23
+ value = hook_input.get(key)
24
+ if isinstance(value, str) and value.strip():
25
+ return value.strip()
26
+ return "sessionStart"
27
+
28
+
29
+ def _safe_payload() -> dict:
30
+ raw = sys.stdin.read() if not sys.stdin.isatty() else ""
31
+ if not raw.strip():
32
+ return {}
33
+ try:
34
+ parsed = json.loads(raw)
35
+ except json.JSONDecodeError:
36
+ return {}
37
+ return parsed if isinstance(parsed, dict) else {}
38
+
39
+
40
+ def main() -> int:
41
+ # Fail-closed for the Agent session: never break the hook.
42
+ try:
43
+ hook_input = _safe_payload()
44
+ event = _event_name(sys.argv[1:], hook_input)
45
+ sys.path.insert(0, str(Path(__file__).resolve().parents[2] / ".cstl" / "scripts"))
46
+ try:
47
+ from common.adapter_middleware import dispatch_hook_event
48
+ except Exception:
49
+ print(json.dumps({"permission": "allow"}))
50
+ return 0
51
+ result = dispatch_hook_event({"subscriptions": []}, event, source="cursor-hooks")
52
+ _ = result
53
+ except Exception:
54
+ pass
55
+ print(json.dumps({"permission": "allow"}))
56
+ return 0
57
+
58
+
59
+ if __name__ == "__main__":
60
+ raise SystemExit(main())
@@ -11,7 +11,7 @@ export interface HookScript {
11
11
  /** Script content — no placeholders, ready to write directly */
12
12
  content: string;
13
13
  }
14
- export type SharedHookName = "session-start.py" | "inject-shell-session-context.py" | "rename-session-for-task.py" | "inject-retrieval-plan.py" | "inject-workflow-state.py" | "inject-subagent-context.py" | "research-end-retrieval-pack.py";
14
+ export type SharedHookName = "session-start.py" | "event-bridge.py" | "inject-shell-session-context.py" | "rename-session-for-task.py" | "inject-retrieval-plan.py" | "inject-workflow-state.py" | "inject-subagent-context.py" | "research-end-retrieval-pack.py";
15
15
  export type SharedHookPlatform = "claude" | "cursor" | "codex" | "gemini" | "qoder" | "copilot" | "codebuddy" | "droid" | "kiro";
16
16
  /**
17
17
  * Which shared hooks each platform actually invokes. Single source of truth
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/shared-hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,iCAAiC,GACjC,4BAA4B,GAC5B,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,gCAAgC,CAAC;AAErC,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,kBAAkB,EAClB,SAAS,cAAc,EAAE,CAiC1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,EAAE,CAWnD;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,kBAAkB,GAC3B,UAAU,EAAE,CAGd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/shared-hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,iBAAiB,GACjB,iCAAiC,GACjC,4BAA4B,GAC5B,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,gCAAgC,CAAC;AAErC,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,kBAAkB,EAClB,SAAS,cAAc,EAAE,CAkC1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,EAAE,CAWnD;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,kBAAkB,GAC3B,UAAU,EAAE,CAGd"}
@@ -44,6 +44,7 @@ export const SHARED_HOOKS_BY_PLATFORM = {
44
44
  ],
45
45
  cursor: [
46
46
  "session-start.py",
47
+ "event-bridge.py",
47
48
  "inject-shell-session-context.py",
48
49
  "rename-session-for-task.py",
49
50
  "inject-retrieval-plan.py",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/shared-hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,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,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AA6BD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAGjC;IACF,MAAM,EAAE;QACN,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,MAAM,EAAE;QACN,kBAAkB;QAClB,iCAAiC;QACjC,4BAA4B;QAC5B,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,KAAK,EAAE,CAAC,0BAA0B,CAAC;IACnC,MAAM,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxD,KAAK,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACvD,OAAO,EAAE,CAAC,0BAA0B,CAAC;IACrC,SAAS,EAAE;QACT,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,KAAK,EAAE;QACL,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,IAAI,EAAE,CAAC,4BAA4B,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAChC,IAAI,EAAE,CAAC;IAEV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAA4B;IAE5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,OAAO,oBAAoB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/shared-hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,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,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AA8BD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAGjC;IACF,MAAM,EAAE;QACN,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,MAAM,EAAE;QACN,kBAAkB;QAClB,iBAAiB;QACjB,iCAAiC;QACjC,4BAA4B;QAC5B,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,KAAK,EAAE,CAAC,0BAA0B,CAAC;IACnC,MAAM,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxD,KAAK,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACvD,OAAO,EAAE,CAAC,0BAA0B,CAAC;IACrC,SAAS,EAAE;QACT,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,KAAK,EAAE;QACL,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,IAAI,EAAE,CAAC,4BAA4B,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAChC,IAAI,EAAE,CAAC;IAEV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAA4B;IAE5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,OAAO,oBAAoB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -222,6 +222,23 @@ def _detect_platform(input_data: dict) -> str | None:
222
222
  return None
223
223
 
224
224
 
225
+ def _resolve_trellis_dir(project_dir: Path) -> Path:
226
+ """Resolve the cstl instance directory for this project.
227
+
228
+ Mirrors common/paths.py get_repo_root(): finds the nearest .cstl upward
229
+ from project_dir. Harness sub-repos without a local .cstl resolve to the
230
+ harness root instance (thin-connect, 2026-08-16 instance-boundary decision).
231
+ """
232
+ current = project_dir
233
+ while True:
234
+ if (current / ".cstl").is_dir():
235
+ return current / ".cstl"
236
+ if current.parent == current:
237
+ break
238
+ current = current.parent
239
+ return project_dir / ".cstl"
240
+
241
+
225
242
  def _resolve_context_key(trellis_dir: Path, input_data: dict) -> str | None:
226
243
  scripts_dir = trellis_dir / "scripts"
227
244
  if str(scripts_dir) not in sys.path:
@@ -791,7 +808,7 @@ def main():
791
808
  if project_dir is None:
792
809
  project_dir = Path(_normalize_windows_shell_path(hook_input.get("cwd", "."))).resolve()
793
810
 
794
- trellis_dir = project_dir / ".cstl"
811
+ trellis_dir = _resolve_trellis_dir(project_dir)
795
812
  context_key = _resolve_context_key(trellis_dir, hook_input)
796
813
  _persist_context_key_for_bash(context_key)
797
814
 
@@ -2,7 +2,35 @@
2
2
 
3
3
  Project domain glossary — the single source of truth for project-specific terms used in this repository. Read **on demand** when project terms matter (e.g. before planning questions, PRD writing, or check reviews); **never always-inject** — this file stays out of the automatic session prompt budget.
4
4
 
5
- Only project-specific concepts belong here; generic programming concepts and framework terms already documented under `.cstl/` do not need entries. Each entry: term + one-line definition + `_Avoid_` aliases when a common synonym causes confusion. Language follows `artifact_locale` (en → English only; zh → Chinese terms with English gloss).
5
+ Only project-specific concepts belong here; generic programming concepts already documented under `.cstl/` do not need entries. Each entry: term + one-line definition + `_Avoid_` aliases when a common synonym causes confusion. Language follows `artifact_locale` (en → English only; zh → Chinese terms with English gloss). Seed below is bilingual so either locale can start from the same file; delete entries that do not apply.
6
+
7
+ ## Governance domain seed
8
+
9
+ Optional starting set for the review-pool vocabulary — delete entries that do not apply:
10
+
11
+ **点子** (_idea_):
12
+ Undecided development direction or improvement; a candidate for the review pool.
13
+ _Avoid_: requirement, thought
14
+
15
+ **不足** (_debt_):
16
+ Confirmed but unresolved gap found in review or verification.
17
+ _Avoid_: issue, bug (unless it is a tracked defect elsewhere)
18
+
19
+ **审核池** (_review pool_):
20
+ Inbox for ideas and debt; states inbox / review / accepted / rejected / rework.
21
+ _Avoid_: backlog, idea dump
22
+
23
+ **开发计划** (_dev plan_):
24
+ Plan file: accepted item ids + order + blocking edges + fog. Cite pool ids only.
25
+ _Avoid_: roadmap
26
+
27
+ **可裁决条目** (_adjudicable item_):
28
+ Pool item with intent / motivation / coarse acceptance / non-goals.
29
+ _Avoid_: todo
30
+
31
+ **拒绝知识库** (_knowledge base_):
32
+ Archive of rejected-concept reasons, used to dedupe prior requests.
33
+ _Avoid_: blacklist
6
34
 
7
35
  ## Framework domain seed (optional)
8
36
 
@@ -18,7 +46,7 @@ _Avoid_: spec sheet
18
46
 
19
47
  **Gate** (_gate_):
20
48
  Mandatory checkpoint at planning / execution / archive boundaries.
21
- _Avoid_: —
49
+ _Avoid_: —
22
50
 
23
51
  **Evidence** (_evidence_):
24
52
  Verification evidence in `verify.md` (command output, paths, acceptance).
@@ -38,7 +66,39 @@ _Avoid_: locale
38
66
 
39
67
  **Task Ladder** (_task ladder_):
40
68
  Triage ladder: No Task / Micro-Grill / Lite / Full / Parent.
41
- _Avoid_: —
69
+ _Avoid_: —
70
+
71
+ ## Architecture (deep-module vocabulary)
72
+
73
+ Seed for codebase-design terms. Keep these seven; do not treat them as generic programming words.
74
+
75
+ **module** (_module_):
76
+ A unit of any size that has an interface and an implementation.
77
+ _Avoid_: component, service
78
+
79
+ **interface** (_interface_):
80
+ Every fact a caller needs in order to use the module correctly.
81
+ _Avoid_: API, signature
82
+
83
+ **depth** (_depth_):
84
+ Leverage on the interface: how much behavior each unit of interface can drive.
85
+ _Avoid_: abstraction level
86
+
87
+ **seam** (_seam_):
88
+ A place where behavior can change without editing the original site.
89
+ _Avoid_: boundary
90
+
91
+ **adapter** (_adapter_):
92
+ A concrete thing that satisfies an interface at a seam.
93
+ _Avoid_: implementation
94
+
95
+ **leverage** (_leverage_):
96
+ Capability the caller gains from depth.
97
+ _Avoid_: reuse
98
+
99
+ **locality** (_locality_):
100
+ Concentration the maintainer gains from depth (change / knowledge / verification in one place).
101
+ _Avoid_: cohesion
42
102
 
43
103
  ## Project glossary
44
104