@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.
Files changed (70) hide show
  1. package/dist/cli/index.d.ts.map +1 -1
  2. package/dist/cli/index.js +131 -2
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/events/types.d.ts +1 -1
  5. package/dist/events/types.d.ts.map +1 -1
  6. package/dist/events/types.js +11 -0
  7. package/dist/events/types.js.map +1 -1
  8. package/dist/ingest/contract.d.ts +3 -3
  9. package/dist/ingest/contract.d.ts.map +1 -1
  10. package/dist/ingest/contract.js +33 -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 +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 +16 -0
  17. package/dist/ingest/map.js.map +1 -1
  18. package/dist/mcp/server.d.ts +79 -1
  19. package/dist/mcp/server.d.ts.map +1 -1
  20. package/dist/mcp/server.js +72 -1
  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/spec-amend.d.ts +59 -0
  31. package/dist/model/spec-amend.d.ts.map +1 -0
  32. package/dist/model/spec-amend.js +56 -0
  33. package/dist/model/spec-amend.js.map +1 -0
  34. package/dist/read/contract.d.ts +135 -4
  35. package/dist/read/contract.d.ts.map +1 -1
  36. package/dist/read/contract.js +215 -3
  37. package/dist/read/contract.js.map +1 -1
  38. package/dist/read/index.d.ts +2 -1
  39. package/dist/read/index.d.ts.map +1 -1
  40. package/dist/read/index.js +2 -0
  41. package/dist/read/index.js.map +1 -1
  42. package/dist/read/scope-validate.d.ts +44 -0
  43. package/dist/read/scope-validate.d.ts.map +1 -0
  44. package/dist/read/scope-validate.js +204 -0
  45. package/dist/read/scope-validate.js.map +1 -0
  46. package/dist/report/build.d.ts +1 -1
  47. package/dist/report/build.d.ts.map +1 -1
  48. package/dist/report/build.js +5 -4
  49. package/dist/report/build.js.map +1 -1
  50. package/dist/report/rollup.d.ts +1 -1
  51. package/dist/report/rollup.d.ts.map +1 -1
  52. package/dist/report/rollup.js +3 -2
  53. package/dist/report/rollup.js.map +1 -1
  54. package/dist/report/status-by-level.d.ts +1 -1
  55. package/dist/report/status-by-level.d.ts.map +1 -1
  56. package/dist/report/status-by-level.js +3 -1
  57. package/dist/report/status-by-level.js.map +1 -1
  58. package/dist/state/fold.d.ts +8 -0
  59. package/dist/state/fold.d.ts.map +1 -1
  60. package/dist/state/fold.js +32 -0
  61. package/dist/state/fold.js.map +1 -1
  62. package/dist/state/snapshot.d.ts +2 -0
  63. package/dist/state/snapshot.d.ts.map +1 -1
  64. package/dist/state/snapshot.js +2 -0
  65. package/dist/state/snapshot.js.map +1 -1
  66. package/dist/track.d.ts +24 -1
  67. package/dist/track.d.ts.map +1 -1
  68. package/dist/track.js +59 -17
  69. package/dist/track.js.map +1 -1
  70. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/ingest/map.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,eAAe,CAAA;AAEtB,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,yEAAyE;IACzE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1C,4DAA4D;IAC5D,IAAI,EAAE,SAAS,OAAO,EAAE,CAAA;IACxB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID,+FAA+F;AAC/F,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAkB,IAAI,iBAAgB;CACvC;AAwED,4GAA4G;AAC5G,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,aAAa,CA+FzD"}
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/ingest/map.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,eAAe,CAAA;AAEtB,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,yEAAyE;IACzE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1C,4DAA4D;IAC5D,IAAI,EAAE,SAAS,OAAO,EAAE,CAAA;IACxB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID,+FAA+F;AAC/F,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAkB,IAAI,iBAAgB;CACvC;AA2ED,4GAA4G;AAC5G,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,aAAa,CA2GzD"}
@@ -35,6 +35,10 @@ function checkType(kind, field, spec, v) {
35
35
  if (!isPlainObject(v))
36
36
  bad('an object');
37
37
  return;
38
+ case 'object[]':
39
+ if (!Array.isArray(v) || !v.every((x) => isPlainObject(x)))
40
+ bad('an object[]');
41
+ return;
38
42
  }
39
43
  }
40
44
  /** Validate envelope + payload against the schema. Throws IngestError on any violation. */
@@ -171,6 +175,18 @@ export function mapWorkEvent(ev) {
171
175
  // channel context, and clientToken is threaded via withClientToken (not an arg). Scope §B(c).
172
176
  args = [{ ...p }];
173
177
  break;
178
+ case 'scope.declare':
179
+ // declareScope(itemId, scope, clientToken?) — the `scope` object's {allowed?,forbidden?,conditional?}
180
+ // shape is re-asserted in the facade (assertScopeDecl); clientToken is threaded via withClientToken
181
+ // (not an arg). Scope §B(a).
182
+ args = [p['itemId'], p['scope']];
183
+ break;
184
+ case 'item.spec-amend':
185
+ // amendSpec(itemId, amend, clientToken?) — the validated payload IS the amendment shape; its JsonPatch
186
+ // + baseHash/resultHash are re-asserted (assertSpecAmend) and recorded VERBATIM in the facade.
187
+ // clientToken is threaded via withClientToken (not an arg). M5 (canevas).
188
+ args = [p['itemId'], { ...p }];
189
+ break;
174
190
  }
175
191
  return { kind, method, settles, payload: p, args, ...(clientToken !== undefined ? { clientToken } : {}) };
176
192
  }
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/ingest/map.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,wGAAwG;AACxG,uGAAuG;AACvG,sGAAsG;AAEtG,OAAO,EACL,wBAAwB,EACxB,iBAAiB,GAKlB,MAAM,eAAe,CAAA;AAetB,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAE5B,+FAA+F;AAC/F,MAAM,OAAO,WAAY,SAAQ,KAAK;IAClB,IAAI,GAAG,aAAa,CAAA;CACvC;AAED,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,IAAmB,EAAE,KAAa,EAAE,IAAe,EAAE,CAAU;IAChF,MAAM,GAAG,GAAG,CAAC,IAAY,EAAS,EAAE;QAClC,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,KAAK,cAAc,IAAI,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAA;IACD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,GAAG,CAAC,UAAU,CAAC,CAAA;YAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAW,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,KAAK,oBAAoB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YACvG,CAAC;YACD,OAAM;QACR,KAAK,QAAQ;YACX,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;YACxE,OAAM;QACR,KAAK,UAAU;YACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAAE,GAAG,CAAC,YAAY,CAAC,CAAA;YAClF,OAAM;QACR,KAAK,QAAQ;YACX,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,WAAW,CAAC,CAAA;YACvC,OAAM;IACV,CAAC;AACH,CAAC;AAED,2FAA2F;AAC3F,SAAS,QAAQ,CAAC,EAAa;IAK7B,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,6BAA6B,CAAC,CAAA;IAC5E,uGAAuG;IACvG,2CAA2C;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,IAAI,CAAE,wBAA8C,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,WAAW,CAAC,mCAAmC,GAAG,eAAe,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpH,CAAC;IACH,CAAC;IACD,IAAK,EAAsB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,WAAW,CAAC,2DAA2D,MAAM,CAAE,EAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACxH,CAAC;IACD,MAAM,WAAW,GAAI,EAAgC,CAAC,WAAW,CAAA;IACjE,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC;QACxI,MAAM,IAAI,WAAW,CAAC,qDAAqD,gBAAgB,QAAQ,CAAC,CAAA;IACtG,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAA;IACpB,MAAM,MAAM,GAAI,iBAA+E,CAAC,IAAI,CAAC,CAAA;IACrG,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,WAAW,CAAC,2BAA2B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3F,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAA;IAC1B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAA;IAExF,gEAAgE;IAChE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,4BAA4B,GAAG,GAAG,CAAC,CAAA;IAC/F,CAAC;IACD,mCAAmC;IACnC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,6BAA6B,KAAK,GAAG,CAAC,CAAA;YACtF,SAAQ;QACV,CAAC;QACD,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAiC,EAAE,CAAA;AAC1E,CAAC;AAED,4GAA4G;AAC5G,MAAM,UAAU,YAAY,CAAC,EAAa;IACxC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACtD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACnD,MAAM,GAAG,GAAG,CAAC,CAAS,EAA2B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAE7F,IAAI,IAAwB,CAAA;IAC5B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,wFAAwF;YACxF,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YACjB,MAAK;QACP,KAAK,eAAe;YAClB,wFAAwF;YACxF,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;YACnC,MAAK;QACP,KAAK,WAAW;YACd,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YAC7B,MAAK;QACP,KAAK,cAAc;YACjB,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YAC7B,MAAK;QACP,KAAK,iBAAiB;YACpB,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YACjB,MAAK;QACP,KAAK,kBAAkB;YACrB,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;YACtC,MAAK;QACP,KAAK,uBAAuB;YAC1B,gGAAgG;YAChG,gGAAgG;YAChG,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;YACvC,MAAK;QACP,KAAK,kBAAkB;YACrB,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YACjC,MAAK;QACP,KAAK,sBAAsB;YACzB,gGAAgG;YAChG,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC9D,MAAK;QACP,KAAK,sBAAsB;YACzB,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;YACpC,MAAK;QACP,KAAK,iBAAiB;YACpB,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;YAClD,MAAK;QACP,KAAK,gBAAgB;YACnB,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YAC1G,MAAK;QACP,KAAK,kBAAkB;YACrB,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;YACtC,MAAK;QACP,KAAK,iBAAiB;YACpB,IAAI,GAAG;gBACL,CAAC,CAAC,QAAQ,CAAC;gBACX;oBACE,iBAAiB,EAAE,CAAC,CAAC,mBAAmB,CAAC;oBACzC,eAAe,EAAE,CAAC,CAAC,iBAAiB,CAAC;oBACrC,kCAAkC,EAAE,CAAC,CAAC,oCAAoC,CAAC;oBAC3E,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;iBACtB;aACF,CAAA;YACD,MAAK;QACP,KAAK,eAAe;YAClB,gGAAgG;YAChG,sGAAsG;YACtG,IAAI,GAAG;gBACL;oBACE,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC;oBACvB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACf,GAAG,GAAG,CAAC,KAAK,CAAC;oBACb,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;oBACzB,GAAG,GAAG,CAAC,gBAAgB,CAAC;oBACxB,GAAG,GAAG,CAAC,OAAO,CAAC;oBACf,GAAG,GAAG,CAAC,OAAO,CAAC;oBACf,GAAG,GAAG,CAAC,eAAe,CAAC;iBACxB;aACF,CAAA;YACD,MAAK;QACP,KAAK,iBAAiB;YACpB,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;YACvB,MAAK;QACP,KAAK,0BAA0B;YAC7B,oGAAoG;YACpG,6DAA6D;YAC7D,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;YAC3B,MAAK;QACP,KAAK,oBAAoB;YACvB,mGAAmG;YACnG,gGAAgG;YAChG,8FAA8F;YAC9F,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YACjB,MAAK;IACT,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AAC3G,CAAC"}
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/ingest/map.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@ export declare const READ_TOOLS: readonly [{
38
38
  };
39
39
  readonly role: {
40
40
  readonly type: "string";
41
- readonly enum: readonly ["workpackage"];
41
+ readonly enum: readonly ["workpackage", "spec-phase"];
42
42
  };
43
43
  readonly workspace: {
44
44
  readonly type: "string";
@@ -133,6 +133,84 @@ export declare const READ_TOOLS: readonly [{
133
133
  };
134
134
  };
135
135
  };
136
+ }, {
137
+ readonly name: "track_scope_validate";
138
+ readonly description: "Scope §B(b) — PURE, read-only, fail-closed, ADVISORY scope validation, as JSON {status:pass|fail|stale|missing, findings[], perWp[], scopeRevisionHash?}. NEVER glob-matches (string-level set logic), NEVER ingests, NEVER a commit gate. Flags scope-undeclared / incoherent (allowed∩forbidden) / illegal-nesting / claim-out-of-phase, and surfaces the latest ingested VerificationRun verdict per WP (read, never recomputed). If `content`+`locator` are supplied, requireFresh runs FIRST (a stale/altered/not-imported sidecar ⇒ status:stale, no partial verdict). Optional opt-in inferDeliveredOutOfScope.";
139
+ readonly inputSchema: {
140
+ readonly type: "object";
141
+ readonly properties: {
142
+ readonly workspace: {
143
+ readonly type: "string";
144
+ readonly description: "The workspace whose WP/spec-phase scope is validated.";
145
+ };
146
+ readonly baselineCommit: {
147
+ readonly type: "string";
148
+ readonly description: "Commit AWAITED/realization-active are evaluated against.";
149
+ };
150
+ readonly content: {
151
+ readonly type: "string";
152
+ readonly description: "Live BRANCH.md content for the fail-closed freshness gate (with locator).";
153
+ };
154
+ readonly locator: {
155
+ readonly type: "string";
156
+ readonly description: "BRANCH.md locator for the fail-closed freshness gate (with content).";
157
+ };
158
+ readonly claimedItemId: {
159
+ readonly type: "string";
160
+ readonly description: "Optional claimed item id — flagged if not a descendant of a declared phase.";
161
+ };
162
+ readonly inferDeliveredOutOfScope: {
163
+ readonly type: "boolean";
164
+ readonly description: "Opt-in: flag a done WP whose latest verification is a violation (a read flag).";
165
+ };
166
+ };
167
+ readonly required: readonly ["workspace", "baselineCommit"];
168
+ };
169
+ }, {
170
+ readonly name: "track_cursor";
171
+ readonly description: "M5 (canevas) — a cheap change cursor over the log tail, as JSON {head, count}. `head` = the log-tail event contentHash (null when empty); `count` = the event count. O(tail). The host's liveness primitive: poll this, re-read track_canevas / track_amendment_trace when it moves. Read-only.";
172
+ readonly inputSchema: {
173
+ readonly type: "object";
174
+ readonly properties: {};
175
+ };
176
+ }, {
177
+ readonly name: "track_canevas";
178
+ readonly description: "M5 (canevas) — the materialized canevas for ONE workspace, as JSON {workspace, report, prov, affordances, dossier?}. report = the bucketed report + WP rollup forest (workspace-scoped); prov = per-aggregate latest-write provenance lineage {origin:human|machine, …}; affordances = per-aggregate legal next WorkEvent kinds (open-action affordances). With `decisionId`, also includes the full decision dossier. PURE (no clock, no socket — the host owns liveness).";
179
+ readonly inputSchema: {
180
+ readonly type: "object";
181
+ readonly properties: {
182
+ readonly workspace: {
183
+ readonly type: "string";
184
+ readonly description: "The workspace to materialize the canevas for.";
185
+ };
186
+ readonly baselineCommit: {
187
+ readonly type: "string";
188
+ readonly description: "Commit AWAITED/acceptance are evaluated against.";
189
+ };
190
+ readonly requireAccepted: {
191
+ readonly type: "boolean";
192
+ readonly description: "A done leaf counts as DONE only if acceptance=pass.";
193
+ };
194
+ readonly decisionId: {
195
+ readonly type: "string";
196
+ readonly description: "Optional decision id — includes its full dossier (context/options/qa/outcome/artifacts).";
197
+ };
198
+ };
199
+ readonly required: readonly ["workspace", "baselineCommit"];
200
+ };
201
+ }, {
202
+ readonly name: "track_amendment_trace";
203
+ readonly description: "M5 (canevas) — the human/machine diff for ONE aggregate, as JSON [{seq, at, by, kind, prov, origin, summary?, patchRef?, proposalRef?}]. An ordered (by seq), prov-tagged projection over the aggregate's spec.amended / dossier.revised / decision.artifact-added / decision.outcome events. `origin` derives PURELY from prov.proposed (true=machine, false=human). An AI proposal + a human acceptance both appear — the machine origin is never laundered. PURE replay.";
204
+ readonly inputSchema: {
205
+ readonly type: "object";
206
+ readonly properties: {
207
+ readonly aggregateId: {
208
+ readonly type: "string";
209
+ readonly description: "The item/decision aggregate id to trace.";
210
+ };
211
+ };
212
+ readonly required: readonly ["aggregateId"];
213
+ };
136
214
  }, {
137
215
  readonly name: "track_workspace_activity";
138
216
  readonly 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).";
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAGlE,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAYjD,oGAAoG;AACpG,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8Fb,CAAA;AA0CV;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CA+DR;AAgBD,2GAA2G;AAC3G,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,MAAM,CA2C5E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAGlE,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAYjD,oGAAoG;AACpG,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0Ib,CAAA;AA0CV;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAkGR;AAgBD,2GAA2G;AAC3G,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,MAAM,CA2C5E"}
@@ -14,7 +14,7 @@ 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.
16
16
  const KINDS = ['feature', 'bug', 'chore'];
17
- const ROLES = ['workpackage']; // Workpackages §2 — container marker filter
17
+ const ROLES = ['workpackage', 'spec-phase']; // Workpackages §2 / Scope §B(a) — 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'];
@@ -100,6 +100,50 @@ export const READ_TOOLS = [
100
100
  properties: { wpRef: { type: 'string', description: 'Filter to runs for this WP/phase item id.' } },
101
101
  },
102
102
  },
103
+ {
104
+ name: 'track_scope_validate',
105
+ description: 'Scope §B(b) — PURE, read-only, fail-closed, ADVISORY scope validation, as JSON {status:pass|fail|stale|missing, findings[], perWp[], scopeRevisionHash?}. NEVER glob-matches (string-level set logic), NEVER ingests, NEVER a commit gate. Flags scope-undeclared / incoherent (allowed∩forbidden) / illegal-nesting / claim-out-of-phase, and surfaces the latest ingested VerificationRun verdict per WP (read, never recomputed). If `content`+`locator` are supplied, requireFresh runs FIRST (a stale/altered/not-imported sidecar ⇒ status:stale, no partial verdict). Optional opt-in inferDeliveredOutOfScope.',
106
+ inputSchema: {
107
+ type: 'object',
108
+ properties: {
109
+ workspace: { type: 'string', description: 'The workspace whose WP/spec-phase scope is validated.' },
110
+ baselineCommit: { type: 'string', description: 'Commit AWAITED/realization-active are evaluated against.' },
111
+ content: { type: 'string', description: 'Live BRANCH.md content for the fail-closed freshness gate (with locator).' },
112
+ locator: { type: 'string', description: 'BRANCH.md locator for the fail-closed freshness gate (with content).' },
113
+ claimedItemId: { type: 'string', description: 'Optional claimed item id — flagged if not a descendant of a declared phase.' },
114
+ inferDeliveredOutOfScope: { type: 'boolean', description: 'Opt-in: flag a done WP whose latest verification is a violation (a read flag).' },
115
+ },
116
+ required: ['workspace', 'baselineCommit'],
117
+ },
118
+ },
119
+ {
120
+ name: 'track_cursor',
121
+ description: 'M5 (canevas) — a cheap change cursor over the log tail, as JSON {head, count}. `head` = the log-tail event contentHash (null when empty); `count` = the event count. O(tail). The host\'s liveness primitive: poll this, re-read track_canevas / track_amendment_trace when it moves. Read-only.',
122
+ inputSchema: { type: 'object', properties: {} },
123
+ },
124
+ {
125
+ name: 'track_canevas',
126
+ description: 'M5 (canevas) — the materialized canevas for ONE workspace, as JSON {workspace, report, prov, affordances, dossier?}. report = the bucketed report + WP rollup forest (workspace-scoped); prov = per-aggregate latest-write provenance lineage {origin:human|machine, …}; affordances = per-aggregate legal next WorkEvent kinds (open-action affordances). With `decisionId`, also includes the full decision dossier. PURE (no clock, no socket — the host owns liveness).',
127
+ inputSchema: {
128
+ type: 'object',
129
+ properties: {
130
+ workspace: { type: 'string', description: 'The workspace to materialize the canevas for.' },
131
+ baselineCommit: { type: 'string', description: 'Commit AWAITED/acceptance are evaluated against.' },
132
+ requireAccepted: { type: 'boolean', description: 'A done leaf counts as DONE only if acceptance=pass.' },
133
+ decisionId: { type: 'string', description: 'Optional decision id — includes its full dossier (context/options/qa/outcome/artifacts).' },
134
+ },
135
+ required: ['workspace', 'baselineCommit'],
136
+ },
137
+ },
138
+ {
139
+ name: 'track_amendment_trace',
140
+ description: 'M5 (canevas) — the human/machine diff for ONE aggregate, as JSON [{seq, at, by, kind, prov, origin, summary?, patchRef?, proposalRef?}]. An ordered (by seq), prov-tagged projection over the aggregate\'s spec.amended / dossier.revised / decision.artifact-added / decision.outcome events. `origin` derives PURELY from prov.proposed (true=machine, false=human). An AI proposal + a human acceptance both appear — the machine origin is never laundered. PURE replay.',
141
+ inputSchema: {
142
+ type: 'object',
143
+ properties: { aggregateId: { type: 'string', description: 'The item/decision aggregate id to trace.' } },
144
+ required: ['aggregateId'],
145
+ },
146
+ },
103
147
  {
104
148
  name: 'track_workspace_activity',
105
149
  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).',
@@ -201,6 +245,33 @@ export function dispatchReadTool(reader, name, args) {
201
245
  const wpRef = optStr(args, 'wpRef');
202
246
  return JSON.stringify(reader.verificationRuns(wpRef), null, 2);
203
247
  }
248
+ case 'track_scope_validate': {
249
+ const content = optStr(args, 'content');
250
+ const locator = optStr(args, 'locator');
251
+ const claimedItemId = optStr(args, 'claimedItemId');
252
+ const inferDeliveredOutOfScope = optBool(args, 'inferDeliveredOutOfScope');
253
+ return JSON.stringify(reader.scopeValidate({
254
+ workspace: reqStr(args, 'workspace'),
255
+ baselineCommit: reqStr(args, 'baselineCommit'),
256
+ ...(content !== undefined ? { content } : {}),
257
+ ...(locator !== undefined ? { locator } : {}),
258
+ ...(claimedItemId !== undefined ? { claimedItemId } : {}),
259
+ ...(inferDeliveredOutOfScope !== undefined ? { inferDeliveredOutOfScope } : {}),
260
+ }), null, 2);
261
+ }
262
+ case 'track_cursor':
263
+ return JSON.stringify(reader.cursor(), null, 2);
264
+ case 'track_canevas': {
265
+ const requireAccepted = optBool(args, 'requireAccepted');
266
+ const decisionId = optStr(args, 'decisionId');
267
+ return JSON.stringify(reader.canevas(reqStr(args, 'workspace'), {
268
+ baselineCommit: reqStr(args, 'baselineCommit'),
269
+ ...(requireAccepted !== undefined ? { requireAccepted } : {}),
270
+ ...(decisionId !== undefined ? { decisionId } : {}),
271
+ }), null, 2);
272
+ }
273
+ case 'track_amendment_trace':
274
+ return JSON.stringify(reader.amendmentTrace(reqStr(args, 'aggregateId')), null, 2);
204
275
  case 'track_validate':
205
276
  return JSON.stringify(reader.validate(), null, 2);
206
277
  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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"}
@@ -1,7 +1,8 @@
1
- export { DomainError, assertRealizationTransition, assertSpecTransition, type BlockerId, type Disposition, type Gate, type ItemCreatedPayload, type ItemId, type ItemKind, type ItemState, type Link, type Realization, type RealizationCause, type SpecStatus, } from './item.js';
1
+ export { DomainError, assertRealizationTransition, assertRoleNesting, assertScopeDecl, assertSpecTransition, isRoleContainer, type BlockerId, type Disposition, type Gate, type ItemCreatedPayload, type ItemId, type ItemKind, type ItemRole, type ItemState, type Link, type Realization, type RealizationCause, type ScopeDecl, type SpecStatus, } from './item.js';
2
2
  export { assertManualResolve, type BlockerKind, type BlockerOpenedPayload, type BlockerScope, type BlockerState, type ResolutionRule, } from './blocker.js';
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
6
  export { assertVerificationRun, VERDICTS, type VerificationRecordedPayload, type VerificationRun, type Verdict, } from './verification.js';
7
+ export { assertSpecAmend, type JsonPatch, type JsonPatchOp, type SpecAmendment, type SpecAmendPayload, } from './spec-amend.js';
7
8
  //# 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;AAEtB,OAAO,EACL,qBAAqB,EACrB,QAAQ,EACR,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,OAAO,GACb,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,IAAI,EACT,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,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;AAE1B,OAAO,EACL,eAAe,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAA"}
@@ -1,9 +1,11 @@
1
1
  // Domain model: Item, Decision, Blocker, AcceptanceCriterion, PriorityAssessment (SPEC §2).
2
- export { DomainError, assertRealizationTransition, assertSpecTransition, } from './item.js';
2
+ export { DomainError, assertRealizationTransition, assertRoleNesting, assertScopeDecl, assertSpecTransition, isRoleContainer, } from './item.js';
3
3
  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
7
  // Scope §B(c) — path-scope verification evidence (the sibling of TestRun).
8
8
  export { assertVerificationRun, VERDICTS, } from './verification.js';
9
+ // M5 (canevas) — the live spec-amendment write kind (item.spec-amend → spec.amended).
10
+ export { assertSpecAmend, } from './spec-amend.js';
9
11
  //# 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;AACtB,2EAA2E;AAC3E,OAAO,EACL,qBAAqB,EACrB,QAAQ,GAIT,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,eAAe,GAchB,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;AAC1B,sFAAsF;AACtF,OAAO,EACL,eAAe,GAKhB,MAAM,iBAAiB,CAAA"}
@@ -4,12 +4,24 @@ export type ItemId = Ulid;
4
4
  export type BlockerId = Ulid;
5
5
  export type ItemKind = 'feature' | 'bug' | 'chore' | 'decision';
6
6
  /**
7
- * An optional, additive container marker (Workpackages design §2). A workpackage is `kind:'chore'`
8
- * + `role:'workpackage'` — WP-ness comes ONLY from this field, never inferred from kind, children, a
9
- * `wp:` sourceKey, or a link. Orthogonal/optional like `accountable`/`engagementRef` zero hash
10
- * change, explicit, queryable, rename-stable. (A durable public `code?` label is deferred.)
7
+ * An optional, additive container marker (Workpackages design §2; Scope §B(a)). A workpackage is
8
+ * `kind:'chore'` + `role:'workpackage'` — WP-ness comes ONLY from this field, never inferred from kind,
9
+ * children, a `wp:` sourceKey, or a link. A `'spec-phase'` is a finer container nested under a WP or
10
+ * spec-phase (labels derive from tree position; the rollup descends through it like a WP). Both are
11
+ * orthogonal/optional like `accountable`/`engagementRef` ⇒ zero hash change, explicit, queryable,
12
+ * rename-stable. (A durable public `code?` label is deferred.)
11
13
  */
12
- export type ItemRole = 'workpackage';
14
+ export type ItemRole = 'workpackage' | 'spec-phase';
15
+ /**
16
+ * Scope §B(a) — a declarative scope on a WP/spec-phase: INERT path globs (track stores the strings,
17
+ * NEVER matches them — the harness reads them to compute the path verdict). Additive/optional on
18
+ * ItemState + ItemCreatedPayload; set/replaced by a `scope.declare` WorkEvent → `scope.declared` event.
19
+ */
20
+ export interface ScopeDecl {
21
+ allowed?: string[];
22
+ forbidden?: string[];
23
+ conditional?: string[];
24
+ }
13
25
  export type SpecStatus = 'to-specify' | 'specified';
14
26
  export type Realization = 'to-do' | 'in-progress' | 'done' | 'cancelled' | 'rejected';
15
27
  export type Gate = 'orientation' | 'commitment';
