Repository navigation
docs(config-cascade): add Implementers rows for the source-control and work-items YAML team layers #7196
Description
Problem
docs/conventions/config-cascade/README.md "Implementers" (line 525) is the registry of tracked consumer config. Two surfaces that #7009 touches have no Implementers row for their docs/conventions/*.yaml layer:
docs/conventions/source-control.yaml, keypr_open_state(schemaplugins/source-control/schemas/source-control.schema.json:10; resolution order inplugins/source-control/reference/config-resolution.md:157-164). The existingsource-controlrow (line 541) lists only.claude/source-control.md.docs/conventions/work-items.yaml, the triage keystriage_repro_countandtriage_objection_window_hours(schemaplugins/work-items/schemas/work-items.schema.json:10-16; read by/work-items:triageonly,plugins/work-items/skills/triage/SKILL.md:137-138). The existingwork-itemsrows (lines 553-554) list only.work-item-tracker.jsonand.github/recurring-schedule.json. The file itself is not tracked in this repository yet, so the row records a layer that is absent here.
The registry does not say who reads or writes these files, which layers apply, or whether they conform.
Validator check (scripts/validate-plugin-contracts.mjs:108-110,126-160,228): a plugin named in a backticked token of an Implementers row's first column is treated as owning tracked consumer config, and its setup skill may not use the check-only carve-out. source-control and work-items are already in the table, so new rows change no validator result. Both setup skills already offer apply (plugins/source-control/skills/setup/SKILL.md:3, plugins/work-items/skills/setup/SKILL.md:3). Neither apply writes the new YAML files today (neither setup SKILL.md mentions docs/conventions/source-control.yaml or docs/conventions/work-items.yaml), so a row that claimed a setup writer would run ahead of the code. The rows must say the file is hand-edited until setup gains a write step.
Fix
Add one Implementers row for each file, in the existing row shape (path, layers, who wins, merge form, conformance, keys, reader, writer). For source-control, pr_open_state resolves per config-resolution.md:157-164 (argument, userConfig, then team YAML; an unknown value never opens a PR ready). For work-items, the team layer beats the plugin's userConfig (schema description). If the rows change the generated semantics table, edit it to match; CI's --check step verifies it, and add Root-rule-by-surface entries if the readers anchor differently.
Done when
- The Implementers table has a row for
docs/conventions/source-control.yaml(pr_open_state) and one fordocs/conventions/work-items.yaml(triage keys), each stating reader, writer, layers and conformance as they stand onmain. - If the rows change the generated semantics table, the table is edited by hand to match.
- CI's
check-pluginsjob (which runsscripts/validate-plugin-contracts.mjs) andlint-repojob (which runsscripts/sync-config-cascade-semantics.py --check) pass on the PR (a PR check; this run does not run it).
Refs: #7009
Activity
github-actions commentedon Oct 11, 2026
Thanks for the report. As I understand it, two YAML files that #7009 introduced consumer-config layers for —
docs/conventions/source-control.yaml(keypr_open_state) anddocs/conventions/work-items.yaml(triage keys) — have no row in the Implementers table atdocs/conventions/config-cascade/README.md, so the registry doesn't record their reader, writer, layers, or conformance. The fix is scoped clearly: add one row per file in the existing shape, noting the file is hand-edited until each plugin's setup skill gains a write step, then runscripts/sync-config-cascade-semantics.pyif the generated table changes, and keepscripts/validate-plugin-contracts.mjspassing. I didn't find an existing open issue duplicating this exact gap. Nothing else appears missing from the report.Automated triage. A maintainer reviews it.
kyle-sexton commentedon Oct 13, 2026
Owner batch-ratified this admission in an attended session on 2026-10-12: work-class: scoped. Rule: class C1-C3, no trust surface, the independent check confirmed the recorded decision, and no owner step remains.
kyle-sexton commentedon Oct 17, 2026