openplanr 1.16.2 → 1.18.0

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 (128) hide show
  1. package/dist/cli/commands/operate.d.ts +10 -1
  2. package/dist/cli/commands/operate.d.ts.map +1 -1
  3. package/dist/cli/commands/operate.js +240 -13
  4. package/dist/cli/commands/operate.js.map +1 -1
  5. package/dist/services/ai-service.d.ts +25 -0
  6. package/dist/services/ai-service.d.ts.map +1 -1
  7. package/dist/services/ai-service.js +38 -0
  8. package/dist/services/ai-service.js.map +1 -1
  9. package/dist/services/operate/advisors.d.ts +82 -1
  10. package/dist/services/operate/advisors.d.ts.map +1 -1
  11. package/dist/services/operate/advisors.js +469 -17
  12. package/dist/services/operate/advisors.js.map +1 -1
  13. package/dist/services/operate/artifacts.d.ts +27 -1
  14. package/dist/services/operate/artifacts.d.ts.map +1 -1
  15. package/dist/services/operate/artifacts.js +103 -1
  16. package/dist/services/operate/artifacts.js.map +1 -1
  17. package/dist/services/operate/cadence.d.ts +50 -0
  18. package/dist/services/operate/cadence.d.ts.map +1 -0
  19. package/dist/services/operate/cadence.js +56 -0
  20. package/dist/services/operate/cadence.js.map +1 -0
  21. package/dist/services/operate/citation-resolution.d.ts +101 -0
  22. package/dist/services/operate/citation-resolution.d.ts.map +1 -0
  23. package/dist/services/operate/citation-resolution.js +308 -0
  24. package/dist/services/operate/citation-resolution.js.map +1 -0
  25. package/dist/services/operate/config.d.ts +93 -1
  26. package/dist/services/operate/config.d.ts.map +1 -1
  27. package/dist/services/operate/config.js +199 -9
  28. package/dist/services/operate/config.js.map +1 -1
  29. package/dist/services/operate/decision-brief.d.ts +148 -0
  30. package/dist/services/operate/decision-brief.d.ts.map +1 -0
  31. package/dist/services/operate/decision-brief.js +194 -0
  32. package/dist/services/operate/decision-brief.js.map +1 -0
  33. package/dist/services/operate/doctor.d.ts.map +1 -1
  34. package/dist/services/operate/doctor.js +271 -3
  35. package/dist/services/operate/doctor.js.map +1 -1
  36. package/dist/services/operate/engine.d.ts +66 -2
  37. package/dist/services/operate/engine.d.ts.map +1 -1
  38. package/dist/services/operate/engine.js +219 -7
  39. package/dist/services/operate/engine.js.map +1 -1
  40. package/dist/services/operate/event-store.d.ts +35 -1
  41. package/dist/services/operate/event-store.d.ts.map +1 -1
  42. package/dist/services/operate/event-store.js +142 -29
  43. package/dist/services/operate/event-store.js.map +1 -1
  44. package/dist/services/operate/evidence-cache.d.ts +25 -1
  45. package/dist/services/operate/evidence-cache.d.ts.map +1 -1
  46. package/dist/services/operate/evidence-cache.js +62 -1
  47. package/dist/services/operate/evidence-cache.js.map +1 -1
  48. package/dist/services/operate/evidence.d.ts +20 -1
  49. package/dist/services/operate/evidence.d.ts.map +1 -1
  50. package/dist/services/operate/evidence.js +148 -0
  51. package/dist/services/operate/evidence.js.map +1 -1
  52. package/dist/services/operate/index.d.ts +2 -0
  53. package/dist/services/operate/index.d.ts.map +1 -1
  54. package/dist/services/operate/index.js +309 -46
  55. package/dist/services/operate/index.js.map +1 -1
  56. package/dist/services/operate/interaction/action-service.d.ts +17 -0
  57. package/dist/services/operate/interaction/action-service.d.ts.map +1 -1
  58. package/dist/services/operate/interaction/action-service.js +19 -0
  59. package/dist/services/operate/interaction/action-service.js.map +1 -1
  60. package/dist/services/operate/interaction/answer-service.d.ts +17 -0
  61. package/dist/services/operate/interaction/answer-service.d.ts.map +1 -1
  62. package/dist/services/operate/interaction/answer-service.js +49 -7
  63. package/dist/services/operate/interaction/answer-service.js.map +1 -1
  64. package/dist/services/operate/interaction/question-engine.d.ts.map +1 -1
  65. package/dist/services/operate/interaction/question-engine.js +9 -3
  66. package/dist/services/operate/interaction/question-engine.js.map +1 -1
  67. package/dist/services/operate/interaction/question-registry.d.ts +13 -0
  68. package/dist/services/operate/interaction/question-registry.d.ts.map +1 -1
  69. package/dist/services/operate/interaction/question-registry.js +116 -26
  70. package/dist/services/operate/interaction/question-registry.js.map +1 -1
  71. package/dist/services/operate/interaction/terminal-renderer.d.ts +12 -1
  72. package/dist/services/operate/interaction/terminal-renderer.d.ts.map +1 -1
  73. package/dist/services/operate/interaction/terminal-renderer.js +26 -15
  74. package/dist/services/operate/interaction/terminal-renderer.js.map +1 -1
  75. package/dist/services/operate/journal.d.ts.map +1 -1
  76. package/dist/services/operate/journal.js +11 -5
  77. package/dist/services/operate/journal.js.map +1 -1
  78. package/dist/services/operate/lifecycle.d.ts +8 -0
  79. package/dist/services/operate/lifecycle.d.ts.map +1 -1
  80. package/dist/services/operate/lifecycle.js +19 -1
  81. package/dist/services/operate/lifecycle.js.map +1 -1
  82. package/dist/services/operate/maintenance.d.ts +22 -0
  83. package/dist/services/operate/maintenance.d.ts.map +1 -1
  84. package/dist/services/operate/maintenance.js +406 -46
  85. package/dist/services/operate/maintenance.js.map +1 -1
  86. package/dist/services/operate/migration.d.ts +68 -0
  87. package/dist/services/operate/migration.d.ts.map +1 -0
  88. package/dist/services/operate/migration.js +235 -0
  89. package/dist/services/operate/migration.js.map +1 -0
  90. package/dist/services/operate/mission-dispatch.d.ts +193 -0
  91. package/dist/services/operate/mission-dispatch.d.ts.map +1 -0
  92. package/dist/services/operate/mission-dispatch.js +444 -0
  93. package/dist/services/operate/mission-dispatch.js.map +1 -0
  94. package/dist/services/operate/projection-persistence.d.ts +6 -0
  95. package/dist/services/operate/projection-persistence.d.ts.map +1 -1
  96. package/dist/services/operate/projection-persistence.js +87 -11
  97. package/dist/services/operate/projection-persistence.js.map +1 -1
  98. package/dist/services/operate/projection.d.ts +26 -1
  99. package/dist/services/operate/projection.d.ts.map +1 -1
  100. package/dist/services/operate/projection.js +62 -0
  101. package/dist/services/operate/projection.js.map +1 -1
  102. package/dist/services/operate/protocol.d.ts +50 -3
  103. package/dist/services/operate/protocol.d.ts.map +1 -1
  104. package/dist/services/operate/protocol.js +57 -5
  105. package/dist/services/operate/protocol.js.map +1 -1
  106. package/dist/services/operate/read-only-providers.d.ts +37 -0
  107. package/dist/services/operate/read-only-providers.d.ts.map +1 -1
  108. package/dist/services/operate/read-only-providers.js +130 -0
  109. package/dist/services/operate/read-only-providers.js.map +1 -1
  110. package/dist/services/operate/reports.d.ts +22 -0
  111. package/dist/services/operate/reports.d.ts.map +1 -1
  112. package/dist/services/operate/reports.js +226 -1
  113. package/dist/services/operate/reports.js.map +1 -1
  114. package/dist/services/operate/routes.d.ts.map +1 -1
  115. package/dist/services/operate/routes.js +79 -5
  116. package/dist/services/operate/routes.js.map +1 -1
  117. package/dist/services/operate/types.d.ts +139 -4
  118. package/dist/services/operate/types.d.ts.map +1 -1
  119. package/dist/services/operate/types.js +13 -0
  120. package/dist/services/operate/types.js.map +1 -1
  121. package/dist/services/operate/workspace.d.ts +7 -0
  122. package/dist/services/operate/workspace.d.ts.map +1 -1
  123. package/dist/services/operate/workspace.js +14 -5
  124. package/dist/services/operate/workspace.js.map +1 -1
  125. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  126. package/dist/services/runtime-manager-service.js +25 -5
  127. package/dist/services/runtime-manager-service.js.map +1 -1
  128. package/package.json +2 -2
