ward exec compose-bundles leaves a tree that pre-commit reads as this repository's own skills #800

Closed
opened 2026-08-15 15:30:04 +00:00 by coilyco-ops · 0 comments
Member

Split out of #788, where it blocked putting the role-drift gate in the test job.

Reproduce

ward exec compose-bundles
ward exec gate

Result, on an otherwise clean main:

75 documentation layout violation(s).
8 dead link(s).

Samples:

FAIL: agent/bundles/qa/content/skills/roster%3Acore/role-qa/SKILL.md: Markdown files may live
      only at repo root, docs/*.md, a skill folder, or a capped module README.md.
FAIL: agent/bundles/creator/content/skills/aos-public/personal-preferences/SKILL.md:14:
      dead link [Shows](../personal-preference-shows/COMPOSED.md) -> ...

Why the gitignore does not cover it

agent/bundles/ is gitignored, and the gate's intent-to-add pass honours --exclude-standard, so nothing marks these files. documentation-layout and dead-cross-links walk the filesystem rather than git's file list, so they find the baked tree anyway.

The dead links are real relative links inside upstream agent-compose sources. They resolve in the catalogue and do not resolve in a bundle, because a bundle only carries the skills its role admitted. So they are not fixable here, and they are not this repository's content in the first place.

What #788 did instead

ward exec role-drift-check bakes to a scratch directory outside the tree, precisely so the later pre-commit step in the test job stays green. That sidesteps the problem for the CI gate and leaves it standing for compose-bundles, which is the verb a human runs when they actually want the bundles on disk to inspect.

Options

  • Add agent/bundles to a [tool.agentic-os.*] exclude in pyproject.toml for the hooks that walk the filesystem. Needs the hooks to support a per-repo exclude for those two, which code-comments already does.
  • Have those hooks honour .gitignore. Wider blast radius, agentic-os change, and arguably the correct one since build output is never repository content.

The second is the real fix and belongs upstream in agentic-os. The first unblocks this repository.

Split out of #788, where it blocked putting the role-drift gate in the `test` job. ## Reproduce ```sh ward exec compose-bundles ward exec gate ``` Result, on an otherwise clean `main`: ``` 75 documentation layout violation(s). 8 dead link(s). ``` Samples: ``` FAIL: agent/bundles/qa/content/skills/roster%3Acore/role-qa/SKILL.md: Markdown files may live only at repo root, docs/*.md, a skill folder, or a capped module README.md. FAIL: agent/bundles/creator/content/skills/aos-public/personal-preferences/SKILL.md:14: dead link [Shows](../personal-preference-shows/COMPOSED.md) -> ... ``` ## Why the gitignore does not cover it `agent/bundles/` is gitignored, and the gate's intent-to-add pass honours `--exclude-standard`, so nothing marks these files. `documentation-layout` and `dead-cross-links` walk the filesystem rather than git's file list, so they find the baked tree anyway. The dead links are real relative links inside upstream `agent-compose` sources. They resolve in the catalogue and do not resolve in a bundle, because a bundle only carries the skills its role admitted. So they are not fixable here, and they are not this repository's content in the first place. ## What #788 did instead `ward exec role-drift-check` bakes to a scratch directory outside the tree, precisely so the later `pre-commit` step in the `test` job stays green. That sidesteps the problem for the CI gate and leaves it standing for `compose-bundles`, which is the verb a human runs when they actually want the bundles on disk to inspect. ## Options - Add `agent/bundles` to a `[tool.agentic-os.*]` exclude in `pyproject.toml` for the hooks that walk the filesystem. Needs the hooks to support a per-repo exclude for those two, which `code-comments` already does. - Have those hooks honour `.gitignore`. Wider blast radius, agentic-os change, and arguably the correct one since build output is never repository content. The second is the real fix and belongs upstream in agentic-os. The first unblocks this repository.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/sirens-echo#800
No description provided.