instar 1.3.83 → 1.3.85

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.
@@ -33,8 +33,8 @@ export interface ScopeVerificationResult {
33
33
  export interface ScopeCheck {
34
34
  /** Check name */
35
35
  name: string;
36
- /** Whether this check passed */
37
- passed: boolean;
36
+ /** Whether this check passed; null means the result needs human verification */
37
+ passed: boolean | null;
38
38
  /** What was expected */
39
39
  expected: string;
40
40
  /** What was found */
@@ -118,5 +118,7 @@ export declare class ScopeVerifier {
118
118
  private detectGitRemote;
119
119
  private normalizeGitUrl;
120
120
  private normalizePath;
121
+ private buildSummary;
122
+ private pluralize;
121
123
  }
122
124
  //# sourceMappingURL=ScopeVerifier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScopeVerifier.d.ts","sourceRoot":"","sources":["../../src/core/ScopeVerifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScopeVerifier.d.ts","sourceRoot":"","sources":["../../src/core/ScopeVerifier.ts"],"names":[],"mappings":"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"}
@@ -50,14 +50,11 @@ export class ScopeVerifier {
50
50
  // Check 6: Agent identity consistency
51
51
  checks.push(this.checkAgentIdentity());
52
52
  // Determine overall result
53
- const hasErrors = checks.some(c => !c.passed && c.severity === 'error');
54
- const hasWarnings = checks.some(c => !c.passed && c.severity === 'warning');
55
- const passed = !hasErrors;
53
+ const hasErrors = checks.some(c => c.passed !== true && c.severity === 'error');
54
+ const hasWarnings = checks.some(c => c.passed !== true && c.severity === 'warning');
55
+ const passed = checks.every(c => c.passed === true);
56
56
  const recommendation = hasErrors ? 'block' : hasWarnings ? 'warn' : 'proceed';
57
- const failedChecks = checks.filter(c => !c.passed);
58
- const summary = passed
59
- ? `All ${checks.length} coherence checks passed.`
60
- : `${failedChecks.length}/${checks.length} checks failed: ${failedChecks.map(c => c.message).join('; ')}`;
57
+ const summary = this.buildSummary(checks);
61
58
  return {
62
59
  passed,
63
60
  checks,
@@ -219,7 +216,7 @@ export class ScopeVerifier {
219
216
  if (!binding) {
220
217
  return {
221
218
  name: 'topic-project-alignment',
222
- passed: false,
219
+ passed: null,
223
220
  expected: `Topic ${topicId} bound to a specific project`,
224
221
  actual: 'No topic-project binding exists',
225
222
  severity: 'warning',
@@ -344,5 +341,32 @@ export class ScopeVerifier {
344
341
  normalizePath(p) {
345
342
  return path.resolve(p).replace(/\/+$/, '');
346
343
  }
344
+ buildSummary(checks) {
345
+ const passedCount = checks.filter(c => c.passed === true).length;
346
+ const failedChecks = checks.filter(c => c.passed === false);
347
+ const indeterminateCount = checks.filter(c => c.passed === null).length;
348
+ if (passedCount === checks.length) {
349
+ return `All ${checks.length} coherence checks passed.`;
350
+ }
351
+ const parts = [`${passedCount} of ${checks.length} coherence checks passed`];
352
+ const errorCount = failedChecks.filter(c => c.severity === 'error').length;
353
+ const warningCount = failedChecks.filter(c => c.severity === 'warning').length;
354
+ if (errorCount > 0) {
355
+ parts.push(`${errorCount} ${this.pluralize(errorCount, 'error')}`);
356
+ }
357
+ if (warningCount > 0) {
358
+ parts.push(`${warningCount} ${this.pluralize(warningCount, 'warning')}`);
359
+ }
360
+ if (indeterminateCount > 0) {
361
+ parts.push(`${indeterminateCount} indeterminate`);
362
+ }
363
+ const messages = checks
364
+ .filter(c => c.passed !== true)
365
+ .map(c => c.message);
366
+ return `${parts.join(', ')}: ${messages.join('; ')}`;
367
+ }
368
+ pluralize(count, singular) {
369
+ return count === 1 ? singular : `${singular}s`;
370
+ }
347
371
  }
348
372
  //# sourceMappingURL=ScopeVerifier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScopeVerifier.js","sourceRoot":"","sources":["../../src/core/ScopeVerifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScopeVerifier.js","sourceRoot":"","sources":["../../src/core/ScopeVerifier.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,8 @@ export interface ReapLogEntry {
20
20
  tmuxSession: string;
21
21
  /** The reason the killer requested (e.g. 'idle-zombie', 'age-limit'). */
22
22
  reason: string;
23
- disposition?: 'terminal' | 'recovery-bounce';
23
+ /** What actually happened: terminal/recovery-bounce, or skipped:<authority-reason>. */
24
+ disposition: 'terminal' | 'recovery-bounce' | `skipped:${string}`;
24
25
  origin?: 'operator' | 'autonomous';
25
26
  /** For 'skipped': why the authority refused (protected / not-lease-holder / a KEEP / in-flight). */
26
27
  skipped?: string;
@@ -47,5 +48,6 @@ export declare class ReapLog {
47
48
  private append;
48
49
  /** Read the most-recent `limit` entries (newest last), tolerating partial/corrupt lines. */
49
50
  read(limit?: number): ReapLogEntry[];
51
+ private normalizeEntry;
50
52
  }
51
53
  //# sourceMappingURL=ReapLog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReapLog.d.ts","sourceRoot":"","sources":["../../src/monitoring/ReapLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAAC;IAC7C,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA2B;gBAE1C,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS;IAKlE,YAAY,CAAC,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAAC;QAC7C,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;KACpC,GAAG,IAAI;IAaR,aAAa,CAAC,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;KACpC,GAAG,IAAI;IAaR,OAAO,CAAC,MAAM;IASd,4FAA4F;IAC5F,IAAI,CAAC,KAAK,SAAM,GAAG,YAAY,EAAE;CAqBlC"}
1
+ {"version":3,"file":"ReapLog.d.ts","sourceRoot":"","sources":["../../src/monitoring/ReapLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,WAAW,EAAE,UAAU,GAAG,iBAAiB,GAAG,WAAW,MAAM,EAAE,CAAC;IAClE,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA2B;gBAE1C,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS;IAKlE,YAAY,CAAC,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAAC;QAC7C,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;KACpC,GAAG,IAAI;IAaR,aAAa,CAAC,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;KACpC,GAAG,IAAI;IAcR,OAAO,CAAC,MAAM;IASd,4FAA4F;IAC5F,IAAI,CAAC,KAAK,SAAM,GAAG,YAAY,EAAE;IAsBjC,OAAO,CAAC,cAAc;CAsBvB"}
@@ -28,7 +28,7 @@ export class ReapLog {
28
28
  session: e.session,
29
29
  tmuxSession: e.tmuxSession,
30
30
  reason: e.reason,
31
- disposition: e.disposition,
31
+ disposition: e.disposition ?? 'terminal',
32
32
  origin: e.origin,
33
33
  machine: this.machineId?.(),
34
34
  });
@@ -40,6 +40,7 @@ export class ReapLog {
40
40
  session: e.session,
41
41
  tmuxSession: e.tmuxSession,
42
42
  reason: e.reason,
43
+ disposition: `skipped:${e.skipped}`,
43
44
  skipped: e.skipped,
44
45
  origin: e.origin,
45
46
  machine: this.machineId?.(),
@@ -70,7 +71,7 @@ export class ReapLog {
70
71
  const out = [];
71
72
  for (const line of tail) {
72
73
  try {
73
- out.push(JSON.parse(line));
74
+ out.push(this.normalizeEntry(JSON.parse(line)));
74
75
  }
75
76
  catch {
76
77
  // skip a corrupt/partial line rather than failing the whole read
@@ -78,5 +79,26 @@ export class ReapLog {
78
79
  }
79
80
  return out;
80
81
  }
82
+ normalizeEntry(entry) {
83
+ const type = entry.type === 'skipped' ? 'skipped' : 'reaped';
84
+ const skipped = typeof entry.skipped === 'string' ? entry.skipped : undefined;
85
+ let disposition = entry.disposition;
86
+ if (!disposition) {
87
+ disposition = type === 'skipped'
88
+ ? `skipped:${skipped ?? 'unknown'}`
89
+ : 'terminal';
90
+ }
91
+ return {
92
+ ts: typeof entry.ts === 'string' ? entry.ts : new Date(0).toISOString(),
93
+ type,
94
+ session: typeof entry.session === 'string' ? entry.session : 'unknown',
95
+ tmuxSession: typeof entry.tmuxSession === 'string' ? entry.tmuxSession : 'unknown',
96
+ reason: typeof entry.reason === 'string' ? entry.reason : 'unknown',
97
+ disposition,
98
+ origin: entry.origin,
99
+ skipped,
100
+ machine: entry.machine,
101
+ };
102
+ }
81
103
  }
82
104
  //# sourceMappingURL=ReapLog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReapLog.js","sourceRoot":"","sources":["../../src/monitoring/ReapLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAiB7B,MAAM,OAAO,OAAO;IACD,OAAO,CAAS;IAChB,SAAS,CAA4B;IAEtD,YAAY,QAAgB,EAAE,SAAoC;QAChE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,CAMZ;QACC,IAAI,CAAC,MAAM,CAAC;YACV,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,CAMb;QACC,IAAI,CAAC,MAAM,CAAC;YACV,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE;SAC5B,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,KAAmB;QAChC,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;IACH,CAAC;IAED,4FAA4F;IAC5F,IAAI,CAAC,KAAK,GAAG,GAAG;QACd,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;YAC1E,kDAAkD;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrD,MAAM,GAAG,GAAmB,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;YACnE,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"ReapLog.js","sourceRoot":"","sources":["../../src/monitoring/ReapLog.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.83",
3
+ "version": "1.3.85",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-05-29T11:31:57.082Z",
5
- "instarVersion": "1.3.83",
4
+ "generatedAt": "2026-05-29T11:59:38.266Z",
5
+ "instarVersion": "1.3.85",
6
6
  "entryCount": 193,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -0,0 +1,25 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- bump: patch -->
4
+
5
+ ## What Changed
6
+
7
+ Reap Log entries now include a consistent disposition field for skipped rows as well as reaped rows. This fixes a dogfood issue where skipped rows explained the authority refusal in a separate field but did not populate the common outcome field, making "where did my session go?" tooling harder to consume.
8
+
9
+ ## What to Tell Your User
10
+
11
+ The session reap log is easier to read now: every row has a clear outcome, including attempts that were safely skipped.
12
+
13
+ ## Summary of New Capabilities
14
+
15
+ | Area | Capability |
16
+ | --- | --- |
17
+ | Reap Log | Skipped rows now include a normalized outcome like skipped:protected or skipped:not-lease-holder. |
18
+ | Observability | Older skipped log lines are normalized when read, so existing logs become easier to interpret immediately. |
19
+ | Compatibility | The existing skipped detail field remains available for clients that already use it. |
20
+
21
+ ## Evidence
22
+
23
+ - Unit coverage: `tests/unit/reap-log.test.ts` verifies new skipped entries and legacy skipped rows include a normalized disposition.
24
+ - Integration coverage: `tests/integration/reap-log-route.test.ts` verifies the route surfaces skipped dispositions.
25
+ - E2E coverage: `tests/e2e/reap-log-lifecycle.test.ts` verifies the live server path returns the normalized skipped disposition.
@@ -0,0 +1,30 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- bump: patch -->
4
+
5
+ ## What Changed
6
+
7
+ The Coherence Gate now represents unbound topic-project alignment as an
8
+ indeterminate check and summarizes the result honestly. A warning-level
9
+ indeterminate check is no longer counted as passed in the top-level pass flag or
10
+ the human-readable summary. Recommendation behavior is unchanged: clean checks
11
+ proceed, warning-level checks warn, and error-level checks block.
12
+
13
+ ## What to Tell Your User
14
+
15
+ - **Coherence checks are clearer**: "When I verify a risky action, I'll now tell you when a check needs human verification instead of incorrectly saying every check passed."
16
+
17
+ ## Summary of New Capabilities
18
+
19
+ | Capability | How to Use |
20
+ |-----------|-----------|
21
+ | Honest indeterminate Coherence Gate summaries | Automatic for pre-action coherence checks |
22
+
23
+ ## Evidence
24
+
25
+ Before the change, a live Coherence Gate request for an unbound topic returned a
26
+ warning recommendation while the summary still said all four coherence checks
27
+ passed. After the change, focused unit, HTTP route, and e2e lifecycle tests
28
+ verify that the unbound topic check returns an indeterminate value, the overall
29
+ pass flag is false, the recommendation remains warn, and the summary includes
30
+ the indeterminate count instead of the all-passed sentence.
@@ -0,0 +1,127 @@
1
+ # Side-Effects Review — Coherence Gate indeterminate summaries
2
+
3
+ **Version / slug:** `coherence-indeterminate-summary`
4
+ **Date:** `2026-05-29`
5
+ **Author:** `instar-codey`
6
+ **Second-pass reviewer:** `self-audit; subagent not spawned by tool policy`
7
+
8
+ ## Summary of the change
9
+
10
+ This change updates `ScopeVerifier` so unbound topic-project alignment is
11
+ represented as `passed: null`, the overall `passed` flag is true only when every
12
+ check truly passed, and the summary reports passed, warning, error, and
13
+ indeterminate counts. It adds unit, integration, and e2e tests for the
14
+ indeterminate path. The decision point touched is the Coherence Gate's
15
+ pre-action warn/block/proceed response.
16
+
17
+ ## Decision-point inventory
18
+
19
+ - `ScopeVerifier.check()` — modified — recommendation policy remains the same,
20
+ while summary and top-level pass reporting now distinguish indeterminate
21
+ checks from passed checks.
22
+ - `checkTopicProjectAlignment()` — modified — missing topic binding is now an
23
+ indeterminate warning instead of a boolean false warning.
24
+
25
+ ---
26
+
27
+ ## 1. Over-block
28
+
29
+ No new block condition is introduced. Unbound topics remain warning-level and do
30
+ not become blockers. A caller that incorrectly treated top-level `passed: true`
31
+ as permission despite `recommendation: "warn"` will now see `passed: false`, but
32
+ that is the intended correction: the check did not actually pass.
33
+
34
+ ---
35
+
36
+ ## 2. Under-block
37
+
38
+ This does not add new blocking coverage. A topic with no binding still warns
39
+ rather than blocks, so an agent can still proceed after verification. Wrong
40
+ project bindings remain error-severity failures and still block.
41
+
42
+ ---
43
+
44
+ ## 3. Level-of-abstraction fit
45
+
46
+ This is at the reporting layer of an existing deterministic gate. The gate
47
+ already owns the pre-action recommendation. The change does not add a parallel
48
+ authority; it makes the existing gate's human-readable and machine-readable
49
+ fields agree.
50
+
51
+ ---
52
+
53
+ ## 4. Signal vs authority compliance
54
+
55
+ **Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
56
+
57
+ - [x] No — this change produces a signal consumed by an existing smart gate.
58
+ - [ ] No — this change has no block/allow surface.
59
+ - [ ] Yes — but the logic is a smart gate with full conversational context
60
+ (LLM-backed with recent history or equivalent).
61
+ - [ ] Yes, with brittle logic — STOP. Reshape the design.
62
+
63
+ The existing Coherence Gate remains the authority for warn/block/proceed. This
64
+ change clarifies a structured signal state (`null` means indeterminate) and the
65
+ summary text derived from those signals. It does not introduce an independent
66
+ blocker.
67
+
68
+ ---
69
+
70
+ ## 5. Interactions
71
+
72
+ - **Shadowing:** No route or hook order changes. The same `/coherence/check`
73
+ route calls the same `ScopeVerifier.check()` path.
74
+ - **Double-fire:** No new event or side effect is emitted.
75
+ - **Races:** No persistent state or asynchronous coordination is added.
76
+ - **Feedback loops:** Agents may respond more cautiously because `passed` is now
77
+ false for indeterminate checks, matching the existing warning recommendation.
78
+
79
+ ---
80
+
81
+ ## 6. External surfaces
82
+
83
+ The `/coherence/check` JSON shape changes for unbound topics: the
84
+ topic-project-alignment check returns `passed: null`, and the top-level `passed`
85
+ field is false when any check is indeterminate. The recommendation field remains
86
+ unchanged. No database, file format, credential, network, or third-party
87
+ surface changes are introduced.
88
+
89
+ ---
90
+
91
+ ## 7. Rollback cost
92
+
93
+ Rollback is a normal hot-fix revert. There is no migration and no persistent
94
+ state repair. During rollback propagation, agents would temporarily see the old
95
+ misleading summary for unbound topics again.
96
+
97
+ ---
98
+
99
+ ## Conclusion
100
+
101
+ The change is narrowly scoped to truthful reporting for an existing warning path.
102
+ It keeps the Coherence Gate policy intact while removing an internal
103
+ contradiction that made summaries less trustworthy. The three-tier tests cover
104
+ the core logic, route response, and full server lifecycle.
105
+
106
+ ---
107
+
108
+ ## Second-pass review (if required)
109
+
110
+ **Reviewer:** `self-audit; subagent not spawned by tool policy`
111
+ **Independent read of the artifact: concur**
112
+
113
+ The main risk is API compatibility for callers that assumed `ScopeCheck.passed`
114
+ was always boolean. The route already had contradictory `passed` and
115
+ `recommendation` signals, and the requested contract explicitly uses
116
+ `passed: null` for indeterminate, so the compatibility cost is acceptable and
117
+ tested.
118
+
119
+ ---
120
+
121
+ ## Evidence pointers
122
+
123
+ - Live verification before the source change reproduced the bug: an unbound
124
+ topic check returned `recommendation: "warn"` while the summary still claimed
125
+ all four checks passed.
126
+ - Focused verification after the source change:
127
+ `npx vitest run tests/unit/ScopeVerifier.test.ts tests/integration/coherence-routes.test.ts tests/e2e/coherence-check-indeterminate-lifecycle.test.ts`
@@ -0,0 +1,86 @@
1
+ # Side-Effects Review — Reap Log Skipped Disposition
2
+
3
+ **Version / slug:** `reap-log-skipped-disposition`
4
+ **Date:** `2026-05-29`
5
+ **Author:** `instar-codey`
6
+ **Second-pass reviewer:** `not required by tooling`
7
+
8
+ ## Summary of the change
9
+
10
+ This change normalizes Reap Log entries so both reaped and skipped rows expose `disposition`. Skipped rows keep their existing `skipped` detail and add `disposition: skipped:<reason>`. The reader also backfills this field for old skipped log lines.
11
+
12
+ ## Decision-point inventory
13
+
14
+ - `ReapLog.recordSkipped()` — add an outcome disposition when writing skipped rows.
15
+ - `ReapLog.read()` — normalize legacy rows in memory.
16
+ - Reap Log route tests — assert skipped rows include the normalized disposition.
17
+
18
+ ---
19
+
20
+ ## 1. Over-block
21
+
22
+ No blocking behavior changes. This is read-only audit normalization.
23
+
24
+ ---
25
+
26
+ ## 2. Under-block
27
+
28
+ No reap authority behavior changes. Protected-session, lease-holder, KEEP-guard, and in-flight decisions are untouched.
29
+
30
+ ---
31
+
32
+ ## 3. Level-of-abstraction fit
33
+
34
+ The Reap Log audit sink owns the durable row shape, so it is the right layer to normalize old and new entries. Route handlers continue to read through the existing sink.
35
+
36
+ ---
37
+
38
+ ## 4. Signal vs authority compliance
39
+
40
+ **Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
41
+
42
+ - [x] No — this change has no conversational block/allow surface.
43
+
44
+ This output is explanatory observability only.
45
+
46
+ ---
47
+
48
+ ## 5. Interactions
49
+
50
+ - **Shadowing:** None. Session termination authority remains in `SessionManager`.
51
+ - **Double-fire:** None. One terminate attempt still creates at most one Reap Log row.
52
+ - **Races:** None added. Reads normalize returned objects without rewriting the JSONL file.
53
+ - **Feedback loops:** Positive loop: agents and dashboards can answer "what happened?" without special-casing skipped rows.
54
+
55
+ ---
56
+
57
+ ## 6. External surfaces
58
+
59
+ The `GET /sessions/reap-log` response now includes `disposition` on skipped rows. Existing clients using `skipped` continue to work.
60
+
61
+ ---
62
+
63
+ ## 7. Rollback cost
64
+
65
+ Rollback is a normal code revert. Newer log rows contain an extra JSON field that older readers ignore.
66
+
67
+ ---
68
+
69
+ ## Conclusion
70
+
71
+ The change is clear to ship. It fixes a real schema inconsistency found during Reap Log dogfooding without changing reap behavior.
72
+
73
+ ---
74
+
75
+ ## Second-pass review (if required)
76
+
77
+ **Reviewer:** `not required by tooling`
78
+ **Independent read of the artifact:** `not required`
79
+
80
+ ---
81
+
82
+ ## Evidence pointers
83
+
84
+ - `tests/unit/reap-log.test.ts`
85
+ - `tests/integration/reap-log-route.test.ts`
86
+ - `tests/e2e/reap-log-lifecycle.test.ts`