Outcome
A child receives and reads exact declared research notes/probes in its own workspace after verified parent completion, without accessing the parent's private tree.
Observed behavior
R4 had 30 completed specialist runs but zero files in 30 handoffs; all root deliverable contracts were null. All 15 dependency-context hashes matched. Summaries/fingerprints arrived, authored contents did not. This is not observed transport corruption or truncation.
Expected behavior
Declare bounded research outputs and use the existing signed typed artifact selection/decoder. A summary pointing at inaccessible filenames does not satisfy content delivery.
Reproduction and evidence
Core-only reproduction: specialists write a unique note/probe, finish native verification, and a dependent synthesis fixture must read those bytes. No unpublished benchmark helper is needed. Full findings: #296 (comment); overview: #296. The attached overview contains facts and TF definitions inline.
Acceptance criteria
Dependencies
No open execution blockers; this core-only change targets the verified current main.
Aligned with #164, #53 and #166. Preserve their distinct scope and existing recovery/authority contracts. Review PR #294 before touching verifier behavior.
Governed delivery contract
- Source repository:
All-The-Vibes/ecorp.
- Source base: core-only original
b2523964e7576cafc00e84a51e1044f55826dea7; revalidate current main and record the exact dispatch SHA. No dependency on S.
- Write scope (exact controller allowlist):
crates/crony-server/src/planning.rs, crates/crony-server/src/main.rs, crates/crony-server/src/dependency_source.rs, crates/crony-store/src/lib.rs, crates/crony-runner/src/main.rs, crates/crony-runner/src/source_checkpoint.rs, crates/crony-protocol/src/lib.rs, tools/e2e_research_handoff.mjs, docs/evidence/issue297-research-handoff.md. Typed StartRun/ResumeRun carriage and source_checkpoint Assignment initialization are allowed only for safe dependency materialization; no unrelated protocol or checkpoint changes.
- Provider/strategy: Codex native adapter, gpt-6-astra, ultra, configured Portkey/copilot_proxy route; single strategy, one initial task attempt. Qualify and pin the actual executable/configuration before native dispatch.
- Token/cost/deadline budgets: fill unlimited tokens (
-1), using the qualified native runtime, 10,000,000 microusd ($10) per implementation mission, subject to existing requester/Corp limits, no inherited 20-minute benchmark cutoff; one initial task attempt, scoped work and native cost/loop/stop controls; report insufficient authority rather than extend it before dispatch.
- Tools/authority: isolated linked worktree and owned fixtures only; no private parent reads, shared worker filesystem, candidate reruns or server-side agent shell.
- Persisted verifier: the curated 16-check native policy below, followed by a real owner/admin human-approval decision on the concrete result. Independent code review remains required evidence; no model artifact impersonates the human decision.
- Publication: one verified review PR; no merge, auto-merge or deployment.
Harness-native-first and boundaries
Inspect existing typed source decoding, dependency selection and native content limits before adding code. The gap is undeclared/unselected research content; add only scoped child materialization if needed, not another transport or execution loop. Core hooks exist in the original base; local R4 versions also contain unrelated uncommitted changes and must not be silently copied.
Validation
Run targeted module tests plus the proposed browser → server → runner → verified artifact → child consumption fixture. Run the contributor migration/fmt/Clippy/workspace-test/web-build/web-lint gates for affected shared code. Attach exact commands, counts, source/artifact hashes and review; these are future checks, not already passed repairs.
Findings attachment
The full sanitized investigation, controls, quantitative findings, source-provenance hashes and TF-01–16 acceptance matrix are attached inline in #296. This issue includes its relevant observations above. No private local path is required to read the findings.
Curated native Factory intake
- Authority: the original retained Factory control plane and Corp; a dedicated Codex runner. Only this exact issue may be consumed by its one-shot controller; no broad backlog watcher or unrelated work-item reconciliation.
- Source:
All-The-Vibes/ecorp, symbolic main, immutable b2523964e7576cafc00e84a51e1044f55826dea7, rechecked at dispatch. Write-capable work runs in a new runner-owned worktree.
- Harness: Codex 0.152.0, configured
copilot_proxy/Portkey route, gpt-6-astra, ultra, Windows elevated. Legacy source routing uses the qualified private native configuration because the current custom-provider saved-connection account check reports needs-sign-in; no fake OpenAI login or alternate provider is substituted.
- Strategy:
single, one initial task attempt. Token ceilings are explicitly unlimited at mission/task/requester/Corp scope. Mission cost ceiling is 10,000,000 microusd; existing requester/Corp cost and loop safeguards remain. The R4 20-minute cap does not apply to this implementation task.
- Credentials: trusted environment delivery, explicitly reduced assurance; no key values in issue, prompts, command arguments or source.
- QA: dedicated, operator-qualified synthetic database/context; never target the manual Factory database or R4 data. Trusted runner variables
ECORP_ISSUE297_QA_CONTEXT and QA-only DATABASE_URL are provided. The context starts as awaiting_candidate: build the changed checkout, bind its exact source/binary hashes, and start its own owned candidate services before acceptance checks. The factory host runtime is not evidence of candidate behavior.
The native policy performs migration integrity, format, Clippy, workspace-package tests, candidate server/runner build, web build/lint, two actual handoff E2Es, and the existing SQLx recovery-lineage regressions. Every synchronous check has the native 60-second maximum. Dependency installation/cold builds and full validation belong to implementation; finish and warm the changed checkout before signalling completion.
One existing runner connection fixture exceeds 60 seconds. The native runner rerun excludes only connections::integration_tests::native_fixture_ready_ack_refresh_rejection_and_old_run_pins_survive_restart. The full unfiltered cargo test --workspace and that exact long fixture remain mandatory with source-bound successful logs for independent review and actual owner approval before commit/publication. Do not shorten, ignore or modify that fixture to satisfy the verifier.
The new E2E interfaces are node tools/e2e_research_handoff.mjs --case browser-consumption --require-owned-qa and --case adversarial --require-owned-qa. Both fail on unknown cases or zero assertions, use the real candidate server/runner/verifier/artifact paths, validate the trusted fixture ownership/source pins, and finish with bounded cleanup. Build, package/browser installation and cold database setup must finish before these checks. Missing context is an explicit setup failure, never permission to fall back to another database.
Human approval is still pending until a concrete verified result exists. Publication is one review PR through the trusted native publisher; no merge, auto-merge or deployment.
Pinned verifier-policy SHA-256: 317285190031b55585a5dbf973fe5c1bc9268b8d5ed4847f6606f6aaec61fd91. Exact native policy and executable qualification are retained by the controller; the public issue omits private machine paths.
Outcome
A child receives and reads exact declared research notes/probes in its own workspace after verified parent completion, without accessing the parent's private tree.
Observed behavior
R4 had 30 completed specialist runs but zero files in 30 handoffs; all root deliverable contracts were null. All 15 dependency-context hashes matched. Summaries/fingerprints arrived, authored contents did not. This is not observed transport corruption or truncation.
Expected behavior
Declare bounded research outputs and use the existing signed typed artifact selection/decoder. A summary pointing at inaccessible filenames does not satisfy content delivery.
Reproduction and evidence
Core-only reproduction: specialists write a unique note/probe, finish native verification, and a dependent synthesis fixture must read those bytes. No unpublished benchmark helper is needed. Full findings: #296 (comment); overview: #296. The attached overview contains facts and TF definitions inline.
Acceptance criteria
Dependencies
No open execution blockers; this core-only change targets the verified current main.
Aligned with #164, #53 and #166. Preserve their distinct scope and existing recovery/authority contracts. Review PR #294 before touching verifier behavior.
Governed delivery contract
All-The-Vibes/ecorp.b2523964e7576cafc00e84a51e1044f55826dea7; revalidate current main and record the exact dispatch SHA. No dependency on S.crates/crony-server/src/planning.rs,crates/crony-server/src/main.rs,crates/crony-server/src/dependency_source.rs,crates/crony-store/src/lib.rs,crates/crony-runner/src/main.rs,crates/crony-runner/src/source_checkpoint.rs,crates/crony-protocol/src/lib.rs,tools/e2e_research_handoff.mjs,docs/evidence/issue297-research-handoff.md. Typed StartRun/ResumeRun carriage and source_checkpoint Assignment initialization are allowed only for safe dependency materialization; no unrelated protocol or checkpoint changes.-1), using the qualified native runtime, 10,000,000 microusd ($10) per implementation mission, subject to existing requester/Corp limits, no inherited 20-minute benchmark cutoff; one initial task attempt, scoped work and native cost/loop/stop controls; report insufficient authority rather than extend it before dispatch.Harness-native-first and boundaries
Inspect existing typed source decoding, dependency selection and native content limits before adding code. The gap is undeclared/unselected research content; add only scoped child materialization if needed, not another transport or execution loop. Core hooks exist in the original base; local R4 versions also contain unrelated uncommitted changes and must not be silently copied.
Validation
Run targeted module tests plus the proposed browser → server → runner → verified artifact → child consumption fixture. Run the contributor migration/fmt/Clippy/workspace-test/web-build/web-lint gates for affected shared code. Attach exact commands, counts, source/artifact hashes and review; these are future checks, not already passed repairs.
Findings attachment
The full sanitized investigation, controls, quantitative findings, source-provenance hashes and TF-01–16 acceptance matrix are attached inline in #296. This issue includes its relevant observations above. No private local path is required to read the findings.
Curated native Factory intake
All-The-Vibes/ecorp, symbolicmain, immutableb2523964e7576cafc00e84a51e1044f55826dea7, rechecked at dispatch. Write-capable work runs in a new runner-owned worktree.copilot_proxy/Portkey route,gpt-6-astra,ultra, Windows elevated. Legacy source routing uses the qualified private native configuration because the current custom-provider saved-connection account check reports needs-sign-in; no fake OpenAI login or alternate provider is substituted.single, one initial task attempt. Token ceilings are explicitly unlimited at mission/task/requester/Corp scope. Mission cost ceiling is 10,000,000 microusd; existing requester/Corp cost and loop safeguards remain. The R4 20-minute cap does not apply to this implementation task.ECORP_ISSUE297_QA_CONTEXTand QA-onlyDATABASE_URLare provided. The context starts asawaiting_candidate: build the changed checkout, bind its exact source/binary hashes, and start its own owned candidate services before acceptance checks. The factory host runtime is not evidence of candidate behavior.The native policy performs migration integrity, format, Clippy, workspace-package tests, candidate server/runner build, web build/lint, two actual handoff E2Es, and the existing SQLx recovery-lineage regressions. Every synchronous check has the native 60-second maximum. Dependency installation/cold builds and full validation belong to implementation; finish and warm the changed checkout before signalling completion.
One existing runner connection fixture exceeds 60 seconds. The native runner rerun excludes only
connections::integration_tests::native_fixture_ready_ack_refresh_rejection_and_old_run_pins_survive_restart. The full unfilteredcargo test --workspaceand that exact long fixture remain mandatory with source-bound successful logs for independent review and actual owner approval before commit/publication. Do not shorten, ignore or modify that fixture to satisfy the verifier.The new E2E interfaces are
node tools/e2e_research_handoff.mjs --case browser-consumption --require-owned-qaand--case adversarial --require-owned-qa. Both fail on unknown cases or zero assertions, use the real candidate server/runner/verifier/artifact paths, validate the trusted fixture ownership/source pins, and finish with bounded cleanup. Build, package/browser installation and cold database setup must finish before these checks. Missing context is an explicit setup failure, never permission to fall back to another database.Human approval is still pending until a concrete verified result exists. Publication is one review PR through the trusted native publisher; no merge, auto-merge or deployment.
Pinned verifier-policy SHA-256:
317285190031b55585a5dbf973fe5c1bc9268b8d5ed4847f6606f6aaec61fd91. Exact native policy and executable qualification are retained by the controller; the public issue omits private machine paths.