openplanr 1.18.0 → 1.20.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 (153) hide show
  1. package/dist/cli/commands/backlog.d.ts.map +1 -1
  2. package/dist/cli/commands/backlog.js +3 -0
  3. package/dist/cli/commands/backlog.js.map +1 -1
  4. package/dist/cli/commands/config.d.ts.map +1 -1
  5. package/dist/cli/commands/config.js +3 -0
  6. package/dist/cli/commands/config.js.map +1 -1
  7. package/dist/cli/commands/epic.d.ts.map +1 -1
  8. package/dist/cli/commands/epic.js +2 -0
  9. package/dist/cli/commands/epic.js.map +1 -1
  10. package/dist/cli/commands/feature.d.ts.map +1 -1
  11. package/dist/cli/commands/feature.js +2 -0
  12. package/dist/cli/commands/feature.js.map +1 -1
  13. package/dist/cli/commands/operate.d.ts +5 -2
  14. package/dist/cli/commands/operate.d.ts.map +1 -1
  15. package/dist/cli/commands/operate.js +10 -101
  16. package/dist/cli/commands/operate.js.map +1 -1
  17. package/dist/cli/commands/plan.d.ts.map +1 -1
  18. package/dist/cli/commands/plan.js +2 -0
  19. package/dist/cli/commands/plan.js.map +1 -1
  20. package/dist/cli/commands/quick.d.ts.map +1 -1
  21. package/dist/cli/commands/quick.js +2 -0
  22. package/dist/cli/commands/quick.js.map +1 -1
  23. package/dist/cli/commands/refine.d.ts.map +1 -1
  24. package/dist/cli/commands/refine.js +2 -0
  25. package/dist/cli/commands/refine.js.map +1 -1
  26. package/dist/cli/commands/revise.d.ts.map +1 -1
  27. package/dist/cli/commands/revise.js +2 -0
  28. package/dist/cli/commands/revise.js.map +1 -1
  29. package/dist/cli/commands/spec.d.ts.map +1 -1
  30. package/dist/cli/commands/spec.js +2 -0
  31. package/dist/cli/commands/spec.js.map +1 -1
  32. package/dist/cli/commands/sprint.d.ts.map +1 -1
  33. package/dist/cli/commands/sprint.js +2 -0
  34. package/dist/cli/commands/sprint.js.map +1 -1
  35. package/dist/cli/commands/story.d.ts.map +1 -1
  36. package/dist/cli/commands/story.js +3 -0
  37. package/dist/cli/commands/story.js.map +1 -1
  38. package/dist/cli/commands/task.d.ts.map +1 -1
  39. package/dist/cli/commands/task.js +3 -0
  40. package/dist/cli/commands/task.js.map +1 -1
  41. package/dist/services/ai-service.d.ts +3 -5
  42. package/dist/services/ai-service.d.ts.map +1 -1
  43. package/dist/services/ai-service.js +7 -1
  44. package/dist/services/ai-service.js.map +1 -1
  45. package/dist/services/credentials-service.d.ts.map +1 -1
  46. package/dist/services/credentials-service.js +2 -0
  47. package/dist/services/credentials-service.js.map +1 -1
  48. package/dist/services/deprecation-notices.d.ts +5 -0
  49. package/dist/services/deprecation-notices.d.ts.map +1 -0
  50. package/dist/services/deprecation-notices.js +6 -0
  51. package/dist/services/deprecation-notices.js.map +1 -0
  52. package/dist/services/operate/advisors.d.ts +146 -108
  53. package/dist/services/operate/advisors.d.ts.map +1 -1
  54. package/dist/services/operate/advisors.js +178 -448
  55. package/dist/services/operate/advisors.js.map +1 -1
  56. package/dist/services/operate/citation-resolution.d.ts.map +1 -1
  57. package/dist/services/operate/citation-resolution.js +50 -1
  58. package/dist/services/operate/citation-resolution.js.map +1 -1
  59. package/dist/services/operate/config.d.ts +28 -52
  60. package/dist/services/operate/config.d.ts.map +1 -1
  61. package/dist/services/operate/config.js +68 -203
  62. package/dist/services/operate/config.js.map +1 -1
  63. package/dist/services/operate/doctor.d.ts +15 -0
  64. package/dist/services/operate/doctor.d.ts.map +1 -1
  65. package/dist/services/operate/doctor.js +142 -32
  66. package/dist/services/operate/doctor.js.map +1 -1
  67. package/dist/services/operate/engine.d.ts +22 -62
  68. package/dist/services/operate/engine.d.ts.map +1 -1
  69. package/dist/services/operate/engine.js +269 -191
  70. package/dist/services/operate/engine.js.map +1 -1
  71. package/dist/services/operate/evidence.d.ts +9 -78
  72. package/dist/services/operate/evidence.d.ts.map +1 -1
  73. package/dist/services/operate/evidence.js +0 -1194
  74. package/dist/services/operate/evidence.js.map +1 -1
  75. package/dist/services/operate/index.d.ts.map +1 -1
  76. package/dist/services/operate/index.js +15 -231
  77. package/dist/services/operate/index.js.map +1 -1
  78. package/dist/services/operate/integrity.d.ts +81 -0
  79. package/dist/services/operate/integrity.d.ts.map +1 -0
  80. package/dist/services/operate/integrity.js +152 -0
  81. package/dist/services/operate/integrity.js.map +1 -0
  82. package/dist/services/operate/interaction/answer-service.d.ts +0 -10
  83. package/dist/services/operate/interaction/answer-service.d.ts.map +1 -1
  84. package/dist/services/operate/interaction/answer-service.js +63 -43
  85. package/dist/services/operate/interaction/answer-service.js.map +1 -1
  86. package/dist/services/operate/interaction/question-engine.d.ts.map +1 -1
  87. package/dist/services/operate/interaction/question-engine.js +105 -21
  88. package/dist/services/operate/interaction/question-engine.js.map +1 -1
  89. package/dist/services/operate/interaction/question-registry.d.ts +16 -1
  90. package/dist/services/operate/interaction/question-registry.d.ts.map +1 -1
  91. package/dist/services/operate/interaction/question-registry.js +45 -39
  92. package/dist/services/operate/interaction/question-registry.js.map +1 -1
  93. package/dist/services/operate/interaction/session-service.d.ts.map +1 -1
  94. package/dist/services/operate/interaction/session-service.js +16 -11
  95. package/dist/services/operate/interaction/session-service.js.map +1 -1
  96. package/dist/services/operate/interaction/terminal-renderer.d.ts.map +1 -1
  97. package/dist/services/operate/interaction/terminal-renderer.js +16 -6
  98. package/dist/services/operate/interaction/terminal-renderer.js.map +1 -1
  99. package/dist/services/operate/lifecycle.d.ts.map +1 -1
  100. package/dist/services/operate/lifecycle.js +17 -1
  101. package/dist/services/operate/lifecycle.js.map +1 -1
  102. package/dist/services/operate/maintenance.d.ts.map +1 -1
  103. package/dist/services/operate/maintenance.js +95 -276
  104. package/dist/services/operate/maintenance.js.map +1 -1
  105. package/dist/services/operate/mission-dispatch.d.ts +73 -55
  106. package/dist/services/operate/mission-dispatch.d.ts.map +1 -1
  107. package/dist/services/operate/mission-dispatch.js +91 -67
  108. package/dist/services/operate/mission-dispatch.js.map +1 -1
  109. package/dist/services/operate/projection-persistence.d.ts +35 -7
  110. package/dist/services/operate/projection-persistence.d.ts.map +1 -1
  111. package/dist/services/operate/projection-persistence.js +142 -53
  112. package/dist/services/operate/projection-persistence.js.map +1 -1
  113. package/dist/services/operate/projection.d.ts +9 -1
  114. package/dist/services/operate/projection.d.ts.map +1 -1
  115. package/dist/services/operate/projection.js +22 -12
  116. package/dist/services/operate/projection.js.map +1 -1
  117. package/dist/services/operate/protocol.d.ts +1 -41
  118. package/dist/services/operate/protocol.d.ts.map +1 -1
  119. package/dist/services/operate/protocol.js +7 -45
  120. package/dist/services/operate/protocol.js.map +1 -1
  121. package/dist/services/operate/redaction.d.ts +3 -3
  122. package/dist/services/operate/redaction.js +4 -4
  123. package/dist/services/operate/redaction.js.map +1 -1
  124. package/dist/services/operate/reports.d.ts +20 -1
  125. package/dist/services/operate/reports.d.ts.map +1 -1
  126. package/dist/services/operate/reports.js +108 -4
  127. package/dist/services/operate/reports.js.map +1 -1
  128. package/dist/services/operate/routes.d.ts +84 -0
  129. package/dist/services/operate/routes.d.ts.map +1 -1
  130. package/dist/services/operate/routes.js +519 -10
  131. package/dist/services/operate/routes.js.map +1 -1
  132. package/dist/services/operate/types.d.ts +48 -133
  133. package/dist/services/operate/types.d.ts.map +1 -1
  134. package/dist/services/operate/types.js.map +1 -1
  135. package/dist/services/operate/workspace.d.ts +0 -1
  136. package/dist/services/operate/workspace.d.ts.map +1 -1
  137. package/dist/services/operate/workspace.js +0 -2
  138. package/dist/services/operate/workspace.js.map +1 -1
  139. package/dist/services/runtime-manager-service.js +2 -2
  140. package/dist/services/runtime-manager-service.js.map +1 -1
  141. package/package.json +3 -3
  142. package/dist/services/operate/evidence-classifications.d.ts +0 -59
  143. package/dist/services/operate/evidence-classifications.d.ts.map +0 -1
  144. package/dist/services/operate/evidence-classifications.js +0 -132
  145. package/dist/services/operate/evidence-classifications.js.map +0 -1
  146. package/dist/services/operate/evidence-diagnostics.d.ts +0 -23
  147. package/dist/services/operate/evidence-diagnostics.d.ts.map +0 -1
  148. package/dist/services/operate/evidence-diagnostics.js +0 -152
  149. package/dist/services/operate/evidence-diagnostics.js.map +0 -1
  150. package/dist/services/operate/evidence-readiness.d.ts +0 -8
  151. package/dist/services/operate/evidence-readiness.d.ts.map +0 -1
  152. package/dist/services/operate/evidence-readiness.js +0 -84
  153. package/dist/services/operate/evidence-readiness.js.map +0 -1
