fix(gate): F6 approves each CTE by name, not 'phase:6'
reviewer_confirm kind:'cte_result' registered cte_approved --subject phase:6, which decision_cmd rejects (exit 5) and next_cte never recognizes — dead-ending F6. Derive the CTE name from 'tht cte next' (plan-order single source of truth) and approve by name. sql path (sql_approved:phase:N) unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -620,8 +620,31 @@ export default function (pi) {
|
|||||||
`CTE plan approvato (${names.length} CTE, sessione ${session}).`,
|
`CTE plan approvato (${names.length} CTE, sessione ${session}).`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (kind === "cte_result" || kind === "sql") {
|
if (kind === "cte_result") {
|
||||||
const dt = kind === "sql" ? "sql_approved" : "cte_approved";
|
// The CTE under review is always next_cte (plan order is enforced by
|
||||||
|
// `tht cte test`). Approve it BY NAME: `cte_approved` keys on the CTE
|
||||||
|
// name (phase.approved_ctes / next_cte); a `phase:N` subject is rejected
|
||||||
|
// by `decision add` (exit 5) and never satisfies F6's advance prereq.
|
||||||
|
const cteName = tht(ctx, [
|
||||||
|
"cte",
|
||||||
|
"next",
|
||||||
|
"--session",
|
||||||
|
session,
|
||||||
|
]).trim();
|
||||||
|
if (!cteName) {
|
||||||
|
return textResult(
|
||||||
|
`Nessun CTE in attesa di approvazione (sessione ${session}).`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
const err = relayIfThtFails(
|
||||||
|
ctx,
|
||||||
|
["decision", "add", "--session", session, "--type", "cte_approved", "--subject", cteName],
|
||||||
|
"",
|
||||||
|
);
|
||||||
|
if (err) return err;
|
||||||
|
return textResult(`CTE '${cteName}' approvato (sessione ${session}).`);
|
||||||
|
}
|
||||||
|
if (kind === "sql") {
|
||||||
const err = relayIfThtFails(
|
const err = relayIfThtFails(
|
||||||
ctx,
|
ctx,
|
||||||
[
|
[
|
||||||
@@ -630,14 +653,14 @@ export default function (pi) {
|
|||||||
"--session",
|
"--session",
|
||||||
session,
|
session,
|
||||||
"--type",
|
"--type",
|
||||||
dt,
|
"sql_approved",
|
||||||
"--subject",
|
"--subject",
|
||||||
`phase:${currentPhase(ctx, session)}`,
|
`phase:${currentPhase(ctx, session)}`,
|
||||||
],
|
],
|
||||||
"",
|
"",
|
||||||
);
|
);
|
||||||
if (err) return err;
|
if (err) return err;
|
||||||
return textResult(`${kind} approvato (sessione ${session}).`);
|
return textResult(`SQL approvato (sessione ${session}).`);
|
||||||
}
|
}
|
||||||
return textResult(`Approvato (kind=${kind}, sessione ${session}).`);
|
return textResult(`Approvato (kind=${kind}, sessione ${session}).`);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user