Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
0f78f2c
Initialize SDLC contract for issue #2777
May 29, 2026
7a5334b
risk_analyst: risk register for issue-2777-replan plan phase
May 29, 2026
d5f21b4
plan(2777-replan): fix stale paths — local_pipeline deleted, test_pip…
May 29, 2026
0dc42f4
[architect] plan #2777-replan: 2-slice cleanup architecture + risk_an…
May 29, 2026
1212b73
plan(2777-replan): v2 — address reviewer_plan NACK + adopt architect …
May 29, 2026
ec2a83b
plan(2777-replan): v3 — TASK-1-6 missing 6th pipelines.py cluster (35…
May 29, 2026
28f7ef9
Persist statefiles after plan phase
May 29, 2026
870d6f2
plan(2777-replan): v4 — iteration-1 operator directive vs architect's…
May 29, 2026
b6b58a1
[architect] plan #2777-replan v4: sub-slice A+D into 1a/1b/1c per ope…
May 29, 2026
1329963
risk_analyst(2777-replan iteration 1): re-anchor R1-R13 + add N1-N6 f…
May 29, 2026
8c9b835
Merge remote-tracking branch 'origin/egg/issue-2777-replan/work' into…
May 29, 2026
d91dc5d
plan(2777-replan): v5 — re-shape to 4 slices matching architect's rev…
May 29, 2026
1dfc025
plan(2777-replan): v6 — address reviewer_plan NACK (TASK-4-5 contradi…
May 29, 2026
7f611de
Persist statefiles after plan phase
May 29, 2026
7cd1140
fix(issue-2777-replan): restore slice dependency chain in contract
jwbron May 29, 2026
140b3c6
Fix #2870: emit canonical 'dependencies' in slice scaffold; warn on d…
jwbron May 29, 2026
46a7ef8
Fix #2871: don't mark an empty slice branch COMPLETE on restart (#2874)
jwbron May 29, 2026
e0175dc
Fix #2869: retry transient gateway connection failures during slice s…
jwbron May 29, 2026
0d7f751
docs: add integration_base_sha to Slice fields table (#2875)
james-in-a-box[bot] May 29, 2026
2756e9c
ci: free runner disk to fix integration-test disk-pressure flake (#2879)
jwbron May 29, 2026
28873b9
Fix #2805: cap egg-owned MCP tool output at the tool layer (#2878)
jwbron May 29, 2026
557c929
Fix #2876: bound built-in CC tool output via PreToolUse predictive ca…
jwbron May 29, 2026
d577878
docs: add egg_tool_output.py to shared/ structure (#2881)
james-in-a-box[bot] May 29, 2026
3c0b122
slice-1 (#2777): context-PR opener + wiring (slice-1a)
May 30, 2026
ca91003
slice-1 v2: move plan-exit validator+opener BEFORE state-lock
May 30, 2026
d089624
slice-1 v2: harden context-PR opener (reviewer_concurrency non-blocking)
May 30, 2026
36312b2
slice-1 v3: address reviewer_code_holistic blockers (re-add 4 opener …
May 30, 2026
1b14fcf
slice-1 v3: address reviewer_code v2 NACK (validator key-presence + d…
May 30, 2026
3072ac9
slice-1 v4: restore populate-on-any-plan-exit (tester v3 NACK)
May 30, 2026
57891a3
slice-1 v5: remove unnecessary forward-ref quotes on type annotation …
May 30, 2026
641900f
slice-1 v6: apply ruff format (tester v5 NACK)
May 30, 2026
b2d3beb
slice-1 v7: allowlist phases.py for file-size hard cap (tester v6 NACK)
May 30, 2026
d48e1c6
tester(slice-1): align tests with new context-PR opener wiring (#2777)
May 30, 2026
5d1c32a
tester(slice-1): mock new opener in test_version_conflict (#2777)
May 30, 2026
18591b7
Persist BRC history for slice-1 (#2548)
May 30, 2026
e87257e
Address egg-reviewer feedback on PR #2888
egg-reviewer[bot] May 30, 2026
eecf368
Add coverage for ROUTES/LOADER_UNAVAILABLE + CONTRACT_LOAD_FAILED
egg-reviewer[bot] May 30, 2026
b5fac8c
Merge origin/main into egg/issue-2777-replan/slice-1: take main's too…
jwbron May 30, 2026
babdaae
docs(agent-recovery): drop duplicate Predictive Output Cap section
egg-reviewer[bot] May 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
726 changes: 726 additions & 0 deletions .egg-state/agent-outputs/issue-2777-replan-architect-output.json

Large diffs are not rendered by default.

123 changes: 123 additions & 0 deletions .egg-state/agent-outputs/issue-2777-replan-architect-slices.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
slices:
- id: 1
name: |-
Context-PR opener + wiring (slice-1a)
goal: |-
Land the new primitives and wire them in, so the primary
use case (up-front context-PR open at the plan->implement
boundary) is reachable and reviewable on its own. Scope:
add `_open_context_pr_at_implement_start(pipeline_id)` as
the single hard-required idempotent opener; add the
plan-phase pre-flight validator (`PlanPreflightError`)
that rejects malformed planner output before the
implement-phase entry hook fires; extract the surgical
helpers `_is_slice_dag_mode(contract)` and
`_resolve_slice_base_branch(contract, slice_id)` (cq-10);
and replace the five existing call sites of
`_maybe_open_base_pr_for_plan_to_implement`
(pipelines.py:16503, :22132, :23671, :24666, plus
orchestrator/routes/phases.py:500) with calls to the new
opener. The legacy `_maybe_open_base_pr_for_plan_to_implement`
is left in place but unreferenced -- slice-1b deletes it.
This sub-slice ships the unwired-dead-code-avoidance fix
the prior 16-task run reproduced: the opener is reachable
from real call sites at end of slice-1a, before any
deletion lands. Out of scope for 1a: any deletion of
legacy scaffold; PR-phase removal; schema bump;
ConsensusEvaluator deletion; umbrella strip; cleanup tail.
parent_slice_id: null
- id: 2
name: |-
Scaffold + PR-phase deletions (slice-1b)
goal: |-
Delete everything that the now-live slice-1a opener
makes redundant. Depends on 1a so reviewers can see the
replacement is wired and working before deletions land.
Scope: delete the context-PR scaffold
(`_open_context_pr_for_pipeline`,
`_lookup_existing_context_pr`, `_gather_context_pr_files`,
`_persist_context_pr_linkage_on_contract`,
`_maybe_open_base_pr_for_plan_to_implement`,
`_resolve_slice_1_context_branch_from_contract`,
`_context_pr_events_emitted`); delete the PR phase
(`_should_skip_pr_phase_auto_pr` + sole caller; PR-phase
route registration; PipelinePhase.PR reads/writes across
~26 files); delete `GatewayClient.create_context_branch`
and `ContextBranchDiverged`; delete gateway
`_CONTEXT_BRANCH_RE` regex and clean up the dangling
`is_context_push` references; hard-remove the
PRMetadata `context_branch` / `context_title` /
`context_description` fields with the schemaVersion
1.1->1.2 bump and the `_migrate_schema_version_to_1_2`
migrator (cq-2); rewire `stacked_pr_reconciler.py` to
derive cascade-base from `context_pr_number` +
`_resolve_slice_base_branch` (cq-9 prep); delete
`orchestrator/consensus.py` and its 8 reference
clusters across pipelines.py / phases.py / signals.py
(cq-5); delete obsolete test files (test_finalize_pr_phase,
test_auto_pr, test_consensus) and rewrite ~14 affected
test files; update docs/architecture/orchestrator.md and
docs/guides/pipeline-health-monitoring.md. Out of scope
for 1b: cohesion-independent cleanup tail (lives in 1c).
parent_slice_id: 1
- id: 3
name: |-
Cohesion-independent cleanup tail (slice-1c)
goal: |-
Land the cleanup items whose correctness is independent
of the structural collapse in 1a/1b but whose review
benefit depends on the new topology being in place.
Scope: add `gh pr list` idempotency pre-flight to
`GatewayClient.create_slice_pr` (cq-8); diagnose and
stop the silent `egg/<id>/work` rebase onto main (#2570
bundle) including the AC-9 invariant test, with the
AC-9a HITL gate if diagnosis points at an OOS primitive;
audit each `# noqa: BLE001` swallow-all handler in the
slice-loop region individually and replace with named
exception types or deliberate comments (feedback Q2);
collapse the slice-loop `except ImportError` dual-path
import shims to canonical `from orchestrator.X import Y`
(feedback Q3); strip the umbrella terminology -- the
`umbrella_has_program_block` variable, the literal
banner string, the docstring narrative, and the
`test_terminal_slice_keeps_umbrella_rollup...` positive
test (cq-6 subsumes #2389); add noqa markers and #2199
docstring banners to the speculative SliceScheduler
hooks (record_cycle / teardown_slice / respawn_slice /
cancel_cascade / hitl_escalator param) (cq-3); delete
stale archaeology comments in the slice-loop region;
add the end-to-end integration test for the up-front
context-PR open path (feedback Q4). Each item is
independent of the others, so a NACK on one does not
block the rest. Out of scope for 1c: restart hardening
(lives in slice-2).
parent_slice_id: 2
- id: 4
name: |-
Slice/phase restart hardening (slice-2, bundles #2409)
goal: |-
Harden slice and phase restart so an interrupted sliced
implement phase resumes correctly. Eager-persist
parent_branch_at_creation under the contract lock at the
moment status transitions PENDING->IN_PROGRESS, AND keep
a merge-base fallback in the `_resolve_slice_base_branch`
helper (cq-9 "both"); make `restart_phase` iterate
`contract.slices` and clear each per-slice consensus
tracker via `_tracker_key(pipeline_id, slice.id)`; in
`startup_reconciliation.py`, iterate `contract.slices`
and call `reconstruct_tracker_from_messages(pipeline_id,
graph, slice_id=s.id)` for each slice in addition to the
pipeline-level call -- the signature already accepts
slice_id at HEAD (peer_consensus.py:1919-1926) and
message_store filters on metadata['slice_id'] at
:407-416, so no schema change is needed (bundles #2409);
extend bootstrap reconciliation to recognise
IN_PROGRESS / BLOCKED slices that did real work
(commits-on-origin > 0) so they aren't silently
re-yielded READY and respawned from scratch. Depends on
slice-1c so the restart logic reasons about the
post-collapse topology (no egg/<id>/context branch in
scope, no PR-phase route to consider, and the
`_resolve_slice_base_branch` helper is already live
from slice-1a).
parent_slice_id: 3
Loading
Loading