Skip to content

docs: mark admin-merge policy as transitional solo-owner state#101

Merged
constk merged 3 commits into
developfrom
docs/93-admin-merge-transitional
May 26, 2026
Merged

docs: mark admin-merge policy as transitional solo-owner state#101
constk merged 3 commits into
developfrom
docs/93-admin-merge-transitional

Conversation

@constk
Copy link
Copy Markdown
Owner

@constk constk commented May 25, 2026

What & why

The "Solo-owner merge policy" section in CONTRIBUTING.md accurately documented how merges work today, but read as standing policy. An external contributor scanning the doc could reasonably conclude the maintainer routinely bypasses their own gates.

This PR:

  • Adds a leading "Transitional" blockquote explicitly framing the section as a single-owner workaround, not a bypass.
  • Replaces the closing one-liner with a numbered exit checklist (4 changes that land in a single PR when a second collaborator is onboarded).
  • Keeps the actual merge command mechanics unchanged.

Closes #93.

Test plan

  • Visual diff only on CONTRIBUTING.md
  • Pre-commit hooks pass (mixed-line-ending auto-fix applied)

Invariants affected

None. The merge policy is operational, not invariant-tracked.

New deps / actions / external surface

None.

Linked issue

Closes #93

constk added a commit that referenced this pull request May 25, 2026
Code review on #101 pushed back on step 4 of the "When the exemption
ends" checklist: "Optionally flip enforce_admins to true". Leaving it
false in a 2-person setup keeps the admin-bypass door open even after
the single-owner workaround is no longer needed — which defeats the
point of having an exit checklist.

Drops "Optionally" and adds a one-line rationale so a future reader
understands why the flip is non-optional.

Refs #93
constk added a commit that referenced this pull request May 26, 2026
pip-audit on develop is flagging two transitive-dep CVEs:

- idna 3.13            CVE-2026-45409   (fix in 3.15+)
- starlette 1.0.0      PYSEC-2026-161   (fix in 1.0.1+)

Both are surfaced via fastapi/httpx. Bumps via:

    uv lock --upgrade-package idna --upgrade-package starlette

Resolves to idna 3.16 (3.15 was the listed fix; 3.16 is a further
patch with the same fix) and starlette 1.1.0 (minor bump; FastAPI is
compatible with it). All 192 unit tests pass on the upgraded lock.

Bumps the project self-version 0.2.10 -> 0.2.11 per
docs/DEVELOPMENT.md.

Unblocks the pip-audit CI gate on #99, #100, #101, #102 (and any
other PRs currently sitting on develop), all of which inherit the
flagged transitive CVEs from develop and cannot pass that gate until
this lands.
constk added a commit that referenced this pull request May 26, 2026
…sed post-#103/#104)

main moved ahead of develop on 2026-05-25 when PR #86 was merged
directly to main rather than via develop -> release flow. The
divergence is one squash commit (eff5b1c) carrying:

  - docs/BEADS.md (optional Beads issue-queue guidance)
  - .github/pull_request_template.md (Beads PR-template block)
  - .github/scripts/check_aspirational_tickets.py (PEP 758 reformat)
  - .github/scripts/check_pin_freshness.py / check_tests_present.py /
    check_version_bump.py (touch-ups)
  - .gitattributes / .gitignore (.beads/ ignore, Windows renormalise)
  - CONTRIBUTING.md (line-ending normalisation)
  - tests/test_scripts_compile.py (new CI-script compile gate)
  - docs/DEVELOPMENT.md / docs/HARNESS.md / docs/HARNESS_PRIMER.md
    cross-refs
  - pyproject.toml + uv.lock self-version 0.2.10 -> 0.2.11

This PR was rebased after #103 (CVE fix, develop -> 0.2.11) and
#104 (eval pattern examples, develop -> 0.2.12) merged. The version
on main (0.2.11) is now behind develop (0.2.12); the conflict is
resolved by bumping develop -> 0.2.13.

After this lands, develop is at 0.2.13 and contains everything main
has. Remaining in-flight PRs (#99, #100, #101, #105) need to rebase
to bump 0.2.13 -> 0.2.14 (and onward sequentially as they merge).

No behaviour change beyond what #86 already added to main.

# Conflicts:
#	pyproject.toml
#	uv.lock
constk added 3 commits May 26, 2026 15:28
The existing "Solo-owner merge policy" section accurately documented
how merges work today, but read as standing policy. From an external
contributor's perspective it could look like the maintainer routinely
bypasses their own gates.

Adds a leading "Transitional" blockquote framing this as a single-owner
workaround, not standing policy, and replaces the closing sentence with
a numbered exit checklist (drop --admin, remove the subsection, update
CODEOWNERS, optionally flip enforce_admins to true). All four changes
land together when a second collaborator is onboarded.

Mechanics of the merge command itself are unchanged.

Closes #93
Code review on #101 pushed back on step 4 of the "When the exemption
ends" checklist: "Optionally flip enforce_admins to true". Leaving it
false in a 2-person setup keeps the admin-bypass door open even after
the single-owner workaround is no longer needed — which defeats the
point of having an exit checklist.

Drops "Optionally" and adds a one-line rationale so a future reader
understands why the flip is non-optional.

Refs #93
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