@dzhechkov/harness-core 0.3.147 → 0.3.149
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.
- package/.dz-manifest.json +56 -8
- package/README.md +2 -0
- package/dist/feature-adr-checkpoints.d.ts +113 -0
- package/dist/feature-adr-checkpoints.d.ts.map +1 -0
- package/dist/feature-adr-checkpoints.js +184 -0
- package/dist/feature-adr-checkpoints.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/reqe.d.ts +106 -0
- package/dist/reqe.d.ts.map +1 -0
- package/dist/reqe.js +197 -0
- package/dist/reqe.js.map +1 -0
- package/package.json +5 -5
- package/sbom.json +127 -7
- package/src/feature-adr-checkpoints.ts +221 -0
- package/src/index.ts +30 -0
- package/src/reqe.ts +243 -0
package/dist/reqe.d.ts
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* re-QE debt — the pure half of `dz reqe` (backlog 6b40e667, goal honest-quality).
|
|
3
|
+
*
|
|
4
|
+
* The cross-model-QE guard ("the model that writes code must not self-review") is an ADR-named
|
|
5
|
+
* safety property of the feature-adr pipeline. The usage-adaptive override consciously SUSPENDS it
|
|
6
|
+
* (FR-2.9): at >= threshold usage every remaining stage — including Step-8 QE — switches to Codex,
|
|
7
|
+
* so coder and reviewer become the SAME family. The rule doc said "run an independent re-QE after
|
|
8
|
+
* limits reset" — a human instruction on the weakest detection layer. This module turns it into a
|
|
9
|
+
* DEBT with a lifecycle:
|
|
10
|
+
*
|
|
11
|
+
* emit — the workflow records features/<slug>/.fa-state/reqe-due.json when Step-8 actually ran
|
|
12
|
+
* same-family under the override (not on every switch — a switch before Step 8 that
|
|
13
|
+
* still got cross-family QE creates no debt);
|
|
14
|
+
* list — `dz reqe` scans the debts; `dz usage` surfaces the count so the moment limits free up
|
|
15
|
+
* is the moment the debt is visible;
|
|
16
|
+
* brief — `dz reqe --slug <s>` prints a ready cross-family review brief (the OTHER family than
|
|
17
|
+
* the coder);
|
|
18
|
+
* settle — `dz reqe --slug <s> --done --report <file>` clears the debt FAIL-CLOSED: only against
|
|
19
|
+
* an existing, non-trivial report that names a grade; the settlement is appended to
|
|
20
|
+
* 08_qe_report.md so the artifact trail closes.
|
|
21
|
+
*
|
|
22
|
+
* HONEST SCOPE: nothing here re-runs QE automatically (no background spend — the human decides);
|
|
23
|
+
* the same-family CLAUDE belt fallback (codex unavailable) is out of scope by design — it is
|
|
24
|
+
* already logged loudly at run time and is not a limit-pressure artifact; runs from before this
|
|
25
|
+
* feature carry no marker and are UNDETERMINABLE, not debt-free.
|
|
26
|
+
*/
|
|
27
|
+
export declare const REQE_SCHEMA = "reqe-due-1";
|
|
28
|
+
export declare const REQE_SCOPE: string;
|
|
29
|
+
export type ModelFamily = 'claude' | 'openai';
|
|
30
|
+
/** Family classification shared with the workflow's acFamOf (codex/gpt/openai markers ⇒ openai).
|
|
31
|
+
* DELIBERATELY binary over the workflow's own CONTROLLED vocabulary (coderUsed ∈ claude | codex |
|
|
32
|
+
* codex-fallback; qeReviewerUsed ∈ claude | codex) — this is never fed arbitrary model ids, so the
|
|
33
|
+
* claude default is the correct reading of "not a codex marker", not a fail-open (Codex QE #11,
|
|
34
|
+
* accepted with this documentation). */
|
|
35
|
+
export declare function modelFamily(spec: string | null | undefined): ModelFamily;
|
|
36
|
+
export interface ReqeEmitDecision {
|
|
37
|
+
emit: boolean;
|
|
38
|
+
reason: string;
|
|
39
|
+
}
|
|
40
|
+
/** Emit iff the QE stage label carries the workflow's ' (usage-switched)' marker AND the reviewer
|
|
41
|
+
* family equals the coder family. Marker-only (cross-family survived the switch) or same-family
|
|
42
|
+
* WITHOUT the marker (the codex-unavailable Claude belt — degraded loudly at run time, not a
|
|
43
|
+
* limit-pressure artifact) both create NO debt. */
|
|
44
|
+
export declare function shouldEmitReqeDebt(input: {
|
|
45
|
+
coderUsed: string | null | undefined;
|
|
46
|
+
qeReviewerUsed: string | null | undefined;
|
|
47
|
+
qeModelLabel: string | null | undefined;
|
|
48
|
+
}): ReqeEmitDecision;
|
|
49
|
+
export interface ReqeDebt {
|
|
50
|
+
schema: typeof REQE_SCHEMA;
|
|
51
|
+
slug: string;
|
|
52
|
+
coderFamily: ModelFamily;
|
|
53
|
+
qeFamily: ModelFamily;
|
|
54
|
+
qeGrade: string | null;
|
|
55
|
+
reason: string;
|
|
56
|
+
emittedAt: string | null;
|
|
57
|
+
/** The emitting run's identity (the workflow's qe inputHash). Lets a LATER run on the same slug
|
|
58
|
+
* emit a fresh debt even though an older settlement exists, while the SAME run's resume never
|
|
59
|
+
* re-opens a debt its settlement already covered (Codex QE round-2 #2). Optional: debts from
|
|
60
|
+
* before this field settle normally. */
|
|
61
|
+
runStamp?: string | null;
|
|
62
|
+
}
|
|
63
|
+
/** Build the debt record (the workflow serializes this; emittedAt is stamped by the writer agent's
|
|
64
|
+
* shell `date`, so the sandbox needs no Date). */
|
|
65
|
+
export declare function buildReqeDebt(input: {
|
|
66
|
+
slug: string;
|
|
67
|
+
coderUsed: string | null | undefined;
|
|
68
|
+
qeReviewerUsed: string | null | undefined;
|
|
69
|
+
qeGrade: string | null | undefined;
|
|
70
|
+
reason: string;
|
|
71
|
+
emittedAt?: string | null;
|
|
72
|
+
}): ReqeDebt;
|
|
73
|
+
/** Parse + validate a debt file's text. null = not a valid debt (the caller reports it as
|
|
74
|
+
* malformed — a corrupt debt file is NAMED, never silently dropped). */
|
|
75
|
+
export declare function parseReqeDebt(text: string): ReqeDebt | null;
|
|
76
|
+
export interface ReqeBrief {
|
|
77
|
+
reviewFamily: ModelFamily;
|
|
78
|
+
header: string;
|
|
79
|
+
instructions: readonly string[];
|
|
80
|
+
codexCmdTemplate: string | null;
|
|
81
|
+
}
|
|
82
|
+
/** The ready-to-run cross-family review brief. Review family = the OTHER family than the CODER
|
|
83
|
+
* (reviewing with the other-than-reviewer family would let a codex-coded, codex-reviewed run be
|
|
84
|
+
* "re-reviewed" by codex again). */
|
|
85
|
+
export declare function buildReqeBrief(debt: ReqeDebt, artifactsDir: string): ReqeBrief;
|
|
86
|
+
export interface ReqeSettlement {
|
|
87
|
+
ok: boolean;
|
|
88
|
+
error: string | null;
|
|
89
|
+
grade: string | null;
|
|
90
|
+
epilogue: string | null;
|
|
91
|
+
}
|
|
92
|
+
/** Extract the verdict grade from a report, or null. LINE-ANCHORED and range-proof (Codex QE #7):
|
|
93
|
+
* the boilerplate phrase `GRADE A-F` must not read as grade A, so a letter followed by a dash and
|
|
94
|
+
* another grade letter is rejected; and the grade must head its line (a quoted "do not assign
|
|
95
|
+
* GRADE A" mid-paragraph is not a verdict). Conflicting distinct grades ⇒ null (ambiguous). */
|
|
96
|
+
export declare function extractReportGrade(text: string): string | null;
|
|
97
|
+
/** FAIL-CLOSED settlement validation: the report must be non-trivial (>= 200 chars of substance)
|
|
98
|
+
* and must NAME exactly one line-anchored grade. A settlement that cannot cite its evidence is
|
|
99
|
+
* refused — clearing a debt against an empty file would re-open the exact hole this feature closes.
|
|
100
|
+
* HONEST LIMIT (documented, not hidden): the validator proves the settlement is PROCEDURALLY sound
|
|
101
|
+
* (a distinct, graded report exists); it cannot prove which model authored the text — attribution
|
|
102
|
+
* stays with the human running the brief. */
|
|
103
|
+
export declare function settleReqeDebt(debt: ReqeDebt, reportText: string, reportPath: string): ReqeSettlement;
|
|
104
|
+
/** Render the debt list for `dz reqe` / the `dz usage` surfacing line. */
|
|
105
|
+
export declare function renderReqeList(debts: readonly ReqeDebt[], malformed: number): string[];
|
|
106
|
+
//# sourceMappingURL=reqe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reqe.d.ts","sourceRoot":"","sources":["../src/reqe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,eAAO,MAAM,WAAW,eAAe,CAAC;AAExC,eAAO,MAAM,UAAU,QAGL,CAAC;AAEnB,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9C;;;;wCAIwC;AACxC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAExE;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;mDAGmD;AACnD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC,GAAG,gBAAgB,CAenB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;4CAGwC;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;kDACkD;AAClD,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,QAAQ,CAUX;AAED;wEACwE;AACxE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAwB3D;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;oCAEoC;AACpC,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,CAwB9E;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;+FAG+F;AAC/F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9D;AAED;;;;;6CAK6C;AAC7C,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,CAyBrG;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAatF"}
|
package/dist/reqe.js
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* re-QE debt — the pure half of `dz reqe` (backlog 6b40e667, goal honest-quality).
|
|
3
|
+
*
|
|
4
|
+
* The cross-model-QE guard ("the model that writes code must not self-review") is an ADR-named
|
|
5
|
+
* safety property of the feature-adr pipeline. The usage-adaptive override consciously SUSPENDS it
|
|
6
|
+
* (FR-2.9): at >= threshold usage every remaining stage — including Step-8 QE — switches to Codex,
|
|
7
|
+
* so coder and reviewer become the SAME family. The rule doc said "run an independent re-QE after
|
|
8
|
+
* limits reset" — a human instruction on the weakest detection layer. This module turns it into a
|
|
9
|
+
* DEBT with a lifecycle:
|
|
10
|
+
*
|
|
11
|
+
* emit — the workflow records features/<slug>/.fa-state/reqe-due.json when Step-8 actually ran
|
|
12
|
+
* same-family under the override (not on every switch — a switch before Step 8 that
|
|
13
|
+
* still got cross-family QE creates no debt);
|
|
14
|
+
* list — `dz reqe` scans the debts; `dz usage` surfaces the count so the moment limits free up
|
|
15
|
+
* is the moment the debt is visible;
|
|
16
|
+
* brief — `dz reqe --slug <s>` prints a ready cross-family review brief (the OTHER family than
|
|
17
|
+
* the coder);
|
|
18
|
+
* settle — `dz reqe --slug <s> --done --report <file>` clears the debt FAIL-CLOSED: only against
|
|
19
|
+
* an existing, non-trivial report that names a grade; the settlement is appended to
|
|
20
|
+
* 08_qe_report.md so the artifact trail closes.
|
|
21
|
+
*
|
|
22
|
+
* HONEST SCOPE: nothing here re-runs QE automatically (no background spend — the human decides);
|
|
23
|
+
* the same-family CLAUDE belt fallback (codex unavailable) is out of scope by design — it is
|
|
24
|
+
* already logged loudly at run time and is not a limit-pressure artifact; runs from before this
|
|
25
|
+
* feature carry no marker and are UNDETERMINABLE, not debt-free.
|
|
26
|
+
*/
|
|
27
|
+
export const REQE_SCHEMA = 'reqe-due-1';
|
|
28
|
+
export const REQE_SCOPE = 'scope: debt is emitted only when Step-8 QE actually ran on the coder’s own family under the ' +
|
|
29
|
+
'usage override; settling requires a graded cross-family report (fail-closed); nothing re-runs QE ' +
|
|
30
|
+
'automatically.';
|
|
31
|
+
/** Family classification shared with the workflow's acFamOf (codex/gpt/openai markers ⇒ openai).
|
|
32
|
+
* DELIBERATELY binary over the workflow's own CONTROLLED vocabulary (coderUsed ∈ claude | codex |
|
|
33
|
+
* codex-fallback; qeReviewerUsed ∈ claude | codex) — this is never fed arbitrary model ids, so the
|
|
34
|
+
* claude default is the correct reading of "not a codex marker", not a fail-open (Codex QE #11,
|
|
35
|
+
* accepted with this documentation). */
|
|
36
|
+
export function modelFamily(spec) {
|
|
37
|
+
return /codex|gpt|openai/i.test(String(spec ?? '')) ? 'openai' : 'claude';
|
|
38
|
+
}
|
|
39
|
+
/** Emit iff the QE stage label carries the workflow's ' (usage-switched)' marker AND the reviewer
|
|
40
|
+
* family equals the coder family. Marker-only (cross-family survived the switch) or same-family
|
|
41
|
+
* WITHOUT the marker (the codex-unavailable Claude belt — degraded loudly at run time, not a
|
|
42
|
+
* limit-pressure artifact) both create NO debt. */
|
|
43
|
+
export function shouldEmitReqeDebt(input) {
|
|
44
|
+
const switched = /\(usage-switched\)/.test(String(input.qeModelLabel ?? ''));
|
|
45
|
+
const coderFam = modelFamily(input.coderUsed);
|
|
46
|
+
const qeFam = modelFamily(input.qeReviewerUsed);
|
|
47
|
+
if (switched && coderFam === qeFam) {
|
|
48
|
+
return {
|
|
49
|
+
emit: true,
|
|
50
|
+
reason: 'usage-switched self-review: Step-8 QE ran on the coder’s own family (' + coderFam +
|
|
51
|
+
') under the limit override — the cross-model guard was suspended (FR-2.9)',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (switched)
|
|
55
|
+
return { emit: false, reason: 'usage-switched but QE stayed cross-family (' + qeFam + ' vs coder ' + coderFam + ')' };
|
|
56
|
+
if (coderFam === qeFam)
|
|
57
|
+
return { emit: false, reason: 'same-family without the usage override (belt degrade — logged loudly at run time; out of re-QE-debt scope)' };
|
|
58
|
+
return { emit: false, reason: 'cross-family QE ran' };
|
|
59
|
+
}
|
|
60
|
+
/** Build the debt record (the workflow serializes this; emittedAt is stamped by the writer agent's
|
|
61
|
+
* shell `date`, so the sandbox needs no Date). */
|
|
62
|
+
export function buildReqeDebt(input) {
|
|
63
|
+
return {
|
|
64
|
+
schema: REQE_SCHEMA,
|
|
65
|
+
slug: input.slug,
|
|
66
|
+
coderFamily: modelFamily(input.coderUsed),
|
|
67
|
+
qeFamily: modelFamily(input.qeReviewerUsed),
|
|
68
|
+
qeGrade: input.qeGrade == null || String(input.qeGrade).trim() === '' ? null : String(input.qeGrade).trim(),
|
|
69
|
+
reason: input.reason,
|
|
70
|
+
emittedAt: input.emittedAt ?? null,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/** Parse + validate a debt file's text. null = not a valid debt (the caller reports it as
|
|
74
|
+
* malformed — a corrupt debt file is NAMED, never silently dropped). */
|
|
75
|
+
export function parseReqeDebt(text) {
|
|
76
|
+
let raw;
|
|
77
|
+
try {
|
|
78
|
+
raw = JSON.parse(String(text ?? ''));
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const d = raw;
|
|
84
|
+
if (!d || typeof d !== 'object')
|
|
85
|
+
return null;
|
|
86
|
+
if (d.schema !== REQE_SCHEMA)
|
|
87
|
+
return null;
|
|
88
|
+
if (typeof d.slug !== 'string' || d.slug.trim() === '')
|
|
89
|
+
return null;
|
|
90
|
+
if (d.coderFamily !== 'claude' && d.coderFamily !== 'openai')
|
|
91
|
+
return null;
|
|
92
|
+
if (d.qeFamily !== 'claude' && d.qeFamily !== 'openai')
|
|
93
|
+
return null;
|
|
94
|
+
if (typeof d.reason !== 'string' || d.reason.trim() === '')
|
|
95
|
+
return null;
|
|
96
|
+
return {
|
|
97
|
+
schema: REQE_SCHEMA,
|
|
98
|
+
slug: d.slug,
|
|
99
|
+
coderFamily: d.coderFamily,
|
|
100
|
+
qeFamily: d.qeFamily,
|
|
101
|
+
qeGrade: typeof d.qeGrade === 'string' && d.qeGrade.trim() !== '' ? d.qeGrade.trim() : null,
|
|
102
|
+
reason: d.reason,
|
|
103
|
+
emittedAt: typeof d.emittedAt === 'string' && d.emittedAt.trim() !== '' ? d.emittedAt : null,
|
|
104
|
+
runStamp: typeof d.runStamp === 'string' && d.runStamp.trim() !== '' ? d.runStamp : null,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/** The ready-to-run cross-family review brief. Review family = the OTHER family than the CODER
|
|
108
|
+
* (reviewing with the other-than-reviewer family would let a codex-coded, codex-reviewed run be
|
|
109
|
+
* "re-reviewed" by codex again). */
|
|
110
|
+
export function buildReqeBrief(debt, artifactsDir) {
|
|
111
|
+
const reviewFamily = debt.coderFamily === 'openai' ? 'claude' : 'openai';
|
|
112
|
+
const files = [
|
|
113
|
+
artifactsDir + '/07_code_changes/change_manifest.md',
|
|
114
|
+
artifactsDir + '/08_qe_report.md',
|
|
115
|
+
artifactsDir + '/03_adr/',
|
|
116
|
+
];
|
|
117
|
+
const instructions = [
|
|
118
|
+
'Independent re-QE for "' + debt.slug + '": the recorded Step-8 review ran on the coder’s own family (' + debt.coderFamily + ') under the usage override' + (debt.qeGrade ? ' and graded ' + debt.qeGrade : '') + '.',
|
|
119
|
+
'Review with the ' + reviewFamily.toUpperCase() + ' family (the OTHER family than the coder — the suspended guard, restored).',
|
|
120
|
+
'Read: ' + files.join(' , ') + ' plus every file the change manifest lists.',
|
|
121
|
+
'Adversarially verify: correctness, edge cases, the ADR-named load-bearing property HAS a test, and whether the same-family review missed anything.',
|
|
122
|
+
'Output: GRADE A-F + numbered findings with file:line and severity; write the report to ' + artifactsDir + '/08b_reqe_report.md.',
|
|
123
|
+
'Then settle the debt: dz reqe --slug ' + debt.slug + ' --done --report ' + artifactsDir + '/08b_reqe_report.md',
|
|
124
|
+
];
|
|
125
|
+
const codexCmdTemplate = reviewFamily === 'openai'
|
|
126
|
+
? 'codex exec -m <probed-id> -c model_reasoning_effort="high" --sandbox read-only "<the brief above>" < /dev/null # probe the id first: ids are account-specific'
|
|
127
|
+
: null;
|
|
128
|
+
return {
|
|
129
|
+
reviewFamily,
|
|
130
|
+
header: 're-QE brief for ' + debt.slug + ' (' + (debt.emittedAt ?? 'emitted: unknown') + ')',
|
|
131
|
+
instructions,
|
|
132
|
+
codexCmdTemplate,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** Extract the verdict grade from a report, or null. LINE-ANCHORED and range-proof (Codex QE #7):
|
|
136
|
+
* the boilerplate phrase `GRADE A-F` must not read as grade A, so a letter followed by a dash and
|
|
137
|
+
* another grade letter is rejected; and the grade must head its line (a quoted "do not assign
|
|
138
|
+
* GRADE A" mid-paragraph is not a verdict). Conflicting distinct grades ⇒ null (ambiguous). */
|
|
139
|
+
export function extractReportGrade(text) {
|
|
140
|
+
// the lookahead rejects RANGES in punctuation form (A-F, A/F) AND word form (A through F,
|
|
141
|
+
// A to F) — Codex QE round-2 #6: 'GRADE A through F' must not read as grade A
|
|
142
|
+
const matches = [...String(text ?? '').matchAll(/^\s*(?:\*{0,2}#{0,4}\s*)?GRADE\s*[:=—–-]?\s*([A-F])\b(?!\s*(?:[-–—/]|through|to|thru)\s*[A-F]\b)/gim)];
|
|
143
|
+
const distinct = new Set(matches.map((m) => (m[1] ?? '').toUpperCase()).filter((g) => g !== ''));
|
|
144
|
+
if (distinct.size !== 1)
|
|
145
|
+
return null;
|
|
146
|
+
return [...distinct][0] ?? null;
|
|
147
|
+
}
|
|
148
|
+
/** FAIL-CLOSED settlement validation: the report must be non-trivial (>= 200 chars of substance)
|
|
149
|
+
* and must NAME exactly one line-anchored grade. A settlement that cannot cite its evidence is
|
|
150
|
+
* refused — clearing a debt against an empty file would re-open the exact hole this feature closes.
|
|
151
|
+
* HONEST LIMIT (documented, not hidden): the validator proves the settlement is PROCEDURALLY sound
|
|
152
|
+
* (a distinct, graded report exists); it cannot prove which model authored the text — attribution
|
|
153
|
+
* stays with the human running the brief. */
|
|
154
|
+
export function settleReqeDebt(debt, reportText, reportPath) {
|
|
155
|
+
const text = String(reportText ?? '');
|
|
156
|
+
if (text.trim().length < 200) {
|
|
157
|
+
return { ok: false, error: 'report too small to be a review (< 200 chars of substance) — refusing to settle', grade: null, epilogue: null };
|
|
158
|
+
}
|
|
159
|
+
const grade = extractReportGrade(text);
|
|
160
|
+
if (grade === null) {
|
|
161
|
+
return { ok: false, error: 'report names no unambiguous line-anchored GRADE (A-F) — text without exactly one verdict grade is not a verdict; refusing to settle', grade: null, epilogue: null };
|
|
162
|
+
}
|
|
163
|
+
const reviewFamily = debt.coderFamily === 'openai' ? 'claude' : 'openai';
|
|
164
|
+
const epilogue = [
|
|
165
|
+
'',
|
|
166
|
+
'---',
|
|
167
|
+
'',
|
|
168
|
+
'## re-QE settlement (cross-model debt cleared)',
|
|
169
|
+
'',
|
|
170
|
+
'The original Step-8 review ran on the coder’s own family (' + debt.coderFamily + ') under the',
|
|
171
|
+
'usage override (' + debt.reason + '). An independent ' + reviewFamily.toUpperCase() + '-family re-QE was performed:',
|
|
172
|
+
'',
|
|
173
|
+
'- report: `' + reportPath + '`',
|
|
174
|
+
'- re-QE grade: **' + grade + '**' + (debt.qeGrade ? ' (same-family grade on record: ' + debt.qeGrade + ')' : ''),
|
|
175
|
+
'- settled via `dz reqe --done` (fail-closed: an existing graded report is required).',
|
|
176
|
+
'',
|
|
177
|
+
].join('\n');
|
|
178
|
+
return { ok: true, error: null, grade, epilogue };
|
|
179
|
+
}
|
|
180
|
+
/** Render the debt list for `dz reqe` / the `dz usage` surfacing line. */
|
|
181
|
+
export function renderReqeList(debts, malformed) {
|
|
182
|
+
const lines = [];
|
|
183
|
+
if (debts.length === 0 && malformed === 0) {
|
|
184
|
+
lines.push('dz reqe: no re-QE debts — every recorded run kept cross-model QE (or none used the usage override).');
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
lines.push('dz reqe — ' + debts.length + ' unsettled re-QE debt(s):');
|
|
188
|
+
for (const d of debts) {
|
|
189
|
+
lines.push(' ' + d.slug + ' coder=' + d.coderFamily + ' qe=' + d.qeFamily + (d.qeGrade ? ' grade=' + d.qeGrade : '') + (d.emittedAt ? ' ' + d.emittedAt : '') + ' → dz reqe --slug ' + d.slug);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (malformed > 0)
|
|
193
|
+
lines.push(' ' + malformed + ' malformed debt file(s) skipped (named, never silent).');
|
|
194
|
+
lines.push(REQE_SCOPE);
|
|
195
|
+
return lines;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=reqe.js.map
|
package/dist/reqe.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reqe.js","sourceRoot":"","sources":["../src/reqe.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dzhechkov/harness-core",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.149",
|
|
4
4
|
"description": "Shared harness logic - skill loading, additive apply, and the init/sync/verify/doctor operations.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
"@dzhechkov/adapter-openclaude": "^0.1.0",
|
|
33
33
|
"@dzhechkov/adapter-opencode": "^0.2.0",
|
|
34
34
|
"yaml": "^2.0.0",
|
|
35
|
-
"@dzhechkov/adapter-agents-md": "0.1.1",
|
|
36
35
|
"@dzhechkov/adapter-copilot": "0.1.1",
|
|
37
|
-
"@dzhechkov/adapter-windsurf": "0.1.1",
|
|
38
|
-
"@dzhechkov/adapter-gemini": "0.1.1",
|
|
39
36
|
"@dzhechkov/adapter-cursor": "0.1.1",
|
|
37
|
+
"@dzhechkov/adapter-gemini": "0.1.1",
|
|
38
|
+
"@dzhechkov/adapter-windsurf": "0.1.1",
|
|
40
39
|
"@dzhechkov/core": "0.2.14",
|
|
41
|
-
"@dzhechkov/memory": "0.2.9"
|
|
40
|
+
"@dzhechkov/memory": "0.2.9",
|
|
41
|
+
"@dzhechkov/adapter-agents-md": "0.1.1"
|
|
42
42
|
},
|
|
43
43
|
"peerDependenciesMeta": {
|
|
44
44
|
"@ruvector/rvf": {
|
package/sbom.json
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"hashes": [
|
|
26
26
|
{
|
|
27
27
|
"alg": "SHA-256",
|
|
28
|
-
"content": "
|
|
28
|
+
"content": "6d047e89ebd5532a54d5200fa86660b3a8f1e96e128a5a4042d718d2cacae2ec"
|
|
29
29
|
}
|
|
30
30
|
]
|
|
31
31
|
},
|
|
@@ -1009,6 +1009,46 @@
|
|
|
1009
1009
|
}
|
|
1010
1010
|
]
|
|
1011
1011
|
},
|
|
1012
|
+
{
|
|
1013
|
+
"type": "file",
|
|
1014
|
+
"name": "dist/feature-adr-checkpoints.d.ts",
|
|
1015
|
+
"hashes": [
|
|
1016
|
+
{
|
|
1017
|
+
"alg": "SHA-256",
|
|
1018
|
+
"content": "e93790da411c0385feb2153a6cd424b2305773a9709582eafe7f2adc8ab45c36"
|
|
1019
|
+
}
|
|
1020
|
+
]
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
"type": "file",
|
|
1024
|
+
"name": "dist/feature-adr-checkpoints.d.ts.map",
|
|
1025
|
+
"hashes": [
|
|
1026
|
+
{
|
|
1027
|
+
"alg": "SHA-256",
|
|
1028
|
+
"content": "28f030188a9061ebab709bd2ce90d06ebff69f8baef39551df7dd25520b801a2"
|
|
1029
|
+
}
|
|
1030
|
+
]
|
|
1031
|
+
},
|
|
1032
|
+
{
|
|
1033
|
+
"type": "file",
|
|
1034
|
+
"name": "dist/feature-adr-checkpoints.js",
|
|
1035
|
+
"hashes": [
|
|
1036
|
+
{
|
|
1037
|
+
"alg": "SHA-256",
|
|
1038
|
+
"content": "88120bc4dc1a3fbab9b051434103936ea769978e66d7aada30589cf96602d46c"
|
|
1039
|
+
}
|
|
1040
|
+
]
|
|
1041
|
+
},
|
|
1042
|
+
{
|
|
1043
|
+
"type": "file",
|
|
1044
|
+
"name": "dist/feature-adr-checkpoints.js.map",
|
|
1045
|
+
"hashes": [
|
|
1046
|
+
{
|
|
1047
|
+
"alg": "SHA-256",
|
|
1048
|
+
"content": "361699e01e18cf80f46602673dc1ee8e13ec63bee1d37fe120e4275b052b265d"
|
|
1049
|
+
}
|
|
1050
|
+
]
|
|
1051
|
+
},
|
|
1012
1052
|
{
|
|
1013
1053
|
"type": "file",
|
|
1014
1054
|
"name": "dist/feature-adr-claim-gate.d.ts",
|
|
@@ -1255,7 +1295,7 @@
|
|
|
1255
1295
|
"hashes": [
|
|
1256
1296
|
{
|
|
1257
1297
|
"alg": "SHA-256",
|
|
1258
|
-
"content": "
|
|
1298
|
+
"content": "1651978c5ce1fc510541d6ae3cc09f9cd74dde1e31d460d01b16f637dd80c8d2"
|
|
1259
1299
|
}
|
|
1260
1300
|
]
|
|
1261
1301
|
},
|
|
@@ -1265,7 +1305,7 @@
|
|
|
1265
1305
|
"hashes": [
|
|
1266
1306
|
{
|
|
1267
1307
|
"alg": "SHA-256",
|
|
1268
|
-
"content": "
|
|
1308
|
+
"content": "a8098db1327beb284a22ac8b2410d030578e55a0648c8c8fbc7934dfa966ef85"
|
|
1269
1309
|
}
|
|
1270
1310
|
]
|
|
1271
1311
|
},
|
|
@@ -1275,7 +1315,7 @@
|
|
|
1275
1315
|
"hashes": [
|
|
1276
1316
|
{
|
|
1277
1317
|
"alg": "SHA-256",
|
|
1278
|
-
"content": "
|
|
1318
|
+
"content": "46032dd7deeb29b7a71d13d068620bd197a9a4d503e2c74089cbff0b9314859e"
|
|
1279
1319
|
}
|
|
1280
1320
|
]
|
|
1281
1321
|
},
|
|
@@ -1285,7 +1325,7 @@
|
|
|
1285
1325
|
"hashes": [
|
|
1286
1326
|
{
|
|
1287
1327
|
"alg": "SHA-256",
|
|
1288
|
-
"content": "
|
|
1328
|
+
"content": "ad9870713ae8589d93e031048a9af4cea0371a35b53194870a672d02e66ccaaa"
|
|
1289
1329
|
}
|
|
1290
1330
|
]
|
|
1291
1331
|
},
|
|
@@ -1969,6 +2009,46 @@
|
|
|
1969
2009
|
}
|
|
1970
2010
|
]
|
|
1971
2011
|
},
|
|
2012
|
+
{
|
|
2013
|
+
"type": "file",
|
|
2014
|
+
"name": "dist/reqe.d.ts",
|
|
2015
|
+
"hashes": [
|
|
2016
|
+
{
|
|
2017
|
+
"alg": "SHA-256",
|
|
2018
|
+
"content": "115fa0797ad0e98a452f9987c15b038e22b18486043c8890c65cc32c9dc51af9"
|
|
2019
|
+
}
|
|
2020
|
+
]
|
|
2021
|
+
},
|
|
2022
|
+
{
|
|
2023
|
+
"type": "file",
|
|
2024
|
+
"name": "dist/reqe.d.ts.map",
|
|
2025
|
+
"hashes": [
|
|
2026
|
+
{
|
|
2027
|
+
"alg": "SHA-256",
|
|
2028
|
+
"content": "75996953748647f0cbe548c73daa5cb7cd1f8906f2df474926c31b9e5fa223f9"
|
|
2029
|
+
}
|
|
2030
|
+
]
|
|
2031
|
+
},
|
|
2032
|
+
{
|
|
2033
|
+
"type": "file",
|
|
2034
|
+
"name": "dist/reqe.js",
|
|
2035
|
+
"hashes": [
|
|
2036
|
+
{
|
|
2037
|
+
"alg": "SHA-256",
|
|
2038
|
+
"content": "229014a8fa37faeb716d7f0deb22758a133ce50479b849b072eb6a285e78db40"
|
|
2039
|
+
}
|
|
2040
|
+
]
|
|
2041
|
+
},
|
|
2042
|
+
{
|
|
2043
|
+
"type": "file",
|
|
2044
|
+
"name": "dist/reqe.js.map",
|
|
2045
|
+
"hashes": [
|
|
2046
|
+
{
|
|
2047
|
+
"alg": "SHA-256",
|
|
2048
|
+
"content": "c28182b280cf2c016a2b1d2ef15a3a335ff25993220767ae9fc7c74af76ba022"
|
|
2049
|
+
}
|
|
2050
|
+
]
|
|
2051
|
+
},
|
|
1972
2052
|
{
|
|
1973
2053
|
"type": "file",
|
|
1974
2054
|
"name": "dist/risk-scoring.d.ts",
|
|
@@ -2735,7 +2815,7 @@
|
|
|
2735
2815
|
"hashes": [
|
|
2736
2816
|
{
|
|
2737
2817
|
"alg": "SHA-256",
|
|
2738
|
-
"content": "
|
|
2818
|
+
"content": "76997cf27ff9c8901df35b45fbdb1c91f201396f070dab0579289b8aa9ac851c"
|
|
2739
2819
|
}
|
|
2740
2820
|
]
|
|
2741
2821
|
},
|
|
@@ -2979,6 +3059,16 @@
|
|
|
2979
3059
|
}
|
|
2980
3060
|
]
|
|
2981
3061
|
},
|
|
3062
|
+
{
|
|
3063
|
+
"type": "file",
|
|
3064
|
+
"name": "src/feature-adr-checkpoints.ts",
|
|
3065
|
+
"hashes": [
|
|
3066
|
+
{
|
|
3067
|
+
"alg": "SHA-256",
|
|
3068
|
+
"content": "17278275695f9bbec9f48628853659c9d8b5dfcdc6bb2b03e0c88648f95a446d"
|
|
3069
|
+
}
|
|
3070
|
+
]
|
|
3071
|
+
},
|
|
2982
3072
|
{
|
|
2983
3073
|
"type": "file",
|
|
2984
3074
|
"name": "src/feature-adr-claim-gate.ts",
|
|
@@ -3045,7 +3135,7 @@
|
|
|
3045
3135
|
"hashes": [
|
|
3046
3136
|
{
|
|
3047
3137
|
"alg": "SHA-256",
|
|
3048
|
-
"content": "
|
|
3138
|
+
"content": "5eb07fb5e21e7be1e78a11243d6f86b9c84461eec22a954102549b5e237b7ab2"
|
|
3049
3139
|
}
|
|
3050
3140
|
]
|
|
3051
3141
|
},
|
|
@@ -3209,6 +3299,16 @@
|
|
|
3209
3299
|
}
|
|
3210
3300
|
]
|
|
3211
3301
|
},
|
|
3302
|
+
{
|
|
3303
|
+
"type": "file",
|
|
3304
|
+
"name": "src/reqe.ts",
|
|
3305
|
+
"hashes": [
|
|
3306
|
+
{
|
|
3307
|
+
"alg": "SHA-256",
|
|
3308
|
+
"content": "67988858ff527e5b465aa46b341aa710465e8cb0f72038be30f2419e0ff12cc3"
|
|
3309
|
+
}
|
|
3310
|
+
]
|
|
3311
|
+
},
|
|
3212
3312
|
{
|
|
3213
3313
|
"type": "file",
|
|
3214
3314
|
"name": "src/risk-scoring.ts",
|
|
@@ -3719,6 +3819,16 @@
|
|
|
3719
3819
|
}
|
|
3720
3820
|
]
|
|
3721
3821
|
},
|
|
3822
|
+
{
|
|
3823
|
+
"type": "file",
|
|
3824
|
+
"name": "test/feature-adr-checkpoints.test.ts",
|
|
3825
|
+
"hashes": [
|
|
3826
|
+
{
|
|
3827
|
+
"alg": "SHA-256",
|
|
3828
|
+
"content": "8564e1953e6da1f5a2b0990b1e5d8c78b24cc268a2c4eea15609d90b8fbda6f6"
|
|
3829
|
+
}
|
|
3830
|
+
]
|
|
3831
|
+
},
|
|
3722
3832
|
{
|
|
3723
3833
|
"type": "file",
|
|
3724
3834
|
"name": "test/feature-adr-claim-gate.test.ts",
|
|
@@ -4049,6 +4159,16 @@
|
|
|
4049
4159
|
}
|
|
4050
4160
|
]
|
|
4051
4161
|
},
|
|
4162
|
+
{
|
|
4163
|
+
"type": "file",
|
|
4164
|
+
"name": "test/reqe.test.ts",
|
|
4165
|
+
"hashes": [
|
|
4166
|
+
{
|
|
4167
|
+
"alg": "SHA-256",
|
|
4168
|
+
"content": "c5bb25b04caa8e9c14111ab838a135f7e2564b9fd1b7624520827bc95600661e"
|
|
4169
|
+
}
|
|
4170
|
+
]
|
|
4171
|
+
},
|
|
4052
4172
|
{
|
|
4053
4173
|
"type": "file",
|
|
4054
4174
|
"name": "test/routing-outcomes.test.ts",
|