@mmnto/totem 1.81.0 → 1.82.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.
@@ -16,7 +16,7 @@
16
16
  // this core check takes it injected (DI), staying network-free + LLM-free.
17
17
  import { createHash } from 'node:crypto';
18
18
  import { z } from 'zod';
19
- import { AuthoredFixtureSchema, AuthoredProvenanceRecordSchema, isIso8601CalendarDate, } from '../compiler-schema.js';
19
+ import { AuthoredFixtureSchema, AuthoredNegativeFixtureSchema, AuthoredProvenanceRecordSchema, isIso8601CalendarDate, } from '../compiler-schema.js';
20
20
  /** The matcher engines an authored rule may declare (mirrors `CompiledRule.engine`). */
21
21
  export const DeclaredEngineSchema = z.enum(['regex', 'ast', 'ast-grep']);
22
22
  // The §3 eligibility-basis forms: `whitelist:<class>` (the cert-#1 deterministic basis,
@@ -68,7 +68,10 @@ export const AuthoredOriginSchema = z.union([
68
68
  // mint-producible (#2259 CR: a looser `-\d+` admitted ids like `…-0`/`…-01` the mint can't
69
69
  // make). Pinned as a shared constant binding the SCHEMA boundary to the mint's codomain.
70
70
  const AUTHORED_RULE_ID_HEX_LEN = 16;
71
- const AUTHORED_RULE_ID_RE = new RegExp(`^[0-9a-f]{${AUTHORED_RULE_ID_HEX_LEN}}(?:-[1-9]\\d*)?$`);
71
+ // Exported so the compile seam (the §8 identity selector) can assert an authored
72
+ // candidate's ruleId is well-formed BEFORE enthroning it as the rule's identity —
73
+ // the same shared boundary↔codomain constant, one home (Tenet 20).
74
+ export const AUTHORED_RULE_ID_RE = new RegExp(`^[0-9a-f]{${AUTHORED_RULE_ID_HEX_LEN}}(?:-[1-9]\\d*)?$`);
72
75
  /**
73
76
  * ADR-112 §3 — the authored producer's sole output envelope. Parallel to
74
77
  * ADR-111's `CandidateRuleRecord` but carrying the AUTHORED provenance variant,
@@ -178,8 +181,12 @@ export const AuthoredRuleInputSchema = z
178
181
  positiveFixtures: z.array(AuthoredFixtureSchema).min(1, {
179
182
  message: 'an authored rule must declare ≥1 positive fixture (ADR-112 §3)',
180
183
  }),
181
- /** Declared near-misses the rule must stay silent on (feeds §6 negative controls). */
182
- negativeFixtures: z.array(AuthoredFixtureSchema).optional(),
184
+ /**
185
+ * Declared SILENCE-ONLY near-misses the rule must stay silent on (feeds §6
186
+ * `controls.negative[]`). The `nearMissSource` shape (strategy#770) — one side,
187
+ * no bad/good pair, no `pr` — NOT the positiveFixtures fixture shape.
188
+ */
189
+ negativeFixtures: z.array(AuthoredNegativeFixtureSchema).optional(),
183
190
  /**
184
191
  * Accelerant lineage (§7). Optional in the YAML; the reader defaults an
185
192
  * absent value to `{ kind: 'from-scratch' }` when constructing the record, so
@@ -299,6 +306,11 @@ export function toCompileFeed(records) {
299
306
  // compiled under THAT engine — a regex-whitelisted rule whose dslSource parses
300
307
  // as ast-grep must fail loud, not silently re-route to a different engine.
301
308
  declaredEngine: record.declaredEngine,
309
+ // §8 id-unification: carry the persisted, minted ruleId so the compiler makes it
310
+ // the compiled rule's identity (`firingLabelId ← ruleId`) instead of the
311
+ // dslSource-derived hash — stable across a matcher edit, never orphaning the
312
+ // rule's wind-tunnel controls. Slice C2a.
313
+ ruleId: record.ruleId,
302
314
  unverified: true,
303
315
  });
304
316
  entries.push({
@@ -1 +1 @@
1
- {"version":3,"file":"authored-rule.js","sourceRoot":"","sources":["../../src/spine/authored-rule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authored-rule.js","sourceRoot":"","sources":["../../src/spine/authored-rule.ts"],"names":[],"mappings":"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"}
@@ -49,15 +49,30 @@ export declare const AuthoringLedgerEntrySchema: z.ZodObject<{
49
49
  suggestionHash: string;
50
50
  }>]>;
51
51
  /**
52
- * The fixture PRs bound by this rule, split by control role (codex diff-review):
53
- * positive fixtures the matcher must CATCH (§4 preimage-differential) and negative
54
- * near-misses it must STAY SILENT on (§6). BOTH are part of the legitimacy surface C
55
- * must resolve to the train slice, so the ledger the CI-observable FM(e) attestation
56
- * artifact — must enumerate BOTH, not positives only (a C that trusted a single list
57
- * would miss the negatives). `negativeFixturePrs` is `[]` when none were declared.
52
+ * The train-side `positiveFixtures` PRs bound by this rule the §5(2) leakage-guard
53
+ * attestation. Every positive fixture must resolve to the train slice (the matcher was
54
+ * authored against it); the ledger is the CI-observable FM(e) artifact that enumerates
55
+ * them so C can verify train-side membership.
56
+ *
57
+ * The §5(2) attestation is POSITIVES-ONLY (strategy#770 + the Q-C ruling): a §6 negative
58
+ * control is a SILENCE-ONLY near-miss with no `pr`. A synthetic `kind:'lesson'` exemplar
59
+ * has no corpus position, so there is nothing to train-side-leak-check — §5(2)'s guard
60
+ * targets *corpus-drawn* fixtures, and only `positiveFixtures` are mandated train-side.
61
+ * Enumerating negative PRs was an impl-extra beyond the contract; the attestation drops it.
62
+ * (A future `kind:'commit'` near-miss DOES have a corpus position; its train-side
63
+ * `commitSha` attestation returns WITH the deferred commit-source fallback — parallel to
64
+ * the commit-pair preimage deferral.)
58
65
  */
59
66
  positiveFixturePrs: z.ZodArray<z.ZodNumber, "many">;
60
- negativeFixturePrs: z.ZodArray<z.ZodNumber, "many">;
67
+ /**
68
+ * LEGACY READ-COMPAT ONLY (pre-#770) — NOT an attestation. `totem rule author` ≤1.81.1
69
+ * wrote `negativeFixturePrs: []` on every row, and `runRuleAuthor` re-reads the FULL
70
+ * existing ledger before writing, so this `.strict()` reader must still PARSE those rows
71
+ * rather than throw on upgrade (greptile-P1 / CR). It is NEVER written by the current
72
+ * intake (the attestation is positives-only, above), so the ledger self-heals to the new
73
+ * shape on the next revision write. Optional + tolerated, never read for leakage-checking.
74
+ */
75
+ negativeFixturePrs: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
61
76
  /**
62
77
  * Fingerprint of the MATERIAL author input (engine / class / matcher /
63
78
  * fixtures / origin) — identity (`author`/`targetDefect`/`ruleId`) AND
@@ -90,7 +105,7 @@ export declare const AuthoringLedgerEntrySchema: z.ZodObject<{
90
105
  authoredAfterSplit: true;
91
106
  heldOutNonInspectionAttestation: true;
92
107
  positiveFixturePrs: number[];
93
- negativeFixturePrs: number[];
108
+ negativeFixturePrs?: number[] | undefined;
94
109
  }, {
95
110
  contentHash: string;
96
111
  author: string;
@@ -114,7 +129,7 @@ export declare const AuthoringLedgerEntrySchema: z.ZodObject<{
114
129
  authoredAfterSplit: true;
115
130
  heldOutNonInspectionAttestation: true;
116
131
  positiveFixturePrs: number[];
117
- negativeFixturePrs: number[];
132
+ negativeFixturePrs?: number[] | undefined;
118
133
  }>;
119
134
  export type AuthoringLedgerEntry = z.infer<typeof AuthoringLedgerEntrySchema>;
120
135
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"authoring-ledger.d.ts","sourceRoot":"","sources":["../../src/spine/authoring-ledger.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;IAInC,0JAA0J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAS1J;;;;;;;OAOG;;;IAGH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGI,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAoB9E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,+BAA+B,EAAE,OAAO,CAAC;IACzC,sGAAsG;IACtG,qBAAqB,EAAE,OAAO,CAAC;CAChC,GAAG,MAAM,CAKT;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAsC5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAuB9F;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAExE;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG;IACpF,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB,CA2BA"}
1
+ {"version":3,"file":"authoring-ledger.d.ts","sourceRoot":"","sources":["../../src/spine/authoring-ledger.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;IAInC,0JAA0J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAS1J;;;;;;;;;;;;;;OAcG;;IAEH;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGI,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAoB9E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,+BAA+B,EAAE,OAAO,CAAC;IACzC,sGAAsG;IACtG,qBAAqB,EAAE,OAAO,CAAC;CAChC,GAAG,MAAM,CAKT;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAsC5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAuB9F;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAExE;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG;IACpF,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB,CA2BA"}
@@ -47,15 +47,30 @@ export const AuthoringLedgerEntrySchema = z
47
47
  structuralEligibility: StructEligResultSchema,
48
48
  origin: AuthoredOriginSchema,
49
49
  /**
50
- * The fixture PRs bound by this rule, split by control role (codex diff-review):
51
- * positive fixtures the matcher must CATCH (§4 preimage-differential) and negative
52
- * near-misses it must STAY SILENT on (§6). BOTH are part of the legitimacy surface C
53
- * must resolve to the train slice, so the ledger the CI-observable FM(e) attestation
54
- * artifact — must enumerate BOTH, not positives only (a C that trusted a single list
55
- * would miss the negatives). `negativeFixturePrs` is `[]` when none were declared.
50
+ * The train-side `positiveFixtures` PRs bound by this rule the §5(2) leakage-guard
51
+ * attestation. Every positive fixture must resolve to the train slice (the matcher was
52
+ * authored against it); the ledger is the CI-observable FM(e) artifact that enumerates
53
+ * them so C can verify train-side membership.
54
+ *
55
+ * The §5(2) attestation is POSITIVES-ONLY (strategy#770 + the Q-C ruling): a §6 negative
56
+ * control is a SILENCE-ONLY near-miss with no `pr`. A synthetic `kind:'lesson'` exemplar
57
+ * has no corpus position, so there is nothing to train-side-leak-check — §5(2)'s guard
58
+ * targets *corpus-drawn* fixtures, and only `positiveFixtures` are mandated train-side.
59
+ * Enumerating negative PRs was an impl-extra beyond the contract; the attestation drops it.
60
+ * (A future `kind:'commit'` near-miss DOES have a corpus position; its train-side
61
+ * `commitSha` attestation returns WITH the deferred commit-source fallback — parallel to
62
+ * the commit-pair preimage deferral.)
56
63
  */
57
64
  positiveFixturePrs: z.array(z.number().int().positive()),
58
- negativeFixturePrs: z.array(z.number().int().positive()),
65
+ /**
66
+ * LEGACY READ-COMPAT ONLY (pre-#770) — NOT an attestation. `totem rule author` ≤1.81.1
67
+ * wrote `negativeFixturePrs: []` on every row, and `runRuleAuthor` re-reads the FULL
68
+ * existing ledger before writing, so this `.strict()` reader must still PARSE those rows
69
+ * rather than throw on upgrade (greptile-P1 / CR). It is NEVER written by the current
70
+ * intake (the attestation is positives-only, above), so the ledger self-heals to the new
71
+ * shape on the next revision write. Optional + tolerated, never read for leakage-checking.
72
+ */
73
+ negativeFixturePrs: z.array(z.number().int().positive()).optional(),
59
74
  /**
60
75
  * Fingerprint of the MATERIAL author input (engine / class / matcher /
61
76
  * fixtures / origin) — identity (`author`/`targetDefect`/`ruleId`) AND
@@ -1 +1 @@
1
- {"version":3,"file":"authoring-ledger.js","sourceRoot":"","sources":["../../src/spine/authoring-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authoring-ledger.js","sourceRoot":"","sources":["../../src/spine/authoring-ledger.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,6 @@ const baseEntry = (over = {}) => ({
26
26
  },
27
27
  origin: { kind: 'from-scratch' },
28
28
  positiveFixturePrs: [101],
29
- negativeFixturePrs: [],
30
29
  contentHash: 'deadbeef',
31
30
  ...over,
32
31
  });
@@ -75,6 +74,19 @@ describe('authoring-ledger fail-loud round-trip (FM(e))', () => {
75
74
  expect(back).toHaveLength(1);
76
75
  expect(back[0]?.ruleId).toBe('a'.repeat(16));
77
76
  });
77
+ it('READS a legacy row carrying negativeFixturePrs (pre-#770) without throwing — tolerated, never written (greptile-P1/CR)', () => {
78
+ // `totem rule author` <=1.81.1 persisted negativeFixturePrs on every row; runRuleAuthor
79
+ // re-reads the full ledger before writing, so the strict reader must parse those rows on
80
+ // upgrade rather than throw. The field is read-tolerated (optional), never re-written.
81
+ const file = path.join(dir, AUTHORING_LEDGER_DIR, AUTHORING_LEDGER_FILE);
82
+ fs.mkdirSync(path.dirname(file), { recursive: true });
83
+ const legacyRow = { ...baseEntry(), negativeFixturePrs: [202] };
84
+ fs.writeFileSync(file, JSON.stringify(legacyRow) + '\n', 'utf-8');
85
+ const back = readAuthoringLedger(dir);
86
+ expect(back).toHaveLength(1);
87
+ expect(back[0]?.ruleId).toBe('a'.repeat(16));
88
+ expect(back[0]?.negativeFixturePrs).toEqual([202]);
89
+ });
78
90
  it('returns [] when the ledger does not exist yet', () => {
79
91
  expect(readAuthoringLedger(dir)).toEqual([]);
80
92
  });
@@ -1 +1 @@
1
- {"version":3,"file":"authoring-ledger.test.js","sourceRoot":"","sources":["../../src/spine/authoring-ledger.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authoring-ledger.test.js","sourceRoot":"","sources":["../../src/spine/authoring-ledger.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAErE,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EAEpB,0BAA0B,EAC1B,WAAW,EACX,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,IAAI,GAAW,CAAC;AAChB,UAAU,CAAC,GAAG,EAAE;IACd,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AACH,SAAS,CAAC,GAAG,EAAE;IACb,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAAC,OAAsC,EAAE,EAAwB,EAAE,CAAC,CAAC;IACrF,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IACtB,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,0BAA0B;IACxC,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,kBAAkB;IAC5B,kBAAkB,EAAE,IAAI;IACxB,+BAA+B,EAAE,IAAI;IACrC,qBAAqB,EAAE;QACrB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,mCAAmC;QAC1C,QAAQ,EAAE,yBAAyB;KACpC;IACD,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;IAChC,kBAAkB,EAAE,CAAC,GAAG,CAAC;IACzB,WAAW,EAAE,UAAU;IACvB,GAAG,IAAI;CACR,CAAC,CAAC;AAEH,QAAQ,CAAC,oFAAoF,EAAE,GAAG,EAAE;IAClG,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,oFAAoF;QACpF,sFAAsF;QACtF,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,OAAO,GAAG;YACd,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAClF,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;SACnF,CAAC;QACF,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrF,MAAM,EAAE,UAAU,EAAE,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CACxF,IAAI,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/F,MAAM,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,6FAA6F,EAAE,GAAG,EAAE;QACrG,MAAM,OAAO,GAAG;YACd,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAChF,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;SAC/E,CAAC;QACF,MAAM,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,0BAA0B,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wHAAwH,EAAE,GAAG,EAAE;QAChI,wFAAwF;QACxF,yFAAyF;QACzF,uFAAuF;QACvF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;QACzE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,kBAAkB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;QACzE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,CAAC,GAAG,EAAE,CACV,0BAA0B,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAqC,CAAC,CACpF,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8DAA8D,EAAE,GAAG,EAAE;IAC5E,MAAM,QAAQ,GAAG;QACf,cAAc,EAAE,OAAO;QACvB,eAAe,EAAE,yBAAyB;QAC1C,SAAS,EAAE,MAAM;QACjB,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,EAAE,IAAI,EAAE,cAAuB,EAAE;QACzC,QAAQ,EAAE,kBAAkB;QAC5B,kBAAkB,EAAE,IAAa;QACjC,+BAA+B,EAAE,IAAa;QAC9C,qBAAqB,EAAE;YACrB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,mCAAmC;YAC1C,QAAQ,EAAE,yBAAyB;SACpC;KACF,CAAC;IACF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAC7C,oBAAoB,CAAC,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAC1D,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAC7C,oBAAoB,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAC7C,oBAAoB,CAAC;YACnB,GAAG,QAAQ;YACX,qBAAqB,EAAE,EAAE,GAAG,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,EAAE,aAAa,EAAE;SACtF,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8FAA8F,EAAE,GAAG,EAAE;QACtG,uFAAuF;QACvF,wFAAwF;QACxF,MAAM,CAAC,oBAAoB,CAAC,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAC/E,oBAAoB,CAAC,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CACnE,CAAC;QACF,sEAAsE;QACtE,MAAM,CACJ,oBAAoB,CAAC,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAC5F,CAAC,IAAI,CACJ,oBAAoB,CAAC,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAC1F,CAAC;QACF,sFAAsF;QACtF,gGAAgG;QAChG,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC;YACxC;gBACE,EAAE,EAAE,CAAC;gBACL,cAAc,EAAE;oBACd,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,kBAAkB;oBAC7B,UAAU;oBACV,WAAW,EAAE,IAAI;iBAClB;aACF;SACF,CAAC;QACF,MAAM,CACJ,oBAAoB,CAAC,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CACrF,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -33,6 +33,17 @@ export interface CompileInputCandidate {
33
33
  * `dslSource`-derived, so it carries no independent declaration to bind against.
34
34
  */
35
35
  declaredEngine?: 'regex' | 'ast' | 'ast-grep';
36
+ /**
37
+ * ADR-112 §8 — the persisted, minted rule identity (AUTHORED producer only;
38
+ * `mintAuthoredRuleId`, threaded from the record via `toCompileFeed`). When present,
39
+ * `compileCandidate` makes it the compiled rule's `lessonHash` so the wind-tunnel
40
+ * `firingLabelId` (and the §6 `controls.positive[].targetRuleId` it must match)
41
+ * embed it — the §8/§9 id-unification (`firingLabelId ← ruleId`, replacing the
42
+ * `dslSource`-derived hash). Stable across a matcher edit by construction, so
43
+ * tightening `dslSource` never orphans the rule's ground-truth labels. The MINED
44
+ * producer omits it — its identity is the `dslSource`-derived content hash.
45
+ */
46
+ ruleId?: string;
36
47
  unverified: true;
37
48
  }
38
49
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"candidate-rule.d.ts","sourceRoot":"","sources":["../../src/spine/candidate-rule.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,yCAAuC,CAAC;AAChF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,UAAU,CAAC;IAC9C,UAAU,EAAE,IAAI,CAAC;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;IACpC;;;;;;OAMG;;;;;;;;;;;;;;;;;IAEH,4EAA4E;;IAE5E;;;;;;OAMG;;IAIH;;;;;OAKG;;IAIH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
1
+ {"version":3,"file":"candidate-rule.d.ts","sourceRoot":"","sources":["../../src/spine/candidate-rule.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,yCAAuC,CAAC;AAChF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,UAAU,CAAC;IAC9C;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;IACpC;;;;;;OAMG;;;;;;;;;;;;;;;;;IAEH,4EAA4E;;IAE5E;;;;;;OAMG;;IAIH;;;;;OAKG;;IAIH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"candidate-rule.js","sourceRoot":"","sources":["../../src/spine/candidate-rule.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,yEAAyE;AACzE,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,gFAAgF;AAChF,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAC9E,6DAA6D;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,yBAAyB,EAAyB,MAAM,uBAAuB,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;AA8BhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD;;;;;;OAMG;IACH,UAAU,EAAE,yBAAyB;IACrC,4EAA4E;IAC5E,qBAAqB,EAAE,2BAA2B;IAClD;;;;;;OAMG;IACH,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;QACjE,OAAO,EAAE,0DAA0D;KACpE,CAAC;IACF;;;;;OAKG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;QACvD,OAAO,EAAE,6BAA6B;KACvC,CAAC;IACF;;;;;OAKG;IACH,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;CAC5B,CAAC,CAAC"}
1
+ {"version":3,"file":"candidate-rule.js","sourceRoot":"","sources":["../../src/spine/candidate-rule.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,yEAAyE;AACzE,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,gFAAgF;AAChF,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAC9E,6DAA6D;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,yBAAyB,EAAyB,MAAM,uBAAuB,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;AAyChF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD;;;;;;OAMG;IACH,UAAU,EAAE,yBAAyB;IACrC,4EAA4E;IAC5E,qBAAqB,EAAE,2BAA2B;IAClD;;;;;;OAMG;IACH,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;QACjE,OAAO,EAAE,0DAA0D;KACpE,CAAC;IACF;;;;;OAKG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;QACvD,OAAO,EAAE,6BAA6B;KACvC,CAAC;IACF;;;;;OAKG;IACH,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;CAC5B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/spine/compile.ts"],"names":[],"mappings":"AAyBA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EAExB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAuB,MAAM,cAAc,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC7C,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,gGAAgG;AAChG,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,2GAA2G;IAC3G,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAOD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,qBAAqB,EAChC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACpB,cAAc,CA2DhB;AA6DD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAyF7B"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/spine/compile.ts"],"names":[],"mappings":"AAyBA,OAAO,EACL,KAAK,YAAY,EAGjB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAuB,MAAM,cAAc,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC7C,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,gGAAgG;AAChG,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,2GAA2G;IAC3G,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAOD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,qBAAqB,EAChC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACpB,cAAc,CA6FhB;AA6DD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAyF7B"}
@@ -22,9 +22,10 @@
22
22
  // deliberately import ONLY this validator and NEVER the frozen actuator functions.
23
23
  import { validateAstGrepPattern } from '../compile-lesson.js';
24
24
  import { engineFields, hashLesson, sanitizeFileGlobs, validateRegex } from '../compiler.js';
25
- import { CompiledRuleSchema, } from '../compiler-schema.js';
25
+ import { CompiledRuleSchema, isAuthoredProvenance, } from '../compiler-schema.js';
26
26
  import { extractManualPattern } from '../lesson-pattern.js';
27
27
  import { getDefaultBaseline, verifyAgainstCodebase, } from '../stage4-verifier.js';
28
+ import { AUTHORED_RULE_ID_RE } from './authored-rule.js';
28
29
  /** Stable, deterministic lesson heading for a candidate (unique via its `clr-…` ledger ref). */
29
30
  function candidateHeading(candidate) {
30
31
  return `Gate-1 rule candidate (${candidate.classifierLedgerRef})`;
@@ -42,6 +43,31 @@ export function compileCandidate(candidate, opts) {
42
43
  if (candidate.classifierDisposition === 'behavioral') {
43
44
  throw new Error(`[Totem Error] compileCandidate: behavioral candidate '${candidate.classifierLedgerRef}' must never be compiled (FM(c))`);
44
45
  }
46
+ // ADR-112 §8/§9 id-unification (AUTHORED producer): an authored rule's compiled
47
+ // identity IS its persisted, minted `ruleId` (`firingLabelId ← ruleId`), NOT the
48
+ // `dslSource`-derived `hashLesson`. The hash is the FORBIDDEN authored-identity
49
+ // basis (§8): it drifts on a matcher edit, and because `firingLabelId` embeds the
50
+ // id, any drift orphans the rule's ground-truth labels + `controls.positive[].
51
+ // targetRuleId`. The authored-only `ruleId` must be PRESENT + WELL-FORMED for an
52
+ // authored candidate and ABSENT for a mined one (mined stay content-keyed,
53
+ // byte-identical). This is a PRODUCER-CONTRACT precondition (like the behavioral
54
+ // guard above), so it is asserted UP FRONT — before DSL parse/validation — so a
55
+ // violation ALWAYS fails loud and is never masked by a coincidental parse error /
56
+ // `rejected` outcome (CR). `isAuthoredProvenance` is the canonical discriminator
57
+ // (Tenet-20 single-home — absence ⇒ mined via `provenanceKind`), not a raw `.kind`.
58
+ let authoredLessonHash;
59
+ if (isAuthoredProvenance(candidate.provenance)) {
60
+ if (candidate.ruleId === undefined) {
61
+ throw new Error(`[Totem Error] compileCandidate: authored candidate '${candidate.classifierLedgerRef}' is missing its persisted ruleId — the ADR-112 §8 firingLabelId←ruleId unification requires it threaded through toCompileFeed (a threading regression would silently re-derive a dslSource-keyed identity and orphan its controls)`);
62
+ }
63
+ if (!AUTHORED_RULE_ID_RE.test(candidate.ruleId)) {
64
+ throw new Error(`[Totem Error] compileCandidate: authored candidate '${candidate.classifierLedgerRef}' has a malformed ruleId '${candidate.ruleId}' — must be a minted authored rule id (16 hex + optional -<n> suffix, ADR-112 §3/§8); a malformed id becomes the firingLabelId basis and would orphan its controls.positive[].targetRuleId`);
65
+ }
66
+ authoredLessonHash = candidate.ruleId;
67
+ }
68
+ else if (candidate.ruleId !== undefined) {
69
+ throw new Error(`[Totem Error] compileCandidate: non-authored candidate '${candidate.classifierLedgerRef}' must not carry a ruleId — mined identities stay dslSource-derived (ADR-112 §8 authored-only contract)`);
70
+ }
45
71
  // May throw TotemParseError (e.g. a yaml fence under a non-ast-grep engine) — that
46
72
  // propagates loudly as a producer bug; it would also have been dropped at extract.
47
73
  const mp = extractManualPattern(candidate.dslSource);
@@ -66,7 +92,9 @@ export function compileCandidate(candidate, opts) {
66
92
  const heading = candidateHeading(candidate);
67
93
  const ef = engineFields(mp.engine, mp.astGrepYamlRule ?? mp.pattern);
68
94
  const rule = CompiledRuleSchema.parse({
69
- lessonHash: hashLesson(heading, candidate.dslSource),
95
+ // §8 id-unification: authored identity is the validated, minted ruleId (asserted
96
+ // up front, above); a mined candidate stays the dslSource-derived content hash.
97
+ lessonHash: authoredLessonHash ?? hashLesson(heading, candidate.dslSource),
70
98
  lessonHeading: heading,
71
99
  message: mp.message ?? heading,
72
100
  engine: mp.engine,
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/spine/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/spine/compile.ts"],"names":[],"mappings":"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"}
@@ -399,5 +399,91 @@ describe('runCompileStage — ADR-112 authored compile-feed', () => {
399
399
  const feed = [base.candidates[0], base.candidates[0]];
400
400
  await expect(runCompileStage({ ...base, candidates: feed }, compileDeps({ 'src/a.ts': 'forbiddenCall()' }))).rejects.toThrow(/duplicate classifierLedgerRef/);
401
401
  });
402
+ // ── ADR-112 §8/§9 id-unification: firingLabelId ← ruleId (slice C2a) ──
403
+ it('threads the persisted ruleId onto the compiled identity (lessonHash ← ruleId), not the dslSource hash', async () => {
404
+ const rec = authored('alr-id', REGEX_DSL);
405
+ const r = await runCompileStage(toCompileFeed([rec]), compileDeps({ 'src/a.ts': 'forbiddenCall()' }));
406
+ // The compiled rule's identity IS the minted ruleId — the wind-tunnel firingLabelId
407
+ // embeds it, and controls.positive[].targetRuleId joins on it (§6/§8).
408
+ expect(r.compiled[0].rule.lessonHash).toBe(rec.ruleId);
409
+ });
410
+ it('keeps the authored identity STABLE across a dslSource (matcher) edit — §8 no-orphan', () => {
411
+ // Same author + targetDefect → same minted ruleId; only the matcher changes.
412
+ const REGEX_DSL_EDITED = REGEX_DSL.replace('forbiddenCall\\(', 'forbiddenCall2\\(');
413
+ const before = authored('alr-stable', REGEX_DSL);
414
+ const after = authored('alr-stable', REGEX_DSL_EDITED);
415
+ expect(after.ruleId).toBe(before.ruleId); // the id does NOT derive from dslSource
416
+ const compiledBefore = compileCandidate(toCompileFeed([before]).candidates[0], { now: NOW });
417
+ const compiledAfter = compileCandidate(toCompileFeed([after]).candidates[0], { now: NOW });
418
+ expect(compiledBefore.kind).toBe('compiled');
419
+ expect(compiledAfter.kind).toBe('compiled');
420
+ if (compiledBefore.kind === 'compiled' && compiledAfter.kind === 'compiled') {
421
+ // A tightened matcher never orphans the rule's ground-truth labels / controls —
422
+ // the §8 reason dslSource is excluded from identity.
423
+ expect(compiledBefore.rule.lessonHash).toBe(before.ruleId);
424
+ expect(compiledAfter.rule.lessonHash).toBe(before.ruleId);
425
+ }
426
+ });
427
+ it('round-trips a collision-suffixed ruleId (-N) onto the identity verbatim', () => {
428
+ // A second rule by one author on one targetDefect mints `<seed>-1` (§8 disambiguation);
429
+ // the suffix must survive onto lessonHash so distinct matchers never share a firing key.
430
+ const rec = {
431
+ ...authored('alr-collide', REGEX_DSL),
432
+ ruleId: '0123456789abcdef-1',
433
+ };
434
+ const out = compileCandidate(toCompileFeed([rec]).candidates[0], { now: NOW });
435
+ expect(out.kind).toBe('compiled');
436
+ if (out.kind === 'compiled')
437
+ expect(out.rule.lessonHash).toBe('0123456789abcdef-1');
438
+ });
439
+ it('leaves a MINED rule keyed on the content hash (no ruleId → dslSource-derived), unchanged', () => {
440
+ // The unification is authored-only: a mined candidate carries no ruleId, so its identity
441
+ // stays the content hash — byte-identical to pre-C2a, and never the authored ruleId.
442
+ const out = compileCandidate(candidateRule(1, REGEX_DSL), { now: NOW });
443
+ expect(out.kind).toBe('compiled');
444
+ if (out.kind === 'compiled') {
445
+ expect(out.rule.lessonHash).toMatch(/^[0-9a-f]{16}$/); // bare content hash, no -N suffix
446
+ expect(out.rule.lessonHash).not.toBe(authored('alr-id', REGEX_DSL).ruleId);
447
+ }
448
+ });
449
+ it('fails loud if an authored candidate reaches the compiler without its persisted ruleId (threading regression)', () => {
450
+ // toCompileFeed always threads it; a hand-built authored candidate missing it would
451
+ // silently re-derive a dslSource-keyed identity and orphan its controls — reject up front.
452
+ const candidate = {
453
+ provenance: authored('alr-missing', REGEX_DSL).provenance,
454
+ classifierDisposition: 'structural',
455
+ classifierLedgerRef: 'authored:alr-missing',
456
+ dslSource: REGEX_DSL,
457
+ declaredEngine: 'regex',
458
+ unverified: true,
459
+ // ruleId intentionally omitted
460
+ };
461
+ expect(() => compileCandidate(candidate, { now: NOW })).toThrow(/missing its persisted ruleId/);
462
+ });
463
+ it('fails loud if a MINED candidate carries a ruleId — the authored-only contract is enforced, not assumed', () => {
464
+ // A mined candidate's identity stays the dslSource-derived hash; a stray ruleId
465
+ // (well-formed or not) must NOT silently re-key it. Gated on isAuthoredProvenance,
466
+ // not the permissive `?? hashLesson` (bot-round: gemini/greptile-P1/CR).
467
+ const candidate = {
468
+ ...candidateRule(7, REGEX_DSL),
469
+ ruleId: '0123456789abcdef', // well-formed, yet still rejected for a mined candidate
470
+ };
471
+ expect(() => compileCandidate(candidate, { now: NOW })).toThrow(/must not carry a ruleId/);
472
+ });
473
+ it('fails loud if an authored candidate carries a malformed ruleId — id-shape precondition (greptile-P2)', () => {
474
+ // The seam enthrones the ruleId as the firingLabelId basis, so a malformed id
475
+ // (would orphan controls.positive[].targetRuleId) is rejected at the use site,
476
+ // not just at the schema parse boundary.
477
+ const candidate = {
478
+ provenance: authored('alr-bad', REGEX_DSL).provenance,
479
+ classifierDisposition: 'structural',
480
+ classifierLedgerRef: 'authored:alr-bad',
481
+ dslSource: REGEX_DSL,
482
+ declaredEngine: 'regex',
483
+ ruleId: 'not-a-valid-rule-id',
484
+ unverified: true,
485
+ };
486
+ expect(() => compileCandidate(candidate, { now: NOW })).toThrow(/malformed ruleId/);
487
+ });
402
488
  });
403
489
  //# sourceMappingURL=compile.test.js.map