Engine v0.2: flow graph, datapoint states, gates, modes, overrides, deviations (RBT-WP-0007)
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 4s
Work Records / validate (push) Successful in 12s

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: sonnet
Assistant-Process: 295952@bnt-lap001
Assistant-Session: e93f64ad-516c-46eb-9666-aad8d300c477
This commit is contained in:
tegwick 2026-09-29 11:34:07 +02:00
parent 3fc279a6ed
commit 60d983769f
13 changed files with 1017 additions and 22 deletions

View file

@ -151,6 +151,11 @@ def _check_refs(m: _Model, data: dict) -> None:
m.errs.append(f"datapoint {d['id']}: produced_by names unknown step {d['produced_by']}")
if d.get("confirmed_by") and d["confirmed_by"] not in steps | gates:
m.errs.append(f"datapoint {d['id']}: confirmed_by names unknown step or gate")
for g_id in gates: # a gate that requires a datapoint to be ok cannot be what confirms it
for ck in m.flow[g_id]["checks"]:
for d in ck.get("datapoints_ok", []):
if dps.get(d, {}).get("confirmed_by") == g_id:
m.errs.append(f"gate {g_id}: checks datapoint {d} that it is itself confirmed_by (circular)")
for a in data.get("artefacts", []):
if a["location"]["datapoint"] not in dps:
m.errs.append(f"artefact {a['id']}: location names unknown datapoint")