catalog-trifecta requires a fourth member that ward#1660 deletes, and umbra is already red on it #1101

Open
opened 2026-08-16 06:57:17 +00:00 by coilyco-ops · 0 comments
Member

catalog-trifecta requires a fourth member that coilyco-flight-deck/ward #1660 is deleting. When repos drop .ward/ward.yaml, three checks fail in every catalog repo at once.

Split out of #1081, which I closed as superseded. That issue asked where the catalog block should move. It does not move, it is deleted, and check_catalog_block retires with it. This is the piece that does not retire, because catalog-trifecta is about documentation cross-links rather than about the catalog block.

What breaks

check_catalog_trifecta.py treats the file as an existence-only fourth member:

# Existence-only fourth member: the ward command spec.
CATALOG_YAMLS = (Path(".ward/ward.yaml"),)

Two independent failures once the file is gone:

  • check_catalog_yaml returns "catalog yaml missing. Every catalog repo needs .ward/ward.yaml."
  • check_md_file still demands a resolving link, because link_target = catalog_yaml or CATALOG_YAMLS[0] falls back to the missing path. README, AGENTS, and docs/FEATURES.md each fail, so one deleted file produces four violations per repo.

This is already happening, in one repo

coilyco-flight-deck/umbra has no .ward/ward.yaml and is the only repo in the fleet already in the post-#1660 state.

It wires both hooks with no opt-out. Its pyproject.toml carries only [tool.agentic-os.repo-pointer-skills], so neither catalog-trifecta nor catalog-block-present is disabled. Its README See also links AGENTS.md and docs/FEATURES.md and nothing else.

It pins rev: v0.65.0, and I checked that tag: it already had CATALOG_YAMLS = (Path(".ward/ward.yaml"),) and the block hook's "no catalog config found" fail. So umbra is red on both hooks today, not merely at the next rev bump. Current is aos-v0.212.0.

That makes umbra the working preview of what 32 repos hit after #1660.

The name is the answer

It is called catalog-trifecta. Three files: README, AGENTS, FEATURES. The fourth member was an add-on that never fit the name, and it is the only part being deleted.

So the likely change is drop the fourth member entirely and let the hook check what it is named for. resolve_catalog_yaml, check_catalog_yaml, and the link_target fallback all go with it.

Two weaker alternatives, recorded so they are considered rather than skipped:

  • Point it at the justfile. A justfile is not documentation and carries no catalog block, so a required See-also link to it is a cross-link convention applied to a build file. It also reintroduces exactly the coupling #1660 is removing.
  • Point it at wherever the catalog block lands. Only viable if the block lands anywhere, and #1660's reading is that it does not.

Sequencing

Behind #1660, not ahead of it. While ward still reads catalog.dependsOn at agent launch the file has to exist, so removing the requirement early would let a repo delete a file ward still needs.

Exception worth considering: umbra is already broken, so the fix could land early for that one repo alone, or umbra could be exempted until the sweep.

Scope

Fleet-wide once #1660 lands. From my sweep on that issue: 32 of 33 repos ship .ward/ward.yaml today, and each carries three See-also links to it that go dead together.

Filed by Lucia (AI Engineer seat) at Kai's direction.

`catalog-trifecta` requires a fourth member that `coilyco-flight-deck/ward` #1660 is deleting. When repos drop `.ward/ward.yaml`, three checks fail in every catalog repo at once. Split out of #1081, which I closed as superseded. That issue asked where the catalog block should move. It does not move, it is deleted, and `check_catalog_block` retires with it. **This is the piece that does not retire**, because `catalog-trifecta` is about documentation cross-links rather than about the catalog block. ## What breaks `check_catalog_trifecta.py` treats the file as an existence-only fourth member: ```python # Existence-only fourth member: the ward command spec. CATALOG_YAMLS = (Path(".ward/ward.yaml"),) ``` Two independent failures once the file is gone: * `check_catalog_yaml` returns *"catalog yaml missing. Every catalog repo needs .ward/ward.yaml."* * `check_md_file` still demands a resolving link, because `link_target = catalog_yaml or CATALOG_YAMLS[0]` falls back to the missing path. **README, AGENTS, and docs/FEATURES.md each fail**, so one deleted file produces four violations per repo. ## This is already happening, in one repo `coilyco-flight-deck/umbra` has **no `.ward/ward.yaml`** and is the only repo in the fleet already in the post-#1660 state. It wires both hooks with no opt-out. Its `pyproject.toml` carries only `[tool.agentic-os.repo-pointer-skills]`, so neither `catalog-trifecta` nor `catalog-block-present` is disabled. Its README `See also` links `AGENTS.md` and `docs/FEATURES.md` and nothing else. It pins `rev: v0.65.0`, and I checked that tag: it already had `CATALOG_YAMLS = (Path(".ward/ward.yaml"),)` and the block hook's *"no catalog config found"* fail. So **umbra is red on both hooks today**, not merely at the next rev bump. Current is `aos-v0.212.0`. That makes umbra the working preview of what 32 repos hit after #1660. ## The name is the answer It is called **catalog-trifecta**. Three files: README, AGENTS, FEATURES. The fourth member was an add-on that never fit the name, and it is the only part being deleted. So the likely change is **drop the fourth member entirely** and let the hook check what it is named for. `resolve_catalog_yaml`, `check_catalog_yaml`, and the `link_target` fallback all go with it. Two weaker alternatives, recorded so they are considered rather than skipped: * **Point it at the justfile.** A justfile is not documentation and carries no catalog block, so a required See-also link to it is a cross-link convention applied to a build file. It also reintroduces exactly the coupling #1660 is removing. * **Point it at wherever the catalog block lands.** Only viable if the block lands anywhere, and #1660's reading is that it does not. ## Sequencing **Behind #1660, not ahead of it.** While ward still reads `catalog.dependsOn` at agent launch the file has to exist, so removing the requirement early would let a repo delete a file ward still needs. Exception worth considering: umbra is already broken, so the fix could land early for that one repo alone, or umbra could be exempted until the sweep. ## Scope Fleet-wide once #1660 lands. From my sweep on that issue: 32 of 33 repos ship `.ward/ward.yaml` today, and each carries three See-also links to it that go dead together. Filed by Lucia (AI Engineer seat) at Kai's direction.
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-flight-deck/agentic-os#1101
No description provided.