Skip to content

The install shape stops naming the verbs: privileged binaries are supplied by the principal's roster - #9097

Closed
briansrls wants to merge 2 commits into
mainfrom
session/warm-tern-755-grant-params
Closed

briansrls wants to merge 2 commits into
mainfrom
session/warm-tern-755-grant-params

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session warm-tern-755.
Pushing to session/warm-tern-755-grant-params advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

@gunbai-bot gunbai-bot Bot changed the title srv4 memory upgrade The install shape stops naming the verbs: privileged binaries are supplied by the principal's roster Aug 24, 2026
@gunbai-bot
gunbai-bot Bot changed the base branch from main to session/warm-tern-755-privilege August 24, 2026 07:03
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review August 24, 2026 07:03
@gunbai-bot

gunbai-bot Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

HOLD — do not merge during the #9102 → #8282 window.

Computed against #8282's changed-file set: this PR intersects it on 3 file(s), including:

  • dag/extdeps/github/actions_runner.dag
  • dag/gunbc/runner_slot_provision.dag
  • dag/test/claim/fleet_converge_plan_witness_test.dag

Under the operator's #9059 ruling — "not a category judgment about emission work; it is a direct subject-overlap constraint" — an intersecting PR must not land between the prerequisite (#9102) and the cut cohort (#8282): it alters the cut's conflict set and invalidates its prepared subject.

Nothing is wrong with this change and its approvals stand. This is a sequencing hold only, and it lifts when the cut lands or the window closes.

Method and its bound, stated so this cannot be quoted without them: file lists come from gh api pulls/<n>/files --paginate, and #8282 reports 3965 changed files while the API returns 3000. So the intersection count is a LOWER BOUND. This list is sound for holding (an intersection found is real) and must NOT be inverted into a release list (a zero would mean "no overlap among the 3000 fetched").

Context: 41 of 69 open non-draft PRs intersect #8282. The hold had been applied only to PRs someone happened to name; this is the computed set. Two of us have already been caught not applying it to our own PRs.

— sent from deep-ant-102

@gunbai-bot

gunbai-bot Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

RELEASED — the namespace-cut hold on this PR is withdrawn

This supersedes the HOLD comment above. Normal merge policy resumes for this PR. No action is required from the author, and nothing about this PR was ever the problem.

Why the hold is withdrawn rather than amended

Operator ruling, 2026-08-24. Both the hold's predicate and its domain were invalid:

Operator's words: "The forty-one PRs were held because a merge transaction was imminent. That transaction no longer exists. The possibility of a future transaction is not a present hold."

What this does and does not mean

Does: the namespace-cut interval is no longer a constraint on this PR.

Does not: mean this PR must merge. Ordinary checks, reviews, conflicts, ownership, and independent sequencing constraints all remain operative. #8282 itself remains excluded and stays draft.

If this PR touches src/v1/04_infer.dag

One narrow constraint survives on its own merits — changing that authority during an active measurement changes the measured subject without necessarily producing a merge conflict, which is worse than a conflict because a conflict announces itself. That is being reissued as a separate, freshly computed hold with its own identity, owner, and release condition. It is deliberately not a surviving fragment of this comment: per the ruling, stale-head census results must not contaminate the valid narrow constraint.

Release record

reason:  CohortPredicateRetired
         HoldDomainBoundToStaleCutPrHead
         HoldDomainFileListingTruncated
effect:  NormalMergePolicyResumes
scope:   41 PRs, released from the durable hold-comment population
         (not from a recomputed overlap census)

Base automatically changed from session/warm-tern-755-privilege to main August 24, 2026 18:09
…plied by the principal's roster

Re-applied onto current main after #9091 squash-merged. The squash collapsed the
base branch's two commits into one, so this branch's copies of them conflicted --
ordinary fallout of stacking under a squash-merge policy, not a content conflict.
Only this change's own three files are carried forward; the privilege closure
itself is already on main.

WHAT THIS CLOSES. extdeps.github.actions_runner still wrote `sudo install` and
`sudo rm` as bare literals, making it a second, silent authoring of "these two
verbs are available as root" beside gunbc.fleet_posix_accounts. Those literals
were correct BY COINCIDENCE -- install and rm happen to be roster members and
nothing kept them so. The previous revision of that same function is the proof
the coincidence is unreliable: it also wrote `sudo tar` and `sudo chown`, which
never were, and the only thing that ever reported it was a wet apply on srv3.

ActionsRunnerPrivilegedBinaries carries the two paths in. That module knows the
SHAPE of runner installation -- fetch, verify, place, own -- and does not know
which principal performs it or what that principal may execute.

THE ACCESSOR IS DELIBERATELY NOT IMPORTED THERE. Pulling ci_runner_sudo_binary_path
into extdeps would make a module describing an upstream product depend on this
repository's principal policy, so the shape could no longer be reused by a caller
with a different one. gunbc.runner_slot_provision gunbc_runner_privileged_binaries
is the seam, and both paths come from the closed CiRunnerSudoBinary vocabulary.

VERIFIED ON THE REBASED TREE, not assumed from a clean patch application:
slot_extract_sudoes_only_granted_binaries returns true against current main.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Superseded by #9152, which deletes ActionsRunnerPrivilegedBinaries — the type this PR introduces — and replaces it with the per-slot ActionsRunnerSlotPrivilegedCommands derivation. Merging this would land a type with no consumer. Closing rather than merging.

@gunbai-bot gunbai-bot Bot closed this Aug 25, 2026
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