Skip to content

docs: retire planning/ and the doc validators, route deferred work to GitHub Issues - #25

Merged
lesnik512 merged 2 commits into
mainfrom
retire-planning-directory
Sep 6, 2026
Merged

docs: retire planning/ and the doc validators, route deferred work to GitHub Issues#25
lesnik512 merged 2 commits into
mainfrom
retire-planning-directory

Conversation

@lesnik512

@lesnik512 lesnik512 commented Sep 6, 2026

Copy link
Copy Markdown
Member

Summary

AGENTS.md stated the PR-body-as-spec convention while, in the same file, keeping
the convention it replaces: deferred work to planning/deferred/, validated by
just check-planning as a merge gate. The convention is explicit that exactly two
things outlive a PR — an ADR in docs/adr/ and a GitHub issue. planning/deferred/
was the third state it says does not exist, and chat-app was the only repo in the
org still running one.

This completes the migration modern-di #439 did, and finishes what #14 started
when it deleted the PR template that stated the planning/deferred/ route.

Closes modern-python/.github#70

Changes

  • Nine deferred items become issues Litestar channels: subscriber orphaned on mid-subscribe disconnect #16Presence beyond a TTL key #24, labelled needs-triage and nothing
    else, so each gets re-decided rather than inherited unexamined. Bodies are the
    files verbatim, ## Why it is open and ## Revisit trigger included; the
    summary: frontmatter is the opening sentence; relative links become absolute
    GitHub URLs, since a relative path does not resolve in an issue body. Litestar channels: empty channel entries retained after unsubscribe #17 and Litestar channels: subscriber orphaned on mid-subscribe disconnect #16
    cross-reference each other.
  • planning/ is deleteddeferred/, index.py, README.md, _templates/,
    .convention-version. just index and just check-planning go with it, along
    with the planning/index.py --check CI step.
  • docs/agents/issue-tracker.md flips from .scratch/ markdown to GitHub.
    Routing deferred work to "a GitHub issue" while the repo's own tracker doc says
    issues live as gitignored files is the same half-migration this PR exists to end.
    Adapted from modern-di's copy, including the GitHub translation of the
    /wayfinder protocol.
  • The five canonical triage roles become real labels. triage-labels.md claimed
    its right-hand column held "the actual label strings used in this repo's issue
    tracker"; only wontfix existed. A Status: line in a Markdown file needs no
    registration, a label does, so gh issue edit --add-label "ready-for-agent" would
    have failed. needs-triage, needs-info, ready-for-agent and ready-for-human
    created, matching modern-di's colours and descriptions.
  • AGENTS.md: the Workflow section now states the two-homes rule and routes
    unscheduled work to a GitHub issue. planning/README.md's Where a fact goes
    table and admission check move here rather than dying with the file —
    docs/adr/README.md linked at that anchor, and it now resolves within the repo.
    The Commands section drops the deleted recipes, and the triage-labels entry stops
    describing a Status: line in issue files that no longer exist.
  • Backfills: ADR 0006 → Message id existence is distinguishable via 404-vs-403 #21, ADR 0014 → Logout does not revoke the JWT #20, docs/adr/README.md
    AGENTS.md#where-a-fact-goes. pyproject.toml's coverage omit drops every
    non-app/ entry, because no Python outside app/, tests/ and migrations/
    survives this PR.

Both doc validators are deleted — a deliberate deviation from #70

#70 lists just check-links and just check-adrs under Keep, and gives
reasoning for the second: it is "the only mechanical enforcement of the ADR revisit
trigger anywhere in the org." Both are deleted here anyway, on the maintainer's
call. Recorded rather than buried, because it is the part of this PR the issue
argues against:

  • planning/links.py + just check-links + its CI step. The checker existed to
    guard architecture/ and planning/ — trees a site builder does not publish and
    this repo no longer has. It was run one final time against the finished tree
    (links: OK) before deletion, which is what verifies the four hand-rewritten
    cross-references.
  • docs/adr/check.py + just check-adrs + its CI step. docs/adr/README.md no
    longer claims the set is validated, and its ## Revisit trigger section no longer
    claims to be "enforced" — that word was true only while the checker existed.

Consequence, stated plainly: the repo now has no mechanical gate on any
Markdown. A broken relative link, a duplicate ADR number, an ADR shipped without a
revisit trigger, and a stale cross-reference are all merge-clean from here. The lint
job is ruff and ty alone. The standard in docs/adr/README.md is now held up by
review, and the README says so.

Non-goals

  • Triaging the nine issues. They land as needs-triage; several are strong
    wontfix candidates on their own text, and a wontfix writes an ADR. Triage-time
    judgement, not a migration decision.
  • Re-deciding any migrated item's technical content.
  • A deferred label or an issue template. A repo-local .github/ISSUE_TEMPLATE/
    would suppress the org's inherited templates.
  • Documenting the retired concept. Nothing about deferred goes into
    docs/agents/issue-tracker.md.

The point, not a side effect: after this the repo has no concept of deferred work.
An item is an open issue, or an ADR recording why it will not be done. The nine
surviving ## Revisit trigger sections are prose carried along for the reader and
establish no convention.

Verification

No new tests: this PR creates issues and edits Markdown, TOML comments, a justfile
and a workflow, and deletes two checkers.

  • links.py --root . against the final tree, immediately before deleting it —
    the gate here. Every reference that pointed into planning/ either resolves
    or is gone. links: OK. Re-run against the tree after the ADR-checker commit:
    still OK.
  • eof-fixer, ruff format, ruff check --no-fix, ty check — all clean.
  • just test — 110 passed, 100% line coverage, on both commits. Unaffected, as
    expected: no test read planning/ or docs/adr/check.py.
  • git grep -E "check-planning|check-links|check-adrs|just index|planning" returns
    nothing outside uv.lock; git ls-files '*.py' outside app/, tests/ and
    migrations/ returns nothing.

Checklist

  • Lint and format pass (ruff)
  • Type check passes (ty)
  • Tests pass and new behavior is covered
  • Build succeeds (uv build) if packaging or build config changed — n/a, no packaging change
  • Repo metadata stays consistent across the three surfaces — n/a, does not touch packaging

The nine items in planning/deferred/ become issues #16-#24, labelled
needs-triage. Bodies are the files verbatim; the summary frontmatter is
the opening sentence and relative links become absolute GitHub URLs.

docs/agents/issue-tracker.md flips from local .scratch/ markdown to
GitHub, so the tracker AGENTS.md now routes deferred work to is the one
the repo documents. The five canonical triage roles become real labels
rather than a Status: line in a file that no longer exists.

links.py and just check-links go with planning/, on the same reasoning
that retires the directory: the checker existed to guard a tree the
repo no longer has.

Closes modern-python/.github#70
check.py, `just check-adrs` and the CI step go. docs/adr/README.md no
longer claims the set is validated or the revisit trigger enforced: a
reviewer is what holds the standard up now.

With links.py already gone the repo has no doc validators, so the
coverage omit list drops its last non-app entry and the lint job is
ruff and ty alone.
@lesnik512 lesnik512 changed the title docs: retire planning/ and route deferred work to GitHub Issues docs: retire planning/ and the doc validators, route deferred work to GitHub Issues Sep 6, 2026
@lesnik512
lesnik512 merged commit d3ae6ed into main Sep 6, 2026
3 checks passed
@lesnik512
lesnik512 deleted the retire-planning-directory branch September 6, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chat-app is half-migrated: the PR body is the spec, but planning/ is still a merge gate

1 participant