From 7e80c09b13a1d37c85f49e113f98f1743ca2beb0 Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Sun, 30 Aug 2026 15:07:16 +0000 Subject: [PATCH] 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 --- plugins/gitea/.apm/skills/gitea-workflow/SKILL.md | 6 +----- plugins/gitea/skills/gitea-workflow/SKILL.md | 6 +----- .../skill-audit/references/body-discipline.md | 15 ++++++++++++++- .../skill-audit/references/body-discipline.md | 15 ++++++++++++++- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/plugins/gitea/.apm/skills/gitea-workflow/SKILL.md b/plugins/gitea/.apm/skills/gitea-workflow/SKILL.md index eeee87b..c92c473 100644 --- a/plugins/gitea/.apm/skills/gitea-workflow/SKILL.md +++ b/plugins/gitea/.apm/skills/gitea-workflow/SKILL.md @@ -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 diff --git a/plugins/gitea/skills/gitea-workflow/SKILL.md b/plugins/gitea/skills/gitea-workflow/SKILL.md index eeee87b..c92c473 100644 --- a/plugins/gitea/skills/gitea-workflow/SKILL.md +++ b/plugins/gitea/skills/gitea-workflow/SKILL.md @@ -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 diff --git a/plugins/kyberforge/.apm/skills/skill-audit/references/body-discipline.md b/plugins/kyberforge/.apm/skills/skill-audit/references/body-discipline.md index 45430d2..0fa7971 100644 --- a/plugins/kyberforge/.apm/skills/skill-audit/references/body-discipline.md +++ b/plugins/kyberforge/.apm/skills/skill-audit/references/body-discipline.md @@ -31,7 +31,16 @@ Include content the agent lacks: Move to `references/`, behind an explicit "If X, read `references/.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 diff --git a/plugins/kyberforge/skills/skill-audit/references/body-discipline.md b/plugins/kyberforge/skills/skill-audit/references/body-discipline.md index 45430d2..0fa7971 100644 --- a/plugins/kyberforge/skills/skill-audit/references/body-discipline.md +++ b/plugins/kyberforge/skills/skill-audit/references/body-discipline.md @@ -31,7 +31,16 @@ Include content the agent lacks: Move to `references/`, behind an explicit "If X, read `references/.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