Repository navigation
Conversation
This was referenced Oct 19, 2026
tee8z
added this pull request to stack #22
October 19, 2026 20:56
tee8z
force-pushed
the
dev-2884-reaper-reconcile-engine
branch
from
October 19, 2026 23:28
5d30dbf to
e24ede5
Compare
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
tee8z
force-pushed
the
dev-2884-reaper-reconcile-engine
branch
from
October 20, 2026 14:54
e24ede5 to
3b3f9c7
Compare
tee8z
removed this pull request from stack #22
October 20, 2026 14:56
tee8z
added this pull request to stack #26
October 20, 2026 14:56
tee8z
force-pushed
the
dev-2884-reaper-reconcile-engine
branch
from
October 20, 2026 15:01
3b3f9c7 to
0481255
Compare
Collaborator
Author
|
@coderabbitai full review Please review the current revision against this PR’s immediate stack base. The descriptions document the remote-agent scope, regression coverage, and outstanding runtime validation. |
|
tee8z
force-pushed
the
dev-2884-reaper-reconcile-engine
branch
from
October 20, 2026 15:35
0481255 to
5e2a2b0
Compare
tee8z
force-pushed
the
dev-2884-reaper-reconcile-engine
branch
from
October 20, 2026 16:01
5e2a2b0 to
8f7feea
Compare
tee8z
force-pushed
the
dev-2884-reaper-reconcile-engine
branch
from
October 20, 2026 16:24
8f7feea to
6712382
Compare
tee8z
removed this pull request from stack #26
October 20, 2026 16:24
tee8z
added this pull request to stack #28
October 20, 2026 16:25
Add the per-namespace reconcile pass: classify each managed Sandbox from its annotations and bound Pod, gather checkpoint evidence, and apply the planned tombstone or delete with resourceVersion/UID preconditions, re-reading on CAS conflicts and recording Kubernetes Events and metrics. A Pod watch keeps termination-log receipts after Pods are deleted. Add the /metrics, /healthz, and /readyz router whose health state each namespace loop records into. Scenario and property tests for the pass follow in the next layer. Signed-off-by: Tee8z <tee8z@protonmail.com>
tee8z
force-pushed
the
dev-2884-reaper-reconcile-engine
branch
from
October 20, 2026 16:51
6712382 to
8ac31be
Compare
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.
This PR adds the engine that applies the layer 1 plan to a live namespace.
Reconciler::passclassifies each managed Sandbox, gathers checkpoint evidence, and makes at most one write per Sandbox. Every write is guarded by CAS (compare-and-swap) on the observedresourceVersion. The apiserverDateheader is the only clock, so local clock skew cannot age a session into a tombstone.flowchart TD list["List managed Sandboxes; read apiserver Date"] -- "no usable Date" --> fail["Pass fails; nothing written"] list --> pods["List managed Pods; capture termination receipts"] pods --> classify["Per Sandbox: classify State against owner_pubkey"] classify --> evidence["Gather Evidence (only for states that can tombstone)"] evidence --> plan["plan()"] plan -- "None" --> done["Next Sandbox"] plan -- "Ignore" --> ignored["Warning Event SandboxIgnored"] plan -- "Hold" --> held["Warning Event CheckpointMissing"] plan -- "Tombstone" --> patch["Merge patch: Suspended + lifecycle annotations, with observed resourceVersion"] plan -- "Delete" --> delete["Delete with uid and resourceVersion preconditions"] patch -- "applied" --> ended["Normal Event SessionEnded"] patch -- "Conflict" --> reread["Re-read Sandbox and Pod (max 3 attempts)"] delete -- "Conflict" --> reread reread --> classifyrun_namespaceruns one pass perinterval. Between passes, a Pod watch keeps termination receipts after a stop or replacement deletes the Pod.NotFoundon a write ends that Sandbox's work without error.dry_runlogs each decision and writes no patch, delete, or Event.src/server.rsserves/metrics,/healthz, and/readyz. The health window is 3 ×interval, minimum 120 s./healthzfails when a namespace loop has not attempted a pass within the window./readyzfails when a namespace has no successful pass within the window.buzz_sandbox_reaper_passes_total,buzz_sandbox_reaper_sessions,buzz_sandbox_reaper_tombstones_total, andbuzz_sandbox_reaper_cas_conflicts_total.A failed object reconciliation or unavailable S3 evidence makes the pass fail after other objects have been processed. Readiness and
--oncetherefore reflect failed work. Recovery inheritance retains the original verified ancestor checkpoint through repeated failed recovery attempts, constrained to the configured developer prefix. Failed-exit Pod messages are excluded from the watch cache.Stack
Position 18 of 22. Base: #19. Next: #21. Each PR contains one signed commit. #27 fixes the existing message-edit CI failure. #24 and #25 repair fork CI and security prerequisites; the feature layers remain scoped to remote agents.
Validation
mesh-llm. The final integrated revision includes the message-edit fix and Secret retry regressions. Full localjust ciand updated GitHub checks are in progress; the previous local run stopped at a missing host Opus library, now supplied by the validation environment.Limits
The next layer supplies the fake-apiserver scenarios. This PR is 1,028 changed lines: splitting failure propagation and checkpoint inheritance out of the engine would leave its readiness and data-preservation contract incomplete. The process entry point is added in #4.
Human workflow confirmation is still required by AGENTS.md before readiness. Human acceptance has not been confirmed.