fix(kyberforge): a dispatch table satisfies the reference-wiring rule
body-discipline.md required every reference load to use the literal 'If X, read references/file.md' form and called anything else a generic pointer. ADR-0020's own cited dispatch exemplar, apm-workflow, uses a bare table plus one closing line, so an author could not satisfy both -- and the rule reliably produced duplication in exactly the bodies the contract exists to keep short. Resolves #109 with its option 1: a table row already pairs a condition with a target, so where a body dispatches, the table is the wiring. The literal form is what a body needs when it loads a reference without a table. Two corrections to the issue as filed. There is no Vale conflict -- PaddingPhrase.yml only matches 'see references/ for more info' and never fired on the exemplar, so this is a one-file prose fix and no rule changes. And gitea-workflow carried the predicted duplication: a three-row table restated underneath as three conditionals. Removed, body 227 -> 148 words. Closes #109
This commit is contained in:
@@ -33,11 +33,7 @@ The invocation's shape selects exactly one branch.
|
||||
| A bare number, with neither "issue" nor "PR" said | Resolve which domain the number belongs to | `references/number-resolution.md` |
|
||||
| A named capability whose owning skill is unclear | Route to the domain skill that owns it | `references/skill-index.md` |
|
||||
|
||||
If the invocation carries no specific request, read `references/status-checkin.md`.
|
||||
|
||||
If the request references a bare number and never says "issue" or "PR", read `references/number-resolution.md`.
|
||||
|
||||
If the request names a capability but not which skill owns it, read `references/skill-index.md`.
|
||||
Read only the reference file matching the selected branch — each is self-contained for its concern.
|
||||
|
||||
## Report
|
||||
|
||||
|
||||
@@ -33,11 +33,7 @@ The invocation's shape selects exactly one branch.
|
||||
| A bare number, with neither "issue" nor "PR" said | Resolve which domain the number belongs to | `references/number-resolution.md` |
|
||||
| A named capability whose owning skill is unclear | Route to the domain skill that owns it | `references/skill-index.md` |
|
||||
|
||||
If the invocation carries no specific request, read `references/status-checkin.md`.
|
||||
|
||||
If the request references a bare number and never says "issue" or "PR", read `references/number-resolution.md`.
|
||||
|
||||
If the request names a capability but not which skill owns it, read `references/skill-index.md`.
|
||||
Read only the reference file matching the selected branch — each is self-contained for its concern.
|
||||
|
||||
## Report
|
||||
|
||||
|
||||
@@ -31,7 +31,16 @@ Include content the agent lacks:
|
||||
Move to `references/`, behind an explicit "If X, read `references/<file>.md`" trigger — the literal
|
||||
conditional form, never a generic pointer. Write the real filename in the skill under audit; the
|
||||
angle brackets are a placeholder here, and a literal `references/file.md` in a body is an ERROR
|
||||
from the ADR-0020 gate because no such file exists on disk. Move:
|
||||
from the ADR-0020 gate because no such file exists on disk.
|
||||
|
||||
**A dispatch table satisfies this requirement on its own.** A table row already pairs a condition
|
||||
with a target, which is exactly what the literal form encodes; restating each row underneath as a
|
||||
prose conditional duplicates the routing in the one body whose whole purpose is to be short. Where a
|
||||
body dispatches, audit the table for condition/target completeness and stop there — do not require
|
||||
the conditional form as well. The literal form is what a body needs when it loads a reference
|
||||
*without* a dispatch table: a single mid-procedure deepening, an escape hatch, an error path.
|
||||
|
||||
Move:
|
||||
|
||||
- Lookup tables and spec restatements
|
||||
- Output schemas, templates and example blocks
|
||||
@@ -76,6 +85,10 @@ The reference shape in this repo is `apm-workflow`: a **421-word body** dispatch
|
||||
words — cite 421 when calibrating a body, or the conflation this section warns against reappears
|
||||
in the finding itself.
|
||||
|
||||
Note its wiring: a three-column table (invocation, action, reference file) closed by one line,
|
||||
*"Read only the reference file matching the requested action."* That is the endorsed shape, and it
|
||||
is why the literal-conditional requirement above exempts a body that dispatches. Do not flag it.
|
||||
|
||||
## Gotchas sections
|
||||
|
||||
The highest-value construct in a body, and the easiest to fill with noise. A Gotcha must state a
|
||||
|
||||
@@ -31,7 +31,16 @@ Include content the agent lacks:
|
||||
Move to `references/`, behind an explicit "If X, read `references/<file>.md`" trigger — the literal
|
||||
conditional form, never a generic pointer. Write the real filename in the skill under audit; the
|
||||
angle brackets are a placeholder here, and a literal `references/file.md` in a body is an ERROR
|
||||
from the ADR-0020 gate because no such file exists on disk. Move:
|
||||
from the ADR-0020 gate because no such file exists on disk.
|
||||
|
||||
**A dispatch table satisfies this requirement on its own.** A table row already pairs a condition
|
||||
with a target, which is exactly what the literal form encodes; restating each row underneath as a
|
||||
prose conditional duplicates the routing in the one body whose whole purpose is to be short. Where a
|
||||
body dispatches, audit the table for condition/target completeness and stop there — do not require
|
||||
the conditional form as well. The literal form is what a body needs when it loads a reference
|
||||
*without* a dispatch table: a single mid-procedure deepening, an escape hatch, an error path.
|
||||
|
||||
Move:
|
||||
|
||||
- Lookup tables and spec restatements
|
||||
- Output schemas, templates and example blocks
|
||||
@@ -76,6 +85,10 @@ The reference shape in this repo is `apm-workflow`: a **421-word body** dispatch
|
||||
words — cite 421 when calibrating a body, or the conflation this section warns against reappears
|
||||
in the finding itself.
|
||||
|
||||
Note its wiring: a three-column table (invocation, action, reference file) closed by one line,
|
||||
*"Read only the reference file matching the requested action."* That is the endorsed shape, and it
|
||||
is why the literal-conditional requirement above exempts a body that dispatches. Do not flag it.
|
||||
|
||||
## Gotchas sections
|
||||
|
||||
The highest-value construct in a body, and the easiest to fill with noise. A Gotcha must state a
|
||||
|
||||
Reference in New Issue
Block a user