Skip to content

Commit 9625d5f

Browse files
authored
Merge pull request #578 from leanprover/docs/record-standing-overhaul-authorization
Record standing overhaul authorization
2 parents 9627c03 + c91c6ca commit 9625d5f

2 files changed

Lines changed: 107 additions & 111 deletions

File tree

docs/overhaul-completion-plan.md

Lines changed: 40 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ Historical legacy-archive migration is not a launch gate for new submissions.
262262
- Complete one exact-version staging lifecycle from archive through accepted
263263
result, State, scheduled release, staging reconstruction, and rollback.
264264

265-
### 7.5 Human go/no-go
265+
### 7.5 Production launch readiness packet
266266

267267
Prepare a compact packet containing:
268268

@@ -276,15 +276,15 @@ Prepare a compact packet containing:
276276
- deferred functionality and known limitations; and
277277
- the issue-intake overlap announcement.
278278

279-
Production capability enablement requires one explicit maintainer go/no-go even
280-
when all preparation work is otherwise autonomous. The packet must make the
281-
release controller, lifecycle APIs, intake and production canary, and overlap
282-
announcement separately visible, but the maintainer may approve them together
283-
in one response.
279+
The maintainer's standing authorization in section 11 covers production
280+
capability enablement once this packet is complete. The packet must still make
281+
the release controller, lifecycle APIs, intake and production canary, and
282+
overlap announcement separately visible. Standing authorization does not waive
283+
any packet item, launch precondition, verification, pause, or rollback step.
284284

285285
## 8. Launch and overlap
286286

287-
After go/no-go, make capability changes separately:
287+
After the launch packet is complete, make capability changes separately:
288288

289289
1. enable the automatic release controller initially when no release is due;
290290
2. enable the approved lifecycle route families;
@@ -389,53 +389,43 @@ Autonomous implementation is allowed only in this LeanEval repository family:
389389

390390
Within that allowlist, agents may autonomously inspect, implement, test, create
391391
branches and pull requests, address review, merge after required checks, and
392-
run ordinary repository CI. They may also autonomously make reviewed,
393-
reversible infrastructure-boundary changes when all of the following are true:
394-
395-
- the change is confined to LeanEval-owned resources;
396-
- the operation does not enable, disable, or alter an effective live
397-
production capability or user-visible service;
398-
- the change cannot affect the old issue-intake path or an existing user;
399-
- it does not create, copy, replace, rotate, disclose, destroy, or widen the
400-
scope of persistent secret or key material;
401-
- it does not create, append, rewrite, or destroy irreversible canonical
402-
production data; and
403-
- a tested rollback or fail-closed recovery exists.
404-
405-
This includes isolated staging and qualification resources, disabled-state
406-
deployments, narrowly scoped role-trust repair, Wrap-only connection and
407-
synthetic preflight, and dedicated migration infrastructure while its consumer
408-
remains disabled. These operations may wire nonsecret identifiers and reviewed
409-
trust relationships or use short-lived workflow credentials for a closed
410-
synthetic/read-only check. They may not broaden permissions beyond the exact
411-
reviewed isolated consumer or copy, replace, or rotate persistent credentials.
412-
The mere fact that an operation uses AWS, Cloudflare, or a GitHub environment
413-
is not by itself a reason to interrupt the maintainer.
414-
415-
Explicit approval is required for:
416-
417-
1. any push, PR, issue, comment, review, reviewer request, or merge in a
418-
repository outside the allowlist;
419-
2. enabling production intake, replay, publication, or public owner/maintainer
420-
behavior, including the production canary and the public launch
421-
announcement;
422-
3. creating, copying, replacing, rotating, disclosing, destroying, or widening
423-
the scope of persistent secret or key material;
424-
4. an irreversible canonical production-data change, including the reviewed
425-
historical migration/replay program;
426-
5. retiring the old issue-intake path; and
427-
6. a material product-scope expansion.
392+
run ordinary repository CI.
393+
394+
Standing maintainer authorization, recorded on 2026-08-29, preapproves every
395+
remaining operation required by this completion plan. This includes
396+
infrastructure and protected-environment changes, credential creation or
397+
mutation, production capability enablement, production canaries, canonical
398+
data writes and migrations, issue-intake retirement, announcements, and
399+
external non-PR mutations. Do not interrupt the maintainer merely to renew
400+
permission for one of these in-scope operations.
401+
402+
Standing authorization satisfies permission, not readiness. Before each
403+
high-impact operation, complete the exact packet or checklist required by this
404+
plan and the runbook: bind targets, immutable inputs, scopes, user impact,
405+
preconditions, rollback or fail-closed recovery, and post-change verification.
406+
Keep changes single-purpose, preserve credential confidentiality, use the
407+
smallest sufficient authority, and stop rather than proceeding when a required
408+
precondition is false or the proposed action exceeds the reviewed packet.
409+
410+
Only these actions still require exact maintainer approval:
411+
412+
1. opening, updating, or merging a pull request in a repository outside the
413+
allowlist;
414+
2. posting a Zulip message or comment;
415+
3. posting a comment or review on another person's pull request; and
416+
4. any product-scope expansion beyond this completion plan.
417+
418+
External non-PR actions required by the accepted scope are covered by standing
419+
authorization, including issues, announcements outside Zulip, and bounded
420+
runtime identity-proof mutations. This does not authorize an external pull
421+
request or an unrelated external change.
428422

429423
An authenticated maintainer action needed because the agent lacks access is an
430424
operator handoff, not an approval gate. Present the reviewed command and its
431425
expected readback, but do not describe the maintainer's login as permission for
432-
an otherwise autonomous isolated change. A fail-closed capability disable or
433-
credential revocation that cannot enable anything or rewrite canonical data
434-
never waits for approval. Any other rollback must satisfy the same impact,
435-
credential, and data rules as its forward change.
436-
437-
No technical dependency is permission to work in an external repository.
438-
Prepare a local compatibility workaround or stop and request authority.
426+
an otherwise authorized change. Rollback and credential revocation remain
427+
subject to the same impact analysis, packet bounds, and verification as the
428+
forward change.
439429

440430
## 12. Recordkeeping policy
441431

docs/overhaul-execution-runbook.md

Lines changed: 67 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -35,43 +35,39 @@ Repository implementation, tests, PRs, review fixes, merges, ordinary CI, and
3535
automatic disabled-state deployments are autonomous in the repository family
3636
listed in completion-plan section 11.
3737

38-
Reviewed and reversible LeanEval infrastructure preparation is also autonomous
39-
when the operation does not alter an effective live production capability or
40-
user-visible service, existing users and old issue intake cannot be affected,
41-
no irreversible canonical production data is created, appended, rewritten, or
42-
destroyed, no persistent credential is created, copied, replaced, rotated,
43-
disclosed, destroyed, or scope-widened, and rollback is tested. This includes
44-
isolated Cloudflare qualification, staging enable/disable windows, narrowly
45-
scoped AWS trust repair, Wrap-only connection and synthetic preflight, and
46-
disabled migration infrastructure. Do not turn a missing local login into a
47-
permission question: prepare an operator handoff when authenticated execution
48-
is required.
38+
Standing maintainer authorization covers every remaining in-scope operation,
39+
including infrastructure, credentials, protected environments, production
40+
enablement, canonical data, issue-intake retirement, announcements, and
41+
external non-PR mutations. Complete the applicable impact packet, preconditions,
42+
tests, rollback, and post-change verification before acting; standing approval
43+
does not make an unready operation ready. Do not turn a missing local login
44+
into a permission question: prepare an operator handoff when authenticated
45+
execution is required.
4946

5047
Parallelize independent repository work and use build time productively. Do not
5148
sit polling one workflow while other in-scope tasks can advance.
5249

