Skip to content

docs: AGENTS.md names docs/template-drift.md as the record of deliberate differences from the template - #111

Merged
TzuH-Hsu merged 3 commits into
mainfrom
docs/105-template-drift-pointer
Sep 29, 2026
Merged

TzuH-Hsu merged 3 commits into
mainfrom
docs/105-template-drift-pointer

Conversation

@TzuH-Hsu

@TzuH-Hsu TzuH-Hsu commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

Summary

Adopters who keep kit files in sync need one list of where they deliberately differ from the template and why, so a sync doesn't overwrite a local decision. Six downstream repositories now keep that list in docs/template-drift.md. The rule "update the list in the PR that adds a deviation" lived only inside that file, though, where an agent starting from AGENTS.md never reads it. Adding a pointer to their own AGENTS.md would itself be a deviation.

  • AGENTS.md (Build and validation): if this repository deliberately differs from the template, record each difference in docs/template-drift.md (the file, what differs, why) and update it in the PR that adds or removes one. A template sync preserves what the list names. The template itself has no such file.
  • docs/template/upgrading.md, step 4: the drift list, if you keep one, is the list of what to preserve.

The file is optional and the template ships none. The line only matters after an adopter creates the file.

Related issue

Closes #105

Validation

Pick validation depth by blast radius. A level that applies but could not run becomes a RISK: line below. See AGENTS.md for the validation ladder.

  • L0 static — make lint
  • L1 unit — make check (skills index and AGENTS.md references still resolve)
  • L2 integration — not applicable, prose
  • L3 e2e / preview — not applicable

Risk / rollback

Rollback: revert this PR; one paragraph in AGENTS.md and one sentence in the upgrade guide

Checklist

Before merging:

  • Conventional Commit PR title (<type>: <description>)
  • Linked issue using "Closes #N"
  • No secrets, no *.local.md files committed
  • Documentation updated where affected

…ate differences from the template

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@TzuH-Hsu TzuH-Hsu added the area:docs Documentation and guides label Sep 28, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6c7da38960

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/template/upgrading.md Outdated
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-28T16:45:20.555726Z 41dc5b3 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 46d0469170

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/template/upgrading.md Outdated
…of restating it

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@TzuH-Hsu TzuH-Hsu added this to the v0.6.0 milestone Sep 29, 2026
@TzuH-Hsu
TzuH-Hsu merged commit a2d2e19 into main Sep 29, 2026
1 check passed
@TzuH-Hsu
TzuH-Hsu deleted the docs/105-template-drift-pointer branch September 29, 2026 06:56
TzuH-Hsu added a commit that referenced this pull request Sep 29, 2026
… Markdown (#113)

<!-- markdownlint-disable-next-line MD041 -->
## Summary

`scripts/pr-lint.js` decided which issues a PR closes by re-implementing
CommonMark block parsing. Nine review rounds on #96 still left it
disagreeing with GitHub whenever containers nest, and three more simple
cases turned up after v0.5.7. GitHub already exposes the ground truth:
the pull request's `closingIssuesReferences` field, read with
`excludeUserLinked: true` so it lists exactly the issues the body
closes, with keywords in prose as GitHub renders them.

- `run()` reads that field over GraphQL. `lint()` checks the result:
exactly one issue, in this repository, the branch's, and still open.
Branch grammar and the bot exemptions are unchanged.
- The Markdown scanner and its tests are gone (−260 lines net).
- **The field lags a body edit.** I measured this by editing a PR body
and polling: 1–9 s. The lint therefore reads until two reads 5 s apart
agree, at most five times. Typical cost is one extra read and a 5 s
wait.
- Because the lint reads live state, "Re-run jobs" now re-checks the
current body. The `ci.yml` comment that said it replays the old payload
is corrected.
- Messages follow GitHub's semantics. A number that is a pull request,
or a deleted issue, now shows up as "closes no issue", because GitHub
closes nothing for it.

**Checking GitHub against CommonMark.** I put the three cases deferred
to this issue into an open PR's body and read the field:

| Body | GitHub | CommonMark | v0.5.7 scanner |
| --- | --- | --- | --- |
| `Heading\n=======\n Closes #104` | not closed | not closed | closed |
| `- ```\n  Closes #104\n  ```` | not closed | not closed | closed |
| `- item\n > quote\n # heading\n\n Closes #107` | closed | closed | not
closed |

**Sidebar links do not count.** Adding or removing an issue link in the
PR's sidebar fires no `pull_request` event, so accepting it would let a
green check go stale; the lint reads only what the body closes, and
AGENTS.md step 4, `skills/pr-authoring` rule 5 and the architecture
ledger say so. Before the first read, the lint also waits until the
triggering edit is 15 s old, so two agreeing reads cannot both be stale.

**Downstream:** the kit's `pr-lint.js` and `pr-lint.test.js` change
shape completely; adopters replace both files whole. The workflow step
is unchanged, and so are the job permissions: `issues: read` and
`pull-requests: read` were already there.

## Related issue

Closes #104

## Validation

Pick validation depth by blast radius. A level that applies but could
not run becomes a `RISK:` line below. See AGENTS.md for the validation
ladder.

- [x] L0 static — `make lint`
- [x] L1 unit — `make check` (`scripts/pr-lint.test.js`, 14 pass: lint
rules, settle logic with a lagging and a flapping field, `run()` with a
GraphQL stub, 403 and other failures)
- [x] L2 integration — the real query through `closingRefs()` against
live PRs here: #111 → [105], #112 → [107], #91 → [88, CLOSED], release
PR #94 → []
- [x] L3 e2e / preview — this PR's own `ci` run executes the new lint
against this PR

## Risk / rollback

```text
RISK: L2 not run on a private repository — GraphQL under the ci job's issues/pull-requests read scopes is expected to work as the REST read did, but is untested; the first private adopter run will show it, and a refusal fails the check with the scopes named
Rollback: revert this PR; the Markdown scanner returns
```

## Checklist

Before merging:

- [x] Conventional Commit PR title (`<type>: <description>`)
- [x] Linked issue using "Closes #N"
- [x] No secrets, no `*.local.md` files committed
- [x] Documentation updated where affected

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:docs Documentation and guides

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Task: AGENTS.md names docs/template-drift.md as the place adopters record deliberate deviations from the template

1 participant