@@ -0,0 +1,194 @@
1
+ import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ import { resolveOperatingPipelineRoot } from './protocol.js';
5
+ import { compareSensitivity, sanitizeGeneratedPlainText } from './redaction.js';
6
+ import { OperateError } from './types.js';
7
+ import { resolveContainedPath, resolveOperatingPaths } from './workspace.js';
8
+ /**
9
+ * FR7 / E-007 — render `operate brief` and `operate decisions show` into a
10
+ * single, self-contained, OFFLINE artifact a non-technical decision owner can
11
+ * open without a terminal. Rendering is delegated to the pipeline builder
12
+ * (`createOperatingDecisionBriefArtifact`), which fails closed on any
13
+ * `http(s)://` reference (`E_OPERATE_DECISION_BRIEF_NOT_OFFLINE`). This module
14
+ * never reimplements that renderer: it assembles the ceiling-filtered brief and
15
+ * decision inputs, invokes the builder through the existing opaque-origin
16
+ * sandbox surface, and writes the resulting HTML locally.
17
+ *
18
+ * Nothing here publishes or shares: a brief is written only when the operator
19
+ * asks for it (the `--render` flag), to a project-contained path. Sensitivity
20
+ * ceilings that gate collection (T-002) and dispatch (T-003) also gate rendered
21
+ * content here — evidence above the configured ceiling is dropped before the
22
+ * builder ever sees it, and free-text fields pass through the redaction path.
23
+ */
24
+ /**
25
+ * The opaque-origin sandbox contract reused from `artifact-route-generation.ts`
26
+ * (`network: 'none', filesystem: 'none', tools: []`), the same posture proven
27
+ * out for generated route artifacts. A decision brief is a fully-offline
28
+ * reading document, so it additionally allows NO external URL scheme — the
29
+ * pipeline builder rejects any `http(s)://` reference outright. The shape is
30
+ * kept structurally compatible with the route sandbox so no new sandbox model
31
+ * is invented (DoD point 5).
32
+ */
33
+ export const OPAQUE_ORIGIN_DECISION_BRIEF_SANDBOX = Object.freeze({
34
+ network: 'none',
35
+ filesystem: 'none',
36
+ tools: Object.freeze([]),
37
+ allowedUrlSchemes: Object.freeze([]),
38
+ });
39
+ /**
40
+ * Load the pipeline's decision-brief builder from the installed pipeline root.
41
+ * The absolute-file import mirrors `pipeline-handoff.ts` (the package `exports`
42
+ * map does not expose the raw subpath). Fails closed when the pipeline is not
43
+ * installed so a brief can never silently degrade to an in-repo reimplementation.
44
+ */
45
+ async function loadOperatingDecisionBriefBuilder() {
46
+ const root = resolveOperatingPipelineRoot();
47
+ if (!root) {
48
+ throw new OperateError('E_PIPELINE_NOT_INSTALLED', 'Rendering a self-contained operating decision brief requires the full planr-pipeline package.', {
49
+ recovery: 'Run `npm install -g openplanr@latest` (without `--omit=optional`), then `planr setup --scope user`.',
50
+ });
51
+ }
52
+ const module = (await import(pathToFileURL(path.join(root, 'lib', 'pipeline', 'index.mjs')).href));
53
+ if (typeof module.createOperatingDecisionBriefArtifact !== 'function') {
54
+ throw new OperateError('E_PIPELINE_NOT_INSTALLED', 'The installed pipeline does not expose the self-contained decision-brief renderer.');
55
+ }
56
+ return module.createOperatingDecisionBriefArtifact;
57
+ }
58
+ /**
59
+ * Drop every evidence citation whose sensitivity exceeds the configured
60
+ * ceiling. Pure and deterministic: the kept citations preserve input order and
61
+ * the redacted refs are returned de-duplicated and sorted for a stable record.
62
+ */
63
+ export function filterEvidenceByCeiling(evidence, ceiling) {
64
+ const kept = [];
65
+ const redactedRefs = [];
66
+ for (const item of evidence) {
67
+ if (compareSensitivity(item.sensitivity, ceiling) > 0)
68
+ redactedRefs.push(item.ref);
69
+ else
70
+ kept.push(item);
71
+ }
72
+ return { kept, redactedRefs: [...new Set(redactedRefs)].sort() };
73
+ }
74
+ function redactedText(value) {
75
+ if (typeof value !== 'string' || value.trim() === '')
76
+ return undefined;
77
+ const sanitized = sanitizeGeneratedPlainText(value).trim();
78
+ return sanitized === '' ? undefined : sanitized;
79
+ }
80
+ function redactedFacts(decision) {
81
+ if (!decision)
82
+ return null;
83
+ const facts = {};
84
+ for (const key of [
85
+ 'status',
86
+ 'owner',
87
+ 'selectedOption',
88
+ 'recommendation',
89
+ 'reversibility',
90
+ 'deadline',
91
+ 'note',
92
+ ]) {
93
+ const value = redactedText(decision[key]);
94
+ if (value !== undefined)
95
+ facts[key] = value;
96
+ }
97
+ return Object.keys(facts).length > 0 ? facts : null;
98
+ }
99
+ /**
100
+ * Assemble the ceiling-filtered, redacted brief/decision inputs for the
101
+ * pipeline builder. Evidence above the ceiling is removed here — before the
102
+ * renderer runs — and every free-text field passes through the redaction path,
103
+ * so above-ceiling and secret-like content can never reach rendered output.
104
+ */
105
+ export function buildDecisionBriefInput(source, ceiling) {
106
+ const { kept, redactedRefs } = filterEvidenceByCeiling(source.evidence, ceiling);
107
+ const evidence = kept.map((item) => item.ref);
108
+ const options = (source.options ?? [])
109
+ .map((option) => {
110
+ const label = redactedText(option.label);
111
+ if (label === undefined)
112
+ return null;
113
+ const detail = redactedText(option.detail);
114
+ return detail === undefined ? { label } : { label, detail };
115
+ })
116
+ .filter((option) => option !== null);
117
+ const brief = {
118
+ id: source.id,
119
+ title: source.title.trim(),
120
+ };
121
+ const summary = redactedText(source.summary);
122
+ if (summary !== undefined)
123
+ brief.summary = summary;
124
+ const question = redactedText(source.question);
125
+ if (question !== undefined)
126
+ brief.question = question;
127
+ if (evidence.length > 0)
128
+ brief.evidence = evidence;
129
+ if (options.length > 0)
130
+ brief.options = options;
131
+ const blocks = redactedText(source.blocks);
132
+ if (blocks !== undefined)
133
+ brief.blocks = blocks;
134
+ return {
135
+ brief,
136
+ decision: redactedFacts(source.decision),
137
+ redactedEvidenceRefs: redactedRefs,
138
+ };
139
+ }
140
+ /**
141
+ * Render a ceiling-filtered brief/decision into a validated, self-contained
142
+ * offline artifact envelope. The pipeline builder is authoritative for the
143
+ * offline posture: any `http(s)://` reference in the rendered HTML fails closed
144
+ * with `E_OPERATE_DECISION_BRIEF_NOT_OFFLINE`, which is allowed to propagate
145
+ * unchanged (DoD: an external reference "fails closed via the pipeline error").
146
+ */
147
+ export async function renderOperatingDecisionBriefArtifact(source, ceiling) {
148
+ const build = await loadOperatingDecisionBriefBuilder();
149
+ const { brief, decision, redactedEvidenceRefs } = buildDecisionBriefInput(source, ceiling);
150
+ const envelope = build(brief, decision);
151
+ const artifact = envelope.artifacts[0];
152
+ if (!artifact || artifact.kind !== 'html' || typeof artifact.html !== 'string') {
153
+ throw new OperateError('E_OPERATE_ARTIFACT_REJECTED', 'The decision-brief renderer did not return a single HTML artifact.');
154
+ }
155
+ return {
156
+ envelope,
157
+ html: artifact.html,
158
+ sha256: artifact.sha256,
159
+ sandbox: OPAQUE_ORIGIN_DECISION_BRIEF_SANDBOX,
160
+ redactedEvidenceRefs,
161
+ offline: true,
162
+ };
163
+ }
164
+ /**
165
+ * Read the machine-local sensitivity ceiling. Mirrors the collection/dispatch
166
+ * paths: the ceiling defaults to `internal` when preferences are absent so a
167
+ * brief is never rendered with a more permissive posture than collection used.
168
+ */
169
+ export async function readOperatingSensitivityCeiling(projectRoot, options = {}) {
170
+ const paths = resolveOperatingPaths(projectRoot, { localRoot: options.localRoot });
171
+ const preferences = await readFile(path.join(paths.localRoot, 'preferences.json'), 'utf8')
172
+ .then((raw) => JSON.parse(raw))
173
+ .catch(() => ({ sensitivityCeiling: 'internal' }));
174
+ return preferences.sensitivityCeiling ?? 'internal';
175
+ }
176
+ /**
177
+ * Render a brief/decision and write its self-contained HTML to a
178
+ * project-contained destination. This is the share-on-request boundary:
179
+ * nothing is written unless the operator supplied `--render <path>`, and the
180
+ * file is written with restrictive permissions to the local project only. When
181
+ * `ceiling` is omitted it is resolved from the machine-local preferences.
182
+ */
183
+ export async function writeOperatingDecisionBriefArtifact(input) {
184
+ const ceiling = input.ceiling ??
185
+ (await readOperatingSensitivityCeiling(input.projectRoot, { localRoot: input.localRoot }));
186
+ const target = await resolveContainedPath(input.projectRoot, input.destination);
187
+ const rendered = await renderOperatingDecisionBriefArtifact(input.source, ceiling);
188
+ await mkdir(path.dirname(target), { recursive: true, mode: 0o700 });
189
+ const temporary = `${target}.${process.pid}.tmp`;
190
+ await writeFile(temporary, rendered.html, { mode: 0o600 });
191
+ await rename(temporary, target);
192
+ return { ...rendered, path: target, sensitivityCeiling: ceiling };
193
+ }
194
+ //# sourceMappingURL=decision-brief.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-brief.js","sourceRoot":"","sources":["../../../src/services/operate/decision-brief.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAwTD,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAkCvC"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA0lBD,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA4CvC"}
@@ -1,12 +1,13 @@
1
1
  import { existsSync } from 'node:fs';
