Skip to content

ExtractMixin tolerates keyword-only construction difference - #358

Merged
trissim merged 1 commit into
mainfrom
claude/nra-engine-gaps-0kjz79
Nov 11, 2026
Merged

trissim merged 1 commit into
mainfrom
claude/nra-engine-gaps-0kjz79

Conversation

@trissim

@trissim trissim commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

Summary

For ExtractMixin moves, DIFFERENT_CONSTRUCTION is downgraded to SAME_CONSTRUCTION when the only difference is class keywords (e.g. affix vs nothing). The mixin is a new class that doesn't inherit keywords. Dataclass declaration, metaclass, and decorator mismatches still guard.

What changed

  • _construction_receipts now accepts optional move parameter
  • When move is ExtractMixin and all differences are class-keyword-only, produces SAME_CONSTRUCTION instead of DIFFERENT_CONSTRUCTION
  • Call site passes move to the method
  • New test: test_keyword_only_construction_diff_does_not_block_extract_mixin

Impact on agent-comms

Unblocks 3 more missing_mixin verdicts where one class has affix keyword and the other doesn't:

  • HistoricalNativeInput / WakeClaim
  • Channel / ChannelPreferences
  • InstalledEvidence / ReportedProblemOrder

Combined with PR #357 (INHERITED tolerance): 5 original + 3 inherited + 3 keyword = up to 11 mixin ops.

Evidence

6/6 tests green (5 existing + 1 new).


Generated by Claude Code

For ExtractMixin moves, a DIFFERENT_CONSTRUCTION guard that fires only
because class keywords differ (e.g. affix vs nothing) is downgraded to
SAME_CONSTRUCTION. The mixin is a new class that doesn't inherit the
composers' keywords. Dataclass declaration, metaclass, and decorator
differences still guard.

Unblocks 3 more missing_mixin verdicts on agent-comms where one class
is a DeclaredFamily member (with affix) and the other is a plain
dataclass: HistoricalNativeInput/WakeClaim, Channel/ChannelPreferences,
InstalledEvidence/ReportedProblemOrder.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RnH6dR7JdknxC8XJJtW8Uh
Copilot AI balanced review requested due to automatic review settings November 11, 2026 18:46

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@trissim
trissim merged commit bf8f102 into main Nov 11, 2026
8 of 10 checks passed
trissim pushed a commit that referenced this pull request Nov 11, 2026
Positional construction is handled at the owner level as a keywording
prerequisite (keyword_cure). It should not block the verdict itself for
ExtractMixin moves. The owner candidate's _field_order_receipts produces
the POSITIONAL_CONSTRUCTION guard with keyword cure; the recipe synthesizer
checks owner.keyword_cure before the pick match.

Unblocks 5 more missing_mixin verdicts on agent-comms:
SessionFacts/ImportBuffer, BusRouteCounts/BusRouteKeys,
RouteUnread/CursorRow, FailedTurnEvidence/GoalDerivedContact,
HostMemoryHigh/HostResources (last also has DECLARATION_DIFFERS).

Combined with PRs #357 and #358: 5 + 3 + 3 + 5 = up to 16 mixin ops.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RnH6dR7JdknxC8XJJtW8Uh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants