Lock AXIS panel contract to source behavior
This commit is contained in:
@@ -11,7 +11,7 @@ digraph LinuxCncAxisWebControlLogic {
|
||||
newrank=true,
|
||||
fontname="Noto Sans CJK SC",
|
||||
fontsize=22,
|
||||
label="LinuxCNC AXIS Web/WASM 控制面板完整逻辑关系图\n基线 239dcf4284762ad7e9c65d390bc5524d855c2f8e · 文档是 Web 面板唯一实现契约",
|
||||
label="LinuxCNC AXIS Web/WASM 控制面板源程序对标关系图\n源码锁 239dcf4284762ad7e9c65d390bc5524d855c2f8e · 源程序冲突时源程序优先",
|
||||
labelloc=t,
|
||||
labeljust=l
|
||||
];
|
||||
@@ -44,7 +44,7 @@ digraph LinuxCncAxisWebControlLogic {
|
||||
penwidth=1.5;
|
||||
|
||||
source [label="LinuxCNC 源程序\naxis.py · axis.tcl\nemctaskmain.cc · HAL/INI", fillcolor="#f7f1df", color="#b08a2e"];
|
||||
contract [label="源程序对标文档\nlinuxcnc-axis-web-control-panel-\nsource-logic.md", fillcolor="#fff5c9", color="#b08a2e", penwidth=2.2];
|
||||
contract [label="源程序锁定契约\nSOURCE_EXACT · SOURCE_ADAPTER\nSOURCE_BLOCKED · WEB_EXTENSION", fillcolor="#fff5c9", color="#b08a2e", penwidth=2.2];
|
||||
gesture [label="浏览器控件手势\ndata-axis-control\n82 个文档控制 ID", fillcolor="#edf6f8", color="#3c8091"];
|
||||
react [label="React handler\n只发意图,不是状态权威", fillcolor="#edf6f8", color="#3c8091"];
|
||||
operation [label="AxisOperationController\n串行操作 · operation_id · ledger", fillcolor="#eef2fb", color="#526da8"];
|
||||
@@ -94,12 +94,12 @@ digraph LinuxCncAxisWebControlLogic {
|
||||
fillcolor="#ffffff";
|
||||
|
||||
estop [label="ESTOP\n仅允许解除急停/安全诊断", fillcolor="#f8e7e5", color="#b94f45", penwidth=2.1];
|
||||
off [label="ESTOP_RESET / OFF\n急停已解除,机器未上电", fillcolor="#f7f1df", color="#b08a2e"];
|
||||
on_unhomed [label="ON · NOT HOMED\n可加载文件,可 HOME\n禁止 AUTO 运行", fillcolor="#fff5c9", color="#b08a2e"];
|
||||
off [label="ESTOP_RESET\n急停已解除,机器未上电\nSTATE_OFF 是命令值,不是稳定状态", fillcolor="#f7f1df", color="#b08a2e"];
|
||||
on_unhomed [label="ON · NOT HOMED\nOpen / Home / joint-mode manual\nAUTO/MDI 由 task homing 策略拒绝", fillcolor="#fff5c9", color="#b08a2e"];
|
||||
idle [label="ON · HOMED · IDLE\nRun / Step / Manual / MDI\n按各自源门控启用", fillcolor="#e9f5e8", color="#43844b", penwidth=2.1];
|
||||
running [label="AUTO · RUNNING\n解释器读取 + TP 执行\nPause / Stop / Power Off / ESTOP", fillcolor="#e5effa", color="#526da8", penwidth=2.1];
|
||||
paused [label="AUTO · PAUSED\n轨迹冻结但保留\nResume / Stop / Power Off / ESTOP", fillcolor="#fcebdc", color="#bd6a28", penwidth=2.1];
|
||||
ended [label="IDLE · completed / aborted\n保留当前 taskfile\n直接 Run 从第 0 行重新打开", fillcolor="#e9f5e8", color="#43844b"];
|
||||
ended [label="INTERP_IDLE · completed / aborted\nWeb 状态标签不是 LinuxCNC 枚举\n保留 taskfile;Run 重新打开第 0 行", fillcolor="#e9f5e8", color="#43844b"];
|
||||
|
||||
{ rank=same; estop; off; on_unhomed; idle; }
|
||||
{ rank=same; running; paused; ended; }
|
||||
@@ -149,7 +149,7 @@ digraph LinuxCncAxisWebControlLogic {
|
||||
];
|
||||
|
||||
secondary_controls [
|
||||
label="覆盖率 / 图层 / 菜单 / 边界\n\noverride-jog-speed (SET_JOG_SCALE)\noverride-feed (SET_OVERRIDE)\noverride-spindle (SET_SPINDLE_OVERRIDE)\noverride-max-velocity (SET_MAX_VELOCITY)\noverride-rapid (blocked_by_abi_rapidrate)\npreview-layer-path / live / limits / velocity / offsets / extents\nworkspace-case-select (本地配置选择)\nworkspace-load-3d-chips (PROGRAM_LOAD)\nmenu-file / menu-help (本地菜单)\nmenu-help-about / about-close (本地对话框)\nmenu-file-edit-tool-data (host_boundary disabled)\nmenu-file-quit (host_boundary disabled)\nTool / Probe:只读;无额外主面板命令按钮",
|
||||
label="覆盖率 / 图层 / 菜单 / 边界\n\noverride-jog-speed (SOURCE_ADAPTER)\noverride-feed / spindle / max-velocity\n (SOURCE_ADAPTER;原生无上电 UI gate)\noverride-rapid (SOURCE_BLOCKED)\npreview-layer-path / live / limits / velocity / offsets / extents\nworkspace-case-select / load-3d-chips (WEB_EXTENSION)\nmenu-file / menu-help (本地菜单)\nmenu-help-about / about-close (SOURCE_ADAPTER)\nmenu-file-edit-tool-data / quit (SOURCE_BLOCKED)\nTool / Probe:只读;无额外主面板命令按钮",
|
||||
fontname="Noto Sans Mono CJK SC",
|
||||
fillcolor="#f7f1df",
|
||||
color="#b08a2e"
|
||||
@@ -177,7 +177,7 @@ digraph LinuxCncAxisWebControlLogic {
|
||||
color="#b08a2e"
|
||||
];
|
||||
load_tx [
|
||||
label="文件替换事务\n1 仅 IDLE 且 TP/MDI queue=0\n2 save mode -> ensure MANUAL\n3 清旧 preview 与待处理边\n4 恢复 saved mode\n5 捕获当前 canonical TP pose\n6 PROGRAM_LOAD + task_plan_synch\n7 subroutine + preview\n8 重算 gates 并发布单一快照",
|
||||
label="文件替换事务\n1 原生 UI gate:INTERP_IDLE\n2 Web 安全适配:TP/MDI queue=0\n3 save mode -> ensure MANUAL\n4 可选 FILTER -> restore saved mode\n5 first line 0 -> task_plan_synch\n6 program_open / PROGRAM_LOAD\n7 新 AxisCanon + 状态派生 preview init\n8 set_mode_from_tab;Live Plot 不清除",
|
||||
fillcolor="#eef2fb",
|
||||
color="#526da8"
|
||||
];
|
||||
@@ -187,7 +187,7 @@ digraph LinuxCncAxisWebControlLogic {
|
||||
color="#43844b"
|
||||
];
|
||||
run_tx [
|
||||
label="程序执行事务\nRun: run_warn -> ensure AUTO -> AUTO_RUN line 0\nPause: 仅 READING/WAITING\nResume: 仅 PAUSED\nStop: abort -> wait -> TP queue clear\nCompleted/Aborted: taskfile 保留\n再次 Run: reopen 当前文件 line 0",
|
||||
label="程序执行事务\nRun UI gate:ON + INTERP_IDLE\nrun_warn -> ensure AUTO -> AUTO_RUN line 0\nStep UI gate:ON + taskfile\nPause:READING/WAITING;Resume:PAUSED\nStop:ON + 非 IDLE -> abort/wait/plan close\nCompleted/Aborted:taskfile 保留;Run reopen line 0",
|
||||
fillcolor="#fcebdc",
|
||||
color="#bd6a28"
|
||||
];
|
||||
@@ -206,12 +206,12 @@ digraph LinuxCncAxisWebControlLogic {
|
||||
style="rounded,filled";
|
||||
fillcolor="#ffffff";
|
||||
|
||||
static_preview [label="静态程序 Preview\n来源:open_file_guts / AxisCanon / WASM preview\nRun · Pause · Resume · Stop · Completed · Clear Plot 均保留\n仅新 PROGRAM_LOAD 隐藏旧图并原子替换", fillcolor="#eef2fb", color="#526da8"];
|
||||
live_empty [label="Live Plot 新 epoch\n轨迹点 = 0", fillcolor="#edf6f8", color="#3c8091"];
|
||||
static_preview [label="静态程序 Preview\n来源:open_file_guts / AxisCanon / WASM preview\nRun · Pause · Resume · Stop · Completed · Clear Plot 均保留\nOpen/Reload 分配新 canon;解析错误不回滚旧 canon", fillcolor="#eef2fb", color="#526da8"];
|
||||
live_empty [label="显式清除后的 Live Plot\n轨迹点 = 0", fillcolor="#edf6f8", color="#3c8091"];
|
||||
live_running [label="RUNNING\npositionlogger / motion_trace 累积", fillcolor="#e9f5e8", color="#43844b"];
|
||||
live_paused [label="PAUSED\n冻结且保留同一轨迹", fillcolor="#fcebdc", color="#bd6a28"];
|
||||
live_retained [label="STOPPED / COMPLETED\n保留完整加工轨迹", fillcolor="#e9f5e8", color="#43844b"];
|
||||
live_clear [label="清除边界\nPROGRAM_LOAD · 新 PROGRAM_RUN\nPROGRAM_RESTART · VISUAL_CLEAR\nWorker: live_path_epoch + 1", fillcolor="#f8e7e5", color="#b94f45", penwidth=2.1];
|
||||
live_clear [label="唯一源程序清除边界\nCtrl-K / Clear Live Plot\nVISUAL_CLEAR -> live_path_epoch + 1\nRun · Reload · Open 均不得清除", fillcolor="#f8e7e5", color="#b94f45", penwidth=2.1];
|
||||
|
||||
f_anchor [shape=point, width=0, height=0, label="", style=invis];
|
||||
{ rank=same; static_preview; f_anchor; live_clear; }
|
||||
@@ -222,7 +222,8 @@ digraph LinuxCncAxisWebControlLogic {
|
||||
live_paused -> live_running [label="Resume"];
|
||||
live_running -> live_retained [label="Stop / Complete"];
|
||||
live_clear -> live_empty [label="epoch change"];
|
||||
live_retained -> live_clear [label="重新加工 / 换程序 / Clear", color="#b94f45"];
|
||||
live_retained -> live_running [label="Run / 重跑 / 换程序后继续累积", color="#43844b"];
|
||||
live_retained -> live_clear [label="仅 Clear Live Plot", color="#b94f45"];
|
||||
static_preview -> live_running [label="相互独立", style=dashed, dir=both, arrowtail=none, color="#526da8"];
|
||||
}
|
||||
|
||||
@@ -233,17 +234,17 @@ digraph LinuxCncAxisWebControlLogic {
|
||||
fillcolor="#e9ecea";
|
||||
|
||||
invariants [
|
||||
label="实现不变量\n• React 不是状态权威\n• 每条命令必须经过 Worker gate\n• 每个控件必须有文档 ID\n• 拒绝必须返回稳定 reason\n• 不可用 ABI 不得用本地布尔/G92/固定 G43 模拟\n• 重复入口删除,不改变保留命令语义\n• 新控件必须先更新本文档与测试",
|
||||
label="实现不变量\n• 源程序冲突时源程序优先\n• React 不是状态权威\n• exact update_state 公式是 UI gate 基线\n• 每条命令必须经过 Worker gate\n• 不可用 ABI 不得用本地布尔/G92/固定 G43 模拟\n• WEB_EXTENSION 不计入 AXIS 对标\n• 新控件必须先更新本文档、图和测试",
|
||||
fillcolor="#ffffff",
|
||||
color="#667078"
|
||||
];
|
||||
verification [
|
||||
label="自动验收\n82 个文档控制 ID\n80 个静态 DOM 控件 + 2 个动态控制族\n51 个实际按钮 / 18 组浏览器流程\nWorker: 98 verified / 8 rejected / 6 ABI boundaries\nNative: 22 / 22\n多程序 A -> B -> C -> A\n桌面/移动 WebGL 像素检查",
|
||||
label="自动验收\n源码锁:axis.py + axis.tcl SHA-256\n7 条 exact update_state 公式\n5 条 handler 流程\n7 个非清除 Live Plot 生命周期函数\n82 个文档控制 ID\nSOURCE_EXACT / ADAPTER / BLOCKED / EXTENSION 分层\nWorker 与浏览器回归另行验证",
|
||||
fillcolor="#e9f5e8",
|
||||
color="#43844b"
|
||||
];
|
||||
legend [
|
||||
label="颜色图例\n绿色:WASM 规范状态/已验证操作\n蓝色:Task/程序控制\n青色:本地视图投影\n黄色:INI/文件/启动事务\n橙色:模式转换/暂停\n红色:急停/清除边界/明确禁用",
|
||||
label="对标图例\nSOURCE_EXACT:源代码公式/顺序原样\nSOURCE_ADAPTER:传输不同,语义相同\nSOURCE_BLOCKED:能力不足,禁用/缺席\nWEB_EXTENSION:非 AXIS 功能,不计入对标\n红色:急停/唯一清除边界/明确禁用",
|
||||
fillcolor="#ffffff",
|
||||
color="#667078"
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user