@llm4ts/flow 2.33.0 → 2.34.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.
@@ -8,12 +8,13 @@ declare const Diagnostic_base: Schema.Class<Diagnostic, Schema.Struct<{
8
8
  }>, {}>;
9
9
  export declare class Diagnostic extends Diagnostic_base {
10
10
  }
11
- export declare const DiagnosticsFormat: Schema.Literals<readonly ["json", "cargo"]>;
11
+ export declare const DiagnosticsFormat: Schema.Literals<readonly ["json", "cargo", "tsc"]>;
12
12
  export type DiagnosticsFormat = typeof DiagnosticsFormat.Type;
13
13
  /**
14
14
  * `json`: one `{file, line?, message, unit?}` object per line. `cargo`:
15
15
  * `cargo check --message-format=json`, errors only, the crate as the unit.
16
- * Lines that do not parse are skipped: a build prints more than diagnostics.
16
+ * `tsc`: `tsc --pretty false`, the file's top folders as the unit. Lines
17
+ * that do not parse are skipped: a build prints more than diagnostics.
17
18
  */
18
19
  export declare const parseDiagnostics: (text: string, format?: DiagnosticsFormat) => ReadonlyArray<Diagnostic>;
19
20
  /** Diagnostics by the unit a fixer owns, in a stable order. */
@@ -1 +1 @@
1
- {"version":3,"file":"Diagnostics.d.ts","sourceRoot":"","sources":["../src/Diagnostics.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;IAMrC,6FAA6F;;;AAJ/F,qBAAa,UAAW,SAAQ,eAM9B;CAAG;AAEL,eAAO,MAAM,iBAAiB,6CAAqC,CAAA;AACnE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AA2B7D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,SAAQ,iBAA0B,KACjC,aAAa,CAAC,UAAU,CA4B1B,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,GAC3B,aAAa,aAAa,CAAC,UAAU,CAAC,KACrC,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAAE,CAS1F,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,GAAI,aAAa,aAAa,CAAC,UAAU,CAAC,EAAE,cAAU,KAAG,MASzE,CAAA"}
1
+ {"version":3,"file":"Diagnostics.d.ts","sourceRoot":"","sources":["../src/Diagnostics.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;IAMrC,6FAA6F;;;AAJ/F,qBAAa,UAAW,SAAQ,eAM9B;CAAG;AAEL,eAAO,MAAM,iBAAiB,oDAA4C,CAAA;AAC1E,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AA4B7D;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,SAAQ,iBAA0B,KACjC,aAAa,CAAC,UAAU,CA8C1B,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,GAC3B,aAAa,aAAa,CAAC,UAAU,CAAC,KACrC,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAAE,CAS1F,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,GAAI,aAAa,aAAa,CAAC,UAAU,CAAC,EAAE,cAAU,KAAG,MASzE,CAAA"}
@@ -11,8 +11,9 @@ export class Diagnostic extends Schema.Class("Diagnostic")({
11
11
  unit: Schema.optionalKey(Schema.String)
12
12
  }) {
13
13
  }
14
- export const DiagnosticsFormat = Schema.Literals(["json", "cargo"]);
14
+ export const DiagnosticsFormat = Schema.Literals(["json", "cargo", "tsc"]);
15
15
  const decodeJsonLine = Schema.decodeUnknownOption(Schema.fromJsonString(Diagnostic));
16
+ const tscLine = /^(.+?)\((\d+),\d+\): error (TS\d+: .+)$/u;
16
17
  const CargoMessage = Schema.fromJsonString(Schema.Struct({
17
18
  reason: Schema.optionalKey(Schema.String),
18
19
  target: Schema.optionalKey(Schema.Struct({ name: Schema.optionalKey(Schema.String) })),
@@ -30,10 +31,28 @@ const decodeCargo = Schema.decodeUnknownOption(CargoMessage);
30
31
  /**
31
32
  * `json`: one `{file, line?, message, unit?}` object per line. `cargo`:
32
33
  * `cargo check --message-format=json`, errors only, the crate as the unit.
33
- * Lines that do not parse are skipped: a build prints more than diagnostics.
34
+ * `tsc`: `tsc --pretty false`, the file's top folders as the unit. Lines
35
+ * that do not parse are skipped: a build prints more than diagnostics.
34
36
  */
35
37
  export const parseDiagnostics = (text, format = "json") => {
36
38
  const out = [];
39
+ if (format === "tsc") {
40
+ // `tsc --pretty false`: `path(line,col): error TS1234: message`; the unit is the top folder.
41
+ for (const raw of text.split("\n")) {
42
+ const match = tscLine.exec(raw.trim());
43
+ if (match?.[1] === undefined || match[3] === undefined)
44
+ continue;
45
+ const file = match[1];
46
+ const top = file.split("/");
47
+ out.push(Diagnostic.make({
48
+ file,
49
+ line: Number.parseInt(match[2] ?? "0", 10),
50
+ message: match[3],
51
+ unit: top.length > 2 ? `${top[0]}/${top[1]}` : (top[0] ?? file)
52
+ }));
53
+ }
54
+ return out;
55
+ }
37
56
  for (const raw of text.split("\n")) {
38
57
  const line = raw.trim();
39
58
  if (line.length === 0 || !line.startsWith("{"))
@@ -1 +1 @@
1
- {"version":3,"file":"Diagnostics.js","sourceRoot":"","sources":["../src/Diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Diagnostics.js","sourceRoot":"","sources":["../src/Diagnostics.ts"],"names":[],"mappings":"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"}
package/dist/Pack.d.ts CHANGED
@@ -81,9 +81,32 @@ export interface Pack {
81
81
  * build, `- format: json | cargo` says how to read it. Present only in a
82
82
  * porting pack.
83
83
  */
84
+ /**
85
+ * `## Ledger` (ADR 0028): what `port-ledger` classifies. `- unit: <regex>`
86
+ * whose first capture group names a unit in a source file, `- classes: A,
87
+ * B, UNKNOWN`, `- question: <what to decide for each unit>`.
88
+ */
89
+ readonly ledger: {
90
+ readonly unit: string;
91
+ readonly classes: ReadonlyArray<string>;
92
+ readonly question: string;
93
+ } | undefined;
94
+ /**
95
+ * `## Differential` (ADR 0028): what `port-tests` compares. `- tests: <regex>`
96
+ * over test files, `- legacy: <command with {{file}}>` run on the old
97
+ * build, `- target: <command with {{file}}>` on the new, `- timeout: <s>`.
98
+ */
99
+ readonly differential: {
100
+ readonly tests: string;
101
+ readonly legacy: ReadonlyArray<string>;
102
+ readonly target: ReadonlyArray<string>;
103
+ readonly timeoutSeconds: number;
104
+ } | undefined;
105
+ /** `## Audit` (ADR 0028): `- dimensions: a, b, c` the rulebook auditors take; default list in the flow. */
106
+ readonly audit: ReadonlyArray<string> | undefined;
84
107
  readonly diagnostics: {
85
108
  readonly command: ReadonlyArray<string>;
86
- readonly format: "json" | "cargo";
109
+ readonly format: "json" | "cargo" | "tsc";
87
110
  } | undefined;
88
111
  readonly dir: string;
89
112
  readonly gate: (name: string) => ReadonlyArray<string> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"Pack.d.ts","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Pack.d.ts","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"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"}
package/dist/Pack.js CHANGED
@@ -183,8 +183,31 @@ export const loadPack = Effect.fn("@llm4ts/flow/Pack.load")(function* (workspace
183
183
  command: diagnosticsValues.command.split(/\s+/),
184
184
  format: diagnosticsValues.format?.toLowerCase() === "cargo"
185
185
  ? "cargo"
186
- : "json"
186
+ : diagnosticsValues.format?.toLowerCase() === "tsc"
187
+ ? "tsc"
188
+ : "json"
187
189
  };
190
+ const ledgerValues = namedItems(section(manifest.sections, "Ledger"));
191
+ const ledger = ledgerValues.unit === undefined
192
+ ? undefined
193
+ : {
194
+ unit: ledgerValues.unit,
195
+ classes: commaList(ledgerValues.classes),
196
+ question: ledgerValues.question ?? "Classify this unit."
197
+ };
198
+ const differentialValues = namedItems(section(manifest.sections, "Differential"));
199
+ const differential = differentialValues.tests === undefined ||
200
+ differentialValues.legacy === undefined ||
201
+ differentialValues.target === undefined
202
+ ? undefined
203
+ : {
204
+ tests: differentialValues.tests,
205
+ legacy: differentialValues.legacy.split(/\s+/),
206
+ target: differentialValues.target.split(/\s+/),
207
+ timeoutSeconds: Number.parseInt(differentialValues.timeout ?? "", 10) || 120
208
+ };
209
+ const auditBody = section(manifest.sections, "Audit");
210
+ const audit = auditBody === undefined ? undefined : commaList(namedItems(auditBody).dimensions);
188
211
  const oracleValues = namedItems(section(manifest.sections, "Oracle"));
189
212
  const oracle = section(manifest.sections, "Oracle") === undefined
190
213
  ? undefined
@@ -254,6 +277,9 @@ export const loadPack = Effect.fn("@llm4ts/flow/Pack.load")(function* (workspace
254
277
  reviewRules,
255
278
  target: fields["target"],
256
279
  comment: fields["comment"],
280
+ ledger,
281
+ differential,
282
+ audit,
257
283
  diagnostics,
258
284
  dir: directory,
259
285
  gate: (name) => gates[name],
package/dist/Pack.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Pack.js","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Pack.js","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"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"}
package/dist/Port.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as Schema from "effect/Schema";
2
+ import type { ReviewResult } from "./Review.ts";
2
3
  import type { QueueOutcome } from "./WorkQueue.ts";
3
4
  declare const PortEntry_base: Schema.Class<PortEntry, Schema.Struct<{
4
5
  /** Repo-relative source path; also the queue item id. */
@@ -53,5 +54,63 @@ export interface PilotFacts {
53
54
  export declare const renderPilotReport: (facts: PilotFacts) => string;
54
55
  /** A whole new file rendered as a unified diff of additions, for reviewers that judge diffs. */
55
56
  export declare const asAddedFileDiff: (path: string, content: string) => string;
57
+ declare const LedgerRow_base: Schema.Class<LedgerRow, Schema.Struct<{
58
+ readonly file: Schema.String;
59
+ readonly unit: Schema.String;
60
+ readonly class: Schema.String;
61
+ /** `file:line` of the statement the classification rests on. */
62
+ readonly evidence: Schema.String;
63
+ readonly confidence: Schema.Literals<readonly ["high", "medium", "low"]>;
64
+ }>, {}>;
65
+ /** One classified unit of a source file, with the line that proves it. */
66
+ export declare class LedgerRow extends LedgerRow_base {
67
+ }
68
+ /** The ledger as a TSV with a header: `file unit class evidence confidence`. */
69
+ export declare const renderLedger: (rows: ReadonlyArray<LedgerRow>) => string;
70
+ export declare const parseLedger: (text: string) => ReadonlyArray<LedgerRow>;
71
+ /** The rows of one source file, rendered for its implementer ("trust the table over local guessing"). */
72
+ export declare const ledgerRowsFor: (rows: ReadonlyArray<LedgerRow>, file: string) => string | undefined;
73
+ /** The units a pack's `## Ledger` regex names in a source file, each once. */
74
+ export declare const unitsIn: (text: string, unitRegex: string) => ReadonlyArray<string>;
75
+ /** A claim stands unless a majority of its refuters reject it (the Bun port's 3-vote refute). */
76
+ export declare const standsAfterRefutes: (votes: ReadonlyArray<boolean>) => boolean;
77
+ declare const GuideFinding_base: Schema.Class<GuideFinding, Schema.Struct<{
78
+ readonly dimension: Schema.String;
79
+ readonly finding: Schema.String;
80
+ /** A rulebook line, a sample source line, or a draft line that shows it. */
81
+ readonly evidence: Schema.String;
82
+ /** The rule the rulebook should gain or change, one line. */
83
+ readonly proposedRule: Schema.String;
84
+ }>, {}>;
85
+ export declare class GuideFinding extends GuideFinding_base {
86
+ }
87
+ export declare const defaultAuditDimensions: ReadonlyArray<string>;
88
+ export declare const renderGuideAudit: (facts: {
89
+ readonly pack: string;
90
+ readonly kept: ReadonlyArray<GuideFinding>;
91
+ readonly dropped: ReadonlyArray<GuideFinding>;
92
+ readonly trial: ReadonlyArray<string>;
93
+ readonly sample: ReadonlyArray<string>;
94
+ }) => string;
95
+ export declare const DiffClass: Schema.Literals<readonly ["pass", "diverge", "crash", "hang", "legacy-red"]>;
96
+ export type DiffClass = typeof DiffClass.Type;
97
+ declare const DiffVerdict_base: Schema.Class<DiffVerdict, Schema.Struct<{
98
+ readonly file: Schema.String;
99
+ readonly class: Schema.Literals<readonly ["pass", "diverge", "crash", "hang", "legacy-red"]>;
100
+ readonly legacyPassed: Schema.optionalKey<Schema.Int>;
101
+ readonly targetPassed: Schema.optionalKey<Schema.Int>;
102
+ readonly detail: Schema.String;
103
+ }>, {}>;
104
+ export declare class DiffVerdict extends DiffVerdict_base {
105
+ }
106
+ /**
107
+ * The Bun test swarm's verdict: a test file passes when the target exits 0
108
+ * AND its pass count equals the legacy baseline's (when both are known). A
109
+ * legacy run that is red itself is no evidence about the target.
110
+ */
111
+ export declare const diffVerdict: (file: string, legacy: ReviewResult, target: ReviewResult, roots?: ReadonlyArray<string>) => DiffVerdict;
112
+ /** The `.diag` a fixer reads as its only runtime evidence. */
113
+ export declare const renderDiag: (verdict: DiffVerdict, tailChars?: number) => string;
114
+ export declare const renderDifferentialReport: (round: number, verdicts: ReadonlyArray<DiffVerdict>) => string;
56
115
  export {};
57
116
  //# sourceMappingURL=Port.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Port.d.ts","sourceRoot":"","sources":["../src/Port.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;;IAGhD,yDAAyD;;;;;;AAD3D,qBAAa,SAAU,SAAQ,cAM7B;CAAG;AAEL;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,MAS/D,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,MACuD,CAAA;AAE9F,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB;IACjB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,6FAA6F;AAC7F,eAAO,MAAM,SAAS,GACpB,SAAS,aAAa,CAAC,SAAS,CAAC,EACjC,SAAQ,WAAgB,KACvB,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAaxC,CAAA;AAED,eAAO,MAAM,cAAc,qDAA6C,CAAA;AACxE,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,cAAc,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;AAID;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,UAmB3C,CAAA;AAED,mEAAmE;AACnE,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,MAS1C,CAAA;AAEd,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9C;AAID,uGAAuG;AACvG,eAAO,MAAM,iBAAiB,GAAI,OAAO,UAAU,KAAG,MAwCrD,CAAA;AAED,gGAAgG;AAChG,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,MAU/D,CAAA"}
1
+ {"version":3,"file":"Port.d.ts","sourceRoot":"","sources":["../src/Port.ts"],"names":[],"mappings":"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"}
package/dist/Port.js CHANGED
@@ -131,4 +131,215 @@ export const asAddedFileDiff = (path, content) => {
131
131
  ...lines.map((line) => `+${line}`)
132
132
  ].join("\n");
133
133
  };
134
+ // ---- Ledger (port-ledger) --------------------------------------------------------------
135
+ /** One classified unit of a source file, with the line that proves it. */
136
+ export class LedgerRow extends Schema.Class("LedgerRow")({
137
+ file: Schema.String,
138
+ unit: Schema.String,
139
+ class: Schema.String,
140
+ /** `file:line` of the statement the classification rests on. */
141
+ evidence: Schema.String,
142
+ confidence: PortConfidence
143
+ }) {
144
+ }
145
+ const tsvEscape = (value) => value.replaceAll("\t", " ").replaceAll("\n", " ");
146
+ /** The ledger as a TSV with a header: `file unit class evidence confidence`. */
147
+ export const renderLedger = (rows) => [
148
+ "file\tunit\tclass\tevidence\tconfidence",
149
+ ...rows.map((row) => [row.file, row.unit, row.class, row.evidence, row.confidence].map(tsvEscape).join("\t"))
150
+ ].join("\n") + "\n";
151
+ export const parseLedger = (text) => text
152
+ .split(/\r?\n/u)
153
+ .slice(1)
154
+ .filter((line) => line.trim().length > 0)
155
+ .flatMap((line) => {
156
+ const [file, unit, klass, evidence, confidence] = line.split("\t");
157
+ return file === undefined || unit === undefined || klass === undefined
158
+ ? []
159
+ : [
160
+ LedgerRow.make({
161
+ file,
162
+ unit,
163
+ class: klass,
164
+ evidence: evidence ?? "",
165
+ confidence: confidence === "high" || confidence === "medium" || confidence === "low"
166
+ ? confidence
167
+ : "low"
168
+ })
169
+ ];
170
+ });
171
+ /** The rows of one source file, rendered for its implementer ("trust the table over local guessing"). */
172
+ export const ledgerRowsFor = (rows, file) => {
173
+ const mine = rows.filter((row) => row.file === file);
174
+ return mine.length === 0
175
+ ? undefined
176
+ : mine
177
+ .map((row) => `- ${row.unit}: ${row.class} (${row.evidence}; ${row.confidence})`)
178
+ .join("\n");
179
+ };
180
+ /** The units a pack's `## Ledger` regex names in a source file, each once. */
181
+ export const unitsIn = (text, unitRegex) => {
182
+ const pattern = new RegExp(unitRegex, "gmu");
183
+ const units = [];
184
+ for (let match = pattern.exec(text); match !== null; match = pattern.exec(text)) {
185
+ const name = match.slice(1).find((group) => group !== undefined && group.length > 0);
186
+ if (name !== undefined && !units.includes(name))
187
+ units.push(name);
188
+ if (match[0].length === 0)
189
+ pattern.lastIndex += 1;
190
+ }
191
+ return units;
192
+ };
193
+ // ---- Refutes (port-guide, port-ledger) ----------------------------------------------------
194
+ /** A claim stands unless a majority of its refuters reject it (the Bun port's 3-vote refute). */
195
+ export const standsAfterRefutes = (votes) => {
196
+ const rejected = votes.filter((holds) => !holds).length;
197
+ return votes.length === 0 ? true : rejected * 2 < votes.length;
198
+ };
199
+ // ---- Guide audit (port-guide) -------------------------------------------------------------
200
+ export class GuideFinding extends Schema.Class("GuideFinding")({
201
+ dimension: Schema.String,
202
+ finding: Schema.String,
203
+ /** A rulebook line, a sample source line, or a draft line that shows it. */
204
+ evidence: Schema.String,
205
+ /** The rule the rulebook should gain or change, one line. */
206
+ proposedRule: Schema.String
207
+ }) {
208
+ }
209
+ export const defaultAuditDimensions = [
210
+ "error model",
211
+ "ownership and memory",
212
+ "collections and strings",
213
+ "control flow and compile-time constructs",
214
+ "API shape and naming",
215
+ "concurrency and resources",
216
+ "build, test and tooling idioms",
217
+ "what not to translate"
218
+ ];
219
+ export const renderGuideAudit = (facts) => [
220
+ `# Rulebook audit — pack ${facts.pack}`,
221
+ "",
222
+ `- sample files: ${facts.sample.join(", ") || "none"}`,
223
+ `- findings kept after the refute: ${facts.kept.length}; dropped: ${facts.dropped.length}`,
224
+ "",
225
+ ...(facts.kept.length === 0
226
+ ? ["No finding survived: the rulebook stands as written.", ""]
227
+ : [
228
+ "## Proposed rules",
229
+ "",
230
+ "Each is an `append-rule` to `prompts/porting.md`, applied on the next run once approved.",
231
+ "",
232
+ ...facts.kept.flatMap((finding) => [
233
+ `### ${finding.dimension}`,
234
+ "",
235
+ `**Finding.** ${finding.finding.trim()}`,
236
+ "",
237
+ `**Evidence.** ${finding.evidence.trim()}`,
238
+ "",
239
+ "```diff",
240
+ `+ - ${finding.proposedRule.trim()}`,
241
+ "```",
242
+ ""
243
+ ])
244
+ ]),
245
+ ...(facts.trial.length === 0
246
+ ? []
247
+ : [
248
+ "## Trial port: where the native port and the rulebook port differ",
249
+ "",
250
+ ...facts.trial.map((line) => `- ${line}`),
251
+ ""
252
+ ]),
253
+ ...(facts.dropped.length === 0
254
+ ? []
255
+ : [
256
+ "## Dropped by the refute",
257
+ "",
258
+ ...facts.dropped.map((finding) => `- ${finding.dimension}: ${finding.finding.trim()}`),
259
+ ""
260
+ ]),
261
+ DraftApprovalMarker,
262
+ ""
263
+ ].join("\n");
264
+ // ---- Differential (port-tests) ------------------------------------------------------------
265
+ export const DiffClass = Schema.Literals(["pass", "diverge", "crash", "hang", "legacy-red"]);
266
+ export class DiffVerdict extends Schema.Class("DiffVerdict")({
267
+ file: Schema.String,
268
+ class: DiffClass,
269
+ legacyPassed: Schema.optionalKey(Schema.Int),
270
+ targetPassed: Schema.optionalKey(Schema.Int),
271
+ detail: Schema.String
272
+ }) {
273
+ }
274
+ /**
275
+ * The Bun test swarm's verdict: a test file passes when the target exits 0
276
+ * AND its pass count equals the legacy baseline's (when both are known). A
277
+ * legacy run that is red itself is no evidence about the target.
278
+ */
279
+ export const diffVerdict = (file, legacy, target, roots = []) => {
280
+ const strip = (text) => roots.reduce((acc, root) => acc.replaceAll(`${root}/`, ""), text);
281
+ const legacyPassed = legacy.passed;
282
+ const targetPassed = target.passed;
283
+ const counts = {
284
+ ...(legacyPassed === undefined ? {} : { legacyPassed }),
285
+ ...(targetPassed === undefined ? {} : { targetPassed })
286
+ };
287
+ if (!legacy.isClean) {
288
+ return DiffVerdict.make({
289
+ file,
290
+ class: "legacy-red",
291
+ ...counts,
292
+ detail: "the legacy build fails this file too; nothing to compare"
293
+ });
294
+ }
295
+ const gate = target.issues.find((issue) => issue.gateClass !== undefined);
296
+ if (gate?.gateClass === "hang") {
297
+ return DiffVerdict.make({ file, class: "hang", ...counts, detail: strip(gate.description) });
298
+ }
299
+ if (gate?.gateClass === "crash") {
300
+ return DiffVerdict.make({ file, class: "crash", ...counts, detail: strip(gate.description) });
301
+ }
302
+ if (!target.isClean) {
303
+ return DiffVerdict.make({
304
+ file,
305
+ class: "diverge",
306
+ ...counts,
307
+ detail: strip(target.issues.map((issue) => issue.description).join("\n"))
308
+ });
309
+ }
310
+ if (legacyPassed !== undefined && targetPassed !== undefined && targetPassed !== legacyPassed) {
311
+ return DiffVerdict.make({
312
+ file,
313
+ class: "diverge",
314
+ ...counts,
315
+ detail: `${targetPassed} test(s) pass on the target, ${legacyPassed} on the legacy build`
316
+ });
317
+ }
318
+ return DiffVerdict.make({ file, class: "pass", ...counts, detail: "" });
319
+ };
320
+ /** The `.diag` a fixer reads as its only runtime evidence. */
321
+ export const renderDiag = (verdict, tailChars = 4_000) => [
322
+ `# ${verdict.file}: ${verdict.class}`,
323
+ "",
324
+ `- legacy passed: ${verdict.legacyPassed ?? "unknown"}; target passed: ${verdict.targetPassed ?? "unknown"}`,
325
+ "",
326
+ "## Target output (tail)",
327
+ "",
328
+ "```",
329
+ verdict.detail.length > tailChars ? `…${verdict.detail.slice(-tailChars)}` : verdict.detail,
330
+ "```",
331
+ ""
332
+ ].join("\n");
333
+ export const renderDifferentialReport = (round, verdicts) => {
334
+ const by = (klass) => verdicts.filter((verdict) => verdict.class === klass);
335
+ return [
336
+ `# Differential tests, round ${round}`,
337
+ "",
338
+ `- files: ${verdicts.length}; pass ${by("pass").length}, diverge ${by("diverge").length}, crash ${by("crash").length}, hang ${by("hang").length}, legacy-red ${by("legacy-red").length}`,
339
+ "",
340
+ ...["diverge", "crash", "hang"].flatMap((klass) => by(klass).length === 0
341
+ ? []
342
+ : [`## ${klass}`, "", ...by(klass).map((verdict) => `- ${verdict.file}`), ""])
343
+ ].join("\n");
344
+ };
134
345
  //# sourceMappingURL=Port.js.map
package/dist/Port.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Port.js","sourceRoot":"","sources":["../src/Port.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Port.js","sourceRoot":"","sources":["../src/Port.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,wEAAwE;AACxE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACtD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAGnD,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,KAAK,CAAY,WAAW,CAAC,CAAC;IAClE,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC,GAAG;CAChB,CAAC;CAAG;AAEL;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAU,EAAE;IACvE,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,QAAQ,GAAG,QAAQ;SACtB,UAAU,CAAC,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;SAC7C,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SAC7C,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC9C,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IACjC,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAC5D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAC9C,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;AAW9F,6FAA6F;AAC7F,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,OAAiC,EACjC,SAAsB,EAAE,EACiB,EAAE;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAA;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAoC,EAAE,CAAA;IACnD,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;QACtE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;QAChD,KAAK,IAAI,IAAI,CAAA;IACf,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AASxE,MAAM,YAAY,GAAG,EAAE,CAAA;AAEvB;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAc,EAAE;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACjE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IACtE,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,MAAM,UAAU,GAAG,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;IACxF,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;IAC3D,OAAO;QACL,UAAU,EACR,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,KAAK;YACtE,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,SAAS;QACf,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;QACnE,KAAK,EAAE,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;KACjG,CAAA;AACH,CAAC,CAAA;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAU,EAAE,CAC/D;IACE,mDAAmD,OAAO,gCAAgC;IAC1F,GAAG,OAAO,cAAc;IACxB,GAAG,OAAO,4BAA4B;IACtC,GAAG,OAAO,kCAAkC;IAC5C,GAAG,OAAO,iDAAiD;IAC3D,GAAG,OAAO,wEAAwE;IAClF,6FAA6F;CAC9F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAUd,MAAM,OAAO,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;AAEzE,uGAAuG;AACvG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAiB,EAAU,EAAE;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAA;IAC9E,MAAM,KAAK,GAAG,CAAC,KAAqB,EAAE,EAAE,CACtC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,MAAM,CAAA;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1E,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAA;IAC3E,MAAM,WAAW,GACf,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;QACzD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAA;IAC5C,OAAO;QACL,cAAc;QACd,EAAE;QACF,cAAc,KAAK,CAAC,OAAO,aAAa,IAAI,CAAC,MAAM,UAAU,MAAM,CAAC,MAAM,eAAe,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACnH,iBAAiB,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,uBAAuB;QACpH,GAAG,CAAC,WAAW,KAAK,SAAS;YAC3B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,aAAa,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY;aAC/F,CAAC;QACN,gBAAgB,KAAK,CAAC,SAAS,oBAAoB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,gBACrF,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACvF,EAAE;QACF,EAAE;QACF,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,WAAW;gBACX,EAAE;gBACF,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;gBACpE,EAAE;aACH,CAAC;QACN,oFAAoF;QACpF,iFAAiF;QACjF,qCAAqC;QACrC,EAAE;QACF,mBAAmB;QACnB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED,gGAAgG;AAChG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAe,EAAU,EAAE;IACvE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACrC,OAAO;QACL,gBAAgB,IAAI,MAAM,IAAI,EAAE;QAChC,sBAAsB;QACtB,eAAe;QACf,SAAS,IAAI,EAAE;QACf,cAAc,KAAK,CAAC,MAAM,KAAK;QAC/B,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;KACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED,2FAA2F;AAE3F,0EAA0E;AAC1E,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,KAAK,CAAY,WAAW,CAAC,CAAC;IAClE,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,UAAU,EAAE,cAAc;CAC3B,CAAC;CAAG;AAEL,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAE9F,gFAAgF;AAChF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAA8B,EAAU,EAAE,CACrE;IACE,yCAAyC;IACzC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAClB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACxF;CACF,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAErB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAA4B,EAAE,CACpE,IAAI;KACD,KAAK,CAAC,QAAQ,CAAC;KACf,KAAK,CAAC,CAAC,CAAC;KACR,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;KACxC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;IAChB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAClE,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QACpE,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI;gBACJ,IAAI;gBACJ,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,QAAQ,IAAI,EAAE;gBACxB,UAAU,EACR,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,KAAK;oBACtE,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,KAAK;aACZ,CAAC;SACH,CAAA;AACP,CAAC,CAAC,CAAA;AAEN,yGAAyG;AACzG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAA8B,EAAE,IAAY,EAAsB,EAAE;IAChG,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACpD,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC;QACtB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC;aAChF,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC,CAAA;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAyB,EAAE;IAChF,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACpF,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,SAAS,IAAI,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,8FAA8F;AAE9F,iGAAiG;AACjG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA6B,EAAW,EAAE;IAC3E,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;IACvD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;AAChE,CAAC,CAAA;AAED,8FAA8F;AAE9F,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,KAAK,CAAe,cAAc,CAAC,CAAC;IAC3E,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC,MAAM;CAC5B,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,sBAAsB,GAA0B;IAC3D,aAAa;IACb,sBAAsB;IACtB,yBAAyB;IACzB,0CAA0C;IAC1C,sBAAsB;IACtB,2BAA2B;IAC3B,gCAAgC;IAChC,uBAAuB;CACxB,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAMhC,EAAU,EAAE,CACX;IACE,2BAA2B,KAAK,CAAC,IAAI,EAAE;IACvC,EAAE;IACF,mBAAmB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;IACtD,qCAAqC,KAAK,CAAC,IAAI,CAAC,MAAM,cAAc,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;IAC1F,EAAE;IACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACzB,CAAC,CAAC,CAAC,sDAAsD,EAAE,EAAE,CAAC;QAC9D,CAAC,CAAC;YACE,mBAAmB;YACnB,EAAE;YACF,0FAA0F;YAC1F,EAAE;YACF,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,SAAS,EAAE;gBAC1B,EAAE;gBACF,gBAAgB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;gBACxC,EAAE;gBACF,iBAAiB,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;gBAC1C,EAAE;gBACF,SAAS;gBACT,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE;gBACpC,KAAK;gBACL,EAAE;aACH,CAAC;SACH,CAAC;IACN,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,mEAAmE;YACnE,EAAE;YACF,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,EAAE;SACH,CAAC;IACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAC5B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,0BAA0B;YAC1B,EAAE;YACF,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACtF,EAAE;SACH,CAAC;IACN,mBAAmB;IACnB,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEd,8FAA8F;AAE9F,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;AAG5F,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAc,aAAa,CAAC,CAAC;IACxE,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,KAAK,EAAE,SAAS;IAChB,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAY,EACZ,MAAoB,EACpB,MAAoB,EACpB,QAA+B,EAAE,EACpB,EAAE;IACf,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CACrC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;IACnE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;IAClC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;IAClC,MAAM,MAAM,GAAG;QACb,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;KACxD,CAAA;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,IAAI,CAAC;YACtB,IAAI;YACJ,KAAK,EAAE,YAAY;YACnB,GAAG,MAAM;YACT,MAAM,EAAE,0DAA0D;SACnE,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA;IACzE,IAAI,IAAI,EAAE,SAAS,KAAK,MAAM,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAC9F,CAAC;IACD,IAAI,IAAI,EAAE,SAAS,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAC/F,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,IAAI,CAAC;YACtB,IAAI;YACJ,KAAK,EAAE,SAAS;YAChB,GAAG,MAAM;YACT,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1E,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;QAC9F,OAAO,WAAW,CAAC,IAAI,CAAC;YACtB,IAAI;YACJ,KAAK,EAAE,SAAS;YAChB,GAAG,MAAM;YACT,MAAM,EAAE,GAAG,YAAY,gCAAgC,YAAY,sBAAsB;SAC1F,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;AACzE,CAAC,CAAA;AAED,8DAA8D;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAE,SAAS,GAAG,KAAK,EAAU,EAAE,CAC5E;IACE,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;IACrC,EAAE;IACF,oBAAoB,OAAO,CAAC,YAAY,IAAI,SAAS,oBAAoB,OAAO,CAAC,YAAY,IAAI,SAAS,EAAE;IAC5G,EAAE;IACF,yBAAyB;IACzB,EAAE;IACF,KAAK;IACL,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;IAC3F,KAAK;IACL,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEd,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,KAAa,EACb,QAAoC,EAC5B,EAAE;IACV,MAAM,EAAE,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;IACtF,OAAO;QACL,+BAA+B,KAAK,EAAE;QACtC,EAAE;QACF,YAAY,QAAQ,CAAC,MAAM,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;QACxL,EAAE;QACF,GAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC3D,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YACpB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAChF;KACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llm4ts/flow",
3
- "version": "2.33.0",
3
+ "version": "2.34.0",
4
4
  "description": "Effect-native LLM workflow, persistence, review, and repository automation",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -122,7 +122,7 @@
122
122
  "typescript"
123
123
  ],
124
124
  "dependencies": {
125
- "@llm4ts/core": "2.33.0"
125
+ "@llm4ts/core": "2.34.0"
126
126
  },
127
127
  "peerDependencies": {
128
128
  "effect": "4.0.0"
@@ -12,10 +12,11 @@ export class Diagnostic extends Schema.Class<Diagnostic>("Diagnostic")({
12
12
  unit: Schema.optionalKey(Schema.String)
13
13
  }) {}
14
14
 
15
- export const DiagnosticsFormat = Schema.Literals(["json", "cargo"])
15
+ export const DiagnosticsFormat = Schema.Literals(["json", "cargo", "tsc"])
16
16
  export type DiagnosticsFormat = typeof DiagnosticsFormat.Type
17
17
 
18
18
  const decodeJsonLine = Schema.decodeUnknownOption(Schema.fromJsonString(Diagnostic))
19
+ const tscLine = /^(.+?)\((\d+),\d+\): error (TS\d+: .+)$/u
19
20
 
20
21
  const CargoMessage = Schema.fromJsonString(
21
22
  Schema.Struct({
@@ -43,13 +44,32 @@ const decodeCargo = Schema.decodeUnknownOption(CargoMessage)
43
44
  /**
44
45
  * `json`: one `{file, line?, message, unit?}` object per line. `cargo`:
45
46
  * `cargo check --message-format=json`, errors only, the crate as the unit.
46
- * Lines that do not parse are skipped: a build prints more than diagnostics.
47
+ * `tsc`: `tsc --pretty false`, the file's top folders as the unit. Lines
48
+ * that do not parse are skipped: a build prints more than diagnostics.
47
49
  */
48
50
  export const parseDiagnostics = (
49
51
  text: string,
50
52
  format: DiagnosticsFormat = "json"
51
53
  ): ReadonlyArray<Diagnostic> => {
52
54
  const out: Array<Diagnostic> = []
55
+ if (format === "tsc") {
56
+ // `tsc --pretty false`: `path(line,col): error TS1234: message`; the unit is the top folder.
57
+ for (const raw of text.split("\n")) {
58
+ const match = tscLine.exec(raw.trim())
59
+ if (match?.[1] === undefined || match[3] === undefined) continue
60
+ const file = match[1]
61
+ const top = file.split("/")
62
+ out.push(
63
+ Diagnostic.make({
64
+ file,
65
+ line: Number.parseInt(match[2] ?? "0", 10),
66
+ message: match[3],
67
+ unit: top.length > 2 ? `${top[0]}/${top[1]}` : (top[0] ?? file)
68
+ })
69
+ )
70
+ }
71
+ return out
72
+ }
53
73
  for (const raw of text.split("\n")) {
54
74
  const line = raw.trim()
55
75
  if (line.length === 0 || !line.startsWith("{")) continue
package/src/Pack.ts CHANGED
@@ -91,8 +91,31 @@ export interface Pack {
91
91
  * build, `- format: json | cargo` says how to read it. Present only in a
92
92
  * porting pack.
93
93
  */
94
+ /**
95
+ * `## Ledger` (ADR 0028): what `port-ledger` classifies. `- unit: <regex>`
96
+ * whose first capture group names a unit in a source file, `- classes: A,
97
+ * B, UNKNOWN`, `- question: <what to decide for each unit>`.
98
+ */
99
+ readonly ledger:
100
+ | { readonly unit: string; readonly classes: ReadonlyArray<string>; readonly question: string }
101
+ | undefined
102
+ /**
103
+ * `## Differential` (ADR 0028): what `port-tests` compares. `- tests: <regex>`
104
+ * over test files, `- legacy: <command with {{file}}>` run on the old
105
+ * build, `- target: <command with {{file}}>` on the new, `- timeout: <s>`.
106
+ */
107
+ readonly differential:
108
+ | {
109
+ readonly tests: string
110
+ readonly legacy: ReadonlyArray<string>
111
+ readonly target: ReadonlyArray<string>
112
+ readonly timeoutSeconds: number
113
+ }
114
+ | undefined
115
+ /** `## Audit` (ADR 0028): `- dimensions: a, b, c` the rulebook auditors take; default list in the flow. */
116
+ readonly audit: ReadonlyArray<string> | undefined
94
117
  readonly diagnostics:
95
- | { readonly command: ReadonlyArray<string>; readonly format: "json" | "cargo" }
118
+ | { readonly command: ReadonlyArray<string>; readonly format: "json" | "cargo" | "tsc" }
96
119
  | undefined
97
120
  readonly dir: string
98
121
  readonly gate: (name: string) => ReadonlyArray<string> | undefined
@@ -329,8 +352,33 @@ export const loadPack = Effect.fn("@llm4ts/flow/Pack.load")(function* (
329
352
  format:
330
353
  diagnosticsValues.format?.toLowerCase() === "cargo"
331
354
  ? ("cargo" as const)
332
- : ("json" as const)
355
+ : diagnosticsValues.format?.toLowerCase() === "tsc"
356
+ ? ("tsc" as const)
357
+ : ("json" as const)
358
+ }
359
+ const ledgerValues = namedItems(section(manifest.sections, "Ledger"))
360
+ const ledger =
361
+ ledgerValues.unit === undefined
362
+ ? undefined
363
+ : {
364
+ unit: ledgerValues.unit,
365
+ classes: commaList(ledgerValues.classes),
366
+ question: ledgerValues.question ?? "Classify this unit."
367
+ }
368
+ const differentialValues = namedItems(section(manifest.sections, "Differential"))
369
+ const differential =
370
+ differentialValues.tests === undefined ||
371
+ differentialValues.legacy === undefined ||
372
+ differentialValues.target === undefined
373
+ ? undefined
374
+ : {
375
+ tests: differentialValues.tests,
376
+ legacy: differentialValues.legacy.split(/\s+/),
377
+ target: differentialValues.target.split(/\s+/),
378
+ timeoutSeconds: Number.parseInt(differentialValues.timeout ?? "", 10) || 120
333
379
  }
380
+ const auditBody = section(manifest.sections, "Audit")
381
+ const audit = auditBody === undefined ? undefined : commaList(namedItems(auditBody).dimensions)
334
382
  const oracleValues = namedItems(section(manifest.sections, "Oracle"))
335
383
  const oracle: OracleRules | undefined =
336
384
  section(manifest.sections, "Oracle") === undefined
@@ -407,6 +455,9 @@ export const loadPack = Effect.fn("@llm4ts/flow/Pack.load")(function* (
407
455
  reviewRules,
408
456
  target: fields["target"],
409
457
  comment: fields["comment"],
458
+ ledger,
459
+ differential,
460
+ audit,
410
461
  diagnostics,
411
462
  dir: directory,
412
463
  gate: (name) => gates[name],
package/src/Port.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  // draft ends with, and the pilot report. Pure; the flows own the seats.
4
4
  import { basename, dirname, extname } from "node:path"
5
5
  import * as Schema from "effect/Schema"
6
+ import type { ReviewResult } from "./Review.ts"
6
7
  import { DraftApprovalMarker } from "./Approval.ts"
7
8
  import type { QueueOutcome } from "./WorkQueue.ts"
8
9
 
@@ -176,3 +177,253 @@ export const asAddedFileDiff = (path: string, content: string): string => {
176
177
  ...lines.map((line) => `+${line}`)
177
178
  ].join("\n")
178
179
  }
180
+
181
+ // ---- Ledger (port-ledger) --------------------------------------------------------------
182
+
183
+ /** One classified unit of a source file, with the line that proves it. */
184
+ export class LedgerRow extends Schema.Class<LedgerRow>("LedgerRow")({
185
+ file: Schema.String,
186
+ unit: Schema.String,
187
+ class: Schema.String,
188
+ /** `file:line` of the statement the classification rests on. */
189
+ evidence: Schema.String,
190
+ confidence: PortConfidence
191
+ }) {}
192
+
193
+ const tsvEscape = (value: string): string => value.replaceAll("\t", " ").replaceAll("\n", " ")
194
+
195
+ /** The ledger as a TSV with a header: `file unit class evidence confidence`. */
196
+ export const renderLedger = (rows: ReadonlyArray<LedgerRow>): string =>
197
+ [
198
+ "file\tunit\tclass\tevidence\tconfidence",
199
+ ...rows.map((row) =>
200
+ [row.file, row.unit, row.class, row.evidence, row.confidence].map(tsvEscape).join("\t")
201
+ )
202
+ ].join("\n") + "\n"
203
+
204
+ export const parseLedger = (text: string): ReadonlyArray<LedgerRow> =>
205
+ text
206
+ .split(/\r?\n/u)
207
+ .slice(1)
208
+ .filter((line) => line.trim().length > 0)
209
+ .flatMap((line) => {
210
+ const [file, unit, klass, evidence, confidence] = line.split("\t")
211
+ return file === undefined || unit === undefined || klass === undefined
212
+ ? []
213
+ : [
214
+ LedgerRow.make({
215
+ file,
216
+ unit,
217
+ class: klass,
218
+ evidence: evidence ?? "",
219
+ confidence:
220
+ confidence === "high" || confidence === "medium" || confidence === "low"
221
+ ? confidence
222
+ : "low"
223
+ })
224
+ ]
225
+ })
226
+
227
+ /** The rows of one source file, rendered for its implementer ("trust the table over local guessing"). */
228
+ export const ledgerRowsFor = (rows: ReadonlyArray<LedgerRow>, file: string): string | undefined => {
229
+ const mine = rows.filter((row) => row.file === file)
230
+ return mine.length === 0
231
+ ? undefined
232
+ : mine
233
+ .map((row) => `- ${row.unit}: ${row.class} (${row.evidence}; ${row.confidence})`)
234
+ .join("\n")
235
+ }
236
+
237
+ /** The units a pack's `## Ledger` regex names in a source file, each once. */
238
+ export const unitsIn = (text: string, unitRegex: string): ReadonlyArray<string> => {
239
+ const pattern = new RegExp(unitRegex, "gmu")
240
+ const units: Array<string> = []
241
+ for (let match = pattern.exec(text); match !== null; match = pattern.exec(text)) {
242
+ const name = match.slice(1).find((group) => group !== undefined && group.length > 0)
243
+ if (name !== undefined && !units.includes(name)) units.push(name)
244
+ if (match[0].length === 0) pattern.lastIndex += 1
245
+ }
246
+ return units
247
+ }
248
+
249
+ // ---- Refutes (port-guide, port-ledger) ----------------------------------------------------
250
+
251
+ /** A claim stands unless a majority of its refuters reject it (the Bun port's 3-vote refute). */
252
+ export const standsAfterRefutes = (votes: ReadonlyArray<boolean>): boolean => {
253
+ const rejected = votes.filter((holds) => !holds).length
254
+ return votes.length === 0 ? true : rejected * 2 < votes.length
255
+ }
256
+
257
+ // ---- Guide audit (port-guide) -------------------------------------------------------------
258
+
259
+ export class GuideFinding extends Schema.Class<GuideFinding>("GuideFinding")({
260
+ dimension: Schema.String,
261
+ finding: Schema.String,
262
+ /** A rulebook line, a sample source line, or a draft line that shows it. */
263
+ evidence: Schema.String,
264
+ /** The rule the rulebook should gain or change, one line. */
265
+ proposedRule: Schema.String
266
+ }) {}
267
+
268
+ export const defaultAuditDimensions: ReadonlyArray<string> = [
269
+ "error model",
270
+ "ownership and memory",
271
+ "collections and strings",
272
+ "control flow and compile-time constructs",
273
+ "API shape and naming",
274
+ "concurrency and resources",
275
+ "build, test and tooling idioms",
276
+ "what not to translate"
277
+ ]
278
+
279
+ export const renderGuideAudit = (facts: {
280
+ readonly pack: string
281
+ readonly kept: ReadonlyArray<GuideFinding>
282
+ readonly dropped: ReadonlyArray<GuideFinding>
283
+ readonly trial: ReadonlyArray<string>
284
+ readonly sample: ReadonlyArray<string>
285
+ }): string =>
286
+ [
287
+ `# Rulebook audit — pack ${facts.pack}`,
288
+ "",
289
+ `- sample files: ${facts.sample.join(", ") || "none"}`,
290
+ `- findings kept after the refute: ${facts.kept.length}; dropped: ${facts.dropped.length}`,
291
+ "",
292
+ ...(facts.kept.length === 0
293
+ ? ["No finding survived: the rulebook stands as written.", ""]
294
+ : [
295
+ "## Proposed rules",
296
+ "",
297
+ "Each is an `append-rule` to `prompts/porting.md`, applied on the next run once approved.",
298
+ "",
299
+ ...facts.kept.flatMap((finding) => [
300
+ `### ${finding.dimension}`,
301
+ "",
302
+ `**Finding.** ${finding.finding.trim()}`,
303
+ "",
304
+ `**Evidence.** ${finding.evidence.trim()}`,
305
+ "",
306
+ "```diff",
307
+ `+ - ${finding.proposedRule.trim()}`,
308
+ "```",
309
+ ""
310
+ ])
311
+ ]),
312
+ ...(facts.trial.length === 0
313
+ ? []
314
+ : [
315
+ "## Trial port: where the native port and the rulebook port differ",
316
+ "",
317
+ ...facts.trial.map((line) => `- ${line}`),
318
+ ""
319
+ ]),
320
+ ...(facts.dropped.length === 0
321
+ ? []
322
+ : [
323
+ "## Dropped by the refute",
324
+ "",
325
+ ...facts.dropped.map((finding) => `- ${finding.dimension}: ${finding.finding.trim()}`),
326
+ ""
327
+ ]),
328
+ DraftApprovalMarker,
329
+ ""
330
+ ].join("\n")
331
+
332
+ // ---- Differential (port-tests) ------------------------------------------------------------
333
+
334
+ export const DiffClass = Schema.Literals(["pass", "diverge", "crash", "hang", "legacy-red"])
335
+ export type DiffClass = typeof DiffClass.Type
336
+
337
+ export class DiffVerdict extends Schema.Class<DiffVerdict>("DiffVerdict")({
338
+ file: Schema.String,
339
+ class: DiffClass,
340
+ legacyPassed: Schema.optionalKey(Schema.Int),
341
+ targetPassed: Schema.optionalKey(Schema.Int),
342
+ detail: Schema.String
343
+ }) {}
344
+
345
+ /**
346
+ * The Bun test swarm's verdict: a test file passes when the target exits 0
347
+ * AND its pass count equals the legacy baseline's (when both are known). A
348
+ * legacy run that is red itself is no evidence about the target.
349
+ */
350
+ export const diffVerdict = (
351
+ file: string,
352
+ legacy: ReviewResult,
353
+ target: ReviewResult,
354
+ roots: ReadonlyArray<string> = []
355
+ ): DiffVerdict => {
356
+ const strip = (text: string): string =>
357
+ roots.reduce((acc, root) => acc.replaceAll(`${root}/`, ""), text)
358
+ const legacyPassed = legacy.passed
359
+ const targetPassed = target.passed
360
+ const counts = {
361
+ ...(legacyPassed === undefined ? {} : { legacyPassed }),
362
+ ...(targetPassed === undefined ? {} : { targetPassed })
363
+ }
364
+ if (!legacy.isClean) {
365
+ return DiffVerdict.make({
366
+ file,
367
+ class: "legacy-red",
368
+ ...counts,
369
+ detail: "the legacy build fails this file too; nothing to compare"
370
+ })
371
+ }
372
+ const gate = target.issues.find((issue) => issue.gateClass !== undefined)
373
+ if (gate?.gateClass === "hang") {
374
+ return DiffVerdict.make({ file, class: "hang", ...counts, detail: strip(gate.description) })
375
+ }
376
+ if (gate?.gateClass === "crash") {
377
+ return DiffVerdict.make({ file, class: "crash", ...counts, detail: strip(gate.description) })
378
+ }
379
+ if (!target.isClean) {
380
+ return DiffVerdict.make({
381
+ file,
382
+ class: "diverge",
383
+ ...counts,
384
+ detail: strip(target.issues.map((issue) => issue.description).join("\n"))
385
+ })
386
+ }
387
+ if (legacyPassed !== undefined && targetPassed !== undefined && targetPassed !== legacyPassed) {
388
+ return DiffVerdict.make({
389
+ file,
390
+ class: "diverge",
391
+ ...counts,
392
+ detail: `${targetPassed} test(s) pass on the target, ${legacyPassed} on the legacy build`
393
+ })
394
+ }
395
+ return DiffVerdict.make({ file, class: "pass", ...counts, detail: "" })
396
+ }
397
+
398
+ /** The `.diag` a fixer reads as its only runtime evidence. */
399
+ export const renderDiag = (verdict: DiffVerdict, tailChars = 4_000): string =>
400
+ [
401
+ `# ${verdict.file}: ${verdict.class}`,
402
+ "",
403
+ `- legacy passed: ${verdict.legacyPassed ?? "unknown"}; target passed: ${verdict.targetPassed ?? "unknown"}`,
404
+ "",
405
+ "## Target output (tail)",
406
+ "",
407
+ "```",
408
+ verdict.detail.length > tailChars ? `…${verdict.detail.slice(-tailChars)}` : verdict.detail,
409
+ "```",
410
+ ""
411
+ ].join("\n")
412
+
413
+ export const renderDifferentialReport = (
414
+ round: number,
415
+ verdicts: ReadonlyArray<DiffVerdict>
416
+ ): string => {
417
+ const by = (klass: DiffClass) => verdicts.filter((verdict) => verdict.class === klass)
418
+ return [
419
+ `# Differential tests, round ${round}`,
420
+ "",
421
+ `- files: ${verdicts.length}; pass ${by("pass").length}, diverge ${by("diverge").length}, crash ${by("crash").length}, hang ${by("hang").length}, legacy-red ${by("legacy-red").length}`,
422
+ "",
423
+ ...(["diverge", "crash", "hang"] as const).flatMap((klass) =>
424
+ by(klass).length === 0
425
+ ? []
426
+ : [`## ${klass}`, "", ...by(klass).map((verdict) => `- ${verdict.file}`), ""]
427
+ )
428
+ ].join("\n")
429
+ }