Parent epic: #123 — [Epic K] Vendored Workflow Toolkit Adoption & Governance
User story
As a public reader of this repo's documentation, I want the links in tracked docs to resolve, so that I can follow a cited decision record instead of hitting a 404.
Motivation
This is a public CRAN package. Its docs are read by people who only have the GitHub web view — no clone, no local checkout. A growing number of tracked, publicly-visible files link into .github/vendored-decisions/, which .gitignore excludes. Those links 404 for every such reader.
The count is small now but grew during the sync in PR #117, and every future sync of the vendored toolkit will grow it further, because upstream docs cite ADRs freely.
Current pain
.gitignore (lines ~84–88) excludes the vendored tree:
.github/agents
.github/copilot-instructions.md
.github/skills
.github/VENDOR_MANIFEST.json
.github/vendored-decisions
Yet these tracked files link into .github/vendored-decisions/:
| File |
Refs |
Public? |
docs/decisions/README.md |
2 |
yes |
docs/playbooks/pick-up-stale-issue.md |
2 |
yes |
docs/playbooks/start-new-epic.md |
2 |
yes |
docs/requirements/commit-cadence-guidance.md |
3 |
yes |
docs/requirements/_template.md |
1 |
yes |
.github/copilot-instructions.md |
2 |
yes (tracked despite being gitignored — force-added) |
tests/meta/validate_closing_issue_preconditions.py |
1 |
yes (code path, not a link) |
Nine ADR files live in .github/vendored-decisions/ (ADR-0001 through ADR-0009); exactly one lives in tracked docs/decisions/ (ADR-0004-uds-crosswalk-internalization.md). So the overwhelming majority of the ADR corpus this repo's docs cite is invisible to the public. See the correction comment below for the full recount.
Two aggravating factors:
docs/decisions/README.md is the index. It is the one file whose entire job is pointing readers at decision records, and half its targets 404.
- ADR numbers collide across the two directories. The real, verified collision is ADR-0004:
docs/decisions/ADR-0004-uds-crosswalk-internalization.md and .github/vendored-decisions/ADR-0004-auto-filed-issue-protocol.md are different documents sharing a number, so a bare "ADR-0004" citation is ambiguous. (The ADR-0012 / ADR-0014 collisions originally described here do not exist — neither number is present in either directory. See the correction comment below.) (Filed upstream as pfizer-evgen/agentic-dev#397.)
Proposal
Pick one posture and apply it consistently:
A. Track .github/vendored-decisions/ (recommended). Remove it from .gitignore and commit the 11 ADRs. Links resolve; the public sees the decisions governing the workflow. Cost: +11 files of vendored content in the repo, needing .Rbuildignore coverage (^\.github$ is likely already excluded — verify) and re-committing on each sync. This is the only option that makes the citations correct rather than merely quiet.
B. Stop citing them from tracked docs. Replace every .github/vendored-decisions/... link in a tracked file with either plain text (per ADR-0007, not vendored here) or a link to the upstream repo. Cost: upstream is private, so an upstream link 404s for the public too — this option removes the broken links without giving the reader anything.
C. Track a generated index only. Keep the ADR bodies gitignored but commit a docs/decisions/vendored-index.md summarising each vendored ADR in a paragraph, and point tracked links there. Middle ground; adds a file that must be regenerated on sync.
Whichever is chosen, docs/decisions/README.md should state plainly which ADR directory is public and how the numbering works, and the collision between the two ADR-0012s / ADR-0014s should be called out for readers.
Note this interacts with the sync workflow: options A and C both create content that must be refreshed when bootstrap_repo/SKILL.md syncs, so whichever is picked should be recorded somewhere the next sync will see it.
Acceptance criteria
Out of scope
- Renumbering ADRs — numbers are immutable once accepted, and the vendored ones are not ours to renumber. Disambiguation, not renumbering.
- Changing what the other gitignored vendored directories (
.github/skills, .github/agents) do — those are not linked from tracked public docs and are genuinely internal tooling.
- Authoring new ADRs.
Codebase context
Definition of Ready (mini-checklist)
Parent epic: #123 — [Epic K] Vendored Workflow Toolkit Adoption & Governance
User story
As a public reader of this repo's documentation, I want the links in tracked docs to resolve, so that I can follow a cited decision record instead of hitting a 404.
Motivation
This is a public CRAN package. Its docs are read by people who only have the GitHub web view — no clone, no local checkout. A growing number of tracked, publicly-visible files link into
.github/vendored-decisions/, which.gitignoreexcludes. Those links 404 for every such reader.The count is small now but grew during the sync in PR #117, and every future sync of the vendored toolkit will grow it further, because upstream docs cite ADRs freely.
Current pain
.gitignore(lines ~84–88) excludes the vendored tree:Yet these tracked files link into
.github/vendored-decisions/:docs/decisions/README.mddocs/playbooks/pick-up-stale-issue.mddocs/playbooks/start-new-epic.mddocs/requirements/commit-cadence-guidance.mddocs/requirements/_template.md.github/copilot-instructions.mdtests/meta/validate_closing_issue_preconditions.pyNine ADR files live in
.github/vendored-decisions/(ADR-0001 through ADR-0009); exactly one lives in trackeddocs/decisions/(ADR-0004-uds-crosswalk-internalization.md). So the overwhelming majority of the ADR corpus this repo's docs cite is invisible to the public. See the correction comment below for the full recount.Two aggravating factors:
docs/decisions/README.mdis the index. It is the one file whose entire job is pointing readers at decision records, and half its targets 404.docs/decisions/ADR-0004-uds-crosswalk-internalization.mdand.github/vendored-decisions/ADR-0004-auto-filed-issue-protocol.mdare different documents sharing a number, so a bare "ADR-0004" citation is ambiguous. (The ADR-0012 / ADR-0014 collisions originally described here do not exist — neither number is present in either directory. See the correction comment below.) (Filed upstream aspfizer-evgen/agentic-dev#397.)Proposal
Pick one posture and apply it consistently:
A. Track
.github/vendored-decisions/(recommended). Remove it from.gitignoreand commit the 11 ADRs. Links resolve; the public sees the decisions governing the workflow. Cost: +11 files of vendored content in the repo, needing.Rbuildignorecoverage (^\.github$is likely already excluded — verify) and re-committing on each sync. This is the only option that makes the citations correct rather than merely quiet.B. Stop citing them from tracked docs. Replace every
.github/vendored-decisions/...link in a tracked file with either plain text (per ADR-0007, not vendored here) or a link to the upstream repo. Cost: upstream is private, so an upstream link 404s for the public too — this option removes the broken links without giving the reader anything.C. Track a generated index only. Keep the ADR bodies gitignored but commit a
docs/decisions/vendored-index.mdsummarising each vendored ADR in a paragraph, and point tracked links there. Middle ground; adds a file that must be regenerated on sync.Whichever is chosen,
docs/decisions/README.mdshould state plainly which ADR directory is public and how the numbering works, and the collision between the two ADR-0012s / ADR-0014s should be called out for readers.Note this interacts with the sync workflow: options A and C both create content that must be refreshed when
bootstrap_repo/SKILL.mdsyncs, so whichever is picked should be recorded somewhere the next sync will see it.Acceptance criteria
docs/decisions/README.mdexplains the two-directory ADR layout and its public/private split..Rbuildignorestill excludes the added files from the CRAN tarball — verify withR CMD buildthat no.mdfrom.github/ships.Out of scope
.github/skills,.github/agents) do — those are not linked from tracked public docs and are genuinely internal tooling.Codebase context
.gitignore,docs/decisions/README.md,docs/playbooks/{pick-up-stale-issue,start-new-epic}.md,docs/requirements/{commit-cadence-guidance,_template}.md,.github/copilot-instructions.md.pfizer-evgen/agentic-dev#397(ADR number collisions) and#391(vendored docs linking into commonly-gitignored dirs).Definition of Ready (mini-checklist)
standalone)