@dzhechkov/harness-core 0.8.10 → 0.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.dz-manifest.json +120 -60
  2. package/dist/codex-invoke.d.ts +73 -0
  3. package/dist/codex-invoke.d.ts.map +1 -0
  4. package/dist/codex-invoke.js +80 -0
  5. package/dist/codex-invoke.js.map +1 -0
  6. package/dist/discrimination-gate.d.ts +63 -3
  7. package/dist/discrimination-gate.d.ts.map +1 -1
  8. package/dist/discrimination-gate.js +113 -16
  9. package/dist/discrimination-gate.js.map +1 -1
  10. package/dist/event-chain.d.ts +30 -0
  11. package/dist/event-chain.d.ts.map +1 -1
  12. package/dist/event-chain.js +24 -0
  13. package/dist/event-chain.js.map +1 -1
  14. package/dist/guard.d.ts +8 -0
  15. package/dist/guard.d.ts.map +1 -1
  16. package/dist/guard.js +37 -0
  17. package/dist/guard.js.map +1 -1
  18. package/dist/index.d.ts +8 -5
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +8 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/mutation-gate.d.ts +39 -36
  23. package/dist/mutation-gate.d.ts.map +1 -1
  24. package/dist/mutation-gate.js +111 -5
  25. package/dist/mutation-gate.js.map +1 -1
  26. package/dist/operations.d.ts.map +1 -1
  27. package/dist/operations.js +8 -5
  28. package/dist/operations.js.map +1 -1
  29. package/dist/plugin.d.ts.map +1 -1
  30. package/dist/plugin.js +27 -5
  31. package/dist/plugin.js.map +1 -1
  32. package/dist/recommend.d.ts +4 -5
  33. package/dist/recommend.d.ts.map +1 -1
  34. package/dist/recommend.js +110 -45
  35. package/dist/recommend.js.map +1 -1
  36. package/dist/registry.d.ts +32 -1
  37. package/dist/registry.d.ts.map +1 -1
  38. package/dist/registry.js +165 -9
  39. package/dist/registry.js.map +1 -1
  40. package/dist/run-records.d.ts +3 -0
  41. package/dist/run-records.d.ts.map +1 -1
  42. package/dist/run-records.js +18 -0
  43. package/dist/run-records.js.map +1 -1
  44. package/dist/score.d.ts +95 -0
  45. package/dist/score.d.ts.map +1 -1
  46. package/dist/score.js +274 -2
  47. package/dist/score.js.map +1 -1
  48. package/dist/skill-selection.d.ts +72 -0
  49. package/dist/skill-selection.d.ts.map +1 -0
  50. package/dist/skill-selection.js +76 -0
  51. package/dist/skill-selection.js.map +1 -0
  52. package/dist/stem.d.ts +12 -0
  53. package/dist/stem.d.ts.map +1 -0
  54. package/dist/stem.js +89 -0
  55. package/dist/stem.js.map +1 -0
  56. package/dist/telemetry-vocabulary.d.ts +7 -0
  57. package/dist/telemetry-vocabulary.d.ts.map +1 -1
  58. package/dist/telemetry-vocabulary.js +29 -0
  59. package/dist/telemetry-vocabulary.js.map +1 -1
  60. package/package.json +8 -8
  61. package/sbom.json +209 -59
  62. package/src/codex-invoke.ts +138 -0
  63. package/src/discrimination-gate.ts +183 -19
  64. package/src/event-chain.ts +41 -0
  65. package/src/guard.ts +40 -0
  66. package/src/index.ts +10 -4
  67. package/src/mutation-gate.ts +165 -5
  68. package/src/operations.ts +8 -5
  69. package/src/plugin.ts +27 -5
  70. package/src/recommend.ts +116 -46
  71. package/src/registry.ts +144 -11
  72. package/src/run-records.ts +23 -0
  73. package/src/score.ts +361 -3
  74. package/src/skill-selection.ts +111 -0
  75. package/src/stem.ts +87 -0
  76. package/src/telemetry-vocabulary.ts +36 -0
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,9 @@ export declare function decideRecordWrite(input: {
57
57
  targetHasPair?: boolean;
58
58
  /** Stamped INTO the object before serialising — never rewritten in the shell afterwards (FR-7). */
59
59
  timestamp?: string | null;
60
+ /** Who ran it. Supplied by the CALLER, which lives outside the workflow sandbox and can see the
61
+ * host; absent stays absent (see the stamping comment below). */
62
+ runnerId?: string | null;
60
63
  maxChars?: number;
61
64
  }): RecordDecision;
62
65
  /** The read-back verdict (ADR-002): equal bytes or NOT written. Never inferred from the absence of an error. */
@@ -1 +1 @@
1
- {"version":3,"file":"run-records.d.ts","sourceRoot":"","sources":["../src/run-records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEpD,MAAM,MAAM,aAAa;AACvB,gDAAgD;AAC9C,SAAS;AACX,+EAA+E;GAC7E,WAAW;AACb,yEAAyE;GACvE,SAAS;AACX,yEAAyE;GACvE,SAAS;AACX,kGAAkG;GAChG,cAAc,CAAC;AAEnB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,2FAA2F;AAC3F,eAAO,MAAM,qBAAqB,QAAS,CAAC;AA+C5C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kGAAkG;IAClG,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gGAAgG;IAChG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,cAAc,CAuFjB;AAED,gHAAgH;AAChH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAoB9F;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAE5F"}
1
+ {"version":3,"file":"run-records.d.ts","sourceRoot":"","sources":["../src/run-records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEpD,MAAM,MAAM,aAAa;AACvB,gDAAgD;AAC9C,SAAS;AACX,+EAA+E;GAC7E,WAAW;AACb,yEAAyE;GACvE,SAAS;AACX,yEAAyE;GACvE,SAAS;AACX,kGAAkG;GAChG,cAAc,CAAC;AAEnB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,2FAA2F;AAC3F,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAoD5C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kGAAkG;IAClG,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gGAAgG;IAChG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;sEACkE;IAClE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,cAAc,CAsGjB;AAED,gHAAgH;AAChH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAoB9F;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAE5F"}
@@ -59,6 +59,10 @@ function shapeMismatch(kind, payload) {
59
59
  }
60
60
  return null;
61
61
  }
62
+ /** A runner id is missing when absent or blank — the same gap rule the date stamp uses. */
63
+ function isRunnerGap(v) {
64
+ return v === null || v === undefined || (typeof v === 'string' && v.trim() === '');
65
+ }
62
66
  export function decideRecordWrite(input) {
63
67
  const { kind, payloadRaw, stage } = input;
64
68
  if (kind !== 'ledger' && kind !== 'training-pair') {
@@ -123,6 +127,20 @@ export function decideRecordWrite(input) {
123
127
  if (kind === 'training-pair' && isGap(stamped['ts']))
124
128
  stamped['ts'] = input.timestamp;
125
129
  }
130
+ // WHO ran this. Stamped HERE and nowhere else, for a structural reason: the workflow lives in a
131
+ // sandbox with no host, no process and no clock, so it cannot name its own runner — but this
132
+ // command runs outside that sandbox and can. Same seam that already stamps the date.
133
+ //
134
+ // The field answers a DIFFERENT question from the zombie-preflight predicate (backlog 4a727ac6):
135
+ // that one asks "is this job's PARENT still alive", this one asks "which runner produced this
136
+ // row". Complementary, not duplicate — a future run index joins them, and neither can answer for
137
+ // the other. Absent identity stays ABSENT: an unknown runner is never invented as 'unknown',
138
+ // because a fabricated identity is worse than a missing one for anything that later joins on it.
139
+ // A blank supplied id is a gap too: `' '` sneaking in as a value would join later as a distinct
140
+ // runner made of spaces — the same class of harm as inventing 'unknown'.
141
+ if (kind === 'ledger' && isRunnerGap(stamped['runnerId']) && !isRunnerGap(input.runnerId)) {
142
+ stamped['runnerId'] = input.runnerId.trim();
143
+ }
126
144
  let line;
127
145
  try {
128
146
  line = JSON.stringify(stamped);
@@ -1 +1 @@
1
- {"version":3,"file":"run-records.js","sourceRoot":"","sources":["../src/run-records.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-records.js","sourceRoot":"","sources":["../src/run-records.ts"],"names":[],"mappings":"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"}
package/dist/score.d.ts CHANGED
@@ -32,6 +32,14 @@ export interface RunScorecard {
32
32
  readonly disciplines: readonly DisciplineScore[];
33
33
  /** Extracted cross-model grade, when one exists (e.g. "A−", "C"). */
34
34
  readonly qeGrade: string | null;
35
+ /**
36
+ * F30а-3, ADDITIVE: present when the run's artifacts carry a structured mutation table. Optional
37
+ * on purpose — every scorecard written before this field existed stays a valid RunScorecard, and
38
+ * `scoreAggregateRowFrom` keeps accepting rows without it. A run with no table reports `absent`
39
+ * rather than omitting the field, so "the gate never ran" and "an older scorer wrote this row"
40
+ * stay distinguishable.
41
+ */
42
+ readonly mutationEvidence?: MutationEvidence;
35
43
  readonly passed: number;
36
44
  readonly total: number;
37
45
  readonly summary: string;
@@ -67,6 +75,31 @@ export declare const OBSERVABILITY_SECTION = "Observability";
67
75
  */
68
76
  export declare function observabilityAnswer(architectureMarkdown: string | undefined | null): 'answered' | 'nothing-to-observe' | 'empty' | 'absent';
69
77
  export type RunArtifacts = Readonly<Record<string, string>>;
78
+ /**
79
+ * F30а-3 — structured mutation evidence.
80
+ *
81
+ * `discrimination` has always scored PROSE: a sentence the author writes about their own work.
82
+ * "None of the mutants survived" scores identically whether three mutations ran or zero did, which
83
+ * makes the strongest discipline in the pipeline rest on the weakest kind of evidence. The mutation
84
+ * gate already emits a five-valued verdict per registry entry, and only `PROVEN` is proof — so a
85
+ * table carrying those verdicts can be COUNTED instead of believed.
86
+ *
87
+ * The design is defined by what it REFUSES. A table that looks like evidence and proves nothing is
88
+ * worse than no table, because it buys the appearance of rigour: the empty one, the header-only one,
89
+ * the one whose every row is INCONCLUSIVE. Each of those returns a non-proving status and is NAMED
90
+ * in the scorecard evidence, never silently treated as corroboration.
91
+ */
92
+ export type MutationEvidenceStatus = 'proven' | 'present-unproven' | 'malformed' | 'absent';
93
+ export interface MutationEvidence {
94
+ readonly status: MutationEvidenceStatus;
95
+ /** Rows whose verdict is exactly PROVEN. */
96
+ readonly proven: number;
97
+ /** Data rows found under the header (0 for the header-only table). */
98
+ readonly rows: number;
99
+ /** The line the verdict rests on — evidence must show its work. */
100
+ readonly evidence: string;
101
+ }
102
+ export declare function readMutationEvidence(text: string): MutationEvidence;
70
103
  export type GradeReadStatus = 'unique' | 'ambiguous' | 'none';
71
104
  export interface GradeReading {
72
105
  readonly status: GradeReadStatus;
@@ -91,4 +124,66 @@ export declare function readQeGrade(qeText: string): GradeReading;
91
124
  export declare function extractQeGrade(qeText: string): string | null;
92
125
  export declare function scoreRun(slug: string, artifacts: RunArtifacts): RunScorecard;
93
126
  export declare function renderScorecard(card: RunScorecard): string;
127
+ /** The append-only projection of one immutable `score-<qeHash>.json` receipt. */
128
+ export interface ScoreAggregateRow {
129
+ readonly ts: string;
130
+ readonly slug: string;
131
+ readonly qeHash: string;
132
+ readonly passed: number;
133
+ readonly total: number;
134
+ readonly qeGrade: string | null;
135
+ readonly disciplines: readonly {
136
+ readonly id: string;
137
+ readonly verdict: DisciplineVerdict;
138
+ }[];
139
+ /**
140
+ * F30а-3, ADDITIVE: rows PROVEN by the mutation gate, when the scorecard carried a table.
141
+ * `undefined` means the scorecard had no mutation field at all — which is NOT the same as `0`
142
+ * (a table that ran and proved nothing). Every row written before this field existed keeps
143
+ * parsing: the aggregate must never lose its history to a schema change.
144
+ */
145
+ readonly mutationProven?: number;
146
+ }
147
+ export interface ScoreReceiptInput {
148
+ readonly content: string;
149
+ readonly qeHash: string;
150
+ /** Supplied by the impure caller. Receipt projection never reads a clock. */
151
+ readonly ts: string;
152
+ }
153
+ /**
154
+ * Parse one score receipt into the deliberately small aggregate schema.
155
+ *
156
+ * The caller owns I/O and supplies `ts`; this function is deterministic for the same input. A
157
+ * syntactically valid but internally inconsistent scorecard is unreadable evidence, not a row the
158
+ * aggregate should silently bless.
159
+ */
160
+ export declare function scoreReceiptToAggregateRow(input: ScoreReceiptInput): ScoreAggregateRow;
161
+ /** Read only valid aggregate rows; event-chain verification separately names malformed lines. */
162
+ export declare function readScoreAggregateRows(text: string): ScoreAggregateRow[];
163
+ /** Keep the first occurrence of each `(slug, qeHash)` pair not already present in the aggregate. */
164
+ export declare function dedupeScoreAggregateRows(candidates: readonly ScoreAggregateRow[], existing: readonly ScoreAggregateRow[]): ScoreAggregateRow[];
165
+ export type ScoreAggregateVerdict = 'REPORTED' | 'INSUFFICIENT_DATA';
166
+ export interface ScoreDisciplineAggregate {
167
+ readonly id: string;
168
+ readonly pass: number;
169
+ readonly partial: number;
170
+ readonly absent: number;
171
+ }
172
+ export interface ScoreGradeAggregate {
173
+ readonly grade: string | null;
174
+ readonly count: number;
175
+ }
176
+ export interface ScoreAggregateReport {
177
+ readonly verdict: ScoreAggregateVerdict;
178
+ readonly receipts: number;
179
+ readonly appended: number;
180
+ readonly unreadable: number;
181
+ /** Repo-relative receipt paths: unreadable evidence is always named, never only counted. */
182
+ readonly unreadableReceipts: readonly string[];
183
+ readonly disciplines: readonly ScoreDisciplineAggregate[];
184
+ readonly grades: readonly ScoreGradeAggregate[];
185
+ }
186
+ /** Fold the aggregate into an advisory report. No readable rows is a third state, never success. */
187
+ export declare function buildScoreAggregateReport(rows: readonly ScoreAggregateRow[], unreadableReceipts: readonly string[], appended: number): ScoreAggregateReport;
188
+ export declare function renderScoreAggregateReport(report: ScoreAggregateReport): string;
94
189
  //# sourceMappingURL=score.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,sFAAsF;AACtF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,GAAG,oBAAoB,GAAG,OAAO,GAAG,QAAQ,CAkC3I;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AA6E5D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CA2BxD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,YAAY,CAiL5E;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAW1D"}
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"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"}
package/dist/score.js CHANGED
@@ -143,6 +143,87 @@ function evidenceLinePositive(text, re, negationRe = NEGATION_RE) {
143
143
  }
144
144
  return null;
145
145
  }
146
+ /**
147
+ * The gate's own verdict vocabulary. Anything outside it is UNRECOGNISED, which is why a table of
148
+ * free-text opinions ("looked fine", "ok") is malformed rather than quietly scored as unproven:
149
+ * the difference between "the gate ran and found nothing" and "nobody ran the gate" is the whole
150
+ * point of the field.
151
+ */
152
+ const MUTATION_VERDICTS = new Set([
153
+ 'PROVEN',
154
+ 'MUTATION_UNPARSEABLE',
155
+ 'MUTATION_LOAD_FATAL',
156
+ 'OVER_FAILING',
157
+ 'INCONCLUSIVE',
158
+ 'SURVIVED',
159
+ 'NOT_PROVEN',
160
+ ]);
161
+ const splitRow = (line) => line
162
+ .trim()
163
+ .replace(/^\|/, '')
164
+ .replace(/\|$/, '')
165
+ .split('|')
166
+ .map((cell) => cell.trim());
167
+ const isSeparatorRow = (line) => /^\|[\s:|-]+\|?$/.test(line.trim());
168
+ export function readMutationEvidence(text) {
169
+ const lines = String(text).split('\n');
170
+ for (let i = 0; i < lines.length; i++) {
171
+ const line = lines[i];
172
+ if (line === undefined || !line.trim().startsWith('|'))
173
+ continue;
174
+ const header = splitRow(line);
175
+ // A mutation table is identified by its COLUMNS, not by a heading above it: headings drift
176
+ // across reports and translations, column names are what the parser actually reads.
177
+ const verdictCol = header.findIndex((c) => /verdict/i.test(c));
178
+ if (verdictCol < 0 || !header.some((c) => /mutation|mutant/i.test(c)))
179
+ continue;
180
+ let rows = 0;
181
+ let proven = 0;
182
+ let recognised = 0;
183
+ for (let j = i + 1; j < lines.length; j++) {
184
+ const row = lines[j];
185
+ if (row === undefined || !row.trim().startsWith('|'))
186
+ break;
187
+ if (isSeparatorRow(row))
188
+ continue;
189
+ const cells = splitRow(row);
190
+ rows++;
191
+ const cell = (cells[verdictCol] ?? '').toUpperCase();
192
+ // Word-bounded: NOT_PROVEN contains PROVEN as a substring and must never count as one.
193
+ const token = (cell.match(/\b[A-Z_]{4,}\b/) ?? [])[0] ?? '';
194
+ if (!MUTATION_VERDICTS.has(token))
195
+ continue;
196
+ recognised++;
197
+ if (token === 'PROVEN')
198
+ proven++;
199
+ }
200
+ if (proven > 0) {
201
+ return {
202
+ status: 'proven',
203
+ proven,
204
+ rows,
205
+ evidence: `mutation table: ${proven} of ${rows} row(s) PROVEN`,
206
+ };
207
+ }
208
+ if (rows > 0 && recognised === 0) {
209
+ return {
210
+ status: 'malformed',
211
+ proven: 0,
212
+ rows,
213
+ evidence: `mutation table: ${rows} row(s), no recognised gate verdict in the Verdict column — unreadable, not proof`,
214
+ };
215
+ }
216
+ return {
217
+ status: 'present-unproven',
218
+ proven: 0,
219
+ rows,
220
+ evidence: rows === 0
221
+ ? 'mutation table present with no data rows — proved nothing'
222
+ : `mutation table: 0 of ${rows} row(s) PROVEN — proved nothing`,
223
+ };
224
+ }
225
+ return { status: 'absent', proven: 0, rows: 0, evidence: 'no mutation table' };
226
+ }
146
227
  // Word-bounded on BOTH sides: "upgrade B-tree" fabricated a B- (Codex QE #1). The lookahead also
147
228
  // rejects "Grade B-tree" (letter after the dash) while keeping the real "Grade: A−" formats.
148
229
  //
@@ -281,9 +362,21 @@ export function scoreRun(slug, artifacts) {
281
362
  // MUTANTS — "None of the mutants survived", "neither mutant escaped" — which is the proof, not
282
363
  // its denial. The quantifiers would discard exactly the strongest lines this discipline exists
283
364
  // to find. "No discrimination proof was performed" is still caught by the narrow list.
365
+ // F30а-3 makes this ADDITIVE: a structured mutation table is counted FIRST (it can be
366
+ // verified, prose can only be believed), and the prose path below is left exactly as it was —
367
+ // no run that scored `pass` yesterday loses it today. What the table changes is the OTHER
368
+ // direction: a table that proves nothing is named in the evidence instead of sitting silently
369
+ // beside a winning sentence and reading as corroboration.
370
+ const mutationEvidence = readMutationEvidence(allText);
284
371
  const discr = evidenceLinePositive(allText, /discrimination|§42/i) ??
285
372
  evidenceLinePositive(allText, /mutation[s]?\s.*(prov|kill)|mutant[s]?\s.*(kill|red)|RED on the old|goes? RED|failed as expected/i);
286
- add('discrimination', 'the property test is proven able to fail', discr !== null ? 'pass' : 'absent', discr ?? 'no discrimination/§42/mutation-proof evidence in any artifact');
373
+ const discrPasses = mutationEvidence.status === 'proven' || discr !== null;
374
+ add('discrimination', 'the property test is proven able to fail', discrPasses ? 'pass' : 'absent', mutationEvidence.status === 'proven'
375
+ ? mutationEvidence.evidence
376
+ : (discr ??
377
+ (mutationEvidence.status === 'absent'
378
+ ? 'no discrimination/§42/mutation-proof evidence in any artifact'
379
+ : mutationEvidence.evidence)));
287
380
  // 3. Cross-model QE — an independent family reviewed it, and a grade exists.
288
381
  const grade = extractQeGrade(qeText);
289
382
  if (qeText === '') {
@@ -347,7 +440,7 @@ export function scoreRun(slug, artifacts) {
347
440
  const summary = `${passed}/${total} disciplines fully evidenced` +
348
441
  (grade !== null ? ` · QE grade ${grade}` : ' · no QE grade') +
349
442
  (worst.length > 0 ? ` · absent: ${worst.join(', ')}` : '');
350
- return { slug, disciplines, qeGrade: grade, passed, total, summary };
443
+ return { slug, disciplines, qeGrade: grade, mutationEvidence, passed, total, summary };
351
444
  }
352
445
  const MARK = { pass: '✓', partial: '◐', absent: '✗' };
353
446
  export function renderScorecard(card) {
@@ -358,8 +451,187 @@ export function renderScorecard(card) {
358
451
  out.push(` ${MARK[d.verdict]} ${d.title}`);
359
452
  out.push(` ${d.evidence}`);
360
453
  }
454
+ // F30а-3: the table's own verdict is reported INDEPENDENTLY of which path scored `discrimination`.
455
+ // When prose carries the pass, the discipline's evidence line shows the prose — and a table that
456
+ // proved nothing would sit in the report unmentioned, beside a sentence claiming the mutants died.
457
+ // Silence about a hollow table is the failure this feature exists to prevent, so it is stated here
458
+ // even when it changes no verdict. No table at all stays silent: the common case earns no noise.
459
+ if (card.mutationEvidence !== undefined && card.mutationEvidence.status !== 'absent') {
460
+ out.push('');
461
+ out.push(` ${card.mutationEvidence.evidence}`);
462
+ }
361
463
  out.push('');
362
464
  out.push(` ${card.summary}`);
363
465
  return out.join('\n');
364
466
  }
467
+ function isDisciplineVerdict(value) {
468
+ return value === 'pass' || value === 'partial' || value === 'absent';
469
+ }
470
+ function scoreAggregateRowFrom(value) {
471
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
472
+ return null;
473
+ const record = value;
474
+ const disciplinesValue = record['disciplines'];
475
+ if (!Array.isArray(disciplinesValue))
476
+ return null;
477
+ const disciplines = [];
478
+ const disciplineIds = new Set();
479
+ for (const value of disciplinesValue) {
480
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
481
+ return null;
482
+ const discipline = value;
483
+ if (typeof discipline['id'] !== 'string' || discipline['id'].trim() === '')
484
+ return null;
485
+ if (!isDisciplineVerdict(discipline['verdict']))
486
+ return null;
487
+ if (disciplineIds.has(discipline['id']))
488
+ return null;
489
+ disciplineIds.add(discipline['id']);
490
+ disciplines.push({ id: discipline['id'], verdict: discipline['verdict'] });
491
+ }
492
+ const passed = record['passed'];
493
+ const total = record['total'];
494
+ const qeGrade = record['qeGrade'];
495
+ if (typeof record['ts'] !== 'string' || record['ts'].trim() === '')
496
+ return null;
497
+ if (typeof record['slug'] !== 'string' || record['slug'].trim() === '')
498
+ return null;
499
+ if (typeof record['qeHash'] !== 'string' || record['qeHash'].trim() === '')
500
+ return null;
501
+ if (typeof passed !== 'number' || !Number.isSafeInteger(passed) || passed < 0)
502
+ return null;
503
+ if (typeof total !== 'number' || !Number.isSafeInteger(total) || total < 0)
504
+ return null;
505
+ if (qeGrade !== null && (typeof qeGrade !== 'string' || qeGrade.trim() === ''))
506
+ return null;
507
+ if (total !== disciplines.length)
508
+ return null;
509
+ if (passed !== disciplines.filter((discipline) => discipline.verdict === 'pass').length)
510
+ return null;
511
+ return {
512
+ ts: record['ts'],
513
+ slug: record['slug'],
514
+ qeHash: record['qeHash'],
515
+ passed,
516
+ total,
517
+ qeGrade,
518
+ disciplines,
519
+ };
520
+ }
521
+ /**
522
+ * Parse one score receipt into the deliberately small aggregate schema.
523
+ *
524
+ * The caller owns I/O and supplies `ts`; this function is deterministic for the same input. A
525
+ * syntactically valid but internally inconsistent scorecard is unreadable evidence, not a row the
526
+ * aggregate should silently bless.
527
+ */
528
+ export function scoreReceiptToAggregateRow(input) {
529
+ let parsed;
530
+ try {
531
+ parsed = JSON.parse(input.content);
532
+ }
533
+ catch {
534
+ throw new Error('score receipt is not valid JSON');
535
+ }
536
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
537
+ throw new Error('score receipt is not a RunScorecard object');
538
+ }
539
+ const receipt = parsed;
540
+ const row = scoreAggregateRowFrom({ ...receipt, ts: input.ts, qeHash: input.qeHash });
541
+ if (row === null)
542
+ throw new Error('score receipt has an invalid RunScorecard shape');
543
+ // Projected here rather than inside scoreAggregateRowFrom so that a MALFORMED mutation field can
544
+ // never invalidate an otherwise-good row: the field is additive, so its absence — or its
545
+ // unreadability — costs the row nothing but the field itself.
546
+ const ev = receipt['mutationEvidence'];
547
+ if (typeof ev === 'object' && ev !== null && !Array.isArray(ev)) {
548
+ const proven = ev['proven'];
549
+ if (typeof proven === 'number' && Number.isFinite(proven) && proven >= 0) {
550
+ return { ...row, mutationProven: proven };
551
+ }
552
+ }
553
+ return row;
554
+ }
555
+ /** Read only valid aggregate rows; event-chain verification separately names malformed lines. */
556
+ export function readScoreAggregateRows(text) {
557
+ const rows = [];
558
+ for (const line of String(text).split('\n')) {
559
+ if (line.trim() === '')
560
+ continue;
561
+ try {
562
+ const row = scoreAggregateRowFrom(JSON.parse(line));
563
+ if (row !== null)
564
+ rows.push(row);
565
+ }
566
+ catch {
567
+ /* A torn line is chain evidence, not a row. verifyEventChainText names it. */
568
+ }
569
+ }
570
+ return rows;
571
+ }
572
+ /** Keep the first occurrence of each `(slug, qeHash)` pair not already present in the aggregate. */
573
+ export function dedupeScoreAggregateRows(candidates, existing) {
574
+ const seen = new Set(existing.map((row) => `${row.slug}\u0000${row.qeHash}`));
575
+ const fresh = [];
576
+ for (const row of candidates) {
577
+ const key = `${row.slug}\u0000${row.qeHash}`;
578
+ if (seen.has(key))
579
+ continue;
580
+ seen.add(key);
581
+ fresh.push(row);
582
+ }
583
+ return fresh;
584
+ }
585
+ /** Fold the aggregate into an advisory report. No readable rows is a third state, never success. */
586
+ export function buildScoreAggregateReport(rows, unreadableReceipts, appended) {
587
+ const disciplineCounts = new Map();
588
+ const gradeCounts = new Map();
589
+ for (const row of rows) {
590
+ gradeCounts.set(row.qeGrade, (gradeCounts.get(row.qeGrade) ?? 0) + 1);
591
+ for (const discipline of row.disciplines) {
592
+ const counts = disciplineCounts.get(discipline.id) ?? { pass: 0, partial: 0, absent: 0 };
593
+ counts[discipline.verdict] += 1;
594
+ disciplineCounts.set(discipline.id, counts);
595
+ }
596
+ }
597
+ const disciplines = [...disciplineCounts.entries()]
598
+ .sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)
599
+ .map(([id, counts]) => ({ id, ...counts }));
600
+ const grades = [...gradeCounts.entries()]
601
+ .sort(([a], [b]) => (a === null ? 1 : b === null ? -1 : a < b ? -1 : a > b ? 1 : 0))
602
+ .map(([grade, count]) => ({ grade, count }));
603
+ return {
604
+ verdict: rows.length === 0 ? 'INSUFFICIENT_DATA' : 'REPORTED',
605
+ receipts: rows.length + unreadableReceipts.length,
606
+ appended,
607
+ unreadable: unreadableReceipts.length,
608
+ unreadableReceipts: [...unreadableReceipts],
609
+ disciplines,
610
+ grades,
611
+ };
612
+ }
613
+ export function renderScoreAggregateReport(report) {
614
+ const out = [
615
+ 'dz score --all — chained score-receipt aggregate (descriptive-only, never a gate)',
616
+ `VERDICT: ${report.verdict}`,
617
+ `receipts: ${report.receipts}`,
618
+ `appended: ${report.appended}`,
619
+ `unreadable: ${report.unreadable}`,
620
+ ];
621
+ if (report.unreadableReceipts.length > 0) {
622
+ out.push(`unreadable receipts: ${report.unreadableReceipts.join(', ')}`);
623
+ }
624
+ if (report.verdict === 'INSUFFICIENT_DATA') {
625
+ out.push('No readable score receipts; no discipline ratio or percentage is reported.');
626
+ return out.join('\n');
627
+ }
628
+ out.push('disciplines:');
629
+ for (const discipline of report.disciplines) {
630
+ out.push(` ${discipline.id}: pass ${discipline.pass} · partial ${discipline.partial} · absent ${discipline.absent}`);
631
+ }
632
+ out.push('QE grades:');
633
+ for (const grade of report.grades)
634
+ out.push(` ${grade.grade ?? '(no grade)'}: ${grade.count}`);
635
+ return out.join('\n');
636
+ }
365
637
  //# sourceMappingURL=score.js.map