fix(framework): the orthogonality guard's two generous table shapes

Open
#884 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
52/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
typescript

Research direction

Start in scripts/lib/architecture-rules.js at citationsIn and findAddresses, then read the R8 guidance in plugins/aidd-context/skills/04-skill-generate/references/skill-authoring.md. Reproduce the separator-less glossary, fenced address, and duplicate-stem cases from the issue. Done means the guard handles each case consistently, preserves the blank-line behavior, and documents the chosen fence and shared-stem rules.

Written by the indexing model from the issue text.

Description

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.
Dominant language
TypeScript
Stars
481
Forks
45
Avg merge
14h 36m
Merged PRs (30d)
110

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ai-driven-dev/framework

All issues in ai-driven-dev/framework

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.