Skip to content

Specificity review: preserve established request and writer sinks during helper-effect traversal #5000

Open

Description

@realmarcin

The proposed #4997 receiving-helper traversal currently mistakes an established model-input sink for a discarded helper call. In a normal preconstruction list flow, parts.append(TEXT) followed by PhaseRequest(user="\n".join(parts), ...) raises ConfigError: unsupported effect on model-text local container (container passed through an unmodeled projection) at the request constructor. The direct append control passed before the proposal.

The new effect index sees the local name inside every call argument, including the enclosing request constructor; the consumed-expression set contains the selected field expression but not that enclosing sink call. The same distinction needs review for established file-writing sinks and ordinary local scalar text.

Fix the boundary using the actual recognized sink/consumption context. Do not exempt unknown mutating helpers merely because they contain an expression used elsewhere, and preserve the new repeated-actual, recursive-effect and unsupported-projection controls.

Root-run evidence: the first frozen proposal on local integration head 28582f87 produced 10 passing and 5 failing regression methods, with no setup errors; all five failures were this request-sink refusal. Source and Git state were unchanged by the run. The proposal is local and unmerged.

Acceptance: the previously passing direct append case remains valid; receiving-helper additions, repeated distinct actuals, default argument scope and mapping-key extension pass; unsafe helper escapes still refuse; existing request and writer derivation coverage remains intact. Related: #4405, #4997–#4999.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions