You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(admin): tier-aware flow resolution in the topology (#188)
A cron trigger whose run.flow legally lives in an injected run.skillsDir,
the overlay skills/, or a staged package drew its config edge to a red
skill-missing node flagged no-skill (absent at HEAD), a false alarm for a
flow that runs fine. The sharpest case minted a second red node while the
true injected:<dir>:<name> node floated edge-less in its own group.
Config-edge resolution now walks the loader's own precedence order per
trigger: repo > injected > overlay > staged. A lower-tier hit lands the
edge on that tier's node, unflagged, the never-AI-reachable half riding
the tip; the overlay and staged tiers enumerate as their own groups where
the session can see PI_GLOBAL_PI_DIR (new readOverlaySkills, and the
worker's own readStagedSkills behind readStagedSkillsList, manifest order
preserved because it is the loader's shadowing order). A tier node is
claimed only when every higher applicable tier is a KNOWN miss: doctor's
existential tick probes past an unknown tier, an identity edge must not,
so an unknown tier (no PI_GLOBAL_PI_DIR in the session, which the
deployment pointer deliberately cannot carry; an unreadable or truncated
listing; a pattern-manifest package) softens the claim to the new amber
skill-not-at-head kind naming the unchecked tiers in the tip. Red
no-skill now requires every applicable tier checked and missed, its
detail names them, and run.packages: false reads as the known withheld
miss it is. Forge triggers keep skill-unverified: the remote repo
outranks every host-readable tier. The graph tip also gains the
command: /name line for command triggers (the issue #189 handoff;
normalizeModel's allowlist gains the field the canary test proved
structurally unreachable).
The closed edge and flag vocabularies are byte-unchanged. Node kinds grew
(overlay, staged, skill-not-at-head) and became the third closed pinned
set, GRAPH_NODE_KINDS, with a glyph-parity pin so a kind without a
renderer arm goes red in a unit test.
REQ-TOPOLOGY-GRAPH AMENDED (statement, new clause (a2), acceptance).
REQ-PER-TRIGGER-SKILLS AMENDED (injected-only acceptance clause).
REQ-GLOBAL-PI-OVERLAY AMENDED (the topology as doctor's display half).
DES-GRAPH-EDGE-DERIVATION AMENDED (ladder; stop-at-unknown with the
doctor divergence recorded; two new Rejected rows).
DES-ADMIN-VIA-PI-EXTENSION AMENDED (two new readers, same never-throw,
GRAPH_LIMITS-bounded, display-advisory posture).
DES-FLOW-RESOLUTION-TWO-ADVISORY-LAYERS AMENDED (third advisory surface).
OQ-022 AMENDED (prose correction), OQ-025 NEW (six accepted residuals).
DES-AI-TRIGGER-FLOW-GATE UNCHANGED, checked: AI-reachability stays
committed-repo-only; tier nodes carry no aiTrigger and no chainable
badge; potential-edge eligibility still reads only the repo enumeration.
REQ-DEPLOYMENT-BOOTSTRAP UNCHANGED, checked: display only, no doctor
change, no fix tier.
Signed-off-by: Rob Boerman <robboerman@live.nl>
row(legendSwatch(`<rect x="1" y="1" width="14" height="10" rx="2" fill="none" stroke="${CHIP_STROKE}" stroke-dasharray="8,3"/>`),"orphan: no trigger, no ai-trigger, no mention");
962
-
row(legendSwatch(`<rect x="1" y="1" width="14" height="10" rx="2" fill="none" stroke="${DANGER}" stroke-dasharray="10,4"/>`),"dangling: flow absent or name invalid");
1004
+
row(legendSwatch(`<rect x="1" y="1" width="14" height="10" rx="2" fill="none" stroke="${DANGER}" stroke-dasharray="10,4"/>`),"dangling: absent in every checkable tier or name invalid");
1005
+
row(legendSwatch(`<rect x="1" y="1" width="14" height="10" rx="2" fill="none" stroke="${PAGE_AMBER}" stroke-dasharray="10,4"/>`),"not at HEAD: some skill tiers not checkable from this session");
963
1006
row(legendSwatch(`<rect x="1" y="1" width="14" height="10" rx="2" fill="none" stroke="${PAGE_DIM}" stroke-dasharray="10,4"/>`),"unverified: repo not readable from this host");
0 commit comments