Skip to content

docs: retire future-considerations.md in favour of the issue tracker - #244

Merged
Syndic merged 4 commits into
mainfrom
claude/future-considerations-to-tracker
Aug 21, 2026
Merged

docs: retire future-considerations.md in favour of the issue tracker#244
Syndic merged 4 commits into
mainfrom
claude/future-considerations-to-tracker

Conversation

@Syndic

@Syndic Syndic commented Aug 20, 2026

Copy link
Copy Markdown
Owner

Retires docs/future-considerations.md, which had been serving as a manual tracker while the repo
had no real one. This is the first step of migrating from the ad-hoc organisation to the structure
#235 set up.

Why the file had to be split rather than moved

Its nine entries were four different kinds of thing wearing one name:

  • Settled decisions with rationale and enforcement already built (Introducing cgo,
    Python Purity Is Not Enforced).
  • Deferred work, some actionable today and some not.
  • Revisit triggers — precise watch conditions like "_create_whl_repos skipping
    requirements_files_by_platform() when uv_lock is present". These ride with their work item;
    they are not independent of what they unblock.
  • A research record: a dated trial against rules_python 2.2.0 establishing that its advertised
    uv.lock consistency check is not actually implemented. That finding stays true whether or not the
    work ever happens.

Where each went

Entry Now
Introducing cgo · Python Purity Is Not Enforced ADR-0001 (merged — one comparative decision)
Local Secret Management #238 ready-for-human
Python BUILD Generation (gazelle_python) #239 blocked
Drop requirements_lock.txt #240 blocked (carries the research record)
Renovate Custom-Manager Coverage #241 ready-for-agent
Docker / Kubernetes Extensions #242 blocked
Extract Git Plumbing Syndic/.dotfiles#119
CodeQL Alerts Do Not Gate Merges #243 blocked

The blocked label

New, and orthogonal to the five canonical triage roles rather than a sixth one — an issue keeps
its state role alongside it. ready-for-agent + blocked is the useful combination: the brief is
written, so the work is grabbable the moment the trigger fires.

The cost is that discovery queries must exclude it, or an agent picks up work it cannot finish.
docs/agents/issue-tracker.md now carries the query
(--label ready-for-agent --search "-label:blocked", verified to filter 6 issues down to the 2
unblocked ones) and docs/agents/triage-labels.md carries the meaning.

blocked covers both external gating (an upstream release) and internal gating (wanting to see how
a recent change behaves first). The **Trigger to revisit:** line in each issue body says which.
A planned label was considered for the internal case and deliberately deferred: with no
active-worklist concept for it to contrast with, it would land on every open issue and stop meaning
anything.

One change that isn't a doc reference

The commit-file-via-app selftest used docs/future-considerations.md as its "tracked,
deliberately never modified" fixture for the partial-diff case. That moves to
docs/reminder-tags.md. This is the one change CI has to prove — it needs the app credentials,
so it can't be validated locally.

Validation

  • bazel test //... — 23/23 pass, including test_check_no_cgo, whose assertion on the error
    message's pointer moved to the ADR.
  • pre-commit run --from-ref origin/main --to-ref HEAD — clean.
  • grep -rn future-considerations — no remaining references. The sweep found eight sites, five
    more than the two docs and one README link we knew about going in.

🤖 Generated with Claude Code

Syndic and others added 3 commits August 20, 2026 15:53
Merges the 'Introducing cgo' and 'Python Purity Is Not Enforced' entries
from docs/future-considerations.md into a single ADR: they are one
comparative decision, and the Python entry's rationale only reads against
the Go one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The file had been serving as a manual tracker while the repo had no real
one. Its nine entries were four different kinds of thing: settled
decisions, deferred work, revisit triggers, and one research record.
They now live where each kind belongs.

- Entries 2-3 (cgo, Python purity) became ADR-0001 in the previous commit.
- Entries 1, 4, 5, 6, 7, 9 became issues #238-#243, with each entry's
  'Trigger to revisit' line carried into the issue body and the trigger-
  gated ones labelled 'blocked'.
- Entry 8 (devcontainer git plumbing) became Syndic/.dotfiles#119, since
  the remaining work is entirely in that repo.

Eight in-repo references are repointed at the ADR or the issue that
replaced them. One is not a doc reference: the commit-file-via-app
selftest used the file as its 'tracked, deliberately never modified'
fixture for the partial-diff case, so that moves to docs/reminder-tags.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…covery

