Skip to content

fusion: re-enabling LearnableFusionPolicy can train on an unranked union #302

Closed

Description

@Birfy

Follow-up to merged #298

Tracks the existing source review finding after merge. It is not an additional independent finding.

On main c6ef1f39ab4e03294aac60c3d832d365bff1ad7d, construction creates the inner DefaultFusion with the initial tournament flag. The governor later changes the outer policy's flag, while _run_tournament calls that unchanged inner, increments tournament_runs and learns from its fused result.

Affected scenario

Opt in with LearnableFusionPolicy(tournament=False), then enable its outer tournament flag (including the engine budget governor's below-soft-floor path). The inner remains tournament=False and returns an unranked union. The wrapper treats this as a measured tournament and a positive fusion training label. Counterfactual exploration through the same method cannot recover a real ranking.

The ordinary initial tournament=True default is not the affected case. This is a source-confirmed path, not a locally executed reproduction.

Bounded acceptance criteria

  • Whenever the label-producing tournament path is selected, the delegated inner must actually perform the intended ranking; synchronize state or otherwise separate ranked and unranked delegation.
  • Do not increment measured tournament/training counters or produce winner labels from an unranked union.
  • Retain budget-disabled union behavior without training labels and preserve existing default behavior.

Proposed regression checks (not executed here)

Construct with tournament=False, switch the outer flag to True, and provide distinct nonconflicting candidates plus an instrumented verifier. Assert actual ranking calls, a ranked trial and labels derived from the measured winner rather than the union flag. Cover False→True via the engine governor, initial True→False→True, and forced counterfactual exploration (epsilon=1); check counters and training observations.

Scope: fusion policy and offline regression tests. No implementation, local installation/test run, paid calls, release or workflow change is performed/requested by this filing. Existing local execution holds remain in force.

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions