Skip to content

Batch round r2: nine ready heads, merged and tested once - #2684

Merged
trissim merged 31 commits into
mainfrom
batch/round-r2
Oct 23, 2026
Merged

trissim merged 31 commits into
mainfrom
batch/round-r2

Conversation

@trissim

@trissim trissim commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Round two of batch merging: every ready head merged once into one branch from main and tested once.

Carries #2661 (with its connector fix eab807d), #2669, #2670, #2676, #2671, #2672, #2674, #2675 and #2678. Nothing dropped.

Merge conflicts resolved once:

Resolutions made in this branch:

Proof:

  • All 433 src and cutover modules import at this head.
  • Test run 1, 27 files (-n 4): 10 failed and 6 errors, sorted below.
  • After the resolutions, rerun with --basetemp on /home: test_todos, test_preflight_feedback and test_order_claims at 28 passed.

What the run-1 reds were:

  • Eight were tmpfs, not code. The practice copy refuses below the 5 GiB floor (storage_rules.py:78), and /tmp had 5.0 GB free. They pass with --basetemp on /home.
  • Five fail identically on main b9e2bce, so they are pre-existing and owned separately: test_native_only_execution::test_headless_uses_existing_owner_runtime_and_owner_project, test_native_owner_launcher_resolution::test_fork_runs_selected_python_before_copying_saved_history, and test_owner_release_restart::test_changed_owner_after_release_refuses_escalation_and_replacement[birth|claim_scope|acknowledgement].
  • test_child_process::test_namespace_deadline is also pre-existing on main.

🤖 Generated with Claude Code

trissim and others added 30 commits October 23, 2026 03:52
LockedStore.update now takes a change returning DocumentChange[D, R]
(successor plus answer) and returns R, so callers stop smuggling results
out through nonlocal (IMPL-8) in read_ledger, relationships and
shared_ledger. InputDispositions._update, the same transaction over
SQLite, takes the same DocumentChange. SpawnedProcess.launching yields
the child before it executes, replacing the before_start callback whose
result owner_lifecycle smuggled out through nonlocal.

ConnectivityFacet, OwnerConnectivity, ACPClientConnectivity and
observe_connectivity had no production writer: deleted with the
snapshot field and their tests.

RecordsPhase evidence matched its own declaration in plan_phases.py, so
it could never pass; it now brackets its first letters like BusWriter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Schema installation creates declared tables and never drops undeclared
ones, so every coordination database written before the facet was
deleted kept the connectivity table and its four triggers (the live
bus still has them, with zero rows). The carry drops the table once;
SQLite drops its triggers and index with it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pytest_sessionstart ran stack/bin/prepare-pi-native (npm ci, the import
boundary and proof schema renders) whenever the pinned package was
missing, so a run of one SQLite test in a fresh worktree paid for the
whole native stack. The build is now the session fixture pinned_native,
which native_runtime_package and every test that touches the package
request; a run that never asks never builds. Workers asking together
take the stack directory lock and the first one builds.

Tests that read pinned_native_package() themselves take the fixture
instead, and one_turn_events receives its package. Deleted the dead
helpers that pulled native into modules that never used it:
_replay_stub, _NATIVE_PROMPT_START, _rpc_events and
_assert_full_rpc_stream in test_backend.py, and stub and
collect_backend in test_mcp_relay.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
LockedStore.update now takes a change returning DocumentChange, but the
four connector routes still handed it bare ConnectorGrants, so /register,
/authorize, /confirm and /token answered 500 ('ConnectorGrants' object has
no attribute 'document').

register and authorize return DocumentChange.to. confirm and token return
their answer as the change's result, deleting the approved and exchanged
lists that smuggled it out (IMPL-8). ConnectorGrants.issued and
TokenGrant.exchange return DocumentChange instead of an unnamed pair, so
token passes grant.exchange to the store directly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	src/agent_comms/diagnostics.py
# Conflicts:
#	src/agent_comms/private_registry_guard.py
# Conflicts:
#	src/agent_comms/goal_attempts.py
#2670 deleted board_cells; test_todos.py:264 still rendered it. The merged order
keeps its checked fields, so compare the check directly.
#2674 dropped InputIdUnavailable from test_preflight_feedback.py imports while :50 uses it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#2674 added carry_declared_failures.py importing store_files._atomic_write_text,
which #2658 deleted; the same import broke install 4 via #2680's twin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 23, 2026 08:24
@trissim
trissim merged commit f966a53 into main Oct 23, 2026
1 check passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@github-actions

Copy link
Copy Markdown

debt-tools at 186bab3, every finding:

grew FamilyFlattened:tools/cutover/carry_declared_failures.py +1
grew LintFindings:tools/cutover/carry_declared_failures.py +1
grew StringSubscript +1
grew Unformatted:tools/cutover/carry_declared_failures.py +1
grew Unformatted:tools/cutover/carry_drop_connectivity.py +1

@github-actions

Copy link
Copy Markdown

debt-src at 186bab3, every finding:

grew AnyAnnotation:src/agent_comms/child_process.py +1
grew FamilyFlattened:src/agent_comms/backend.py +2
grew FamilyFlattened:src/agent_comms/turn_terminal.py +1
grew FunctionLocalImport:src/agent_comms/private_registry_guard.py +1
grew LintFindings:src/agent_comms/backend.py +2
grew LintFindings:src/agent_comms/bus_tables.py +2
grew LintFindings:src/agent_comms/child_process.py +2
grew LintFindings:src/agent_comms/cohort_schema.py +6
grew LintFindings:src/agent_comms/commander_hud.py +2
grew LintFindings:src/agent_comms/connector.py +1
grew LintFindings:src/agent_comms/connector_store.py +1
grew LintFindings:src/agent_comms/coordination_tables/assignments.py +4
grew LintFindings:src/agent_comms/coordination_tables/attempts.py +5
grew LintFindings:src/agent_comms/coordination_tables/executions.py +4
grew LintFindings:src/agent_comms/coordination_tables/participants.py +2
grew LintFindings:src/agent_comms/coordination_tables/publications.py +1
grew LintFindings:src/agent_comms/coordination_tables/recovery.py +1
grew LintFindings:src/agent_comms/external_transcript.py +1
grew LintFindings:src/agent_comms/goal_attempts.py +1
grew LintFindings:src/agent_comms/goal_failure_observation.py +2
grew LintFindings:src/agent_comms/goal_waits.py +1
grew LintFindings:src/agent_comms/input_disposition.py +1
grew LintFindings:src/agent_comms/native_runtime_input.py +4
grew LintFindings:src/agent_comms/read_ledger.py +1
grew LintFindings:src/agent_comms/relationships.py +2
grew LintFindings:src/agent_comms/runtime_children.py +1
grew LintFindings:src/agent_comms/todos.py +7
grew LintFindings:src/agent_comms/transcripts.py +1
grew LintFindings:src/agent_comms/triage_native_sources.py +1
grew NoneAbsence:src/agent_comms/agent_events.py +2
grew NoneAbsence:src/agent_comms/diagnostics.py +1
grew NoneAbsence:src/agent_comms/native_child.py +1
grew NoneAbsence:src/agent_comms/private_registry_guard.py +1
grew NoneAbsence:src/agent_comms/relationships.py +1
grew TypeErrors:src/agent_comms/commander/vibe_check.py +1
grew TypeErrors:src/agent_comms/locked_store.py +2
grew TypeErrors:src/agent_comms/todos.py +1
grew TypeErrors:src/agent_comms/transcripts.py +3
grew Unformatted:src/agent_comms/commander_hud.py +1
grew Unformatted:src/agent_comms/runtime_children.py +1
grew Unformatted:src/agent_comms/service_passes.py +1
introduced NoneAbsence:src/agent_comms/agent_events.py at lines [261, 276, 279]
introduced NoneAbsence:src/agent_comms/diagnostics.py at lines [131]
introduced NoneAbsence:src/agent_comms/native_child.py at lines [126, 129, 138]
introduced NoneAbsence:src/agent_comms/private_registry_guard.py at lines [187]
introduced NoneAbsence:src/agent_comms/relationships.py at lines [836]

trissim pushed a commit that referenced this pull request Oct 23, 2026
e1e82d6 (#2684) deleted test_backend._replay_stub and _NATIVE_PROMPT_START;
test_native_refusal_recovery.py still imported them for helpers no test calls
since e16d8df deleted the fake-backed tests. Collection died on main.
The one real test stays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

2 participants