@dzhechkov/harness-core 0.5.0 → 0.5.2

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 (96) hide show
  1. package/.dz-manifest.json +339 -75
  2. package/README.md +47 -4
  3. package/dist/codex-hooks-assets.d.ts.map +1 -1
  4. package/dist/codex-hooks-assets.js +39 -2
  5. package/dist/codex-hooks-assets.js.map +1 -1
  6. package/dist/codex-hooks-verify.d.ts +23 -2
  7. package/dist/codex-hooks-verify.d.ts.map +1 -1
  8. package/dist/codex-hooks-verify.js +29 -0
  9. package/dist/codex-hooks-verify.js.map +1 -1
  10. package/dist/codex-hooks.d.ts +90 -7
  11. package/dist/codex-hooks.d.ts.map +1 -1
  12. package/dist/codex-hooks.js +171 -21
  13. package/dist/codex-hooks.js.map +1 -1
  14. package/dist/feature-adr-routing.d.ts +22 -0
  15. package/dist/feature-adr-routing.d.ts.map +1 -1
  16. package/dist/feature-adr-routing.js +45 -0
  17. package/dist/feature-adr-routing.js.map +1 -1
  18. package/dist/index.d.ts +11 -4
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +17 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/loop-blobs.generated.d.ts +1 -1
  23. package/dist/loop-blobs.generated.d.ts.map +1 -1
  24. package/dist/loop-blobs.generated.js +12 -3
  25. package/dist/loop-blobs.generated.js.map +1 -1
  26. package/dist/loop-plan.d.ts +70 -0
  27. package/dist/loop-plan.d.ts.map +1 -1
  28. package/dist/loop-plan.js +103 -0
  29. package/dist/loop-plan.js.map +1 -1
  30. package/dist/loop-render.d.ts.map +1 -1
  31. package/dist/loop-render.js +38 -130
  32. package/dist/loop-render.js.map +1 -1
  33. package/dist/loop-run-semantics.d.ts +130 -0
  34. package/dist/loop-run-semantics.d.ts.map +1 -0
  35. package/dist/loop-run-semantics.js +257 -0
  36. package/dist/loop-run-semantics.js.map +1 -0
  37. package/dist/loop-trace.d.ts +106 -5
  38. package/dist/loop-trace.d.ts.map +1 -1
  39. package/dist/loop-trace.js +151 -18
  40. package/dist/loop-trace.js.map +1 -1
  41. package/dist/managed-hooks.d.ts +10 -0
  42. package/dist/managed-hooks.d.ts.map +1 -1
  43. package/dist/managed-hooks.js +17 -5
  44. package/dist/managed-hooks.js.map +1 -1
  45. package/dist/named-lock.d.ts +57 -0
  46. package/dist/named-lock.d.ts.map +1 -0
  47. package/dist/named-lock.js +247 -0
  48. package/dist/named-lock.js.map +1 -0
  49. package/dist/operations.d.ts +81 -5
  50. package/dist/operations.d.ts.map +1 -1
  51. package/dist/operations.js +356 -38
  52. package/dist/operations.js.map +1 -1
  53. package/dist/parity.d.ts +70 -2
  54. package/dist/parity.d.ts.map +1 -1
  55. package/dist/parity.js +133 -2
  56. package/dist/parity.js.map +1 -1
  57. package/dist/qe-bridge.d.ts +291 -0
  58. package/dist/qe-bridge.d.ts.map +1 -0
  59. package/dist/qe-bridge.js +538 -0
  60. package/dist/qe-bridge.js.map +1 -0
  61. package/dist/score.d.ts.map +1 -1
  62. package/dist/score.js +43 -9
  63. package/dist/score.js.map +1 -1
  64. package/dist/trace-corroborate.d.ts +48 -0
  65. package/dist/trace-corroborate.d.ts.map +1 -0
  66. package/dist/trace-corroborate.js +172 -0
  67. package/dist/trace-corroborate.js.map +1 -0
  68. package/dist/workflow-run-dispatch.d.ts +230 -0
  69. package/dist/workflow-run-dispatch.d.ts.map +1 -0
  70. package/dist/workflow-run-dispatch.js +363 -0
  71. package/dist/workflow-run-dispatch.js.map +1 -0
  72. package/dist/workflow-run.d.ts +513 -0
  73. package/dist/workflow-run.d.ts.map +1 -0
  74. package/dist/workflow-run.js +1377 -0
  75. package/dist/workflow-run.js.map +1 -0
  76. package/package.json +2 -2
  77. package/sbom.json +740 -80
  78. package/src/codex-hooks-assets.ts +39 -2
  79. package/src/codex-hooks-verify.ts +55 -2
  80. package/src/codex-hooks.ts +172 -20
  81. package/src/feature-adr-routing.ts +55 -0
  82. package/src/index.ts +46 -1
  83. package/src/loop-blobs.generated.ts +12 -3
  84. package/src/loop-plan.ts +185 -0
  85. package/src/loop-render.ts +38 -128
  86. package/src/loop-run-semantics.ts +278 -0
  87. package/src/loop-trace.ts +207 -16
  88. package/src/managed-hooks.ts +26 -5
  89. package/src/named-lock.ts +277 -0
  90. package/src/operations.ts +441 -40
  91. package/src/parity.ts +177 -2
  92. package/src/qe-bridge.ts +737 -0
  93. package/src/score.ts +50 -9
  94. package/src/trace-corroborate.ts +205 -0
  95. package/src/workflow-run-dispatch.ts +459 -0
  96. package/src/workflow-run.ts +1773 -0
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Named advisory locks — `.dz/locks/<name>.lock` (feature qe-bridge-claude, ADR-001 D4-A).
3
+ *
4
+ * WHY. The pattern store already has a cross-process lock (`store-lock.ts`), but it guards ONE
5
+ * resource. Other read-modify-write surfaces in this repo have the same lost-update shape and no
6
+ * guard — the first of them being the `$CODEX_HOME/hooks.json` merge writer, whose race was
7
+ * ACCEPTED as a degradation with an explicit exit condition naming this leg
8
+ * (`architecture/degradations.md`). A read-modify-write that two processes interleave loses one
9
+ * side's addition, and BOTH report success — atomicity (temp+rename) prevents corruption; only
10
+ * mutual exclusion prevents a lost update.
11
+ *
12
+ * WHAT THIS IS. The same `proper-lockfile` machinery as `withStoreLockSync`: atomic `mkdir`
13
+ * acquisition, heartbeat-refreshed staleness (age alone is never liveness), a real acquisition
14
+ * DEADLINE, and a LOUD throw on timeout rather than proceeding unlocked — proceeding would restore
15
+ * exactly the silent lost update this exists to stop. It is emphatically NOT the hand-rolled `wx`
16
+ * file lock that an independent review graded F (`store-lock.ts:14-31`).
17
+ *
18
+ * WHY A MIRROR AND NOT A CALL. `store-lock.ts` keeps its internals private and this feature's
19
+ * out-of-scope fence forbids changing the store lock's semantics, so the ~40 lines of acquisition
20
+ * machinery are mirrored here rather than extracted. The duplication is deliberate and is a named
21
+ * unification candidate; the options type, the stale/timeout defaults and the environment override
22
+ * are IMPORTED from `store-lock.ts`, so the two cannot drift apart on their contract.
23
+ *
24
+ * HONEST LIMIT. This is an ADVISORY lock: it serializes writers that TAKE it. A foreign process
25
+ * that never heard of it writes whenever it likes. For `hooks.json` the pre-existing mitigations
26
+ * (foreign entries preserved byte-for-byte, timestamped backup, atomic temp+rename) remain the
27
+ * backstop for that case, and the rule doc says so in as many words.
28
+ */
29
+ import { mkdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
30
+ import { randomBytes } from 'node:crypto';
31
+ import { createRequire } from 'node:module';
32
+ import { join, resolve } from 'node:path';
33
+ import { lockSync } from 'proper-lockfile';
34
+ import { LOCK_TIMEOUT_MS, STALE_LOCK_MS } from './store-lock.js';
35
+ /** `proper-lockfile` silently clamps `stale` up to this minimum. */
36
+ const MIN_STALE_MS = 2_000;
37
+ /** Lock names are filenames: one bounded, lowercase, path-free component. */
38
+ const SAFE_LOCK_NAME = /^[a-z0-9][a-z0-9-]{0,39}$/;
39
+ export function isSafeLockName(name) {
40
+ return typeof name === 'string' && SAFE_LOCK_NAME.test(name);
41
+ }
42
+ /** Path of a named lock (a DIRECTORY while held). Throws on an unsafe name — a lock whose path a
43
+ * caller can steer is not a lock. */
44
+ export function namedLockPath(projectRoot, name) {
45
+ if (!isSafeLockName(name)) {
46
+ throw new NamedLockNameError(name);
47
+ }
48
+ return join(projectRoot, '.dz', 'locks', `${name}.lock`);
49
+ }
50
+ export class NamedLockNameError extends Error {
51
+ code = 'ELOCKNAME';
52
+ constructor(name) {
53
+ super(`invalid lock name ${JSON.stringify(name)} — a lock name must match ${String(SAFE_LOCK_NAME)} ` +
54
+ '(one lowercase path-free component); a name carrying a separator would place the lock outside .dz/locks/');
55
+ this.name = 'NamedLockNameError';
56
+ }
57
+ }
58
+ /** Acquisition gave up at the deadline. Nothing ran; the operation can be retried. */
59
+ export class NamedLockTimeoutError extends Error {
60
+ code = 'ELOCKTIMEOUT';
61
+ constructor(lockPath, waitedMs) {
62
+ super(`the lock at ${lockPath} stayed held for ${waitedMs}ms — another process is still inside the ` +
63
+ 'guarded section. Nothing was written; retry.');
64
+ this.name = 'NamedLockTimeoutError';
65
+ }
66
+ }
67
+ /** The lock was broken out from under the holder while `fn` ran: it DID run, but may have raced. */
68
+ export class NamedLockCompromisedError extends Error {
69
+ code = 'ECOMPROMISED';
70
+ constructor(lockPath, cause) {
71
+ super(`the lock at ${lockPath} was compromised while held (${cause.message}) — retry the operation.`);
72
+ this.name = 'NamedLockCompromisedError';
73
+ }
74
+ }
75
+ const defaultTimeoutMs = () => {
76
+ const env = Number(process.env['DZ_STORE_LOCK_TIMEOUT_MS']);
77
+ return Number.isFinite(env) && env > 0 ? env : LOCK_TIMEOUT_MS;
78
+ };
79
+ /** Synchronous sleep without spinning (Atomics.wait on a throwaway buffer). */
80
+ const sleepSync = (ms) => {
81
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
82
+ };
83
+ function resolveOpts(opts) {
84
+ return {
85
+ staleMs: Math.max(opts.staleMs ?? STALE_LOCK_MS, MIN_STALE_MS),
86
+ timeoutMs: opts.timeoutMs ?? defaultTimeoutMs(),
87
+ pollMs: opts.pollMs ?? 25,
88
+ };
89
+ }
90
+ /**
91
+ * DISARMING THE LIBRARY'S EXIT HANDLER (round-2 CRITICAL C2, second mechanism).
92
+ *
93
+ * `proper-lockfile` registers a process-exit handler that `rmdirSync`s every lock still in its
94
+ * internal map — unconditionally, with no ownership check (lockfile.js: "Remove acquired locks on
95
+ * exit"). So even after this module refuses to remove a stolen lock, the holder's PROCESS EXIT
96
+ * removed the successor's live lock a moment later. MEASURED: process C then acquired the lock while
97
+ * B was still inside its critical section.
98
+ *
99
+ * The map is reachable through the library's own `getLocks()` accessor. It is not re-exported by the
100
+ * package index, so this is a deep import — guarded by a runtime shape check, and NEVER silent: if
101
+ * the accessor is missing (a future version moved it), the compromise error says the exit-time
102
+ * removal could not be disarmed, so the gap is reported rather than assumed away.
103
+ */
104
+ const lockfileInternals = (() => {
105
+ try {
106
+ const req = createRequire(import.meta.url);
107
+ const mod = req('proper-lockfile/lib/lockfile.js');
108
+ return typeof mod.getLocks === 'function' ? { getLocks: mod.getLocks } : {};
109
+ }
110
+ catch {
111
+ return {};
112
+ }
113
+ })();
114
+ /** Drop a lock we no longer own from the library's exit-time removal list. Returns false when the
115
+ * accessor is unavailable — the caller says so out loud. */
116
+ function disarmExitRemoval(resourceKey) {
117
+ const get = lockfileInternals.getLocks;
118
+ if (get === undefined)
119
+ return false;
120
+ try {
121
+ const locks = get();
122
+ if (Object.prototype.hasOwnProperty.call(locks, resourceKey))
123
+ delete locks[resourceKey];
124
+ return true;
125
+ }
126
+ catch {
127
+ return false;
128
+ }
129
+ }
130
+ /**
131
+ * OWNERSHIP TOKEN (round-2 CRITICAL C2). `proper-lockfile`'s release is unconditional: it clears its
132
+ * timer and removes the lock directory, without checking that the directory is still the one it
133
+ * created. That is safe while the heartbeat runs — but a SYNCHRONOUS critical section blocks the
134
+ * event loop, so the heartbeat cannot fire, a waiter is entitled to break the stale lock, and the
135
+ * original holder then deletes its SUCCESSOR's live lock on the way out.
136
+ *
137
+ * MEASURED (2026-08-19, three real processes, reproducer in named-lock.test.ts / red-green.md):
138
+ * with a 6s synchronous body under a 2s stale threshold, process C acquired the lock while B was
139
+ * still inside its critical section — mutual exclusion gone, silently.
140
+ *
141
+ * The fix: stamp a random token BESIDE the lock directory at acquisition and verify it at release. A
142
+ * lock that no longer carries our token is somebody else's, and we do not touch it — we report the
143
+ * compromise loudly instead. (The marker lives beside, not inside: `proper-lockfile` removes the
144
+ * lock with a plain `rmdir`, so a file within it would make every release silently fail and leak the
145
+ * lock — MEASURED, the first draft of this fix did exactly that and the suite went red.)
146
+ */
147
+ function ownerMarkerPath(lockPath) {
148
+ return lockPath + '.owner';
149
+ }
150
+ function tryAcquire(projectRoot, name, staleMs, onCompromised) {
151
+ const lockPath = namedLockPath(projectRoot, name);
152
+ const resourceKey = resolve(projectRoot, '.dz', 'locks', name);
153
+ try {
154
+ const release = lockSync(resourceKey, {
155
+ lockfilePath: lockPath,
156
+ stale: staleMs,
157
+ realpath: false, // the guarded resource is a concept, not an existing file
158
+ onCompromised,
159
+ });
160
+ const token = randomBytes(16).toString('hex');
161
+ let ino = null;
162
+ try {
163
+ writeFileSync(ownerMarkerPath(lockPath), token, { mode: 0o600 });
164
+ ino = statSync(lockPath).ino;
165
+ }
166
+ catch { /* an unwritable lock dir: fall back to inode-only evidence below */ }
167
+ return {
168
+ release: () => {
169
+ let ours = false;
170
+ try {
171
+ const seen = readFileSync(ownerMarkerPath(lockPath), 'utf8');
172
+ const sameIno = ino === null ? true : statSync(lockPath).ino === ino;
173
+ ours = seen === token && sameIno;
174
+ }
175
+ catch {
176
+ ours = false; // gone, or unreadable — either way not provably ours
177
+ }
178
+ if (!ours) {
179
+ // NEVER remove a lock directory we cannot prove is ours — including at process exit.
180
+ return disarmExitRemoval(resourceKey) ? 'stolen' : 'stolen-undisarmed';
181
+ }
182
+ try {
183
+ release();
184
+ }
185
+ catch { /* ERELEASED after a compromise — the lock is no longer ours to remove */ }
186
+ try {
187
+ rmSync(ownerMarkerPath(lockPath), { force: true });
188
+ }
189
+ catch { /* best effort: a stale marker is overwritten by the next holder anyway */ }
190
+ return 'released';
191
+ },
192
+ };
193
+ }
194
+ catch (err) {
195
+ if (err.code === 'ELOCKED')
196
+ return 'held';
197
+ throw err;
198
+ }
199
+ }
200
+ /**
201
+ * Run `fn` while holding the named lock, releasing it however `fn` ends.
202
+ *
203
+ * Throws {@link NamedLockTimeoutError} when the lock cannot be acquired by the deadline (nothing
204
+ * has run) and {@link NamedLockCompromisedError} when the lock was broken while `fn` ran. The
205
+ * heartbeat cannot fire while a synchronous `fn` blocks the event loop, so keep bodies well under
206
+ * `staleMs` — the same caveat `withStoreLockSync` carries.
207
+ */
208
+ export function withNamedLockSync(projectRoot, name, fn, opts = {}) {
209
+ const lockPath = namedLockPath(projectRoot, name); // validates the name BEFORE any mkdir
210
+ const { staleMs, timeoutMs, pollMs } = resolveOpts(opts);
211
+ mkdirSync(join(projectRoot, '.dz', 'locks'), { recursive: true });
212
+ const started = Date.now();
213
+ const deadline = started + timeoutMs;
214
+ let compromised;
215
+ const onCompromised = (e) => { compromised = e; };
216
+ for (;;) {
217
+ const got = tryAcquire(projectRoot, name, staleMs, onCompromised);
218
+ if (got !== 'held') {
219
+ let result;
220
+ let outcome = 'released';
221
+ try {
222
+ result = fn();
223
+ }
224
+ finally {
225
+ outcome = got.release();
226
+ }
227
+ if (outcome !== 'released') {
228
+ throw new NamedLockCompromisedError(lockPath, compromised ??
229
+ new Error('the lock directory no longer carries this holder\u2019s ownership token — a waiter broke it as stale ' +
230
+ 'while the critical section was still running (a synchronous body cannot heartbeat). The successor\u2019s ' +
231
+ 'lock was left untouched; THIS run must be treated as having raced and retried.' +
232
+ (outcome === 'stolen-undisarmed'
233
+ ? ' WARNING: proper-lockfile\u2019s exit-time lock removal could NOT be disarmed (its getLocks() accessor ' +
234
+ 'is unavailable in this version), so this process may still remove the successor\u2019s lock when it exits.'
235
+ : '')));
236
+ }
237
+ if (compromised !== undefined)
238
+ throw new NamedLockCompromisedError(lockPath, compromised);
239
+ return result;
240
+ }
241
+ const now = Date.now();
242
+ if (now >= deadline)
243
+ throw new NamedLockTimeoutError(lockPath, now - started);
244
+ sleepSync(Math.min(pollMs, deadline - now));
245
+ }
246
+ }
247
+ //# sourceMappingURL=named-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"named-lock.js","sourceRoot":"","sources":["../src/named-lock.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@
5
5
  *
6
6
  * @packageDocumentation
7
7
  */
8
- import { type HooksListHookMetadata } from './codex-hooks.js';
8
+ import { type CodexHooksPaths, type HooksListHookMetadata } from './codex-hooks.js';
9
+ import { type CodexHookTrustStatus, type VetoProbeEvidence, type VetoProbeResult } from './codex-hooks-verify.js';
9
10
  import type { SkillApplyFailure, SkillLoadFailure } from './skills.js';
10
11
  import type { TargetName } from './targets.js';
11
12
  import { type AgentsMdBudget, type PolicyDriftFinding, type PolicySource } from './agents-policy.js';
@@ -261,6 +262,26 @@ export interface CodexHooksSyncOptions {
261
262
  /** Test seam. Production probes the real binary. */
262
263
  readonly codexVersion?: string | null;
263
264
  readonly now?: string;
265
+ /**
266
+ * Run the LIVE veto probe (ADR-002). Default `true` whenever live calls are enabled — a report
267
+ * that says `ready` without one is the CRITICAL finding this option exists to close.
268
+ * `false` (the CLI's `--no-verify`) never yields a success word and never exits 0.
269
+ */
270
+ readonly verify?: boolean;
271
+ /**
272
+ * MUTUAL EXCLUSION SEAM (feature qe-bridge-claude, round-2 CRITICAL C2). The caller wraps ONLY the
273
+ * registry read-plan-write transaction — the part where two dz processes can lose each other's
274
+ * entries. It must NOT span the live probes: those spawn a real `codex app-server` turn and can
275
+ * block for minutes, far past any advisory lock's stale threshold, at which point a waiter is
276
+ * entitled to break the lock and the holder becomes a liar. Default: run unwrapped.
277
+ */
278
+ readonly criticalSection?: <T>(fn: () => T) => T;
279
+ /** The project whose consent the probe runs under (`--project`). See {@link runCodexVetoProbe}. */
280
+ readonly project?: string;
281
+ /** Pinned probe model id; defaults to `DZ_CODEX_PROBE_MODEL`, then codex's own configured model. */
282
+ readonly probeModel?: string;
283
+ /** Test seam: replace the live probe. Production runs {@link runCodexVetoProbe}. */
284
+ readonly probe?: (options: CodexVetoProbeOptions) => CodexVetoProbeRun;
264
285
  }
265
286
  export interface CodexHooksSyncReport {
266
287
  readonly codexHome: string;
@@ -276,6 +297,15 @@ export interface CodexHooksSyncReport {
276
297
  readonly drift: readonly string[];
277
298
  readonly trust: 'trusted' | 'trust-pending' | 'unknown';
278
299
  readonly codexVersion: string | null;
300
+ /** The live veto probe's verdict. `null` ⇒ no probe ran (`--no-verify`, or the test seam). */
301
+ readonly verify: VetoProbeResult | null;
302
+ /** A live, non-bypassed probe ran AND witnessed our block. The only route to a success word. */
303
+ readonly verified: boolean;
304
+ /**
305
+ * armed ∧ trusted, PROVEN — installed + executable + trusted + a witnessed live block. This is
306
+ * the single predicate the CLI's `ready` line is allowed to read (AM-17 / G-G).
307
+ */
308
+ readonly ready: boolean;
279
309
  /** 0 = armed+trusted · 1 = not armed / drift / refusal · 3 = inconclusive. */
280
310
  readonly exitCode: 0 | 1 | 3;
281
311
  readonly warnings: readonly string[];
@@ -283,6 +313,10 @@ export interface CodexHooksSyncReport {
283
313
  /** Written paths, for the declared-write-set test. */
284
314
  readonly writes: readonly string[];
285
315
  }
316
+ /** The one place that decides WHERE `hooks.json` lives. Exported (feature qe-bridge-claude) so the
317
+ * CLI can take the `codex-hooks` advisory lock BESIDE that registry — a lock in this repo's `.dz/`
318
+ * would not serialize a writer operating from another checkout. */
319
+ export declare function resolveCodexHome(explicit: string | undefined): string;
286
320
  /**
287
321
  * Run the emitted command THE WAY THE RUNTIME WILL — through `$SHELL -lc` (AM-32 / G-L).
288
322
  *
@@ -296,13 +330,55 @@ export declare function probeHookLiveness(command: string, payload: string): {
296
330
  readonly status: number | null;
297
331
  readonly stderr: string;
298
332
  };
333
+ export declare function runSyncCodexHooks(options?: CodexHooksSyncOptions): CodexHooksSyncReport;
334
+ export interface CodexVetoProbeOptions {
335
+ readonly paths: CodexHooksPaths;
336
+ /** Where the probe runs. Absent ⇒ a hermetic temp workspace that opts INTO block mode. */
337
+ readonly project?: string | undefined;
338
+ /** Pinned model id (`DZ_CODEX_PROBE_MODEL`). Absent ⇒ codex's own configured default. */
339
+ readonly model?: string | undefined;
340
+ readonly timeoutMs?: number | undefined;
341
+ readonly trustStatus?: CodexHookTrustStatus | undefined;
342
+ readonly recordedCodexVersion?: string | undefined;
343
+ readonly probedCodexVersion?: string | undefined;
344
+ }
345
+ export interface CodexVetoProbeRun {
346
+ readonly evidence: VetoProbeEvidence;
347
+ readonly result: VetoProbeResult;
348
+ /** The directory the probe ran in, kept for the transcript record. */
349
+ readonly workspace: string;
350
+ readonly command: string;
351
+ readonly notes: readonly string[];
352
+ }
299
353
  /**
300
- * Install, verify or remove the dz Codex hooks.
354
+ * Drive ONE live, NON-bypassed veto probe through `codex exec` and classify what it produced.
355
+ *
356
+ * This is the half the shipped CLI was missing: `--verify` and `--project` were accepted and
357
+ * dropped, `classifyVetoProbe` was never called from any production path, and `ready` printed off
358
+ * file presence plus a trust row (independent review, finding 1 — CRITICAL). A registry entry is
359
+ * not a guard; only a witnessed block is.
301
360
  *
302
- * Order is load-bearing: every REFUSAL happens before any `mkdir` or write, so a machine without
303
- * codex, or with an unparseable registry, is left byte-untouched (AM-35a).
361
+ * Fail-closed by construction:
362
+ * - `--dangerously-bypass-hook-trust` is NEVER passed (`bypassedTrust: false` is a fact here, not a
363
+ * parameter): a bypassed run proves the helper body works and nothing about the installed state.
364
+ * - stdin is `/dev/null` (node opens `/dev/null` for an `'ignore'` stdio slot) — the 2026-07-10
365
+ * codex-exec stdin lesson.
366
+ * - Every way the run can fail to produce evidence — no binary, a dead invocation, a timeout, an
367
+ * unstattable sentinel — reaches `inconclusive`, never `armed`.
304
368
  */
305
- export declare function runSyncCodexHooks(options?: CodexHooksSyncOptions): CodexHooksSyncReport;
369
+ export declare function runCodexVetoProbe(options: CodexVetoProbeOptions): CodexVetoProbeRun;
370
+ /**
371
+ * Is the sentinel there? `true` / `false` / **`null` when we could not tell**.
372
+ *
373
+ * `existsSync` answers `false` for BOTH "it is not there" and "I could not look" — it swallows
374
+ * EACCES, ENOTDIR, ELOOP and every I/O error into the same word that means "the command was
375
+ * blocked" (fix round 2, R2-4). Only ENOENT is an established ABSENCE; every other errno is a
376
+ * failed observation and must reach `inconclusive`.
377
+ */
378
+ export declare function statSentinelPresence(path: string): {
379
+ readonly present: boolean | null;
380
+ readonly error?: string;
381
+ };
306
382
  /**
307
383
  * Drive `codex app-server` over stdio for one `hooks/list` call.
308
384
  *
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}