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.
- package/dist/cli/commands/backlog.d.ts.map +1 -1
- package/dist/cli/commands/backlog.js +3 -0
- package/dist/cli/commands/backlog.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +3 -0
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/epic.d.ts.map +1 -1
- package/dist/cli/commands/epic.js +2 -0
- package/dist/cli/commands/epic.js.map +1 -1
- package/dist/cli/commands/feature.d.ts.map +1 -1
- package/dist/cli/commands/feature.js +2 -0
- package/dist/cli/commands/feature.js.map +1 -1
- package/dist/cli/commands/operate.d.ts +5 -2
- package/dist/cli/commands/operate.d.ts.map +1 -1
- package/dist/cli/commands/operate.js +10 -101
- package/dist/cli/commands/operate.js.map +1 -1
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +2 -0
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/quick.d.ts.map +1 -1
- package/dist/cli/commands/quick.js +2 -0
- package/dist/cli/commands/quick.js.map +1 -1
- package/dist/cli/commands/refine.d.ts.map +1 -1
- package/dist/cli/commands/refine.js +2 -0
- package/dist/cli/commands/refine.js.map +1 -1
- package/dist/cli/commands/revise.d.ts.map +1 -1
- package/dist/cli/commands/revise.js +2 -0
- package/dist/cli/commands/revise.js.map +1 -1
- package/dist/cli/commands/spec.d.ts.map +1 -1
- package/dist/cli/commands/spec.js +2 -0
- package/dist/cli/commands/spec.js.map +1 -1
- package/dist/cli/commands/sprint.d.ts.map +1 -1
- package/dist/cli/commands/sprint.js +2 -0
- package/dist/cli/commands/sprint.js.map +1 -1
- package/dist/cli/commands/story.d.ts.map +1 -1
- package/dist/cli/commands/story.js +3 -0
- package/dist/cli/commands/story.js.map +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +3 -0
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/services/ai-service.d.ts +3 -5
- package/dist/services/ai-service.d.ts.map +1 -1
- package/dist/services/ai-service.js +7 -1
- package/dist/services/ai-service.js.map +1 -1
- package/dist/services/credentials-service.d.ts.map +1 -1
- package/dist/services/credentials-service.js +2 -0
- package/dist/services/credentials-service.js.map +1 -1
- package/dist/services/deprecation-notices.d.ts +5 -0
- package/dist/services/deprecation-notices.d.ts.map +1 -0
- package/dist/services/deprecation-notices.js +6 -0
- package/dist/services/deprecation-notices.js.map +1 -0
- package/dist/services/operate/advisors.d.ts +146 -108
- package/dist/services/operate/advisors.d.ts.map +1 -1
- package/dist/services/operate/advisors.js +178 -448
- package/dist/services/operate/advisors.js.map +1 -1
- package/dist/services/operate/citation-resolution.d.ts.map +1 -1
- package/dist/services/operate/citation-resolution.js +50 -1
- package/dist/services/operate/citation-resolution.js.map +1 -1
- package/dist/services/operate/config.d.ts +28 -52
- package/dist/services/operate/config.d.ts.map +1 -1
- package/dist/services/operate/config.js +68 -203
- package/dist/services/operate/config.js.map +1 -1
- package/dist/services/operate/doctor.d.ts +15 -0
- package/dist/services/operate/doctor.d.ts.map +1 -1
- package/dist/services/operate/doctor.js +142 -32
- package/dist/services/operate/doctor.js.map +1 -1
- package/dist/services/operate/engine.d.ts +22 -62
- package/dist/services/operate/engine.d.ts.map +1 -1
- package/dist/services/operate/engine.js +269 -191
- package/dist/services/operate/engine.js.map +1 -1
- package/dist/services/operate/evidence.d.ts +9 -78
- package/dist/services/operate/evidence.d.ts.map +1 -1
- package/dist/services/operate/evidence.js +0 -1194
- package/dist/services/operate/evidence.js.map +1 -1
- package/dist/services/operate/index.d.ts.map +1 -1
- package/dist/services/operate/index.js +15 -231
- package/dist/services/operate/index.js.map +1 -1
- package/dist/services/operate/integrity.d.ts +81 -0
- package/dist/services/operate/integrity.d.ts.map +1 -0
- package/dist/services/operate/integrity.js +152 -0
- package/dist/services/operate/integrity.js.map +1 -0
- package/dist/services/operate/interaction/answer-service.d.ts +0 -10
- package/dist/services/operate/interaction/answer-service.d.ts.map +1 -1
- package/dist/services/operate/interaction/answer-service.js +63 -43
- package/dist/services/operate/interaction/answer-service.js.map +1 -1
- package/dist/services/operate/interaction/question-engine.d.ts.map +1 -1
- package/dist/services/operate/interaction/question-engine.js +105 -21
- package/dist/services/operate/interaction/question-engine.js.map +1 -1
- package/dist/services/operate/interaction/question-registry.d.ts +16 -1
- package/dist/services/operate/interaction/question-registry.d.ts.map +1 -1
- package/dist/services/operate/interaction/question-registry.js +45 -39
- package/dist/services/operate/interaction/question-registry.js.map +1 -1
- package/dist/services/operate/interaction/session-service.d.ts.map +1 -1
- package/dist/services/operate/interaction/session-service.js +16 -11
- package/dist/services/operate/interaction/session-service.js.map +1 -1
- package/dist/services/operate/interaction/terminal-renderer.d.ts.map +1 -1
- package/dist/services/operate/interaction/terminal-renderer.js +16 -6
- package/dist/services/operate/interaction/terminal-renderer.js.map +1 -1
- package/dist/services/operate/lifecycle.d.ts.map +1 -1
- package/dist/services/operate/lifecycle.js +17 -1
- package/dist/services/operate/lifecycle.js.map +1 -1
- package/dist/services/operate/maintenance.d.ts.map +1 -1
- package/dist/services/operate/maintenance.js +95 -276
- package/dist/services/operate/maintenance.js.map +1 -1
- package/dist/services/operate/mission-dispatch.d.ts +73 -55
- package/dist/services/operate/mission-dispatch.d.ts.map +1 -1
- package/dist/services/operate/mission-dispatch.js +91 -67
- package/dist/services/operate/mission-dispatch.js.map +1 -1
- package/dist/services/operate/projection-persistence.d.ts +35 -7
- package/dist/services/operate/projection-persistence.d.ts.map +1 -1
- package/dist/services/operate/projection-persistence.js +142 -53
- package/dist/services/operate/projection-persistence.js.map +1 -1
- package/dist/services/operate/projection.d.ts +9 -1
- package/dist/services/operate/projection.d.ts.map +1 -1
- package/dist/services/operate/projection.js +22 -12
- package/dist/services/operate/projection.js.map +1 -1
- package/dist/services/operate/protocol.d.ts +1 -41
- package/dist/services/operate/protocol.d.ts.map +1 -1
- package/dist/services/operate/protocol.js +7 -45
- package/dist/services/operate/protocol.js.map +1 -1
- package/dist/services/operate/redaction.d.ts +3 -3
- package/dist/services/operate/redaction.js +4 -4
- package/dist/services/operate/redaction.js.map +1 -1
- package/dist/services/operate/reports.d.ts +20 -1
- package/dist/services/operate/reports.d.ts.map +1 -1
- package/dist/services/operate/reports.js +108 -4
- package/dist/services/operate/reports.js.map +1 -1
- package/dist/services/operate/routes.d.ts +84 -0
- package/dist/services/operate/routes.d.ts.map +1 -1
- package/dist/services/operate/routes.js +519 -10
- package/dist/services/operate/routes.js.map +1 -1
- package/dist/services/operate/types.d.ts +48 -133
- package/dist/services/operate/types.d.ts.map +1 -1
- package/dist/services/operate/types.js.map +1 -1
- package/dist/services/operate/workspace.d.ts +0 -1
- package/dist/services/operate/workspace.d.ts.map +1 -1
- package/dist/services/operate/workspace.js +0 -2
- package/dist/services/operate/workspace.js.map +1 -1
- package/dist/services/runtime-manager-service.js +2 -2
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/package.json +3 -3
- package/dist/services/operate/evidence-classifications.d.ts +0 -59
- package/dist/services/operate/evidence-classifications.d.ts.map +0 -1
- package/dist/services/operate/evidence-classifications.js +0 -132
- package/dist/services/operate/evidence-classifications.js.map +0 -1
- package/dist/services/operate/evidence-diagnostics.d.ts +0 -23
- package/dist/services/operate/evidence-diagnostics.d.ts.map +0 -1
- package/dist/services/operate/evidence-diagnostics.js +0 -152
- package/dist/services/operate/evidence-diagnostics.js.map +0 -1
- package/dist/services/operate/evidence-readiness.d.ts +0 -8
- package/dist/services/operate/evidence-readiness.d.ts.map +0 -1
- package/dist/services/operate/evidence-readiness.js +0 -84
- 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
|
|
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
|
-
//
|
|
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
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
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
|
|
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
|
-
|
|
123
|
-
isolation: 'fail-closed-structured-provider',
|
|
99
|
+
isolation: 'unsupported',
|
|
124
100
|
native: false,
|
|
125
101
|
reconciliation: input.runtimeEnforcesBoundedReadOnly
|
|
126
|
-
? 'adapter cannot host a bounded
|
|
127
|
-
: 'runtime tool isolation is advisory or unverifiable
|
|
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
|
-
*
|
|
135
|
-
*
|
|
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
|
|
138
|
-
const
|
|
139
|
-
|
|
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
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
|
|
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
|
|
152
|
-
|
|
153
|
-
|
|
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
|
-
|
|
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/
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"projection-persistence.d.ts","sourceRoot":"","sources":["../../../src/services/operate/projection-persistence.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAsDxF,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;AAoRD;;;;;;;GAOG;AACH,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAyCnD;AAqED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,cAAc,EACrB,aAAa,GAAE,WAAW,CAAC,MAAM,EAAE,0BAA0B,CAAa,GACzE,uBAAuB,EAAE,CAgB3B;AAkED,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CACtE,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAWtC;AAED,wBAAsB,iCAAiC,CAAC,KAAK,EAAE;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB;AAED,wBAAsB,qCAAqC,CAAC,KAAK,EAAE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAiEtC;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;;;;;;;;;CAY7B,CAAC"}
|
|
@@ -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
|
-
|
|
11
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
262
|
-
|
|
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
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|