按接续文件text31持续推进

结论:已将五轴TRT的boat-xyzac与xyzac_switchkins加入browser diagnostics evidence expansion,candidateCount提升到5且全部ready;inventory baseline继续保持82/82/77/0,promotionAllowed仍为false。
This commit is contained in:
2026-06-20 08:16:29 +08:00
parent c2e07518d3
commit fab42a8bdb
10 changed files with 292 additions and 9 deletions

View File

@@ -693,6 +693,41 @@ surfaces. They do not add virtual HAL runtime capability, do not alter
`promotion-candidates.tsv`, and do not change the inventory baseline or any
hard-block lock.
## 2026-06-20 Five-Axis TRT Evidence Expansion
After the remaining 77 SKIP audit confirmed there are no directly promotable
skipped main-program rows, the next evidence batch expanded browser diagnostics
coverage for already passing representative rows instead of changing the
inventory baseline.
The virtual HAL sim-config evidence expansion report now requires these
five-axis TRT rows:
```text
trt-boat-xyzac
linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc
trt-xyzac-switchkins
linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc
```
Both rows use the LinuxCNC-owned `xyzac-trt.ini` machine context and the
vendored `428remap.ngc`, `429remap.ngc`, and `430remap.ngc` remap
subroutines. They remain:
```text
currentNodeInventoryStatus=PASS
currentMatrixBrowserStatus=REP
targetBrowserEvidence=browser-diagnostics-expansion
promotionAllowed=false
inventoryBaselineUnchanged=true
```
The real browser simulation diagnostics artifact now validates that the
evidence expansion report has `candidateCount=5` and `readyCandidateCount=5`,
including the two TRT rows above. The inventory baseline remains
`executed=82 passed=82 skipped=77 unexpected_fail=0`.
## Boundary Statement
This analysis relies on the improved virtual HAL only for Web simulation

View File

