@sentropic/track 0.11.0 → 0.11.2
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/index.d.ts.map +1 -1
- package/dist/cli/index.js +131 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/events/types.d.ts +1 -1
- package/dist/events/types.d.ts.map +1 -1
- package/dist/events/types.js +11 -0
- package/dist/events/types.js.map +1 -1
- package/dist/ingest/contract.d.ts +3 -3
- package/dist/ingest/contract.d.ts.map +1 -1
- package/dist/ingest/contract.js +33 -2
- package/dist/ingest/contract.js.map +1 -1
- package/dist/ingest/ingest.d.ts.map +1 -1
- package/dist/ingest/ingest.js +18 -0
- package/dist/ingest/ingest.js.map +1 -1
- package/dist/ingest/map.d.ts.map +1 -1
- package/dist/ingest/map.js +16 -0
- package/dist/ingest/map.js.map +1 -1
- package/dist/mcp/server.d.ts +79 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +72 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/index.d.ts +2 -1
- package/dist/model/index.d.ts.map +1 -1
- package/dist/model/index.js +3 -1
- package/dist/model/index.js.map +1 -1
- package/dist/model/item.d.ts +43 -5
- package/dist/model/item.d.ts.map +1 -1
- package/dist/model/item.js +53 -0
- package/dist/model/item.js.map +1 -1
- package/dist/model/spec-amend.d.ts +59 -0
- package/dist/model/spec-amend.d.ts.map +1 -0
- package/dist/model/spec-amend.js +56 -0
- package/dist/model/spec-amend.js.map +1 -0
- package/dist/read/contract.d.ts +135 -4
- package/dist/read/contract.d.ts.map +1 -1
- package/dist/read/contract.js +215 -3
- package/dist/read/contract.js.map +1 -1
- package/dist/read/index.d.ts +2 -1
- package/dist/read/index.d.ts.map +1 -1
- package/dist/read/index.js +2 -0
- package/dist/read/index.js.map +1 -1
- package/dist/read/scope-validate.d.ts +44 -0
- package/dist/read/scope-validate.d.ts.map +1 -0
- package/dist/read/scope-validate.js +204 -0
- package/dist/read/scope-validate.js.map +1 -0
- package/dist/report/build.d.ts +1 -1
- package/dist/report/build.d.ts.map +1 -1
- package/dist/report/build.js +5 -4
- package/dist/report/build.js.map +1 -1
- package/dist/report/rollup.d.ts +1 -1
- package/dist/report/rollup.d.ts.map +1 -1
- package/dist/report/rollup.js +3 -2
- package/dist/report/rollup.js.map +1 -1
- package/dist/report/status-by-level.d.ts +1 -1
- package/dist/report/status-by-level.d.ts.map +1 -1
- package/dist/report/status-by-level.js +3 -1
- package/dist/report/status-by-level.js.map +1 -1
- package/dist/state/fold.d.ts +8 -0
- package/dist/state/fold.d.ts.map +1 -1
- package/dist/state/fold.js +32 -0
- package/dist/state/fold.js.map +1 -1
- package/dist/state/snapshot.d.ts +2 -0
- package/dist/state/snapshot.d.ts.map +1 -1
- package/dist/state/snapshot.js +2 -0
- package/dist/state/snapshot.js.map +1 -1
- package/dist/track.d.ts +24 -1
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +59 -17
- package/dist/track.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// M5 (canevas) — `item.spec-amend` → `spec.amended`: a net-new, owner-approved, ADDITIVE write kind
|
|
2
|
+
// for LIVE spec amendment with a human/machine diff trace. It is the concurrent-safe live-amendment
|
|
3
|
+
// primitive (the coarse `decision.dossier` whole-rewrite is a lost-update hazard; this is a per-patch,
|
|
4
|
+
// append-only record). RECORD-ONLY: track records the JsonPatch VERBATIM and NEVER applies/validates the
|
|
5
|
+
// patch semantics — `baseHash`/`resultHash` are OPAQUE integrity tags (the spec document lives in the
|
|
6
|
+
// host's LiveDocument). The amendment TRACE is the value; track destroys no spec field.
|
|
7
|
+
import { DomainError } from './item.js';
|
|
8
|
+
const nonEmptyString = (v) => typeof v === 'string' && v.length > 0;
|
|
9
|
+
/**
|
|
10
|
+
* Fail-closed validation + normalization of a `SpecAmendPayload` (mirrors `assertVerificationRun`/
|
|
11
|
+
* `assertScopeDecl`). Requires `itemId`/`baseHash`/`resultHash`/`patch`; the patch must be an array of
|
|
12
|
+
* `{op:string, path:string, …}` objects (shape only — track NEVER interprets the patch). Drops absent
|
|
13
|
+
* optionals so the recorded shape is minimal + hash-stable. The `itemId` legality (exists, is an item)
|
|
14
|
+
* is checked by the facade against folded state; this is the pure shape gate.
|
|
15
|
+
*/
|
|
16
|
+
export function assertSpecAmend(input) {
|
|
17
|
+
if (typeof input !== 'object' || input === null || Array.isArray(input)) {
|
|
18
|
+
throw new DomainError('item.spec-amend: an amendment must be an object');
|
|
19
|
+
}
|
|
20
|
+
const a = input;
|
|
21
|
+
if (!nonEmptyString(a['itemId']))
|
|
22
|
+
throw new DomainError('item.spec-amend: requires an itemId');
|
|
23
|
+
if (!nonEmptyString(a['baseHash']))
|
|
24
|
+
throw new DomainError('item.spec-amend: requires a baseHash');
|
|
25
|
+
if (!nonEmptyString(a['resultHash']))
|
|
26
|
+
throw new DomainError('item.spec-amend: requires a resultHash');
|
|
27
|
+
if (!Array.isArray(a['patch']))
|
|
28
|
+
throw new DomainError('item.spec-amend: patch must be a JsonPatch array');
|
|
29
|
+
const patch = a['patch'].map((op, i) => {
|
|
30
|
+
if (typeof op !== 'object' || op === null || Array.isArray(op)) {
|
|
31
|
+
throw new DomainError(`item.spec-amend: patch[${i}] must be an object`);
|
|
32
|
+
}
|
|
33
|
+
const o = op;
|
|
34
|
+
if (!nonEmptyString(o['op']))
|
|
35
|
+
throw new DomainError(`item.spec-amend: patch[${i}].op is required`);
|
|
36
|
+
if (typeof o['path'] !== 'string')
|
|
37
|
+
throw new DomainError(`item.spec-amend: patch[${i}].path must be a string`);
|
|
38
|
+
return o; // recorded VERBATIM (track never interprets the op)
|
|
39
|
+
});
|
|
40
|
+
for (const key of ['decisionId', 'liveDocRef', 'proposalRef', 'summary']) {
|
|
41
|
+
if (a[key] !== undefined && typeof a[key] !== 'string') {
|
|
42
|
+
throw new DomainError(`item.spec-amend: ${key} must be a string`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
itemId: a['itemId'],
|
|
47
|
+
baseHash: a['baseHash'],
|
|
48
|
+
patch,
|
|
49
|
+
resultHash: a['resultHash'],
|
|
50
|
+
...(a['decisionId'] !== undefined ? { decisionId: a['decisionId'] } : {}),
|
|
51
|
+
...(a['liveDocRef'] !== undefined ? { liveDocRef: a['liveDocRef'] } : {}),
|
|
52
|
+
...(a['proposalRef'] !== undefined ? { proposalRef: a['proposalRef'] } : {}),
|
|
53
|
+
...(a['summary'] !== undefined ? { summary: a['summary'] } : {}),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=spec-amend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-amend.js","sourceRoot":"","sources":["../../src/model/spec-amend.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,oGAAoG;AACpG,uGAAuG;AACvG,yGAAyG;AACzG,sGAAsG;AACtG,wFAAwF;AAExF,OAAO,EAAE,WAAW,EAAe,MAAM,WAAW,CAAA;AAsDpD,MAAM,cAAc,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAEzF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,WAAW,CAAC,iDAAiD,CAAC,CAAA;IAC1E,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,qCAAqC,CAAC,CAAA;IAC9F,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,sCAAsC,CAAC,CAAA;IACjG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,wCAAwC,CAAC,CAAA;IACrG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,kDAAkD,CAAC,CAAA;IACzG,MAAM,KAAK,GAAc,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAChD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,WAAW,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,CAAA;QACzE,CAAC;QACD,MAAM,CAAC,GAAG,EAA6B,CAAA;QACvC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,CAAA;QAClG,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,WAAW,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,CAAA;QAC9G,OAAO,CAA2B,CAAA,CAAC,oDAAoD;IACzF,CAAC,CAAC,CAAA;IACF,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,CAAU,EAAE,CAAC;QAClF,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,WAAW,CAAC,oBAAoB,GAAG,mBAAmB,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;QACnB,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC;QACvB,KAAK;QACL,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,YAAY,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,YAAY,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,aAAa,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAA;AACH,CAAC"}
|
package/dist/read/contract.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import type { Sha256 } from '../events/types.js';
|
|
1
|
+
import type { ActorId, EventType, Provenance, Sha256 } from '../events/types.js';
|
|
2
2
|
import { type IntegrityResult } from '../events/validate.js';
|
|
3
|
-
import type
|
|
3
|
+
import { type ItemId } from '../model/item.js';
|
|
4
4
|
import type { VerificationRun } from '../model/verification.js';
|
|
5
5
|
import { type StatusGroup, type StatusLevel } from '../report/status-by-level.js';
|
|
6
6
|
import { type QueryFilter, type Report, type ReportOptions, type ReportRow } from '../report/build.js';
|
|
7
|
+
import type { Dossier, Outcome } from '../model/decision.js';
|
|
8
|
+
import type { WorkEventKind } from '../ingest/contract.js';
|
|
9
|
+
import { type ScopeValidateInput, type ScopeValidateResult } from './scope-validate.js';
|
|
7
10
|
/**
|
|
8
11
|
* Semver of the skill-facing READ contract.
|
|
9
12
|
*
|
|
@@ -11,7 +14,7 @@ import { type QueryFilter, type Report, type ReportOptions, type ReportRow } fro
|
|
|
11
14
|
* shapes it returns may only GROW (new methods / new optional fields); nothing is removed or
|
|
12
15
|
* repurposed without a major bump. Consumers gate on `reader.contractVersion`.
|
|
13
16
|
*/
|
|
14
|
-
export declare const READ_CONTRACT_VERSION = "1.
|
|
17
|
+
export declare const READ_CONTRACT_VERSION = "1.7.0";
|
|
15
18
|
/** Provenance of the last `branch.imported` for a locator (drawn from the raw event log). */
|
|
16
19
|
export interface BranchProvenance {
|
|
17
20
|
locator: string;
|
|
@@ -89,6 +92,87 @@ export interface WorkspaceActivityOptions {
|
|
|
89
92
|
/** Staleness window in ms; default 24h ⇒ "stalled" = DURABLY stuck. */
|
|
90
93
|
idleMs?: number;
|
|
91
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* A cheap change cursor over the log tail — the host's liveness primitive. `head` is the log-tail event's
|
|
97
|
+
* `contentHash` (null on an empty log); `count` is the event count. The host polls this (O(tail)) and
|
|
98
|
+
* re-reads the materialization reads only when it moves. The cursor changes IFF the log grew.
|
|
99
|
+
*/
|
|
100
|
+
export interface Cursor {
|
|
101
|
+
head: Sha256 | null;
|
|
102
|
+
count: number;
|
|
103
|
+
}
|
|
104
|
+
/** Result of comparing a held cursor against the live log tail. `changed` ⇒ re-read the materialization. */
|
|
105
|
+
export interface CursorDelta {
|
|
106
|
+
changed: boolean;
|
|
107
|
+
head: Sha256 | null;
|
|
108
|
+
count: number;
|
|
109
|
+
}
|
|
110
|
+
/** Origin of a write, DERIVED PURELY from `prov.proposed` (true ⇒ machine/LLM-proposed; false ⇒ human). */
|
|
111
|
+
export type AmendmentOrigin = 'human' | 'machine';
|
|
112
|
+
/** The prov fields projected onto an amendment-trace step (a read-only summary; never re-verified). */
|
|
113
|
+
export interface AmendmentProv {
|
|
114
|
+
proposed: boolean;
|
|
115
|
+
auth: Provenance['auth'];
|
|
116
|
+
principal?: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* One ordered, prov-tagged step in an aggregate's amendment trace — the human/machine diff. A PURE replay
|
|
120
|
+
* projection over the aggregate's `spec.amended` / `dossier.revised` / `decision.artifact-added` /
|
|
121
|
+
* `decision.outcome` events: ZERO new event data (`origin` derives from `prov.proposed`). An AI proposal
|
|
122
|
+
* and a human acceptance both appear — the machine origin is NEVER laundered away.
|
|
123
|
+
*/
|
|
124
|
+
export interface AmendmentStep {
|
|
125
|
+
seq: number;
|
|
126
|
+
at: string;
|
|
127
|
+
by: ActorId;
|
|
128
|
+
kind: EventType;
|
|
129
|
+
prov: AmendmentProv;
|
|
130
|
+
/** `'machine'` iff `prov.proposed` (an AI proposal); else `'human'`. Derived, not stored. */
|
|
131
|
+
origin: AmendmentOrigin;
|
|
132
|
+
summary?: string;
|
|
133
|
+
/** For a `spec.amended` step: the opaque resultHash of the patch (the integrity tag track records). */
|
|
134
|
+
patchRef?: string;
|
|
135
|
+
/** For a `spec.amended` step: the `proposalRef` it accepts/derives from (proof of non-laundered origin). */
|
|
136
|
+
proposalRef?: string;
|
|
137
|
+
}
|
|
138
|
+
/** A per-aggregate `prov` lineage summary surfaced on the canevas (the latest write's provenance). */
|
|
139
|
+
export interface ProvLineage {
|
|
140
|
+
origin: AmendmentOrigin;
|
|
141
|
+
proposed: boolean;
|
|
142
|
+
auth: Provenance['auth'];
|
|
143
|
+
principal?: string;
|
|
144
|
+
/** The last event `at` on this aggregate (informational). */
|
|
145
|
+
latestAt: string;
|
|
146
|
+
}
|
|
147
|
+
/** The full decision dossier surfaced when `canevas` is called with a `decisionId`. */
|
|
148
|
+
export interface DecisionDossierView {
|
|
149
|
+
id: ItemId;
|
|
150
|
+
title: string;
|
|
151
|
+
workspace: string;
|
|
152
|
+
outcome: Outcome;
|
|
153
|
+
dossier: Dossier;
|
|
154
|
+
}
|
|
155
|
+
/** Options for {@link TrackReader.canevas}. `decisionId` opts the full decision dossier into the view. */
|
|
156
|
+
export interface CanevasOptions {
|
|
157
|
+
baselineCommit: string;
|
|
158
|
+
requireAccepted?: boolean;
|
|
159
|
+
decisionId?: ItemId;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* The materialized canevas — the host's render input (report + WP rollup, per-aggregate prov lineage +
|
|
163
|
+
* open-action affordances, and, with `decisionId`, the full decision dossier). PURE: no clock, no socket.
|
|
164
|
+
*/
|
|
165
|
+
export interface CanevasView {
|
|
166
|
+
workspace: string;
|
|
167
|
+
/** The materialized report (buckets + decisions + WP rollup forest) for the workspace. */
|
|
168
|
+
report: Report;
|
|
169
|
+
/** Per surfaced aggregate id → its `prov` lineage summary (latest write provenance). */
|
|
170
|
+
prov: Record<string, ProvLineage>;
|
|
171
|
+
/** Per surfaced aggregate id → the WorkEvent kinds that are a LEGAL next action (open-action affordances). */
|
|
172
|
+
affordances: Record<string, WorkEventKind[]>;
|
|
173
|
+
/** Present iff `decisionId` was supplied — the full decision dossier (context/options/qa/outcome/artifacts). */
|
|
174
|
+
dossier?: DecisionDossierView;
|
|
175
|
+
}
|
|
92
176
|
/**
|
|
93
177
|
* Read-only, versioned consumption surface over a frozen track log. Holds NO `git` and only reads
|
|
94
178
|
* the event file/head via `fs` — a baseline commit is supplied by the caller via `ReportOptions`
|
|
@@ -96,7 +180,7 @@ export interface WorkspaceActivityOptions {
|
|
|
96
180
|
*/
|
|
97
181
|
export declare class TrackReader {
|
|
98
182
|
private readonly eventsPath;
|
|
99
|
-
readonly contractVersion = "1.
|
|
183
|
+
readonly contractVersion = "1.7.0";
|
|
100
184
|
private readonly store;
|
|
101
185
|
constructor(eventsPath: string);
|
|
102
186
|
private events;
|
|
@@ -104,6 +188,34 @@ export declare class TrackReader {
|
|
|
104
188
|
report(options: ReportOptions): Report;
|
|
105
189
|
/** Flat, filtered query over report rows (SPEC §6). */
|
|
106
190
|
query(filter: QueryFilter, options: ReportOptions): ReportRow[];
|
|
191
|
+
/**
|
|
192
|
+
* M5 (canevas) — a cheap change cursor: the log-tail `contentHash` (head) + event `count`, O(tail). The
|
|
193
|
+
* HOST's liveness primitive: poll this, re-read `canevas`/`amendmentTrace` on change. PURE (no clock, no
|
|
194
|
+
* socket). The cursor changes IFF the log grew.
|
|
195
|
+
*/
|
|
196
|
+
cursor(): Cursor;
|
|
197
|
+
/**
|
|
198
|
+
* M5 (canevas) — has the log grown since `cursor`? Returns the LIVE cursor + a `changed` flag (the head
|
|
199
|
+
* hash OR count differs). The host holds a cursor from its last read and calls this to decide whether to
|
|
200
|
+
* re-materialize. PURE.
|
|
201
|
+
*/
|
|
202
|
+
changesSince(cursor: Cursor): CursorDelta;
|
|
203
|
+
/**
|
|
204
|
+
* M5 (canevas) — the materialized canevas for ONE workspace: the report + WP rollup (reusing
|
|
205
|
+
* `buildReport` with `wpTree`/`decisions`), joined per surfaced aggregate with its `prov` lineage summary
|
|
206
|
+
* (latest write provenance) + open-action affordances (the WorkEvent kinds that are a LEGAL next action).
|
|
207
|
+
* With `decisionId`, also includes the full decision dossier (context/options/qa/outcome/artifacts). PURE:
|
|
208
|
+
* no clock, no socket — the host owns liveness (poll `cursor`, re-read here on change).
|
|
209
|
+
*/
|
|
210
|
+
canevas(workspace: string, opts: CanevasOptions): CanevasView;
|
|
211
|
+
/**
|
|
212
|
+
* M5 (canevas) — the human/machine diff: an ORDERED (by seq), prov-tagged projection over the aggregate's
|
|
213
|
+
* `spec.amended` / `dossier.revised` / `decision.artifact-added` / `decision.outcome` events. PURE replay;
|
|
214
|
+
* ZERO new event data — `origin` derives from `prov.proposed` (true ⇒ machine, false ⇒ human). An AI
|
|
215
|
+
* proposal (proposed:true, with a proposalRef) and a human acceptance (referencing the same proposalRef)
|
|
216
|
+
* BOTH appear — the machine origin is NEVER laundered away.
|
|
217
|
+
*/
|
|
218
|
+
amendmentTrace(aggregateId: ItemId): AmendmentStep[];
|
|
107
219
|
/**
|
|
108
220
|
* Scope §A/§B — `status(level)` projection (spec|plan|wp|lot|task). Additive read-only generalization
|
|
109
221
|
* of `computeWpTree`+`bucketOf`; adds no aggregate, no stored status axis. `requireAccepted` (default
|
|
@@ -125,6 +237,25 @@ export declare class TrackReader {
|
|
|
125
237
|
* to one WP/phase; absent ⇒ all runs (workspace-scoped + wpRef'd). Sorted by `at` then `runId`.
|
|
126
238
|
*/
|
|
127
239
|
verificationRuns(wpRef?: ItemId): VerificationRun[];
|
|
240
|
+
/**
|
|
241
|
+
* Scope §B(b) — `track scope validate`: a PURE, read-only, fail-closed, ADVISORY validation of the
|
|
242
|
+
* declarative scope state. It NEVER glob-matches (string-level set logic), NEVER ingests, NEVER appends,
|
|
243
|
+
* and is NEVER a commit gate.
|
|
244
|
+
*
|
|
245
|
+
* FAIL-CLOSED: when `content`+`locator` are supplied, `requireFresh` runs FIRST (REUSING the shipped
|
|
246
|
+
* mechanism) — a stale / altered / not-imported sidecar throws `StaleSidecarError`, surfaced here as
|
|
247
|
+
* `{status:'stale', findings:[], perWp:[]}` with NO partial verdict (never a silent fallback). When no
|
|
248
|
+
* sidecar is given, the validation runs directly over the folded log.
|
|
249
|
+
*
|
|
250
|
+
* Validates (semantic, pure): every realization-active WP/spec-phase has a `scope` (else 'scope-undeclared');
|
|
251
|
+
* no allowed∩forbidden string overlap ('incoherent'); legal spec-phase nesting ('illegal-nesting'); an
|
|
252
|
+
* optional claimed item is a descendant of a declared phase ('claim-out-of-phase'). Surfaces the latest
|
|
253
|
+
* ingested VerificationRun verdict per WP (READ, never recomputed). Optional opt-in 'delivered-out-of-scope'.
|
|
254
|
+
*/
|
|
255
|
+
scopeValidate(opts: ScopeValidateInput & {
|
|
256
|
+
content?: string;
|
|
257
|
+
locator?: string;
|
|
258
|
+
}): ScopeValidateResult;
|
|
128
259
|
/**
|
|
129
260
|
* Poll-able activity signal for ONE workspace (h2a conductor-launch gating). PURE: `now`/`idleMs`
|
|
130
261
|
* are caller-supplied (track holds no clock). Reads the log ONCE; `pending`/staleness reuse the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/read/contract.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/read/contract.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAc,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAEhG,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAA;AAE5B;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,UAAU,CAAA;AAE5C,6FAA6F;AAC7F,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAA;IACrB,EAAE,EAAE,MAAM,CAAA;CACX;AAED,sFAAsF;AACtF,MAAM,MAAM,SAAS,GACjB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAA;AAExB,mGAAmG;AACnG,qBAAa,iBAAkB,SAAQ,KAAK;IAGxC,QAAQ,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE;gBADhF,OAAO,EAAE,MAAM,EACN,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE;CAKnF;AAID;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,oGAAoG;AACpG,MAAM,MAAM,aAAa,GACrB,sBAAsB,GACtB,kBAAkB,GAClB,kBAAkB,GAClB,WAAW,CAAA;AAEf,0FAA0F;AAC1F,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,aAAa,CAAA;IACrB,kGAAkG;IAClG,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,gGAAgG;IAChG,OAAO,EAAE,MAAM,CAAA;IACf,kGAAkG;IAClG,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,kGAAkG;IAClG,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,6GAA6G;AAC7G,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAA;IACX,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AASD;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,4GAA4G;AAC5G,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,2GAA2G;AAC3G,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,CAAA;AAEjD,uGAAuG;AACvG,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,aAAa,CAAA;IACnB,6FAA6F;IAC7F,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uGAAuG;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4GAA4G;IAC5G,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,sGAAsG;AACtG,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,0GAA0G;AAC1G,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,0FAA0F;IAC1F,MAAM,EAAE,MAAM,CAAA;IACd,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACjC,8GAA8G;IAC9G,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;IAC5C,gHAAgH;IAChH,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B;AAyCD;;;;GAIG;AACH,qBAAa,WAAW;IAIV,OAAO,CAAC,QAAQ,CAAC,UAAU;IAHvC,QAAQ,CAAC,eAAe,WAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEL,UAAU,EAAE,MAAM;IAI/C,OAAO,CAAC,MAAM;IAId,yCAAyC;IACzC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;IAItC,uDAAuD;IACvD,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE;IAI/D;;;;OAIG;IACH,MAAM,IAAI,MAAM;IAShB;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW;IAKzC;;;;;;OAMG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,WAAW;IAsE7D;;;;;;OAMG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,EAAE;IA0BpD;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,WAAW,EAAE;IAOxE,8EAA8E;IAC9E,QAAQ,IAAI,eAAe;IAI3B;;;;OAIG;IACH,oBAAoB,IAAI,kBAAkB,EAAE;IAW5C;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE;IAMnD;;;;;;;;;;;;;;OAcG;IACH,aAAa,CACX,IAAI,EAAE,kBAAkB,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAChE,mBAAmB;IAqBtB;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,GAAG,iBAAiB;IAkFvF,+EAA+E;IAC/E,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI/D,6FAA6F;IAC7F,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAItD;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAcpD,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,aAAa;CAatB"}
|
package/dist/read/contract.js
CHANGED
|
@@ -11,11 +11,13 @@ import { branchSignature } from '../branch/signature.js';
|
|
|
11
11
|
import { readHead } from '../events/head.js';
|
|
12
12
|
import { EventStore } from '../events/store.js';
|
|
13
13
|
import { validate } from '../events/validate.js';
|
|
14
|
+
import { isRoleContainer } from '../model/item.js';
|
|
14
15
|
import { bucketOf } from '../report/buckets.js';
|
|
15
16
|
import { statusByLevel } from '../report/status-by-level.js';
|
|
16
17
|
import { effectiveOpenBlockersForItem } from '../report/blocker-status.js';
|
|
17
18
|
import { buildReport, query as runQuery, } from '../report/build.js';
|
|
18
19
|
import { fold } from '../state/fold.js';
|
|
20
|
+
import { scopeValidate as runScopeValidate, } from './scope-validate.js';
|
|
19
21
|
/**
|
|
20
22
|
* Semver of the skill-facing READ contract.
|
|
21
23
|
*
|
|
@@ -23,7 +25,7 @@ import { fold } from '../state/fold.js';
|
|
|
23
25
|
* shapes it returns may only GROW (new methods / new optional fields); nothing is removed or
|
|
24
26
|
* repurposed without a major bump. Consumers gate on `reader.contractVersion`.
|
|
25
27
|
*/
|
|
26
|
-
export const READ_CONTRACT_VERSION = '1.
|
|
28
|
+
export const READ_CONTRACT_VERSION = '1.7.0'; // +cursor/changesSince/canevas/amendmentTrace (M5 canevas, additive)
|
|
27
29
|
/** Thrown by `requireFresh` when the sidecar is unsafe to consume (stale, absent, or tampered). */
|
|
28
30
|
export class StaleSidecarError extends Error {
|
|
29
31
|
detail;
|
|
@@ -35,6 +37,47 @@ export class StaleSidecarError extends Error {
|
|
|
35
37
|
}
|
|
36
38
|
const isSha256 = (v) => typeof v === 'string' && v.startsWith('sha256:');
|
|
37
39
|
const DEFAULT_IDLE_MS = 86_400_000; // 24h
|
|
40
|
+
// The persisted event types projected into an aggregate's amendment trace (the human/machine diff source).
|
|
41
|
+
const AMENDMENT_EVENT_TYPES = new Set([
|
|
42
|
+
'spec.amended',
|
|
43
|
+
'dossier.revised',
|
|
44
|
+
'decision.artifact-added',
|
|
45
|
+
'decision.outcome',
|
|
46
|
+
]);
|
|
47
|
+
/**
|
|
48
|
+
* The open-action affordances for ONE non-decision item: the WorkEvent kinds that are a LEGAL next action
|
|
49
|
+
* given its current spec/realization state (the canevas shows the human/AI exactly what they may submit).
|
|
50
|
+
* Derived from the same monotone transition machines the facade enforces — a superset is fine (the facade
|
|
51
|
+
* re-checks), but we mirror the real legality so the canevas never offers a dead button.
|
|
52
|
+
*/
|
|
53
|
+
function itemAffordances(state, itemId) {
|
|
54
|
+
const item = state.items.get(itemId);
|
|
55
|
+
if (item === undefined)
|
|
56
|
+
return [];
|
|
57
|
+
const out = [];
|
|
58
|
+
// Spec axis (monotone to-specify → specified). A spec amendment is always offerable (record-only).
|
|
59
|
+
if (item.specStatus === 'to-specify')
|
|
60
|
+
out.push('item.spec');
|
|
61
|
+
out.push('item.spec-amend');
|
|
62
|
+
// Realization axis (forward transitions; terminal states offer nothing).
|
|
63
|
+
if (item.realization === 'to-do')
|
|
64
|
+
out.push('item.realize');
|
|
65
|
+
else if (item.realization === 'in-progress')
|
|
66
|
+
out.push('item.realize');
|
|
67
|
+
// Cross-cutting actions available while the item is live (not terminal).
|
|
68
|
+
if (item.realization !== 'done' && item.realization !== 'cancelled' && item.realization !== 'rejected') {
|
|
69
|
+
out.push('item.reparent', 'priority.assess', 'acceptance.criterion', 'blocker.raise');
|
|
70
|
+
}
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
/** Open-action affordances for a decision, by its outcome state (the outcome machine the facade enforces). */
|
|
74
|
+
function decisionAffordances(outcome) {
|
|
75
|
+
// Whole-dossier revise + an append-only artifact are always offerable; outcome only until terminal.
|
|
76
|
+
const out = ['decision.dossier', 'decision.add-artifact'];
|
|
77
|
+
if (outcome === 'pending' || outcome === 'deferred')
|
|
78
|
+
out.push('decision.outcome');
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
38
81
|
/**
|
|
39
82
|
* Read-only, versioned consumption surface over a frozen track log. Holds NO `git` and only reads
|
|
40
83
|
* the event file/head via `fs` — a baseline commit is supplied by the caller via `ReportOptions`
|
|
@@ -59,6 +102,139 @@ export class TrackReader {
|
|
|
59
102
|
query(filter, options) {
|
|
60
103
|
return runQuery(fold(this.events()), filter, options);
|
|
61
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* M5 (canevas) — a cheap change cursor: the log-tail `contentHash` (head) + event `count`, O(tail). The
|
|
107
|
+
* HOST's liveness primitive: poll this, re-read `canevas`/`amendmentTrace` on change. PURE (no clock, no
|
|
108
|
+
* socket). The cursor changes IFF the log grew.
|
|
109
|
+
*/
|
|
110
|
+
cursor() {
|
|
111
|
+
const head = readHead(this.eventsPath);
|
|
112
|
+
if (head !== null)
|
|
113
|
+
return { head: head.lastContentHash, count: head.streamLength };
|
|
114
|
+
// No head anchor (or a malformed one): derive from the log tail directly — equally O(tail).
|
|
115
|
+
const events = this.events();
|
|
116
|
+
const last = events.at(-1);
|
|
117
|
+
return { head: last !== undefined ? last.contentHash : null, count: events.length };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* M5 (canevas) — has the log grown since `cursor`? Returns the LIVE cursor + a `changed` flag (the head
|
|
121
|
+
* hash OR count differs). The host holds a cursor from its last read and calls this to decide whether to
|
|
122
|
+
* re-materialize. PURE.
|
|
123
|
+
*/
|
|
124
|
+
changesSince(cursor) {
|
|
125
|
+
const live = this.cursor();
|
|
126
|
+
return { changed: live.head !== cursor.head || live.count !== cursor.count, head: live.head, count: live.count };
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* M5 (canevas) — the materialized canevas for ONE workspace: the report + WP rollup (reusing
|
|
130
|
+
* `buildReport` with `wpTree`/`decisions`), joined per surfaced aggregate with its `prov` lineage summary
|
|
131
|
+
* (latest write provenance) + open-action affordances (the WorkEvent kinds that are a LEGAL next action).
|
|
132
|
+
* With `decisionId`, also includes the full decision dossier (context/options/qa/outcome/artifacts). PURE:
|
|
133
|
+
* no clock, no socket — the host owns liveness (poll `cursor`, re-read here on change).
|
|
134
|
+
*/
|
|
135
|
+
canevas(workspace, opts) {
|
|
136
|
+
const events = this.events();
|
|
137
|
+
const state = fold(events);
|
|
138
|
+
const baseReport = buildReport(state, {
|
|
139
|
+
baselineCommit: opts.baselineCommit,
|
|
140
|
+
requireAccepted: opts.requireAccepted ?? false,
|
|
141
|
+
decisions: true,
|
|
142
|
+
wpTree: true,
|
|
143
|
+
});
|
|
144
|
+
// Scope the report to the workspace: filter bucket rows, decision rows, and the WP forest (a WP whose
|
|
145
|
+
// workspace ≠ the named one is dropped). buildReport is global; the canevas is per-workspace.
|
|
146
|
+
const report = {
|
|
147
|
+
buckets: {
|
|
148
|
+
AWAITED: baseReport.buckets.AWAITED.filter((r) => r.workspace === workspace),
|
|
149
|
+
DROPPED: baseReport.buckets.DROPPED.filter((r) => r.workspace === workspace),
|
|
150
|
+
DONE: baseReport.buckets.DONE.filter((r) => r.workspace === workspace),
|
|
151
|
+
'TO-DO': baseReport.buckets['TO-DO'].filter((r) => r.workspace === workspace),
|
|
152
|
+
},
|
|
153
|
+
...(baseReport.decisions !== undefined
|
|
154
|
+
? { decisions: baseReport.decisions.filter((d) => d.workspace === workspace) }
|
|
155
|
+
: {}),
|
|
156
|
+
...(baseReport.wpTree !== undefined
|
|
157
|
+
? { wpTree: baseReport.wpTree.filter((n) => state.items.get(n.id)?.workspace === workspace) }
|
|
158
|
+
: {}),
|
|
159
|
+
};
|
|
160
|
+
// Per-aggregate prov lineage (latest write on each surfaced aggregate) + open-action affordances. We
|
|
161
|
+
// surface every item/decision in the workspace (bucket rows AND WP containers AND decisions).
|
|
162
|
+
const latestProvAt = new Map();
|
|
163
|
+
for (const e of events) {
|
|
164
|
+
const prev = latestProvAt.get(e.aggregateId);
|
|
165
|
+
if (prev === undefined || e.at >= prev.at) {
|
|
166
|
+
latestProvAt.set(e.aggregateId, { ...(e.prov !== undefined ? { prov: e.prov } : {}), at: e.at });
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const prov = {};
|
|
170
|
+
const affordances = {};
|
|
171
|
+
const surface = (id) => {
|
|
172
|
+
const meta = latestProvAt.get(id);
|
|
173
|
+
const p = meta?.prov;
|
|
174
|
+
const proposed = p?.proposed ?? false;
|
|
175
|
+
prov[id] = {
|
|
176
|
+
origin: proposed ? 'machine' : 'human',
|
|
177
|
+
proposed,
|
|
178
|
+
auth: p?.auth ?? 'local-user',
|
|
179
|
+
...(p?.principal !== undefined ? { principal: p.principal } : {}),
|
|
180
|
+
latestAt: meta?.at ?? '',
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
for (const item of state.items.values()) {
|
|
184
|
+
if (item.workspace !== workspace)
|
|
185
|
+
continue;
|
|
186
|
+
surface(item.id);
|
|
187
|
+
affordances[item.id] = itemAffordances(state, item.id);
|
|
188
|
+
}
|
|
189
|
+
for (const d of state.decisions.values()) {
|
|
190
|
+
if (d.workspace !== workspace)
|
|
191
|
+
continue;
|
|
192
|
+
surface(d.id);
|
|
193
|
+
affordances[d.id] = decisionAffordances(d.outcome);
|
|
194
|
+
}
|
|
195
|
+
const view = { workspace, report, prov, affordances };
|
|
196
|
+
if (opts.decisionId !== undefined) {
|
|
197
|
+
const d = state.decisions.get(opts.decisionId);
|
|
198
|
+
if (d !== undefined) {
|
|
199
|
+
view.dossier = { id: d.id, title: d.title, workspace: d.workspace, outcome: d.outcome, dossier: d.dossier };
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return view;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* M5 (canevas) — the human/machine diff: an ORDERED (by seq), prov-tagged projection over the aggregate's
|
|
206
|
+
* `spec.amended` / `dossier.revised` / `decision.artifact-added` / `decision.outcome` events. PURE replay;
|
|
207
|
+
* ZERO new event data — `origin` derives from `prov.proposed` (true ⇒ machine, false ⇒ human). An AI
|
|
208
|
+
* proposal (proposed:true, with a proposalRef) and a human acceptance (referencing the same proposalRef)
|
|
209
|
+
* BOTH appear — the machine origin is NEVER laundered away.
|
|
210
|
+
*/
|
|
211
|
+
amendmentTrace(aggregateId) {
|
|
212
|
+
const steps = [];
|
|
213
|
+
for (const e of this.events()) {
|
|
214
|
+
if (e.aggregateId !== aggregateId)
|
|
215
|
+
continue;
|
|
216
|
+
if (!AMENDMENT_EVENT_TYPES.has(e.type))
|
|
217
|
+
continue;
|
|
218
|
+
const proposed = e.prov?.proposed ?? false;
|
|
219
|
+
const p = e.payload;
|
|
220
|
+
steps.push({
|
|
221
|
+
seq: e.seq,
|
|
222
|
+
at: e.at,
|
|
223
|
+
by: e.by,
|
|
224
|
+
kind: e.type,
|
|
225
|
+
prov: {
|
|
226
|
+
proposed,
|
|
227
|
+
auth: e.prov?.auth ?? 'local-user',
|
|
228
|
+
...(e.prov?.principal !== undefined ? { principal: e.prov.principal } : {}),
|
|
229
|
+
},
|
|
230
|
+
origin: proposed ? 'machine' : 'human',
|
|
231
|
+
...(typeof p.summary === 'string' ? { summary: p.summary } : {}),
|
|
232
|
+
...(typeof p.resultHash === 'string' ? { patchRef: p.resultHash } : {}),
|
|
233
|
+
...(typeof p.proposalRef === 'string' ? { proposalRef: p.proposalRef } : {}),
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
return steps.sort((a, b) => a.seq - b.seq);
|
|
237
|
+
}
|
|
62
238
|
/**
|
|
63
239
|
* Scope §A/§B — `status(level)` projection (spec|plan|wp|lot|task). Additive read-only generalization
|
|
64
240
|
* of `computeWpTree`+`bucketOf`; adds no aggregate, no stored status axis. `requireAccepted` (default
|
|
@@ -100,6 +276,42 @@ export class TrackReader {
|
|
|
100
276
|
const filtered = wpRef !== undefined ? runs.filter((r) => r.wpRef === wpRef) : runs;
|
|
101
277
|
return filtered.sort((a, b) => a.at.localeCompare(b.at) || a.runId.localeCompare(b.runId));
|
|
102
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* Scope §B(b) — `track scope validate`: a PURE, read-only, fail-closed, ADVISORY validation of the
|
|
281
|
+
* declarative scope state. It NEVER glob-matches (string-level set logic), NEVER ingests, NEVER appends,
|
|
282
|
+
* and is NEVER a commit gate.
|
|
283
|
+
*
|
|
284
|
+
* FAIL-CLOSED: when `content`+`locator` are supplied, `requireFresh` runs FIRST (REUSING the shipped
|
|
285
|
+
* mechanism) — a stale / altered / not-imported sidecar throws `StaleSidecarError`, surfaced here as
|
|
286
|
+
* `{status:'stale', findings:[], perWp:[]}` with NO partial verdict (never a silent fallback). When no
|
|
287
|
+
* sidecar is given, the validation runs directly over the folded log.
|
|
288
|
+
*
|
|
289
|
+
* Validates (semantic, pure): every realization-active WP/spec-phase has a `scope` (else 'scope-undeclared');
|
|
290
|
+
* no allowed∩forbidden string overlap ('incoherent'); legal spec-phase nesting ('illegal-nesting'); an
|
|
291
|
+
* optional claimed item is a descendant of a declared phase ('claim-out-of-phase'). Surfaces the latest
|
|
292
|
+
* ingested VerificationRun verdict per WP (READ, never recomputed). Optional opt-in 'delivered-out-of-scope'.
|
|
293
|
+
*/
|
|
294
|
+
scopeValidate(opts) {
|
|
295
|
+
const events = this.events();
|
|
296
|
+
// FAIL-CLOSED gate FIRST: a supplied sidecar must be fresh + integral, or no verdict is produced.
|
|
297
|
+
if (opts.content !== undefined && opts.locator !== undefined) {
|
|
298
|
+
try {
|
|
299
|
+
this.requireFresh(opts.content, opts.locator);
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
if (error instanceof StaleSidecarError) {
|
|
303
|
+
return { status: 'stale', findings: [], perWp: [] };
|
|
304
|
+
}
|
|
305
|
+
throw error;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return runScopeValidate(fold(events), {
|
|
309
|
+
workspace: opts.workspace,
|
|
310
|
+
baselineCommit: opts.baselineCommit,
|
|
311
|
+
...(opts.inferDeliveredOutOfScope !== undefined ? { inferDeliveredOutOfScope: opts.inferDeliveredOutOfScope } : {}),
|
|
312
|
+
...(opts.claimedItemId !== undefined ? { claimedItemId: opts.claimedItemId } : {}),
|
|
313
|
+
});
|
|
314
|
+
}
|
|
103
315
|
/**
|
|
104
316
|
* Poll-able activity signal for ONE workspace (h2a conductor-launch gating). PURE: `now`/`idleMs`
|
|
105
317
|
* are caller-supplied (track holds no clock). Reads the log ONCE; `pending`/staleness reuse the
|
|
@@ -136,8 +348,8 @@ export class TrackReader {
|
|
|
136
348
|
for (const item of state.items.values()) {
|
|
137
349
|
if (item.workspace !== workspace)
|
|
138
350
|
continue;
|
|
139
|
-
if (item
|
|
140
|
-
continue; // a WP is a container, never a flat leaf (
|
|
351
|
+
if (isRoleContainer(item))
|
|
352
|
+
continue; // a WP/spec-phase is a container, never a flat leaf (Scope §B(a))
|
|
141
353
|
const bucket = bucketOf(state, item, config);
|
|
142
354
|
if (bucket === 'TO-DO' || bucket === 'AWAITED')
|
|
143
355
|
pending++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/read/contract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/read/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/read/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { READ_CONTRACT_VERSION, StaleSidecarError, TrackReader, type BranchProvenance, type ExternalDependency, type Freshness, type StalledItem, type StalledReason, type WorkspaceActivity, type WorkspaceActivityOptions, } from './contract.js';
|
|
1
|
+
export { READ_CONTRACT_VERSION, StaleSidecarError, TrackReader, type AmendmentOrigin, type AmendmentProv, type AmendmentStep, type BranchProvenance, type CanevasOptions, type CanevasView, type Cursor, type CursorDelta, type DecisionDossierView, type ExternalDependency, type Freshness, type ProvLineage, type StalledItem, type StalledReason, type WorkspaceActivity, type WorkspaceActivityOptions, } from './contract.js';
|
|
2
2
|
export { type GroupStatus, type StatusGroup, type StatusLevel } from '../report/status-by-level.js';
|
|
3
3
|
export { type VerificationRun, type Verdict } from '../model/verification.js';
|
|
4
|
+
export { type EvidenceStatus, type PerWp, type ScopeFinding, type ScopeFindingCode, type ScopeValidateInput, type ScopeValidateResult, type ScopeValidateStatus, type SemanticStatus, } from './scope-validate.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/read/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/read/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAA;AACnG,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/read/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAA;AACnG,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAE7E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAA"}
|
package/dist/read/index.js
CHANGED
|
@@ -3,4 +3,6 @@ export { READ_CONTRACT_VERSION, StaleSidecarError, TrackReader, } from './contra
|
|
|
3
3
|
// Scope §A/§B — projection/evidence types re-exported for skill consumers of the read contract.
|
|
4
4
|
export {} from '../report/status-by-level.js';
|
|
5
5
|
export {} from '../model/verification.js';
|
|
6
|
+
// Scope §B(b) — the advisory scope-validate read surface.
|
|
7
|
+
export {} from './scope-validate.js';
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
package/dist/read/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/read/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/read/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,GAiBZ,MAAM,eAAe,CAAA;AACtB,gGAAgG;AAChG,OAAO,EAAwD,MAAM,8BAA8B,CAAA;AACnG,OAAO,EAAsC,MAAM,0BAA0B,CAAA;AAC7E,0DAA0D;AAC1D,OAAO,EASN,MAAM,qBAAqB,CAAA"}
|