Commit a52bd23
committed
feat(admin): loops grouped inside their skill, and graph scope labels (issue #54)
Operator feedback on the shipped graph: not clear which repos or
folders it covers, and the loop a skill's own text describes was
nowhere to be seen. The second half was a real gap against the
original ask: the design carried loop markers grouped inside the
skill, but the data layer never produced them.
Loops. findLoopHints (graph-model, pure) scans a SKILL.md BODY for
iteration vocabulary (until, repeat, iterate, for each, while,
keep ...ing), frontmatter excluded so a description like 'repeat
daily' never reads as a loop, deduped and capped at three. The hints
ride skill nodes as facts, and every surface groups them INSIDE the
skill, because a loop lives inside its one job, one container, one
budget slot: the HTML renders a loop-carrying skill as a Node-RED
group box (tinted rect labelled with the skill, the chip, one rearm
marker per hint with the phrase, the ring wire contained in the box;
sub-skills nest as small chips), the TUI shows rearm-glyph badges, the
text view [loop: ...] badges. A hint is text evidence, never a
promise: the mention discipline, applied to a node's insides.
Scope. Forge groups now name the repositories their window's records
actually ran against (forgeRepoTargets: the repo half of the id-only
target string every runs view already shows, capped at five, labelled
record-derived, because a github trigger's config names no repository
at all). Local folders keep their full path in the TUI and text
views; the HTML artifact stays basename-only by default and gains
--full-paths, an explicit operator opt-in for the reviewed run.folder
paths, because the artifact is a durable, shareable file.
Specs: REQ-TOPOLOGY-GRAPH gains (e2) (loops as node facts grouped in
the skill; record-derived forge scope); REQ-GRAPH-HTML-EXPORT gains
the opt-in with its acceptance twin; SECURITY.md names the opt-in.
GRAPH_LIMITS gains maxReposListed, literal-pinned. docs/graph.md
gains the loops and scope sections; both READMEs' screenshot is
regenerated from a fixture whose skill actually loops, image version
bumped.
Suite in the CI posture: 2175 pass, 0 skipped; admin bundle builds;
the artifact re-verified in headless Chrome, default and --full-paths
both.
Signed-off-by: Rob Boerman <robboerman@live.nl>1 parent 2916a0c commit a52bd23
16 files changed
Lines changed: 512 additions & 51 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
387 | 387 | | |
388 | 388 | | |
389 | 389 | | |
390 | | - | |
| 390 | + | |
391 | 391 | | |
392 | 392 | | |
393 | 393 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
487 | 487 | | |
488 | 488 | | |
489 | 489 | | |
490 | | - | |
| 490 | + | |
| 491 | + | |
491 | 492 | | |
492 | 493 | | |
493 | 494 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
71 | | - | |
| 71 | + | |
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| |||
159 | 159 | | |
160 | 160 | | |
161 | 161 | | |
| 162 | + | |
162 | 163 | | |
163 | 164 | | |
164 | 165 | | |
| |||
1636 | 1637 | | |
1637 | 1638 | | |
1638 | 1639 | | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
1639 | 1643 | | |
1640 | | - | |
| 1644 | + | |
1641 | 1645 | | |
1642 | 1646 | | |
1643 | 1647 | | |
| |||
1657 | 1661 | | |
1658 | 1662 | | |
1659 | 1663 | | |
| 1664 | + | |
1660 | 1665 | | |
1661 | 1666 | | |
1662 | 1667 | | |
| |||
0 commit comments