@@ -4,7 +4,7 @@ import { pathToFileURL } from 'node:url';
4
4
  import { resolveOperatingPipelineRoot } from './protocol.js';
5
5
  import { executeGitReadOnly } from './read-only-providers.js';
6
6
  import { compareSensitivity } from './redaction.js';
7
- import { OperateError, } from './types.js';
7
+ import { OperateError } from './types.js';
8
8
  /**
9
9
  * The bounded read-only capability set for a mission-mode lens. Kept in lockstep
10
10
  * with the pipeline's `MISSION_READ_ONLY_TOOLS`: no write, execute, network, or
@@ -24,17 +24,8 @@ function isReadOnlyTool(tool) {
24
24
  return MISSION_READ_ONLY_TOOLS.includes(tool);
25
25
  }
26
26
  // ---------------------------------------------------------------------------
27
- // Dispatch-mode resolution (FR4 / E-004) + runtime enforceability (FR2)
27
+ // Runtime enforceability (FR2)
28
28
  // ---------------------------------------------------------------------------
29
- /**
30
- * The registry default dispatch mode for a role. The v1.3 role registry carries
31
- * a `dispatchMode` field; while it is still published without one every role
32
- * defaults to `mission`, and only a role explicitly marked `pack` opts out —
33
- * exactly the pipeline's own `role?.dispatchMode ?? 'mission'` convention.
34
- */
35
- export function operatingRegistryDispatchMode(role) {
36
- return role?.dispatchMode === 'pack' ? 'pack' : 'mission';
37
- }
38
29
  let cachedRuntimeEnforcement = null;
39
30
  /**
40
31
  * Load the pipeline's runtime registry and derive, per runtime, whether it
@@ -83,82 +74,115 @@ export async function operatingRuntimeEnforcesBoundedReadOnly(runtime) {
83
74
  return (await loadRuntimeEnforcement())(runtime);
84
75
  }
85
76
  /**
86
- * Resolve one role's effective dispatch isolation.
87
- *
88
- * FR4 states Codex SHOULD dispatch natively, but FR2's fail-closed rule
89
- * overrides it: a runtime whose tool isolation is only advisory (`codex`,
90
- * `cursor`) cannot guarantee the bounded read-only boundary, so it routes to the
91
- * structured provider path until its isolation is enforceable. Only a runtime
92
- * that natively enforces tool isolation (`toolIsolation === 'enforced'`, i.e.
93
- * `claude-code`) hosting a native-isolated adapter receives a native mission
94
- * lens; every other combination fails closed here. This is the exact FR2/FR4
95
- * reconciliation the spec calls out, recorded in the returned `reconciliation`
96
- * so it appears in the dispatch provenance.
77
+ * Classify one role's dispatch isolation (FR10). Governance moved to OUTPUT
78
+ * verification, so the runtime is no longer gated on a native-vs-structured
79
+ * split before it may think — it is classified purely on whether it can carry a
80
+ * mandate and return a schema-valid cited response. A runtime that natively
81
+ * enforces the bounded read-only tool grant, hosting an adapter that can host a
82
+ * native lens, is `enforced-read-only-bounded` and dispatches natively; every
83
+ * other runtime — advisory or unverifiable isolation, or an adapter that cannot
84
+ * host a bounded lens — is declared `unsupported` for operate, never silently
85
+ * routed to a deprecated structured-provider fallback. The specific reason is
86
+ * recorded in `reconciliation` so it appears in the dispatch provenance.
97
87
  */
98
- export function resolveOperatingDispatchMode(input) {
99
- const mode = input.override ?? input.registryDefault;
100
- if (mode === 'pack') {
101
- return {
102
- roleId: input.roleId,
103
- mode,
104
- isolation: 'enforced-empty-tools',
105
- native: false,
106
- reconciliation: input.override === 'pack'
107
- ? 'dispatchModeOverrides rolled this role back to the v1.2 empty-tool pack path'
108
- : 'registry default selects the v1.2 empty-tool pack path',
109
- };
110
- }
88
+ export function resolveOperatingDispatchIsolation(input) {
111
89
  if (input.runtimeEnforcesBoundedReadOnly && input.adapterNativeCapable) {
112
90
  return {
113
91
  roleId: input.roleId,
114
- mode,
115
92
  isolation: 'enforced-read-only-bounded',
116
93
  native: true,
117
- reconciliation: 'runtime natively enforces tool isolation; a bounded read-only mission lens is dispatched',
94
+ reconciliation: 'runtime natively enforces tool isolation and can carry a mandate; a bounded read-only mission lens is dispatched',
118
95
  };
119
96
  }
120
97
  return {
121
98
  roleId: input.roleId,
122
- mode,
123
- isolation: 'fail-closed-structured-provider',
99
+ isolation: 'unsupported',
124
100
  native: false,
125
101
  reconciliation: input.runtimeEnforcesBoundedReadOnly
126
- ? 'adapter cannot host a bounded native lens; falling back to the structured provider path'
127
- : 'runtime tool isolation is advisory or unverifiable (FR2 fail-closed overrides FR4); routing to the structured provider path',
102
+ ? 'adapter cannot host a bounded read-only mission lens, so this runtime is unsupported for operate; no silent structured-provider fallback exists'
103
+ : 'runtime tool isolation is advisory or unverifiable, so it cannot carry a mandate and is unsupported for operate; no silent structured-provider fallback exists',
128
104
  };
129
105
  }
130
- // ---------------------------------------------------------------------------
131
- // Sensitivity-ceiling root narrowing (FR2)
132
- // ---------------------------------------------------------------------------
133
106
  /**
134
- * The top-level path segment a declared read root is derived from. Mission roots
135
- * are single top-level directory segments (see `deriveOperatingDeclaredRoots`).
107
+ * Classify a runtime for operate dispatch (FR10). A runtime that natively
108
+ * enforces the bounded read-only boundary can carry a mandate and is
109
+ * `enforced-read-only-bounded` (first-class); every other runtime — advisory or
110
+ * unverifiable isolation, or none selected — is `unsupported`, with the specific
111
+ * reason. Fails closed: a runtime whose enforceability cannot be verified is
112
+ * unsupported, never silently downgraded.
136
113
  */
137
- function topSegment(relativePath) {
138
- const [top] = relativePath.split('/');
139
- return top && top.length > 0 ? top : null;
114
+ export async function classifyOperatingRuntime(runtime) {
115
+ const label = runtime && runtime !== 'auto' ? runtime : 'auto';
116
+ const mandateCapable = await operatingRuntimeEnforcesBoundedReadOnly(runtime);
117
+ if (mandateCapable) {
118
+ return {
119
+ runtime: label,
120
+ isolation: 'enforced-read-only-bounded',
121
+ mandateCapable: true,
122
+ reason: 'natively enforces bounded read-only tool isolation, so it can carry a mandate and dispatch operate lenses first-class',
123
+ };
124
+ }
125
+ return {
126
+ runtime: label,
127
+ isolation: 'unsupported',
128
+ mandateCapable: false,
129
+ reason: label === 'auto'
130
+ ? 'no runtime is selected, so mandate-capable tool isolation cannot be verified'
131
+ : 'tool isolation is advisory or unverifiable, so it cannot carry a mandate; operate declares it unsupported rather than silently degrading it',
132
+ };
140
133
  }
134
+ let cachedRuntimeResolver = null;
141
135
  /**
142
- * Narrow a role's declared read roots by DENY-LISTING any root that contains an
143
- * evidence item above the role's sensitivity ceiling, so no above-ceiling file
144
- * is readable even inside a granted root. Pass the FULL (pre-ceiling-filter)
145
- * evidence index: the narrowing needs to see the above-ceiling items the packet
146
- * index itself excludes. Combined with the read-time ceiling check on the
147
- * bounded reader, this is the belt-and-suspenders that preserves the pack-era
148
- * filter-before-handoff guarantee under agent-driven reads.
136
+ * Resolve the active runtime id for a project WITHOUT probing installed binaries
137
+ * (spawn-free) so `operate doctor` can classify it. Reads the runtime the
138
+ * project/user already selected from the pipeline's reclassified registry. Fails
139
+ * closed to `undefined` when no runtime is selected or the registry cannot be
140
+ * resolved, so an unresolved runtime is classified `unsupported`, never assumed
141
+ * mandate-capable.
142
+ */
143
+ export async function resolveActiveOperatingRuntime(projectRoot) {
144
+ cachedRuntimeResolver ??= (async () => {
145
+ try {
146
+ const root = resolveOperatingPipelineRoot({ requireMission: true });
147
+ if (!root)
148
+ return () => undefined;
149
+ const module = (await import(pathToFileURL(path.join(root, 'lib', 'pipeline', 'runtime.mjs')).href));
150
+ const resolve = module.resolveRuntimeAdapter;
151
+ if (typeof resolve !== 'function')
152
+ return () => undefined;
153
+ return (target) => {
154
+ try {
155
+ return resolve({ projectRoot: target, installed: [] })?.adapter?.id;
156
+ }
157
+ catch {
158
+ return undefined;
159
+ }
160
+ };
161
+ }
162
+ catch {
163
+ return () => undefined;
164
+ }
165
+ })();
166
+ return (await cachedRuntimeResolver)(projectRoot);
167
+ }
168
+ // ---------------------------------------------------------------------------
169
+ // Read-boundary declaration (FR2)
170
+ // ---------------------------------------------------------------------------
171
+ /**
172
+ * Declare a role's mission read roots directly from the granted workspace roots
173
+ * minus the explicitly forbidden paths — the coarse boundary the mandate model
174
+ * dispatches against. There is no evidence index to narrow (the mandate carries
175
+ * none): every granted root is declared whole, and the sensitivity ceiling is
176
+ * enforced not by dropping a root here but by the bounded reader's read-time
177
+ * `assertBelowCeiling` and, at record time, by the citation resolver refusing an
178
+ * above-ceiling citation. A root that exactly matches, or is nested under, a
179
+ * forbidden path is dropped. The result is deduplicated and sorted so the
180
+ * declared boundary is deterministic.
149
181
  */
150
182
  export function narrowMissionRootsToCeiling(input) {
151
- const denied = new Set();
152
- for (const item of input.evidenceIndex) {
153
- if (!item.path)
154
- continue;
155
- if (compareSensitivity(item.sensitivity, input.ceiling) <= 0)
156
- continue;
157
- const top = topSegment(item.path);
158
- if (top)
159
- denied.add(top);
160
- }
161
- return input.declaredRoots.filter((root) => !denied.has(root)).sort();
183
+ const forbidden = input.forbiddenPaths ?? [];
184
+ const isForbidden = (root) => forbidden.some((path) => root === path || root.startsWith(`${path}/`));
185
+ return [...new Set(input.declaredRoots.filter((root) => !isForbidden(root)))].sort();
162
186
  }
163
187
  const MAX_MISSION_READ_BYTES = 256 * 1024;
164
188
  const MAX_MISSION_WALK_ENTRIES = 5_000;
@@ -1 +1 @@
1
- {"version":3,"file":"mission-dispatch.js","sourceRoot":"","sources":["../../../src/services/operate/mission-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mission-dispatch.js","sourceRoot":"","sources":["../../../src/services/operate/mission-dispatch.ts"],"names":[],"mappings":"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"}
@@ -24,18 +24,49 @@ export interface OperatingProjectionPreview {
24
24
  export interface PersistOperatingProjectionResult extends OperatingProjectionPreview {
25
25
  transactionId: string | null;
26
26
  }
27
- export declare function renderOperatingProjectionFiles(state: OperatingState): OperatingProjectionFile[];
27
+ /**
28
+ * The rich, event-log-derived board/report content for one governed cycle.
29
+ * `reportMarkdown` is the full `readOperatingReport({cycleId}).markdown`;
30
+ * `boardByRole` holds each role's `markdownLens` output (the exact per-role
31
+ * Markdown `planr operate report <cycleId> --lens <role>` emits); and
32
+ * `evaluatedRoleIds` names the roles that actually produced an advisor-result
33
+ * record — the source of truth for a board's `Status:` line (FR1).
34
+ */
35
+ export interface OperatingRichCycleArtifact {
36
+ reportMarkdown: string;
37
+ boardByRole: ReadonlyMap<string, string>;
38
+ evaluatedRoleIds: ReadonlySet<string>;
39
+ }
40
+ /**
41
+ * Re-read the committed event log to assemble the rich board/report content for
42
+ * every reviewable/closed cycle. The persisted `report.md`/`board/<role>.md`
43
+ * files must be the same scored, cited analysis the transient `review`/`report`
44
+ * commands render — not the cheap state-only projection — so persistence and
45
+ * drift-inspection both derive them here from the one `readOperatingReport`
46
+ * assembly (FR1). Determinism from the immutable event log guarantees the
47
+ * inspect re-render reproduces the persisted bytes.
48
+ */
49
+ export declare function readOperatingRichCycleArtifacts(input: {
50
+ projectRoot: string;
51
+ state: OperatingState;
52
+ localRoot?: string;
53
+ }): Promise<Map<string, OperatingRichCycleArtifact>>;
54
+ export declare function renderOperatingProjectionFiles(state: OperatingState, richArtifacts?: ReadonlyMap<string, OperatingRichCycleArtifact>): OperatingProjectionFile[];
28
55
  export declare function inspectOperatingProjectionDrift(input: {
29
56
  projectRoot: string;
30
57
  state: OperatingState;
58
+ localRoot?: string;
59
+ richCycleArtifacts?: ReadonlyMap<string, OperatingRichCycleArtifact>;
31
60
  }): Promise<OperatingProjectionDrift[]>;
32
61
  export declare function assertOperatingProjectionsCurrent(input: {
33
62
  projectRoot: string;
34
63
  state: OperatingState;
64
+ localRoot?: string;
35
65
  }): Promise<void>;
36
66
  export declare function prepareOperatingProjectionPersistence(input: {
37
67
  projectRoot: string;
38
68
  state: OperatingState;
69
+ localRoot?: string;
39
70
  }): Promise<OperatingProjectionPreview>;
40
71
  export declare function persistOperatingProjections(input: {
41
72
  projectRoot: string;
@@ -46,16 +77,13 @@ export declare function persistOperatingProjections(input: {
46
77
  revalidateEventHead?: () => Promise<OperatingEventHead>;
47
78
  }): Promise<PersistOperatingProjectionResult>;
48
79
  export declare const OPERATING_PROJECTION_PATHS: {
49
- readonly state: ".planr/operate/projections/state.json";
50
- readonly register: ".planr/operate/projections/register.md";
51
- readonly decisions: ".planr/operate/projections/decisions.md";
52
- readonly dataGaps: ".planr/operate/projections/data-gaps.md";
53
- readonly backlog: ".planr/operate/projections/backlog.md";
80
+ readonly state: ".planr/operate/.state/state.json";
54
81
  readonly evidenceIndex: ".planr/operate/evidence-index.json";
55
82
  readonly brief: ".planr/operate/brief.md";
56
83
  readonly findings: ".planr/operate/findings.md";
57
- readonly readableDecisions: ".planr/operate/decisions.md";
84
+ readonly decisions: ".planr/operate/decisions.md";
58
85
  readonly gaps: ".planr/operate/gaps.md";
59
86
  readonly routes: ".planr/operate/routes.md";
87
+ readonly backlog: ".planr/operate/backlog.md";
60
88
  };
61
89
  //# sourceMappingURL=projection-persistence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projection-persistence.d.ts","sourceRoot":"","sources":["../../../src/services/operate/projection-persistence.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AA8DxF,MAAM,MAAM,8BAA8B,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5E,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,8BAA8B,CAAC;IACvC,cAAc,EAAE,UAAU,MAAM,EAAE,CAAC;IACnC,YAAY,EAAE,UAAU,MAAM,EAAE,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,UAAU,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,aAAa,EAAE,UAAU,MAAM,EAAE,CAAC;IAClC,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,wBAAwB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,gCAAiC,SAAQ,0BAA0B;IAClF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAgTD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,cAAc,GAAG,uBAAuB,EAAE,CAgB/F;AAkED,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;CACvB,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAItC;AAED,wBAAsB,iCAAiC,CAAC,KAAK,EAAE;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB;AAED,wBAAsB,qCAAqC,CAAC,KAAK,EAAE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;CACvB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAsDtC;AAED,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACzD,GAAG,OAAO,CAAC,gCAAgC,CAAC,CA6B5C;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;CAa7B,CAAC"}
1
+ {"version":3,"file":"projection-persistence.d.ts","sourceRoot":"","sources":["../../../src/services/operate/projection-persistence.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,27 @@
1
1
  import { readFile } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { canonicalDigest, canonicalize, sha256Digest } from './canonical.js';
4
+ import { buildOperatingIntegritySummary, renderOperatingIntegrityDocument } from './integrity.js';
4
5
  import { applyJournalTransaction, prepareJournalTransaction, } from './journal.js';
5
6
  import { OPERATING_BOARD_ROLES, renderOperatingBoardReport, renderOperatingBrief, renderOperatingEvidenceIndex, selectCycleState, } from './projection.js';
6
7
  import { assertOperatingArtifact } from './protocol.js';
7
8
  import { operatingStalledItems } from './stalled-item-service.js';
8
9
  import { OperateError } from './types.js';
9
10
  const OPERATE_ROOT = '.planr/operate';
10
- const PROJECTION_ROOT = `${OPERATE_ROOT}/projections`;
11
- const STATE_PATH = `${PROJECTION_ROOT}/state.json`;
11
+ // Protocol v1.3 (FR6): the legacy `.planr/operate/projections/` directory —
12
+ // which duplicated the top-level register/decision/gap tree byte-for-byte and
13
+ // was the only home of the parked-findings backlog — is retired. `state.json`
14
+ // is the sole canonical projection that survives; it moves under the `.state/`
15
+ // internals beside `checkpoint.json`/`records.jsonl`/`events.jsonl`, and every
16
+ // readable register is now emitted exactly once at the top level.
17
+ const STATE_INTERNAL_ROOT = `${OPERATE_ROOT}/.state`;
18
+ const STATE_PATH = `${STATE_INTERNAL_ROOT}/state.json`;
12
19
  const EVIDENCE_INDEX_PATH = `${OPERATE_ROOT}/evidence-index.json`;
13
- const MARKDOWN_PROJECTIONS = [
14
- {
15
- relativePath: `${PROJECTION_ROOT}/register.md`,
16
- markerName: 'operate-findings-register',
17
- render: renderFindingRegister,
18
- },
19
- {
20
- relativePath: `${PROJECTION_ROOT}/decisions.md`,
21
- markerName: 'operate-decisions-register',
22
- render: renderDecisionRegister,
23
- },
24
- {
25
- relativePath: `${PROJECTION_ROOT}/data-gaps.md`,
26
- markerName: 'operate-data-gaps-register',
27
- render: renderDataGapRegister,
28
- },
29
- {
30
- relativePath: `${PROJECTION_ROOT}/backlog.md`,
31
- markerName: 'operate-backlog-register',
32
- render: renderBacklogRegister,
33
- },
34
- ];
35
- // FR5 readable tree: one consolidated Markdown file per register rendered at the
36
- // top level (the workspace path getters T-001 added), above the `.state/`
37
- // internals. `findings.md`/`decisions.md`/`gaps.md` reuse the register renderers
38
- // so the readable tree and the projections directory stay byte-consistent.
20
+ // FR5/FR6 readable tree: one consolidated Markdown file per register rendered at
21
+ // the top level (the workspace path getters T-001 added), above the `.state/`
22
+ // internals. `backlog.md` (parked findings with their full parked reasons) is
23
+ // promoted here from the retired projections directory so parked intelligence
24
+ // has exactly one authoritative readable copy.
39
25
  const READABLE_TREE_PROJECTIONS = [
40
26
  {
41
27
  relativePath: `${OPERATE_ROOT}/brief.md`,
@@ -62,8 +48,15 @@ const READABLE_TREE_PROJECTIONS = [
62
48
  markerName: 'operate-routes-register',
63
49
  render: renderRouteRegister,
64
50
  },
51
+ {
52
+ relativePath: `${OPERATE_ROOT}/backlog.md`,
53
+ markerName: 'operate-backlog-register',
54
+ render: renderBacklogRegister,
55
+ },
65
56
  ];
66
57
  const CYCLE_BRIEF_MARKER = 'operate-cycle-brief';
58
+ const CYCLE_REPORT_MARKER = 'operate-cycle-report';
59
+ const CYCLE_INTEGRITY_MARKER = 'operate-cycle-integrity';
67
60
  const BOARD_MARKER = 'operate-board';
68
61
  function value(record, key, fallback = '') {
69
62
  const candidate = record[key];
@@ -258,8 +251,53 @@ function spliceProjectionBlock(existing, markerName, managedContent) {
258
251
  const afterStart = endStart + end[0].length;
259
252
  return `${existing.slice(0, beginStart)}${block}${existing.slice(afterStart)}`;
260
253
  }
261
- function markdownProjectionSpecs(state) {
262
- const registers = [...MARKDOWN_PROJECTIONS, ...READABLE_TREE_PROJECTIONS].map((projection) => ({
254
+ /**
255
+ * Re-read the committed event log to assemble the rich board/report content for
256
+ * every reviewable/closed cycle. The persisted `report.md`/`board/<role>.md`
257
+ * files must be the same scored, cited analysis the transient `review`/`report`
258
+ * commands render — not the cheap state-only projection — so persistence and
259
+ * drift-inspection both derive them here from the one `readOperatingReport`
260
+ * assembly (FR1). Determinism from the immutable event log guarantees the
261
+ * inspect re-render reproduces the persisted bytes.
262
+ */
263
+ export async function readOperatingRichCycleArtifacts(input) {
264
+ const artifacts = new Map();
265
+ const cycles = input.state.cycles.filter((cycle) => cycle.state === 'reviewable' || cycle.state === 'closed');
266
+ if (cycles.length === 0)
267
+ return artifacts;
268
+ const { readOperatingReport, markdownLens, markdownCompleteRegisters } = await import('./reports.js');
269
+ for (const cycle of cycles) {
270
+ try {
271
+ const report = await readOperatingReport({
272
+ projectRoot: input.projectRoot,
273
+ cycleId: cycle.id,
274
+ lens: 'all',
275
+ localRoot: input.localRoot,
276
+ });
277
+ artifacts.set(cycle.id, {
278
+ // FR8: the persisted `report.md` is self-contained — the concise brief +
279
+ // lens reports + integrity section, then the complete uncapped registers.
280
+ // The CLI's own `operate report` keeps rendering the capped brief; only
281
+ // the on-disk artifact appends every finding/decision/gap/route.
282
+ reportMarkdown: `${report.markdown}\n\n${markdownCompleteRegisters(selectCycleState(input.state, cycle.id))}`,
283
+ boardByRole: new Map(report.reports.map((entry) => [entry.roleId, markdownLens(entry)])),
284
+ evaluatedRoleIds: new Set(report.reports
285
+ .filter((entry) => entry.outcome !== 'not_evaluated')
286
+ .map((entry) => entry.roleId)),
287
+ });
288
+ }
289
+ catch {
290
+ // The rich assembly re-reads the committed event log. If a cycle's records
291
+ // cannot be re-read (for example a hand-built state with no backing event
292
+ // store), skip its artifact: `report.md` is omitted and each
293
+ // `board/<role>.md` falls back to the honest not-evaluated state renderer
294
+ // rather than fabricating scored analysis it cannot source.
295
+ }
296
+ }
297
+ return artifacts;
298
+ }
299
+ function markdownProjectionSpecs(state, richArtifacts) {
300
+ const registers = READABLE_TREE_PROJECTIONS.map((projection) => ({
263
301
  relativePath: projection.relativePath,
264
302
  markerName: projection.markerName,
265
303
  managedContent: projection.render(state),
@@ -267,21 +305,56 @@ function markdownProjectionSpecs(state) {
267
305
  const cycleArtifacts = [...state.cycles]
268
306
  .filter((cycle) => cycle.state === 'reviewable' || cycle.state === 'closed')
269
307
  .sort((left, right) => left.id.localeCompare(right.id))
270
- .flatMap((cycle) => [
271
- {
272
- relativePath: `${OPERATE_ROOT}/cycles/${cycle.id}/brief.md`,
273
- markerName: CYCLE_BRIEF_MARKER,
274
- managedContent: renderCycleBrief(state, cycle.id),
275
- },
276
- ...OPERATING_BOARD_ROLES.map((role) => ({
277
- relativePath: `${OPERATE_ROOT}/cycles/${cycle.id}/board/${role.id}.md`,
278
- markerName: BOARD_MARKER,
279
- managedContent: renderOperatingBoardReport(state, cycle.id, role),
280
- })),
281
- ]);
308
+ .flatMap((cycle) => {
309
+ const rich = richArtifacts.get(cycle.id);
310
+ // FR7: cycle integrity is rendered to its OWN readable-tree file, derived
311
+ // from the cycle's governed gaps, so the signal survives independently of
312
+ // the report and of any lens's prose. A clean cycle writes no integrity
313
+ // file, keeping the tree free of empty artifacts.
314
+ const integrity = buildOperatingIntegritySummary(selectCycleState(state, cycle.id), cycle.id);
315
+ return [
316
+ {
317
+ relativePath: `${OPERATE_ROOT}/cycles/${cycle.id}/brief.md`,
318
+ markerName: CYCLE_BRIEF_MARKER,
319
+ managedContent: renderCycleBrief(state, cycle.id),
320
+ },
321
+ ...(integrity.hasConcerns
322
+ ? [
323
+ {
324
+ relativePath: `${OPERATE_ROOT}/cycles/${cycle.id}/integrity.md`,
325
+ markerName: CYCLE_INTEGRITY_MARKER,
326
+ managedContent: renderOperatingIntegrityDocument(integrity),
327
+ },
328
+ ]
329
+ : []),
330
+ // The full, uncapped lens report — byte-identical to
331
+ // `readOperatingReport({cycleId}).markdown`. Emitted only when the rich
332
+ // assembly is available; the 900-word cap `renderCycleBrief` enforces on
333
+ // `brief.md` is deliberately NOT applied to `report.md`.
334
+ ...(rich
335
+ ? [
336
+ {
337
+ relativePath: `${OPERATE_ROOT}/cycles/${cycle.id}/report.md`,
338
+ markerName: CYCLE_REPORT_MARKER,
339
+ managedContent: rich.reportMarkdown,
340
+ },
341
+ ]
342
+ : []),
343
+ ...OPERATING_BOARD_ROLES.map((role) => ({
344
+ relativePath: `${OPERATE_ROOT}/cycles/${cycle.id}/board/${role.id}.md`,
345
+ markerName: BOARD_MARKER,
346
+ // Rich per-role lens Markdown (identical to `report --lens <role>`)
347
+ // when the advisor-result records are readable; otherwise the honest
348
+ // state-only renderer whose `Status:` derives from the absence of an
349
+ // advisor-result record, never from `enabledRoles`.
350
+ managedContent: rich?.boardByRole.get(role.id) ??
351
+ renderOperatingBoardReport(state, cycle.id, role, rich?.evaluatedRoleIds ?? new Set()),
352
+ })),
353
+ ];
354
+ });
282
355
  return [...registers, ...cycleArtifacts];
283
356
  }
284
- export function renderOperatingProjectionFiles(state) {
357
+ export function renderOperatingProjectionFiles(state, richArtifacts = new Map()) {
285
358
  const stateFile = {
286
359
  relativePath: STATE_PATH,
287
360
  content: `${canonicalize(state)}\n`,
@@ -290,7 +363,7 @@ export function renderOperatingProjectionFiles(state) {
290
363
  relativePath: EVIDENCE_INDEX_PATH,
291
364
  content: renderOperatingEvidenceIndex(state),
292
365
  };
293
- const markdownFiles = markdownProjectionSpecs(state).map((projection) => ({
366
+ const markdownFiles = markdownProjectionSpecs(state, richArtifacts).map((projection) => ({
294
367
  relativePath: projection.relativePath,
295
368
  markerName: projection.markerName,
296
369
  managedContent: projection.managedContent,
@@ -359,7 +432,13 @@ async function inspectProjectionFile(projectRoot, expected) {
359
432
  }
360
433
  export async function inspectOperatingProjectionDrift(input) {
361
434
  await assertOperatingArtifact('operating-state', input.state);
362
- const expected = renderOperatingProjectionFiles(input.state);
435
+ const richArtifacts = input.richCycleArtifacts ??
436
+ (await readOperatingRichCycleArtifacts({
437
+ projectRoot: input.projectRoot,
438
+ state: input.state,
439
+ localRoot: input.localRoot,
440
+ }));
441
+ const expected = renderOperatingProjectionFiles(input.state, richArtifacts);
363
442
  return Promise.all(expected.map((file) => inspectProjectionFile(input.projectRoot, file)));
364
443
  }
365
444
  export async function assertOperatingProjectionsCurrent(input) {
@@ -371,7 +450,15 @@ export async function assertOperatingProjectionsCurrent(input) {
371
450
  }
372
451
  export async function prepareOperatingProjectionPersistence(input) {
373
452
  await assertOperatingArtifact('operating-state', input.state);
374
- const rendered = renderOperatingProjectionFiles(input.state);
453
+ // Assemble the rich board/report content once and thread the same map into
454
+ // both the rendered files and the drift inspection below, so a single persist
455
+ // can never write bytes the drift check would then flag as stale.
456
+ const richArtifacts = await readOperatingRichCycleArtifacts({
457
+ projectRoot: input.projectRoot,
458
+ state: input.state,
459
+ localRoot: input.localRoot,
460
+ });
461
+ const rendered = renderOperatingProjectionFiles(input.state, richArtifacts);
375
462
  const files = [];
376
463
  for (const file of rendered) {
377
464
  if (!file.markerName) {
@@ -399,7 +486,10 @@ export async function prepareOperatingProjectionPersistence(input) {
399
486
  changedPaths.push(file.relativePath);
400
487
  }
401
488
  }
402
- const drift = await inspectOperatingProjectionDrift(input);
489
+ const drift = await inspectOperatingProjectionDrift({
490
+ ...input,
491
+ richCycleArtifacts: richArtifacts,
492
+ });
403
493
  const stateDigest = canonicalDigest(input.state);
404
494
  const previewDigest = canonicalDigest({
405
495
  kind: 'operating-projection-preview',
@@ -453,17 +543,16 @@ export async function persistOperatingProjections(input) {
453
543
  };
454
544
  }
455
545
  export const OPERATING_PROJECTION_PATHS = {
546
+ // The sole surviving canonical projection, relocated under `.state/` now that
547
+ // the legacy `projections/` directory is retired (FR6).
456
548
  state: STATE_PATH,
457
- register: `${PROJECTION_ROOT}/register.md`,
458
- decisions: `${PROJECTION_ROOT}/decisions.md`,
459
- dataGaps: `${PROJECTION_ROOT}/data-gaps.md`,
460
- backlog: `${PROJECTION_ROOT}/backlog.md`,
461
- // FR5 readable tree at the workspace path getters (T-001).
462
549
  evidenceIndex: EVIDENCE_INDEX_PATH,
550
+ // The one authoritative readable copy of every register, at the top level.
463
551
  brief: `${OPERATE_ROOT}/brief.md`,
464
552
  findings: `${OPERATE_ROOT}/findings.md`,
465
- readableDecisions: `${OPERATE_ROOT}/decisions.md`,
553
+ decisions: `${OPERATE_ROOT}/decisions.md`,
466
554
  gaps: `${OPERATE_ROOT}/gaps.md`,
467
555
  routes: `${OPERATE_ROOT}/routes.md`,
556
+ backlog: `${OPERATE_ROOT}/backlog.md`,
468
557
  };
469
558
  //# sourceMappingURL=projection-persistence.js.map