Repository navigation
docs(agents): move issue tracking to GitHub and resync AGENTS.md with the repo - #132
Merged
Merged
Conversation
Findings lived in markdown reports under untracked/, which cannot be assigned, linked to a PR, or closed by merging one. The 2026-08-06 review had accumulated three re-verification passes stamped inline and was still wrong: 13 of its 25 findings had been fixed by commits that landed after the last pass, including the one that pass called the largest open item. Records the workflow instead — search before filing, re-verify against the tree with dated evidence, label taxonomy, closing keywords, relationships over restated context. Upstream work moves from untracked/upstream/ drafts to issues with the upstream label. The prohibition on writing to external repos is widened from "file issues" to every write GitHub offers, and made explicit that approval is neither durable nor implied. The issue is a drafting workspace and a context anchor for dependents, not a permanent mirror: once filed upstream it is closed unless something here is still being iterated on. Assisted-by: Claude:claude-opus-5
Audited every instruction against the tree. Four were wrong or imprecise enough to mislead: npm ci does not install prettier. package.json carries cspell-cli and markdownlint-cli2 only; prettier comes from its own pre-commit hook, which manages a separate node environment. An agent reading the old line would expect npx to resolve prettier locally, and it only ever worked because npx falls back to the registry. poe check does not run tests — it is lint, sbom-check, spell-check and types. Listing it beside test without saying so invites "check passed" as a completeness claim. Parallelism is a CI-only flag. pytest-randomly shuffles everywhere, but --numprocesses auto and --reruns 2 are passed in ci.yaml, not in addopts, so local runs are serial and a process-sensitive test passes locally and fails in CI. project-words.txt must stay globally sorted, but poe update-project-words appends a sorted batch to the end rather than merging, so the file needs a re-sort after running it. Also splits the docs gate in two: mkdocs --strict catches broken internal links, while external ones are linkchecker via poe docs-check. Assisted-by: Claude:claude-opus-5
✅ Deploy Preview for tinydantic-preview ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Adopts the kernel's Assisted-by: convention (https://docs.kernel.org/process/coding-assistants.html) plus an ai-assisted label, so a reader can tell at a glance which findings came from an agent and which model produced them. Three details the format invites getting wrong, spelled out because both were live here: the brackets in AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2] mark optionality and are not typed; tools are named analysis utilities that produced evidence in the body, so an ad-hoc repro script does not qualify and most issues carry none; and a bracketed context-window suffix has to come off the model id, since claude-opus-5[1m] would read as the tool syntax. Also carries over the two rules that make the convention mean something. Agents must not add Signed-off-by anywhere — only a human can certify the DCO. And an agent-filed issue must say what it could not do: whether the repro was run, whether a fix was built or tested, what is still unverified. A report that reads as verified but is not costs a maintainer more than no report. Applied retroactively to #120-#131. Assisted-by: Claude:claude-opus-5
Prettier was the one formatter npm ci did not provide, so npx resolved it from the registry on every call and AGENTS.md had to explain the exception. It is now a dev dependency pinned exactly to the version its pre-commit hook uses — if that hook's rev moves, package.json moves with it, or the two disagree about formatting. Adds .prettierignore, which the repo never needed while prettier only ran from pre-commit on staged files. A bare npx prettier . walks everything, and prettier does not read .gitignore, so without it the newly-local binary reports 30 failures in agent scratch that nothing else in the toolchain checks. Requires poe test-matrix before pushing a PR. poe test proves one interpreter; CI runs 3.10 through 3.14 across three operating systems, and a version-specific break is much cheaper to find locally than in a red PR. Makes the upstream tracking issue mandatory rather than implied. The Conventions bullet read as though recording friction on the limitations page was the whole obligation, so it is rewritten to name both artifacts explicitly: the issue is the unit of work, the page is the durable explanation, and a registry row without a linked issue is incomplete. The requirement holds even when the decision is to carry the workaround indefinitely — whether anything ever reaches upstream is a separate maintainer call, so the "do not manufacture work for upstream maintainers" restraint no longer exempts friction we have chosen to work around. The limitations page said proposals are drafted in untracked/upstream/, which was retired earlier in this branch. Assisted-by: Claude:claude-opus-5
cdwilson
force-pushed
the
docs/agents-issue-workflow
branch
from
August 13, 2026 15:50
8c846fd to
956eba8
Compare
Backfills the requirement this branch introduced. The limitations page documented friction that had no issue behind it, so the page stated a rule its own entries did not satisfy. Eight issues now cover the seven limitation sections plus the one private-API use with no section of its own (no public export for ModelMetaclass). Granularity follows the friction, not the table rows: QueryInstance._hash belongs to the id-condition limitation that forces it, and Table._update_table to the update_many() gap, so neither private-API row gets an issue of its own. The issues are deliberately thin. They link to the docs section rather than restating it, because the page is the artifact that ships — versioned with mike, checked by strict mode, and written to be read standalone by an upstream maintainer, which makes it the ready-to-send proposal already. An issue body cannot be any of those, and nothing reviews it when the code it describes moves. What the issues carry instead is the part a page cannot: status, priority, relationships, and the decision about whether anything reaches upstream. Assisted-by: Claude:claude-opus-5
cdwilson
force-pushed
the
docs/agents-issue-workflow
branch
from
August 13, 2026 16:36
a30e1e0 to
a0c60af
Compare
An at-mention in an issue, comment, PR body, or commit message sends a real notification, and quoting does not suppress it: a draft inside a block quote still pulls the person in, and so does one under a heading that says "do not post". Draft collateral that sat inert in a git-ignored file for weeks became live the moment it was pasted into an issue, and notified an upstream maintainer about a reply nobody had approved sending. That is the same harm the upstream rules exist to prevent, reached by a route those rules did not cover — they governed writing to other repositories, not writing about other people in this one. The mitigation is to write the name without the at sign, or wrap the token in a code span, since GitHub does not create mentions inside code. Also records the milder neighbour, verified rather than assumed: referencing an upstream issue posts a visible cross-reference on their tracker. That is worth it for a genuine tracking link and this repo has always done it, so the guidance is to keep such references where they belong rather than to avoid them. And tightens the closing-keyword rule. A keyword fires on merge and will close an issue that someone has deliberately reopened, so it belongs only on issues the merge genuinely resolves. Assisted-by: Claude:claude-opus-5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Moves issue tracking to GitHub, then resyncs
AGENTS.mdwith what the repo actually does. Five commits, each independently reviewable.1. Track findings as GitHub issues (
1d56f82)Findings lived in markdown reports under
untracked/, which cannot be assigned, linked to a PR, or closed by merging one. The 2026-08-06 review had accumulated three re-verification passes stamped inline and was still wrong: 13 of its 25 findings had been fixed by commits that landed after the last pass — including H5, which that pass called "the largest open item in the review".The still-valid findings are now #120–#130. New
## Issues and reviewssection records: search open and closed issues before filing, re-verify against the tree with dated evidence, the label taxonomy (performance/api-design/polishcreated alongside), closing keywords, and relationships instead of restated context.New
### Upstream dependenciessubsection replaces the one-lineuntracked/upstream/rule:upstream-labelled issue is a drafting workspace and a context anchor for dependents, not a permanent mirror.2. Resync the rest of the file (
ca286a6)Audited every remaining instruction against the tree. Most held; four did not.
npm ciinstalls prettierpackage.jsonhadcspell-cliandmarkdownlint-cli2only, andnpxsilently fell back to the registry. Fixed for real in commit 4poe checkis the gatetestwithout saying so, it invites "check passed" as a completeness claim--numprocesses autoand--reruns 2are passed inci.yaml, not inaddopts. Local runs are serial, so a process-sensitive test passes locally and fails in CIproject-words.txtis case-insensitive sortedpoe update-project-wordsappends a sorted batch rather than merging, so the file needs a re-sort afterwardsAlso split the docs gate:
mkdocs --strictcatches broken internal links; external ones are linkchecker viapoe docs-check.3. AI attribution (
1601042)Adopts the kernel's
Assisted-by:convention plus anai-assistedlabel. Three details the format invites getting wrong are spelled out: the brackets inAGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]mark optionality and are not typed; tools are named analysis utilities that produced evidence, so an ad-hoc repro script does not qualify; and a bracketed context-window suffix must come off the model id, sinceclaude-opus-5[1m]would read as the tool syntax.Agents must not add
Signed-off-byanywhere — only a human can certify the DCO — and an agent-filed issue must say what it could not do.4. Install prettier, require
test-matrix, require upstream issues (956eba8).prettierignore: prettier does not read.gitignore, so without it the newly-local binary reports 30 failures in agent scratch that nothing else checks.poe test-matrixbefore pushing a PR.poe testproves one interpreter; CI runs 3.10–3.14 across three operating systems.5. Backfill the tracking issues (
a0c60af)The limitations page documented friction with no issue behind it — stating a rule its own entries did not satisfy. #133–#140 now cover the seven limitation sections plus the one private-API use with no section of its own.
Granularity follows the friction, not the table rows:
QueryInstance._hashbelongs to the id-condition limitation that forces it, andTable._update_tableto theupdate_many()gap, so neither private-API row gets its own issue.The issues are deliberately thin — they link to the docs section rather than restating it. The page is what ships (versioned with mike, gated by
--strict, written to be read standalone by an upstream maintainer, so it doubles as the ready-to-send proposal); an issue body is none of those and nothing reviews it when the code moves. The issues carry what a page cannot: status, priority, relationships, and the decision about whether anything reaches upstream.Verified:
poe test-matrix(3868 tests × Python 3.10–3.14),poe check(cspell 0, mypy clean, pyright 0 errors),poe docs-build --strict.Note: #131 (mkdocstrings friction) is deliberately not referenced by any closing keyword here — it is under maintainer review and this PR makes no decision about it.
🤖 Generated with Claude Code