'blocked' is orthogonal to the five canonical triage roles rather than a
sixth one, so an issue keeps its state role alongside it. That preserves
information — ready-for-agent + blocked means the brief is written and the
work is grabbable the moment the trigger fires — at the cost of one thing
that must not be forgotten: discovery queries have to exclude it, or an
agent picks up work it cannot finish.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@Syndic Syndic left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review pass. Verified locally: meta/scripts/test_check_no_cgo.py is 22/22 green with the new ADR-path assertion, and the agent-grabbable query genuinely folds both filters (--label enhancement returns 6 issues; adding --search "-label:blocked" returns 2). UNCHANGED_PATH: docs/reminder-tags.md is a sound fixture — the file is tracked and the workflow never writes it, and even a PR that edited it would be safe since the scratch branch is cut from the checked-out commit.

Three inline findings below, plus one that has no diff line to attach to:


.github/workflows/ci.yml:278 — pointer to a section this PR deleted

# Python (`@pypi` wheel resolution is host-bound; see CLAUDE.md "Python Purity Is
# Not Enforced"). The matching runner also keeps test execution native: ...

The sweep grepped for the filename future-considerations, so it missed sites that cite the deleted file's section heading instead. "Python Purity Is Not Enforced" never existed in .claude/CLAUDE.md — it was docs/future-considerations.md's heading — and after this PR it exists nowhere: the content landed in ADR-0001 under "Enforce the same for Python — rejected". grep -rn "Python Purity Is Not Enforced" across the PR head returns zero hits.

Concretely: someone editing the platform matrix reads this comment, greps for the section, finds nothing, and the rationale for why each row's runner must match its target arch is unreachable from the only place that points at it. Suggest repointing to docs/adr/0001-go-builds-are-pure-python-is-not.md.

Worth a second sweep on heading text generally, not just the filename — that's the class of reference the current grep can't see.

Comment thread docs/agents/triage-labels.md
Comment thread docs/agents/triage-labels.md Outdated
Comment thread docs/adr/0001-go-builds-are-pure-python-is-not.md Outdated
Four findings from the review pass:

- ci.yml's platform-matrix comment cited the section heading 'Python Purity
  Is Not Enforced' (and attributed it to CLAUDE.md, where it never lived).
  The filename sweep missed it because the quoted heading wraps across two
  comment lines. Repointed at the ADR, and re-swept with the text reflowed
  so wrapped references are visible; nothing else stale.

- The four blocked issues carried no state role, contradicting the
  invariant this PR documents and leaving them unreachable by every
  discovery query — the silently-forgotten failure mode the section exists
  to prevent. #239 and #240 are now ready-for-agent, #242 and #243
  ready-for-human, on whether the work needs a judgement call when its
  trigger fires.

- The documented trigger marker was '**Trigger to revisit:**'; the issues
  use a '## Trigger to revisit' H2. Fixed the docs rather than four issue
  bodies.

- ADR-0001 attributed the gazelle_python blocker to the purity policy,
  where MODULE.bazel attributes it to the pinned Go SDK. MODULE.bazel is
  right: check_no_cgo.py walks go.work members and the plugin is a Bazel
  module, so the policy check never reaches it. The ADR now records that
  scope limit instead, and issue #239's body was corrected to match.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Syndic

Syndic commented Aug 21, 2026

Copy link
Copy Markdown
Owner Author

Re: the .github/workflows/ci.yml:278 finding, which had no diff line to attach to.

Confirmed, and the diagnosis about heading-vs-filename is exactly right — with a detail worth recording, because it explains why the original sweep could not have caught it. The reference wraps across two comment lines:

# Python (`@pypi` wheel resolution is host-bound; see CLAUDE.md "Python Purity Is
# Not Enforced"). The matching runner also keeps test execution native: BB

So grep -rn "Python Purity Is Not Enforced" returns zero hits on the pre-fix tree too. It is not that the sweep searched for the wrong string; a line-oriented grep is structurally blind to this one.

It was also wrong in a second way: it attributes the heading to CLAUDE.md, where that section never lived. It only ever existed in docs/future-considerations.md.

Fixed in ff5cef6, repointed at docs/adr/0001-go-builds-are-pure-python-is-not.md.

For the general case, I re-swept with every tracked file reflowed — comment markers (#, //, --, *) stripped and whitespace collapsed to single spaces — against all nine deleted section headings plus the filename. Three hits came back, all prose rather than pointers: the ADR's own "Introducing cgo later is a deliberate decision", the same phrase in check_no_cgo.py's docstring, and triage-labels.md's deliberate mention of the retired file as the reason the blocked-sweep exists. Nothing else stale.

@Syndic
Syndic merged commit 512e332 into main Aug 21, 2026
47 checks passed
@Syndic
Syndic deleted the claude/future-considerations-to-tracker branch August 21, 2026 02:20
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.

1 participant