Repository navigation
merge: sync upstream Cotal main into rigel-release (RIG-5440) - #83
Merged
Merged
Conversation
…rate-1009 feat(auth): issue run authority to eligible managed seats
…ol-upstream-1009 feat(manager)!: add explicit pooled no-execution control
fix(manager): enforce owned persona visibility before spawn
…-acceptance-1009 test(connector): verify managed agents drive owned workflows
…d endpoint helper (Cotal-AI#3521) Closes Cotal-AI#2917
…eds removal fails Closes Cotal-AI#2967
chore(release): version packages
… one in place (Cotal-AI#3566) Closes Cotal-AI#3149
chore(release): version packages
Version packages to 0.82.0 and refresh the committed plugin bundles.
Resolves 54 conflicts. Upstream's version wins unless a Rigel change must survive on top: custody, the pty runtime, the fork CI and connector work. The deleted workflows and design records stay deleted. Two gates that are red on upstream main are quarantined (smoke:mutation-fixtures and smoke:required-arg-seam). omp and zellij move to 0.82.0 with the rest of the fixed release group. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
Keeps the push trigger on rigel-release in ci.yml. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
orphan-seat-reap and orphan-seat-spawn-window die on the in-process pty runtime; web-echo-escaping, instrument-instance-pin, manager-reconcile-startup and manager-restart-live are red on upstream main; up-tls-routes flaked once. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…440) continueSession refuses blank values like resume. omp declares prompt support and arms events with launchArmsEvents. zellij answers startup prompts with confirmWatch and refuses pre-launch with SpawnRefused. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…5440) Each confirm read or keypress ran several zellij calls with a 1s timeout each, so one action could block the manager for seconds and start a client after its budget. Calls now share one absolute deadline; a bounded attach refuses to start a client past it and kills the one it started on failure. Tests cover the deadline, the client cleanup and a blank final confirm. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
dm-targets' fake endpoint gains upstream's presenceView and unicastAttributed. seat-exit-cause, sys-rotation-e2e and the schema direct-engine diagnostic are red on pristine upstream main, so they are quarantined. managed-retire-door:auth moves from the frozen suite list to a fragment, as the shard-stability gate requires. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…ds (RIG-5440) Upstream deleted smoke:web-probe-target mid-file, which re-shards every suite below it. Its line and a skip-only script are restored, so no frozen index moves. Quarantined, all red on pristine upstream main 8ca93e9: - smoke:user-auth-launch:live (2 spawn-beyond-grant cells) - smoke:claude-hosted-presence and smoke:claude-hosted-types (no sentinel) - smoke:transport-liveness:broker (never exits after its cells) Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…ds (RIG-5440) The sync brings back eight upstream docs/design files that upstream code cites. The docs-voice gate never scanned that directory upstream; our removal of the exemption made it fail on upstream text. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…440) Each fails the same way on pristine upstream 8ca93e9 and on the sync head (local runs): presence-render-census, manager-caller-transport, claude-workspace-trust, orphan-seat-rollback, runtime-mesh-turn, manager-stop-spare-guard, delivery-explicit-space. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
A local run of every live CI suite on the sync head found these red, and each is red the same way on pristine upstream 8ca93e9. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
A sync selects about 300 fixtures and runs out of the 130-minute shard budget. The plan job now emits no shards for the sync branch, so the gate passes on an empty plan; the daily --all sweep grades the result. Refs RIG-5497 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…IG-5497) Refs RIG-5497 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…5440) It timed out on #83 CI run 38978458326 and passes 3/3 locally on the merge and on pristine upstream; the file is byte-identical to upstream. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
The suffix glob let any PR whose branch ended in rig-5440-upstream-sync skip changed-fixture reproof. Match the exact branch, and require the PR head to live in this repository so a fork PR cannot use it. Refs RIG-5497 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigel-mintaka
marked this pull request as ready for review
October 17, 2026 05:14
Author
agents lane review at f1db329Scope: the 11 commits after the review-fix commit Verdict: clean. No findings.
Checks at this head: 18 pass, 5 skipped. The only red is |
…ync (RIG-5440) Custody wins every conflicting hunk. Upstream smokes that assert a numeric pid/pgid reap (custody-exit-proof, seat reap-group-identity) are quarantined, unchanged; reap-group-identity moves to its own suite so seat-lifecycle stays gated. Upstream smokes now build CustodialPtyRuntime with an options object, and the custody fail-closed fake answers the lifecycleMemberships inventory verb. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…RIG-5440) Upstream Cotal-AI#2351 made the default pty runtime spawn in-process on Linux, which drops the fork's custody contract and failed spawn-action M3 (the self-exited seat's custodian never existed to settle). createRuntime returns CustodialPtyRuntime on Linux again; the in-process PtyRuntime serves other platforms. The attach smoke and the pty docs match. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…5440) freeslot-barrier:live expects a static orphan with no custody reference to retire, and up-stack:live expects an in-process pty seat to die with the manager. Fork seats are custodied and an unproven reap is refused, so both fail by contract. Quarantined unchanged; up-stack gets its own continue-on-error step. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…-5440) Upstream's deprovision now reads the lifecycle's memberships through requestDeliveryAdmin. seat-release and custody-fail-closed fake the manager endpoint without it, so every release refused as members-remain. Both now use the shared zero-membership double. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…stody (RIG-5440) Review of the custody merge found behaviour the resolution dropped: - Restart and resume record an unreserved runtime's reference once the seat exists, and stop the replacement through its handle if that fails, so a successor cannot retire a live seat by its old reference. - The custodian discards launch artifacts when a launch is refused before any child exists. spawnPinned marks provable no-fork errors with NoChildStarted; any other throw keeps the files. - The seat mutation keeps its afterRestore build, and lifecycle restores the custody-compatible dead-leader-grandchild cells. - The attach pty cell runs in a temp seat root and reaps its seat. - The unreachable PtyRuntime adapter is removed. - Docs and comments describe the Linux custodied pty, cgroup-only reap proof, and records kept until release. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
…exits (RIG-5440) Record an unreserved restart replacement before awaiting readiness, prove its exit before freeing the slot on failure, and prove a resume predecessor gone before overwriting its reference. Free launch artifacts on pre-spawn and recognized pre-fork failures; scope the attach pty cell to a temp root; stop documenting an unreachable drained state for cotal seats. Refs RIG-5440 Spec-impact: none Co-authored-by: Matt Wilkinson <matt@rigel.build>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This is the first sync of upstream Cotal
main(8ca93e96) intorigel-release(0f396e1a), per Matt's ruling on RIG-5440. It must land as a merge commit, as earlier fork syncs did, so thatmainstays an ancestor and the next sync merges only new commits.rigel-releaseCI triggers, concurrency and apparmor sysctlchangesets.yml,windows.yml, and the three design records indocs/design/. Design records do not go in code repos.statusRevisionfix inconnector-core/agent.tsis replaced by upstream's ordered presence updates. Its revision-only cell is removed fromturn-intake(39 cells, measured).&& !abortedcheck inpi/driver.tscan no longer be reached.continueSession(--continue) and upstream'sreopenSession(manifestcontinuity: exact). Each has a separate trigger.dm-targets.smoke.tsnow usespeer?.card.Quarantined (Matt: hard-disable flaky or broken upstream tests, do not fix them)
smoke:mutation-fixtures: 91 dead anchors on pristine upstreammain.smoke:required-arg-seam: upstream call-site pins are stale (247/193 found against 229/179 pinned), and thetlssite incontrol-target.tscannot be checked.smoke:orphan-seat-reap,smoke:orphan-seat-spawn-window: upstream's in-process pty runtime gives no custody reference, so both crash onready.reference.id.smoke:web-echo-escaping,smoke:instrument-instance-pin: fail on pristine upstreammainlocally (1/29 and 2/61 cells).smoke:manager-reconcile-startup,smoke:manager-restart-live: red on upstreammainCI (runs 38756147210, 38753177566).smoke:up-tls-routes:delivery-refresh-keeps-tlsfailed once on this PR; passes locally on the merge and onmain.smoke:seat-exit-cause,smoke:sys-rotation-e2e: fail on pristine upstreammainlocally.The schema direct-engine diagnostic
unitstep: fails on pristine upstreammain; it now runs withcontinue-on-errorand aLIVE_QUARANTINEDentry.smoke:user-auth-launch:live: two foreground-spawn-beyond-grant cells fail on pristine upstreammainlocally.smoke:claude-hosted-presence,smoke:claude-hosted-types: new upstream suites that exit 0 without aCOTAL_SMOKE_SENTINEL, so the shard grades them failed.smoke:transport-liveness:broker: passes its cells, then never exits on pristine upstreammain(it hit the 60-minute shard limit on CI).Shards stop at their first red, so CI showed only a few at a time. A local run of every live CI suite on the sync head then found 17 more, each red on pristine upstream
8ca93e96:presence-render-census,manager-caller-transport,claude-workspace-trust,orphan-seat-rollback,runtime-mesh-turn,manager-stop-spare-guard,delivery-explicit-space,claude-hosted-session,cli-on-instance,legacy-packaged-manager,mint-provision:auth,mutation-metadata,mutation-reproof,orphan-seat-succession,remote-manager-goal-reader,suite-ambient-env-self,up-refresh-identity:live.Mutation reproof does not run on this branch (RIG-5497): a sync selects about 300 fixtures and runs out of the 130-minute budget. The daily
--allsweep gradesrigel-releaseafter the merge.check:docs-voicegets back upstream'sdocs/designexemption, because the sync reintroduces eight upstream design records that upstream code cites.AGENTS.mdrecords the rule so it is not asked again: broken upstream tests are disabled, and our own are fixed.Review fixes
Review83 (review-lead) found four resolution gaps. Each fix has a test that fails without it:
continueSessionnow refuses a blank value, likeresume(manager cluster revision 28).supportsPromptand arms events throughlaunchArmsEvents.confirmWatch, refuses before launch withSpawnRefused, and gives each confirm action one shared deadline.CI fixes:
dm-targets' fake endpoint gains upstream'spresenceViewandunicastAttributed.smoke:managed-retire-door:authmoves from the frozenci-suites.txtinto a fragment, as the shard-stability gate requires. Upstream deletedsmoke:web-probe-targetfrom the middle of the frozen list (3808751), which re-shards every suite below it. Its line comes back with a skip-only script, so the frozen list matchesrigel-releaseexactly (437 entries, 0 indices moved).A second merge brings in
rigel-release87f09fc (#81, #82). It keeps therigel-releasepush trigger inci.yml.Custody stack merge (
b0f572fa,6a08beea,7304d0e3)A third merge (
b0f572fa) brings inrigel-release68a148c5, the RIG-4320 custody stack (#69–#76). Custody wins every conflicting hunk, per Matt's ruling.6a08beea: upstream fix(manager): stop starting a seat custodian for default pty spawns on Linux Cotal-AI/Cotal#2351 made the default pty runtime spawn in-process on Linux, which dropped the custodian. CI caught it asspawn-actionM3.createRuntime("pty")returnsCustodialPtyRuntimeon Linux again. Theattachsmoke and the pty docs match.CustodialPtyRuntimewith{ root }. Thecustody-fail-closedfake endpoint answers thelifecycleMembershipsinventory verb.smoke:custody-exit-proofandsmoke:seat-reap-group-identity: numeric pid/pgid reap.reap-group-identitymoves out ofsmoke:seat-lifecycleand the seattestscript into its own suite, so lifecycle stays gated.smoke:freeslot-barrier:live(7304d0e3): expects a static orphan with no custody reference to retire; custody refuses an unproven reap. 7 cells fail locally.smoke:up-stack:live(7304d0e3): expects an in-process pty seat to die with the manager on Ctrl-C. It gets its owncontinue-on-errorstep and aLIVE_QUARANTINEDentry. 2 cells fail locally.6a08beea/7304d0e3: typecheck,pnpm test,check:docsbundle,gate-inventorypass; smokesmanager-spawn-action,manager-spawn-action-auth,attach,custodial-pty,custody-fail-closed,manager-reconcile-redrive,cli-kernel,flag-inventory,mesh-attach,console-attach,seat-lifecycle,seat-orphan,manager-service-invokepass.Verification (local)
pnpm testpasses.gate-inventoryOK,ci-suites25/0,flag-inventory443/443,package-test-contract89/0,launch-parity54/54,workflow-concurrency29/0.Notes
mainmirror bookmark before submitting. Nothing was deleted on the remote.Refs RIG-5440
Approved-at: 8adfa45