@dzhechkov/harness-core 0.8.6 → 0.8.11

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 (164) hide show
  1. package/.dz-manifest.json +361 -97
  2. package/README.md +48 -1
  3. package/dist/amendment-trace.d.ts.map +1 -1
  4. package/dist/amendment-trace.js +12 -1
  5. package/dist/amendment-trace.js.map +1 -1
  6. package/dist/codex-invoke.d.ts +73 -0
  7. package/dist/codex-invoke.d.ts.map +1 -0
  8. package/dist/codex-invoke.js +80 -0
  9. package/dist/codex-invoke.js.map +1 -0
  10. package/dist/compounding.d.ts +54 -0
  11. package/dist/compounding.d.ts.map +1 -1
  12. package/dist/compounding.js +221 -1
  13. package/dist/compounding.js.map +1 -1
  14. package/dist/discrimination-gate.d.ts +63 -3
  15. package/dist/discrimination-gate.d.ts.map +1 -1
  16. package/dist/discrimination-gate.js +113 -16
  17. package/dist/discrimination-gate.js.map +1 -1
  18. package/dist/eta.d.ts +92 -0
  19. package/dist/eta.d.ts.map +1 -0
  20. package/dist/eta.js +488 -0
  21. package/dist/eta.js.map +1 -0
  22. package/dist/event-chain.d.ts +30 -0
  23. package/dist/event-chain.d.ts.map +1 -1
  24. package/dist/event-chain.js +24 -0
  25. package/dist/event-chain.js.map +1 -1
  26. package/dist/feature-adr-checkpoints.js +1 -1
  27. package/dist/feature-adr-decision-recall.d.ts +167 -0
  28. package/dist/feature-adr-decision-recall.d.ts.map +1 -0
  29. package/dist/feature-adr-decision-recall.js +519 -0
  30. package/dist/feature-adr-decision-recall.js.map +1 -0
  31. package/dist/feature-adr-landing.d.ts +37 -0
  32. package/dist/feature-adr-landing.d.ts.map +1 -0
  33. package/dist/feature-adr-landing.js +59 -0
  34. package/dist/feature-adr-landing.js.map +1 -0
  35. package/dist/feature-adr-routing.d.ts +2 -2
  36. package/dist/feature-adr-routing.d.ts.map +1 -1
  37. package/dist/feature-adr-routing.js +7 -11
  38. package/dist/feature-adr-routing.js.map +1 -1
  39. package/dist/guard-promotion.d.ts +41 -0
  40. package/dist/guard-promotion.d.ts.map +1 -1
  41. package/dist/guard-promotion.js +218 -4
  42. package/dist/guard-promotion.js.map +1 -1
  43. package/dist/guard-volume.d.ts +108 -0
  44. package/dist/guard-volume.d.ts.map +1 -0
  45. package/dist/guard-volume.js +536 -0
  46. package/dist/guard-volume.js.map +1 -0
  47. package/dist/guard.d.ts +17 -0
  48. package/dist/guard.d.ts.map +1 -1
  49. package/dist/guard.js +92 -4
  50. package/dist/guard.js.map +1 -1
  51. package/dist/index.d.ts +24 -7
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +19 -5
  54. package/dist/index.js.map +1 -1
  55. package/dist/integration-apply.d.ts +25 -0
  56. package/dist/integration-apply.d.ts.map +1 -0
  57. package/dist/integration-apply.js +299 -0
  58. package/dist/integration-apply.js.map +1 -0
  59. package/dist/integration-evidence.d.ts +46 -0
  60. package/dist/integration-evidence.d.ts.map +1 -0
  61. package/dist/integration-evidence.js +44 -0
  62. package/dist/integration-evidence.js.map +1 -0
  63. package/dist/integration-probe-worker.d.ts +22 -0
  64. package/dist/integration-probe-worker.d.ts.map +1 -0
  65. package/dist/integration-probe-worker.js +334 -0
  66. package/dist/integration-probe-worker.js.map +1 -0
  67. package/dist/integrations-verify.d.ts +60 -0
  68. package/dist/integrations-verify.d.ts.map +1 -0
  69. package/dist/integrations-verify.js +194 -0
  70. package/dist/integrations-verify.js.map +1 -0
  71. package/dist/lesson-generalization.d.ts +29 -0
  72. package/dist/lesson-generalization.d.ts.map +1 -0
  73. package/dist/lesson-generalization.js +84 -0
  74. package/dist/lesson-generalization.js.map +1 -0
  75. package/dist/mutation-gate.d.ts +39 -36
  76. package/dist/mutation-gate.d.ts.map +1 -1
  77. package/dist/mutation-gate.js +111 -5
  78. package/dist/mutation-gate.js.map +1 -1
  79. package/dist/operations.d.ts +27 -0
  80. package/dist/operations.d.ts.map +1 -1
  81. package/dist/operations.js +186 -7
  82. package/dist/operations.js.map +1 -1
  83. package/dist/patterns.d.ts +27 -1
  84. package/dist/patterns.d.ts.map +1 -1
  85. package/dist/patterns.js +211 -45
  86. package/dist/patterns.js.map +1 -1
  87. package/dist/plugin.d.ts.map +1 -1
  88. package/dist/plugin.js +27 -5
  89. package/dist/plugin.js.map +1 -1
  90. package/dist/recommend.d.ts +4 -5
  91. package/dist/recommend.d.ts.map +1 -1
  92. package/dist/recommend.js +110 -45
  93. package/dist/recommend.js.map +1 -1
  94. package/dist/registry.d.ts +32 -1
  95. package/dist/registry.d.ts.map +1 -1
  96. package/dist/registry.js +165 -9
  97. package/dist/registry.js.map +1 -1
  98. package/dist/run-records.d.ts +3 -0
  99. package/dist/run-records.d.ts.map +1 -1
  100. package/dist/run-records.js +18 -0
  101. package/dist/run-records.js.map +1 -1
  102. package/dist/score.d.ts +95 -0
  103. package/dist/score.d.ts.map +1 -1
  104. package/dist/score.js +274 -2
  105. package/dist/score.js.map +1 -1
  106. package/dist/setup.d.ts.map +1 -1
  107. package/dist/setup.js +20 -17
  108. package/dist/setup.js.map +1 -1
  109. package/dist/skill-selection.d.ts +72 -0
  110. package/dist/skill-selection.d.ts.map +1 -0
  111. package/dist/skill-selection.js +76 -0
  112. package/dist/skill-selection.js.map +1 -0
  113. package/dist/stem.d.ts +12 -0
  114. package/dist/stem.d.ts.map +1 -0
  115. package/dist/stem.js +89 -0
  116. package/dist/stem.js.map +1 -0
  117. package/dist/target-integrations.d.ts +65 -0
  118. package/dist/target-integrations.d.ts.map +1 -0
  119. package/dist/target-integrations.js +152 -0
  120. package/dist/target-integrations.js.map +1 -0
  121. package/dist/telemetry-vocabulary.d.ts +7 -0
  122. package/dist/telemetry-vocabulary.d.ts.map +1 -1
  123. package/dist/telemetry-vocabulary.js +29 -0
  124. package/dist/telemetry-vocabulary.js.map +1 -1
  125. package/dist/vector-tier.d.ts +6 -1
  126. package/dist/vector-tier.d.ts.map +1 -1
  127. package/dist/vector-tier.js +32 -7
  128. package/dist/vector-tier.js.map +1 -1
  129. package/package.json +7 -6
  130. package/sbom.json +772 -112
  131. package/src/amendment-trace.ts +12 -1
  132. package/src/codex-invoke.ts +138 -0
  133. package/src/compounding.ts +300 -1
  134. package/src/discrimination-gate.ts +183 -19
  135. package/src/eta.ts +590 -0
  136. package/src/event-chain.ts +41 -0
  137. package/src/feature-adr-checkpoints.ts +1 -1
  138. package/src/feature-adr-decision-recall.ts +652 -0
  139. package/src/feature-adr-landing.ts +109 -0
  140. package/src/feature-adr-routing.ts +7 -11
  141. package/src/guard-promotion.ts +245 -4
  142. package/src/guard-volume.ts +752 -0
  143. package/src/guard.ts +110 -4
  144. package/src/index.ts +73 -6
  145. package/src/integration-apply.ts +332 -0
  146. package/src/integration-evidence.ts +89 -0
  147. package/src/integration-probe-worker.ts +310 -0
  148. package/src/integration-receipts/claude-code/mcp/2.1.235.json +35 -0
  149. package/src/integrations-verify.ts +258 -0
  150. package/src/lesson-generalization.ts +115 -0
  151. package/src/mutation-gate.ts +165 -5
  152. package/src/operations.ts +207 -7
  153. package/src/patterns.ts +252 -43
  154. package/src/plugin.ts +27 -5
  155. package/src/recommend.ts +116 -46
  156. package/src/registry.ts +144 -11
  157. package/src/run-records.ts +23 -0
  158. package/src/score.ts +361 -3
  159. package/src/setup.ts +20 -17
  160. package/src/skill-selection.ts +111 -0
  161. package/src/stem.ts +87 -0
  162. package/src/target-integrations.ts +225 -0
  163. package/src/telemetry-vocabulary.ts +36 -0
  164. package/src/vector-tier.ts +44 -14
@@ -15,6 +15,7 @@
15
15
  * Everything here is PURE: callers gather facts (files, store rows); this module only computes.
16
16
  */
17
17
  import { EVENT_CHAIN_SCOPE, verifyEventChainText } from './event-chain.js';
18
+ import { isOffsetIsoTimestamp, } from './guard-promotion.js';
18
19
  // ── Seeded statistics (verbatim-shape port from darwin-mode bench/stats.ts) ──
19
20
  /** Deterministic PRNG — same seed, same stream, byte-identical reports. */
20
21
  export function mulberry32(seed) {
@@ -99,6 +100,181 @@ export function replayableInstances(usage, lessonText = new Map()) {
99
100
  return [...byKey.entries()].map(([id, e]) => ({ id, query: e.query, lessons: e.lessons, class: null }));
100
101
  }
101
102
  const APPLY_LEG_STALE_DAYS = 7;
103
+ const FUNNEL_MONTH_LIMIT = 12;
104
+ const LESSON_TO_RULE_FUNNEL_POLICY = {
105
+ unavailable: (reason) => ({ status: 'not-measured', reason }),
106
+ successor: (stage) => stage,
107
+ };
108
+ function utcMonth(ts) {
109
+ return isOffsetIsoTimestamp(ts) ? new Date(Date.parse(ts)).toISOString().slice(0, 7) : null;
110
+ }
111
+ function monthOffset(period, delta) {
112
+ const [year, month] = period.split('-').map(Number);
113
+ return new Date(Date.UTC(year, month - 1 + delta, 1)).toISOString().slice(0, 7);
114
+ }
115
+ function funnelPeriods(facts, nowTs) {
116
+ const evidenceMonths = [];
117
+ if (facts.promotionRuns.status === 'measured') {
118
+ for (const row of facts.promotionRuns.rows) {
119
+ const period = utcMonth(row.ts);
120
+ if (period !== null)
121
+ evidenceMonths.push(period);
122
+ }
123
+ }
124
+ if (facts.guardAudits.status === 'measured') {
125
+ for (const row of facts.guardAudits.rows) {
126
+ const period = utcMonth(row.ts);
127
+ if (period !== null)
128
+ evidenceMonths.push(period);
129
+ }
130
+ }
131
+ for (const period of facts.truncatedPromotionPeriods ?? [])
132
+ evidenceMonths.push(period);
133
+ const current = utcMonth(nowTs) ?? evidenceMonths.sort().at(-1) ?? '1970-01';
134
+ const floor = monthOffset(current, -(FUNNEL_MONTH_LIMIT - 1));
135
+ const earliest = evidenceMonths.filter((period) => period >= floor && period <= current).sort()[0] ?? current;
136
+ const periods = [];
137
+ for (let period = earliest; period <= current; period = monthOffset(period, 1))
138
+ periods.push(period);
139
+ return periods;
140
+ }
141
+ function promotionMeasurements(facts, period) {
142
+ if (facts.promotionRuns.status === 'not-measured') {
143
+ const unavailable = LESSON_TO_RULE_FUNNEL_POLICY.unavailable(facts.promotionRuns.reason);
144
+ return { eligible: unavailable, attempted: unavailable, accepted: unavailable };
145
+ }
146
+ if (facts.truncatedPromotionPeriods?.includes(period) === true) {
147
+ const unavailable = LESSON_TO_RULE_FUNNEL_POLICY.unavailable(`promotion-history-pruned:${period}`);
148
+ return { eligible: unavailable, attempted: unavailable, accepted: unavailable };
149
+ }
150
+ const runs = facts.promotionRuns.rows.filter((row) => utcMonth(row.ts) === period);
151
+ if (runs.length === 0) {
152
+ const unavailable = LESSON_TO_RULE_FUNNEL_POLICY.unavailable(`promotion-run-not-recorded:${period}`);
153
+ return { eligible: unavailable, attempted: unavailable, accepted: unavailable };
154
+ }
155
+ if (runs.some((row) => row.complete !== true)) {
156
+ const unavailable = LESSON_TO_RULE_FUNNEL_POLICY.unavailable(`promotion-run-incomplete:${period}`);
157
+ return { eligible: unavailable, attempted: unavailable, accepted: unavailable };
158
+ }
159
+ const eligible = new Set();
160
+ const attempted = new Set();
161
+ const accepted = new Set();
162
+ for (const run of runs) {
163
+ for (const candidate of run.candidates) {
164
+ if (candidate.eligible !== true)
165
+ continue;
166
+ eligible.add(candidate.candidateAnchor);
167
+ if (typeof candidate.ruleContentAnchor !== 'string' || candidate.ruleContentAnchor === '')
168
+ continue;
169
+ attempted.add(candidate.candidateAnchor);
170
+ if (candidate.verdict === 'promote')
171
+ accepted.add(candidate.candidateAnchor);
172
+ }
173
+ }
174
+ return {
175
+ eligible: { status: 'measured', value: eligible.size },
176
+ attempted: { status: 'measured', value: attempted.size },
177
+ accepted: { status: 'measured', value: accepted.size },
178
+ };
179
+ }
180
+ function executionMeasurement(facts, period) {
181
+ if (facts.promotionRuns.status === 'not-measured') {
182
+ return LESSON_TO_RULE_FUNNEL_POLICY.unavailable(facts.promotionRuns.reason);
183
+ }
184
+ if (facts.guardAudits.status === 'not-measured') {
185
+ return LESSON_TO_RULE_FUNNEL_POLICY.unavailable(facts.guardAudits.reason);
186
+ }
187
+ const periodAudits = facts.guardAudits.rows.filter((row) => utcMonth(row.ts) === period);
188
+ if (periodAudits.length === 0) {
189
+ return LESSON_TO_RULE_FUNNEL_POLICY.unavailable(`guard-audit-not-recorded:${period}`);
190
+ }
191
+ const audits = periodAudits.filter((row) => row.op === 'publish');
192
+ if (audits.length === 0) {
193
+ return LESSON_TO_RULE_FUNNEL_POLICY.unavailable(`guard-publish-not-recorded:${period}`);
194
+ }
195
+ const violations = audits.flatMap((audit) => {
196
+ const observed = audit.violations ?? audit.rules.map((rule) => ({ rule }));
197
+ return observed.map((violation) => ({ ...violation, auditTs: Date.parse(audit.ts) }));
198
+ });
199
+ if (violations.some((item) => item.rule.startsWith('promoted-') && !item.contentAnchor)) {
200
+ return LESSON_TO_RULE_FUNNEL_POLICY.unavailable(`guard-audit-anchor-missing:${period}`);
201
+ }
202
+ const acceptances = facts.promotionAcceptances ?? facts.promotionRuns.rows.flatMap((run) => run.complete !== true
203
+ ? []
204
+ : run.candidates
205
+ .filter((candidate) => candidate.eligible === true && candidate.verdict === 'promote' && candidate.ruleContentAnchor)
206
+ .map((candidate) => ({ ruleContentAnchor: candidate.ruleContentAnchor, acceptedTs: run.ts })));
207
+ const acceptedAt = new Map();
208
+ for (const acceptance of acceptances) {
209
+ const acceptedTs = Date.parse(acceptance.acceptedTs);
210
+ const prior = acceptedAt.get(acceptance.ruleContentAnchor);
211
+ if (Number.isFinite(acceptedTs) && (prior === undefined || acceptedTs < prior)) {
212
+ acceptedAt.set(acceptance.ruleContentAnchor, acceptedTs);
213
+ }
214
+ }
215
+ const unattributedPromoted = violations.some((item) => item.rule.startsWith('promoted-') &&
216
+ typeof item.contentAnchor === 'string' &&
217
+ (acceptedAt.get(item.contentAnchor) === undefined || acceptedAt.get(item.contentAnchor) > item.auditTs));
218
+ const acceptanceHistoryComplete = facts.acceptanceHistoryComplete ??
219
+ facts.promotionRuns.rows.every((run) => run.complete === true);
220
+ if (unattributedPromoted && !acceptanceHistoryComplete) {
221
+ return LESSON_TO_RULE_FUNNEL_POLICY.unavailable(`promotion-acceptance-history-incomplete:${period}`);
222
+ }
223
+ return {
224
+ status: 'measured',
225
+ value: violations.filter((item) => typeof item.contentAnchor === 'string' &&
226
+ acceptedAt.has(item.contentAnchor) &&
227
+ acceptedAt.get(item.contentAnchor) <= item.auditTs).length,
228
+ };
229
+ }
230
+ function funnelFindings(periods) {
231
+ const edges = [
232
+ ['eligible', 'attempted'],
233
+ ['attempted', 'accepted'],
234
+ ['accepted', 'executions'],
235
+ ];
236
+ const findings = [];
237
+ for (const [predecessor, successor] of edges) {
238
+ let streak = [];
239
+ const emit = () => {
240
+ if (streak.length < 3)
241
+ return;
242
+ const observed = streak.slice(-3);
243
+ findings.push({
244
+ predecessor,
245
+ stage: LESSON_TO_RULE_FUNNEL_POLICY.successor(successor),
246
+ fromPeriod: observed[0].period,
247
+ toPeriod: observed[2].period,
248
+ counts: observed.map((row) => ({
249
+ period: row.period,
250
+ predecessor: row[predecessor].value,
251
+ successor: row[successor].value,
252
+ })),
253
+ });
254
+ };
255
+ for (const row of periods) {
256
+ const before = row[predecessor];
257
+ const after = row[successor];
258
+ if (before.status === 'measured' && after.status === 'measured' && before.value > 0 && after.value === 0) {
259
+ streak.push(row);
260
+ }
261
+ else {
262
+ emit();
263
+ streak = [];
264
+ }
265
+ }
266
+ emit();
267
+ }
268
+ return findings;
269
+ }
270
+ export function assembleLessonToRuleFunnel(facts, nowTs) {
271
+ const periods = funnelPeriods(facts, nowTs).map((period) => ({
272
+ period,
273
+ ...promotionMeasurements(facts, period),
274
+ executions: executionMeasurement(facts, period),
275
+ }));
276
+ return { periods, findings: funnelFindings(periods) };
277
+ }
102
278
  export function assembleCompoundingReport(facts) {
103
279
  const { lessons, usage, guard } = facts;
104
280
  // 1. Pool payoff — the "loops need all three legs" question, quantified.
@@ -212,6 +388,10 @@ export function assembleCompoundingReport(facts) {
212
388
  ? Math.max(0, facts.cmdUsageDepthDays)
213
389
  : null,
214
390
  };
391
+ const lessonToRuleFunnel = assembleLessonToRuleFunnel(facts.lessonToRule ?? {
392
+ promotionRuns: { status: 'not-measured', reason: 'promotion-journal-not-provided' },
393
+ guardAudits: { status: 'not-measured', reason: 'guard-audit-not-provided' },
394
+ }, facts.nowTs);
215
395
  const improvedRules = trajectory.filter((t) => t.improved).length;
216
396
  const verdict = [
217
397
  `pool: ${injectedEver}/${total} lessons ever injected (${Math.round(pool.writeOnlyRatio * 100)}% write-only under the strict bar)`,
@@ -226,7 +406,36 @@ export function assembleCompoundingReport(facts) {
226
406
  : 'evidence chain: CORRUPT — the numbers above are computed from a damaged log',
227
407
  ]),
228
408
  ].join(' · ');
229
- return { pool, guardTrajectory: trajectory, replay, instrumentation, verdict };
409
+ return { pool, guardTrajectory: trajectory, replay, instrumentation, lessonToRuleFunnel, verdict };
410
+ }
411
+ function renderFunnelMeasurement(stage, value) {
412
+ return value.status === 'measured'
413
+ ? `${stage} ${value.value}`
414
+ : `${stage} NOT MEASURED (${value.reason})`;
415
+ }
416
+ function renderPromotionMeasurements(row) {
417
+ const { eligible, attempted, accepted } = row;
418
+ if (eligible.status === 'not-measured' &&
419
+ attempted.status === 'not-measured' &&
420
+ accepted.status === 'not-measured' &&
421
+ eligible.reason === attempted.reason &&
422
+ eligible.reason === accepted.reason) {
423
+ return `eligible/attempted/accepted NOT MEASURED (${eligible.reason})`;
424
+ }
425
+ return [
426
+ renderFunnelMeasurement('eligible', row.eligible),
427
+ renderFunnelMeasurement('attempted', row.attempted),
428
+ renderFunnelMeasurement('accepted', row.accepted),
429
+ ].join(' · ');
430
+ }
431
+ function renderFunnelPeriodMeasurements(row) {
432
+ const values = [row.eligible, row.attempted, row.accepted, row.executions];
433
+ const unavailable = values.filter((value) => value.status === 'not-measured');
434
+ if (unavailable.length === values.length &&
435
+ unavailable.every((value) => value.reason === unavailable[0].reason)) {
436
+ return `eligible/attempted/accepted/executions NOT MEASURED (${unavailable[0].reason})`;
437
+ }
438
+ return `${renderPromotionMeasurements(row)} · ${renderFunnelMeasurement('executions', row.executions)}`;
230
439
  }