@@ -33,6 +45,7 @@ export interface ItemState {
33
45
  priority?: PriorityAssessment;
34
46
  parentId?: ItemId;
35
47
  role?: ItemRole;
48
+ scope?: ScopeDecl;
36
49
  sourceKey?: string;
37
50
  body?: string;
38
51
  links?: Link[];
@@ -40,12 +53,21 @@ export interface ItemState {
40
53
  responsible?: ActorId[];
41
54
  engagementRef?: string;
42
55
  }
56
+ /**
57
+ * Scope §B(a) — is this item a CONTAINER node (a `workpackage` or `spec-phase`), i.e. not a flat leaf?
58
+ * The rollup descends through both and excludes both from leaf counts / the flat buckets. Centralized so
59
+ * rollup/status/report/read all share ONE definition of "container vs leaf".
60
+ */
61
+ export declare function isRoleContainer(item: {
62
+ role?: ItemRole;
63
+ }): boolean;
43
64
  export interface ItemCreatedPayload {
44
65
  kind: ItemKind;
45
66
  title: string;
46
67
  workspace: string;
47
68
  parentId?: ItemId;
48
69
  role?: ItemRole;
70
+ scope?: ScopeDecl;
49
71
  sourceKey?: string;
50
72
  body?: string;
51
73
  links?: Link[];
@@ -57,6 +79,22 @@ export interface ItemCreatedPayload {
57
79
  export declare class DomainError extends Error {
58
80
  name: string;
59
81
  }
82
+ /**
83
+ * Scope §B(a) — the role nesting invariant, checked by createItem/reparentItem BEFORE any append:
84
+ * - a `'workpackage'` nests only under a `'workpackage'`;
85
+ * - a `'spec-phase'` nests only under a `'workpackage'` or `'spec-phase'`;
86
+ * - a non-role leaf nests under anything (unchanged back-compat).
87
+ * `childRole` is the moving/created item's role; `parentRole` the prospective parent's role (undefined
88
+ * when the parent has no role, i.e. a plain leaf/feature container). Throws DomainError on violation.
89
+ * `childId`/`parentId` are only for the message.
90
+ */
91
+ export declare function assertRoleNesting(childRole: ItemRole | undefined, parentRole: ItemRole | undefined, childId: ItemId, parentId: ItemId): void;
92
+ /**
93
+ * Scope §B(a) — fail-closed validation of a ScopeDecl payload (mirrors assertVerificationRun). The
94
+ * envelope schema checks each field is a `string[]`; this re-asserts that AND normalizes (drops absent
95
+ * optionals so the recorded shape is minimal + hash-stable). track stores the strings, NEVER matches them.
96
+ */
97
+ export declare function assertScopeDecl(input: unknown): ScopeDecl;
60
98
  export declare function assertSpecTransition(item: ItemState, to: SpecStatus): void;
61
99
  export declare function assertRealizationTransition(item: {
62
100
  id: ItemId;
@@ -1 +1 @@
1
- {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/model/item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD,MAAM,MAAM,MAAM,GAAG,IAAI,CAAA;AACzB,MAAM,MAAM,SAAS,GAAG,IAAI,CAAA;AAE5B,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAA;AAC/D;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAA;AACpC,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,CAAA;AACnD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;AAGrF,MAAM,MAAM,IAAI,GAAG,aAAa,GAAG,YAAY,CAAA;AAC/C,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,WAAW,CAAA;AAEjF,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,6FAA6F;AAC7F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,UAAU,GAAG,KAAK,CAAA;IAC9B,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IACtC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;IAId,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,4EAA4E;AAC5E,qBAAa,WAAY,SAAQ,KAAK;IAC3B,IAAI,SAAgB;CAC9B;AAkBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,CAO1E;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,EAAE,qDAAqD;AACrG,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,OAAO,GAChB,IAAI,CAiBN"}
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/model/item.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,60 @@
1
+ /**
2
+ * Scope §B(a) — is this item a CONTAINER node (a `workpackage` or `spec-phase`), i.e. not a flat leaf?
3
+ * The rollup descends through both and excludes both from leaf counts / the flat buckets. Centralized so
4
+ * rollup/status/report/read all share ONE definition of "container vs leaf".
5
+ */
6
+ export function isRoleContainer(item) {
7
+ return item.role === 'workpackage' || item.role === 'spec-phase';
8
+ }
1
9
  /** A rejected domain command (illegal transition, unknown aggregate, …). */
2
10
  export class DomainError extends Error {
3
11
  name = 'DomainError';
4
12
  }
13
+ /**
14
+ * Scope §B(a) — the role nesting invariant, checked by createItem/reparentItem BEFORE any append:
15
+ * - a `'workpackage'` nests only under a `'workpackage'`;
16
+ * - a `'spec-phase'` nests only under a `'workpackage'` or `'spec-phase'`;
17
+ * - a non-role leaf nests under anything (unchanged back-compat).
18
+ * `childRole` is the moving/created item's role; `parentRole` the prospective parent's role (undefined
19
+ * when the parent has no role, i.e. a plain leaf/feature container). Throws DomainError on violation.
20
+ * `childId`/`parentId` are only for the message.
21
+ */
22
+ export function assertRoleNesting(childRole, parentRole, childId, parentId) {
23
+ if (childRole === 'workpackage' && parentRole !== 'workpackage') {
24
+ throw new DomainError(`cannot nest workpackage ${childId} under ${parentId}: a workpackage may only nest under a workpackage (Scope §B(a))`);
25
+ }
26
+ if (childRole === 'spec-phase' && parentRole !== 'workpackage' && parentRole !== 'spec-phase') {
27
+ throw new DomainError(`cannot nest spec-phase ${childId} under ${parentId}: a spec-phase may only nest under a workpackage or spec-phase (Scope §B(a))`);
28
+ }
29
+ }
30
+ /**
31
+ * Scope §B(a) — fail-closed validation of a ScopeDecl payload (mirrors assertVerificationRun). The
32
+ * envelope schema checks each field is a `string[]`; this re-asserts that AND normalizes (drops absent
33
+ * optionals so the recorded shape is minimal + hash-stable). track stores the strings, NEVER matches them.
34
+ */
35
+ export function assertScopeDecl(input) {
36
+ if (typeof input !== 'object' || input === null || Array.isArray(input)) {
37
+ throw new DomainError('scope.declare: scope must be an object');
38
+ }
39
+ const a = input;
40
+ const list = (key) => {
41
+ const v = a[key];
42
+ if (v === undefined)
43
+ return undefined;
44
+ if (!Array.isArray(v) || !v.every((x) => typeof x === 'string')) {
45
+ throw new DomainError(`scope.declare: ${key} must be a string[]`);
46
+ }
47
+ return v;
48
+ };
49
+ const allowed = list('allowed');
50
+ const forbidden = list('forbidden');
51
+ const conditional = list('conditional');
52
+ return {
53
+ ...(allowed !== undefined ? { allowed } : {}),
54
+ ...(forbidden !== undefined ? { forbidden } : {}),
55
+ ...(conditional !== undefined ? { conditional } : {}),
56
+ };
57
+ }
5
58
  // Spec axis is monotone: `to-specify → specified` once; reverse rejected (SPEC §2.2).
6
59
  const SPEC_TRANSITIONS = {
7
60
  'to-specify': ['specified'],
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/model/item.ts"],"names":[],"mappings":"AAmEA,4EAA4E;AAC5E,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,GAAG,aAAa,CAAA;CAC9B;AAED,sFAAsF;AACtF,MAAM,gBAAgB,GAAkD;IACtE,YAAY,EAAE,CAAC,WAAW,CAAC;IAC3B,SAAS,EAAE,EAAE;CACd,CAAA;AAED,6FAA6F;AAC7F,+EAA+E;AAC/E,MAAM,uBAAuB,GAAoD;IAC/E,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;IACrC,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IACpC,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,EAAE;CACb,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAe,EAAE,EAAc;IAClE,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,WAAW,CAAC,wBAAwB,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5E,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,WAAW,CAAC,2BAA2B,IAAI,CAAC,UAAU,OAAO,EAAE,UAAU,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;IAChG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,IAA8C,EAAE,qDAAqD;AACrG,EAAe,EACf,QAAiB;IAEjB,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,WAAW,CAAC,2DAA2D,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QAC9F,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;YACvE,MAAM,IAAI,WAAW,CACnB,kCAAkC,IAAI,CAAC,WAAW,sBAAsB,IAAI,CAAC,EAAE,GAAG,CACnF,CAAA;QACH,CAAC;QACD,OAAM;IACR,CAAC;IACD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,WAAW,CACnB,kCAAkC,IAAI,CAAC,WAAW,OAAO,EAAE,UAAU,IAAI,CAAC,EAAE,GAAG,CAChF,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/model/item.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { type ItemId } from './item.js';
2
+ /**
3
+ * An RFC-6902-shaped JSON Patch, recorded VERBATIM. track does NOT apply it, does NOT validate `op`
4
+ * against the document, and does NOT recompute `baseHash`→`resultHash`. It is an opaque, hash-covered
5
+ * payload member: a tampered patch changes the recorded amendment, which is exactly the audit value.
6
+ */
7
+ export interface JsonPatchOp {
8
+ op: 'add' | 'remove' | 'replace' | 'move' | 'copy' | 'test';
9
+ path: string;
10
+ value?: unknown;
11
+ from?: string;
12
+ }
13
+ export type JsonPatch = JsonPatchOp[];
14
+ /** The `item.spec-amend` payload / `spec.amended` event payload (M5 canevas §3). */
15
+ export interface SpecAmendPayload {
16
+ itemId: ItemId;
17
+ /** The decision dossier this amendment was negotiated under (optional). */
18
+ decisionId?: ItemId;
19
+ /** A pointer to the host LiveDocument the patch targets (optional). */
20
+ liveDocRef?: string;
21
+ /** Opaque hash of the spec document BEFORE the patch (integrity tag; never recomputed). */
22
+ baseHash: string;
23
+ /** The JsonPatch, recorded verbatim (track never applies it). */
24
+ patch: JsonPatch;
25
+ /** Opaque hash of the spec document AFTER the patch (integrity tag; never recomputed). */
26
+ resultHash: string;
27
+ /**
28
+ * A reference to an AI proposal this amendment accepts/derives from. When a human/signed amend carries
29
+ * a `proposalRef`, it records ACCEPTANCE of that proposal WITHOUT laundering the machine origin: BOTH
30
+ * the machine-proposed amend (prov.proposed:true) and the human acceptance stay in the trace.
31
+ */
32
+ proposalRef?: string;
33
+ summary?: string;
34
+ }
35
+ /**
36
+ * One materialized amendment in `state.specAmendments[itemId]` — record-only, in stream order. `at`/`by`
37
+ * come from the event frame (not the payload). The full prov-tagged ordering is reconstructed by the read
38
+ * surface (`TrackReader.amendmentTrace`) directly over the log; this projection is the per-item record.
39
+ */
40
+ export interface SpecAmendment {
41
+ itemId: ItemId;
42
+ baseHash: string;
43
+ patch: JsonPatch;
44
+ resultHash: string;
45
+ at: string;
46
+ decisionId?: ItemId;
47
+ liveDocRef?: string;
48
+ proposalRef?: string;
49
+ summary?: string;
50
+ }
51
+ /**
52
+ * Fail-closed validation + normalization of a `SpecAmendPayload` (mirrors `assertVerificationRun`/
53
+ * `assertScopeDecl`). Requires `itemId`/`baseHash`/`resultHash`/`patch`; the patch must be an array of
54
+ * `{op:string, path:string, …}` objects (shape only — track NEVER interprets the patch). Drops absent
55
+ * optionals so the recorded shape is minimal + hash-stable. The `itemId` legality (exists, is an item)
56
+ * is checked by the facade against folded state; this is the pure shape gate.
57
+ */
58
+ export declare function assertSpecAmend(input: unknown): SpecAmendPayload;
59
+ //# sourceMappingURL=spec-amend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-amend.d.ts","sourceRoot":"","sources":["../../src/model/spec-amend.ts"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AAEpD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAC3D,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AACD,MAAM,MAAM,SAAS,GAAG,WAAW,EAAE,CAAA;AAErC,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAA;IAChB,iEAAiE;IACjE,KAAK,EAAE,SAAS,CAAA;IAChB,0FAA0F;IAC1F,UAAU,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAiChE"}