Skip to content

arch(ws-8): add loop integration suite - #3598

Merged
henrypark133 merged 4 commits into
reborn-integrationfrom
arch/ws-8
May 15, 2026
Merged

henrypark133 merged 4 commits into
reborn-integrationfrom
arch/ws-8

Conversation

@henrypark133

@henrypark133 henrypark133 commented May 13, 2026 •

Copy link
Copy Markdown
Collaborator

Context

Integration and test-support workstream. It proves the skeleton pieces compose through caller-level surfaces and provides feature-gated support used by later host-port branches.

Master spec: docs/reborn/agent-loop-skeleton.md
Workstream brief: docs/reborn/agent-loop-briefs/e2e-integration-tests.md
Stack base: arch/ws-7

Latest stack maintenance on 2026-05-14:

  • Rebased this branch onto its current stack base after the WS0 prompt-authority fix and the follow-up WS8/WS14-parent/WS16/WS17 conflict resolutions.
  • Pushed the updated branch with force-with-lease where the remote already existed, or published it as a new branch where it did not.
  • Verified the final ancestry chain from origin/reborn-integration through WS17 before publishing the PR descriptions.

What landed

  • ironclaw_agent_loop/test-support and Reborn/turns support helpers for planned-driver tests.
  • Integration tests around planned-driver execution, prompt assembly, checkpoint/state refs, and loop-exit evidence surfaces that are available at this layer.
  • Contract coverage for serialized host surfaces, including redaction/sentinel behavior.
  • Updates to test support after the WS0 prompt-authority and inline-message changes.
  • Sanitization fix for ParentLoopOutput::AssistantReply.content so redaction applies to serialized parent-loop output too.

Reviewer focus

  • Tests should drive the caller path, not just helper methods.
  • Feature-gated test support must not leak into production defaults.
  • Redaction and serialized surfaces should never expose sentinel secret values.
  • Future-only cases should stay documented as blocked until the relevant host port branch exists.

Non-goals / deferred work

  • Real host capability/checkpoint/input/progress/cancellation/identity adapters are sibling branches WS9 through WS15.
  • Default planned-driver registration is WS14.
  • Product-live cutover is WS17.

Validation

  • cargo test -p ironclaw_turns --test agent_loop_host_contract redaction_sentinels_never_leak_through_serialized_surfaces
  • cargo check -p ironclaw_agent_loop --features test-support
  • git diff --check
  • Final ancestry check verified arch/ws-7 -> arch/ws-8.

Stack position

