@dzhechkov/harness-core 0.8.11 → 0.8.21

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 (205) hide show
  1. package/.dz-manifest.json +399 -139
  2. package/LICENSE +13 -0
  3. package/README.md +420 -6
  4. package/dist/agents-policy.d.ts +15 -1
  5. package/dist/agents-policy.d.ts.map +1 -1
  6. package/dist/agents-policy.js +27 -1
  7. package/dist/agents-policy.js.map +1 -1
  8. package/dist/amendment-trace.d.ts +72 -0
  9. package/dist/amendment-trace.d.ts.map +1 -1
  10. package/dist/amendment-trace.js +385 -17
  11. package/dist/amendment-trace.js.map +1 -1
  12. package/dist/backlog-public.d.ts +153 -0
  13. package/dist/backlog-public.d.ts.map +1 -0
  14. package/dist/backlog-public.js +415 -0
  15. package/dist/backlog-public.js.map +1 -0
  16. package/dist/backlog-transitions.d.ts +48 -0
  17. package/dist/backlog-transitions.d.ts.map +1 -0
  18. package/dist/backlog-transitions.js +64 -0
  19. package/dist/backlog-transitions.js.map +1 -0
  20. package/dist/backlog.d.ts.map +1 -1
  21. package/dist/backlog.js +13 -0
  22. package/dist/backlog.js.map +1 -1
  23. package/dist/claim-check.d.ts.map +1 -1
  24. package/dist/claim-check.js +24 -2
  25. package/dist/claim-check.js.map +1 -1
  26. package/dist/claude-hooks-assets.d.ts +93 -0
  27. package/dist/claude-hooks-assets.d.ts.map +1 -0
  28. package/dist/claude-hooks-assets.js +208 -0
  29. package/dist/claude-hooks-assets.js.map +1 -0
  30. package/dist/clean-room-smoke.d.ts +83 -0
  31. package/dist/clean-room-smoke.d.ts.map +1 -0
  32. package/dist/clean-room-smoke.js +138 -0
  33. package/dist/clean-room-smoke.js.map +1 -0
  34. package/dist/cmd-usage.d.ts.map +1 -1
  35. package/dist/cmd-usage.js +36 -6
  36. package/dist/cmd-usage.js.map +1 -1
  37. package/dist/codex-hooks-assets.d.ts +25 -7
  38. package/dist/codex-hooks-assets.d.ts.map +1 -1
  39. package/dist/codex-hooks-assets.js +138 -30
  40. package/dist/codex-hooks-assets.js.map +1 -1
  41. package/dist/codex-hooks.d.ts +21 -1
  42. package/dist/codex-hooks.d.ts.map +1 -1
  43. package/dist/codex-hooks.js +21 -1
  44. package/dist/codex-hooks.js.map +1 -1
  45. package/dist/course-staleness.d.ts +19 -0
  46. package/dist/course-staleness.d.ts.map +1 -0
  47. package/dist/course-staleness.js +95 -0
  48. package/dist/course-staleness.js.map +1 -0
  49. package/dist/destructive-guard-hook.d.ts +40 -0
  50. package/dist/destructive-guard-hook.d.ts.map +1 -0
  51. package/dist/destructive-guard-hook.js +109 -0
  52. package/dist/destructive-guard-hook.js.map +1 -0
  53. package/dist/destructive-guard.d.ts +27 -0
  54. package/dist/destructive-guard.d.ts.map +1 -0
  55. package/dist/destructive-guard.js +2808 -0
  56. package/dist/destructive-guard.js.map +1 -0
  57. package/dist/discrimination-gate.d.ts +28 -3
  58. package/dist/discrimination-gate.d.ts.map +1 -1
  59. package/dist/discrimination-gate.js +76 -16
  60. package/dist/discrimination-gate.js.map +1 -1
  61. package/dist/feature-adr-routing.d.ts +95 -1
  62. package/dist/feature-adr-routing.d.ts.map +1 -1
  63. package/dist/feature-adr-routing.js +193 -27
  64. package/dist/feature-adr-routing.js.map +1 -1
  65. package/dist/guard.d.ts +90 -0
  66. package/dist/guard.d.ts.map +1 -1
  67. package/dist/guard.js +271 -0
  68. package/dist/guard.js.map +1 -1
  69. package/dist/harness-core-location.d.ts +18 -0
  70. package/dist/harness-core-location.d.ts.map +1 -0
  71. package/dist/harness-core-location.js +42 -0
  72. package/dist/harness-core-location.js.map +1 -0
  73. package/dist/index.d.ts +24 -6
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +24 -3
  76. package/dist/index.js.map +1 -1
  77. package/dist/lead-shift-gate.d.ts +95 -0
  78. package/dist/lead-shift-gate.d.ts.map +1 -0
  79. package/dist/lead-shift-gate.js +100 -0
  80. package/dist/lead-shift-gate.js.map +1 -0
  81. package/dist/ledger-backfill.d.ts +11 -1
  82. package/dist/ledger-backfill.d.ts.map +1 -1
  83. package/dist/ledger-backfill.js +19 -0
  84. package/dist/ledger-backfill.js.map +1 -1
  85. package/dist/loop-blobs.generated.d.ts +1 -1
  86. package/dist/loop-blobs.generated.d.ts.map +1 -1
  87. package/dist/loop-blobs.generated.js +12 -3
  88. package/dist/loop-blobs.generated.js.map +1 -1
  89. package/dist/loop-lint.d.ts.map +1 -1
  90. package/dist/loop-lint.js +56 -7
  91. package/dist/loop-lint.js.map +1 -1
  92. package/dist/loop-plan-graph.d.ts +1 -3
  93. package/dist/loop-plan-graph.d.ts.map +1 -1
  94. package/dist/loop-plan-graph.js +70 -1
  95. package/dist/loop-plan-graph.js.map +1 -1
  96. package/dist/loop-trace.d.ts.map +1 -1
  97. package/dist/loop-trace.js +16 -2
  98. package/dist/loop-trace.js.map +1 -1
  99. package/dist/managed-hooks.d.ts +5 -6
  100. package/dist/managed-hooks.d.ts.map +1 -1
  101. package/dist/managed-hooks.js +2 -2
  102. package/dist/managed-hooks.js.map +1 -1
  103. package/dist/model-recommender.d.ts.map +1 -1
  104. package/dist/model-recommender.js +14 -3
  105. package/dist/model-recommender.js.map +1 -1
  106. package/dist/operations.d.ts.map +1 -1
  107. package/dist/operations.js +82 -0
  108. package/dist/operations.js.map +1 -1
  109. package/dist/patterns.d.ts +23 -0
  110. package/dist/patterns.d.ts.map +1 -1
  111. package/dist/patterns.js +10 -0
  112. package/dist/patterns.js.map +1 -1
  113. package/dist/publish.d.ts +11 -0
  114. package/dist/publish.d.ts.map +1 -1
  115. package/dist/publish.js +16 -2
  116. package/dist/publish.js.map +1 -1
  117. package/dist/registry.d.ts.map +1 -1
  118. package/dist/registry.js +3 -2
  119. package/dist/registry.js.map +1 -1
  120. package/dist/score.d.ts.map +1 -1
  121. package/dist/score.js +15 -4
  122. package/dist/score.js.map +1 -1
  123. package/dist/session-retro.d.ts +121 -2
  124. package/dist/session-retro.d.ts.map +1 -1
  125. package/dist/session-retro.js +454 -11
  126. package/dist/session-retro.js.map +1 -1
  127. package/dist/setup.d.ts +28 -0
  128. package/dist/setup.d.ts.map +1 -1
  129. package/dist/setup.js +223 -6
  130. package/dist/setup.js.map +1 -1
  131. package/dist/sign.d.ts.map +1 -1
  132. package/dist/sign.js +18 -1
  133. package/dist/sign.js.map +1 -1
  134. package/dist/skills-verify.d.ts +34 -1
  135. package/dist/skills-verify.d.ts.map +1 -1
  136. package/dist/skills-verify.js +82 -0
  137. package/dist/skills-verify.js.map +1 -1
  138. package/dist/stage-line.d.ts +68 -0
  139. package/dist/stage-line.d.ts.map +1 -0
  140. package/dist/stage-line.js +129 -0
  141. package/dist/stage-line.js.map +1 -0
  142. package/dist/statusline.d.ts +99 -0
  143. package/dist/statusline.d.ts.map +1 -1
  144. package/dist/statusline.js +310 -44
  145. package/dist/statusline.js.map +1 -1
  146. package/dist/store-counts.d.ts +26 -0
  147. package/dist/store-counts.d.ts.map +1 -0
  148. package/dist/store-counts.js +125 -0
  149. package/dist/store-counts.js.map +1 -0
  150. package/dist/store-guard.d.ts +106 -0
  151. package/dist/store-guard.d.ts.map +1 -0
  152. package/dist/store-guard.js +294 -0
  153. package/dist/store-guard.js.map +1 -0
  154. package/dist/swarm-brief.d.ts +95 -0
  155. package/dist/swarm-brief.d.ts.map +1 -0
  156. package/dist/swarm-brief.js +660 -0
  157. package/dist/swarm-brief.js.map +1 -0
  158. package/dist/trace-bundle.d.ts +8 -0
  159. package/dist/trace-bundle.d.ts.map +1 -1
  160. package/dist/trace-bundle.js +11 -0
  161. package/dist/trace-bundle.js.map +1 -1
  162. package/package.json +12 -11
  163. package/sbom.json +804 -154
  164. package/src/agents-policy.ts +46 -2
  165. package/src/amendment-trace.ts +441 -19
  166. package/src/backlog-public.ts +503 -0
  167. package/src/backlog-transitions.ts +77 -0
  168. package/src/backlog.ts +12 -0
  169. package/src/claim-check.ts +25 -2
  170. package/src/claude-hooks-assets.ts +227 -0
  171. package/src/clean-room-smoke.ts +195 -0
  172. package/src/cmd-usage.ts +29 -5
  173. package/src/codex-hooks-assets.ts +140 -30
  174. package/src/codex-hooks.ts +21 -1
  175. package/src/course-staleness.ts +125 -0
  176. package/src/destructive-guard-hook.ts +151 -0
  177. package/src/destructive-guard.ts +3027 -0
  178. package/src/discrimination-gate.ts +98 -19
  179. package/src/feature-adr-routing.ts +220 -22
  180. package/src/guard.ts +318 -0
  181. package/src/harness-core-location.ts +44 -0
  182. package/src/index.ts +111 -3
  183. package/src/lead-shift-gate.ts +145 -0
  184. package/src/ledger-backfill.ts +20 -1
  185. package/src/loop-blobs.generated.ts +12 -3
  186. package/src/loop-lint.ts +52 -7
  187. package/src/loop-plan-graph.ts +66 -1
  188. package/src/loop-trace.ts +13 -1
  189. package/src/managed-hooks.ts +5 -6
  190. package/src/model-recommender.ts +14 -3
  191. package/src/operations.ts +75 -0
  192. package/src/patterns.ts +33 -0
  193. package/src/publish.ts +27 -2
  194. package/src/registry.ts +3 -2
  195. package/src/score.ts +16 -4
  196. package/src/session-retro.ts +466 -11
  197. package/src/setup.ts +246 -9
  198. package/src/sign.ts +18 -1
  199. package/src/skills-verify.ts +99 -1
  200. package/src/stage-line.ts +151 -0
  201. package/src/statusline.ts +396 -47
  202. package/src/store-counts.ts +154 -0
  203. package/src/store-guard.ts +388 -0
  204. package/src/swarm-brief.ts +661 -0
  205. package/src/trace-bundle.ts +10 -0
@@ -13,9 +13,10 @@
13
13
  * SAFETY PROPERTY (ADR-001 §3, load-bearing): a rake seen for the FIRST time (effective count < threshold)
14
14
  * is taught silently but NOT drilled — no nagging on a one-off. Drills are for recurrent patterns only.
15
15
  */
16
- import { existsSync, readFileSync, readdirSync, statSync, openSync, readSync, closeSync } from 'node:fs';
17
- import { join } from 'node:path';
16
+ import { existsSync, readFileSync, readdirSync, statSync, openSync, readSync, closeSync, writeFileSync, renameSync, unlinkSync, mkdirSync } from 'node:fs';
17
+ import { join, basename, dirname } from 'node:path';
18
18
  import { homedir } from 'node:os';
19
+ import { withNamedLockSync, NamedLockTimeoutError } from './named-lock.js';
19
20
  export const RETRO_DOMAIN = 'retro';
20
21
  export const DEFAULT_DRILL_THRESHOLD = 2;
21
22
  export const PROCESS_SIGNATURES = [
@@ -46,6 +47,12 @@ export const PROCESS_SIGNATURES = [
46
47
  checklist: 'Run the tests/build (and read the output) BEFORE `git commit`. A green commit you did not verify is a guess.',
47
48
  skill: 'validate',
48
49
  },
50
+ {
51
+ id: 'correction-narrated-without-teach',
52
+ label: 'admitted an error in chat but never recorded it with `dz teach`',
53
+ socratic: 'You wrote «моя ошибка» / "correction of record" — where is the `dz teach` from that same turn? Predict what the lesson text (with its reproducer) should have been, then check the store.',
54
+ checklist: 'Narrating and recording are ONE action: in the SAME turn as the admission, run `dz teach "<lesson + reproducer>"`, then verify with a control `dz recall <keywords>` that surfaces it as a top hit. Chat is layer 4 — it compacts away; the store does not.',
55
+ },
49
56
  ];
50
57
  for (const s of PROCESS_SIGNATURES)
51
58
  Object.freeze(s);
@@ -69,6 +76,112 @@ const CODE_FILE_RE = /\.(ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|rb|c|h|cc|cpp|css|s
69
76
  // A real `git commit` command (allows -C/flags), anchored to a command boundary so `echo 'git commit'`
70
77
  // and `git log --grep commit` do NOT count (cross-model QE).
71
78
  const GIT_COMMIT_RE = /(?:^|&&|\|\||;|\|)\s*git(?:\s+-[A-Za-z-]+(?:\s+\S+)?)*\s+commit\b/;
79
+ // ── correction-narrated-without-teach (feature narrated-error-must-be-taught, ADR-001) ─────────────
80
+ // The owner rule of 2026-08-28: an error ADMITTED in chat must be TAUGHT — narration without a
81
+ // `dz teach` is the rake the owner rule was written for (the record of the pipe-exit-code repeat is
82
+ // CLAUDE.md § «Narrated errors are taught in the same turn» — a chat observation, not a re-runnable
83
+ // measurement, so no count is claimed here). Cyrillic-safe:
84
+ // leading letter-class lookbehind, no `\b` (does not anchor Cyrillic), inflected stems tolerated
85
+ // (ошибся/ошибалась/ошиблись; моей/мою ошибку). HONEST LIMITS, stated rather than papered over:
86
+ // · quotes are recognised ONLY as `>`-prefixed lines gated by a small fixed attribution list
87
+ // («ревью», reviewer, Codex, grade) — a review pasted WITHOUT `>` markers still fires (we accept
88
+ // that over missing real admissions), and any other quoting style is invisible to the heuristic;
89
+ // · the "REFUTED" possessive gate is per-EVENT, not per-sentence — a "my" from another clause can
90
+ // arm it; and it is case-sensitive by design (lowercase "refuted" quotes ordinary prose);
91
+ // · EN coverage is deliberately narrow ("correction of record", possessive-gated "REFUTED"): a
92
+ // plain "I was wrong" does not fire — extend only on measured evidence, precision first.
93
+ // Round 3, P1-1: the `я ошиб\w*` branch used to match the NOUN — «Я ошибку валидации исправил» is a
94
+ // COMPLETION REPORT, the commonest sentence an assistant writes, and it armed a teaching debt. The
95
+ // branch is now an ALLOWLIST of confession forms: the reflexive verb (ошибся/ошиблась/ошиблись), its
96
+ // imperfective and present (ошибался/ошибалась/ошибались/ошибаюсь) and the adverb (ошибочно). The
97
+ // noun survives ONLY in the possessive form the owner rule names literally, «моя ошибка» — a first
98
+ // branch that was always separate. MEASURED, reproducer
99
+ // `node features/narrated-error-must-be-taught/07_code_changes/field-admission-verb-probe.mjs`:
100
+ // over 95 transcripts the old and the new branch fire on the SAME 126 of 982 assistant texts — the
101
+ // tightening costs zero recall in the field. The defect itself is proven synthetically, on the
102
+ // reviewer's own string and two siblings (`--synthetic`), because this corpus happens to contain no
103
+ // instance of the noun form; that is stated rather than dressed up as a measured win.
104
+ // The adverb is in the allowlist for a measured reason: a verb-only draft dropped exactly one real
105
+ // field admission («я ошибочно склеил их»), quoted by `--removed`.
106
+ const ADMISSION_RE = /(?<![a-zа-яё])(?:мо(?:я|ей|ю|и|их)\s+ошибк\w*|я\s+(?:ошиб(?:ся|лась|лись)|ошиба(?:юсь|лся|лась|лись)|ошибочно)(?![a-zа-яё])|я\s+был[аи]?\s+неправ\w*|мой\s+диагноз[^.\n]{0,80}?невер\w*|correction of record)/i;
107
+ const FIRST_PERSON_RE = /(?<![a-zа-яё])(?:my|мой|моя|моё|мои|мою|моей|моего|моих)(?![a-zа-яё])/i;
108
+ const REFUTED_RE = /\bREFUTED\b/; // case-sensitive — see limits above
109
+ const ATTRIBUTION_RE = /(?<![a-zа-яё])(?:ревью|reviewer|codex|grade)(?![a-zа-яё])/i;
110
+ // A teach MENTION in event text: `dz teach`, `…/bin.js teach` (quoted path tolerated), `$DZ teach`.
111
+ // Used by the DETECTOR only (anti-accusation register — prefer a miss to a false "you never
112
+ // taught"); the sentinel requires the strict command form below.
113
+ const TEACH_RE = /(?:(?<![\w.$-])dz|bin\.js['"]?|\$DZ)\s+teach(?![a-zа-яё])/i;
114
+ // A teach INVOCATION as an EXECUTED COMMAND (cross-family QE P1-2): anchored at a COMMAND BOUNDARY
115
+ // (start, or after && ; | ||), optional `node` + path prefix, and accepted ONLY from a Bash
116
+ // tool_use event — never from tool_result OUTPUT and never from prose. Without the anchor,
117
+ // `echo "dz teach later"` / `grep "dz teach"` / a tool result echoing the phrase all CLEARED the
118
+ // sentinel with no lesson stored — a self-absolving loophole. Honest limits: this is a regex over
119
+ // a shell string, not a shell parser — a quoted `"…; dz teach …"` still matches (boundary chars
120
+ // inside quotes), and a `VAR=1 dz teach` env-prefix form does not; both are accepted as-is.
121
+ // ADR-005: the `m` flag makes the START OF EVERY LINE a boundary too, so a multi-line Bash command
122
+ // whose second line IS the teach (`cd /b\ndz teach …`; the dominant field form `DZ=…; B=…\n$DZ teach
123
+ // … --project $B`) pays. MEASURED 2026-09-06 over 95 transcripts — reproducer:
124
+ // `node features/narrated-error-must-be-taught/07_code_changes/field-teach-boundary-probe.mjs`
125
+ // → of 448 teach-shaped Bash strings, 89 paid under the old single-line `/i` regex, 241 more pay
126
+ // only once `m` is on, and 118 stay refused for other reasons. The REFUSE side is unchanged
127
+ // (every P1-2 decoy still leaves the debt armed).
128
+ // Named, accepted residual: a heredoc BODY line beginning with `dz teach` now reads as a command and
129
+ // pays — a regex is not a shell parser; ADR-003 Option C (tokenizer) is the deferred fix.
130
+ const TEACH_CMD_RE = /(?:^|&&|\|\||;|\|)\s*(?:node\s+)?(?:[^\s&|;]*\/)?(?:dz|bin\.js['"]?|\$DZ)\s+teach(?![a-zа-яё])/im;
131
+ // R1 (fix round 2, cross-family review of the fix round — Codex `gpt-5.6-sol`): the command TEXT
132
+ // proves a teach stood at a command boundary, never that it RAN. The reviewer's reproducer
133
+ // `exit 0\ndz teach "never runs"` matched `TEACH_CMD_RE` and settled the debt with nothing stored.
134
+ // So the text stays NECESSARY and this receipt — a line `dz teach` itself prints once the store was
135
+ // written — is what is SUFFICIENT. The five shapes are quoted from live runs against a scratch store
136
+ // (2026-09-06): `Learned: "…"` + `Total patterns:` + `store (written):` on a new lesson,
137
+ // `↳ reinforced …` on `--reinforce`, `↳ mirrored to vector tier (…)` from the quarantine mirror, and
138
+ // `Imported N pattern(s) …` from `--from-json`. Deliberately NOT line-anchored: a `tool_result`
139
+ // reaches the fold either as raw stdout or as a JSON-stringified block list, and is truncated at
140
+ // 2000 chars, so `^` would miss the receipt in the second shape.
141
+ // MEASURED cost, reproducer
142
+ // `node features/narrated-error-must-be-taught/07_code_changes/field-teach-receipt-probe.mjs`:
143
+ // of 329 executed-teach-shaped Bash calls in 95 transcripts, 288 carry a receipt in their paired
144
+ // result, 41 do not (decoys, failures, and real teaches whose stdout was redirected away) and 4 are
145
+ // is_error. Those 41 now stay ARMED — a false ARM costs one visible directive, a false CLEAR costs
146
+ // an untaught error, and ADR-003 D2 ranks it that way.
147
+ const TEACH_RECEIPT_RE = /Learned:\s*"|\u21b3\s*(?:reinforced|mirrored to vector tier)|store \(written\):|Total patterns:|Imported \d+ pattern/;
148
+ // The injected debt directive itself names `dz teach` and lands in the transcript — without this
149
+ // exclusion the scanner would read its OWN directive as the payment (ADR-001 D4, the self-clearing
150
+ // trap). Events carrying the marker are excluded from BOTH teach and admission matching.
151
+ export const RETRO_DEBT_MARKER = '⚠ RETRO DEBT';
152
+ /** A teach MENTION in this event's text — never inside the injected directive (self-clear trap).
153
+ * Detector register only; the sentinel uses {@link isTeachCommand}. */
154
+ function isTeachText(text) {
155
+ return !text.includes(RETRO_DEBT_MARKER) && TEACH_RE.test(text);
156
+ }
157
+ /** A REAL executed teach: a Bash tool_use whose COMMAND invokes teach at a command boundary.
158
+ * tool_result events carry no `tool` name in this stream, so echoed output can never qualify. */
159
+ function isTeachCommand(e) {
160
+ return e.kind === 'tool' && e.tool === 'Bash' && !e.text.includes(RETRO_DEBT_MARKER) && TEACH_CMD_RE.test(e.text);
161
+ }
162
+ /**
163
+ * The admission snippet of an assistant event, or null. Applies the quoted-review control and the
164
+ * REFUTED possessive gate; excludes events carrying the directive marker (they QUOTE the snippet).
165
+ */
166
+ function admissionSnippet(text) {
167
+ if (text.includes(RETRO_DEBT_MARKER))
168
+ return null;
169
+ const m = ADMISSION_RE.exec(text);
170
+ const r = REFUTED_RE.exec(text);
171
+ const refutedAdmits = r !== null && FIRST_PERSON_RE.test(text.slice(0, r.index));
172
+ if (m === null && !refutedAdmits)
173
+ return null;
174
+ if (ATTRIBUTION_RE.test(text)) {
175
+ // Attribution present: an admission counts only if a marker appears on an UNQUOTED line.
176
+ const unquoted = text
177
+ .split('\n')
178
+ .some((line) => !/^\s*>/.test(line) && (ADMISSION_RE.test(line) || (refutedAdmits && REFUTED_RE.test(line))));
179
+ if (!unquoted)
180
+ return null;
181
+ }
182
+ const idx = m !== null ? m.index : r.index;
183
+ return text.slice(Math.max(0, idx - 30), idx + 170);
184
+ }
72
185
  /**
73
186
  * Detect PROCESS rakes over the event stream. PURE + deterministic. Conservative (high-precision): prefer a
74
187
  * miss to a false accusation (a wrong "you claimed done without testing" erodes trust worse than a miss).
@@ -85,15 +198,29 @@ export function detectProcessRakes(events) {
85
198
  };
86
199
  // NB: no `didnt-read-before-edit` signature — the harness ENFORCES read-before-edit (an Edit fails
87
200
  // without a prior Read), so a genuine violation is near-impossible; that signal was pure artifact
88
- // (cross-session / bounded-window reads, 88 false hits on the dogfood) and was dropped after cross-model QE.
201
+ // (cross-session / bounded-window reads produced false hits on the dogfood run that run is not
202
+ // reproducible from this repo, so no count is quoted) and was dropped after cross-model QE.
89
203
  const editsPerFile = new Map();
90
204
  const failedAfterEdit = new Set(); // files that had a TEST failure after being edited
91
205
  let lastEditedFile;
92
206
  let changedSinceCommit = false; // a CODE Edit/Write happened since the last commit
93
207
  let verifiedSinceCommit = false; // a test/build ran AFTER the last code change
94
208
  const TESTFAIL_RE = /\b(fail(ed|ing|s)?|assertion|assert|expected|not ok|panic|traceback|error ts\d|\d+ failed)\b/i;
209
+ // correction-narrated-without-teach is DEFERRED: an admission is settled only by a teach in a
210
+ // LATER event, so the verdict is known at end-of-stream. Conservative (anti-accusation): here ANY
211
+ // event text matching the teach pattern settles — prose "already taught with dz teach" suppresses
212
+ // the drill; the sentinel in foldAdmissionDebt is stricter (tool-only) for the opposite reason.
213
+ const admissions = [];
214
+ let lastTeachIndex = -1;
95
215
  for (let i = 0; i < events.length; i++) {
96
216
  const e = events[i];
217
+ if (isTeachText(e.text))
218
+ lastTeachIndex = i;
219
+ if (e.kind === 'assistant' && !isTeachText(e.text)) {
220
+ const snippet = admissionSnippet(e.text);
221
+ if (snippet !== null)
222
+ admissions.push({ index: i, snippet });
223
+ }
97
224
  // A code change marks the commit cycle dirty AND invalidates any earlier verification (it is now
98
225
  // stale — a test that ran BEFORE this edit did not verify it; cross-model QE High).
99
226
  if (e.kind === 'tool' && (e.tool === 'Edit' || e.tool === 'Write') && e.file && CODE_FILE_RE.test(e.file)) {
@@ -166,6 +293,12 @@ export function detectProcessRakes(events) {
166
293
  bump('ignored-user-correction', e.text);
167
294
  }
168
295
  }
296
+ // Resolve the deferred admissions: unpaid = no teach at a LATER index (its own event never
297
+ // contains a teach — excluded above), so `lastTeachIndex <= index` means the debt stood at
298
+ // end-of-stream. A teach BEFORE the admission does not settle it (acid A7).
299
+ for (const a of admissions)
300
+ if (lastTeachIndex <= a.index)
301
+ bump('correction-narrated-without-teach', a.snippet);
169
302
  const hits = [];
170
303
  for (const sig of PROCESS_SIGNATURES) {
171
304
  const c = counts.get(sig.id);
@@ -272,14 +405,25 @@ const isObj = (x) => x !== null && typeof x === 'object';
272
405
  /**
273
406
  * Parse a Claude Code JSONL transcript into a normalized event stream. Bad/`null`/malformed lines are
274
407
  * skipped (never throws — cross-model QE caught a crash on a `null` line and a `[null]` content block).
275
- * Text blocks WITHIN one message are merged into a SINGLE assistant/user event, so a multi-block turn
276
- * ("Done." + "Fixed.") counts as ONE claim, not two (else the anti-noise guarantee is defeated).
408
+ * ADJACENT text blocks WITHIN one message are merged into a single assistant/user event, so a
409
+ * multi-block turn ("Done." + "Fixed.") counts as ONE claim, not two (the anti-noise guarantee)
410
+ * but original CONTENT-BLOCK ORDER is preserved across tool blocks: admission text followed by a
411
+ * `dz teach` tool_use in the SAME message must settle the debt, which requires the teach event to
412
+ * land AFTER the text event (cross-family QE P1-1: the old flush-at-end put all text last, so a
413
+ * same-turn teach looked EARLIER than its admission and the happy path read as an unpaid debt).
277
414
  */
278
415
  export function streamSessionEvents(path) {
279
- const out = [];
280
416
  const raw = readBounded(path);
281
417
  if (raw === '')
282
- return out;
418
+ return [];
419
+ return parseSessionJsonl(raw);
420
+ }
421
+ /**
422
+ * Parse a JSONL CHUNK (whole file or an incremental tail of complete lines) into events. PURE.
423
+ * Extracted from streamSessionEvents so the per-turn tail scan parses only the new bytes.
424
+ */
425
+ export function parseSessionJsonl(raw) {
426
+ const out = [];
283
427
  for (const line of raw.split('\n')) {
284
428
  const t = line.trim();
285
429
  if (t === '')
@@ -306,6 +450,14 @@ export function streamSessionEvents(path) {
306
450
  if (!Array.isArray(content))
307
451
  continue;
308
452
  const textParts = [];
453
+ // Flush pending ADJACENT text before any tool block, so block order survives into the event
454
+ // stream (cross-family QE P1-1 — see the doc comment above).
455
+ const flushText = () => {
456
+ if (textParts.length === 0)
457
+ return;
458
+ out.push({ kind: role === 'assistant' ? 'assistant' : 'user', text: textParts.join('\n') });
459
+ textParts.length = 0;
460
+ };
309
461
  for (const b of content) {
310
462
  if (!isObj(b))
311
463
  continue; // guard a `[null]` block (cross-model QE)
@@ -313,22 +465,23 @@ export function streamSessionEvents(path) {
313
465
  textParts.push(b.text);
314
466
  }
315
467
  else if (b.type === 'tool_use') {
468
+ flushText();
316
469
  const input = isObj(b.input) ? b.input : undefined;
317
470
  const file = input?.file_path ?? input?.path;
318
471
  const name = typeof b.name === 'string' ? b.name : undefined;
319
472
  // Capture the Bash COMMAND as the event text so a real verification (`pnpm tsc`, `npm test`) is
320
473
  // visible — dropping it made the "done without verify" check blind (cross-model QE).
321
474
  const text = (name === 'Bash' && typeof input?.command === 'string') ? input.command : (name ?? '');
322
- out.push({ kind: 'tool', text, ...(name ? { tool: name } : {}), ...(file ? { file } : {}) });
475
+ out.push({ kind: 'tool', text, ...(name ? { tool: name } : {}), ...(file ? { file } : {}), ...(typeof b.id === 'string' ? { toolUseId: b.id } : {}) });
323
476
  }
324
477
  else if (b.type === 'tool_result') {
478
+ flushText();
325
479
  const c = b.content;
326
480
  const text = typeof c === 'string' ? c : JSON.stringify(c ?? '');
327
- out.push({ kind: 'tool', text: text.slice(0, 2000), ok: b.is_error !== true });
481
+ out.push({ kind: 'tool', text: text.slice(0, 2000), ok: b.is_error !== true, ...(typeof b.tool_use_id === 'string' ? { toolUseId: b.tool_use_id } : {}) });
328
482
  }
329
483
  }
330
- if (textParts.length > 0)
331
- out.push({ kind: role === 'assistant' ? 'assistant' : 'user', text: textParts.join('\n') });
484
+ flushText();
332
485
  }
333
486
  return out;
334
487
  }
@@ -362,4 +515,294 @@ export function findLatestTranscript(repoRoot) {
362
515
  catch { /* ignore */ }
363
516
  return best === null ? null : best.path;
364
517
  }
518
+ // ── Per-turn admission-debt scan (feature narrated-error-must-be-taught, ADR-001 D2/D4) ────────────
519
+ // The Stop hook runs `dz retro --scan-tail` after EVERY assistant turn, so this half is built around
520
+ // one budget: O(new bytes) — a persisted byte offset, no full re-read, no store open, no subprocess.
521
+ // The sentinel `.dz/retro-pending.json` is the debt; the recall hook turns it into a next-prompt
522
+ // directive; a REAL teach invocation (a TOOL event — prose promises never pay, ADR-001 D4) clears it.
523
+ export const RETRO_SCAN_STATE_FILE = 'retro-scan-state.json';
524
+ export const RETRO_PENDING_FILE = 'retro-pending.json';
525
+ /** Bound the very FIRST scan of an already-huge transcript; later scans read only the new bytes. */
526
+ const MAX_TAIL_SCAN_BYTES = 8 * 1024 * 1024;
527
+ /** Without a session id to compare, a sentinel older than this is stale (fallback freshness only). */
528
+ const SENTINEL_FRESH_MS = 30 * 60 * 1000;
529
+ /**
530
+ * Decide which transcript a `dz retro --scan-tail` run is entitled to read. PURE.
531
+ *
532
+ * Round 3, P1-3 (Codex r2 on `harness-cli/src/cli.ts:8508-8510`): the Stop-hook mode fell back to
533
+ * `findLatestTranscript(root)` whenever no positional path was given, so it scanned whichever file
534
+ * happened to have the newest mtime. With three to five sessions and their subagents alive at once —
535
+ * the ordinary state of this machine, not an edge case — that is routinely ANOTHER session's file:
536
+ * the scan advances the wrong session's offset and never sees the current turn's admission.
537
+ *
538
+ * The Stop hook hands the exact path on stdin (`{"session_id":…,"transcript_path":…}`), so the order
539
+ * is: an explicit `--transcript`, then a positional path (a human running it by hand means THAT file),
540
+ * then the hook payload. With none of the three the answer is a REFUSAL with a stated reason — never
541
+ * a guess. Refusing is safe here in a way guessing is not: a skipped scan self-heals on the next turn
542
+ * (nothing advanced), while a scan of the wrong transcript corrupts two sessions' state at once.
543
+ *
544
+ * A blank or whitespace-only string is NOT a path: an unset shell variable expands to exactly that.
545
+ */
546
+ export function resolveScanTailTranscript(input) {
547
+ const pick = (v) => (typeof v === 'string' && v.trim() !== '' ? v : null);
548
+ const flag = pick(input.flag);
549
+ if (flag !== null)
550
+ return { path: flag, source: 'flag' };
551
+ const positional = pick(input.positional);
552
+ if (positional !== null)
553
+ return { path: positional, source: 'positional' };
554
+ const raw = typeof input.stdin === 'string' ? input.stdin.trim() : '';
555
+ if (raw !== '') {
556
+ let payload;
557
+ try {
558
+ payload = JSON.parse(raw);
559
+ }
560
+ catch {
561
+ return {
562
+ path: null,
563
+ source: 'none',
564
+ reason: 'the Stop-hook payload on stdin could not be parsed as JSON, so it names no transcript_path — pass --transcript <path> explicitly',
565
+ };
566
+ }
567
+ const p = isObj(payload) ? payload.transcript_path : undefined;
568
+ const named = typeof p === 'string' ? pick(p) : null;
569
+ if (named !== null)
570
+ return { path: named, source: 'stop-hook-stdin' };
571
+ }
572
+ return {
573
+ path: null,
574
+ source: 'none',
575
+ reason: 'no transcript_path on stdin and no --transcript/positional path — refusing to scan the newest transcript on disk, which on a machine running several sessions at once is routinely another session\'s',
576
+ };
577
+ }
578
+ /** The scan-state + sentinel pair is a read-modify-write store; per the repo concurrency rule
579
+ * (`.claude/rules/cross-runtime-concurrency.md`) it gets a named lock in the same change. */
580
+ export const RETRO_SCAN_LOCK_NAME = 'retro-scan';
581
+ /** A Stop hook must not queue behind a long holder — give up fast; the skipped scan self-heals
582
+ * (state not advanced ⇒ the next turn re-reads the same bytes). */
583
+ const RETRO_SCAN_LOCK_TIMEOUT_MS = 2_000;
584
+ /**
585
+ * Fold the admission debt over an event chunk. PURE. Asymmetric by design (ADR-001 D4): a new
586
+ * assistant admission ARMS the debt; only {@link isTeachCommand} — a Bash tool_use invoking teach
587
+ * at a command boundary — PAYS it. Neither prose ("I'll run dz teach"), nor an `echo`/`grep` decoy,
588
+ * nor a tool_result echoing the phrase settles anything (cross-family QE P1-2). Since the fix round's
589
+ * own review (finding R1) the command text is NECESSARY but not SUFFICIENT: a teach that carries a
590
+ * `tool_use_id` is only REGISTERED by its call, and the debt is settled by that call's own result
591
+ * carrying a teach RECEIPT ({@link TEACH_RECEIPT_RE}) — `exit 0\ndz teach "never runs"` pays nothing,
592
+ * and two parallel teaches that both come back receipt-less leave the debt armed (round 3, P1-2).
593
+ * A teach with NO id still pays on the call alone: nothing could ever confirm it. The detector in
594
+ * detectProcessRakes stays looser (any non-directive text mention) because its failure mode is a
595
+ * false accusation, while this fold's failure mode is a silently forgiven debt.
596
+ */
597
+ export function foldAdmissionDebt(events, prior) {
598
+ let pending = prior;
599
+ // EVERY teach issued against the live debt and still awaiting its own result, by `tool_use_id`.
600
+ // Round 3, P1-2: a single `lastPaid` slot lost the FIRST of two parallel teaches — the second call
601
+ // saw an already-cleared `pending` and overwrote the slot with null, so when both results came back
602
+ // receipt-less neither could re-arm and the debt was silently forgiven. A set, and settlement moved
603
+ // to the RECEIPT, removes the whole class: the CALL now registers a candidate and changes nothing.
604
+ const awaiting = new Set();
605
+ for (const e of events) {
606
+ if (isTeachCommand(e)) {
607
+ if (typeof e.toolUseId === 'string') {
608
+ // Registered, not settled. The debt stands until this call's own result carries a receipt.
609
+ if (pending !== null)
610
+ awaiting.add(e.toolUseId);
611
+ }
612
+ else {
613
+ // No pairing key ⇒ no result can ever confirm OR refute this call, so it pays on the command
614
+ // alone — the pre-ADR-004 behaviour, kept deliberately so every id-less fixture and every
615
+ // transcript written before ids reproduce their old outcome exactly.
616
+ pending = null;
617
+ awaiting.clear();
618
+ }
619
+ continue;
620
+ }
621
+ // The RESULT of one of those calls (a tool_result carries no tool name in this stream, by
622
+ // construction). A receipt on an ok result settles the debt the call was issued against; an
623
+ // is_error result, or an exit-0 run whose teach line was never reached, settles nothing and the
624
+ // candidate is simply dropped — the debt stays armed for the other candidates and for the scan.
625
+ if (e.kind === 'tool' && e.tool === undefined && typeof e.toolUseId === 'string' && awaiting.has(e.toolUseId)) {
626
+ awaiting.delete(e.toolUseId);
627
+ if (e.ok !== false && TEACH_RECEIPT_RE.test(e.text)) {
628
+ pending = null;
629
+ awaiting.clear();
630
+ }
631
+ continue;
632
+ }
633
+ if (e.kind === 'assistant') {
634
+ const snippet = admissionSnippet(e.text);
635
+ // A NEW admission supersedes every teach still in flight: those calls were issued against the
636
+ // OLDER debt, so their receipts must not settle this one (ADR-001 D4 asymmetry).
637
+ if (snippet !== null) {
638
+ pending = { snippet };
639
+ awaiting.clear();
640
+ }
641
+ }
642
+ }
643
+ return pending;
644
+ }
645
+ const writeJsonAtomic = (path, value) => {
646
+ const tmp = `${path}.${process.pid}.tmp`;
647
+ writeFileSync(tmp, JSON.stringify(value));
648
+ renameSync(tmp, path);
649
+ };
650
+ /**
651
+ * One incremental scan transaction: read state → read the new transcript bytes (whole lines only —
652
+ * a partial trailing line is left for the next scan) → fold the debt → persist state + sentinel.
653
+ * NEVER throws (it runs inside a Stop hook; a broken scan must never surface as a turn failure).
654
+ *
655
+ * The WHOLE read→fold→write runs under `withNamedLockSync` (cross-family QE P1-3): two overlapping
656
+ * Stop scans that both read the same offset/sentinel and then rename/unlink independently lose one
657
+ * side's update — atomic per-file renames do not prevent that, only mutual exclusion does. The
658
+ * critical section is short and synchronous (bounded ≤8 MB read, no subprocess, 65 ms measured on
659
+ * a 5 MB first scan) and the lock lives beside the store it guards: `<root>/.dz/locks/retro-scan.lock`
660
+ * for the store files in `<root>/.dz/`. A contended scan gives up fast and reports `contended` —
661
+ * nothing advanced, so the next turn re-scans the same bytes (self-healing, never a lost update).
662
+ */
663
+ export function runRetroTailScan(dzDir, transcriptPath, nowIso) {
664
+ if (transcriptPath === null || transcriptPath === '')
665
+ return { status: 'no-transcript', scannedBytes: 0, offset: 0 };
666
+ try {
667
+ return withNamedLockSync(dirname(dzDir), RETRO_SCAN_LOCK_NAME, () => scanTailUnderLock(dzDir, transcriptPath, nowIso), { timeoutMs: RETRO_SCAN_LOCK_TIMEOUT_MS });
668
+ }
669
+ catch (e) {
670
+ if (e instanceof NamedLockTimeoutError)
671
+ return { status: 'contended', scannedBytes: 0, offset: 0 };
672
+ // Compromised lock or any unexpected failure: report nothing, advance nothing (never-block).
673
+ return { status: 'none', scannedBytes: 0, offset: 0 };
674
+ }
675
+ }
676
+ /** The transaction body — call ONLY under the named lock. Never throws for ordinary fs failures. */
677
+ function scanTailUnderLock(dzDir, transcriptPath, nowIso) {
678
+ try {
679
+ const statePath = join(dzDir, RETRO_SCAN_STATE_FILE);
680
+ const pendingPath = join(dzDir, RETRO_PENDING_FILE);
681
+ let offset = 0;
682
+ try {
683
+ const st = JSON.parse(readFileSync(statePath, 'utf8'));
684
+ if (st.transcript === transcriptPath && typeof st.offset === 'number' && Number.isFinite(st.offset) && st.offset >= 0)
685
+ offset = Math.floor(st.offset);
686
+ }
687
+ catch { /* first scan of this transcript */ }
688
+ // Prior debt carries over ONLY for the same session; a stale sentinel (another session's debt)
689
+ // is dropped — the PreCompact/SessionEnd retro of THAT session was its collector, and injecting
690
+ // an old session's debt into a new one is noise (acid A9).
691
+ let prior = null;
692
+ let hadSentinel = false;
693
+ try {
694
+ const s = JSON.parse(readFileSync(pendingPath, 'utf8'));
695
+ if (s.transcript === transcriptPath && typeof s.snippet === 'string') {
696
+ prior = { snippet: s.snippet };
697
+ hadSentinel = true;
698
+ }
699
+ else {
700
+ try {
701
+ unlinkSync(pendingPath);
702
+ }
703
+ catch { /* already gone */ }
704
+ }
705
+ }
706
+ catch { /* no sentinel */ }
707
+ let size = 0;
708
+ try {
709
+ size = statSync(transcriptPath).size;
710
+ }
711
+ catch {
712
+ return prior !== null
713
+ ? { status: 'pending', snippet: prior.snippet, scannedBytes: 0, offset }
714
+ : { status: 'none', scannedBytes: 0, offset };
715
+ }
716
+ if (size < offset)
717
+ offset = 0; // truncated/rotated transcript
718
+ let jumped = offset === 0 && size > MAX_TAIL_SCAN_BYTES; // bound the first scan of a huge file
719
+ if (size - offset > MAX_TAIL_SCAN_BYTES) {
720
+ offset = size - MAX_TAIL_SCAN_BYTES;
721
+ jumped = true;
722
+ }
723
+ let consumed = 0;
724
+ let events = [];
725
+ if (size > offset) {
726
+ const fd = openSync(transcriptPath, 'r');
727
+ try {
728
+ const want = size - offset;
729
+ const buf = Buffer.allocUnsafe(want);
730
+ const got = readSync(fd, buf, 0, want, offset);
731
+ let lastNl = -1;
732
+ for (let i = got - 1; i >= 0; i--)
733
+ if (buf[i] === 0x0a) {
734
+ lastNl = i;
735
+ break;
736
+ }
737
+ if (lastNl >= 0) {
738
+ consumed = lastNl + 1;
739
+ let chunk = buf.toString('utf8', 0, consumed);
740
+ if (jumped) { // landed mid-line: drop the partial head
741
+ const nl = chunk.indexOf('\n');
742
+ chunk = nl >= 0 ? chunk.slice(nl + 1) : '';
743
+ }
744
+ events = parseSessionJsonl(chunk);
745
+ }
746
+ }
747
+ finally {
748
+ closeSync(fd);
749
+ }
750
+ }
751
+ const next = foldAdmissionDebt(events, prior);
752
+ const newOffset = offset + consumed;
753
+ mkdirSync(dzDir, { recursive: true });
754
+ writeJsonAtomic(statePath, { schema: 1, transcript: transcriptPath, offset: newOffset });
755
+ if (next !== null) {
756
+ const sentinel = {
757
+ schema: 1,
758
+ sessionId: basename(transcriptPath).replace(/\.jsonl$/, ''),
759
+ transcript: transcriptPath,
760
+ snippet: next.snippet.replace(/\s+/g, ' ').trim().slice(0, 200),
761
+ ts: nowIso ?? new Date().toISOString(),
762
+ };
763
+ writeJsonAtomic(pendingPath, sentinel);
764
+ return { status: 'pending', snippet: sentinel.snippet, scannedBytes: consumed, offset: newOffset };
765
+ }
766
+ if (hadSentinel) {
767
+ try {
768
+ unlinkSync(pendingPath);
769
+ }
770
+ catch { /* already gone */ }
771
+ return { status: 'cleared', scannedBytes: consumed, offset: newOffset };
772
+ }
773
+ return { status: 'none', scannedBytes: consumed, offset: newOffset };
774
+ }
775
+ catch {
776
+ return { status: 'none', scannedBytes: 0, offset: 0 };
777
+ }
778
+ }
779
+ /**
780
+ * Is this sentinel about the CURRENT session? Prefer identity (session id, then transcript path);
781
+ * only when the hook payload carries neither does the ts-freshness window decide. PURE.
782
+ */
783
+ /** TEST-ONLY handle on the UNLOCKED transaction body (ADR-002 D-4 / ADR-003 clause 3 RED half):
784
+ * the lost-update reproducer must be able to run the same read→fold→write WITHOUT mutual
785
+ * exclusion, so the named lock is proven to be what prevents the regression. Never call this from
786
+ * production code — `runRetroTailScan` is the only sanctioned entry point. */
787
+ export const __scanTailUnderLockForTest = scanTailUnderLock;
788
+ export function retroSentinelIsFresh(sentinel, ctx) {
789
+ if (typeof sentinel.snippet !== 'string' || sentinel.snippet === '')
790
+ return false;
791
+ if (typeof ctx.sessionId === 'string' && ctx.sessionId !== '')
792
+ return sentinel.sessionId === ctx.sessionId;
793
+ if (typeof ctx.transcriptPath === 'string' && ctx.transcriptPath !== '')
794
+ return sentinel.transcript === ctx.transcriptPath;
795
+ const ts = typeof sentinel.ts === 'string' ? Date.parse(sentinel.ts) : NaN;
796
+ return Number.isFinite(ts) && ctx.nowMs - ts >= 0 && ctx.nowMs - ts < SENTINEL_FRESH_MS;
797
+ }
798
+ /**
799
+ * The ≤300-char next-prompt directive. It deliberately does NOT spell a teach invocation the scanner
800
+ * could mistake for the payment: events carrying RETRO_DEBT_MARKER are excluded from matching, and
801
+ * the phrasing keeps `dz` and `teach` apart as a second guard (ADR-001 D4). It demands the SPECIFIC
802
+ * lesson from the assistant — the hook itself only ever auto-teaches the templated one (D3).
803
+ */
804
+ export function renderRetroDebtDirective(sentinel) {
805
+ const snip = sentinel.snippet.replace(/\s+/g, ' ').trim().slice(0, 70);
806
+ return `${RETRO_DEBT_MARKER}: last turn admitted an error — «${snip}» — with no recorded lesson. FIRST, before other work: run the dz \`teach\` command with the lesson + reproducer, then verify via dz recall. Narrating and recording are ONE action.`;
807
+ }
365
808
  //# sourceMappingURL=session-retro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-retro.js","sourceRoot":"","sources":["../src/session-retro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-retro.js","sourceRoot":"","sources":["../src/session-retro.ts"],"names":[],"mappings":"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"}