Complete guided release console workflow
This commit is contained in:
@@ -943,10 +943,10 @@
|
||||
<section id="installVerificationSection">
|
||||
<div class="section-head">
|
||||
<h2>5. Installation Verification</h2>
|
||||
<small>external gate</small>
|
||||
<small>receipt-bound local gate</small>
|
||||
</div>
|
||||
<div class="details">
|
||||
<p class="hint">The signed catalog and Python artifacts are produced by the durable candidate step. End-to-end installation verification still runs in release integration CI and is not yet a bounded local-console executor.</p>
|
||||
<p class="hint">The durable verification step installs every selected candidate wheel into a private temporary target with network and dependency resolution disabled, then compares installed package metadata with the frozen release plan. Deployment-specific integration checks remain part of CI.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
@@ -1783,7 +1783,7 @@
|
||||
target: "releaseRunSection",
|
||||
run,
|
||||
plan,
|
||||
match: (step) => /:(preflight|tag|push)$/.test(step.id || ""),
|
||||
match: (step) => /:(preflight|version|commit|bundle|tag|push)$/.test(step.id || "") || step.id === "release:alignment",
|
||||
waitingStatus: "create run",
|
||||
}),
|
||||
runWorkflowPhase({
|
||||
@@ -1804,13 +1804,15 @@
|
||||
match: (step) => step.id === "catalog:validate-sign-publish",
|
||||
waitingStatus: "waiting",
|
||||
}),
|
||||
{
|
||||
runWorkflowPhase({
|
||||
id: "verify",
|
||||
label: "Verify",
|
||||
target: "installVerificationSection",
|
||||
state: run?.state?.status === "completed" ? "unavailable" : "locked",
|
||||
status: run?.state?.status === "completed" ? "CI gate" : "waiting",
|
||||
},
|
||||
run,
|
||||
plan,
|
||||
match: (step) => step.id === "release:install-verify",
|
||||
waitingStatus: "waiting",
|
||||
}),
|
||||
];
|
||||
const firstOpen = phases.findIndex((phase) => ["current", "blocked", "unavailable"].includes(phase.state));
|
||||
if (firstOpen >= 0) {
|
||||
@@ -1924,10 +1926,10 @@
|
||||
};
|
||||
} else if (run.state?.status === "completed") {
|
||||
guidance = {
|
||||
title: "Run installation verification",
|
||||
detail: "Every durable source, package, signing, and publication step has a recorded success receipt.",
|
||||
remediation: "End-to-end installation verification is still an external release-integration CI gate.",
|
||||
button: "Review verification gate",
|
||||
title: "Release run completed",
|
||||
detail: "Every durable source, package, signing, publication, and local installation-verification step has a recorded success.",
|
||||
remediation: "Review the run receipts and continue with deployment-specific integration checks where required.",
|
||||
button: "Review completed run",
|
||||
action: { type: "scroll", target: "installVerificationSection" },
|
||||
};
|
||||
} else {
|
||||
@@ -2389,9 +2391,12 @@
|
||||
const blockers = unit.blockers.length ? `<p>${escapeHtml(unit.blockers.join("; "))}</p>` : "";
|
||||
const warnings = unit.warnings.length ? `<p>${escapeHtml(unit.warnings.join("; "))}</p>` : "";
|
||||
const kind = unit.status === "blocked" ? "block" : unit.status === "attention" ? "warn" : "ok";
|
||||
const capabilities = Array.isArray(unit.capabilities) && unit.capabilities.length
|
||||
? `<p class="action-meta">Capabilities: ${escapeHtml(unit.capabilities.join(", "))}</p>`
|
||||
: "";
|
||||
return `<div class="action">
|
||||
<h3>${pill(unit.status, kind)} ${escapeHtml(unit.repo)} ${escapeHtml(unit.current_version || "-")} -> ${escapeHtml(unit.target_version)}</h3>
|
||||
${blockers}${warnings}
|
||||
${capabilities}${blockers}${warnings}
|
||||
</div>`;
|
||||
}).join("");
|
||||
const compatibilityHtml = compatibility.map((issue) => {
|
||||
|
||||
Reference in New Issue
Block a user