opensquid 0.5.407 → 0.5.426

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 (154) hide show
  1. package/dist/cli.js +5 -4
  2. package/dist/cli.js.map +1 -1
  3. package/dist/functions/event.d.ts.map +1 -1
  4. package/dist/functions/event.js +30 -0
  5. package/dist/functions/event.js.map +1 -1
  6. package/dist/functions/handoff_session_start.d.ts.map +1 -1
  7. package/dist/functions/handoff_session_start.js +4 -6
  8. package/dist/functions/handoff_session_start.js.map +1 -1
  9. package/dist/functions/index.d.ts +4 -0
  10. package/dist/functions/index.d.ts.map +1 -1
  11. package/dist/functions/index.js +5 -0
  12. package/dist/functions/index.js.map +1 -1
  13. package/dist/functions/read_rubric.d.ts +27 -0
  14. package/dist/functions/read_rubric.d.ts.map +1 -0
  15. package/dist/functions/read_rubric.js +53 -0
  16. package/dist/functions/read_rubric.js.map +1 -0
  17. package/dist/functions/reset_scope_track_state.d.ts +20 -0
  18. package/dist/functions/reset_scope_track_state.d.ts.map +1 -0
  19. package/dist/functions/reset_scope_track_state.js +53 -0
  20. package/dist/functions/reset_scope_track_state.js.map +1 -0
  21. package/dist/functions/rubric_pre_inject.d.ts +22 -0
  22. package/dist/functions/rubric_pre_inject.d.ts.map +1 -0
  23. package/dist/functions/rubric_pre_inject.js +58 -0
  24. package/dist/functions/rubric_pre_inject.js.map +1 -0
  25. package/dist/functions/session_tool_history.d.ts +3 -3
  26. package/dist/functions/session_tool_history.js +1 -1
  27. package/dist/functions/session_tool_history.js.map +1 -1
  28. package/dist/functions/shell_parse.d.ts +41 -0
  29. package/dist/functions/shell_parse.d.ts.map +1 -0
  30. package/dist/functions/shell_parse.js +185 -0
  31. package/dist/functions/shell_parse.js.map +1 -0
  32. package/dist/functions/staged_docs_only.d.ts +23 -0
  33. package/dist/functions/staged_docs_only.d.ts.map +1 -0
  34. package/dist/functions/staged_docs_only.js +57 -0
  35. package/dist/functions/staged_docs_only.js.map +1 -0
  36. package/dist/mcp/server.js +14 -1
  37. package/dist/mcp/server.js.map +1 -1
  38. package/dist/mcp/tools/ralph.d.ts +21 -0
  39. package/dist/mcp/tools/ralph.d.ts.map +1 -0
  40. package/dist/mcp/tools/ralph.js +18 -0
  41. package/dist/mcp/tools/ralph.js.map +1 -0
  42. package/dist/mcp/tools/workgraph.d.ts +11 -0
  43. package/dist/mcp/tools/workgraph.d.ts.map +1 -1
  44. package/dist/mcp/tools/workgraph.js +7 -0
  45. package/dist/mcp/tools/workgraph.js.map +1 -1
  46. package/dist/rag/backend_factory.d.ts.map +1 -1
  47. package/dist/rag/backend_factory.js +4 -0
  48. package/dist/rag/backend_factory.js.map +1 -1
  49. package/dist/rag/backends/libsql_lexical.d.ts.map +1 -1
  50. package/dist/rag/backends/libsql_lexical.js +21 -5
  51. package/dist/rag/backends/libsql_lexical.js.map +1 -1
  52. package/dist/rag/backends/libsql_store.d.ts.map +1 -1
  53. package/dist/rag/backends/libsql_store.js +33 -6
  54. package/dist/rag/backends/libsql_store.js.map +1 -1
  55. package/dist/rag/backends/perfile_source.d.ts.map +1 -1
  56. package/dist/rag/backends/perfile_source.js +3 -0
  57. package/dist/rag/backends/perfile_source.js.map +1 -1
  58. package/dist/rag/memory/consolidate.d.ts +3 -2
  59. package/dist/rag/memory/consolidate.d.ts.map +1 -1
  60. package/dist/rag/memory/consolidate.js +7 -4
  61. package/dist/rag/memory/consolidate.js.map +1 -1
  62. package/dist/rag/types.d.ts +2 -0
  63. package/dist/rag/types.d.ts.map +1 -1
  64. package/dist/rag/types.js.map +1 -1
  65. package/dist/runtime/bootstrap.d.ts.map +1 -1
  66. package/dist/runtime/bootstrap.js +8 -0
  67. package/dist/runtime/bootstrap.js.map +1 -1
  68. package/dist/runtime/coding_flow_keys.d.ts +17 -0
  69. package/dist/runtime/coding_flow_keys.d.ts.map +1 -0
  70. package/dist/runtime/coding_flow_keys.js +21 -0
  71. package/dist/runtime/coding_flow_keys.js.map +1 -0
  72. package/dist/runtime/handoff/collect.d.ts.map +1 -1
  73. package/dist/runtime/handoff/collect.js +3 -1
  74. package/dist/runtime/handoff/collect.js.map +1 -1
  75. package/dist/runtime/hooks/session-start.js +5 -1
  76. package/dist/runtime/hooks/session-start.js.map +1 -1
  77. package/dist/runtime/hooks/session_id.d.ts +7 -0
  78. package/dist/runtime/hooks/session_id.d.ts.map +1 -1
  79. package/dist/runtime/hooks/session_id.js +30 -12
  80. package/dist/runtime/hooks/session_id.js.map +1 -1
  81. package/dist/runtime/protected_paths.d.ts +18 -0
  82. package/dist/runtime/protected_paths.d.ts.map +1 -0
  83. package/dist/runtime/protected_paths.js +18 -0
  84. package/dist/runtime/protected_paths.js.map +1 -0
  85. package/dist/runtime/ralph/decision_classifier.d.ts +18 -0
  86. package/dist/runtime/ralph/decision_classifier.d.ts.map +1 -0
  87. package/dist/runtime/ralph/decision_classifier.js +72 -0
  88. package/dist/runtime/ralph/decision_classifier.js.map +1 -0
  89. package/dist/runtime/ralph/escalate_lap.d.ts +31 -0
  90. package/dist/runtime/ralph/escalate_lap.d.ts.map +1 -0
  91. package/dist/runtime/ralph/escalate_lap.js +22 -0
  92. package/dist/runtime/ralph/escalate_lap.js.map +1 -0
  93. package/dist/runtime/ralph/escalator.d.ts +34 -0
  94. package/dist/runtime/ralph/escalator.d.ts.map +1 -0
  95. package/dist/runtime/ralph/escalator.js +19 -0
  96. package/dist/runtime/ralph/escalator.js.map +1 -0
  97. package/dist/runtime/ralph/lap_outcome.d.ts +43 -0
  98. package/dist/runtime/ralph/lap_outcome.d.ts.map +1 -0
  99. package/dist/runtime/ralph/lap_outcome.js +119 -0
  100. package/dist/runtime/ralph/lap_outcome.js.map +1 -0
  101. package/dist/runtime/ralph/orchestrator.d.ts +71 -0
  102. package/dist/runtime/ralph/orchestrator.d.ts.map +1 -0
  103. package/dist/runtime/ralph/orchestrator.js +74 -0
  104. package/dist/runtime/ralph/orchestrator.js.map +1 -0
  105. package/dist/runtime/ralph/ralph_template.d.ts +18 -0
  106. package/dist/runtime/ralph/ralph_template.d.ts.map +1 -0
  107. package/dist/runtime/ralph/ralph_template.js +61 -0
  108. package/dist/runtime/ralph/ralph_template.js.map +1 -0
  109. package/dist/runtime/ralph/supervisor.d.ts +30 -0
  110. package/dist/runtime/ralph/supervisor.d.ts.map +1 -0
  111. package/dist/runtime/ralph/supervisor.js +24 -0
  112. package/dist/runtime/ralph/supervisor.js.map +1 -0
  113. package/dist/runtime/session_state.d.ts +9 -1
  114. package/dist/runtime/session_state.d.ts.map +1 -1
  115. package/dist/runtime/session_state.js +25 -3
  116. package/dist/runtime/session_state.js.map +1 -1
  117. package/dist/runtime/wedge/compression_deps.d.ts.map +1 -1
  118. package/dist/runtime/wedge/compression_deps.js +9 -1
  119. package/dist/runtime/wedge/compression_deps.js.map +1 -1
  120. package/dist/setup/cli/gate.d.ts +7 -2
  121. package/dist/setup/cli/gate.d.ts.map +1 -1
  122. package/dist/setup/cli/gate.js +7 -3
  123. package/dist/setup/cli/gate.js.map +1 -1
  124. package/dist/setup/cli/ralph.d.ts +20 -0
  125. package/dist/setup/cli/ralph.d.ts.map +1 -0
  126. package/dist/setup/cli/ralph.js +168 -0
  127. package/dist/setup/cli/ralph.js.map +1 -0
  128. package/dist/setup/wizard/ralph_writer.d.ts +98 -0
  129. package/dist/setup/wizard/ralph_writer.d.ts.map +1 -0
  130. package/dist/setup/wizard/ralph_writer.js +114 -0
  131. package/dist/setup/wizard/ralph_writer.js.map +1 -0
  132. package/dist/workgraph/audience.d.ts +12 -0
  133. package/dist/workgraph/audience.d.ts.map +1 -0
  134. package/dist/workgraph/audience.js +10 -0
  135. package/dist/workgraph/audience.js.map +1 -0
  136. package/dist/workgraph/events.d.ts.map +1 -1
  137. package/dist/workgraph/events.js +34 -0
  138. package/dist/workgraph/events.js.map +1 -1
  139. package/dist/workgraph/store.d.ts.map +1 -1
  140. package/dist/workgraph/store.js +86 -12
  141. package/dist/workgraph/store.js.map +1 -1
  142. package/dist/workgraph/types.d.ts +33 -2
  143. package/dist/workgraph/types.d.ts.map +1 -1
  144. package/docs/rubric/author.md +17 -0
  145. package/docs/rubric/scope.md +16 -0
  146. package/package.json +3 -2
  147. package/packs/builtin/coding-flow/skills/entry-and-handoffs/skill.yaml +15 -0
  148. package/packs/builtin/coding-flow/skills/execute-gate/skill.yaml +9 -10
  149. package/packs/builtin/coding-flow/skills/scope-lifecycle/skill.yaml +72 -51
  150. package/packs/builtin/default-discipline/manifest.yaml +6 -3
  151. package/packs/builtin/default-discipline/skills/workflow/skill.yaml +19 -6
  152. package/packs/builtin/pack-architect/SKILL.md +10 -0
  153. package/packs/builtin/pack-architect/skills/skill-yaml-author-walkthrough/skill.yaml +7 -0
  154. package/packs/builtin/scope-architect/team.yaml +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/workgraph/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/workgraph/store.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,16 @@
