Skip to content

Dispatch a phase to a registered executor host, with the per-item bare repo staged in and out and delivery made idempotent - #482

Merged
AdamFrisby merged 3 commits into
mainfrom
codeybox/80f9f64a
Sep 14, 2026
Merged

Dispatch a phase to a registered executor host, with the per-item bare repo staged in and out and delivery made idempotent#482
AdamFrisby merged 3 commits into
mainfrom
codeybox/80f9f64a

Conversation

@AdamFrisby

Copy link
Copy Markdown
Owner

Automated via CodeyBox — work item 80f9f64ae0444bf8aac80d7348d6c696

Initiated by CodeyBox operator


Co-Authored-By: CodeyBox noreply@codeybox.invalid
🤖 Generated with CodeyBox

AdamFrisby and others added 3 commits September 14, 2026 08:54
Adds ExecutorPhaseProxy (IExecutorPhaseRunner) which selects a registered
executor, stages the per-item bare repo there and back, and returns the
phase result. Delivery keys idempotency on work item + phase + attempt
(Hit replays, Conflict refuses); stage-back archives are validated against
the StageOutMax* bounds before touching the bare repo; transport failures
propagate distinctly from agent failures; empty registry falls back to
in-process execution.

CodeyBox-Prompt-Revision: 1
Co-Authored-By: CodeyBox <noreply@codeybox.invalid>
…tests

Pass StageOutMaxArchiveBytes into IExecutorPhaseTransport.StageOutToArchiveAsync so the transport aborts past the cap mid-stream instead of buffering an unbounded executor payload to disk before validation. Cap violations surface as ExecutorPhaseException (phase failure, unwrapped by CallTransportAsync); the validator keeps its size check as defense in depth. Test fake enforces the cap through a bounded stream and records bytes written; the oversized stage-back test now asserts mid-stream abort. Add traversal/absolute/wrong-root/symlink stage-back tests asserting rejection without repo write or idempotency record.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

CodeyBox-Prompt-Revision: 1
Co-Authored-By: CodeyBox <noreply@codeybox.invalid>
…aths

File-shaped tar root (item-id.git as RegularFile) previously passed
validation and replaced the bare repo directory. Validate and extract
now reject a non-directory entry equal to the expected root, and install
requires the extracted root to be a directory.

Also canonicalize target/scratch paths in the validator, contain scratch
under temp, share one entry-guard helper and copy buffer size, and reject
a null findings collection as a typed phase failure.

CodeyBox-Prompt-Revision: 1
Co-Authored-By: CodeyBox <noreply@codeybox.invalid>
@AdamFrisby
AdamFrisby merged commit a9c4576 into main Sep 14, 2026
@AdamFrisby
AdamFrisby deleted the codeybox/80f9f64a branch September 14, 2026 10:05
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.

1 participant