Skip to content

Re-review follow-ups: author-privilege tests, poller threshold, stale docs - #97

Merged
Deicyde merged 2 commits into
mainfrom
claude/rereview-followups
Oct 19, 2026
Merged

Deicyde merged 2 commits into
mainfrom
claude/rereview-followups

Conversation

@Deicyde

@Deicyde Deicyde commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Follow-ups from the re-reviews of #57, #65, #68, #75 and #83 (each PR's re-review comment has the evidence). Release-neutral: every touched file is neutral under site/ops/brain_release_authority.py.

Changes

  • Settle rule: recognise all 28 Mathlib maintainers; keep every tag in a conflict rebuild #57: the settle tests pin "no author privilege" again.
    • The rework removed the PR author from the shared pull() fixture (bot/test_poll.py). With no author, the declined carve-out passed every settle assertion. The fixture names Deicyde again.
    • Two new tests in bot/test_settle_gate.py cover the rest of the owner's rule. The author's approve does not beat a non-maintainer's reject, whether it came before or after (the tag recycles). The author counts toward the two reviewers, but does not stand in for a maintainer (the gate stays closed).
    • Main's code passes all of this unchanged; only the tests get stronger.
  • Poller: step timeouts so a hang fails the run; status.py --live alerts on timeouts and a missing bot-state branch #65: the timeout threshold matches the 60-minute job.
    • manage/status.py POLL_TIMEOUT_MINUTES goes from 25 to 55. Run durations start at startedAt, which includes queue time, so a cancelled run lasting 25 to 60 minutes is a dropped queued run or a manual cancel, not a timeout. The test's timed-out runs now last 61 to 65 minutes, with a 54.9-minute boundary.
    • The workflow's job comment now gives the exact August counts: 200 of 224 batch opens were cancelled in the refresh. Of the 24 that got past it, three were truncated refreshes (1.6 to 5.3 minutes), and the rest spent 19.5 to 29.5 minutes in the tick step (five then hit the job limit).
    • That comment and bot/README.md's timeout bullet now say those runs used Git 2.54. The runner's Git 2.55 fetches a lazy clone's missing blobs in bulk.
  • Release policy: AGENTS.md and CONTRIBUTING.md are release-neutral #68 and site/ops: the reducer's bot/state inputs are release-affecting #75: the policy text is accurate, and the tests have fewer blind spots.
    • The module docstring no longer says a new file is never silently neutral; a new file under a neutral directory is.
    • The Markdown comment now names NEUTRAL_FILES.
    • The inventory test checks one sample name per repository path_pattern input (for example site/annotations/xx.json).
    • The nightly-names test checks a sample child of each directory the nightly names (wiki/, site/assets, brain/authority/schemas). Before, it couldn't fail for directory entries.
  • Nightly: refuse curated inputs changed before the run; policy v2 #83: the operator docs say what now blocks Brain publishes.
    • site/ops/README.md, site/ops/nightly.local.env.example and bot/README.md now say that changing a curated input in the nightly's checkout blocks Brain publishes until it is committed. That covers a community-edge harvest and running bot/brain_queue.py or brain/harvest_community_edges.py.
    • bot/.gitignore says brain/build_cells.py reads pool_candidates.json.
    • The runbook's neutral list notes the site/test_frontier_page.py exception.

Testing

CI runs every touched test file through scripts/ci-python.sh. I didn't run them locally because machine load was above the agreed limit. I checked that every path-pattern sample is release-affecting under the current policy. This commit sits directly on main (905c6def).

… docs

From the re-reviews of #57, #65, #68, #75 and #83 on main:

- #57: the shared pull() fixture names the PR author again (Deicyde). With
  no author in it, the settle tests could not catch author privilege coming
  back: the declined carve-out passed every assertion. Two new tests pin the
  rest of the policy: the author's approve does not beat a non-maintainer's
  reject, and the author does not stand in for a maintainer in the gate.
- #65: POLL_TIMEOUT_MINUTES goes from 25 to 55. With a 60-minute job limit,
  a cancelled run of 25 to 60 minutes is a dropped queued run or a manual
  cancel, never a timeout. The workflow comment's August numbers become 200
  of 223 batch opens and 23 that got past the refresh (4.8-29.5 min), and it
  and the bot README's timeout bullet note that those runs used Git 2.54; the
  runner's Git 2.55 fetches a lazy clone's missing blobs in bulk.
- #68/#75: the policy docstring no longer claims a new file is never
  silently neutral (a new file under a neutral directory is), and the
  Markdown comment names NEUTRAL_FILES. The inventory test also checks one
  sample name per repository path_pattern input, and the nightly-names test
  checks a sample child of each directory the nightly names.
- #83: the operator docs say that a community-edge harvest, or running
  bot/brain_queue.py or brain/harvest_community_edges.py in the nightly's
  checkout, blocks Brain publishes until the change is committed;
  bot/.gitignore says build_cells.py reads pool_candidates.json; the runbook's
  neutral list notes the site/test_frontier_page.py exception.
…old wording

- The workflow comment's counts: 200 of 224 batch opens were cancelled in
  the refresh; of the 24 that got past it, three were truncated refreshes
  (1.6-5.3 min) and the rest took 19.5-29.5 min, five then hitting the job
  limit. Run 31555154529 (found 7 tagged QIDs) was missing from the count.
- The author-approve test also covers the author approving after the
  non-maintainer's reject, so "a later approve clears an objection" fails.
- status.py's comment says a 55-60 minute cancel may still be a dropped or
  manual run; the test's timed-out runs now last 61-65 minutes.
- bot/README: the nightly refuses only if the script actually changed the
  file.
@Deicyde

Deicyde commented Oct 19, 2026

Copy link
Copy Markdown
Owner Author

Recommendation: merge. An adversarial review of the first head found one inaccurate comment; it's fixed in 6af74369, and CI is green (13 settle tests, status 25/25, 10 policy tests).

  • Fixed: the workflow comment now gives the exact August counts. 200 of 224 batch opens were cancelled in the refresh. Of the 24 that got past it, three were truncated refreshes (1.6 to 5.3 min, including run 31555154529, which the first count missed), and the rest took 19.5 to 29.5 min.
  • Also applied:
    • the author-approve test covers the author approving after the non-maintainer's reject;
    • the status.py comment says a 55 to 60 minute cancel may still be a dropped or manual run, and the test's timeouts now last 61 to 65 minutes;
    • the bot/README sentence says the nightly refuses only if the script changed the file.
  • Verified by the review:
    • With the fixture's author restored, the declined carve-out fails 6 tests. Giving the author maintainer weight, letting their approve beat a reject, or letting them stand in for a maintainer each fails a new test.
    • No other bot test reads the PR's user.
    • 55 minutes fits startedAt-based durations under a 60-minute limit.
    • Every path-pattern sample and nightly-named directory is release-affecting.
    • All 12 touched files are release-neutral.

@Deicyde
Deicyde merged commit e38f3c6 into main Oct 19, 2026
4 checks passed
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