8
8
  */
9
9
  export type EdgeType = 'blocks' | 'parent-child' | 'discovered-from' | 'related';
10
10
  export type IssueStatus = 'open' | 'in_progress' | 'closed';
11
+ /**
12
+ * Who claimed an item, derived at claim time from the GDC env markers the gate already trusts
13
+ * (`AGENT_ENV_MARKERS` — CLAUDECODE / CODEX_THREAD_ID / AI_AGENT). Informational; the exactly-once
14
+ * guarantee comes from the claim token, not this field. (GR.1 of the gated-ralph loop.)
15
+ */
16
+ export interface ClaimAudience {
17
+ source: 'claudecode' | 'codex' | 'unknown';
18
+ threadId?: string;
19
+ version?: string;
20
+ }
11
21
  export interface Issue {
12
22
  id: string;
13
23
  title: string;
@@ -15,9 +25,13 @@ export interface Issue {
15
25
  status: IssueStatus;
16
26
  createdAt: string;
17
27
  updatedAt: string;
28
+ claimToken?: string;
29
+ claimAudience?: ClaimAudience;
30
+ claimExpiresAt?: string;
31
+ wedgeReason?: string;
18
32
  }
19
33
  /** Event-sourced op-log types (slice 1d). Ops are the source of truth; issues/edges are folded. */
20
- export type WgOpType = 'issue_created' | 'issue_set' | 'dep_added' | 'dep_removed';
34
+ export type WgOpType = 'issue_created' | 'issue_set' | 'dep_added' | 'dep_removed' | 'claim_acquired' | 'wedge_marked' | 'wedge_cleared';
21
35
  export interface WgOp {
22
36
  id: string;
23
37
  issueId: string;
@@ -41,8 +55,25 @@ export interface WorkGraphStore {
41
55
  body?: string;
42
56
  }): Promise<Issue>;
43
57
  addEdge(fromId: string, toId: string, type: EdgeType): Promise<void>;
44
- /** Open issues with no un-closed `blocks` blocker, oldest-first (a deterministic queue). */
58
+ /** Open issues with no un-closed `blocks` blocker AND no live claim, oldest-first. */
45
59
  listReady(): Promise<Issue[]>;
60
+ /**
61
+ * Atomically claim an item for `ttlSec` (exactly-once CAS via a unique claim token). Returns
62
+ * `won:true` only for the single winner; concurrent/duplicate claims get `won:false`. An item
63
+ * whose prior claim has expired is claimable again (query-time staleness). (GR.1.)
64
+ */
65
+ claimIssue(id: string, audience: ClaimAudience, ttlSec: number): Promise<{
66
+ won: boolean;
67
+ expiresAt: string;
68
+ }>;
69
+ /**
70
+ * Mark an item as wedged (GR.3): a re-attempt SKIPS it (it's escalated, not retried) so the
71
+ * supervisor can't crash-loop the same wall. Excluded from `listReady` until the reason is cleared.
72
+ */
73
+ wedgeMark(id: string, reason: string): Promise<void>;
74
+ /** Clear a wedge-mark (GR.4 human-override resolution): `wedge_reason` → null → the item re-enters
75
+ * `listReady` for another lap. The residual-shrink path's un-wedge. */
76
+ clearWedge(id: string): Promise<void>;
46
77
  /** The append-only op-log for an issue, in (lamport, id) order. */
47
78
  listEvents(issueId: string): Promise<WgOp[]>;
48
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workgraph/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAEjF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mGAAmG;AACnG,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AAEnF,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,WAAW,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC5C,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAChE,WAAW,CACT,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7D,OAAO,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,4FAA4F;IAC5F,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9B,mEAAmE;IACnE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;CAC9C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workgraph/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAEjF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,mGAAmG;AACnG,MAAM,MAAM,QAAQ,GAChB,eAAe,GACf,WAAW,GACX,WAAW,GACX,aAAa,GACb,gBAAgB,GAChB,cAAc,GACd,eAAe,CAAC;AAEpB,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,WAAW,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC5C,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAChE,WAAW,CACT,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7D,OAAO,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,sFAAsF;IACtF,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CACR,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD;;;OAGG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;2EACuE;IACvE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,mEAAmE;IACnE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;CAC9C"}
@@ -0,0 +1,17 @@
1
+ # AUTHOR rubric — the spec-audit's pass criteria
2
+
3
+ The canonical, single-source rubric the coding-flow AUTHOR gate applies to a task spec. Read whole by
4
+ `read_rubric(name: author)` and (a) interpolated into the spec-audit prompt and (b) injected to the agent
5
+ before authoring. Edit HERE — both the audit and the agent reflect the change (no second copy).
6
+
7
+ A task spec passes (`VERDICT: SPEC_COMPLETE`) ONLY if all three hold:
8
+
9
+ 1. **11-FIELD CONTRACT** — EVERY "### Task" block has all 11 fields (Required skills, Deliverable, Depends on,
10
+ Files affected, Key code shapes, Test fixtures, Acceptance criteria, Risk callouts, References,
11
+ Verification commands, 7-phase steps); every Key-code-shapes block is REAL code (not pseudocode); every
12
+ 7-phase step names concrete files/decisions.
13
+ 2. **100% DESIGN COVERAGE** — the task set covers EVERY element of the SCOPE design — no design item is left
14
+ without a task.
15
+ 3. **SIMPLICITY** — the design is the SIMPLEST correct solution: no proliferating special-cases (that signals
16
+ a missed decomposition), every lifecycle an explicit total-transition FSM, every transform a pure
17
+ function, no implicit state.
@@ -0,0 +1,16 @@
1
+ # SCOPE rubric — the guess-audit's pass criteria
2
+
3
+ The canonical, single-source rubric the coding-flow SCOPE gate applies to a pre-research / scope artifact.
4
+ Read whole by `read_rubric(name: scope)` and (a) interpolated into the guess-audit prompt and (b) injected to
5
+ the agent before authoring. Edit HERE — both the audit and the agent reflect the change (no second copy).
6
+
7
+ A pre-research / scope artifact passes (`VERDICT: GUESS_FREE`) ONLY if all three hold:
8
+
9
+ 1. **NEVER-GUESS** — a claim is acceptable ONLY if DERIVED from cited evidence (a `file:line`, a memory, or
10
+ the user's own words) OR explicitly flagged as an unresolved open question — an unchecked
11
+ `- [ ] OPEN QUESTION: …` task-list marker — to ask the user (resolve it by checking the box `- [x]`).
12
+ 2. **BEST-SOLUTION** — the artifact must show the best solution was found: alternatives weighed against the
13
+ criteria and the SIMPLEST correct one chosen (no proliferating special-cases).
14
+ 3. **FULL-FIX** — the chosen solution must be the FULL fix: when the existing shape is the cause, it is
15
+ re-architected, NOT a local patch that bolts on a special-case to dodge the rework (that patch is itself
16
+ the proliferating-special-case overcomplication the Full-fix-over-patch guideline forbids).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opensquid",
3
- "version": "0.5.407",
3
+ "version": "0.5.426",
4
4
  "description": "Continuity layer for coding agents: durable memory, dependency-aware task state, workflow gates, and inspectable packs over MCP.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -26,7 +26,8 @@
26
26
  "packs/builtin",
27
27
  "docs/pack-runtime.md",
28
28
  "docs/skill-grammar-guide.md",
29
- "docs/load-budget.md"
29
+ "docs/load-budget.md",
30
+ "docs/rubric"
30
31
  ],
31
32
  "engines": {
32
33
  "node": ">=20.0.0"
@@ -39,6 +39,12 @@ rules:
39
39
  args:
40
40
  key: coding-flow-track
41
41
  value: feature
42
+ # wg-4c48ef1b9969: clear the per-track scope state (pre-research/spec/design
43
+ # pointers) as a UNIT so a shipped track's artifacts don't leak into the new
44
+ # track (renderer re-fires the finished track; AUTHOR audit reads stale design).
45
+ # Best-effort, ordered AFTER advance_fsm — never blocks the arm.
46
+ - call: reset_scope_track_state
47
+ if: 'len(intent.matched) > 0'
42
48
  # GF.5 (F5): a feature-intent probe. A downgrade to fix/doc/trivial applies ONLY
43
49
  # when NO feature-intent keyword is present — a mixed-intent prompt ("build X and
44
50
  # fix Y") stays `feature` (strictest), so one stray keyword can't disable the
@@ -83,6 +89,15 @@ rules:
83
89
  args:
84
90
  key: coding-flow-track
85
91
  value: trivial
92
+ # TR.B (wg-2d1d8698f563): deliver the coding-flow quality rubric to the agent BEFORE it authors — the
93
+ # fix for the blind-first-draft root cause. Placed AFTER enter-scoping so the cold kickoff turn's
94
+ # just-armed `scoping` is visible (rules walk file-order; handoff-rescope-nudge below relies on the same
95
+ # ordering). rubric_pre_inject reads the coding-flow FSM and, when in an active SCOPE/AUTHOR phase, returns
96
+ # an inject_context payload carrying the FULL rubric (scope + author — prompt_submit can't track mid-turn
97
+ # phase advances, so one injection must cover the whole uninterrupted turn). Inject-only; never blocks.
98
+ - id: inject-rubric
99
+ process:
100
+ - call: rubric_pre_inject
86
101
  # GF.1 (F9) — the re-scope NUDGE, surfaced on prompt_submit (where directives are
87
102
  # delivered) for the `scoping` state. Fires after `enter-scoping` advanced idle→scoping
88
103
  # (or after task-start's task_unscoped reset, or GF.7's phases_complete re-arm landed
@@ -15,17 +15,16 @@ triggers:
15
15
  rules:
16
16
  - id: phase-logged-before-commit
17
17
  process:
18
- - call: match_command
18
+ # T-GATE-MATCHER-SUBSTRING (GM.3, wg-52e57e2ed252): was a raw-string `match_command`
19
+ # regex `\bgit…commit\b` over the whole command — it false-fired on `git commit` inside a
20
+ # grep pattern, an echo arg, or a quoted subprocess prompt (`claude -p "…git commit…"`).
21
+ # `command_invokes` parses the command into real shell segments and matches only a genuine
22
+ # `git commit` INVOCATION (compounds like `cd x && git commit` still match; the owned git
23
+ # pre-commit hook stays the hard boundary). Recall-over-precision band-aid retired.
24
+ - call: command_invokes
19
25
  args:
20
- # T-FLOW-UNSKIPPABLE FU.1 (the real root cause): this was `^git…commit`, anchored
21
- # at START — so a COMPOUND command `cd <dir> && git commit …` (how every commit is
22
- # actually made, since the Bash tool resets cwd) starts with `cd` and EVADED the
23
- # gate entirely. The gate was dead for real commits. Match `git … commit` ANYWHERE
24
- # (`\b`, like the sibling no-verify matcher) so compounds can't slip past. A false
25
- # match on a string that merely mentions `git commit` is the safe direction (recall
26
- # over precision, same as no-verify-block).
27
- pattern: '\bgit\s+(?:-[cC]\s+\S+\s+)*commit\b'
28
- target: tool_args.command
26
+ program: git
27
+ subcommand: commit
29
28
  as: committing
30
29
  # T-FLOW-UNSKIPPABLE FU.1 (D1): the gates must COMPOSE. The "no active task ⇒
31
30
  # ad-hoc ⇒ allow" branch below was a SEAM — a blocked TaskCreate (AUTHOR gate)
@@ -43,7 +43,9 @@ rules:
43
43
  # checks run BEFORE the advance, and research_done is COUPLED to them — no
44
44
  # advisory pass. The advance fires ONLY when SCOPE content is complete:
45
45
  # GUESS_FREE (every claim cited-or-flagged + the BEST/simplest solution justified)
46
- # AND zero unresolved OPEN QUESTION markers AND research depth >= 3 this turn.
46
+ # AND zero unresolved open-question markers (an unchecked `- [ ] OPEN QUESTION:` task-list
47
+ # item — GM.3 made this a STRUCTURED marker so prose that merely mentions the phrase no
48
+ # longer false-blocks) AND research depth >= 3 this turn.
47
49
  - id: scope-advance
48
50
  process:
49
51
  - call: tool_name
@@ -74,7 +76,11 @@ rules:
74
76
  - call: session_tool_history
75
77
  if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-")'
76
78
  args:
77
- scope: current_turn
79
+ # wg-3e241144f441: per-track window (reset at scope_start, survives turn
80
+ # boundaries) — research legitimately spans turns, so current_turn false-fired.
81
+ # filter_names UNCHANGED: Grep is harmless-when-dead, signal-preserving-when-live
82
+ # (Bash:read-only only covers grep dispatched AS Bash, not a native Grep tool).
83
+ scope: since_scope_start
78
84
  filter_names: [mcp__opensquid__recall, Read, Grep, 'Bash:read-only']
79
85
  as: depth
80
86
  # The content audit: NEVER-GUESS + BEST-SOLUTION, one combined verdict.
@@ -90,8 +96,23 @@ rules:
90
96
  # latency (268s worst observed under subscription contention, 2026-06-10)
91
97
  # and 20s under the 360s outer hook cap the setup wizard writes — the
92
98
  # inner timer must die first so the gate fails with a readable error.
93
- - call: cached_audit
99
+ # TR.A (wg-2d1d8698f563): the rubric is single-sourced to docs/rubric/scope.md and interpolated as
100
+ # {{rubric}} below — NOT hardcoded here. read_rubric returns null on a missing/unreadable fragment.
101
+ - call: read_rubric
94
102
  if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-")'
103
+ args: { name: scope }
104
+ as: rubric
105
+ # FAIL-LOUD: never run the audit rubric-less (a rubric-less verdict would be a silent fallback worse
106
+ # than fail-open). docs/rubric/scope.md MUST ship (package.json files[]).
107
+ - call: verdict
108
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && rubric == null'
109
+ args:
110
+ level: block
111
+ message: >-
112
+ SCOPE audit cannot run: the canonical rubric (docs/rubric/scope.md) is unreadable — a
113
+ packaging/install fault, NOT a content failure. Verify the opensquid package ships docs/rubric/.
114
+ - call: cached_audit
115
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && rubric != null'
95
116
  on_error: continue
96
117
  args:
97
118
  cache_key: coding-flow-guess-audit-cache
@@ -99,16 +120,8 @@ rules:
99
120
  timeout_ms: 340000
100
121
  prompt: >-
101
122
  You are an adversarial reviewer enforcing the lexicon's Research/Audit flow
102
- principles (docs/lexicon.md never-guess, best-solution, full-fix-over-patch, teach-back depth) on a
103
- pre-research / scope artifact. (1) NEVER-GUESS: a claim is acceptable ONLY if DERIVED from cited
104
- evidence (a file:line, a memory, or the user's own words) OR explicitly flagged
105
- as an OPEN QUESTION to ask the user. (2) BEST-SOLUTION: the artifact must show
106
- the best solution was found — alternatives weighed against the criteria and the
107
- SIMPLEST correct one chosen per docs/lexicon.md (no proliferating special-cases).
108
- (3) FULL-FIX: the chosen solution must be the FULL fix — when the existing shape
109
- is the cause, it is re-architected, NOT a local patch that bolts on a special-case
110
- to dodge the rework (that patch is itself the proliferating-special-case
111
- overcomplication the Full-fix-over-patch guideline forbids).
123
+ principles on a pre-research / scope artifact. Apply EXACTLY this rubric (the single
124
+ canonical source, docs/rubric/scope.md):\n\n{{rubric}}\n\n
112
125
  Begin your response with EXACTLY one line — `VERDICT: GUESS_FREE` ONLY if every
113
126
  claim is cited-or-flagged-open AND the simplest-correct solution is justified
114
127
  against alternatives AND is a full fix, not a patch around a design that should be
@@ -120,18 +133,20 @@ rules:
120
133
  # audit-string trichotomy below is a clean partition over its own subspace.
121
134
  # BLOCK: unresolved open questions — answer them in SCOPE (this is the interactive phase).
122
135
  - call: verdict
123
- if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && contains(effective, "OPEN QUESTION")'
136
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && match(effective, "(?im)^\\s*-\\s*\\[ \\]\\s*open[ _-]?question")'
124
137
  args:
125
138
  level: block
126
139
  message: >-
127
- SCOPE incomplete: the pre-research still has unresolved OPEN QUESTION(s).
128
- SCOPE is the interactive phase ASK the user (AskUserQuestion), record + cite
129
- the answer, and remove the marker BEFORE authoring. Everything after scope is
130
- automated; a question must not survive into it.
140
+ SCOPE incomplete: the pre-research still has an unresolved open-question marker
141
+ (an unchecked `- [ ] OPEN QUESTION: …` task-list item). SCOPE is the interactive
142
+ phase — ASK the user (AskUserQuestion), record + cite the answer, then CHECK THE BOX
143
+ (`- [x]`) or remove the item BEFORE authoring. Everything after scope is automated;
144
+ a question must not survive into it. (Merely MENTIONING the phrase in prose is fine —
145
+ only an unchecked checkbox marker blocks.)
131
146
  # BLOCK: shallow research (folded DPC.5 depth). Ordered after open-question; its
132
- # !OPEN QUESTION guard keeps the two preconditions mutually exclusive.
147
+ # !match(OQ-marker) guard keeps the two preconditions mutually exclusive.
133
148
  - call: verdict
134
- if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && !contains(effective, "OPEN QUESTION") && depth.count < 3'
149
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && !match(effective, "(?im)^\\s*-\\s*\\[ \\]\\s*open[ _-]?question") && depth.count < 3'
135
150
  args:
136
151
  level: block
137
152
  message: >-
@@ -141,17 +156,17 @@ rules:
141
156
  # {GUESS_FREE, UNRESOLVED, no-VERDICT} is a total partition of the audit string.
142
157
  # PASS → advance.
143
158
  - call: advance_fsm
144
- if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && depth.count >= 3 && !contains(effective, "OPEN QUESTION") && contains(audit, "VERDICT: GUESS_FREE")'
159
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && depth.count >= 3 && !match(effective, "(?im)^\\s*-\\s*\\[ \\]\\s*open[ _-]?question") && contains(audit, "VERDICT: GUESS_FREE")'
145
160
  args:
146
161
  event: research_done
147
162
  # CONTENT-FAIL → loop-back + warn (keyed POSITIVELY on UNRESOLVED, not !GUESS_FREE — so an
148
163
  # audit that could not run no longer masquerades as "guesses found").
149
164
  - call: advance_fsm
150
- if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && depth.count >= 3 && !contains(effective, "OPEN QUESTION") && contains(audit, "VERDICT: UNRESOLVED")'
165
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && depth.count >= 3 && !match(effective, "(?im)^\\s*-\\s*\\[ \\]\\s*open[ _-]?question") && contains(audit, "VERDICT: UNRESOLVED")'
151
166
  args:
152
167
  event: guess_found
153
168
  - call: verdict
154
- if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && depth.count >= 3 && !contains(effective, "OPEN QUESTION") && contains(audit, "VERDICT: UNRESOLVED")'
169
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && depth.count >= 3 && !match(effective, "(?im)^\\s*-\\s*\\[ \\]\\s*open[ _-]?question") && contains(audit, "VERDICT: UNRESOLVED")'
155
170
  args:
156
171
  level: warn
157
172
  message: >-
@@ -162,7 +177,7 @@ rules:
162
177
  # AUDIT-UNAVAILABLE → terminal BLOCK, NO advance (stays scoping, re-armable). F0c fix:
163
178
  # the audit subagent could not spawn (a no-VERDICT response, incl. the bound err message).
164
179
  - call: verdict
165
- if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && depth.count >= 3 && !contains(effective, "OPEN QUESTION") && !contains(audit, "VERDICT:")'
180
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/research/") && contains(targs.file_path, "-pre-research-") && depth.count >= 3 && !match(effective, "(?im)^\\s*-\\s*\\[ \\]\\s*open[ _-]?question") && rubric != null && !contains(audit, "VERDICT:")'
166
181
  args:
167
182
  level: block
168
183
  message: >-
@@ -210,25 +225,29 @@ rules:
210
225
  # SCOPE audit — a re-fire on an UNCHANGED spec reuses the verdict, no spawn.
211
226
  # timeout_ms (T-AUDIT-SPAWN-FIX): 340s, same measured sizing as the SCOPE
212
227
  # audit above (268s worst observed; 20s under the 360s outer hook cap).
213
- - call: cached_audit
228
+ # TR.A (wg-2d1d8698f563): the AUTHOR rubric is single-sourced to docs/rubric/author.md,
229
+ # interpolated as {{rubric}} below — NOT hardcoded. Fail-loud on a missing fragment (below).
230
+ - call: read_rubric
214
231
  if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/tasks/T-") && endsWith(targs.file_path, ".md")'
232
+ args: { name: author }
233
+ as: rubric
234
+ - call: verdict
235
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/tasks/T-") && endsWith(targs.file_path, ".md") && rubric == null'
236
+ args:
237
+ level: block
238
+ message: >-
239
+ AUTHOR audit cannot run: the canonical rubric (docs/rubric/author.md) is unreadable — a
240
+ packaging/install fault, NOT a content failure. Verify the opensquid package ships docs/rubric/.
241
+ - call: cached_audit
242
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/tasks/T-") && endsWith(targs.file_path, ".md") && rubric != null'
215
243
  on_error: continue
216
244
  args:
217
245
  cache_key: coding-flow-spec-audit-cache
218
246
  model: reasoning
219
247
  timeout_ms: 340000
220
248
  prompt: >-
221
- You are an adversarial reviewer enforcing THREE author-completeness rules.
222
- (1) 11-FIELD CONTRACT: EVERY "### Task" block has all 11 fields (Required
223
- skills, Deliverable, Depends on, Files affected, Key code shapes, Test
224
- fixtures, Acceptance criteria, Risk callouts, References, Verification
225
- commands, 7-phase steps), every Key-code-shapes block is REAL code (not
226
- pseudocode), every 7-phase step names concrete files/decisions. (2) 100%
227
- DESIGN COVERAGE: the task set covers EVERY element of the SCOPE design below —
228
- no design item is left without a task. (3) SIMPLICITY (per docs/lexicon.md):
229
- the design is the SIMPLEST correct solution — no proliferating special-cases
230
- (that signals a missed decomposition), every lifecycle an explicit
231
- total-transition FSM, every transform a pure function, no implicit state.
249
+ You are an adversarial reviewer enforcing THREE author-completeness rules. Apply EXACTLY
250
+ this rubric (the single canonical source, docs/rubric/author.md):\n\n{{rubric}}\n\n
232
251
  Begin your response with EXACTLY one line — `VERDICT: SPEC_COMPLETE` ONLY if
233
252
  ALL THREE hold; otherwise `VERDICT: INCOMPLETE` + one bullet per offending
234
253
  block, uncovered design element, OR over-complected smell. Never say
@@ -256,7 +275,7 @@ rules:
256
275
  Audit:\n\n{{spec_audit}}
257
276
  # AUDIT-UNAVAILABLE → BLOCK, no advance (stays spec_authored, re-armable). F0c fix.
258
277
  - call: verdict
259
- if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/tasks/T-") && endsWith(targs.file_path, ".md") && !contains(spec_audit, "VERDICT:")'
278
+ if: '(tool == "Write" || tool == "Edit") && contains(targs.file_path, "docs/tasks/T-") && endsWith(targs.file_path, ".md") && rubric != null && !contains(spec_audit, "VERDICT:")'
260
279
  args:
261
280
  level: block
262
281
  message: >-
@@ -299,25 +318,27 @@ rules:
299
318
  code commit/push that has not completed the flow.)
300
319
  # ── verify-skip detector: the ONE closed opt-out token (GF.3) ────────────────
301
320
  # The git gate (GF.2) is bypassable only by passing the verify-skipping flag to `git
302
- # commit/push` (or `git commit -n`) — a single explicit opt-out (not a denylist over an
303
- # open set), so it is a hard BLOCK. `git push -n` is --dry-run, NOT a verify-skip, so -n
304
- # is matched for `commit` only. KNOWN LIMITATION (matching a shell string is imperfect):
305
- # the flag literal appearing inside a `-m "…"` commit MESSAGE also matches → over-block.
306
- # That direction is INTENTIONAL and safe for a bypass-detector: a false positive (an
307
- # annoying block on a message that mentions the flag) beats a false negative (letting a
308
- # real bypass through). Do NOT "fix" this by anchoring to flag position that
309
- # reintroduces a false negative on `git commit -m msg <flag>`.
321
+ # commit/push` — a single explicit opt-out (not a denylist over an open set), so it is a
322
+ # hard BLOCK. `git push -n` is --dry-run, NOT a verify-skip, so `-n` is matched for `commit`
323
+ # ONLY (git-commit(1) `-n,--no-verify`; git-push(1) `-n,--dry-run`).
324
+ # T-GATE-MATCHER-SUBSTRING (GM.3, wg-52e57e2ed252): was a raw-string `match_command` that
325
+ # false-fired on a read-only `grep -n "…git commit…"` (the prose `git commit` + grep's `-n`).
326
+ # `command_invokes` parses real shell segments and detects the flag only WITHIN a genuine git
327
+ # invocation so a real `git commit --no-verify`/`-n` still blocks (recall preserved within the
328
+ # invocation), but prose/grep/echo no longer trip it. The old "over-block is intentional"
329
+ # band-aid is retired: blocking read-only work gave zero bypass-protection value.
310
330
  - id: no-verify-block
311
331
  process:
312
332
  - call: tool_name
313
333
  as: tool
314
- - call: match_command
315
- args:
316
- pattern: '(?:\bgit\s+commit\b.*(?:--no-verify|\s-n\b))|(?:\bgit\s+push\b.*--no-verify)'
317
- target: tool_args.command
318
- as: skipping
334
+ - call: command_invokes
335
+ args: { program: git, subcommand: commit, flag_any: ['--no-verify', '-n'] }
336
+ as: skip_commit
337
+ - call: command_invokes
338
+ args: { program: git, subcommand: push, flag_any: ['--no-verify'] }
339
+ as: skip_push
319
340
  - call: verdict
320
- if: '(tool == "Bash") && skipping'
341
+ if: '(tool == "Bash") && (skip_commit || skip_push)'
321
342
  args:
322
343
  level: block
323
344
  message: >-
@@ -34,13 +34,16 @@ evolves: true
34
34
  # command-boundary prefixes survive).
35
35
  guards:
36
36
  # git hygiene (block_tool)
37
+ # T-GATE-MATCHER-SUBSTRING (GM.3, wg-52e57e2ed252): structural — matches a real
38
+ # `git commit --amend` invocation, not the substring inside a grep/echo/prompt.
37
39
  - name: never-amend
38
40
  on: tool_call
39
41
  detect:
40
- call: match_command
42
+ call: command_invokes
41
43
  args:
42
- pattern: '(?:^|[;&|\n(])\s*git\s+(?:-[cC]\s+\S+\s+)*commit\b[^\n]*\s--amend\b'
43
- target: tool_args.command
44
+ program: git
45
+ subcommand: commit
46
+ flag_any: ['--amend']
44
47
  when: hit
45
48
  level: block
46
49
  message: >-
@@ -34,23 +34,36 @@ rules:
34
34
 
35
35
  - id: phase-logged-before-commit
36
36
  process:
37
- - call: match_command
37
+ # T-GATE-MATCHER-SUBSTRING (GM.3, wg-52e57e2ed252): was a raw-string regex over the whole
38
+ # command (boundary-anchored, but still matched `; git commit` inside a quoted echo/prompt).
39
+ # `command_invokes` parses real shell segments → matches only a genuine `git commit`
40
+ # invocation (compounds like `cd … && git commit` still match).
41
+ - call: command_invokes
38
42
  args:
39
- pattern: '(?:^|[;&|\n(])\s*git\s+(?:-[cC]\s+\S+\s+)*commit\b' # FU.14: command-boundary (start or after ; && || | newline ( ) — catches `cd … && git commit`
40
- target: tool_args.command
43
+ program: git
44
+ subcommand: commit
41
45
  as: committing
42
46
  - call: read_state
43
47
  if: committing
44
48
  args:
45
49
  key: workflow.phases_logged
46
50
  as: phases
51
+ # Docs-only parity (wg-3dcca3b29ed1): consult the STAGED diff the way the
52
+ # git-owned hard gate (gate.ts isDocsOnly) does, so the nudge mirrors the
53
+ # boundary instead of over-blocking a docs-only commit. The step runs only
54
+ # when committing; `staged_docs_only` fails toward `false` (= not docs-only
55
+ # = block stands) on any git error.
56
+ - call: staged_docs_only
57
+ if: committing
58
+ as: docs_only
47
59
  # FU.9: `read_state` returns the ledger OBJECT `{task_id, phases:[...]}`,
48
60
  # never the string "complete" — the prior `phases != "complete"` was always
49
61
  # true (object !== string), so paired with the old exit-0 halt stub the gate
50
- # silently no-op'd. Block when fewer than all 7 phases are logged. `len`
51
- # returns 0 for a null/absent ledger → 0 < 7 → blocks a zero-phase commit.
62
+ # silently no-op'd. Block when fewer than all 7 phases are logged AND the
63
+ # staged diff is not docs-only. `len` returns 0 for a null/absent ledger →
64
+ # 0 < 7 → blocks a zero-phase code commit; `!docs_only` lets docs-only pass.
52
65
  - call: verdict
53
- if: 'committing && len(phases.phases) < 7'
66
+ if: 'committing && len(phases.phases) < 7 && !docs_only'
54
67
  args:
55
68
  level: block
56
69
  message: >-
@@ -35,6 +35,16 @@ but the chain-handoff stalls.
35
35
  | `skill-yaml-author-walkthrough` | PreToolUse Edit/Write of `packs/*/skills/*/skill.yaml` | Surface verdict with skill-field checklist (cites pack-runtime.md §2 + skill-grammar-guide.md) |
36
36
  | `fsm-author-walkthrough` | PreToolUse Edit/Write of `packs/*/fsm.yaml` | Surface verdict with FSM checklist (cites pack-fsm-architecture.md; coding-flow example) |
37
37
 
38
+ ### Discipline: gates teach their rubric (TR.C, wg-2d1d8698f563)
39
+
40
+ A gate is not just a blocker — it must TEACH its bar. If a skill emits a block/audit verdict with a content
41
+ rubric (like coding-flow's guess/spec audits), it must ship a companion that DELIVERS that rubric to the
42
+ agent BEFORE the gated action, sourced from the gate's single canonical rubric (e.g. `read_rubric` →
43
+ `inject_context` at `prompt_submit`). Otherwise the agent authors content-blind and learns the bar only by
44
+ tripping the gate. Light block/warn gates (no heavy content rubric) teach via a remedy-naming message
45
+ instead. The `skill-yaml-author-walkthrough` checklist enforces this; the coding-flow pairing is the
46
+ reference implementation.
47
+
38
48
  ## The 4-phase pack-authoring workflow (when spawned as profession)
39
49
 
40
50
  1. **Identify scope + persona** — kind/usage decisions, detected_by
@@ -45,6 +45,13 @@ rules:
45
45
  functions per skill-grammar-guide.md
46
46
  [ ] Final step emits a verdict
47
47
  (pass / block / warn / surface / directive)
48
+ [ ] GATES TEACH (TR.C, wg-2d1d8698f563): if a rule emits a
49
+ block/audit verdict (a GATE with a content rubric), ship a
50
+ companion that DELIVERS that gate's rubric to the agent BEFORE
51
+ the gated action, sourced from the gate's canonical rubric
52
+ (e.g. read_rubric → inject_context at prompt_submit). A gate
53
+ teaches its bar; it does not only block. (Light block/warn
54
+ gates teach via a remedy-naming message instead.)
48
55
  [ ] For directive verdict: next_action is skill XOR tool
49
56
  XOR profession (exactly one)
50
57
  [ ] No vendor model names anywhere (use model_alias)
@@ -61,5 +61,8 @@ roles:
61
61
  weighed against the criteria with the SIMPLEST-correct chosen;
62
62
  failure-modes / inversion; an empirical-spike note; a scope boundary;
63
63
  and EVERY claim cited (file:line / memory / the user's words) or
64
- flagged OPEN QUESTION and an OPEN QUESTION must be resolved with the
65
- user IN SCOPE before the write, never carried into the artifact.
64
+ flagged as an unchecked `- [ ] OPEN QUESTION: …` task-list marker and
65
+ such a marker must be resolved with the user IN SCOPE before the write
66
+ (check the box `- [x]` once answered), never carried unresolved into the
67
+ artifact. (Merely discussing an open question in prose is fine; only an
68
+ unchecked checkbox marker blocks the advance.)