@sentropic/track 0.10.11 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/cli/index.d.ts.map +1 -1
  2. package/dist/cli/index.js +103 -4
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/events/types.d.ts +2 -2
  5. package/dist/events/types.d.ts.map +1 -1
  6. package/dist/events/types.js +15 -1
  7. package/dist/events/types.js.map +1 -1
  8. package/dist/ingest/contract.d.ts +3 -2
  9. package/dist/ingest/contract.d.ts.map +1 -1
  10. package/dist/ingest/contract.js +32 -2
  11. package/dist/ingest/contract.js.map +1 -1
  12. package/dist/ingest/ingest.d.ts.map +1 -1
  13. package/dist/ingest/ingest.js +26 -0
  14. package/dist/ingest/ingest.js.map +1 -1
  15. package/dist/ingest/map.d.ts.map +1 -1
  16. package/dist/ingest/map.js +12 -0
  17. package/dist/ingest/map.js.map +1 -1
  18. package/dist/mcp/server.d.ts +68 -1
  19. package/dist/mcp/server.d.ts.map +1 -1
  20. package/dist/mcp/server.js +64 -2
  21. package/dist/mcp/server.js.map +1 -1
  22. package/dist/model/index.d.ts +2 -1
  23. package/dist/model/index.d.ts.map +1 -1
  24. package/dist/model/index.js +3 -1
  25. package/dist/model/index.js.map +1 -1
  26. package/dist/model/item.d.ts +43 -5
  27. package/dist/model/item.d.ts.map +1 -1
  28. package/dist/model/item.js +53 -0
  29. package/dist/model/item.js.map +1 -1
  30. package/dist/model/verification.d.ts +38 -0
  31. package/dist/model/verification.d.ts.map +1 -0
  32. package/dist/model/verification.js +52 -0
  33. package/dist/model/verification.js.map +1 -0
  34. package/dist/read/commands.d.ts +7 -0
  35. package/dist/read/commands.d.ts.map +1 -1
  36. package/dist/read/commands.js +18 -0
  37. package/dist/read/commands.js.map +1 -1
  38. package/dist/read/contract.d.ts +38 -3
  39. package/dist/read/contract.d.ts.map +1 -1
  40. package/dist/read/contract.js +64 -3
  41. package/dist/read/contract.js.map +1 -1
  42. package/dist/read/index.d.ts +3 -0
  43. package/dist/read/index.d.ts.map +1 -1
  44. package/dist/read/index.js +5 -0
  45. package/dist/read/index.js.map +1 -1
  46. package/dist/read/scope-validate.d.ts +44 -0
  47. package/dist/read/scope-validate.d.ts.map +1 -0
  48. package/dist/read/scope-validate.js +204 -0
  49. package/dist/read/scope-validate.js.map +1 -0
  50. package/dist/report/build.d.ts +1 -1
  51. package/dist/report/build.d.ts.map +1 -1
  52. package/dist/report/build.js +5 -4
  53. package/dist/report/build.js.map +1 -1
  54. package/dist/report/index.d.ts +2 -1
  55. package/dist/report/index.d.ts.map +1 -1
  56. package/dist/report/index.js +3 -1
  57. package/dist/report/index.js.map +1 -1
  58. package/dist/report/rollup.d.ts +11 -1
  59. package/dist/report/rollup.d.ts.map +1 -1
  60. package/dist/report/rollup.js +26 -20
  61. package/dist/report/rollup.js.map +1 -1
  62. package/dist/report/status-by-level.d.ts +27 -0
  63. package/dist/report/status-by-level.d.ts.map +1 -0
  64. package/dist/report/status-by-level.js +151 -0
  65. package/dist/report/status-by-level.js.map +1 -0
  66. package/dist/state/fold.d.ts +7 -0
  67. package/dist/state/fold.d.ts.map +1 -1
  68. package/dist/state/fold.js +28 -0
  69. package/dist/state/fold.js.map +1 -1
  70. package/dist/state/snapshot.d.ts +2 -0
  71. package/dist/state/snapshot.d.ts.map +1 -1
  72. package/dist/state/snapshot.js +2 -0
  73. package/dist/state/snapshot.js.map +1 -1
  74. package/dist/track.d.ts +25 -1
  75. package/dist/track.d.ts.map +1 -1
  76. package/dist/track.js +61 -17
  77. package/dist/track.js.map +1 -1
  78. package/package.json +1 -1
@@ -0,0 +1,52 @@
1
+ // Scope §B(c) — the path-verdict sibling of TestRun (acceptance.run). A `VerificationRun` is the
2
+ // EVIDENCE a harness emits after checking a tree against scope path-globs. It is RECORD-ONLY: track
3
+ // NEVER does glob-matching — the offending paths in `violations` are recorded VERBATIM as opaque
4
+ // locators, never re-matched. A path verdict can NEVER spawn/advance/complete a TODO (structural
5
+ // guarantee: fold appends to its own evidence collection, touching no realization/bucket logic).
6
+ import { DomainError } from './item.js';
7
+ export const VERDICTS = ['clean', 'violation', 'conditional'];
8
+ const nonEmptyString = (v) => typeof v === 'string' && v.length > 0;
9
+ /**
10
+ * Fail-closed validation of a VerificationRun payload (mirrors `assertDossierArtifact`). The envelope
11
+ * schema only checks the flat fields (`runId`/`runner`/`commit`/`verdict` present, `env`/`wpRef`
12
+ * strings, `violations` a string[]); this asserts the verdict enum + that `violations` are all strings,
13
+ * and normalizes (drops absent optionals so the recorded shape is minimal + hash-stable).
14
+ */
15
+ export function assertVerificationRun(input) {
16
+ if (typeof input !== 'object' || input === null || Array.isArray(input)) {
17
+ throw new DomainError('scope.verification: a verification run must be an object');
18
+ }
19
+ const a = input;
20
+ if (!nonEmptyString(a['runId']))
21
+ throw new DomainError('scope.verification: requires a runId');
22
+ if (!nonEmptyString(a['runner']))
23
+ throw new DomainError('scope.verification: requires a runner');
24
+ if (!nonEmptyString(a['commit']))
25
+ throw new DomainError('scope.verification: requires a commit');
26
+ if (typeof a['verdict'] !== 'string' || !VERDICTS.includes(a['verdict'])) {
27
+ throw new DomainError(`scope.verification: verdict must be one of ${VERDICTS.join('|')}`);
28
+ }
29
+ if (a['env'] !== undefined && typeof a['env'] !== 'string') {
30
+ throw new DomainError('scope.verification: env must be a string');
31
+ }
32
+ if (a['wpRef'] !== undefined && !nonEmptyString(a['wpRef'])) {
33
+ throw new DomainError('scope.verification: wpRef must be a non-empty item id');
34
+ }
35
+ let violations;
36
+ if (a['violations'] !== undefined) {
37
+ if (!Array.isArray(a['violations']) || !a['violations'].every((v) => typeof v === 'string')) {
38
+ throw new DomainError('scope.verification: violations must be a string[]');
39
+ }
40
+ violations = a['violations'];
41
+ }
42
+ return {
43
+ runId: a['runId'],
44
+ runner: a['runner'],
45
+ commit: a['commit'],
46
+ verdict: a['verdict'],
47
+ ...(a['env'] !== undefined ? { env: a['env'] } : {}),
48
+ ...(a['wpRef'] !== undefined ? { wpRef: a['wpRef'] } : {}),
49
+ ...(violations !== undefined ? { violations } : {}),
50
+ };
51
+ }
52
+ //# sourceMappingURL=verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/model/verification.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type Format } from '../report/format.js';
2
2
  import type { QueryFilter, ReportOptions } from '../report/build.js';
3
+ import type { StatusLevel } from '../report/status-by-level.js';
3
4
  import type { TrackReader } from './contract.js';
4
5
  /**
5
6
  * `report` rendered exactly as the CLI renders it (SPEC §7).
@@ -11,6 +12,12 @@ import type { TrackReader } from './contract.js';
11
12
  * `wpTree` plus the global `wpTotals` so a conductor can render programmatically.
12
13
  */
13
14
  export declare function reportText(reader: TrackReader, options: ReportOptions, format: Format): string;
15
+ /**
16
+ * `report --level <spec|plan|wp|lot|task>` rendered (Scope §A/§B). `json` carries the structured status
17
+ * groups; `text`/`md` render a one-line-per-group `done/active (pct) STATUS label — title` table. Pure
18
+ * read over the shared `TrackReader.statusByLevel` (same path the MCP surface uses).
19
+ */
20
+ export declare function statusText(reader: TrackReader, level: StatusLevel, options: ReportOptions, format: Format): string;
14
21
  /** `query` rendered exactly as the CLI renders it: raw JSON for `json`, else the row formatter. */
15
22
  export declare function queryText(reader: TrackReader, filter: QueryFilter, options: ReportOptions, format: Format): string;
16
23
  //# sourceMappingURL=commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/read/commands.ts"],"names":[],"mappings":"AAKA,OAAO,EAAyD,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACxG,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAa9F;AAED,mGAAmG;AACnG,wBAAgB,SAAS,CACvB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,GACb,MAAM,CAGR"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/read/commands.ts"],"names":[],"mappings":"AAKA,OAAO,EAAyD,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACxG,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAa9F;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,GACb,MAAM,CAWR;AAED,mGAAmG;AACnG,wBAAgB,SAAS,CACvB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,GACb,MAAM,CAGR"}
@@ -24,6 +24,24 @@ export function reportText(reader, options, format) {
24
24
  }
25
25
  return formatReport(report, format);
26
26
  }
27
+ /**
28
+ * `report --level <spec|plan|wp|lot|task>` rendered (Scope §A/§B). `json` carries the structured status
29
+ * groups; `text`/`md` render a one-line-per-group `done/active (pct) STATUS label — title` table. Pure
30
+ * read over the shared `TrackReader.statusByLevel` (same path the MCP surface uses).
31
+ */
32
+ export function statusText(reader, level, options, format) {
33
+ const groups = reader.statusByLevel(level, options);
34
+ if (format === 'json')
35
+ return `${JSON.stringify({ level, groups }, null, 2)}\n`;
36
+ const head = `# status — level: ${level}\n`;
37
+ const body = groups
38
+ .map((g) => {
39
+ const pct = g.pct === 'n/a' ? 'n/a' : `${g.pct}%`;
40
+ return `${g.label} ${g.done}/${g.active} (${pct}) ${g.status}${g.dropped > 0 ? ` [${g.dropped} dropped]` : ''} — ${g.title}`;
41
+ })
42
+ .join('\n');
43
+ return `${head}${body}${groups.length > 0 ? '\n' : ''}`;
44
+ }
27
45
  /** `query` rendered exactly as the CLI renders it: raw JSON for `json`, else the row formatter. */
