Repository navigation
Conversation
Keep the last-check limit explicit: an object-store pointer write that passed its check before archive can still finish afterward. Retain deterministic Git tests and the original limitation documentation. Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Codex <noreply@openai.com> Signed-off-by: Gil Birman <gil@squareup.com>
This was referenced Nov 3, 2026
gilgtm
force-pushed
the
gil/nexus-4111-guarded-task-lifecycle
branch
from
November 3, 2026 15:01
c924969 to
b69763b
Compare
gilgtm
changed the base branch from
main
to
gil/nexus-4111-archive-write-gates
November 3, 2026 15:03
This branch has not been deployed
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
Check channel archive state again immediately before a relay-hosted Git push or default-branch pointer compare-and-swap. Preserve the specific archived refusal and deterministic tests around the last check.
This is the final layer of the native stack split from this PR's former combined diff. The prerequisite PRs own the lifecycle API/schema (#8994) and shared channel write gates (#8995). Their tests remain with those implementations.
This is a last check, not a strict object-storage fence. A pointer write whose check passed before archive can still land afterward. The S3 timeout budget is not a server-side guarantee. Repository announcements remain ungated. The documentation retains those limits.
This is the top of the separate guarded lifecycle stack. The planned client-only Solo Workspace and local cache adoption above block/buzz-app#1507 does not require these new relay changes. Keep the stack and its host/plugin companions preserved as drafts. The bottom layer #8994 still has an unresolved hosted Relay E2E failure.
Related issue
NEXUS-4111, design NEXUS-4092. Companion drafts: block/buzz-app#2112 and squareup/buzz-nexus#172. The original #8909 discussion is preserved on this final layer.
Testing
On split head
b69763b8c, all relay targets compile, 140 Git unit tests pass, and all 10 MinIO integration tests pass (four push tests and six settings tests). The integration tests used isolated NEXUS-4111 services and two fresh disposable databases, removed after the runs. The assembled tree matches the separately integrated original feature plus main exactly. Prior combined head c924969 passed 10 local MinIO Git tests and 140 Git API unit tests. The existing no-turn native/human acceptance belongs to the original relay/host/plugin pins. It does not exercise this newer-main integration or the real-worker launch race and active-turn stop barrier.The original combined validation also disclosed broad buzz-db failures and a leaky create_respects_the_members_add_policy result that were not fully attributed. These are not erased by the split. All stack PRs remain draft; auto-merge is off. No deployment or lifecycle activation is authorized.
All
just cirecipes passed on the assembled top headb69763b8cacross the original run and recovery of its final recipes. The original runner stopped without a terminal result; no single uninterruptedjust ciexit was recorded.Validation record from the previous combined snapshots
Historical evidence only. These checks do not establish acceptance of the split or its newer-main integration.
54f4edd: Postgres integration tests for guarded archive and restore, the gate on each write path, workflows and community-deletion fences (archive_gate_postgres_tests.rs,lifecycle_postgres_tests.rs), and Git tests against MinIO. Each new guard was removed once to confirm a test fails.cb33c265b): focused Postgres lanes pass (buzz-db59/59,buzz-relay118/118), including the auto-join tests from feat(relay): auto-join new community members to default channels #8594 and the archive-gate tests. The archive-gate concurrency test fails when either new auto-join gate is removed. Onc9249696e, the Git MinIO tests (10/10, run locally) and theapi::git::unit tests (140/140) pass. An agent review of the integration found no blockers.cargo fmtandcargo clippy --workspace --all-targets -D warningsare clean.buzz-relayrun,create_respects_the_members_add_policypassed but was reported as leaky. Not attributed.buzz-dblib lane is not green locally. Most failures also occur on the base commit; a few did not reproduce on rerun and are not attributed.track_c_tests::external_infra_minio_testsdo not run in CI (this predates the PR).Generated with Codex