@sentropic/track 0.10.10 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/cli/index.d.ts.map +1 -1
  2. package/dist/cli/index.js +56 -3
  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 +10 -1
  7. package/dist/events/types.js.map +1 -1
  8. package/dist/ingest/contract.d.ts +2 -1
  9. package/dist/ingest/contract.d.ts.map +1 -1
  10. package/dist/ingest/contract.js +19 -0
  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 +18 -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 +6 -0
  17. package/dist/ingest/map.js.map +1 -1
  18. package/dist/mcp/server.d.ts +34 -0
  19. package/dist/mcp/server.d.ts.map +1 -1
  20. package/dist/mcp/server.js +33 -1
  21. package/dist/mcp/server.js.map +1 -1
  22. package/dist/model/index.d.ts +1 -0
  23. package/dist/model/index.d.ts.map +1 -1
  24. package/dist/model/index.js +2 -0
  25. package/dist/model/index.js.map +1 -1
  26. package/dist/model/verification.d.ts +38 -0
  27. package/dist/model/verification.d.ts.map +1 -0
  28. package/dist/model/verification.js +52 -0
  29. package/dist/model/verification.js.map +1 -0
  30. package/dist/read/commands.d.ts +7 -0
  31. package/dist/read/commands.d.ts.map +1 -1
  32. package/dist/read/commands.js +18 -0
  33. package/dist/read/commands.js.map +1 -1
  34. package/dist/read/contract.d.ts +17 -2
  35. package/dist/read/contract.d.ts.map +1 -1
  36. package/dist/read/contract.js +24 -1
  37. package/dist/read/contract.js.map +1 -1
  38. package/dist/read/index.d.ts +2 -0
  39. package/dist/read/index.d.ts.map +1 -1
  40. package/dist/read/index.js +3 -0
  41. package/dist/read/index.js.map +1 -1
  42. package/dist/report/index.d.ts +2 -1
  43. package/dist/report/index.d.ts.map +1 -1
  44. package/dist/report/index.js +3 -1
  45. package/dist/report/index.js.map +1 -1
  46. package/dist/report/rollup.d.ts +10 -0
  47. package/dist/report/rollup.d.ts.map +1 -1
  48. package/dist/report/rollup.js +23 -18
  49. package/dist/report/rollup.js.map +1 -1
  50. package/dist/report/status-by-level.d.ts +27 -0
  51. package/dist/report/status-by-level.d.ts.map +1 -0
  52. package/dist/report/status-by-level.js +149 -0
  53. package/dist/report/status-by-level.js.map +1 -0
  54. package/dist/state/fold.d.ts +7 -0
  55. package/dist/state/fold.d.ts.map +1 -1
  56. package/dist/state/fold.js +18 -0
  57. package/dist/state/fold.js.map +1 -1
  58. package/dist/state/snapshot.d.ts +2 -0
  59. package/dist/state/snapshot.d.ts.map +1 -1
  60. package/dist/state/snapshot.js +2 -0
  61. package/dist/state/snapshot.js.map +1 -1
  62. package/dist/track.d.ts +15 -0
  63. package/dist/track.d.ts.map +1 -1
  64. package/dist/track.js +25 -0
  65. package/dist/track.js.map +1 -1
  66. package/package.json +1 -1
@@ -9,7 +9,7 @@ import { join } from 'node:path';
9
9
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
10
10
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
11
11
  import { resolveTrackDirOrNull } from '../cli/resolve.js';
12
- import { queryText, reportText } from '../read/commands.js';
12
+ import { queryText, reportText, statusText } from '../read/commands.js';
13
13
  import { TrackReader } from '../read/contract.js';
14
14
  import { VERSION } from '../version.js';
15
15
  // Allowed enum values — the single source for BOTH the advertised schema and runtime validation.
@@ -18,6 +18,7 @@ const ROLES = ['workpackage']; // Workpackages §2 — container marker filter
18
18
  const BUCKETS = ['AWAITED', 'DROPPED', 'DONE', 'TO-DO'];
19
19
  const REALIZATIONS = ['to-do', 'in-progress', 'done', 'cancelled', 'rejected'];
20
20
  const ACCEPTANCES = ['pass', 'fail', 'unknown', 'stale', 'waived'];
21
+ const LEVELS = ['spec', 'plan', 'wp', 'lot', 'task']; // Scope §A/§B — status(level) tiers
21
22
  /** Read-only tools, declared as plain JSON Schema (no zod) — the curated read contract over MCP. */
22
23
  export const READ_TOOLS = [
23
24
  {
@@ -78,6 +79,27 @@ export const READ_TOOLS = [
78
79
  description: 'Open external (scope:extra) dependencies awaiting an h2a ENGAGEMENT, as JSON [{blockerId, targetId, engagementRef, openedAt}]. What an h2a bridge watches to resolve when an engagement settles.',
79
80
  inputSchema: { type: 'object', properties: {} },
80
81
  },
82
+ {
83
+ name: 'track_status',
84
+ description: 'status(level) projection (Scope §A/§B): rolls leaf buckets up to a scope tier {spec|plan|wp|lot|task}, as JSON {level, groups:[{id,title,label,depth,status,done,active,dropped,pct}]}. wp ≡ the computeWpTree forest; task = leaf buckets; lot|plan|spec = the same rollup over WP-nesting tiers (SUM not mean; dropped excluded; 0/0⇒n/a). Read-only.',
85
+ inputSchema: {
86
+ type: 'object',
87
+ properties: {
88
+ level: { type: 'string', enum: LEVELS, description: 'The scope tier to roll up to.' },
89
+ baselineCommit: { type: 'string', description: 'Commit AWAITED/acceptance are evaluated against.' },
90
+ requireAccepted: { type: 'boolean', description: 'A done leaf counts as DONE only if acceptance=pass.' },
91
+ },
92
+ required: ['level', 'baselineCommit'],
93
+ },
94
+ },
95
+ {
96
+ name: 'track_verification_runs',
97
+ description: 'Recorded path-scope VerificationRuns (Scope §B(c)) — the EVIDENCE a future `scope validate` reads, as JSON [{runId,runner,commit,env?,verdict,wpRef?,violations?,at}]. EVIDENCE-ONLY: a path verdict never becomes an item. `violations` are the harness verbatim offending paths (track never glob-matches). Optional `wpRef` filters to one WP/phase.',
98
+ inputSchema: {
99
+ type: 'object',
100
+ properties: { wpRef: { type: 'string', description: 'Filter to runs for this WP/phase item id.' } },
101
+ },
102
+ },
81
103
  {
82
104
  name: 'track_workspace_activity',
83
105
  description: 'Poll-able activity signal for ONE workspace (h2a conductor-launch gating), as JSON {workspace, pending, stalled[], latestEventAt?}. PURE: the caller supplies `now` (and optional `idleMs`, default 24h) — track holds no clock. `pending` = TO-DO+AWAITED count; `stalled` = items/decisions durably stuck (awaited-open-blocker | pending-decision | in-progress-idle | todo-idle).',
@@ -169,6 +191,16 @@ export function dispatchReadTool(reader, name, args) {
169
191
  filter.acceptance = acceptance;
170
192
  return queryText(reader, filter, { baselineCommit: reqStr(args, 'baselineCommit') }, 'json');
171
193
  }
194
+ case 'track_status': {
195
+ const level = optEnum(args, 'level', LEVELS);
196
+ if (level === undefined)
197
+ throw new Error('tool argument "level" must be one of: ' + LEVELS.join(', '));
198
+ return statusText(reader, level, { baselineCommit: reqStr(args, 'baselineCommit'), requireAccepted: optBool(args, 'requireAccepted') ?? false }, 'json');
199
+ }
200
+ case 'track_verification_runs': {
201
+ const wpRef = optStr(args, 'wpRef');
202
+ return JSON.stringify(reader.verificationRuns(wpRef), null, 2);
203
+ }
172
204
  case 'track_validate':
173
205
  return JSON.stringify(reader.validate(), null, 2);
174
206
  case 'track_external_deps':
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ export { assertManualResolve, type BlockerKind, type BlockerOpenedPayload, type
3
3
  export { assertDossierArtifact, assertOutcomeTransition, isSettled, type AddArtifactPayload, type ComprehensionEvidence, type DecisionCreatedPayload, type DecisionKind, type DecisionState, type Dossier, type DossierArtifact, type Option, type Outcome, type QAEntry, } from './decision.js';
4
4
  export { type AcceptanceStatus, type CriterionState, type CriterionStatus, type EvidenceKind, type EvidenceState, type RunResult, type TestRun, type Waiver, } from './acceptance.js';
5
5
  export { WSJF_SCHEME_VERSION, wsjfScore, type PriorityAssessment, type SchemeId, type WsjfInputs, } from './priority.js';
6
+ export { assertVerificationRun, VERDICTS, type VerificationRecordedPayload, type VerificationRun, type Verdict, } from './verification.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,IAAI,EACT,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,SAAS,EACT,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,OAAO,GACb,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,MAAM,GACZ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,IAAI,EACT,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,SAAS,EACT,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,OAAO,GACb,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,MAAM,GACZ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,qBAAqB,EACrB,QAAQ,EACR,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,OAAO,GACb,MAAM,mBAAmB,CAAA"}
@@ -4,4 +4,6 @@ export { assertManualResolve, } from './blocker.js';
4
4
  export { assertDossierArtifact, assertOutcomeTransition, isSettled, } from './decision.js';
5
5
  export {} from './acceptance.js';
6
6
  export { WSJF_SCHEME_VERSION, wsjfScore, } from './priority.js';
7
+ // Scope §B(c) — path-scope verification evidence (the sibling of TestRun).
8
+ export { assertVerificationRun, VERDICTS, } from './verification.js';
7
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,oBAAoB,GAYrB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,mBAAmB,GAMpB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,SAAS,GAWV,MAAM,eAAe,CAAA;AACtB,OAAO,EASN,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mBAAmB,EACnB,SAAS,GAIV,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,oBAAoB,GAYrB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,mBAAmB,GAMpB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,SAAS,GAWV,MAAM,eAAe,CAAA;AACtB,OAAO,EASN,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mBAAmB,EACnB,SAAS,GAIV,MAAM,eAAe,CAAA;AACtB,2EAA2E;AAC3E,OAAO,EACL,qBAAqB,EACrB,QAAQ,GAIT,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { type ItemId } from './item.js';
2
+ /** The path verdict a harness computed. `severity→pass/fail` is the adapter's policy, not the contract. */
3
+ export type Verdict = 'clean' | 'violation' | 'conditional';
4
+ export declare const VERDICTS: readonly Verdict[];
5
+ /**
6
+ * A recorded path-scope verification (the sibling of {@link TestRun}). Evidence-only: it surfaces on
7
+ * the read contract for a future `scope validate` to read, but is INERT to bucketing/realization.
8
+ */
9
+ export interface VerificationRun {
10
+ runId: string;
11
+ runner: string;
12
+ commit: string;
13
+ env?: string;
14
+ verdict: Verdict;
15
+ /** The WP/phase the verdict pertains to; absent ⇒ a workspace-scoped run. */
16
+ wpRef?: ItemId;
17
+ /** Offending paths, recorded VERBATIM (opaque locators) — track NEVER re-matches them. */
18
+ violations?: string[];
19
+ at: string;
20
+ }
21
+ /** The payload of a `scope.verification` WorkEvent / `scope.verification-recorded` event. */
22
+ export interface VerificationRecordedPayload {
23
+ runId: string;
24
+ runner: string;
25
+ commit: string;
26
+ env?: string;
27
+ verdict: Verdict;
28
+ wpRef?: ItemId;
29
+ violations?: string[];
30
+ }
31
+ /**
32
+ * Fail-closed validation of a VerificationRun payload (mirrors `assertDossierArtifact`). The envelope
33
+ * schema only checks the flat fields (`runId`/`runner`/`commit`/`verdict` present, `env`/`wpRef`
34
+ * strings, `violations` a string[]); this asserts the verdict enum + that `violations` are all strings,
35
+ * and normalizes (drops absent optionals so the recorded shape is minimal + hash-stable).
36
+ */
37
+ export declare function assertVerificationRun(input: unknown): VerificationRecordedPayload;
38
+ //# sourceMappingURL=verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/model/verification.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AAEpD,2GAA2G;AAC3G,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,CAAA;AAC3D,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,EAA0C,CAAA;AAEjF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,EAAE,EAAE,MAAM,CAAA;CACX;AAED,6FAA6F;AAC7F,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAID;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAiCjF"}
@@ -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":"AAAA,iGAAiG;AACjG,oGAAoG;AACpG,iGAAiG;AACjG,iGAAiG;AACjG,iGAAiG;AAEjG,OAAO,EAAE,WAAW,EAAe,MAAM,WAAW,CAAA;AAIpD,MAAM,CAAC,MAAM,QAAQ,GAAuB,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAA;AA8BjF,MAAM,cAAc,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAEzF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,WAAW,CAAC,0DAA0D,CAAC,CAAA;IACnF,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,sCAAsC,CAAC,CAAA;IAC9F,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,uCAAuC,CAAC,CAAA;IAChG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,uCAAuC,CAAC,CAAA;IAChG,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAY,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,WAAW,CAAC,8CAA8C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3F,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3D,MAAM,IAAI,WAAW,CAAC,0CAA0C,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,WAAW,CAAC,uDAAuD,CAAC,CAAA;IAChF,CAAC;IACD,IAAI,UAAgC,CAAA;IACpC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC5F,MAAM,IAAI,WAAW,CAAC,mDAAmD,CAAC,CAAA;QAC5E,CAAC;QACD,UAAU,GAAG,CAAC,CAAC,YAAY,CAAa,CAAA;IAC1C,CAAC;IACD,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;QACnB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;QACnB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAY;QAChC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAA;AACH,CAAC"}
@@ -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,6 +1,8 @@
1
1
  import type { Sha256 } from '../events/types.js';
2
2
  import { type IntegrityResult } from '../events/validate.js';
3
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';
5
7
  /**
6
8
  * Semver of the skill-facing READ contract.
@@ -9,7 +11,7 @@ import { type QueryFilter, type Report, type ReportOptions, type ReportRow } fro
9
11
  * shapes it returns may only GROW (new methods / new optional fields); nothing is removed or
10
12
  * repurposed without a major bump. Consumers gate on `reader.contractVersion`.
11
13
  */
12
- export declare const READ_CONTRACT_VERSION = "1.4.0";
14
+ export declare const READ_CONTRACT_VERSION = "1.5.0";
13
15
  /** Provenance of the last `branch.imported` for a locator (drawn from the raw event log). */
14
16
  export interface BranchProvenance {
15
17
  locator: string;
@@ -94,7 +96,7 @@ export interface WorkspaceActivityOptions {
94
96
  */
95
97
  export declare class TrackReader {
96
98
  private readonly eventsPath;
97
- readonly contractVersion = "1.4.0";
99
+ readonly contractVersion = "1.5.0";
98
100
  private readonly store;
99
101
  constructor(eventsPath: string);
100
102
  private events;
@@ -102,6 +104,12 @@ export declare class TrackReader {
102
104
  report(options: ReportOptions): Report;
103
105
  /** Flat, filtered query over report rows (SPEC §6). */
104
106
  query(filter: QueryFilter, options: ReportOptions): ReportRow[];
107
+ /**
108
+ * Scope §A/§B — `status(level)` projection (spec|plan|wp|lot|task). Additive read-only generalization
109
+ * of `computeWpTree`+`bucketOf`; adds no aggregate, no stored status axis. `requireAccepted` (default
110
+ * false) and `baselineCommit` govern the underlying leaf buckets exactly as in `report`.
111
+ */
112
+ statusByLevel(level: StatusLevel, options: ReportOptions): StatusGroup[];
105
113
  /** Recompute the integrity chain (SPEC §3) — pure detector, never repairs. */
106
114
  validate(): IntegrityResult;
107
115
  /**
@@ -110,6 +118,13 @@ export declare class TrackReader {
110
118
  * Baseline-free (an external dep resolves only by an explicit event, never commit-relative).
111
119
  */
112
120
  externalDependencies(): ExternalDependency[];
121
+ /**
122
+ * Scope §B(c) — the recorded path-scope VerificationRuns (the read surface a future `scope validate`
123
+ * reads, never recomputes). EVIDENCE-ONLY: each is the latest-per-runId verdict folded from the log;
124
+ * track NEVER glob-matches — `violations` are the harness's verbatim offending paths. `wpRef` filters
125
+ * to one WP/phase; absent ⇒ all runs (workspace-scoped + wpRef'd). Sorted by `at` then `runId`.
126
+ */
127
+ verificationRuns(wpRef?: ItemId): VerificationRun[];
113
128
  /**
114
129
  * Poll-able activity signal for ONE workspace (h2a conductor-launch gating). PURE: `now`/`idleMs`
115
130
  * 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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"}
@@ -12,6 +12,7 @@ import { readHead } from '../events/head.js';
12
12
  import { EventStore } from '../events/store.js';
13
13
  import { validate } from '../events/validate.js';
14
14
  import { bucketOf } from '../report/buckets.js';
15
+ import { statusByLevel } from '../report/status-by-level.js';
15
16
  import { effectiveOpenBlockersForItem } from '../report/blocker-status.js';
16
17
  import { buildReport, query as runQuery, } from '../report/build.js';
17
18
  import { fold } from '../state/fold.js';
@@ -22,7 +23,7 @@ import { fold } from '../state/fold.js';
22
23
  * shapes it returns may only GROW (new methods / new optional fields); nothing is removed or
23
24
  * repurposed without a major bump. Consumers gate on `reader.contractVersion`.
24
25
  */
25
- export const READ_CONTRACT_VERSION = '1.4.0'; // +workspaceActivity() poll surface (h2a conductor-launch gating, additive)
26
+ export const READ_CONTRACT_VERSION = '1.5.0'; // +verificationRuns() evidence read + statusByLevel() projection (Scope §A/§B, additive)
26
27
  /** Thrown by `requireFresh` when the sidecar is unsafe to consume (stale, absent, or tampered). */
27
28
  export class StaleSidecarError extends Error {
28
29
  detail;
@@ -58,6 +59,17 @@ export class TrackReader {
58
59
  query(filter, options) {
59
60
  return runQuery(fold(this.events()), filter, options);
60
61
  }
62
+ /**
63
+ * Scope §A/§B — `status(level)` projection (spec|plan|wp|lot|task). Additive read-only generalization
64
+ * of `computeWpTree`+`bucketOf`; adds no aggregate, no stored status axis. `requireAccepted` (default
65
+ * false) and `baselineCommit` govern the underlying leaf buckets exactly as in `report`.
66
+ */
67
+ statusByLevel(level, options) {
68
+ return statusByLevel(fold(this.events()), level, {
69
+ baselineCommit: options.baselineCommit,
70
+ requireAccepted: options.requireAccepted ?? false,
71
+ });
72
+ }
61
73
  /** Recompute the integrity chain (SPEC §3) — pure detector, never repairs. */
62
74
  validate() {
63
75
  return validate(this.events(), readHead(this.eventsPath));
@@ -77,6 +89,17 @@ export class TrackReader {
77
89
  }
78
90
  return out;
79
91
  }
92
+ /**
93
+ * Scope §B(c) — the recorded path-scope VerificationRuns (the read surface a future `scope validate`
94
+ * reads, never recomputes). EVIDENCE-ONLY: each is the latest-per-runId verdict folded from the log;
95
+ * track NEVER glob-matches — `violations` are the harness's verbatim offending paths. `wpRef` filters
96
+ * to one WP/phase; absent ⇒ all runs (workspace-scoped + wpRef'd). Sorted by `at` then `runId`.
97
+ */
98
+ verificationRuns(wpRef) {
99
+ const runs = [...fold(this.events()).verificationRuns.values()];
100
+ const filtered = wpRef !== undefined ? runs.filter((r) => r.wpRef === wpRef) : runs;
101
+ return filtered.sort((a, b) => a.at.localeCompare(b.at) || a.runId.localeCompare(b.runId));
102
+ }
80
103
  /**
81
104
  * Poll-able activity signal for ONE workspace (h2a conductor-launch gating). PURE: `now`/`idleMs`
82
105
  * are caller-supplied (track holds no clock). Reads the log ONCE; `pending`/staleness reuse the
@@ -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,4 @@
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';
2
4
  //# 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"}
@@ -1,3 +1,6 @@
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';
3
6
  //# 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"}
@@ -1,6 +1,7 @@
1
1
  export { BUCKETS, bucketOf, type Bucket, type ReportConfig } from './buckets.js';
2
2
  export { buildReport, query, type DecisionRow, type QueryFilter, type Report, type ReportOptions, type ReportRow, } from './build.js';
3
3
  export { formatReport, formatRows, formatWpConductor, formatWpTree, wpTotals, type Format, type WpTotals, } from './format.js';
4
- export { computeWpTree, type WpLeaf, type WpNode } from './rollup.js';
4
+ export { computeWpTree, tally, type WpLeaf, type WpNode } from './rollup.js';
5
+ export { statusByLevel, STATUS_LEVELS, type GroupStatus, type StatusGroup, type StatusLevel, } from './status-by-level.js';
5
6
  export { effectiveBlockerOpen, effectiveOpenBlockersForItem } from './blocker-status.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EACL,WAAW,EACX,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,KAAK,MAAM,EACX,KAAK,QAAQ,GACd,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAErE,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EACL,WAAW,EACX,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,KAAK,MAAM,EACX,KAAK,QAAQ,GACd,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAE5E,OAAO,EACL,aAAa,EACb,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA"}
@@ -3,7 +3,9 @@ export { BUCKETS, bucketOf } from './buckets.js';
3
3
  export { buildReport, query, } from './build.js';
4
4
  export { formatReport, formatRows, formatWpConductor, formatWpTree, wpTotals, } from './format.js';
5
5
  // Workpackages §2 — the %-by-WP rollup forest (pure).
6
- export { computeWpTree } from './rollup.js';
6
+ export { computeWpTree, tally } from './rollup.js';
7
+ // Scope §A/§B — status(level) projection (spec|plan|wp|lot|task), additive read-only.
8
+ export { statusByLevel, STATUS_LEVELS, } from './status-by-level.js';
7
9
  // Commit-relative blocker openness (v2.2a hybrid-A) — `linked-accepted` derived at projection time.
8
10
  export { effectiveBlockerOpen, effectiveOpenBlockersForItem } from './blocker-status.js';
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAkC,MAAM,cAAc,CAAA;AAChF,OAAO,EACL,WAAW,EACX,KAAK,GAMN,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,GAGT,MAAM,aAAa,CAAA;AACpB,sDAAsD;AACtD,OAAO,EAAE,aAAa,EAA4B,MAAM,aAAa,CAAA;AACrE,oGAAoG;AACpG,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAkC,MAAM,cAAc,CAAA;AAChF,OAAO,EACL,WAAW,EACX,KAAK,GAMN,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,GAGT,MAAM,aAAa,CAAA;AACpB,sDAAsD;AACtD,OAAO,EAAE,aAAa,EAAE,KAAK,EAA4B,MAAM,aAAa,CAAA;AAC5E,sFAAsF;AACtF,OAAO,EACL,aAAa,EACb,aAAa,GAId,MAAM,sBAAsB,CAAA;AAC7B,oGAAoG;AACpG,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA"}
@@ -30,6 +30,16 @@ export interface WpNode {
30
30
  leaves: WpLeaf[];
31
31
  children: WpNode[];
32
32
  }
33
+ /**
34
+ * Tally leaf buckets into done/active/dropped counts (the % numerator/denominator). DONE counts in both
35
+ * done and active; TO-DO/AWAITED count active only; DROPPED is shown but EXCLUDED from the denominator.
36
+ * Exported so `statusByLevel` rolls up tiers with the SAME arithmetic (no Simpson mean-of-pcts trap).
37
+ */
38
+ export declare function tally(leaves: readonly WpLeaf[]): {
39
+ done: number;
40
+ active: number;
41
+ dropped: number;
42
+ };
33
43
  /**
34
44
  * Build the WP forest and roll leaf buckets up. A WP's transitive NON-WP descendants are its leaves;
35
45
  * a nested WP is a sub-node, not a leaf, so its leaves count once at every ancestor (SUM, not mean).
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/report/rollup.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAa,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAY,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAGvE,oGAAoG;AACpG,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,QAAQ,CAAA;IACd,gGAAgG;IAChG,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,wGAAwG;AACxG,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;IACnB,8GAA8G;IAC9G,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAuG1E"}
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/report/rollup.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAa,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAY,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAGvE,oGAAoG;AACpG,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,QAAQ,CAAA;IACd,gGAAgG;IAChG,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,wGAAwG;AACxG,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;IACnB,8GAA8G;IAC9G,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAOD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAelG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAsF1E"}
@@ -13,6 +13,29 @@ import { effectiveOpenBlockersForItem } from './blocker-status.js';
13
13
  function isWp(item) {
14
14
  return item.role === 'workpackage';
15
15
  }
16
+ /**
17
+ * Tally leaf buckets into done/active/dropped counts (the % numerator/denominator). DONE counts in both
18
+ * done and active; TO-DO/AWAITED count active only; DROPPED is shown but EXCLUDED from the denominator.
19
+ * Exported so `statusByLevel` rolls up tiers with the SAME arithmetic (no Simpson mean-of-pcts trap).
20
+ */
21
+ export function tally(leaves) {
22
+ let done = 0;
23
+ let active = 0;
24
+ let dropped = 0;
25
+ for (const l of leaves) {
26
+ if (l.bucket === 'DONE') {
27
+ done++;
28
+ active++;
29
+ }
30
+ else if (l.bucket === 'TO-DO' || l.bucket === 'AWAITED') {
31
+ active++;
32
+ }
33
+ else {
34
+ dropped++; // DROPPED — shown, excluded from %
35
+ }
36
+ }
37
+ return { done, active, dropped };
38
+ }
16
39
  /**
17
40
  * Build the WP forest and roll leaf buckets up. A WP's transitive NON-WP descendants are its leaves;
18
41
  * a nested WP is a sub-node, not a leaf, so its leaves count once at every ancestor (SUM, not mean).
@@ -29,24 +52,6 @@ export function computeWpTree(state, config) {
29
52
  }
30
53
  for (const list of childrenOf.values())
31
54
  list.sort((a, b) => a.id.localeCompare(b.id));
32
- const tally = (leaves) => {
33
- let done = 0;
34
- let active = 0;
35
- let dropped = 0;
36
- for (const l of leaves) {
37
- if (l.bucket === 'DONE') {
38
- done++;
39
- active++;
40
- }
41
- else if (l.bucket === 'TO-DO' || l.bucket === 'AWAITED') {
42
- active++;
43
- }
44
- else {
45
- dropped++; // DROPPED — shown, excluded from %
46
- }
47
- }
48
- return { done, active, dropped };
49
- };
50
55
  // Collect every NON-WP leaf descendant of `node`, but STOP at a nested sub-WP boundary (those leaves
51
56
  // belong to the sub-WP's own node). A non-WP container (e.g. a feature with chore children) is descended
52
57
  // through — it is not itself a leaf. This is the set "directly attached" at `node`.