28
46
  export function queryText(reader, filter, options, format) {
29
47
  const rows = reader.query(filter, options);
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/read/commands.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,qGAAqG;AACrG,qGAAqG;AACrG,iEAAiE;AAEjE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAe,MAAM,qBAAqB,CAAA;AAIxG;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,MAAmB,EAAE,OAAsB,EAAE,MAAc;IACpF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAErC,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,4FAA4F;YAC5F,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;QACzF,CAAC;QACD,2DAA2D;QAC3D,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACrC,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,SAAS,CACvB,MAAmB,EACnB,MAAmB,EACnB,OAAsB,EACtB,MAAc;IAEd,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC1C,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC5F,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/read/commands.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,qGAAqG;AACrG,qGAAqG;AACrG,iEAAiE;AAEjE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAe,MAAM,qBAAqB,CAAA;AAKxG;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,MAAmB,EAAE,OAAsB,EAAE,MAAc;IACpF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAErC,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,4FAA4F;YAC5F,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;QACzF,CAAC;QACD,2DAA2D;QAC3D,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,MAAmB,EACnB,KAAkB,EAClB,OAAsB,EACtB,MAAc;IAEd,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACnD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IAC/E,MAAM,IAAI,GAAG,qBAAqB,KAAK,IAAI,CAAA;IAC3C,MAAM,IAAI,GAAG,MAAM;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;QACjD,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;IAChI,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACzD,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,SAAS,CACvB,MAAmB,EACnB,MAAmB,EACnB,OAAsB,EACtB,MAAc;IAEd,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC1C,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC5F,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import type { Sha256 } from '../events/types.js';
2
2
  import { type IntegrityResult } from '../events/validate.js';
3
- import type { ItemId } from '../model/item.js';
3
+ import { type ItemId } from '../model/item.js';
4
+ import type { VerificationRun } from '../model/verification.js';
5
+ import { type StatusGroup, type StatusLevel } from '../report/status-by-level.js';
4
6
  import { type QueryFilter, type Report, type ReportOptions, type ReportRow } from '../report/build.js';
7
+ import { type ScopeValidateInput, type ScopeValidateResult } from './scope-validate.js';
5
8
  /**
6
9
  * Semver of the skill-facing READ contract.
7
10
  *
@@ -9,7 +12,7 @@ import { type QueryFilter, type Report, type ReportOptions, type ReportRow } fro
9
12
  * shapes it returns may only GROW (new methods / new optional fields); nothing is removed or
10
13
  * repurposed without a major bump. Consumers gate on `reader.contractVersion`.
11
14
  */
12
- export declare const READ_CONTRACT_VERSION = "1.4.0";
15
+ export declare const READ_CONTRACT_VERSION = "1.6.0";
13
16
  /** Provenance of the last `branch.imported` for a locator (drawn from the raw event log). */
14
17
  export interface BranchProvenance {
15
18
  locator: string;
@@ -94,7 +97,7 @@ export interface WorkspaceActivityOptions {
94
97
  */
95
98
  export declare class TrackReader {
96
99
  private readonly eventsPath;
97
- readonly contractVersion = "1.4.0";
100
+ readonly contractVersion = "1.6.0";
98
101
  private readonly store;
99
102
  constructor(eventsPath: string);
100
103
  private events;
@@ -102,6 +105,12 @@ export declare class TrackReader {
102
105
  report(options: ReportOptions): Report;
103
106
  /** Flat, filtered query over report rows (SPEC §6). */
104
107
  query(filter: QueryFilter, options: ReportOptions): ReportRow[];
108
+ /**
109
+ * Scope §A/§B — `status(level)` projection (spec|plan|wp|lot|task). Additive read-only generalization
110
+ * of `computeWpTree`+`bucketOf`; adds no aggregate, no stored status axis. `requireAccepted` (default
111
+ * false) and `baselineCommit` govern the underlying leaf buckets exactly as in `report`.
112
+ */
113
+ statusByLevel(level: StatusLevel, options: ReportOptions): StatusGroup[];
105
114
  /** Recompute the integrity chain (SPEC §3) — pure detector, never repairs. */
106
115
  validate(): IntegrityResult;
107
116
  /**
@@ -110,6 +119,32 @@ export declare class TrackReader {
110
119
  * Baseline-free (an external dep resolves only by an explicit event, never commit-relative).
111
120
  */
112
121
  externalDependencies(): ExternalDependency[];
122
+ /**
123
+ * Scope §B(c) — the recorded path-scope VerificationRuns (the read surface a future `scope validate`
124
+ * reads, never recomputes). EVIDENCE-ONLY: each is the latest-per-runId verdict folded from the log;
125
+ * track NEVER glob-matches — `violations` are the harness's verbatim offending paths. `wpRef` filters
126
+ * to one WP/phase; absent ⇒ all runs (workspace-scoped + wpRef'd). Sorted by `at` then `runId`.
127
+ */
128
+ verificationRuns(wpRef?: ItemId): VerificationRun[];
129
+ /**
130
+ * Scope §B(b) — `track scope validate`: a PURE, read-only, fail-closed, ADVISORY validation of the
131
+ * declarative scope state. It NEVER glob-matches (string-level set logic), NEVER ingests, NEVER appends,
132
+ * and is NEVER a commit gate.
133
+ *
134
+ * FAIL-CLOSED: when `content`+`locator` are supplied, `requireFresh` runs FIRST (REUSING the shipped
135
+ * mechanism) — a stale / altered / not-imported sidecar throws `StaleSidecarError`, surfaced here as
136
+ * `{status:'stale', findings:[], perWp:[]}` with NO partial verdict (never a silent fallback). When no
137
+ * sidecar is given, the validation runs directly over the folded log.
138
+ *
139
+ * Validates (semantic, pure): every realization-active WP/spec-phase has a `scope` (else 'scope-undeclared');
140
+ * no allowed∩forbidden string overlap ('incoherent'); legal spec-phase nesting ('illegal-nesting'); an
141
+ * optional claimed item is a descendant of a declared phase ('claim-out-of-phase'). Surfaces the latest
142
+ * ingested VerificationRun verdict per WP (READ, never recomputed). Optional opt-in 'delivered-out-of-scope'.
143
+ */
144
+ scopeValidate(opts: ScopeValidateInput & {
145
+ content?: string;
146
+ locator?: string;
147
+ }): ScopeValidateResult;
113
148
  /**
114
149
  * Poll-able activity signal for ONE workspace (h2a conductor-launch gating). PURE: `now`/`idleMs`
115
150
  * 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":"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"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/read/contract.ts"],"names":[],"mappings":"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"}
@@ -11,10 +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';
16
+ import { statusByLevel } from '../report/status-by-level.js';
15
17
  import { effectiveOpenBlockersForItem } from '../report/blocker-status.js';
16
18
  import { buildReport, query as runQuery, } from '../report/build.js';
17
19
  import { fold } from '../state/fold.js';
20
+ import { scopeValidate as runScopeValidate, } from './scope-validate.js';
18
21
  /**
19
22
  * Semver of the skill-facing READ contract.
20
23
  *
@@ -22,7 +25,7 @@ import { fold } from '../state/fold.js';
22
25
  * shapes it returns may only GROW (new methods / new optional fields); nothing is removed or
23
26
  * repurposed without a major bump. Consumers gate on `reader.contractVersion`.
24
27
  */
25
- export const READ_CONTRACT_VERSION = '1.4.0'; // +workspaceActivity() poll surface (h2a conductor-launch gating, additive)
28
+ export const READ_CONTRACT_VERSION = '1.6.0'; // +scopeValidate() advisory read (Scope §B(b), additive)
26
29
  /** Thrown by `requireFresh` when the sidecar is unsafe to consume (stale, absent, or tampered). */
27
30
  export class StaleSidecarError extends Error {
28
31
  detail;
@@ -58,6 +61,17 @@ export class TrackReader {
58
61
  query(filter, options) {
59
62
  return runQuery(fold(this.events()), filter, options);
60
63
  }
64
+ /**
65
+ * Scope §A/§B — `status(level)` projection (spec|plan|wp|lot|task). Additive read-only generalization
66
+ * of `computeWpTree`+`bucketOf`; adds no aggregate, no stored status axis. `requireAccepted` (default
67
+ * false) and `baselineCommit` govern the underlying leaf buckets exactly as in `report`.
68
+ */
69
+ statusByLevel(level, options) {
70
+ return statusByLevel(fold(this.events()), level, {
71
+ baselineCommit: options.baselineCommit,
72
+ requireAccepted: options.requireAccepted ?? false,
73
+ });
74
+ }
61
75
  /** Recompute the integrity chain (SPEC §3) — pure detector, never repairs. */
62
76
  validate() {
63
77
  return validate(this.events(), readHead(this.eventsPath));
@@ -77,6 +91,53 @@ export class TrackReader {
77
91
  }
78
92
  return out;
79
93
  }
94
+ /**
95
+ * Scope §B(c) — the recorded path-scope VerificationRuns (the read surface a future `scope validate`
96
+ * reads, never recomputes). EVIDENCE-ONLY: each is the latest-per-runId verdict folded from the log;
97
+ * track NEVER glob-matches — `violations` are the harness's verbatim offending paths. `wpRef` filters
98
+ * to one WP/phase; absent ⇒ all runs (workspace-scoped + wpRef'd). Sorted by `at` then `runId`.
99
+ */
100
+ verificationRuns(wpRef) {
101
+ const runs = [...fold(this.events()).verificationRuns.values()];
102
+ const filtered = wpRef !== undefined ? runs.filter((r) => r.wpRef === wpRef) : runs;
103
+ return filtered.sort((a, b) => a.at.localeCompare(b.at) || a.runId.localeCompare(b.runId));
104
+ }
105
+ /**
106
+ * Scope §B(b) — `track scope validate`: a PURE, read-only, fail-closed, ADVISORY validation of the
107
+ * declarative scope state. It NEVER glob-matches (string-level set logic), NEVER ingests, NEVER appends,
108
+ * and is NEVER a commit gate.
109
+ *
110
+ * FAIL-CLOSED: when `content`+`locator` are supplied, `requireFresh` runs FIRST (REUSING the shipped
111
+ * mechanism) — a stale / altered / not-imported sidecar throws `StaleSidecarError`, surfaced here as
112
+ * `{status:'stale', findings:[], perWp:[]}` with NO partial verdict (never a silent fallback). When no
113
+ * sidecar is given, the validation runs directly over the folded log.
114
+ *
115
+ * Validates (semantic, pure): every realization-active WP/spec-phase has a `scope` (else 'scope-undeclared');
116
+ * no allowed∩forbidden string overlap ('incoherent'); legal spec-phase nesting ('illegal-nesting'); an
117
+ * optional claimed item is a descendant of a declared phase ('claim-out-of-phase'). Surfaces the latest
118
+ * ingested VerificationRun verdict per WP (READ, never recomputed). Optional opt-in 'delivered-out-of-scope'.
119
+ */
120
+ scopeValidate(opts) {
121
+ const events = this.events();
122
+ // FAIL-CLOSED gate FIRST: a supplied sidecar must be fresh + integral, or no verdict is produced.
123
+ if (opts.content !== undefined && opts.locator !== undefined) {
124
+ try {
125
+ this.requireFresh(opts.content, opts.locator);
126
+ }
127
+ catch (error) {
128
+ if (error instanceof StaleSidecarError) {
129
+ return { status: 'stale', findings: [], perWp: [] };
130
+ }
131
+ throw error;
132
+ }
133
+ }
134
+ return runScopeValidate(fold(events), {
135
+ workspace: opts.workspace,
136
+ baselineCommit: opts.baselineCommit,
137
+ ...(opts.inferDeliveredOutOfScope !== undefined ? { inferDeliveredOutOfScope: opts.inferDeliveredOutOfScope } : {}),
138
+ ...(opts.claimedItemId !== undefined ? { claimedItemId: opts.claimedItemId } : {}),
139
+ });
140
+ }
80
141
  /**
81
142
  * Poll-able activity signal for ONE workspace (h2a conductor-launch gating). PURE: `now`/`idleMs`
82
143
  * are caller-supplied (track holds no clock). Reads the log ONCE; `pending`/staleness reuse the
@@ -113,8 +174,8 @@ export class TrackReader {
113
174
  for (const item of state.items.values()) {
114
175
  if (item.workspace !== workspace)
115
176
  continue;
116
- if (item.role === 'workpackage')
117
- continue; // a WP is a container, never a flat leaf (Workpackages §2)
177
+ if (isRoleContainer(item))
178
+ continue; // a WP/spec-phase is a container, never a flat leaf (Scope §B(a))
118
179
  const bucket = bucketOf(state, item, config);
119
180
  if (bucket === 'TO-DO' || bucket === 'AWAITED')
120
181
  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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"}
@@ -1,2 +1,5 @@
1
1
  export { READ_CONTRACT_VERSION, StaleSidecarError, TrackReader, type BranchProvenance, type ExternalDependency, type Freshness, type StalledItem, type StalledReason, type WorkspaceActivity, type WorkspaceActivityOptions, } from './contract.js';
2
+ export { type GroupStatus, type StatusGroup, type StatusLevel } from '../report/status-by-level.js';
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';
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
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;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"}
@@ -1,3 +1,8 @@
1
1
  // Read contract barrel (Lot v2.0) — the skill-facing, versioned, read-only surface.
2
2
  export { READ_CONTRACT_VERSION, StaleSidecarError, TrackReader, } from './contract.js';
3
+ // Scope §A/§B — projection/evidence types re-exported for skill consumers of the read contract.
4
+ export {} from '../report/status-by-level.js';
5
+ export {} from '../model/verification.js';
6
+ // Scope §B(b) — the advisory scope-validate read surface.
7
+ export {} from './scope-validate.js';
3
8
  //# sourceMappingURL=index.js.map
@@ -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,GAQZ,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/read/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,GAQZ,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"}
@@ -0,0 +1,44 @@
1
+ import { type ItemId } from '../model/item.js';
2
+ import type { VerificationRun, Verdict } from '../model/verification.js';
3
+ import type { State } from '../state/fold.js';
4
+ /** A semantic validation finding (advisory). `wpId` names the offending WP/spec-phase when applicable. */
5
+ export type ScopeFindingCode = 'scope-undeclared' | 'incoherent' | 'illegal-nesting' | 'claim-out-of-phase' | 'delivered-out-of-scope';
6
+ export interface ScopeFinding {
7
+ code: ScopeFindingCode;
8
+ wpId?: ItemId;
9
+ message: string;
10
+ }
11
+ /** The per-WP/phase semantic state (the worst single condition; 'ok' when none apply). */
12
+ export type SemanticStatus = 'ok' | 'scope-undeclared' | 'incoherent' | 'illegal-nesting';
13
+ /** The latest ingested VerificationRun verdict for a WP, surfaced (READ, never recomputed). */
14
+ export type EvidenceStatus = Verdict;
15
+ export interface PerWp {
16
+ wpId: ItemId;
17
+ label: string;
18
+ declared: boolean;
19
+ latestVerification?: VerificationRun;
20
+ semanticStatus: SemanticStatus;
21
+ evidenceStatus?: EvidenceStatus;
22
+ }
23
+ export type ScopeValidateStatus = 'pass' | 'fail' | 'stale' | 'missing';
24
+ export interface ScopeValidateResult {
25
+ status: ScopeValidateStatus;
26
+ findings: ScopeFinding[];
27
+ perWp: PerWp[];
28
+ /** Deterministic hash of the (sorted) declared scopes in scope — present iff at least one is declared. */
29
+ scopeRevisionHash?: string;
30
+ }
31
+ export interface ScopeValidateInput {
32
+ workspace: string;
33
+ baselineCommit: string;
34
+ /** Opt-in: infer 'delivered-out-of-scope' (a read flag, never a write). OFF by default. */
35
+ inferDeliveredOutOfScope?: boolean;
36
+ /** Optional claimed item id — flag if it is not a descendant of its WP/phase's declared subtree. */
37
+ claimedItemId?: ItemId;
38
+ }
39
+ /**
40
+ * Validate scope declarations over the folded `state`, scoped to `workspace`. PURE: no glob-matching
41
+ * (allowed∩forbidden is a string-level set overlap), no ingest, no append. The caller guarantees freshness.
42
+ */
43
+ export declare function scopeValidate(state: State, input: ScopeValidateInput): ScopeValidateResult;
44
+ //# sourceMappingURL=scope-validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-validate.d.ts","sourceRoot":"","sources":["../../src/read/scope-validate.ts"],"names":[],"mappings":"AAOA,OAAO,EAAmB,KAAK,MAAM,EAAkB,MAAM,kBAAkB,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAG7C,0GAA0G;AAC1G,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,YAAY,GACZ,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,CAAA;AAE5B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,kBAAkB,GAAG,YAAY,GAAG,iBAAiB,CAAA;AAEzF,+FAA+F;AAC/F,MAAM,MAAM,cAAc,GAAG,OAAO,CAAA;AAEpC,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,CAAC,EAAE,eAAe,CAAA;IACpC,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;AAEvE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,mBAAmB,CAAA;IAC3B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,KAAK,EAAE,KAAK,EAAE,CAAA;IACd,0GAA0G;IAC1G,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,2FAA2F;IAC3F,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,oGAAoG;IACpG,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAwED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CA2I1F"}