@mmnto/totem 1.67.1 → 1.69.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 (90) hide show
  1. package/dist/capability/falsification.d.ts +18 -0
  2. package/dist/capability/falsification.d.ts.map +1 -0
  3. package/dist/capability/falsification.js +56 -0
  4. package/dist/capability/falsification.js.map +1 -0
  5. package/dist/capability/falsification.test.d.ts +2 -0
  6. package/dist/capability/falsification.test.d.ts.map +1 -0
  7. package/dist/capability/falsification.test.js +112 -0
  8. package/dist/capability/falsification.test.js.map +1 -0
  9. package/dist/capability/regenerate.d.ts +20 -0
  10. package/dist/capability/regenerate.d.ts.map +1 -0
  11. package/dist/capability/regenerate.js +0 -0
  12. package/dist/capability/regenerate.js.map +1 -0
  13. package/dist/capability/regenerate.test.d.ts +2 -0
  14. package/dist/capability/regenerate.test.d.ts.map +1 -0
  15. package/dist/capability/regenerate.test.js +136 -0
  16. package/dist/capability/regenerate.test.js.map +1 -0
  17. package/dist/capability/review-catch.d.ts +53 -0
  18. package/dist/capability/review-catch.d.ts.map +1 -0
  19. package/dist/capability/review-catch.js +92 -0
  20. package/dist/capability/review-catch.js.map +1 -0
  21. package/dist/capability/review-catch.test.d.ts +2 -0
  22. package/dist/capability/review-catch.test.d.ts.map +1 -0
  23. package/dist/capability/review-catch.test.js +90 -0
  24. package/dist/capability/review-catch.test.js.map +1 -0
  25. package/dist/capability/schema.d.ts +244 -0
  26. package/dist/capability/schema.d.ts.map +1 -0
  27. package/dist/capability/schema.js +141 -0
  28. package/dist/capability/schema.js.map +1 -0
  29. package/dist/capability/schema.test.d.ts +2 -0
  30. package/dist/capability/schema.test.d.ts.map +1 -0
  31. package/dist/capability/schema.test.js +93 -0
  32. package/dist/capability/schema.test.js.map +1 -0
  33. package/dist/index.d.ts +20 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +10 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/spine/candidate-rule.d.ts +84 -0
  38. package/dist/spine/candidate-rule.d.ts.map +1 -0
  39. package/dist/spine/candidate-rule.js +68 -0
  40. package/dist/spine/candidate-rule.js.map +1 -0
  41. package/dist/spine/candidate-rule.test.d.ts +2 -0
  42. package/dist/spine/candidate-rule.test.d.ts.map +1 -0
  43. package/dist/spine/candidate-rule.test.js +40 -0
  44. package/dist/spine/candidate-rule.test.js.map +1 -0
  45. package/dist/spine/classify.d.ts +93 -0
  46. package/dist/spine/classify.d.ts.map +1 -0
  47. package/dist/spine/classify.js +190 -0
  48. package/dist/spine/classify.js.map +1 -0
  49. package/dist/spine/classify.test.d.ts +2 -0
  50. package/dist/spine/classify.test.d.ts.map +1 -0
  51. package/dist/spine/classify.test.js +302 -0
  52. package/dist/spine/classify.test.js.map +1 -0
  53. package/dist/spine/compile.d.ts +62 -0
  54. package/dist/spine/compile.d.ts.map +1 -0
  55. package/dist/spine/compile.js +204 -0
  56. package/dist/spine/compile.js.map +1 -0
  57. package/dist/spine/compile.test.d.ts +2 -0
  58. package/dist/spine/compile.test.d.ts.map +1 -0
  59. package/dist/spine/compile.test.js +327 -0
  60. package/dist/spine/compile.test.js.map +1 -0
  61. package/dist/spine/extract.d.ts +146 -0
  62. package/dist/spine/extract.d.ts.map +1 -0
  63. package/dist/spine/extract.js +227 -0
  64. package/dist/spine/extract.js.map +1 -0
  65. package/dist/spine/extract.test.d.ts +2 -0
  66. package/dist/spine/extract.test.d.ts.map +1 -0
  67. package/dist/spine/extract.test.js +382 -0
  68. package/dist/spine/extract.test.js.map +1 -0
  69. package/dist/spine/ledgers.d.ts +1102 -0
  70. package/dist/spine/ledgers.d.ts.map +1 -0
  71. package/dist/spine/ledgers.js +209 -0
  72. package/dist/spine/ledgers.js.map +1 -0
  73. package/dist/spine/miner-harness.d.ts +30 -0
  74. package/dist/spine/miner-harness.d.ts.map +1 -0
  75. package/dist/spine/miner-harness.js +214 -0
  76. package/dist/spine/miner-harness.js.map +1 -0
  77. package/dist/spine/miner-harness.test.d.ts +2 -0
  78. package/dist/spine/miner-harness.test.d.ts.map +1 -0
  79. package/dist/spine/miner-harness.test.js +231 -0
  80. package/dist/spine/miner-harness.test.js.map +1 -0
  81. package/dist/spine/split.d.ts +149 -0
  82. package/dist/spine/split.d.ts.map +1 -0
  83. package/dist/spine/split.js +235 -0
  84. package/dist/spine/split.js.map +1 -0
  85. package/dist/spine/split.test.d.ts +2 -0
  86. package/dist/spine/split.test.d.ts.map +1 -0
  87. package/dist/spine/split.test.js +142 -0
  88. package/dist/spine/split.test.js.map +1 -0
  89. package/dist/spine/windtunnel-lock.d.ts +8 -8
  90. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=split.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split.test.d.ts","sourceRoot":"","sources":["../../src/spine/split.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,142 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { resolveSplit, SplitArtifactSchema, SplitCoverError, validateSplitCover, } from './split.js';
3
+ const sha = (n) => String(n).padStart(40, '0');
4
+ const mcMap = (prs) => new Map(prs.map((pr) => [pr, sha(pr)]));
5
+ function split(overrides) {
6
+ return SplitArtifactSchema.parse({
7
+ asOfCommit: sha(100),
8
+ trainPrs: [1, 2],
9
+ heldOutPrs: [3, 4],
10
+ excludedPrs: [],
11
+ positiveControlPrs: [3],
12
+ negativeControlPrs: [4],
13
+ splitRule: { predicate: 'code-touching non-bot', cutIndex: 2 },
14
+ ...overrides,
15
+ });
16
+ }
17
+ describe('validateSplitCover', () => {
18
+ const corpus = [1, 2, 3, 4];
19
+ const mc = mcMap(corpus);
20
+ it('accepts a clean three-way disjoint cover', () => {
21
+ expect(validateSplitCover(split(), corpus, mc).ok).toBe(true);
22
+ });
23
+ it('rejects duplicate PRs within a slice at the schema boundary', () => {
24
+ expect(() => split({ trainPrs: [1, 1, 2] })).toThrow(/duplicate/);
25
+ });
26
+ it('flags an out-of-corpus member as FM(d) (cover.extra)', () => {
27
+ const r = validateSplitCover(split({ heldOutPrs: [3, 4, 99] }), corpus, mcMap([...corpus, 99]));
28
+ expect(r.cover.extra).toEqual([99]);
29
+ expect(r.cover.missing).toEqual([]);
30
+ expect(r.ok).toBe(false);
31
+ });
32
+ it('flags a silent corpus drop as FM(g) (cover.missing)', () => {
33
+ const r = validateSplitCover(split({ heldOutPrs: [3], negativeControlPrs: [] }), corpus, mc);
34
+ expect(r.cover.missing).toEqual([4]);
35
+ expect(r.cover.extra).toEqual([]);
36
+ expect(r.ok).toBe(false);
37
+ });
38
+ it('flags a train/heldOut overlap (e-split disjointness)', () => {
39
+ const r = validateSplitCover(split({ trainPrs: [1, 2, 3], heldOutPrs: [3, 4] }), corpus, mc);
40
+ expect(r.overlaps.trainHeldOut).toEqual([3]);
41
+ expect(r.ok).toBe(false);
42
+ });
43
+ it('flags a control outside heldOut', () => {
44
+ const r = validateSplitCover(split({ positiveControlPrs: [1] }), corpus, mc);
45
+ expect(r.controlsOutsideHeldOut).toEqual([1]);
46
+ expect(r.ok).toBe(false);
47
+ });
48
+ it('flags a PR tagged as both a positive and negative control', () => {
49
+ const r = validateSplitCover(split({ negativeControlPrs: [3, 4] }), corpus, mc);
50
+ expect(r.controlOverlap).toEqual([3]);
51
+ expect(r.ok).toBe(false);
52
+ });
53
+ it('flags a merge-commit collision across slices', () => {
54
+ const collide = new Map(mc);
55
+ collide.set(3, sha(2)); // PR 3 (heldOut) collides with PR 2 (train)
56
+ const r = validateSplitCover(split(), corpus, collide);
57
+ expect(r.mergeCommitCollisions).toEqual([sha(2)]);
58
+ expect(r.ok).toBe(false);
59
+ });
60
+ });
61
+ describe('resolveSplit — forward-ancestry cut', () => {
62
+ const corpus = [1, 2, 3, 4];
63
+ it('puts the OLDER ancestry segment in train', () => {
64
+ const s = resolveSplit({
65
+ asOfCommit: sha(100),
66
+ corpus,
67
+ orderedNewestFirst: [4, 3, 2, 1], // newest-first; oldest-first = [1,2,3,4]
68
+ excludedPrs: [],
69
+ cutIndex: 2,
70
+ positiveControlPrs: [3],
71
+ negativeControlPrs: [4],
72
+ predicate: 'p',
73
+ mergeCommitByPr: mcMap(corpus),
74
+ });
75
+ expect(s.trainPrs).toEqual([1, 2]);
76
+ expect(s.heldOutPrs).toEqual([3, 4]);
77
+ });
78
+ it('throws on excludedPrs outside the corpus (fail-loud, not silently filtered)', () => {
79
+ expect(() => resolveSplit({
80
+ asOfCommit: sha(100),
81
+ corpus,
82
+ orderedNewestFirst: [4, 3, 2, 1],
83
+ excludedPrs: [99], // not a corpus member
84
+ cutIndex: 2,
85
+ predicate: 'p',
86
+ mergeCommitByPr: mcMap(corpus),
87
+ })).toThrow(/excludedPrs contains PRs outside the corpus/);
88
+ });
89
+ it('throws when mergeCommitByPr does not cover the corpus', () => {
90
+ expect(() => resolveSplit({
91
+ asOfCommit: sha(100),
92
+ corpus,
93
+ orderedNewestFirst: [4, 3, 2, 1],
94
+ excludedPrs: [],
95
+ cutIndex: 2,
96
+ predicate: 'p',
97
+ mergeCommitByPr: mcMap([1, 2, 3]), // missing PR 4
98
+ })).toThrow(/mergeCommitByPr does not cover the corpus/);
99
+ });
100
+ it('throws SplitCoverError when a designated control falls outside heldOut', () => {
101
+ expect(() => resolveSplit({
102
+ asOfCommit: sha(100),
103
+ corpus,
104
+ orderedNewestFirst: [4, 3, 2, 1],
105
+ excludedPrs: [],
106
+ cutIndex: 2,
107
+ positiveControlPrs: [1], // a train PR, not in heldOut
108
+ predicate: 'p',
109
+ mergeCommitByPr: mcMap(corpus),
110
+ })).toThrow(SplitCoverError);
111
+ });
112
+ it('throws when the ancestry ordering does not cover the corpus', () => {
113
+ expect(() => resolveSplit({
114
+ asOfCommit: sha(100),
115
+ corpus,
116
+ orderedNewestFirst: [4, 3, 2], // missing PR 1
117
+ excludedPrs: [],
118
+ cutIndex: 2,
119
+ predicate: 'p',
120
+ mergeCommitByPr: mcMap(corpus),
121
+ })).toThrow(/does not cover the corpus/);
122
+ });
123
+ const cutParams = (cutIndex) => ({
124
+ asOfCommit: sha(100),
125
+ corpus,
126
+ orderedNewestFirst: [4, 3, 2, 1],
127
+ excludedPrs: [],
128
+ cutIndex,
129
+ predicate: 'p',
130
+ mergeCommitByPr: mcMap(corpus),
131
+ });
132
+ it('throws when cutIndex exceeds the non-excluded corpus size', () => {
133
+ expect(() => resolveSplit(cutParams(5))).toThrow(/cutIndex 5 must be strictly between/);
134
+ });
135
+ it('throws when cutIndex is 0 (empty train slice)', () => {
136
+ expect(() => resolveSplit(cutParams(0))).toThrow(/cutIndex 0 must be strictly between/);
137
+ });
138
+ it('throws when cutIndex == size (empty held-out slice)', () => {
139
+ expect(() => resolveSplit(cutParams(4))).toThrow(/cutIndex 4 must be strictly between/);
140
+ });
141
+ });
142
+ //# sourceMappingURL=split.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split.test.js","sourceRoot":"","sources":["../../src/spine/split.test.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,7 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
50
50
  excludeBotPrs: z.ZodDefault<z.ZodBoolean>;
51
51
  }, "strip", z.ZodTypeAny, {
52
52
  state: string;
53
+ asOfCommit: string;
53
54
  predicate: string;
54
55
  window: {
55
56
  type: "all";
@@ -57,7 +58,6 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
57
58
  type: "bounded";
58
59
  n: number;
59
60
  };
60
- asOfCommit: string;
61
61
  excludeRevertPairs: boolean;
62
62
  excludeBotPrs: boolean;
63
63
  codePathClassifier?: {
@@ -66,6 +66,7 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
66
66
  } | undefined;
67
67
  }, {
68
68
  state: string;
69
+ asOfCommit: string;
69
70
  predicate: string;
70
71
  window: {
71
72
  type: "all";
@@ -73,7 +74,6 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
73
74
  type: "bounded";
74
75
  n: number;
75
76
  };
76
- asOfCommit: string;
77
77
  codePathClassifier?: {
78
78
  includeGlobs: string[];
79
79
  excludeGlobs: string[];
@@ -104,6 +104,7 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
104
104
  repo: string;
105
105
  selectionRule: {
106
106
  state: string;
107
+ asOfCommit: string;
107
108
  predicate: string;
108
109
  window: {
109
110
  type: "all";
@@ -111,7 +112,6 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
111
112
  type: "bounded";
112
113
  n: number;
113
114
  };
114
- asOfCommit: string;
115
115
  excludeRevertPairs: boolean;
116
116
  excludeBotPrs: boolean;
117
117
  codePathClassifier?: {
@@ -130,6 +130,7 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
130
130
  repo: string;
131
131
  selectionRule: {
132
132
  state: string;
133
+ asOfCommit: string;
133
134
  predicate: string;
134
135
  window: {
135
136
  type: "all";
@@ -137,7 +138,6 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
137
138
  type: "bounded";
138
139
  n: number;
139
140
  };
140
- asOfCommit: string;
141
141
  codePathClassifier?: {
142
142
  includeGlobs: string[];
143
143
  excludeGlobs: string[];
@@ -247,6 +247,7 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
247
247
  repo: string;
248
248
  selectionRule: {
249
249
  state: string;
250
+ asOfCommit: string;
250
251
  predicate: string;
251
252
  window: {
252
253
  type: "all";
@@ -254,7 +255,6 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
254
255
  type: "bounded";
255
256
  n: number;
256
257
  };
257
- asOfCommit: string;
258
258
  excludeRevertPairs: boolean;
259
259
  excludeBotPrs: boolean;
260
260
  codePathClassifier?: {
@@ -309,6 +309,7 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
309
309
  repo: string;
310
310
  selectionRule: {
311
311
  state: string;
312
+ asOfCommit: string;
312
313
  predicate: string;
313
314
  window: {
314
315
  type: "all";
@@ -316,7 +317,6 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
316
317
  type: "bounded";
317
318
  n: number;
318
319
  };
319
- asOfCommit: string;
320
320
  codePathClassifier?: {
321
321
  includeGlobs: string[];
322
322
  excludeGlobs: string[];
@@ -371,6 +371,7 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
371
371
  repo: string;
372
372
  selectionRule: {
373
373
  state: string;
374
+ asOfCommit: string;
374
375
  predicate: string;
375
376
  window: {
376
377
  type: "all";
@@ -378,7 +379,6 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
378
379
  type: "bounded";
379
380
  n: number;
380
381
  };
381
- asOfCommit: string;
382
382
  excludeRevertPairs: boolean;
383
383
  excludeBotPrs: boolean;
384
384
  codePathClassifier?: {
@@ -433,6 +433,7 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
433
433
  repo: string;
434
434
  selectionRule: {
435
435
  state: string;
436
+ asOfCommit: string;
436
437
  predicate: string;
437
438
  window: {
438
439
  type: "all";
@@ -440,7 +441,6 @@ export declare const WindtunnelLockSchema: z.ZodEffects<z.ZodObject<{
440
441
  type: "bounded";
441
442
  n: number;
442
443
  };
443
- asOfCommit: string;
444
444
  codePathClassifier?: {
445
445
  includeGlobs: string[];
446
446
  excludeGlobs: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmnto/totem",
3
- "version": "1.67.1",
3
+ "version": "1.69.0",
4
4
  "description": "Persistent memory and context layer for AI agents",
5
5
  "type": "module",
6
6
  "engines": {