231
440
  export function renderCompoundingReport(r) {
232
441
  const out = [];
@@ -259,6 +468,17 @@ export function renderCompoundingReport(r) {
259
468
  if (r.instrumentation.chains.length > 0)
260
469
  out.push(` scope: ${EVENT_CHAIN_SCOPE}`);
261
470
  out.push('');
471
+ out.push(' LESSON → RULE FUNNEL (calendar month, observed traffic only):');
472
+ for (const row of r.lessonToRuleFunnel.periods) {
473
+ out.push(` ${row.period} · ${renderFunnelPeriodMeasurements(row)}`);
474
+ }
475
+ for (const finding of r.lessonToRuleFunnel.findings) {
476
+ const counts = finding.counts
477
+ .map((row) => `${row.period} ${finding.predecessor} ${row.predecessor} → ${finding.stage} ${row.successor}`)
478
+ .join('; ');
479
+ out.push(` FLOW STOP ${finding.stage} (${finding.fromPeriod}..${finding.toPeriod}): ${counts}`);
480
+ }
481
+ out.push('');
262
482
  out.push(` VERDICT: ${r.verdict}`);
263
483
  return out.join('\n');
264
484
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compounding.js","sourceRoot":"","sources":["../src/compounding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compounding.js","sourceRoot":"","sources":["../src/compounding.ts"],"names":[],"mappings":"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"}
@@ -47,12 +47,58 @@ export interface ClassifyResultRow {
47
47
  readonly tipOutcome?: TipOutcome;
48
48
  readonly tipEvidence?: ExecutionEvidence;
49
49
  }
50
+ /** A CLOSED runner selection derived from the target package, never a command copied from package.json. */
51
+ export type RunnerSelection = {
52
+ readonly kind: 'vitest';
53
+ readonly command: 'npx vitest run';
54
+ readonly runnerName: 'vitest';
55
+ readonly how: 'scripts.test' | 'dev-dependency';
56
+ } | {
57
+ readonly kind: 'node-test';
58
+ readonly command: 'node --test';
59
+ readonly runnerName: 'node --test';
60
+ readonly how: 'scripts.test';
61
+ } | {
62
+ readonly kind: 'unsupported';
63
+ readonly runnerName: string;
64
+ readonly scriptsTest: string | null;
65
+ };
66
+ export type PlannedRunnerSelection = RunnerSelection | {
67
+ readonly kind: 'explicit';
68
+ readonly command: string;
69
+ readonly runnerName: string;
70
+ readonly how: 'explicit-flag';
71
+ };
72
+ export interface BaseRefResolution {
73
+ readonly requestedRef: string;
74
+ readonly resolvedRef: string;
75
+ readonly how: 'explicit-ref' | 'merge-base';
76
+ }
77
+ /**
78
+ * Select one of the two runner families this instrument can measure honestly.
79
+ *
80
+ * The package script is used only for classification. Its flags and shell text are never spliced
81
+ * into a command: a wrapper or a third runner family is an explicit unsupported result. Vitest in
82
+ * devDependencies is the sole tie-break when scripts.test is absent; it still maps to the fixed
83
+ * command template below.
84
+ */
85
+ export declare function selectRunner(scriptsTest: string | null, devDeps: readonly string[]): RunnerSelection;
86
+ /** Resolve an audited pre-feature ref supplied by the executor. HEAD never wins over a merge-base. */
87
+ export declare function resolveDiscriminationBaseRef(requestedRef: string, mergeBaseRef?: string): BaseRefResolution;
50
88
  export interface DiscriminationPlanInput {
51
89
  /** the git ref of pre-feature HEAD — the "base" the property test must fail against. */
52
90
  readonly baseRef: string;
91
+ /** merge-base already measured by the executor; mandatory to displace a sweeping HEAD. */
92
+ readonly mergeBaseRef?: string;
53
93
  /** property test(s) mapped from the ADR Confirmation. Empty ⇒ CANNOT_ISOLATE. */
54
94
  readonly propertyTests: readonly PropertyTestRef[];
55
- /** test-runner command template; sanitized. Default `npx vitest run`. */
95
+ /** repo-relative directory owning the TARGET package.json; `.` when the repository root owns it. */
96
+ readonly packageDir?: string;
97
+ /** TARGET package.json scripts.test. It is classified, never executed verbatim. */
98
+ readonly packageTestScript?: string | null;
99
+ /** TARGET package devDependency names, used only for the documented vitest tie-break. */
100
+ readonly packageDevDependencies?: readonly string[];
101
+ /** explicit safe escape hatch. Absence derives from packageTestScript; unsafe input refuses. */
56
102
  readonly runner?: string;
57
103
  }
58
104
  export interface DiscriminationPlan {
@@ -60,8 +106,16 @@ export interface DiscriminationPlan {
60
106
  readonly runnable: boolean;
61
107
  /** why not runnable, when `runnable` is false. */
62
108
  readonly reason?: string;
109
+ /** Plan-time state. REFUSE is non-passing; PENDING says execution evidence is still required. */
110
+ readonly verdict: 'PENDING' | 'REFUSE';
111
+ /** A plan alone has measured nothing; in particular every refusal is false. */
112
+ readonly measurementValid: false;
113
+ readonly primaryAction: PrimaryAction;
63
114
  /** the sanitized base ref actually used. */
64
115
  readonly baseRef: string;
116
+ readonly baseRefResolution: BaseRefResolution;
117
+ readonly runnerSelection: PlannedRunnerSelection;
118
+ readonly packageDir: string;
65
119
  /** the accepted, sanitized targets. */
66
120
  readonly targets: readonly PropertyTestRef[];
67
121
  /** refs rejected by sanitation, with the reason — surfaced so a rejection is never silent. */
@@ -70,12 +124,18 @@ export interface DiscriminationPlan {
70
124
  readonly reason: string;
71
125
  }[];
72
126
  /**
73
- * Ordered shell steps the caller runs: add a detached worktree at baseRef, copy each NEW property test
74
- * file into it (they do not exist at base), run the runner over the targets, then remove the worktree.
127
+ * Ordered shell steps the caller runs: add the complete detached revision at baseRef, run the selected
128
+ * package-scoped command over positional targets, then remove the worktree. No lone-file tree is valid.
75
129
  * `{{WORKTREE}}` is a placeholder the caller substitutes with a fresh temp dir path it owns — the engine
76
130
  * never invents a filesystem path. Commands use only sanitized tokens.
77
131
  */
78
132
  readonly commands: readonly string[];
133
+ /** The detached worktree itself supplies the complete revision; no lone-file copy is an isolation tree. */
134
+ readonly isolation: {
135
+ readonly materialization: 'full-revision-tree';
136
+ readonly revision: string;
137
+ readonly overlays: readonly string[];
138
+ };
79
139
  }
80
140
  export interface ClassifyInput {
81
141
  readonly propertyTests: readonly PropertyTestRef[];
@@ -1 +1 @@
1
- {"version":3,"file":"discrimination-gate.d.ts","sourceRoot":"","sources":["../src/discrimination-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discrimination-gate.d.ts","sourceRoot":"","sources":["../src/discrimination-gate.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,48 @@ const CANNOT_ISOLATE_REASON_SET = {
59
59
  timeout: true,
60
60
  };
61
61
  export const CANNOT_ISOLATE_REASONS = Object.keys(CANNOT_ISOLATE_REASON_SET);
62
+ /**
63
+ * Select one of the two runner families this instrument can measure honestly.
64
+ *
65
+ * The package script is used only for classification. Its flags and shell text are never spliced
66
+ * into a command: a wrapper or a third runner family is an explicit unsupported result. Vitest in
67
+ * devDependencies is the sole tie-break when scripts.test is absent; it still maps to the fixed
68
+ * command template below.
69
+ */
70
+ export function selectRunner(scriptsTest, devDeps) {
71
+ const script = typeof scriptsTest === 'string' && scriptsTest.trim() ? scriptsTest.trim() : null;
72
+ const tokens = script?.split(/\s+/) ?? [];
73
+ const hasShellControl = script !== null && /[\0`$;&|<>()\n\r]/.test(script);
74
+ if (!hasShellControl) {
75
+ const vitestOffset = tokens[0] === 'vitest'
76
+ ? 0
77
+ : tokens[0] === 'npx' && tokens[1] === 'vitest'
78
+ ? 1
79
+ : tokens[0] === 'pnpm' && tokens[1] === 'exec' && tokens[2] === 'vitest'
80
+ ? 2
81
+ : -1;
82
+ if (vitestOffset >= 0) {
83
+ return { kind: 'vitest', command: 'npx vitest run', runnerName: 'vitest', how: 'scripts.test' };
84
+ }
85
+ if (tokens[0] === 'node' && tokens[1] === '--test') {
86
+ return { kind: 'node-test', command: 'node --test', runnerName: 'node --test', how: 'scripts.test' };
87
+ }
88
+ }
89
+ const deps = Array.isArray(devDeps) ? devDeps : [];
90
+ if (script === null && deps.some((dep) => dep === 'vitest')) {
91
+ return { kind: 'vitest', command: 'npx vitest run', runnerName: 'vitest', how: 'dev-dependency' };
92
+ }
93
+ return { kind: 'unsupported', runnerName: tokens[0] ?? 'none', scriptsTest: script };
94
+ }
95
+ /** Resolve an audited pre-feature ref supplied by the executor. HEAD never wins over a merge-base. */
96
+ export function resolveDiscriminationBaseRef(requestedRef, mergeBaseRef) {
97
+ const requested = typeof requestedRef === 'string' ? requestedRef.trim() : '';
98
+ const mergeBase = typeof mergeBaseRef === 'string' ? mergeBaseRef.trim() : '';
99
+ if (requested === 'HEAD' && mergeBase) {
100
+ return { requestedRef: requested, resolvedRef: mergeBase, how: 'merge-base' };
101
+ }
102
+ return { requestedRef: requested, resolvedRef: requested, how: 'explicit-ref' };
103
+ }
62
104
  /** git-ref-safe characters only; rejects shell metacharacters and traversal that would break out of a token. */
63
105
  const SAFE_REF = /^[A-Za-z0-9_][A-Za-z0-9_./~^@{}-]{0,199}$/;
64
106
  /**
@@ -68,7 +110,6 @@ const SAFE_REF = /^[A-Za-z0-9_][A-Za-z0-9_./~^@{}-]{0,199}$/;
68
110
  * relative file, and anything exotic is safer rejected (and surfaced) than quoted-and-hoped.
69
111
  */
70
112
  const UNSAFE_PATH = /(^\/)|(^[A-Za-z]:)|(^~)|(^-)|(\/-)|(\.\.(\/|\\|$))|[\0`$;&|<>*?"'\n\r\t \\]/;
71
- const DEFAULT_RUNNER = 'npx vitest run';
72
113
  /** a runner must be a plain command with flags — no shell metacharacters that could chain a second command. */
73
114
  const UNSAFE_RUNNER = /[\0`$;&|<>()\n\r]/;
74
115
  function sanitizeName(name) {
@@ -84,13 +125,39 @@ function sanitizeName(name) {
84
125
  * ordered worktree commands. Returns `runnable:false` with a reason when there is nothing safe to run.
85
126
  */
86
127
  export function planDiscriminationCheck(input) {
87
- const baseRef = typeof input.baseRef === 'string' ? input.baseRef.trim() : '';
128
+ const requestedBaseRef = typeof input.baseRef === 'string' ? input.baseRef.trim() : '';
129
+ const baseRefResolution = resolveDiscriminationBaseRef(requestedBaseRef, input.mergeBaseRef);
130
+ const baseRef = baseRefResolution.resolvedRef;
131
+ const packageDirRaw = typeof input.packageDir === 'string' ? input.packageDir.trim().replace(/\/$/, '') : '.';
132
+ const packageDir = packageDirRaw || '.';
88
133
  const rejected = [];
89
- if (!SAFE_REF.test(baseRef)) {
90
- return { runnable: false, reason: 'unsafe-or-missing-base-ref', baseRef, targets: [], rejected, commands: [] };
134
+ const explicitRunner = typeof input.runner === 'string' && input.runner.trim() ? input.runner.trim() : null;
135
+ const runnerName = explicitRunner?.split(/\s+/)[0] ?? 'none';
136
+ const runnerSelection = explicitRunner
137
+ ? { kind: 'explicit', command: explicitRunner, runnerName, how: 'explicit-flag' }
138
+ : selectRunner(input.packageTestScript ?? null, input.packageDevDependencies ?? []);
139
+ const isolation = { materialization: 'full-revision-tree', revision: baseRef, overlays: [] };
140
+ const refuse = (reason, action = 'fix-runner-invocation') => ({
141
+ runnable: false,
142
+ reason,
143
+ verdict: 'REFUSE',
144
+ measurementValid: false,
145
+ primaryAction: action,
146
+ baseRef,
147
+ baseRefResolution,
148
+ runnerSelection,
149
+ packageDir,
150
+ targets: [],
151
+ rejected,
152
+ commands: [],
153
+ isolation,
154
+ });
155
+ if (!SAFE_REF.test(requestedBaseRef) || !SAFE_REF.test(baseRef)) {
156
+ return refuse('unsafe-or-missing-base-ref');
157
+ }
158
+ if (packageDir !== '.' && UNSAFE_PATH.test(packageDir)) {
159
+ return refuse('unsafe-package-dir');
91
160
  }
92
- const runnerRaw = typeof input.runner === 'string' && input.runner.trim() ? input.runner.trim() : DEFAULT_RUNNER;
93
- const runner = UNSAFE_RUNNER.test(runnerRaw) ? DEFAULT_RUNNER : runnerRaw;
94
161
  const targets = [];
95
162
  const seen = new Set();
96
163
  for (const t of Array.isArray(input.propertyTests) ? input.propertyTests : []) {
@@ -103,6 +170,10 @@ export function planDiscriminationCheck(input) {
103
170
  rejected.push({ file, reason: 'unsafe-path' });
104
171
  continue;
105
172
  }
173
+ if (packageDir !== '.' && !file.startsWith(`${packageDir}/`)) {
174
+ rejected.push({ file, reason: 'outside-target-package' });
175
+ continue;
176
+ }
106
177
  const name = t && typeof t.name === 'string' ? sanitizeName(t.name) : null;
107
178
  if (t && typeof t.name === 'string' && name === null) {
108
179
  rejected.push({ file, reason: 'unsafe-test-name' });
@@ -115,20 +186,46 @@ export function planDiscriminationCheck(input) {
115
186
  targets.push(name !== null ? { file, name } : { file });
116
187
  }
117
188
  if (targets.length === 0) {
118
- return { runnable: false, reason: 'no-isolable-test', baseRef, targets, rejected, commands: [] };
189
+ const plan = refuse('no-isolable-test', 'map-a-test');
190
+ return { ...plan, targets };
191
+ }
192
+ if (explicitRunner !== null && UNSAFE_RUNNER.test(explicitRunner)) {
193
+ const plan = refuse(`unsafe-runner:${runnerName}`);
194
+ return { ...plan, targets };
195
+ }
196
+ if (runnerSelection.kind === 'unsupported') {
197
+ const plan = refuse(`unsupported-runner:${runnerSelection.runnerName}`);
198
+ return { ...plan, targets };
119
199
  }
120
200
  // `{{WORKTREE}}` is substituted by the caller with a temp dir IT owns; the engine never invents a path.
121
- // Paths are already metacharacter-free (UNSAFE_PATH), but quote them + use `--` so a leading-dash or spaced
122
- // path can never become a runner option or split a word belt-and-suspenders over the sanitation above.
201
+ // `git worktree add` materialises the complete base revision. No lone property-test copy is emitted:
202
+ // a copied test without its sibling source/config tree is not an isolated revision and cannot measure.
123
203
  const commands = [`git worktree add --detach {{WORKTREE}} ${baseRef}`];
124
- for (const t of targets) {
125
- commands.push(`mkdir -p "{{WORKTREE}}/$(dirname -- '${t.file}')" && cp -- '${t.file}' "{{WORKTREE}}/${t.file}"`);
126
- }
127
- const fileArgs = [...new Set(targets.map((t) => t.file))].map((f) => `'${f}'`).join(' ');
128
- const nameFilters = targets.filter((t) => t.name).map((t) => `-t '${t.name}'`).join(' ');
129
- commands.push(`( cd {{WORKTREE}} && ${runner}${nameFilters ? ' ' + nameFilters : ''} -- ${fileArgs} )`);
204
+ const relativeToPackage = (file) => (packageDir === '.' ? file : file.slice(packageDir.length + 1));
205
+ const fileArgs = [...new Set(targets.map((t) => relativeToPackage(t.file)))].map((f) => `'${f}'`).join(' ');
206
+ const testNames = targets.filter((t) => t.name).map((t) => t.name);
207
+ const nameFilters = runnerSelection.kind === 'node-test'
208
+ ? testNames.map((name) => `--test-name-pattern '${name}'`).join(' ')
209
+ : testNames.map((name) => `-t '${name}'`).join(' ');
210
+ const runner = runnerSelection.command;
211
+ const runnerArgs = `${runner}${nameFilters ? ` ${nameFilters}` : ''} ${fileArgs}`;
212
+ const worktreePackageDir = packageDir === '.' ? '{{WORKTREE}}' : `{{WORKTREE}}/${packageDir}`;
213
+ commands.push(`( cd "${worktreePackageDir}" && ${runnerArgs} )`);
130
214
  commands.push(`git worktree remove --force {{WORKTREE}}`);
131
- return { runnable: true, baseRef, targets, rejected, commands };
215
+ return {
216
+ runnable: true,
217
+ verdict: 'PENDING',
218
+ measurementValid: false,
219
+ primaryAction: 'none',
220
+ baseRef,
221
+ baseRefResolution,
222
+ runnerSelection,
223
+ packageDir,
224
+ targets,
225
+ rejected,
226
+ commands,
227
+ isolation,
228
+ };
132
229
  }
133
230
  // ── Evidence production (ADR-001's root-disease fix) ─────────────────────────────────────────
134
231
  /** ANSI SGR sequences. vitest colours its summary even when piped (MEASURED), which would hide the