@@ -471,6 +471,48 @@ export const VIRTUAL_HAL_SIM_CONFIG_EVIDENCE_EXPANSION_CANDIDATES = Object.freez
blockedKind: "-",
evidence: "MELFA example has current representative coverage and can receive explicit browser diagnostics evidence without unlocking any hard runtime family.",
}),
Object.freeze({
id: "trt-boat-xyzac",
label: "TRT boat XYZAC",
simConfigTarget: "five-axis-trt",
sourceFiles: Object.freeze([
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc",
]),
iniPath: "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
gcodePath: "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
currentNodeInventoryStatus: "PASS",
currentMatrixBrowserStatus: "REP",
dependencyClass: "hal_process,halui_mdi_process,ui_process",
targetBrowserEvidence: "browser-diagnostics-expansion",
promotionAllowed: false,
blockedKind: "-",
evidence: "The LinuxCNC table-rotary-tilting boat XYZAC demo is already covered as a five-axis representative; this row adds explicit browser diagnostics evidence without changing inventory counts.",
}),
Object.freeze({
id: "trt-xyzac-switchkins",
label: "TRT XYZAC switchkins",
simConfigTarget: "five-axis-trt",
sourceFiles: Object.freeze([
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc",
]),
iniPath: "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
gcodePath: "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc",
currentNodeInventoryStatus: "PASS",
currentMatrixBrowserStatus: "REP",
dependencyClass: "hal_process,halui_mdi_process,ui_process",
targetBrowserEvidence: "browser-diagnostics-expansion",
promotionAllowed: false,
blockedKind: "-",
evidence: "The LinuxCNC table-rotary-tilting XYZAC switchkins demo is already a browser representative row; this evidence expansion binds it into release diagnostics only.",
}),
]);
export const VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_FIXTURES = Object.freeze([

View File

@@ -462,6 +462,26 @@ const REQUIRED_EVIDENCE_EXPANSION_CANDIDATES = [
"linuxcnc/configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc",
],
},
{
id: "trt-boat-xyzac",
sourceFiles: [
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc",
],
},
{
id: "trt-xyzac-switchkins",
sourceFiles: [
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc",
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc",
],
},
];
const REQUIRED_MACRO_LOAD_FIXTURES = [
@@ -664,8 +684,8 @@ function isVirtualHalSimConfigEvidenceExpansionReportReady(report) {
expansionReport.webSimulationSatisfied === true &&
expansionReport.inventoryBaselineUnchanged === true &&
expansionReport.promotionAllowed === false &&
expansionReport.candidateCount === 3 &&
expansionReport.readyCandidateCount === 3 &&
expansionReport.candidateCount === REQUIRED_EVIDENCE_EXPANSION_CANDIDATES.length &&
expansionReport.readyCandidateCount === REQUIRED_EVIDENCE_EXPANSION_CANDIDATES.length &&
arrayOrEmpty(expansionReport.missingCandidates).length === 0 &&
arrayOrEmpty(expansionReport.promotionAllowedViolations).length === 0 &&
arrayOrEmpty(expansionReport.blockedCandidateIds).length === 0 &&

View File

@@ -9,6 +9,7 @@
<script type="module">
import {
VIRTUAL_HAL_SIM_CONFIG_SOURCE_TARGETS,
VIRTUAL_HAL_SIM_CONFIG_EVIDENCE_EXPANSION_CANDIDATES,
createVirtualHalCommandScriptFixtureReport,
createVirtualHalMillturnUserMProcessBoundaryReport,
createVirtualHalMotionControllerMatrixReport,
@@ -23,6 +24,8 @@
const VIRTUAL_HAL_MOTION_MATRIX_MANIFEST_ENTRIES =
VIRTUAL_HAL_SIM_CONFIG_SOURCE_TARGETS.flatMap((target) => target.sourceFiles ?? []);
const VIRTUAL_HAL_EVIDENCE_EXPANSION_MANIFEST_ENTRIES =
VIRTUAL_HAL_SIM_CONFIG_EVIDENCE_EXPANSION_CANDIDATES.flatMap((candidate) => candidate.sourceFiles ?? []);
function assertEqual(actual, expected, label) {
if (actual !== expected) {
@@ -395,7 +398,7 @@
const diagnosticsEvidenceExpansion = createVirtualHalSimConfigEvidenceExpansionReport({
manifestEntries: [
...VIRTUAL_HAL_MOTION_MATRIX_MANIFEST_ENTRIES,
"linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ini",
...VIRTUAL_HAL_EVIDENCE_EXPANSION_MANIFEST_ENTRIES,
],
motionControllerMatrix: diagnosticsMotionControllerMatrix,
});

View File

@@ -668,6 +668,26 @@
!diagnosticsArtifact.virtualHalSimConfigSourceCoverage?.sourceFiles?.includes("linuxcnc/configs/sim/qtdragon/qtdragon_xyz45/qtdragon_xyza.ini") ||
!diagnosticsArtifact.virtualHalSimConfigSourceCoverage?.sourceFiles?.includes("linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_z_compensation/qtdragon_hd_z_compensation.ini") ||
diagnosticsArtifact.virtualHalSimConfigPromotionCandidates?.complete !== true ||
diagnosticsArtifact.virtualHalSimConfigEvidenceExpansion?.complete !== true ||
diagnosticsArtifact.virtualHalSimConfigEvidenceExpansion?.candidateCount !== 5 ||
diagnosticsArtifact.virtualHalSimConfigEvidenceExpansion?.readyCandidateCount !== 5 ||
diagnosticsArtifact.virtualHalSimConfigEvidenceExpansion?.promotionAllowed !== false ||
!diagnosticsArtifact.virtualHalSimConfigEvidenceExpansion?.rows?.some((row) =>
row.id === "trt-boat-xyzac" &&
row.currentNodeInventoryStatus === "PASS" &&
row.currentMatrixBrowserStatus === "REP" &&
row.targetBrowserEvidence === "browser-diagnostics-expansion" &&
row.promotionAllowed === false &&
row.sourceFiles?.includes("linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc")
) ||
!diagnosticsArtifact.virtualHalSimConfigEvidenceExpansion?.rows?.some((row) =>
row.id === "trt-xyzac-switchkins" &&
row.currentNodeInventoryStatus === "PASS" &&
row.currentMatrixBrowserStatus === "REP" &&
row.targetBrowserEvidence === "browser-diagnostics-expansion" &&
row.promotionAllowed === false &&
row.sourceFiles?.includes("linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc")
) ||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.ready !== true ||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.preferredCandidateId !== "qtdragon-multi-joint-on-abort" ||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.candidateCount !== 8 ||

View File

@@ -71,10 +71,15 @@ for (const phrase of [
"axis/external_offsets/queuebuster.ngc",
"Web Simulation Improvements From Virtual HAL",
"2026-06-20 Remaining Skip Promotion Audit",
"2026-06-20 Five-Axis TRT Evidence Expansion",
"remaining_skipped_main_program_promotion_allowed=0",
"direct_inventory_promotion_rows=0",
"axis/vismach/millturn/example.ngc",
"incremental_repetition_g533.ngc",
"trt-boat-xyzac",
"trt-xyzac-switchkins",
"candidateCount=5",
"readyCandidateCount=5",
"Browser and Node simulation no longer need host `halcmd`, `halrun`, or a",
"servo-period stepping",
"8 diagnostics-ready candidates across 3 families and 17 source files",

View File

@@ -1084,7 +1084,7 @@ assert.equal(virtualHalRuntime.getSimConfigPromotionCandidateReport({
simConfigSourceCoverage: simConfigSourceCoverageReport,
motionControllerMatrix: manifestCheckedMotionControllerMatrixReport,
}).complete, true);
assert.equal(VIRTUAL_HAL_SIM_CONFIG_EVIDENCE_EXPANSION_CANDIDATES.length, 3);
assert.equal(VIRTUAL_HAL_SIM_CONFIG_EVIDENCE_EXPANSION_CANDIDATES.length, 5);
const simConfigEvidenceExpansionReport = createVirtualHalSimConfigEvidenceExpansionReport({
manifestText: sourceManifestText,
simConfigSourceCoverage: simConfigSourceCoverageReport,
@@ -1098,8 +1098,8 @@ assert.equal(simConfigEvidenceExpansionReport.complete, true);
assert.equal(simConfigEvidenceExpansionReport.webSimulationSatisfied, true);
assert.equal(simConfigEvidenceExpansionReport.inventoryBaselineUnchanged, true);
assert.equal(simConfigEvidenceExpansionReport.promotionAllowed, false);
assert.equal(simConfigEvidenceExpansionReport.candidateCount, 3);
assert.equal(simConfigEvidenceExpansionReport.readyCandidateCount, 3);
assert.equal(simConfigEvidenceExpansionReport.candidateCount, 5);
assert.equal(simConfigEvidenceExpansionReport.readyCandidateCount, 5);
assert.equal(simConfigEvidenceExpansionReport.promotionAllowedViolations.length, 0);
assert.equal(
simConfigEvidenceExpansionReport.rows.some((row) =>
@@ -1111,6 +1111,30 @@ assert.equal(
),
true,
);
assert.equal(
simConfigEvidenceExpansionReport.rows.some((row) =>
row.id === "trt-boat-xyzac" &&
row.currentMatrixBrowserStatus === "REP" &&
row.targetBrowserEvidence === "browser-diagnostics-expansion" &&
row.promotionAllowed === false &&
row.sourceFiles.includes(
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
)
),
true,
);
assert.equal(
simConfigEvidenceExpansionReport.rows.some((row) =>
row.id === "trt-xyzac-switchkins" &&
row.currentMatrixBrowserStatus === "REP" &&
row.targetBrowserEvidence === "browser-diagnostics-expansion" &&
row.promotionAllowed === false &&
row.sourceFiles.includes(
"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc",
)
),
true,
);
assert.equal(VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_FIXTURES.length >= 2, true);
assert.equal(VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_BLOCKED_FIXTURES.length >= 2, true);
assert.equal(VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_AUDIT_CANDIDATES.length >= 2, true);

View File

@@ -9,6 +9,7 @@ import {
createProjectReleaseReadinessReport,
} from "../../../runtime/sdk/src/project-release-readiness.js";
import {
VIRTUAL_HAL_SIM_CONFIG_EVIDENCE_EXPANSION_CANDIDATES,
VIRTUAL_HAL_SIM_CONFIG_SOURCE_TARGETS,
createVirtualHalCommandScriptFixtureReport,
createVirtualHalMillturnUserMProcessBoundaryReport,
@@ -164,6 +165,8 @@ import {
const VIRTUAL_HAL_MOTION_MATRIX_MANIFEST_ENTRIES =
VIRTUAL_HAL_SIM_CONFIG_SOURCE_TARGETS.flatMap((target) => target.sourceFiles ?? []);
const VIRTUAL_HAL_EVIDENCE_EXPANSION_MANIFEST_ENTRIES =
VIRTUAL_HAL_SIM_CONFIG_EVIDENCE_EXPANSION_CANDIDATES.flatMap((candidate) => candidate.sourceFiles ?? []);
const __dirname = dirname(fileURLToPath(import.meta.url));
const root = resolve(__dirname, "../../..");
@@ -1460,7 +1463,7 @@ const releaseReadinessPromotionCandidates = createVirtualHalSimConfigPromotionCa
const releaseReadinessEvidenceExpansion = createVirtualHalSimConfigEvidenceExpansionReport({
manifestEntries: [
...VIRTUAL_HAL_MOTION_MATRIX_MANIFEST_ENTRIES,
"linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ini",
...VIRTUAL_HAL_EVIDENCE_EXPANSION_MANIFEST_ENTRIES,
],
motionControllerMatrix: releaseReadinessMotionControllerMatrix,
});