Repository navigation
Conversation
ce856b2 to
a4f5acd
Compare
Preview:
|
|
Review: 8 findings. Posted all 8 actionable findings inline in a single review. Verified key recovery and capability failures with focused Node reproductions; full repository tests were not run. |
|
Review: 4 findings. Posted 4 new actionable findings inline in one review: 2 P1 and 2 P2. Existing published findings were not repeated. Verification was based on code inspection; the test suite was not run. |
|
Review: 3 findings. Posted 3 new actionable findings inline in one review: 2 P1 and 1 P2. Existing published findings were not repeated. Verified with focused, source-based Node reproductions. Full repository tests were not run. |
|
Addressed the newer eval review's request for bounded stall diagnostics in d8d15f5. Debug events now distinguish queued/started/completed/failed persistence barriers from model dispatch, stream creation, and completion; they share an execution ID and carry sequence/timing fields, never prompts, command/file contents, credentials, or provider error text. Stream creation is explicitly not treated as receipt of HTTP response headers. A deterministic regression blocks the actual persistence barrier, proves that the next model request has not been dispatched, releases it, and verifies the event ordering and absence of sensitive content. Full lint/type checks and the complete backend suite (1,727 unit tests, plus native integration tests) pass; the final focused review suite passes all 41 tests. This instruments the candidate-only calendar timeout rather than claiming a root cause or adding a speculative runtime fix. A fresh eval must still use these breadcrumbs to attribute the original stall; the unrelated model-output failures and optional prompt changes were left untouched. |
|
Review: 3 findings. Posted 3 new actionable findings inline in one review: 1 P1 and 2 P2. Verified with focused, source-based Node reproductions. Full repository tests were not run. |
|
Review: 4 findings. Posted 3 new findings inline in one review: 1 P1 and 2 P2. Additional finding — [P2] Close paused integration turns when deleting a chat After suspension teardown finishes, the chat has no live context. Journal cancellation before deleting the chat’s workpieces, clear its paused continuation, and retain terminal outbox delivery until acknowledged. Verification used source inspection and focused, source-based Node reproductions; full test suites were not run. |
|
Review: 3 findings. Posted 3 new actionable findings inline in one review: 1 P1 and 2 P2. Verified with focused, source-based Node reproductions. Full repository tests were not run. |
|
Review: 2 findings. Posted 2 new actionable findings inline in one review: 1 P1 and 1 P2. Verified with focused, source-based Node reproductions and Workers RPC documentation. Full repository tests were not run. |
|
Review: 3 findings. Posted 3 new actionable findings inline in one review: 2 P1 and 1 P2. Existing findings were not repeated. Verified with source inspection and focused Node reproductions. Full test suites were not run; this checkout lacks installed dependencies and |
Export scoped local Git object packs, distinguish accepted checkpoints from explicit HEAD, and keep original OT prefixes for reconciliation. Cover eviction, revocation, streaming and pending-only bootstrap.
Recheck upload names at the message commit barrier and bound canonical RPC pages by serialized bytes. Fence lifecycle startup after delivery and retain continuation-scoped approval wake-ups without requiring effect redelivery. Prevent older connection cards from waking newer prompts. Add barrier and eviction regressions while preserving the existing OT engine.
db217dc to
e6eb643
Compare
| }, | ||
| }; | ||
|
|
||
| hooks.registerWorktreeReplicaTurn?.(chatId, worktreeTurnAccess, author, () => chatBindings); |
There was a problem hiding this comment.
[P2] Reconcile canonical appends when handing off between agent passes
The registered access survives until the outer Overseer turn tears down, but runAgent() can reload, compact, or retry several passes inside that turn. After the next pass snapshots loadChatHistory(), its asynchronous binding/pin/blob replay still leaves submissions routed to the preceding pass's access. A replica can commit and receive an ACK in that window, then this registration replaces its updated live view with a replay that omitted the acknowledged transaction. A focused execution of the production pass replay and flush closures reproduced durable a.txt = acknowledged replica text while the newly registered access read a.txt = first. Subsequent correctly anchored replica edits can fail against that stale view, and ordinary edits can be calculated from different text than the canonical file. Fence/drain the old pass and make the handoff consistent with canonical appends, or revalidate and replay the intervening journal tail before publishing the new access. Cover a submission during compaction/retry replay.
| content = applyCodeChange(content, {[workpieceId]: entries}); | ||
| } | ||
| for (let {workpieceId, entries, pin} of prepared) { | ||
| appendAgentEdit(workpieceId, {[workpieceId]: entries}, pin); |
There was a problem hiding this comment.
[P2] Recheck ordinary first-write pins after concurrent replica appends
These appends can now establish a gadget pin while an ordinary writeFile or editFile is awaiting its first-write readCommitFiles()/anchorKnowledgeToPin(). The ordinary tool keeps its previously prepared pin; when it resumes, appendAgentEdit(..., pin) replaces the entire live gadget map with that old base, discarding the replica's already-ACKed changes from the session. The durable barrier behaves differently: an existing matching pin does not re-root its canonical content, so the live and stored views diverge. I reproduced this with the production writeFile and replica-flush closures: a replica wrote a.txt while the first ordinary write to b.txt awaited its base, and afterward storage retained the replica text while live readFile(a.txt) returned the original base text. Recheck pin ownership after the ordinary tools' awaits (and calculate edits against the resulting current view), or serialize pin establishment, so an already-pinned session cannot be reset by an older snapshot.
|
Review: 2 findings. Posted 2 new P2 findings inline in a single review. Verified both with focused, source-based Node reproductions using production replay, file-tool, and replica-flush code. Full test suites were not run. |
Eval resultsVerdict: ⚪ Unchanged. No task moved beyond what 10 runs can tell apart from noise.
Failed checks
|
🔬 Eval runs reviewPerformanceChange-calendar passed 9/10 → 8/10 and worker-logs 10/10 → 7/10, while chess and incident-desk stayed at 10/10; comparison.json finds no pass-rate or prompt-cache hit/break movement beyond noise. Incident-desk increased from 29 → 39.3 steps and 4.0 → 4.9 minutes, with mean run cost $0.0225 → $0.0288; its longest candidate run spent substantial work rewriting SQL helpers and replacing subscriptions with polling. Worker-logs averaged $0.0234 → $0.0178 and 4.4 → 3.6 minutes, but three first-turn failures ending after only 5–9 steps explain the apparent saving; calendar/chess costs remained within their run-to-run spread, and exact-text edit retries dominated wasted calls on both sides. ⚪ VERDICT: NO REGRESSION FROM THIS PRThe comparison is unchanged, the failed trajectories show generated-code and arithmetic mistakes rather than consequences of the lifecycle/replica or attachment changes, and no attributable performance improvement or deterioration exceeds noise. TriageFailure modes
Tool errors
What to do
|
deregtd
left a comment
There was a problem hiding this comment.
Re-reviewed e6eb643123e1bc1d976ea1eb2e90b9b946fe6e2a against 7b0ac75ebcfa53292d56245f288a27f11831aa6d, comparing all 62 real file patches with the completed prior review and checking the newer base interactions. The accepted-directory writability and single-event paging fixes are verified, including three independent native probes.
The two new findings still need fixes: pass handoff leaves the previous access registered while the next pass replays a history snapshot, and first-write pinning reuses a pin prepared before an await even if a replica has since pinned the gadget. I independently traced both production paths; each can replace the live view after a replica ACK. These are source-verified assessments, not additional independent race reproductions.
Backend/browser type checks and 235 focused native tests pass, including the three fix probes. The local run reused installed dependencies and explicitly selected workerd 1.20260926.1, which matches the pinned runtime's SQLite row budget; the initial default-runtime size failures disappear with that selection. No live container/provider end-to-end validation was run. The PR remains draft pending the two races and companion integration validation.
Umbrella — review the focused replacements
The user-facing goal is: connect an optional Linux container when an agent needs to run tests/builds, materialize its Git repositories and uploaded files, keep workspace edits synchronized with the DO, and survive resets/approval pauses without silently repeating effects.
That goal originally accumulated in this draft. Review and merge the focused replacements below instead. Do not merge #729 alongside them. This branch remains unchanged as a historical reference at
e6eb6431.Organization and merge order
The six main-targeted PRs are independently reviewable/mergeable. #772 now contains validation only: replica serialization and the shared permission helper belong to #774; generic timing instrumentation is isolated in #776.
#774 targets
ddr/split-replica-prerequisitesonly to hide prerequisite diffs. Do not merge it into that temporary branch as a release step. Reconcile the final prerequisite heads and rebase/retarget onto main after they land. #771's optional connection UI is not an architectural requirement of replication.That review base pins #770's original text-only attachment contribution, while #770 has since expanded to all uploaded formats and includes its own whole-file binary foundation. Restacking must integrate those newer changes; the current assembled tree is not claimed to contain every latest sibling head.
The organization change preserves #774's production source/configuration exactly relative to its prior head
82186a4d. It relocates the timing test without dropping or duplicating coverage.Release boundary
The Linux image, Rust bridge, FUSE/native engines, snapshots, and network policy remain in gadgets-internal. The separate #759 binary-replica follow-up and original #729 branch are unchanged. Internal MRs must eventually pin and verify against the merged public revision.
This reorganization does not deploy or enable any integration. Verification and remaining integration notes are maintained on the focused PRs.
Original description — historical, not the current merge plan
Summary
Generic kernel support for the internal Linux Container gatekeeper. The Linux image, Rust bridge,
container bindings, network policy, snapshots, and deployment grants stay in gadgets-internal.
recoverable contextual actions with original approval authority.
atomically receipted submissions.
validation. OAuth and self-hosted GitLab Access credentials stay in the provider.
Current draft status
Rebased and ported onto main at
8cbfb2b6. Storage declarations now live in the extractedOverseer schema, with version 5 → 6 migration; repository identities are populated lazily.
Preserves main's resource-creation approval flow, blueprint-merge buffering, model retries and
turn notifications. Replica bootstrap now also replays compacted chat overlays.
Keep this a draft. The internal gatekeeper MR must pin the eventual merged public revision and
be verified against it before release. No live deployment or feature enablement was performed
by this rebase; the GitLab provider tests use authenticated transport fixtures, not a live project.
Rev 0 mutations remain text-only, with no exactly-once claim for unjournalled shell effects.
Verification after rebase
loopback Git server and bounded exact-commit validation.
authority revocation, v5 migration and compacted-overlay bootstrap regressions covered.
Review the public API, kernel runtime/storage, verification, and small generic UI commits
separately. Follow-up port and provider commits keep the GitLab adapter apart from kernel storage.