强化hard block锁定可见性

结论:release readiness 现显式展示 hard-block runtime lock 和 promoted blocked family count;baseline 保持 28/28/131/0,Python remap、tool DB、external user-M 仍 locked。
This commit is contained in:
2026-06-18 17:44:45 +08:00
parent 04db87dddd
commit eb2fc22129
5 changed files with 165 additions and 4 deletions

View File

@@ -132,6 +132,15 @@ function createPromotionFamilySummaryRows(candidateReport = {}) {
});
}
function createHardBlockRuntimeLockSummary(blockedFamilies = [], promotedBlockedFamilies = []) {
const blockedCount = arrayOrEmpty(blockedFamilies).length;
const promotedCount = arrayOrEmpty(promotedBlockedFamilies).length;
return {
lockValue: promotedCount === 0 ? `locked (${blockedCount} families)` : `violated (${promotedCount} promoted)`,
promotedCountValue: `${promotedCount} promoted`,
};
}
const BLOCKED_RUNTIME_FAMILIES = [
"L4-USER-M-PROCESS",
"L4-TOOL-DB",
@@ -1854,6 +1863,7 @@ export function createProjectReleaseReadinessReport({
virtualHalMotionControllerMatrix,
);
const blockedRuntimeReady = promotedBlockedFamilies.length === 0;
const hardBlockRuntimeLockSummary = createHardBlockRuntimeLockSummary(blockedFamilies, promotedBlockedFamilies);
const axisScreenshotArtifactSummary = createAxisScreenshotArtifactSummary(axisScreenshotArtifacts);
const axisScreenshotArtifactsReady = axisScreenshotArtifactSummary.ready;
const ready = releaseGatePassed &&
@@ -1954,6 +1964,16 @@ export function createProjectReleaseReadinessReport({
label: "Blocked runtime families",
value: blockedRuntimeReady ? blockedFamilies.join(", ") : `promoted: ${promotedBlockedFamilies.join(", ")}`,
},
{
id: "hard-block-runtime-lock",
label: "Hard-block runtime lock",
value: hardBlockRuntimeLockSummary.lockValue,
},
{
id: "promoted-blocked-family-count",
label: "Promoted blocked families",
value: hardBlockRuntimeLockSummary.promotedCountValue,
},
{
id: "axis-screenshot-artifacts",
label: "AXIS screenshot artifacts",
@@ -1978,6 +1998,10 @@ export function createProjectReleaseReadinessSummaryViewModel(
const axisScreenshotArtifactSummary = objectOrEmpty(report?.axisScreenshotArtifactSummary);
const blockedRuntimeFamilies = arrayOrEmpty(report?.blockedRuntimeFamilies);
const promotedBlockedFamilies = arrayOrEmpty(report?.promotedBlockedFamilies);
const hardBlockRuntimeLockSummary = createHardBlockRuntimeLockSummary(
blockedRuntimeFamilies,
promotedBlockedFamilies,
);
const ready = report?.ready === true;
const statusText = ready ? "Ready" : "Waiting";
const detailText = ready ? "No blocking reasons" : (missing.length > 0 ? missing.join(", ") : "release evidence missing");
@@ -2033,6 +2057,16 @@ export function createProjectReleaseReadinessSummaryViewModel(
? `promoted: ${promotedBlockedFamilies.join(", ")}`
: (blockedRuntimeFamilies.join(", ") || "none"),
},
{
id: "hard-block-runtime-lock",
label: "Hard-block runtime lock",
value: hardBlockRuntimeLockSummary.lockValue,
},
{
id: "promoted-blocked-family-count",
label: "Promoted blocked families",
value: hardBlockRuntimeLockSummary.promotedCountValue,
},
{
id: "axis-screenshot-artifacts",
label: "AXIS screenshot artifacts",
@@ -2819,6 +2853,12 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
virtualHalMotionControllerMatrix,
) && artifactObject.virtualHalMotionControllerMatrixReady === true;
const axisScreenshotArtifacts = arrayOrEmpty(axisScreenshotArtifactSummary.artifacts);
const blockedRuntimeFamilies = arrayOrEmpty(artifactObject.blockedRuntimeFamilies);
const promotedBlockedFamilies = arrayOrEmpty(artifactObject.promotedBlockedFamilies);
const hardBlockRuntimeLockSummary = createHardBlockRuntimeLockSummary(
blockedRuntimeFamilies,
promotedBlockedFamilies,
);
const axisScreenshotSummaryReady = !axisScreenshotArtifactSummary.apiName
|| axisScreenshotArtifacts.length === 0
|| (
@@ -2900,7 +2940,7 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
virtualHalMotionControllerMatrixReady,
axisScreenshotArtifactSummaryReady: axisScreenshotSummaryReady,
axisScreenshotArtifactCount: axisScreenshotArtifacts.length,
blockedRuntimeFamilies: arrayOrEmpty(artifactObject.blockedRuntimeFamilies),
blockedRuntimeFamilies,
rows: [
{
id: "artifact",
@@ -2968,6 +3008,23 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
label: "Virtual HAL motion controller matrix",
value: virtualHalMotionControllerMatrixReady ? "ready" : "missing",
},
{
id: "blocked-runtime-families",
label: "Blocked runtime families",
value: promotedBlockedFamilies.length > 0
? `promoted: ${promotedBlockedFamilies.join(", ")}`
: (blockedRuntimeFamilies.join(", ") || "none"),
},
{
id: "hard-block-runtime-lock",
label: "Hard-block runtime lock",
value: hardBlockRuntimeLockSummary.lockValue,
},
{
id: "promoted-blocked-family-count",
label: "Promoted blocked families",
value: hardBlockRuntimeLockSummary.promotedCountValue,
},
{
id: "axis-screenshot-artifacts",
label: "AXIS screenshot artifacts",