53-
### 3.2 Stop at these gates
50+
### 3.2 Standing authorization and remaining stop conditions
5451

55-
Obtain explicit maintainer approval before:
52+
Do not request repeated approval for an operation already covered by the
53+
standing authorization in completion-plan section 11. The production-launch,
54+
historical migration/replay, and issue-retirement packets remain mandatory
55+
readiness gates; complete and review them without waiting for another
56+
permission response.
5657

57-
- acting in any repository outside the allowlist; or
58-
- enabling production intake, replay, publication, public lifecycle APIs, or a
59-
production canary;
60-
- publishing the launch announcement that starts the old-intake overlap;
61-
- creating, copying, replacing, rotating, disclosing, destroying, or widening
62-
the scope of persistent secret or key material;
63-
- creating, appending, rewriting, or destroying irreversible canonical
64-
production data;
65-
- retiring old issue intake; or
58+
Stop for exact maintainer approval only before:
59+
60+
- opening, updating, or merging a pull request in a repository outside the
61+
allowlist;
62+
- posting a Zulip message or comment;
63+
- posting a comment or review on another person's pull request; or
6664
- expanding the completion-plan scope.
6765

68-
At a genuine approval gate, present the exact mutation, target, user impact,
69-
rollback, and read-only precondition. One coherent go/no-go may cover a
70-
declared production launch or historical replay program; do not split it into
71-
ceremonial approvals for each reversible implementation step. A fail-closed
72-
capability disable or credential revocation that cannot enable anything or
73-
rewrite canonical data proceeds immediately. Other rollback follows the same
74-
rules as its forward change.
66+
At any high-impact readiness gate, record the exact mutation, target, user
67+
impact, immutable inputs, rollback, and read-only precondition. A fail-closed
68+
capability disable or credential revocation may proceed immediately, but its
69+
impact and verification requirements are not waived. Other rollback follows
70+
the same rules as its forward change.
7571

7672
### 3.3 Keep changes reviewable
7773

@@ -192,8 +188,8 @@ in section 5.1 is a descendant of its contract pin.
192188
problem statements, and representative solution metadata.
193189

194190
Exit condition: current documentation states one coherent disabled baseline.
195-
Any mismatch becomes a separate repository fix or an approval-gated
196-
infrastructure correction.
191+
Any mismatch becomes a separate repository fix or a reviewed infrastructure
192+
correction under the standing authorization.
197193

198194
## 6. Phase 2 — repository launch preparation
199195

@@ -251,8 +247,8 @@ staging acceptance gate.
251247
contents-read Source Reader App, use a runtime-unique tag, and remove the
252248
branch/tag/App access after the terminal run.
253249
- [ ] Retain the exact secret-Gist proof because it binds the headless request
254-
to the individual GitHub login. Stop only for the exact runtime-generated
255-
Gist file CAS write/restore; do not request standing external authority.
250+
to the individual GitHub login. Apply only the exact runtime-generated
251+
Gist file CAS write/restore under standing authorization.
256252
- [x] Prepare one browser and one source-bound headless submission.
257253
- [x] Include one deliberate invalid or unauthorized case.
258254
- [x] Confirm archive-before-evaluation and schema-version-3 binding.
@@ -262,8 +258,8 @@ staging acceptance gate.
262258
final candidate.
263259
- [x] Prepare the rollback/disable steps for the same exact version.
264260

265-
Exit condition: repository changes and staging fixtures are ready; all external
266-
mutations remain unapplied until the next gate.
261+
Exit condition: repository changes and staging fixtures are ready; bounded
262+
external mutations occur only at their exact runtime step.
267263

268264
## 7. Autonomous credential-boundary preparation
269265

@@ -282,6 +278,9 @@ authority absent:
282278
Complete the production **Wrap-only** connection autonomously while intake
283279
remains disabled:
284280

