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
{{ message }}
Repository navigation
fix(framework): the orthogonality guard's two generous table shapes #884
Two limits the guard from #250 ships with, both measured and neither reachable from the tree as it stands. Recorded so the next person meets them in a document rather than in a refusal.
A separator-less run below the router is read as part of it
scripts/lib/architecture-rules.js, citationsIn. A run of table rows with no | --- | beneath it is treated as the table above it resumed after a blank line. That exists so a purely cosmetic edit — one blank line inside a router table — does not refuse every row below it. The cost: a glossary written without a separator, immediately under the router, donates its cells as citations, so a deleted row can hide behind it.
## Actions| Action | When || --- | --- || 01-keep | a || role | the caller || scope | the ask |
02-role.md's missing row passes. A column-count check does not discriminate the two shapes — a glossary often has the router's width. Neither shape is a table any renderer accepts.
Rule one reads addresses through fences, rule two does not
findAddresses runs on the raw content, so a governed file teaching a counter-example inside a fenced block is refused:
plugins/aidd-dev/skills/99-x/references/teach.md:6 addresses sibling plugin "aidd-vcs" via "/aidd-vcs:01-commit"
22 fenced address lines exist under plugins/ today, all own-plugin or aidd-orchestrator, so none fires. Rule two blanks fences; rule one does not, and the asymmetry is stated in the spec rather than resolved.
A third, smaller one
plugins/aidd-context/skills/04-skill-generate/references/skill-authoring.md:17 (R8) says an Action cell is "the bare slug, no backticks and no number". Two action files sharing a stem — 01-plan.md and 04-plan.md both reduce to plan — can then only be cited in a form R8 forbids, because a shared stem deliberately cites nobody. No skill in the tree has such a collision. One sentence in R8 would close it.
Done when
A separator-less glossary under a router no longer donates citations, without reintroducing the blank-line false refusal.
Rule one and rule two agree about fences, or the asymmetry is deliberate and says why.
R8 says what to write when two actions share a stem.
Table rows with no separator under a router's Actions table now get one refusal at their first line and count as no citation, so a glossary there can no longer hide a deleted row.
Orthogonality still reads through fences, deliberately, because a fenced command is still one the model runs; the code says so and a test pins it.
R8 now says that two actions sharing a slug keep their number.
Activity
fix(framework): close the architecture guard's three recorded gaps (#…
blafourcade commentedon Oct 12, 2026
Fixed by #1005.