[#3550 ws-0] state/checkpoint foundation -> reborn-integration
   |-- #3551 ws-1 strategy alpha -> ws-0
   |-- #3552 ws-2 strategy beta -> ws-0
   |-- #3553 ws-3 strategy gamma -> ws-0
   |-- #3643 ws-3.5 loop family registry -> ws-0
   '-- #3554 level1-merged -> ws-0
         |-- #3555 ws-4 planner facade -> level1
         |-- #3556 ws-5 default strategies -> level1
         '-- #3557 level2-merged -> level1
               '-- #3596 ws-6a canonical executor -> level2
                     '-- #3597 ws-7 PlannedDriver adapter -> ws-6a
                           '-- #3598 ws-8 integration/test support -> ws-7
                                 |-- #3644 ws-9 capability host wiring -> ws-8
                                 |-- #3645 ws-10 checkpoint load/resume -> ws-8
                                 |-- #3646 ws-11 input port -> ws-8
                                 |-- #3647 ws-12 progress port -> ws-8
                                 |-- #3648 ws-13 cancellation accessor -> ws-8
                                 |-- #3649 ws-15 prompt/identity context -> ws-8
                                 '-- #3650 ws-14-parent integrated host ports -> ws-8
                                       '-- #3651 ws-14 planned default registration -> ws-14-parent
                                             '-- #3652 ws-16 live runtime wiring -> ws-14
                                                   '-- #3653 ws-17 product live cutover -> ws-16

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@github-actions github-actions Bot added size: XL 500+ changed lines risk: low Changes to docs, tests, or low-risk modules contributor: core 20+ merged PRs labels May 13, 2026
@serrrfirat

Copy link
Copy Markdown
Collaborator

Summary

Reviewed WS8 PR #3598 only.
Base 7b0097184af74860356838b1a288e80459c00c05 → head cbdd70890afb200cdfe47076b23a885f0c70cd8c.

No new product-path security finding in reviewed scope, but integration suite currently inherits/fails on executor test compile issue from #3596.

Validation:

  • cargo check -p ironclaw_agent_loop ✅
  • cargo test -p ironclaw_agent_loop --lib ❌: executor.rs:1136 missing LoopPromptBundle.instruction_fingerprint in test fixture.

Findings

# Sev Category File:Line Issue Fix suggestion
inherited Medium Tests / Regression coverage #3596 WS8 integration branch inherits non-compiling ironclaw_agent_loop lib tests from #3596 (LoopPromptBundle fixture missing instruction_fingerprint). Fix #3596 test fixture and rebase WS8.

Security/data-flow notes

  • New test-support exposure appears gated behind test/feature cfg.
  • No test-only bypass found leaking into default prod build.

Correctness/invariant notes

  • WS8 coverage cannot be trusted until inherited test compile failure is fixed.

Missing tests

  • Fix inherited executor test compile failure, then rerun suite.

@zmanian

zmanian commented May 14, 2026

Copy link
Copy Markdown
Collaborator

Review notes — WS8 integration suite

Genuinely caller-driven (executor + PlannedDriver through public APIs), not glue-code happy paths. The redaction-sentinel test paired with the ParentLoopOutput::AssistantReply.content sanitization fix is exactly the regression it would have caught — that pairing is the kind of thing that proves the suite has teeth.

Deferred coverage tracking

Three gaps explicitly deferred to WS9–WS15, but the deferral is asymmetric: there are no negative tests pinning current behavior so the later workstreams could silently change semantics:

  1. No cancellation negative test. WS13 brief defers cancellation, but nothing here asserts the executor does NOT short-circuit on a cancel signal today. WS13 could regress the contract invisibly. Suggest a #[ignore]'d placeholder test or a compile-time "not yet wired" assertion.
  2. No checkpoint-resume integration test. from_checkpoint_payload is unit-tested, but no integration test drives LoopExecutionState::initial_for_run → serialize → reload → resume against the executor. Highest-value resume safety net; would catch schema drift between WS0 and any later state field added by WS9–WS15.
  3. No mixed-outcome parallel batch. parallel_batch_runs_in_one_iteration only covers all-success. Mixed success/fail/gate in a single batch is the realistic shape and the likely regression target for stop-on-first-suspension.

Each of these can land in the relevant later WS PR — just track them so they don't get lost.

Minor

  • MockHostCall::InvokeCapability { capability_name: String } uses String rather than the CapabilityId newtype — small types.md drift in test-support; low impact.
  • lock_or_panic plus panic!("test bundle ref should be valid: {error}") inside the prompt builder will surface as a tokio task panic, not a clean test failure. Explicit expect at the call site would read better.
  • Test name parallel_batch_runs_in_one_iteration overpromises — no #[tokio::test(flavor = "multi_thread")] so parallelism isn't actually exercised. The semantic claim ("one iteration") is what's tested; the name should reflect that.
  • recovery_budget_exhaustion_uses_single_call_retry asserts call counts but not message ordering after each retry — a regression that drops the retry result on the wire would still pass.

test-support feature gating is right; no flake risk (no sleep, no wall-clock deadlines).

@github-actions github-actions Bot added the scope: dependencies Dependency updates label May 15, 2026
Base automatically changed from arch/ws-7 to reborn-integration May 15, 2026 04:22
@henrypark133
henrypark133 marked this pull request as ready for review May 15, 2026 04:22
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@henrypark133
henrypark133 merged commit a71cc9c into reborn-integration May 15, 2026
15 checks passed
@henrypark133
henrypark133 deleted the arch/ws-8 branch May 15, 2026 04:34
theredspoon pushed a commit to theredspoon/ironclaw that referenced this pull request Jun 21, 2026
* arch(ws-8): add loop integration suite

* fix(ws-8): preserve integration safety coverage

* fix(ws-8): satisfy panic scanner for test support

* fix(ws-8): align test support failure kinds
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: core 20+ merged PRs risk: low Changes to docs, tests, or low-risk modules scope: dependencies Dependency updates size: XL 500+ changed lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants