暴露 workflow overview 发布 artifact 校验 API
This commit is contained in:
@@ -9,7 +9,7 @@ turn-by-turn continuation notes and next-batch execution records.
|
|||||||
## Current Status
|
## Current Status
|
||||||
|
|
||||||
- Active continuation file: `text14.txt`
|
- Active continuation file: `text14.txt`
|
||||||
- Latest completed batch: project release readiness artifact validation workflow
|
- Latest completed batch: workflow overview release readiness artifact browser API
|
||||||
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
|
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
|
||||||
- Working tree at tracker creation: clean
|
- Working tree at tracker creation: clean
|
||||||
- Required policy: LinuxCNC remains the only CNC semantic source
|
- Required policy: LinuxCNC remains the only CNC semantic source
|
||||||
@@ -44,7 +44,7 @@ The project is complete for the current scope when all of the following are true
|
|||||||
| Native sim configs baseline | Stable | Last recorded Layer 2: `total 159`, `pass 151`, `expected_fail 8`, `unexpected_fail 0`. |
|
| Native sim configs baseline | Stable | Last recorded Layer 2: `total 159`, `pass 151`, `expected_fail 8`, `unexpected_fail 0`. |
|
||||||
| OPFS/session persistence | Stable for current scope | Browser smoke passes, SDK re-exports OPFS/session helpers including `readMachineSessionReadiness()` and `createMachineSessionPersistenceSummary()`, the UI exposes `getMachineSessionPersistenceSummary()`, and `docs/opfs-session-persistence.md` defines the project-level release gate. |
|
| OPFS/session persistence | Stable for current scope | Browser smoke passes, SDK re-exports OPFS/session helpers including `readMachineSessionReadiness()` and `createMachineSessionPersistenceSummary()`, the UI exposes `getMachineSessionPersistenceSummary()`, and `docs/opfs-session-persistence.md` defines the project-level release gate. |
|
||||||
| SDK/API surface | Stable for current scope | SDK re-exports core, OPFS/session readiness/load helpers, sim-config staging, project release readiness report/artifact validation, INI panel entry/launcher/control-page/shell/workflow overview helpers, the session readiness workflow report, and the shell API surface inventory with a Node surface smoke. |
|
| SDK/API surface | Stable for current scope | SDK re-exports core, OPFS/session readiness/load helpers, sim-config staging, project release readiness report/artifact validation, INI panel entry/launcher/control-page/shell/workflow overview helpers, the session readiness workflow report, and the shell API surface inventory with a Node surface smoke. |
|
||||||
| Browser/UI workflow | Stable for current scope | Workflow overview embedding mount DOM closure is complete, and INI panel session workflows plus read-only control/shell handoff expose, render, and report OPFS/session readiness, OPFS/session persistence summary, and API surface inventory before loading or reading WASM session state. |
|
| Browser/UI workflow | Stable for current scope | Workflow overview embedding mount DOM closure is complete, and INI panel session workflows plus read-only control/shell handoff expose, render, and report OPFS/session readiness, OPFS/session persistence summary, release readiness artifact validation, and API surface inventory before loading or reading WASM session state. |
|
||||||
| Workflow overview embedding | Stable for current scope | Report/display/render, DOM contract/readiness/renderer, mount result/display/render, mount DOM contract/readiness/renderer/wrapper exist. |
|
| Workflow overview embedding | Stable for current scope | Report/display/render, DOM contract/readiness/renderer, mount result/display/render, mount DOM contract/readiness/renderer/wrapper exist. |
|
||||||
| Host/runtime boundary proof | Stable blocked state | Host smoke passes; runtime families remain blocked and `docs/host-runtime-boundary-handoff.md` records host readiness, promotion blockers, dispatch, and evidence gates. |
|
| Host/runtime boundary proof | Stable blocked state | Host smoke passes; runtime families remain blocked and `docs/host-runtime-boundary-handoff.md` records host readiness, promotion blockers, dispatch, and evidence gates. |
|
||||||
| Documentation/release gate | Stable for current scope | `docs/project-release-handoff.md` links README, panel entry, SDK, OPFS/session, sim-config, host/runtime, source reuse, drift, tracker acceptance paths, and the machine-readable release readiness report/artifact. |
|
| Documentation/release gate | Stable for current scope | `docs/project-release-handoff.md` links README, panel entry, SDK, OPFS/session, sim-config, host/runtime, source reuse, drift, tracker acceptance paths, and the machine-readable release readiness report/artifact. |
|
||||||
|
|||||||
78
text14.txt
78
text14.txt
@@ -3000,3 +3000,81 @@ project_release_gate=ok
|
|||||||
|
|
||||||
继续只做实质能力推进。优先选择真实 browser/UI workflow 或外部 shell 可消费能力;
|
继续只做实质能力推进。优先选择真实 browser/UI workflow 或外部 shell 可消费能力;
|
||||||
如果继续 release 路径,必须继续产出可调用 API、可验证 workflow、可执行 gate 或可消费 artifact。
|
如果继续 release 路径,必须继续产出可调用 API、可验证 workflow、可执行 gate 或可消费 artifact。
|
||||||
|
|
||||||
|
三十八、2026-06-16 继续执行记录:workflow overview release readiness artifact browser API
|
||||||
|
|
||||||
|
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
|
||||||
|
把 project release readiness artifact validation 从 SDK/host workflow 推进到真实 browser workflow overview
|
||||||
|
iframe API。外部 shell 现在可以向 workflow overview iframe 传入 readiness artifact JSON,并获得稳定的
|
||||||
|
只读 validation report。
|
||||||
|
|
||||||
|
完成内容:
|
||||||
|
|
||||||
|
- `ui-shell.js` 新增:
|
||||||
|
- `validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson()`;
|
||||||
|
- `createIniPanelShellWorkflowOverviewContract().methodNames` 新增:
|
||||||
|
- `validateWorkflowOverviewReleaseReadinessArtifactJson`;
|
||||||
|
- `workflow-overview.html` 的 `linuxCncIniPanelWorkflowOverviewApi` 暴露:
|
||||||
|
- `validateWorkflowOverviewReleaseReadinessArtifactJson()`;
|
||||||
|
- 该 API:
|
||||||
|
- 解析 project release readiness artifact JSON;
|
||||||
|
- 复用 SDK `createProjectReleaseReadinessArtifactValidation()`;
|
||||||
|
- 返回 `ini-panel-shell-workflow-overview-release-readiness-artifact-validation`;
|
||||||
|
- 返回 `phase/ready/missing/error/artifactApiName/artifactVersion/gateCount/rows/validation`;
|
||||||
|
- 对 malformed JSON 返回结构化 blocked result;
|
||||||
|
- `runtime/sdk/src/index.js` re-export workflow overview artifact validation wrapper;
|
||||||
|
- `verify_ini_panel_ui_shell.mjs` 覆盖 ready artifact 和 malformed JSON;
|
||||||
|
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 contract/readiness 新 method;
|
||||||
|
- `ini_panel_workflow_overview_smoke.html` 在真实 iframe 中调用新 API;
|
||||||
|
- `ini_panel_shell_integration_workflow_smoke.html` 从外部 shell iframe 调用新 API;
|
||||||
|
- `docs/panel-entry.md`、`docs/project-release-handoff.md`、`runtime/sdk/README.md` 记录外部调用方式;
|
||||||
|
- `verify_ini_panel_entry_docs.mjs`、`verify_project_release_handoff_docs.mjs`、`verify_sdk_surface.mjs`
|
||||||
|
覆盖新 API;
|
||||||
|
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 Browser/UI workflow 状态;
|
||||||
|
- 未新增控制按钮;
|
||||||
|
- 未执行 release gate/action-plan;
|
||||||
|
- 未解析 G-code;
|
||||||
|
- 未解释 canonical events;
|
||||||
|
- 未新增 JS CNC 语义;
|
||||||
|
- 未运行 opt-in runtime probes;
|
||||||
|
- 未 promotion blocked runtime family;
|
||||||
|
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
|
||||||
|
runtime semantics。
|
||||||
|
|
||||||
|
验证已通过:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff --check
|
||||||
|
wasm-port/tests/sdk/node/verify_sdk_surface.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||||||
|
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||||||
|
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
|
||||||
|
wasm-port/tools/verify_vendor_sync.sh
|
||||||
|
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||||||
|
wasm-port/tests/host/verify_project_release_gate.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
关键输出:
|
||||||
|
|
||||||
|
```text
|
||||||
|
sdk_surface_node_smoke=ok
|
||||||
|
ini_panel_ui_shell_node_smoke=ok
|
||||||
|
ini_panel_shell_integration_manifest_node_smoke=ok
|
||||||
|
ini_panel_entry_docs_node_smoke=ok
|
||||||
|
ui_node_smokes=ok
|
||||||
|
browser_ini_workflow_overview_smoke=ok
|
||||||
|
browser_ini_shell_integration_workflow_smoke=ok
|
||||||
|
project_release_handoff_docs_node_smoke=ok
|
||||||
|
vendor sync up to date
|
||||||
|
standalone CNC semantics guard complete
|
||||||
|
project_release_readiness_artifact_node_smoke=ok
|
||||||
|
project_release_gate=ok
|
||||||
|
```
|
||||||
|
|
||||||
|
下一步工作计划:
|
||||||
|
|
||||||
|
继续只做实质能力推进。优先选择真实 browser/UI workflow 或外部 shell 可消费能力;
|
||||||
|
如果继续 release 路径,必须继续产出可调用 API、可验证 workflow、可执行 gate 或可消费 artifact。
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ import {
|
|||||||
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
||||||
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
renderIniPanelShellSessionHandoffMountState,
|
renderIniPanelShellSessionHandoffMountState,
|
||||||
@@ -149,6 +150,12 @@ status, and handoff readiness rows. The launch page exposes the same helper as
|
|||||||
`linuxCncIniPanelLaunchApi.getMachineSessionPersistenceSummary()`, and the
|
`linuxCncIniPanelLaunchApi.getMachineSessionPersistenceSummary()`, and the
|
||||||
workflow overview page exposes it as
|
workflow overview page exposes it as
|
||||||
`linuxCncIniPanelWorkflowOverviewApi.getWorkflowOverviewPersistenceSummary()`.
|
`linuxCncIniPanelWorkflowOverviewApi.getWorkflowOverviewPersistenceSummary()`.
|
||||||
|
Use `validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson()` or
|
||||||
|
`linuxCncIniPanelWorkflowOverviewApi.validateWorkflowOverviewReleaseReadinessArtifactJson()`
|
||||||
|
when an outer shell needs to validate a project release readiness artifact JSON
|
||||||
|
through the same read-only workflow overview surface. It parses the artifact,
|
||||||
|
returns stable validation rows, and does not execute release gates or CNC
|
||||||
|
behavior.
|
||||||
Use `createMachineSessionPersistenceDisplayViewModel()` and
|
Use `createMachineSessionPersistenceDisplayViewModel()` and
|
||||||
`createMachineSessionPersistenceRenderState()` when that summary needs stable
|
`createMachineSessionPersistenceRenderState()` when that summary needs stable
|
||||||
display text, rows, status line, and dataset fields for caller-owned DOM.
|
display text, rows, status line, and dataset fields for caller-owned DOM.
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ continuation records are in `../text14.txt`.
|
|||||||
validates it with `verify_project_release_readiness_artifact.sh`. External
|
validates it with `verify_project_release_readiness_artifact.sh`. External
|
||||||
tools can load that artifact with `parseProjectReleaseReadinessArtifactJson()`
|
tools can load that artifact with `parseProjectReleaseReadinessArtifactJson()`
|
||||||
and validate it with `createProjectReleaseReadinessArtifactValidation()`.
|
and validate it with `createProjectReleaseReadinessArtifactValidation()`.
|
||||||
|
Browser shells can also pass the JSON to
|
||||||
|
`linuxCncIniPanelWorkflowOverviewApi.validateWorkflowOverviewReleaseReadinessArtifactJson()`
|
||||||
|
through the workflow overview iframe and receive stable validation rows.
|
||||||
- OPFS/session callers can use `createMachineSessionPersistenceSummary()` or
|
- OPFS/session callers can use `createMachineSessionPersistenceSummary()` or
|
||||||
`linuxCncIniPanelApi.getMachineSessionPersistenceSummary()` to inspect
|
`linuxCncIniPanelApi.getMachineSessionPersistenceSummary()` to inspect
|
||||||
machine files, session snapshot, session readiness, session load, readonly
|
machine files, session snapshot, session readiness, session load, readonly
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ import {
|
|||||||
saveTextFile,
|
saveTextFile,
|
||||||
sessionSnapshotPath,
|
sessionSnapshotPath,
|
||||||
toolTablePath,
|
toolTablePath,
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
|
||||||
validateSessionSnapshot,
|
validateSessionSnapshot,
|
||||||
} from "./src/index.js";
|
} from "./src/index.js";
|
||||||
```
|
```
|
||||||
@@ -263,6 +264,9 @@ for external browser shells:
|
|||||||
read-only `persistence-summary` row.
|
read-only `persistence-summary` row.
|
||||||
- `createIniPanelShellWorkflowOverviewContract()` for discovering the workflow
|
- `createIniPanelShellWorkflowOverviewContract()` for discovering the workflow
|
||||||
overview iframe API contract.
|
overview iframe API contract.
|
||||||
|
- `validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson()` for the
|
||||||
|
read-only workflow overview artifact validation wrapper exposed by
|
||||||
|
`workflow-overview.html`.
|
||||||
- `createIniPanelShellApiSurfaceInventory()` for a machine-readable inventory
|
- `createIniPanelShellApiSurfaceInventory()` for a machine-readable inventory
|
||||||
of launch, control-page, workflow overview, persistence, and session
|
of launch, control-page, workflow overview, persistence, and session
|
||||||
readiness report API counts, including persistence summary row counts.
|
readiness report API counts, including persistence summary row counts.
|
||||||
|
|||||||
@@ -113,4 +113,5 @@ export {
|
|||||||
renderIniPanelShellSessionHandoffMountState,
|
renderIniPanelShellSessionHandoffMountState,
|
||||||
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
renderIniPanelShellWorkflowOverviewEmbeddingState,
|
renderIniPanelShellWorkflowOverviewEmbeddingState,
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
|
||||||
} from "../../ui/ini-panel/ui-shell.js";
|
} from "../../ui/ini-panel/ui-shell.js";
|
||||||
|
|||||||
@@ -31,6 +31,10 @@ import {
|
|||||||
import {
|
import {
|
||||||
createMachineSessionPersistenceSummary,
|
createMachineSessionPersistenceSummary,
|
||||||
} from "./panel-state-summary.js";
|
} from "./panel-state-summary.js";
|
||||||
|
import {
|
||||||
|
createProjectReleaseReadinessArtifactValidation,
|
||||||
|
parseProjectReleaseReadinessArtifactJson,
|
||||||
|
} from "../../sdk/src/project-release-readiness.js";
|
||||||
export {
|
export {
|
||||||
controlPageStatusText,
|
controlPageStatusText,
|
||||||
createControlPageRefreshState,
|
createControlPageRefreshState,
|
||||||
@@ -72,6 +76,10 @@ export {
|
|||||||
createMachineSessionWorkflowOverview,
|
createMachineSessionWorkflowOverview,
|
||||||
createMachineSessionWorkflowStatus,
|
createMachineSessionWorkflowStatus,
|
||||||
} from "./panel-state-summary.js";
|
} from "./panel-state-summary.js";
|
||||||
|
export {
|
||||||
|
createProjectReleaseReadinessArtifactValidation,
|
||||||
|
parseProjectReleaseReadinessArtifactJson,
|
||||||
|
} from "../../sdk/src/project-release-readiness.js";
|
||||||
|
|
||||||
export function getVisibleIniPanelEntries() {
|
export function getVisibleIniPanelEntries() {
|
||||||
return getIniPanelEntryManifest();
|
return getIniPanelEntryManifest();
|
||||||
@@ -1865,6 +1873,7 @@ export function createIniPanelShellWorkflowOverviewContract() {
|
|||||||
"getWorkflowOverviewSessionReadinessReport",
|
"getWorkflowOverviewSessionReadinessReport",
|
||||||
"getWorkflowOverviewApiSurfaceInventory",
|
"getWorkflowOverviewApiSurfaceInventory",
|
||||||
"getWorkflowOverviewPersistenceSummary",
|
"getWorkflowOverviewPersistenceSummary",
|
||||||
|
"validateWorkflowOverviewReleaseReadinessArtifactJson",
|
||||||
"getWorkflowOverviewDomContract",
|
"getWorkflowOverviewDomContract",
|
||||||
"getWorkflowOverviewDomReadiness",
|
"getWorkflowOverviewDomReadiness",
|
||||||
"renderWorkflowOverview",
|
"renderWorkflowOverview",
|
||||||
@@ -1874,6 +1883,46 @@ export function createIniPanelShellWorkflowOverviewContract() {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson(artifactJson) {
|
||||||
|
try {
|
||||||
|
const artifact = parseProjectReleaseReadinessArtifactJson(artifactJson);
|
||||||
|
const validation = createProjectReleaseReadinessArtifactValidation(artifact);
|
||||||
|
return {
|
||||||
|
apiName: "ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
|
||||||
|
validationVersion: 1,
|
||||||
|
phase: validation.ready ? "ready" : "blocked",
|
||||||
|
ready: validation.ready,
|
||||||
|
missing: [...validation.missing],
|
||||||
|
error: null,
|
||||||
|
artifactApiName: validation.artifactApiName,
|
||||||
|
artifactVersion: validation.artifactVersion,
|
||||||
|
gateCount: validation.gateCount,
|
||||||
|
validation,
|
||||||
|
rows: [...validation.rows],
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
apiName: "ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
|
||||||
|
validationVersion: 1,
|
||||||
|
phase: "blocked",
|
||||||
|
ready: false,
|
||||||
|
missing: ["artifact-json"],
|
||||||
|
error: error?.message ?? "Unable to parse release readiness artifact JSON",
|
||||||
|
artifactApiName: null,
|
||||||
|
artifactVersion: null,
|
||||||
|
gateCount: 0,
|
||||||
|
validation: null,
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
id: "artifact-json",
|
||||||
|
label: "Readiness artifact JSON",
|
||||||
|
value: "blocked",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function createIniPanelShellWorkflowOverviewReadiness({
|
export function createIniPanelShellWorkflowOverviewReadiness({
|
||||||
overviewApi = null,
|
overviewApi = null,
|
||||||
contract = createIniPanelShellWorkflowOverviewContract(),
|
contract = createIniPanelShellWorkflowOverviewContract(),
|
||||||
|
|||||||
@@ -105,6 +105,7 @@
|
|||||||
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
||||||
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
} from "./ui-shell.js";
|
} from "./ui-shell.js";
|
||||||
@@ -133,6 +134,9 @@
|
|||||||
getWorkflowOverviewPersistenceSummary: (options) => (
|
getWorkflowOverviewPersistenceSummary: (options) => (
|
||||||
createMachineSessionPersistenceSummary(options)
|
createMachineSessionPersistenceSummary(options)
|
||||||
),
|
),
|
||||||
|
validateWorkflowOverviewReleaseReadinessArtifactJson: (artifactJson) => (
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson(artifactJson)
|
||||||
|
),
|
||||||
getWorkflowOverviewDomContract: (options) => (
|
getWorkflowOverviewDomContract: (options) => (
|
||||||
createIniPanelShellSessionHandoffWorkflowDomContract(options)
|
createIniPanelShellSessionHandoffWorkflowDomContract(options)
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -309,6 +309,39 @@ TOOL_TABLE = browser-shell-tool.tbl
|
|||||||
const workflowOverviewReadiness = launchApi.getWorkflowOverviewReadiness({
|
const workflowOverviewReadiness = launchApi.getWorkflowOverviewReadiness({
|
||||||
overviewApi: workflowOverviewApi,
|
overviewApi: workflowOverviewApi,
|
||||||
});
|
});
|
||||||
|
const workflowOverviewReleaseArtifactValidation = workflowOverviewApi
|
||||||
|
.validateWorkflowOverviewReleaseReadinessArtifactJson(JSON.stringify({
|
||||||
|
apiName: "project-release-readiness-report",
|
||||||
|
reportVersion: 1,
|
||||||
|
phase: "ready",
|
||||||
|
ready: true,
|
||||||
|
missing: [],
|
||||||
|
releaseGate: {
|
||||||
|
command: "wasm-port/tests/host/verify_project_release_gate.sh",
|
||||||
|
passed: true,
|
||||||
|
expectedOutput: "project_release_gate=ok",
|
||||||
|
},
|
||||||
|
simConfigInventory: {
|
||||||
|
executed: 28,
|
||||||
|
passed: 28,
|
||||||
|
skipped: 131,
|
||||||
|
unexpectedFail: 0,
|
||||||
|
},
|
||||||
|
blockedRuntimeFamilies: [
|
||||||
|
"L4-USER-M-PROCESS",
|
||||||
|
"L4-TOOL-DB",
|
||||||
|
"L4-PYTHON-REMAP",
|
||||||
|
],
|
||||||
|
promotedBlockedFamilies: [],
|
||||||
|
gates: Array.from({ length: 9 }, (_, index) => ({ id: `gate-${index}`, passed: true })),
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
id: "project-release-gate",
|
||||||
|
label: "Project release gate",
|
||||||
|
value: "passed",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}));
|
||||||
const workflowOverviewEmbedding = launchApi.mountWorkflowOverviewEmbedding({
|
const workflowOverviewEmbedding = launchApi.mountWorkflowOverviewEmbedding({
|
||||||
overviewApi: workflowOverviewApi,
|
overviewApi: workflowOverviewApi,
|
||||||
});
|
});
|
||||||
@@ -370,6 +403,16 @@ TOOL_TABLE = browser-shell-tool.tbl
|
|||||||
});
|
});
|
||||||
assertEqual(workflowOverviewReadiness.ready, true, "shell workflow overview iframe readiness");
|
assertEqual(workflowOverviewReadiness.ready, true, "shell workflow overview iframe readiness");
|
||||||
assertEqual(workflowOverviewReadiness.missing.join(","), "", "shell workflow overview iframe missing methods");
|
assertEqual(workflowOverviewReadiness.missing.join(","), "", "shell workflow overview iframe missing methods");
|
||||||
|
assertEqual(
|
||||||
|
workflowOverviewReleaseArtifactValidation.apiName,
|
||||||
|
"ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
|
||||||
|
"shell workflow overview release artifact validation API",
|
||||||
|
);
|
||||||
|
assertEqual(
|
||||||
|
workflowOverviewReleaseArtifactValidation.ready,
|
||||||
|
true,
|
||||||
|
"shell workflow overview release artifact validation readiness",
|
||||||
|
);
|
||||||
assertEqual(workflowOverviewEmbedding.apiName, "ini-panel-shell-workflow-overview-embedding", "shell workflow overview embedding API");
|
assertEqual(workflowOverviewEmbedding.apiName, "ini-panel-shell-workflow-overview-embedding", "shell workflow overview embedding API");
|
||||||
assertEqual(workflowOverviewEmbedding.renderState.dataset.handoffScope, "workflow", "shell workflow overview embedding scope");
|
assertEqual(workflowOverviewEmbedding.renderState.dataset.handoffScope, "workflow", "shell workflow overview embedding scope");
|
||||||
assertEqual(workflowOverviewEmbedding.mountResult.renderResult.rowCount, 8, "shell workflow overview embedding rows");
|
assertEqual(workflowOverviewEmbedding.mountResult.renderResult.rowCount, 8, "shell workflow overview embedding rows");
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
!workflowApi?.getWorkflowOverviewSessionReadinessReport ||
|
!workflowApi?.getWorkflowOverviewSessionReadinessReport ||
|
||||||
!workflowApi?.getWorkflowOverviewApiSurfaceInventory ||
|
!workflowApi?.getWorkflowOverviewApiSurfaceInventory ||
|
||||||
!workflowApi?.getWorkflowOverviewPersistenceSummary ||
|
!workflowApi?.getWorkflowOverviewPersistenceSummary ||
|
||||||
|
!workflowApi?.validateWorkflowOverviewReleaseReadinessArtifactJson ||
|
||||||
!workflowApi?.getWorkflowOverviewDomContract ||
|
!workflowApi?.getWorkflowOverviewDomContract ||
|
||||||
!workflowApi?.getWorkflowOverviewDomReadiness ||
|
!workflowApi?.getWorkflowOverviewDomReadiness ||
|
||||||
!workflowApi?.renderWorkflowOverview ||
|
!workflowApi?.renderWorkflowOverview ||
|
||||||
@@ -62,6 +63,38 @@
|
|||||||
const sessionReadinessReport = workflowApi.getWorkflowOverviewSessionReadinessReport();
|
const sessionReadinessReport = workflowApi.getWorkflowOverviewSessionReadinessReport();
|
||||||
const apiSurfaceInventory = workflowApi.getWorkflowOverviewApiSurfaceInventory();
|
const apiSurfaceInventory = workflowApi.getWorkflowOverviewApiSurfaceInventory();
|
||||||
const persistenceSummary = workflowApi.getWorkflowOverviewPersistenceSummary();
|
const persistenceSummary = workflowApi.getWorkflowOverviewPersistenceSummary();
|
||||||
|
const releaseArtifactValidation = workflowApi.validateWorkflowOverviewReleaseReadinessArtifactJson(JSON.stringify({
|
||||||
|
apiName: "project-release-readiness-report",
|
||||||
|
reportVersion: 1,
|
||||||
|
phase: "ready",
|
||||||
|
ready: true,
|
||||||
|
missing: [],
|
||||||
|
releaseGate: {
|
||||||
|
command: "wasm-port/tests/host/verify_project_release_gate.sh",
|
||||||
|
passed: true,
|
||||||
|
expectedOutput: "project_release_gate=ok",
|
||||||
|
},
|
||||||
|
simConfigInventory: {
|
||||||
|
executed: 28,
|
||||||
|
passed: 28,
|
||||||
|
skipped: 131,
|
||||||
|
unexpectedFail: 0,
|
||||||
|
},
|
||||||
|
blockedRuntimeFamilies: [
|
||||||
|
"L4-USER-M-PROCESS",
|
||||||
|
"L4-TOOL-DB",
|
||||||
|
"L4-PYTHON-REMAP",
|
||||||
|
],
|
||||||
|
promotedBlockedFamilies: [],
|
||||||
|
gates: Array.from({ length: 9 }, (_, index) => ({ id: `gate-${index}`, passed: true })),
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
id: "project-release-gate",
|
||||||
|
label: "Project release gate",
|
||||||
|
value: "passed",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}));
|
||||||
const domContract = workflowApi.getWorkflowOverviewDomContract();
|
const domContract = workflowApi.getWorkflowOverviewDomContract();
|
||||||
const domReadiness = workflowApi.getWorkflowOverviewDomReadiness();
|
const domReadiness = workflowApi.getWorkflowOverviewDomReadiness();
|
||||||
const renderResult = workflowApi.renderWorkflowOverview();
|
const renderResult = workflowApi.renderWorkflowOverview();
|
||||||
@@ -107,6 +140,13 @@
|
|||||||
"workflow overview persistence summary API name",
|
"workflow overview persistence summary API name",
|
||||||
);
|
);
|
||||||
assertEqual(persistenceSummary.rows.length, 7, "workflow overview persistence summary rows");
|
assertEqual(persistenceSummary.rows.length, 7, "workflow overview persistence summary rows");
|
||||||
|
assertEqual(
|
||||||
|
releaseArtifactValidation.apiName,
|
||||||
|
"ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
|
||||||
|
"workflow overview release artifact validation API name",
|
||||||
|
);
|
||||||
|
assertEqual(releaseArtifactValidation.ready, true, "workflow overview release artifact validation readiness");
|
||||||
|
assertEqual(releaseArtifactValidation.gateCount, 9, "workflow overview release artifact validation gates");
|
||||||
assertEqual(displayViewModel.title, "Shell handoff workflow", "workflow overview display title");
|
assertEqual(displayViewModel.title, "Shell handoff workflow", "workflow overview display title");
|
||||||
assertEqual(renderState.renderStateVersion, 1, "workflow overview render-state version");
|
assertEqual(renderState.renderStateVersion, 1, "workflow overview render-state version");
|
||||||
assertEqual(renderState.dataset.handoffScope, "workflow", "workflow overview render-state scope");
|
assertEqual(renderState.dataset.handoffScope, "workflow", "workflow overview render-state scope");
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ for (const phrase of [
|
|||||||
"createProjectReleaseReadinessReport()",
|
"createProjectReleaseReadinessReport()",
|
||||||
"parseProjectReleaseReadinessArtifactJson()",
|
"parseProjectReleaseReadinessArtifactJson()",
|
||||||
"createProjectReleaseReadinessArtifactValidation()",
|
"createProjectReleaseReadinessArtifactValidation()",
|
||||||
|
"validateWorkflowOverviewReleaseReadinessArtifactJson()",
|
||||||
"createIniPanelShellApiSurfaceInventory()",
|
"createIniPanelShellApiSurfaceInventory()",
|
||||||
"createIniPanelShellSessionReadinessWorkflowReport()",
|
"createIniPanelShellSessionReadinessWorkflowReport()",
|
||||||
"workflow overview embedding mount DOM",
|
"workflow overview embedding mount DOM",
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ import {
|
|||||||
saveTextFile,
|
saveTextFile,
|
||||||
sessionSnapshotPath,
|
sessionSnapshotPath,
|
||||||
toolTablePath,
|
toolTablePath,
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
|
||||||
validateSessionSnapshot,
|
validateSessionSnapshot,
|
||||||
} from "../../../runtime/sdk/src/index.js";
|
} from "../../../runtime/sdk/src/index.js";
|
||||||
|
|
||||||
@@ -78,6 +79,10 @@ const requiredExports = [
|
|||||||
["createProjectReleaseReadinessArtifactValidation", createProjectReleaseReadinessArtifactValidation],
|
["createProjectReleaseReadinessArtifactValidation", createProjectReleaseReadinessArtifactValidation],
|
||||||
["createProjectReleaseReadinessReport", createProjectReleaseReadinessReport],
|
["createProjectReleaseReadinessReport", createProjectReleaseReadinessReport],
|
||||||
["parseProjectReleaseReadinessArtifactJson", parseProjectReleaseReadinessArtifactJson],
|
["parseProjectReleaseReadinessArtifactJson", parseProjectReleaseReadinessArtifactJson],
|
||||||
|
[
|
||||||
|
"validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson",
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
|
||||||
|
],
|
||||||
["planIniFileContextStaging", planIniFileContextStaging],
|
["planIniFileContextStaging", planIniFileContextStaging],
|
||||||
["planSimConfigStaging", planSimConfigStaging],
|
["planSimConfigStaging", planSimConfigStaging],
|
||||||
["analyzeIniRuntimeBoundaries", analyzeIniRuntimeBoundaries],
|
["analyzeIniRuntimeBoundaries", analyzeIniRuntimeBoundaries],
|
||||||
@@ -241,6 +246,10 @@ assert.deepEqual(
|
|||||||
"rows.project-release-gate",
|
"rows.project-release-gate",
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert.equal(
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson(JSON.stringify(releaseReadinessArtifact)).ready,
|
||||||
|
true,
|
||||||
|
);
|
||||||
assert.equal(
|
assert.equal(
|
||||||
createProjectReleaseReadinessReport({
|
createProjectReleaseReadinessReport({
|
||||||
observedOutputs: ["project_release_gate=ok"],
|
observedOutputs: ["project_release_gate=ok"],
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ import {
|
|||||||
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
||||||
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
renderIniPanelShellSessionHandoffMountState,
|
renderIniPanelShellSessionHandoffMountState,
|
||||||
@@ -154,6 +155,7 @@ const requiredShellExports = [
|
|||||||
"createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness",
|
"createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness",
|
||||||
"renderIniPanelShellWorkflowOverviewEmbeddingMountState",
|
"renderIniPanelShellWorkflowOverviewEmbeddingMountState",
|
||||||
"mountIniPanelShellWorkflowOverviewEmbeddingMountState",
|
"mountIniPanelShellWorkflowOverviewEmbeddingMountState",
|
||||||
|
"validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson",
|
||||||
"renderIniPanelShellSessionHandoffWorkflowState",
|
"renderIniPanelShellSessionHandoffWorkflowState",
|
||||||
"mountIniPanelShellSessionHandoffWorkflow",
|
"mountIniPanelShellSessionHandoffWorkflow",
|
||||||
"renderIniPanelShellSessionHandoffMountState",
|
"renderIniPanelShellSessionHandoffMountState",
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ import {
|
|||||||
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
||||||
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
createIniPanelShellSessionHandoffPackageReport,
|
createIniPanelShellSessionHandoffPackageReport,
|
||||||
@@ -780,6 +781,7 @@ assert.deepEqual(createIniPanelShellWorkflowOverviewContract(), {
|
|||||||
"getWorkflowOverviewSessionReadinessReport",
|
"getWorkflowOverviewSessionReadinessReport",
|
||||||
"getWorkflowOverviewApiSurfaceInventory",
|
"getWorkflowOverviewApiSurfaceInventory",
|
||||||
"getWorkflowOverviewPersistenceSummary",
|
"getWorkflowOverviewPersistenceSummary",
|
||||||
|
"validateWorkflowOverviewReleaseReadinessArtifactJson",
|
||||||
"getWorkflowOverviewDomContract",
|
"getWorkflowOverviewDomContract",
|
||||||
"getWorkflowOverviewDomReadiness",
|
"getWorkflowOverviewDomReadiness",
|
||||||
"renderWorkflowOverview",
|
"renderWorkflowOverview",
|
||||||
@@ -817,6 +819,11 @@ assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDomContract
|
|||||||
assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness, "function");
|
assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness, "function");
|
||||||
assert.equal(typeof renderIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
|
assert.equal(typeof renderIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
|
||||||
assert.equal(typeof mountIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
|
assert.equal(typeof mountIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
|
||||||
|
assert.equal(typeof validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson, "function");
|
||||||
|
assert.equal(
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson("{}").apiName,
|
||||||
|
"ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
|
||||||
|
);
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
createIniPanelShellWorkflowOverviewReadiness({
|
createIniPanelShellWorkflowOverviewReadiness({
|
||||||
overviewApi: {
|
overviewApi: {
|
||||||
@@ -829,6 +836,7 @@ assert.deepEqual(
|
|||||||
"getWorkflowOverviewDisplayViewModel",
|
"getWorkflowOverviewDisplayViewModel",
|
||||||
"getWorkflowOverviewSummary",
|
"getWorkflowOverviewSummary",
|
||||||
"getWorkflowOverviewPersistenceSummary",
|
"getWorkflowOverviewPersistenceSummary",
|
||||||
|
"validateWorkflowOverviewReleaseReadinessArtifactJson",
|
||||||
"getWorkflowOverviewDomContract",
|
"getWorkflowOverviewDomContract",
|
||||||
"getWorkflowOverviewDomReadiness",
|
"getWorkflowOverviewDomReadiness",
|
||||||
"renderWorkflowOverview",
|
"renderWorkflowOverview",
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ import {
|
|||||||
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
|
||||||
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
renderIniPanelShellSessionHandoffMountState,
|
renderIniPanelShellSessionHandoffMountState,
|
||||||
@@ -674,6 +675,7 @@ assert.deepEqual(shellViewModel.shellWorkflowOverviewContract, {
|
|||||||
"getWorkflowOverviewSessionReadinessReport",
|
"getWorkflowOverviewSessionReadinessReport",
|
||||||
"getWorkflowOverviewApiSurfaceInventory",
|
"getWorkflowOverviewApiSurfaceInventory",
|
||||||
"getWorkflowOverviewPersistenceSummary",
|
"getWorkflowOverviewPersistenceSummary",
|
||||||
|
"validateWorkflowOverviewReleaseReadinessArtifactJson",
|
||||||
"getWorkflowOverviewDomContract",
|
"getWorkflowOverviewDomContract",
|
||||||
"getWorkflowOverviewDomReadiness",
|
"getWorkflowOverviewDomReadiness",
|
||||||
"renderWorkflowOverview",
|
"renderWorkflowOverview",
|
||||||
@@ -1269,6 +1271,52 @@ assert.equal(workflowDomMountResult.ready, false);
|
|||||||
assert.equal(workflowDomMountResult.renderResult.rowCount, 8);
|
assert.equal(workflowDomMountResult.renderResult.rowCount, 8);
|
||||||
assert.equal(workflowDomMountResult.renderResult.dataset.handoffScope, "workflow");
|
assert.equal(workflowDomMountResult.renderResult.dataset.handoffScope, "workflow");
|
||||||
assert.deepEqual(createIniPanelShellWorkflowOverviewContract(), shellViewModel.shellWorkflowOverviewContract);
|
assert.deepEqual(createIniPanelShellWorkflowOverviewContract(), shellViewModel.shellWorkflowOverviewContract);
|
||||||
|
const releaseReadinessArtifactJson = JSON.stringify({
|
||||||
|
apiName: "project-release-readiness-report",
|
||||||
|
reportVersion: 1,
|
||||||
|
phase: "ready",
|
||||||
|
ready: true,
|
||||||
|
missing: [],
|
||||||
|
releaseGate: {
|
||||||
|
command: "wasm-port/tests/host/verify_project_release_gate.sh",
|
||||||
|
passed: true,
|
||||||
|
expectedOutput: "project_release_gate=ok",
|
||||||
|
},
|
||||||
|
simConfigInventory: {
|
||||||
|
executed: 28,
|
||||||
|
passed: 28,
|
||||||
|
skipped: 131,
|
||||||
|
unexpectedFail: 0,
|
||||||
|
},
|
||||||
|
blockedRuntimeFamilies: [
|
||||||
|
"L4-USER-M-PROCESS",
|
||||||
|
"L4-TOOL-DB",
|
||||||
|
"L4-PYTHON-REMAP",
|
||||||
|
],
|
||||||
|
promotedBlockedFamilies: [],
|
||||||
|
gates: Array.from({ length: 9 }, (_, index) => ({ id: `gate-${index}`, passed: true })),
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
id: "project-release-gate",
|
||||||
|
label: "Project release gate",
|
||||||
|
value: "passed",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
const releaseArtifactValidation = validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson(
|
||||||
|
releaseReadinessArtifactJson,
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
releaseArtifactValidation.apiName,
|
||||||
|
"ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
|
||||||
|
);
|
||||||
|
assert.equal(releaseArtifactValidation.ready, true);
|
||||||
|
assert.equal(releaseArtifactValidation.validation.ready, true);
|
||||||
|
assert.equal(releaseArtifactValidation.gateCount, 9);
|
||||||
|
assert.deepEqual(
|
||||||
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson("{").missing,
|
||||||
|
["artifact-json"],
|
||||||
|
);
|
||||||
assert.deepEqual(createIniPanelShellWorkflowOverviewReadiness(), {
|
assert.deepEqual(createIniPanelShellWorkflowOverviewReadiness(), {
|
||||||
apiName: "ini-panel-shell-workflow-overview-readiness",
|
apiName: "ini-panel-shell-workflow-overview-readiness",
|
||||||
readinessVersion: 1,
|
readinessVersion: 1,
|
||||||
@@ -1284,6 +1332,7 @@ const workflowOverviewApi = {
|
|||||||
getWorkflowOverviewSessionReadinessReport: () => sessionReadinessWorkflowReport,
|
getWorkflowOverviewSessionReadinessReport: () => sessionReadinessWorkflowReport,
|
||||||
getWorkflowOverviewApiSurfaceInventory: () => shellViewModel.shellApiSurfaceInventory,
|
getWorkflowOverviewApiSurfaceInventory: () => shellViewModel.shellApiSurfaceInventory,
|
||||||
getWorkflowOverviewPersistenceSummary: () => shellViewModel.shellPersistenceSummary,
|
getWorkflowOverviewPersistenceSummary: () => shellViewModel.shellPersistenceSummary,
|
||||||
|
validateWorkflowOverviewReleaseReadinessArtifactJson: () => ({ ready: true }),
|
||||||
getWorkflowOverviewDomContract: createIniPanelShellSessionHandoffWorkflowDomContract,
|
getWorkflowOverviewDomContract: createIniPanelShellSessionHandoffWorkflowDomContract,
|
||||||
getWorkflowOverviewDomReadiness: createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
getWorkflowOverviewDomReadiness: createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
||||||
renderWorkflowOverview: renderIniPanelShellSessionHandoffWorkflowState,
|
renderWorkflowOverview: renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
|
|||||||
Reference in New Issue
Block a user