2
- import { readdir } from 'node:fs/promises';
2
+ import { readdir, readFile } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import { canonicalDigest } from './canonical.js';
5
- import { operatingProjectKey } from './config.js';
5
+ import { operatingProjectKey, readOperatingDispatchModeOverrides } from './config.js';
6
6
  import { OperatingEventStore } from './event-store.js';
7
7
  import { guidedSessionStatus } from './interaction/session-service.js';
8
8
  import { readJournal } from './journal.js';
9
9
  import { readOperatingLock } from './lock-service.js';
10
+ import { detectOperatingStorageLayout } from './migration.js';
10
11
  import { inspectOperatingProjectionDrift } from './projection-persistence.js';
11
12
  import { loadOperatingProtocol, operatingPipelineAvailable } from './protocol.js';
12
13
  import { resolveOperatingPaths } from './workspace.js';
@@ -288,6 +289,266 @@ async function diagnoseJournals(projectRoot, localRoot) {
288
289
  message: 'Operating transaction journals are terminal and schema-valid',
289
290
  };
290
291
  }
292
+ /**
293
+ * Additive Protocol v1.3 (FR10 / E-010) check: detect the on-disk storage
294
+ * layout (SPEC-002 v1.2 vs the v1.3 `.state/` view) and name any inconsistency
295
+ * — an interrupted migration that left the v1.3 view alongside SPEC-002 residue,
296
+ * or a project still on the legacy layout — with the automatic-migration repair.
297
+ */
298
+ async function diagnoseStorageLayout(projectRoot, localRoot) {
299
+ const paths = resolveOperatingPaths(projectRoot, { localRoot });
300
+ const layout = await detectOperatingStorageLayout(projectRoot, { localRoot });
301
+ // SPEC-002 internals that must not coexist with the v1.3 `.state/` view: the
302
+ // root events log, the per-digest-prefix records tree, and the checkpoint dir.
303
+ const residue = [
304
+ path.join(paths.root, 'events.jsonl'),
305
+ path.join(paths.root, 'records'),
306
+ path.join(paths.root, 'checkpoints'),
307
+ ].filter((target) => existsSync(target));
308
+ if (layout === 'v1.3' && residue.length > 0) {
309
+ return {
310
+ code: 'operate-layout',
311
+ status: 'warn',
312
+ message: `Operating storage is on the v1.3 \`.state/\` layout but ${residue.length} SPEC-002 residue path(s) remain from an interrupted migration`,
313
+ fix: 'Run `planr operate migrate apply --yes` to clear the residual SPEC-002 layout.',
314
+ };
315
+ }
316
+ if (layout === 'v1.2') {
317
+ return {
318
+ code: 'operate-layout',
319
+ status: 'warn',
320
+ message: 'Operating storage is on the legacy SPEC-002 layout and has not migrated to the v1.3 `.state/` layout',
321
+ fix: 'Run `planr operate migrate apply --yes` to migrate the storage layout to v1.3.',
322
+ };
323
+ }
324
+ return {
325
+ code: 'operate-layout',
326
+ status: 'pass',
327
+ message: layout === 'v1.3'
328
+ ? 'Operating storage is on the v1.3 `.state/` layout with no SPEC-002 residue'
329
+ : 'No Operating Board storage layout is present yet',
330
+ };
331
+ }
332
+ /**
333
+ * Additive Protocol v1.3 (FR10 / E-010) check: verify every line of the
334
+ * append-only `.state/records.jsonl` is parseable and carries consistent
335
+ * content-address digests. The record digest is a pure function of
336
+ * `(recordType, createdAt, correlationId, contentDigest)` and `contentDigest`
337
+ * is the canonical digest of the content, so both are recomputed exactly as the
338
+ * write path and `readRecord` do. A v1.2 (unmigrated) project keeps records in
339
+ * the SPEC-002 tree and has no `.state/records.jsonl` yet — that is a pass.
340
+ */
341
+ async function diagnoseRecordsLog(projectRoot, localRoot) {
342
+ const paths = resolveOperatingPaths(projectRoot, { localRoot });
343
+ const raw = await readFile(paths.records, 'utf8').catch((error) => {
344
+ if (error.code === 'ENOENT')
345
+ return null;
346
+ throw error;
347
+ });
348
+ if (raw === null) {
349
+ return {
350
+ code: 'operate-records',
351
+ status: 'pass',
352
+ message: 'No v1.3 `.state/records.jsonl` log is present yet',
353
+ };
354
+ }
355
+ let counted = 0;
356
+ for (const [index, line] of raw.split('\n').entries()) {
357
+ if (!line.trim())
358
+ continue;
359
+ counted += 1;
360
+ let entry;
361
+ try {
362
+ entry = JSON.parse(line);
363
+ }
364
+ catch {
365
+ return {
366
+ code: 'operate-records',
367
+ status: 'fail',
368
+ message: `Operating \`.state/records.jsonl\` line ${index + 1} is not valid JSON`,
369
+ fix: 'Run `planr operate integrity status`; do not edit .state/records.jsonl by hand.',
370
+ };
371
+ }
372
+ if (typeof entry.digest !== 'string' ||
373
+ !entry.digest.startsWith('sha256:') ||
374
+ typeof entry.contentDigest !== 'string' ||
375
+ !entry.contentDigest.startsWith('sha256:')) {
376
+ return {
377
+ code: 'operate-records',
378
+ status: 'fail',
379
+ message: `Operating \`.state/records.jsonl\` line ${index + 1} is missing its content-address digests`,
380
+ fix: 'Run `planr operate integrity status`; do not edit .state/records.jsonl by hand.',
381
+ };
382
+ }
383
+ const consistent = entry.content !== undefined &&
384
+ entry.contentDigest === canonicalDigest(entry.content) &&
385
+ entry.digest ===
386
+ canonicalDigest({
387
+ recordType: entry.recordType,
388
+ createdAt: entry.createdAt,
389
+ correlationId: entry.correlationId,
390
+ contentDigest: entry.contentDigest,
391
+ });
392
+ if (!consistent) {
393
+ return {
394
+ code: 'operate-records',
395
+ status: 'fail',
396
+ message: `Operating \`.state/records.jsonl\` line ${index + 1} digest does not match its content`,
397
+ fix: 'Run `planr operate integrity status`, then recover the affected cycle from the verified event chain.',
398
+ };
399
+ }
400
+ }
401
+ return {
402
+ code: 'operate-records',
403
+ status: 'pass',
404
+ message: `${counted} operating records.jsonl ${counted === 1 ? 'entry is' : 'entries are'} parseable with consistent content-address digests`,
405
+ };
406
+ }
407
+ /**
408
+ * Additive Protocol v1.3 (FR10 / E-010) check: the persisted per-project
409
+ * dispatch-mode overrides (machine-local `preferences.json`) must reference only
410
+ * known registry role IDs and `pack`/`mission` modes. Reuses the same strict
411
+ * validation the write path enforces; an invalid map fails closed with the
412
+ * repair rather than throwing out of the doctor run.
413
+ */
414
+ async function diagnoseDispatchModes(projectRoot, localRoot) {
415
+ try {
416
+ const overrides = await readOperatingDispatchModeOverrides(projectRoot, { localRoot });
417
+ const count = Object.keys(overrides).length;
418
+ return {
419
+ code: 'operate-dispatch-mode',
420
+ status: 'pass',
421
+ message: count === 0
422
+ ? 'No per-project dispatch-mode overrides are configured'
423
+ : `${count} per-project dispatch-mode override(s) reference known roles and valid pack/mission modes`,
424
+ };
425
+ }
426
+ catch (error) {
427
+ return {
428
+ code: 'operate-dispatch-mode',
429
+ status: 'fail',
430
+ message: `Operating dispatch-mode overrides are invalid: ${error instanceof Error ? error.message : String(error)}`,
431
+ fix: 'Run `planr operate config edit --dispatch-mode-override <roleId>=<pack|mission>` to restore valid overrides.',
432
+ };
433
+ }
434
+ }
435
+ /**
436
+ * FR11: detect machine-local adapter sessions that are bound to a superseded
437
+ * board generation (their `boardIdentity` no longer matches the committed
438
+ * event-chain genesis) or to a cycle that is no longer present in committed
439
+ * state. These are exactly the sessions that used to dead-end a re-inited board
440
+ * with a misleading `E_OPERATE_ADVISOR_ISOLATION`; they now supersede cleanly,
441
+ * and this diagnostic names the scoped purge so an operator can clear them
442
+ * before the next dispatch. Reads only machine-local session files and never
443
+ * mutates state.
444
+ */
445
+ async function diagnoseAdapterSessions(projectRoot, localRoot) {
446
+ const paths = resolveOperatingPaths(projectRoot, { localRoot });
447
+ let boardIdentity = '';
448
+ let committedCycleIds = new Set();
449
+ try {
450
+ const store = new OperatingEventStore(projectRoot, { localRoot });
451
+ const { events } = await store.replay();
452
+ const genesis = events.find((event) => event.previousEventHash === null) ?? events[0];
453
+ boardIdentity = genesis?.eventHash ?? '';
454
+ const state = await store.state();
455
+ committedCycleIds = new Set(state.cycles.map((cycle) => cycle.id));
456
+ }
457
+ catch {
458
+ // A broken/absent event chain is diagnosed by the event-replay checks;
459
+ // adapter-session staleness is only meaningful against a readable board.
460
+ return {
461
+ code: 'operate-adapter-sessions',
462
+ status: 'pass',
463
+ message: 'No committed board identity is available to validate adapter sessions against yet',
464
+ };
465
+ }
466
+ const entries = (await readdir(paths.advisors, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith('.json'));
467
+ const stale = [];
468
+ for (const entry of entries) {
469
+ const raw = await readFile(path.join(paths.advisors, entry.name), 'utf8').catch(() => null);
470
+ if (raw === null)
471
+ continue;
472
+ let session;
473
+ try {
474
+ session = JSON.parse(raw);
475
+ }
476
+ catch {
477
+ continue;
478
+ }
479
+ if (session.implementation !== 'openplanr-operate-adapter')
480
+ continue;
481
+ const boundToBoard = (session.boardIdentity ?? '') === boardIdentity;
482
+ const boundToCommittedCycle = typeof session.cycleId === 'string' && committedCycleIds.has(session.cycleId);
483
+ if (!boundToBoard || !boundToCommittedCycle)
484
+ stale.push(entry.name);
485
+ }
486
+ if (stale.length > 0) {
487
+ return {
488
+ code: 'operate-adapter-sessions',
489
+ status: 'warn',
490
+ message: `${stale.length} machine-local adapter session(s) are bound to a superseded board generation or a cycle absent from committed state`,
491
+ fix: 'Run `planr operate cache purge --yes` to clear the stale adapter sessions before the next dispatch.',
492
+ };
493
+ }
494
+ return {
495
+ code: 'operate-adapter-sessions',
496
+ status: 'pass',
497
+ message: 'Machine-local adapter sessions are bound to the current board identity and its cycles',
498
+ };
499
+ }
500
+ /**
501
+ * FR11: detect incremental evidence baselines whose captured `workspaceDigest`
502
+ * no longer matches the committed workspace manifest — a baseline collected
503
+ * against a superseded workspace (for example, a prior board generation). Such a
504
+ * baseline is already rejected on read (recollect deep), so this is a `warn`,
505
+ * not a `fail`; it names the scoped purge that drops the orphaned baselines.
506
+ */
507
+ async function diagnoseIncrementalBaselines(projectRoot, localRoot) {
508
+ const paths = resolveOperatingPaths(projectRoot, { localRoot });
509
+ const committed = await readFile(paths.workspace, 'utf8')
510
+ .then((raw) => JSON.parse(raw))
511
+ .catch(() => null);
512
+ if (!committed?.workspaceDigest) {
513
+ return {
514
+ code: 'operate-incremental-baseline',
515
+ status: 'pass',
516
+ message: 'No committed workspace digest is available to validate incremental baselines yet',
517
+ };
518
+ }
519
+ const directory = path.join(paths.evidence, 'incremental');
520
+ const entries = (await readdir(directory, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith('.json'));
521
+ const stale = [];
522
+ for (const entry of entries) {
523
+ const raw = await readFile(path.join(directory, entry.name), 'utf8').catch(() => null);
524
+ if (raw === null)
525
+ continue;
526
+ let record;
527
+ try {
528
+ record = JSON.parse(raw);
529
+ }
530
+ catch {
531
+ continue;
532
+ }
533
+ if (record.implementation !== 'openplanr-operate-incremental-evidence')
534
+ continue;
535
+ if ((record.workspaceDigest ?? '') !== committed.workspaceDigest)
536
+ stale.push(entry.name);
537
+ }
538
+ if (stale.length > 0) {
539
+ return {
540
+ code: 'operate-incremental-baseline',
541
+ status: 'warn',
542
+ message: `${stale.length} incremental evidence baseline(s) no longer match the committed workspace digest and will be recollected deep`,
543
+ fix: 'Run `planr operate cache purge --yes` to drop the stale incremental baselines.',
544
+ };
545
+ }
546
+ return {
547
+ code: 'operate-incremental-baseline',
548
+ status: 'pass',
549
+ message: 'Incremental evidence baselines match the committed workspace digest',
550
+ };
551
+ }
291
552
  export async function diagnoseOperatingBoard(input) {
292
553
  const diagnostics = [await diagnoseProtocol(input.pipelineVersion)];
293
554
  const paths = resolveOperatingPaths(input.projectRoot, { localRoot: input.localRoot });
@@ -316,7 +577,14 @@ export async function diagnoseOperatingBoard(input) {
316
577
  ? { fix: 'Run `planr operate cache purge --yes` after reviewing the cache status.' }
317
578
  : {}),
318
579
  });
319
- diagnostics.push(...(await diagnoseEventState(input.projectRoot, input.localRoot)), await diagnoseLocks(input.projectRoot, input.localRoot), await diagnoseJournals(input.projectRoot, input.localRoot));
580
+ diagnostics.push(...(await diagnoseEventState(input.projectRoot, input.localRoot)), await diagnoseLocks(input.projectRoot, input.localRoot), await diagnoseJournals(input.projectRoot, input.localRoot),
581
+ // Additive Protocol v1.3 (FR10 / E-010) diagnostics layered on the
582
+ // SPEC-003 surface: storage-layout version, records-log integrity, and
583
+ // persisted dispatch-mode override validity.
584
+ await diagnoseStorageLayout(input.projectRoot, input.localRoot), await diagnoseRecordsLog(input.projectRoot, input.localRoot), await diagnoseDispatchModes(input.projectRoot, input.localRoot),
585
+ // FR11: the two staleness detectors for the machine-local caches FR4 binds
586
+ // to board identity — stale adapter sessions and stale incremental baselines.
587
+ await diagnoseAdapterSessions(input.projectRoot, input.localRoot), await diagnoseIncrementalBaselines(input.projectRoot, input.localRoot));
320
588
  return diagnostics;
321
589
  }
322
590
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"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"}