Skip to content

[Tech Debt] Tracked public docs link into gitignored .github/vendored-decisions/, so those links 404 #119

Description

@chris-prener

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:

  1. 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.
  2. 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

  • A posture (A/B/C) is decided and recorded.
  • No tracked, publicly-rendered file contains a relative link that 404s on github.com.
  • docs/decisions/README.md explains the two-directory ADR layout and its public/private split.
  • The ADR-0012 and ADR-0014 number collisions are disambiguated for readers.
  • If option A: .Rbuildignore still excludes the added files from the CRAN tarball — verify with R CMD build that no .md from .github/ ships.
  • The chosen posture is noted where the next vendored sync will encounter it.

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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationpriority/mediumModerate impact, address as capacity allowstech-debtRefactoring, cleanup, robustness, scaling, or other internal-quality work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions