fix(manabrew-compat): declare the unsourceable targeting intent, correct the reveal entry - #6710
Merged
Merged
Conversation
…ect the reveal entry Two capability-registry entries claimed things the code no longer does. `local.prompt-family-display-acks-unsupported` still asserted that `WaitingFor::RevealChoice` falls to `local.prompt-unsupported`. It has not since the interaction projection landed: `RevealChoice` classifies as `HumanResponseModel::ExactCandidates`, so the generic path serves it as `ChooseFromSelection` — one labelled option per revealable card, plus the empty decline when `optional` (CR 701.20a). What remains is a fidelity gap, not a coverage one: cards reach the client as names because only a `Select` schema is reclassified as cards and a one-of list is not one. Per the crate's rule that a mapping claim must be exhibited rather than asserted, both halves are now pinned by tests that answer every offered option rather than a hand-picked one, so neither can pass on candidate ordering. `ChooseBoardTargetsInput.intent` is a placeholder, which nothing recorded. The field is required, and all 25 `TargetingIntent` variants are effect semantics with no neutral member, so every prompt must claim one. Phase has none to give: `TargetSequenceProjection` describes only the mechanism of the pick (`TargetSequenceAction`), and deriving intent from the pending spell's effect would be this adapter inventing game semantics. With one construction site, every target choice is advertised as `Hostile` — including targeting your own creature to buff it (CR 115.1) — while the emitted `hostile: false` contradicts it. The value is left alone, because no available value would be honest; the gap is declared as `local.targeting-intent-unsourceable` and commented at the emit site. The asymmetry is visible inside the same DTO: `TargetRefDto.intent` is an `Option` and `target_ref_dto` declines it with `None`, so the adapter already refuses to guess wherever refusing is expressible. The suggested extension asks upstream for that same `Option` at the prompt level. Registry recomputed rather than incremented: 83 declared, 69 live emits, 14 documentary.
matthewevans
enabled auto-merge
July 27, 2026 23:34
Contributor
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe compatibility adapter updates reveal-choice response handling tests and targeting documentation, revises unsupported-capability descriptions, and increases the registry and validation counts from 82 to 83 entries. ChangesReveal capability fidelity
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two capability-registry entries claimed things the code no longer does.
local.prompt-family-display-acks-unsupportedstill asserted thatWaitingFor::RevealChoicefalls tolocal.prompt-unsupported. It has notsince the interaction projection landed:
RevealChoiceclassifies asHumanResponseModel::ExactCandidates, so the generic path serves it asChooseFromSelection— one labelled option per revealable card, plus theempty decline when
optional(CR 701.20a). What remains is a fidelity gap,not a coverage one: cards reach the client as names because only a
Selectschema is reclassified as cards and a one-of list is not one. Per the crate's
rule that a mapping claim must be exhibited rather than asserted, both halves
are now pinned by tests that answer every offered option rather than a
hand-picked one, so neither can pass on candidate ordering.
ChooseBoardTargetsInput.intentis a placeholder, which nothing recorded.The field is required, and all 25
TargetingIntentvariants are effectsemantics with no neutral member, so every prompt must claim one. Phase has
none to give:
TargetSequenceProjectiondescribes only the mechanism of thepick (
TargetSequenceAction), and deriving intent from the pending spell'seffect would be this adapter inventing game semantics. With one construction
site, every target choice is advertised as
Hostile— including targetingyour own creature to buff it (CR 115.1) — while the emitted
hostile: falsecontradicts it. The value is left alone, because no available value would be
honest; the gap is declared as
local.targeting-intent-unsourceableandcommented at the emit site. The asymmetry is visible inside the same DTO:
TargetRefDto.intentis anOptionandtarget_ref_dtodeclines it withNone, so the adapter already refuses to guess wherever refusing isexpressible. The suggested extension asks upstream for that same
Optionatthe prompt level.
Registry recomputed rather than incremented: 83 declared, 69 live emits,
14 documentary.
Summary by CodeRabbit
Bug Fixes
Documentation