Repository navigation
refactor(responses): remove dormant stateful runtime dependencies - #944
hanakannzashi wants to merge 4 commits into
Conversation
🧭 IronLoop Run · ReviewThis comment updates in place as the Run moves through its stages. 🟩 Final result · Completed
Automatic trigger · attempt 1 of 3 · completed in 1m 26s IronLoop completed the review and posted it to GitHub. 🔗 Result |
There was a problem hiding this comment.
🔍 IronLoop review
🟢 No actionable findings
No actionable defects found. The refactor consistently retires stateful Conversations, Files, and response-history paths while preserving authenticated retirement responses and request-scoped stateless response execution.
Validation
- ✅ Static review — Inspected all changed files, surrounding route wiring, stateless validation, response processing, and transient repository behavior.
- ✅ Diff integrity — The complete change contains no whitespace or patch-format errors.
Review details
- Run:
2ac220c4-8b78-48cd-836b-d2bcf8c39dba - Workflow: Review
- Attempts: 1
|
Reviewed the removal for completeness and for behavior parity on the retained stateless path. Mechanically clean. No dangling references remain to 1. Client-supplied
|
5d506b2 to
3b15bd8
Compare
3e8e606 to
b5ab148
Compare
3b15bd8 to
1be1e87
Compare
|
Rebased this cleanup branch onto the updated #943 head. Addressed the two scoped review items here:
No schema, migration, data, or retention changes are included. |
b5ab148 to
f20cbbe
Compare
1be1e87 to
76b6c1b
Compare
4c662a9 to
55d899f
Compare
Stage I scope clarificationThis stacked cleanup deliberately does not remove Conversation/File routes, services, S3 wiring, schemas, or retained data. Those remain required for the temporary read-only migration views introduced by #943. Its scope is limited to dormant stateful dependencies inside the Responses runtime. Final Conversation/File and S3 removal belongs to Stage III, after the migration/archive path is complete. |
|
@ironloopai review |
Review · Status🟩 CompletedIronLoop completed the review and posted it to GitHub. ResultRun detailsManual command by think-in-universe · attempt 1 of 3 · completed in 26m 25s |
|
Re-reviewed at head Previously raised, now resolved
Verified for this diff
Non-blocking 1.
2. Redundant clones —
let mut domain_services = init_domain_services_with_pool(
database.clone(), // -> database
config,
organization_service.clone(), // -> organization_service
inference_provider_pool.clone(), // -> inference_provider_pool
metrics_service,
).await;3. Injected test doubles are now silently ignored —
4. Two-pass The
|
There was a problem hiding this comment.
Review · Summary
🟢 No actionable findings
No actionable issues found in the reviewed change.
Validation
- ✅ Compilation — The API and services crates compile successfully.
- ✅ Responses service tests — The focused Responses service test module passed all 38 tests.
Review details
- Run:
ff709a0a-ea89-4cb4-9ffe-d6587254012f - Attempts: 1
55d899f to
5ea72e8
Compare
|
Downstream consumer note, from Trace Commons. We verify NEAR AI inference receipts, so we reviewed this for impact on that path. On #944 itself: no impact. We scanned the full 2,371-line diff — zero occurrences of The part we would flag is in #943, which this is stacked on ( Context on why Responses-API attestation is load-bearing for us: we verify two receipt kinds, and they have different signers.
Because the Codex CLI speaks the Responses API exclusively, a deployment whose contributors use Codex sees only #943's Responses tag text says:
That introduces a case we currently cannot distinguish. Our fetch layer collapses every non-2xx into a single "unreachable" error, and the caller treats a failed fetch as a legitimately unattested submission — deliberately, since an outage should not block contribution. Today an absent receipt reliably means "brokered model" (a 404 we rely on). Under #943 it would additionally mean "hosted, but the signature write lost a race or the stream was cut", which is indistinguishable from both a brokered model and an ordinary network failure. The practical consequence is quiet rather than loud: hosted Codex traffic that should have carried a receipt gets recorded as unattested, and nothing signals that anything was lost. Two questions that would let us handle it correctly, and neither requires changing the design:
Happy to adapt on our side either way — mainly flagging that "no record" and "no attestation available" look identical to a downstream verifier right now, and only the first is new. For completeness, one thing #943 and #944 both leave unchanged, which we are not asking you to fix here: the ECDSA attestations returned by the report endpoint carry the model enclave's address rather than the ECDSA signer's, so there is no binding for that signer to check against. |
0912e43 to
9db8ed6
Compare
daa30b7 to
232380d
Compare
think-in-universe
left a comment
There was a problem hiding this comment.
Reviewed the stacked diff against 9db8ed6. No actionable findings introduced by this PR across correctness, security, performance/concurrency, tests, or repository conventions.
The typed Responses service retains request-scoped stores, client-managed function replay, and text/image conversion while dropping persistent-history/file dependencies. Conversation/File service wiring and the separately routed native transport remain intact.
Validation:
cargo fmt --all -- --checkandgit diff --checkpassed locally.- Local
cargo test -p services responses::service::tests --lib --lockedcould not complete: the build exhausted local disk space. No local test-pass claim. - GitHub unit, integration, lint, and security checks pass. E2E currently fails in
organization_priority::priority_is_preserved_for_tool_iterations_and_background_titleat line 414 (expected conversation creation 201, got 410). This concerns the retirement contract already present in the stacked base, not a regression introduced by this cleanup.
This code review does not clear the documented merge gate: merge #943, rebase/retarget, and obtain green required CI before merging. Review performed directly; parallel reviewer agents were unavailable.
|
@ironloopai review |
Review · Status🟩 CompletedIronLoop completed the review and posted it to GitHub. ResultRun detailsManual command by think-in-universe · attempt 1 of 3 · completed in 27m 49s |
|
@claude review |
Review: refactor(responses): remove dormant stateful runtime dependenciesI found no critical issues. This cleanup does what the description says:
Minor nits, not blocking:
As the description says, merge only after #943 lands and this PR has been rebased onto ✅ |
There was a problem hiding this comment.
Review · Summary
🟢 No actionable findings
No actionable issues found in the reviewed change.
Validation
- ✅ Stateless path review — Removed persistent response, conversation, file-input, and citation paths are unreachable after stateless validation; retained File and standalone MCP wiring remains independent.
- ✅ Focused Responses service tests — 38 response-service tests passed.
- ✅ API compilation — The API crate compiled successfully with the revised response-service construction and route wiring.
Review details
- Run:
3efffaee-3353-402b-93cc-c21c5146d48e - Attempts: 1
…ue-940-cleanup-main
Summary
POST /mcpweb-search endpointAPI contract preserved by this cleanup
This PR makes no new Stage I HTTP contract change; #943 remains the authoritative endpoint-level API matrix.
POST /v1/responsesNATIVE_RESPONSES_MODELSrequest uses provider-native Responses transport. Functions remain client-managed on both paths.410 GonePOST /v1/conversations/batch;GET /v1/conversations/{id};GET /v1/conversations/{id}/itemsno-storeDELETE /v1/conversations/{id}GET /v1/files;GET /v1/files/{id};GET /v1/files/{id}/contentno-storeDELETE /v1/files/{id}410 Gone,no-storePOST /mcp, direct Chat Completions, and ImagesDependency and merge procedure
Blocked by #943. This PR is ready for review, but it is not ready to merge while it is stacked on #943.
After #943 has merged to
main:main;main;Scope boundary
This is not the final removal of Conversations, Files, or S3. The cleanup removes the typed Responses service's stale construction of persistent response/history repositories, ConversationService, FileService/S3, and direct provider-pool dependency, plus unreachable history, file-input, and citation code. It retains the separately routed native stateless service's provider pool only for the explicit
NATIVE_RESPONSES_MODELStransport, and does not remove the actual DomainServices/AppState Conversation/File/S3 wiring used by the temporary views or retained DELETE routes.No schema, migration, retained row, S3 object, or S3 configuration cleanup is included. #947 is deferred until Files views and any archive/recovery need have been retired.
Validation on this stacked review head
cargo fmt --all -- --checkgit diff --checkcargo check -p servicescargo test -p services responses::service::tests --lib(38 passed)cargo fmt --all -- --checkgit diff --checkThe restacked head requires complete GitHub CI before merge.
Closes #940
Part of #934 and #953