281+
Current qualification: production Wrap-only preflight run `33245433960`
282+
completed successfully.
283+
285284
- [x] Connect repository environment
286285
`archive-production` variable `AWS_WRAP_ROLE_ARN` to
287286
`arn:aws:iam::161072922960:role/lean-eval-archive-wrap-production`.
@@ -309,9 +308,9 @@ release path has passed a credentialed staging boundary.
309308
Temporary staging feature flags and their all-false recovery are autonomous.
310309
Before the bounded run, tell the maintainer that the browser and headless
311310
canaries permanently add synthetic staging archives, Results, and append-only
312-
State events. The maintainer deliberately performs the browser submission and
313-
approves only the exact unavoidable secret-Gist CAS target for the headless
314-
identity proof.
311+
State events. The maintainer deliberately performs the browser submission as
312+
an operator handoff; the exact unavoidable secret-Gist CAS mutation for the
313+
headless identity proof is covered by standing authorization.
315314

316315
- [ ] Deploy the exact candidate version to staging through the normal
317316
protected path.
@@ -328,12 +327,13 @@ identity proof.
328327

329328
Do not rerun broad historical matrices merely to obtain newer timestamps.
330329

331-
## 9. Genuine approval gate — production launch
330+
## 9. Production launch readiness gate
332331

333-
Prepare one compact go/no-go packet specified by completion-plan section 7.5.
332+
Prepare the compact launch readiness packet specified by completion-plan
333+
section 7.5.
334334

335-
The packet must show these decisions separately, but they form one coherent
336-
launch go/no-go and may be approved in one response:
335+
Standing authorization for these operations is recorded in completion-plan
336+
section 11. The packet must still show these launch components separately:
337337

338338
- [ ] enable automatic release controller;
339339
- [ ] enable the approved public lifecycle APIs;
@@ -342,12 +342,13 @@ launch go/no-go and may be approved in one response:
342342
and
343343
- [ ] publish the overlap announcement.
344344

345-
No approval is implied by a green staging run. Ordinary preparatory changes do
346-
not consume or imply this user-impact approval.
345+
Do not launch until every packet item and precondition is satisfied. Standing
346+
authorization removes another permission interruption; it does not allow a
347+
green staging run to substitute for launch readiness.
347348

348349
## 10. Phase 4 — launch
349350

350-
After explicit approval:
351+
After the launch packet is complete:
351352

352353
### 10.1 Release controller
353354

@@ -368,7 +369,7 @@ After explicit approval:
368369
- [ ] Verify the exact active version, lease transition, durable state, and
369370
protected State coherence.
370371
- [ ] Submit one tightly controlled production canary only if it was part of
371-
the approved go/no-go packet.
372+
the reviewed launch packet.
372373
- [ ] Verify archive completion, evaluation dispatch, State, Result,
373374
leaderboard presentation, and release scheduling.
374375

@@ -432,36 +433,40 @@ terminal State dispositions.
432433
- [ ] Build/qualify only images used by replayable results.
433434
- [x] Qualify the final missing image from the retained baseline plan in an
434435
isolated replay-disabled Worker.
435-
- [ ] Commit and validate its generated qualification profile.
436+
- [x] Commit and validate its generated qualification profile. All 35 retained
437+
public profiles are frozen at
438+
`lean-eval-submissions@0bf88bf0e29c6f2abe8fe07aed1ab803ce98f2ec`.
436439

437440
### 12.3 Private archives
438441

439442
- [ ] Reconcile exact archive/result bindings and explicit orphans.
440443
- [ ] Prepare a dedicated migration Wrap role and exact OIDC trust.
441444
- [ ] Build and qualify only the exact private replay images used by the
442445
retained baseline inventory.
443-
- [ ] Prepare one immutable historical migration/replay go/no-go packet. Bind
446+
- [ ] Prepare one immutable historical migration/replay execution packet. Bind
444447
exact public/private queue and profile hashes, counts, State event IDs and
445448
digests, redacted projection, private rewrap inventory, controller lease
446449
and scopes, rollback, and exclusions. It must exclude legacy-key
447450
destruction, new external actions, and any item absent from those hashes.
448-
- [ ] Obtain one explicit approval for that exact canonical migration/replay
449-
program before installing the legacy identity or writing canonical
450-
archive envelopes or production State.
451+
- [ ] Bind execution to that exact reviewed packet before installing the legacy
452+
identity or writing canonical archive envelopes or production State.
453+
Standing authorization satisfies permission but not this packet gate.
451454
- [ ] Have the custodian install `LEGACY_ARCHIVE_IDENTITY` directly for the
452-
bounded approved run without exposing its value in chat, files, logs, or
453-
artifacts.
455+
bounded packet-bound run without exposing its value in chat, files, logs,
456+
or artifacts.
454457
- [ ] Rewrap recoverable archives without changing ciphertext archive bytes or
455458
stable IDs.
456459
- [ ] Verify and remove temporary authority and plaintext.
457460
- [ ] Keep every legacy identity copy until the final issue-intake delta is
458-
closed; obtain explicit approval before irreversible destruction.
461+
closed; destroy it only after the documented cutoff, reconciliation, and
462+
recovery checks are complete.
459463

460464
### 12.4 Replay
461465

462466
- [ ] Enable production replay and append canonical dispositions only within
463-
the exact immutable program approved in section 12.3. A later final delta
464-
outside its hashes requires a new exact packet.
467+
the exact immutable packet reviewed in section 12.3. A later final delta
468+
outside its hashes requires a new exact packet, not another permission
469+
response.
465470
- [ ] Serialize or otherwise bound replay according to the existing controller.
466471
- [ ] Restore exact original source, benchmark, toolchain, comparator,
467472
lean4export, and nanoda pins.
@@ -497,8 +502,9 @@ No experimental checker or promotion work may be added to close this phase.
497502
- [ ] Confirm no unresolved severity-high incident.
498503
- [ ] Confirm adequate adoption and stable end-to-end operation.
499504
- [ ] Confirm the final historical cutoff/delta is recorded.
500-
- [ ] Obtain one explicit closure decision because this removes the path used
501-
by existing issue-intake users.
505+
- [ ] Complete the issue-retirement readiness packet because this removes the
506+
path used by existing issue-intake users. Standing authorization covers
507+
closure only after every preceding gate is satisfied.
502508
- [ ] Close issue intake in a single-purpose repository change.
503509
- [ ] Verify the server path remains available and documented.
504510

@@ -533,9 +539,9 @@ Update this table in place; do not append a history beneath it.
533539
| 2. Repository launch preparation | In progress | Complete the exact-version bounded lifecycle rehearsal |
534540
| Credential boundary | Staging and production Wrap-only complete; release trust pending | Complete the autonomous release-trust repair/preflight through an authenticated operator handoff |
535541
| 3. Final staging acceptance | In progress | Complete only the missing final-candidate lifecycle cases, then return every gate to disabled |
536-
| Production launch go/no-go | Not ready | Finish the exact final staging packet and current launch readbacks |
537-
| 4. Launch | Not started | One production launch go/no-go |
542+
| Production launch readiness | Standing approval recorded; packet incomplete | Finish the exact final staging packet and current launch readbacks |
543+
| 4. Launch | Not started | Complete the production launch packet |
538544
| 5. Four-week overlap | Not started | Production launch |
539-
| 6. Historical completion | In progress | Finish baseline profiles and private rewrap preparation; production replay and canonical dispositions wait for one exact go/no-go; final delta waits for cutoff |
545+
| 6. Historical completion | In progress | Prepare the private rewrap and exact immutable execution packet; production replay and canonical dispositions wait for packet readiness, and the final delta waits for cutoff |
540546
| 7. Remaining product completion | In progress | Only issue closure remains, waiting for overlap and final delta; catalog lifecycle cutover, open-problems, and editorial work are complete |
541547
| Final audit | Not started | All phases |

0 commit comments

Comments
 (0)