openplanr 1.18.0 → 1.19.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/services/operate/advisors.d.ts +65 -5
- package/dist/services/operate/advisors.d.ts.map +1 -1
- package/dist/services/operate/advisors.js +101 -6
- package/dist/services/operate/advisors.js.map +1 -1
- package/dist/services/operate/config.d.ts +10 -0
- package/dist/services/operate/config.d.ts.map +1 -1
- package/dist/services/operate/config.js +53 -6
- package/dist/services/operate/config.js.map +1 -1
- package/dist/services/operate/engine.d.ts +22 -6
- package/dist/services/operate/engine.d.ts.map +1 -1
- package/dist/services/operate/engine.js +20 -9
- package/dist/services/operate/engine.js.map +1 -1
- package/dist/services/operate/evidence-readiness.d.ts +11 -1
- package/dist/services/operate/evidence-readiness.d.ts.map +1 -1
- package/dist/services/operate/evidence-readiness.js +12 -2
- package/dist/services/operate/evidence-readiness.js.map +1 -1
- package/dist/services/operate/evidence.d.ts +30 -1
- package/dist/services/operate/evidence.d.ts.map +1 -1
- package/dist/services/operate/evidence.js +219 -10
- 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 +5 -0
- package/dist/services/operate/index.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 +11 -1
- package/dist/services/operate/maintenance.d.ts.map +1 -1
- package/dist/services/operate/maintenance.js +78 -11
- package/dist/services/operate/maintenance.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 +122 -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 +12 -9
- package/dist/services/operate/projection.js.map +1 -1
- package/dist/services/operate/reports.d.ts +9 -0
- package/dist/services/operate/reports.d.ts.map +1 -1
- package/dist/services/operate/reports.js +20 -1
- 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 +6 -5
- package/dist/services/operate/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,57 @@
|
|
|
1
1
|
import { type OperatingArtifactGeneratorAdapter, type StoredOperatingArtifactGeneration } from './artifact-route-generation.js';
|
|
2
2
|
import { type OperatingConfig, type OperatingEventHead, type OperatingFinding, type OperatingRoutePlan, type OperatingWorkspaceManifest } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* A single member of a grouped-finding epic. Only the fields needed to render
|
|
5
|
+
* the epic markdown are carried; the shared v1.3 route-plan schema stays
|
|
6
|
+
* single-`findingId` (the anchor) — this list is an OpenPlanr-local planning
|
|
7
|
+
* detail recorded in the epic document, never a protocol-schema field.
|
|
8
|
+
*/
|
|
9
|
+
export interface EpicFindingMember {
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
problem: string;
|
|
13
|
+
proposal: string;
|
|
14
|
+
evidenceRefs: string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A consolidation-level grouping of 2+ related accepted findings that routes to
|
|
18
|
+
* one `create-epic` action. `anchorId` is the lexicographically-first member id
|
|
19
|
+
* (carried as the route action's single `findingId`); `members` (sorted by id)
|
|
20
|
+
* is embedded verbatim in the generated epic markdown so finding → epic → spec
|
|
21
|
+
* provenance stays traceable without a new protocol sidecar.
|
|
22
|
+
*/
|
|
23
|
+
export interface EpicFindingGroup {
|
|
24
|
+
anchorId: string;
|
|
25
|
+
memberIds: string[];
|
|
26
|
+
members: EpicFindingMember[];
|
|
27
|
+
category: string;
|
|
28
|
+
theme: string;
|
|
29
|
+
evidenceRefs: string[];
|
|
30
|
+
}
|
|
31
|
+
interface GroupableFinding {
|
|
32
|
+
id: string;
|
|
33
|
+
status?: unknown;
|
|
34
|
+
category?: unknown;
|
|
35
|
+
title?: unknown;
|
|
36
|
+
problem?: unknown;
|
|
37
|
+
proposal?: unknown;
|
|
38
|
+
fingerprint?: unknown;
|
|
39
|
+
sensitivity?: unknown;
|
|
40
|
+
evidenceRefs?: unknown;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Group related accepted findings into epic candidates. Two accepted findings
|
|
44
|
+
* are related when they share a non-empty normalized `category`, share the same
|
|
45
|
+
* evidence-derived `fingerprint` lineage, or are semantically equivalent per
|
|
46
|
+
* `consolidation.ts` (which subsumes the Chair merge-proposal source, since a
|
|
47
|
+
* merged finding keeps that shared category/fingerprint). Only components of 2+
|
|
48
|
+
* members become epic groups; every group is deterministic (union-find over
|
|
49
|
+
* id-sorted findings), so the FR7 report suggestion and the FR8 engine route
|
|
50
|
+
* elect exactly the same theme.
|
|
51
|
+
*/
|
|
52
|
+
export declare function groupRelatedAcceptedFindings(findings: GroupableFinding[]): EpicFindingGroup[];
|
|
3
53
|
export declare function nextOperatingSpecOrdinal(projectRoot: string): Promise<number>;
|
|
54
|
+
export declare function nextOperatingEpicOrdinal(projectRoot: string): Promise<number>;
|
|
4
55
|
export declare function createOperatingRoutePlan(input: {
|
|
5
56
|
projectRoot: string;
|
|
6
57
|
cycleId: string;
|
|
@@ -12,9 +63,41 @@ export declare function createOperatingRoutePlan(input: {
|
|
|
12
63
|
providerDigest: `sha256:${string}`;
|
|
13
64
|
sequence: number;
|
|
14
65
|
specId?: string;
|
|
66
|
+
epicId?: string;
|
|
15
67
|
localRoot?: string;
|
|
16
68
|
now?: string;
|
|
17
69
|
}): Promise<OperatingRoutePlan>;
|
|
70
|
+
/**
|
|
71
|
+
* Re-evaluate a cycle's accepted findings for epic election and PROPOSE + accept
|
|
72
|
+
* one governed `create-epic` route per themed 2+-member group that does not yet
|
|
73
|
+
* have one. This is the operator-reachable producer of FR8 epic routes: it runs
|
|
74
|
+
* right after a finding transitions to `accepted` through `governOperatingFinding`,
|
|
75
|
+
* so accepting a related group yields a `create-epic` route through the same
|
|
76
|
+
* journal-backed proposal path the engine uses for freshly-proposed findings —
|
|
77
|
+
* reusing T-006's `groupRelatedAcceptedFindings`/`resolveEpicGroupForAnchor`/
|
|
78
|
+
* `actionKind` so FR7's rendered suggestion and FR8's route always name the same
|
|
79
|
+
* theme.
|
|
80
|
+
*
|
|
81
|
+
* Election never writes the epic markdown and never applies the route (accept ≠
|
|
82
|
+
* apply): it only proposes the route and accepts it — mirroring exactly how
|
|
83
|
+
* governance accepts a finding's individual route — leaving the digest-bound,
|
|
84
|
+
* human-gated `routes apply` as the separate acting step. It is idempotent: a
|
|
85
|
+
* group whose anchor already heads a committed `create-epic` route is skipped, so
|
|
86
|
+
* re-electing (accepting further members of the same theme) never duplicates the
|
|
87
|
+
* epic route. Membership growth before apply fails CLOSED rather than silently
|
|
88
|
+
* writing a different epic: `resolveEpicGroupForAnchor` re-derives the member
|
|
89
|
+
* list from the then-current accepted findings, so a route proposed for {A,B}
|
|
90
|
+
* whose group has grown to {A,B,C} no longer matches its digest-bound preview
|
|
91
|
+
* and `applyOperatingRoute` rejects it with `E_OPERATE_ROUTE_DRIFT` — the same
|
|
92
|
+
* guard every other route kind carries. An individually-routed finding is never
|
|
93
|
+
* re-routed individually — only the group-level epic route is added.
|
|
94
|
+
*/
|
|
95
|
+
export declare function electAcceptedFindingEpicRoutes(input: {
|
|
96
|
+
projectRoot: string;
|
|
97
|
+
localRoot?: string;
|
|
98
|
+
cycleId: string;
|
|
99
|
+
now?: string;
|
|
100
|
+
}): Promise<OperatingRoutePlan[]>;
|
|
18
101
|
export declare function readOperatingRoute(projectRoot: string, routeId: string): Promise<OperatingRoutePlan>;
|
|
19
102
|
export declare function applyOperatingRoute(input: {
|
|
20
103
|
projectRoot: string;
|
|
@@ -46,4 +129,5 @@ export declare function rollbackOperatingRoute(input: {
|
|
|
46
129
|
localRoot?: string;
|
|
47
130
|
}): Promise<OperatingEventHead>;
|
|
48
131
|
export declare function routeDestinationDigest(projectRoot: string, route: OperatingRoutePlan): Promise<`sha256:${string}`>;
|
|
132
|
+
export {};
|
|
49
133
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/services/operate/routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/services/operate/routes.ts"],"names":[],"mappings":"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"}
|