Repository navigation
XL-2 3c: enumerate ServiceSetAside consumers before delete-first - #13637
gunbai-bot[bot] wants to merge 1 commit into
Conversation
…first cut. Enumerate in-gate and out-of-gate producers so 3c does not drop a silent consumer or inherit the blanket unreachable cause. Co-authored-by: Cursor <cursoragent@cursor.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 89a3ded600
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| - `body_lowering_reason_realization_member_set_aside` — kind `RealizationMemberSetAside` | ||
| - `body_lowering_reason_interface_member_unmodeled` — kind `InterfaceMemberUnmodeled` | ||
| - Fatal on the full route: `body_lowering_reason_service_realization_unreachable` (owned row in `v2.workflow.compile_door_cause_ownership` `known_frontier_causes`, lane `SharedSelfHostCriticalPath`). The two set-aside reasons are pending advisories, not fatal last elements, and have no ownership rows. |
There was a problem hiding this comment.
Classify the interface reason as potentially fatal
For a record field with a from wire key, body_lower_field_decl_block_payload directly returns Rejected with body_lowering_reason_interface_member_unmodeled as the fatal diagnostic (src/v2/compiler/body_lowering_fold.dag:1329-1334). Therefore, only occurrences emitted through service_set_aside_diagnostics are pending advisories; describing both reason symbols as never fatal can cause the 3c cut to overlook the record-field cause's ownership or replacement requirements.
Useful? React with 👍 / 👎.
| - `body_lower_operation_status_arms` — exit / response / mock_response lower into the sibling **and** append `RealizationMemberSetAside` | ||
| - `body_lower_service_member` on service-level `transport` — set-aside only | ||
| - `body_lower_realization_with_rows` — io `from` keys already become projection rows; the field items are still tagged `InterfaceMemberUnmodeled` | ||
| - Accumulators: `BodyLowerIoBlock.set_aside`, `BodyLowerOperationAcc.set_aside`, `BodyLowerRealizationAcc.members`, `BodyLowerServiceAcc.set_aside` |
There was a problem hiding this comment.
Include all ServiceSetAside carrier structs
The accumulator census omits IoAcc.set_aside and, more importantly, BodyLowerOperation.set_aside and BodyLowerOperation.realization_members. The latter fields actively carry operation and realization rows into body_lower_resource_with_capability, so a 3c implementation following this supposedly complete roster would miss carrier seams that must be rewritten when ServiceSetAside is removed; add these readers to the list.
Useful? React with 👍 / 👎.
Summary
ServiceSetAside, both set-aside reasons,admit_set_aside, andbody_lowering_reason_service_realization_unreachable, named by module and symbol, in-gate vs out-of-gate.v2.test.claim.namespace_xl0.reference_conservation; remaining claim modules are out-of-gate and listed so they cannot fail silently.compile_door_cause_ownershiprows; the interface reason also has a record-field producer that must survive if the type is deleted.Test plan
docs/plans/xl2-3c-service-set-aside-census.mdagainstv2.compiler.body_lowering_fold/v2.compiler.normalize/required_gate_authored_modulesMade with Cursor