Skip to content

fix(emit): name no template file in what the emitter builds (#2414) - #2415

Merged
braboj merged 4 commits into
mainfrom
fix/emit-dead-paths
Oct 30, 2026
Merged

braboj merged 4 commits into
mainfrom
fix/emit-dead-paths

Conversation

@braboj

@braboj braboj commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator

The emitter's skills and root file named template files that an emitted project doesn't carry, so the agent was sent to a file it can't open. This rewords those lines and adds a check so it can't come back.

What changed where

File Change
templates/core/review.md "the quality rules" in place of templates/core/quality.md
templates/core/docs.md Drops the pointer to templates/core/agents.md, which is not in every chain
templates/core/agents.md "the review rules" in place of templates/core/review.md
templates/core/quality-gates.md Two pointers name the section by its heading only
templates/backend/auth.md, edge.md The same, for security/security.md and backend/observability.md
tests/smoke/system.py, registry.py SYS-27: emit every root, with skills and inlined; fail on any template path
docs/tests/ SYS-27's spec and index row
docs/requirements.md FR-06-07 (emitted files name no template file)
AGENTS.md §2.4 rule: never name a template file's path in a template's prose
docs/architecture/08-… Regenerated word counts

Before and after

before: `templates/core/quality.md`, and any language quality template the
        project carries, is the standard for items 2 to 4.
after:  The quality rules, and any language quality rules the project
        carries, are the standard for items 2 to 4.

Checks

  • SYS-27 fails on main: 7 lines (2 with skills, 7 inlined)
  • SYS-27 passes here: 39 roots, both modes
  • Negative control: a scan that reads only templates/-prefixed paths misses the planted bare path
  • Smoke 39/39; conformance 8 passed, its 2 readings read (no off-limits path; the test changes are additions)
  • sync_docs.py --check, markdownlint, pyflakes, 88-column scan

Found by the solid-ai-benchmark round 5c skills arm, emitted at 9086e0ff. That round keeps its skills as emitted.

Closes #2414

🤖 Generated with Claude Code

https://claude.ai/code/session_01DpT5xPB8YTAMW2Msp4aPTX

braboj and others added 3 commits October 30, 2026 11:03
An emitted project carries the rules, not the templates, so a template's
path in an emitted skill or root file sent the agent to a file it cannot
open. Seven template lines named another template's file; each now names
the section by its heading, or drops the pointer where the file is not in
every chain. SYS-27 emits every root, with skills and inlined, and fails on
any line naming a template file; AGENTS.md states the authoring rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DpT5xPB8YTAMW2Msp4aPTX
Built together, an override one root carries can drop the section another
root names a template in, hiding the path. SYS-27 now builds every root
alone, in both modes, and a planted override case proves the combined
build hides a path the per-root build finds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DpT5xPB8YTAMW2Msp4aPTX
@braboj

braboj commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator Author

Addressed the P2 review finding in 7d0b12f: SYS-27 now emits each root on its own.

What Before After
Real roots one --emit of all 39 39 builds, each alone, with skills and inlined
Planted case one template naming its path twice plus a second root that overrides one of those sections
  • The planted override finds 1 path built together and 6 per root; the check asserts both.
  • On main's templates, it fails with 172 lines: 7 pointers across every root that carries them.
  • Builds run in memory through emit_context.build, so the check takes 8.5 s.
  • Smoke passes 39/39. sync_docs --check, pyflakes and markdownlint are clean.

@braboj
braboj merged commit 84f4bb5 into main Oct 30, 2026
14 checks passed
@braboj
braboj deleted the fix/emit-dead-paths branch October 30, 2026 11:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Emitted skills point to template files the project doesn't carry

1 participant