Skip to content

Homogenize tweaks (#491)#533

Open
mmontin wants to merge 14 commits into
mainfrom
mm/homogenize-tweaks
Open

Homogenize tweaks (#491)#533
mmontin wants to merge 14 commits into
mainfrom
mm/homogenize-tweaks

Conversation

@mmontin

@mmontin mmontin commented Jun 27, 2026

Copy link
Copy Markdown
Collaborator

Address the three shortcomings of the tweak DSL described in #491:

  • Naming consistency: rename predicate-based removal tweaks to plural form (removeInputTweak -> removeInputsTweak, removeOutputTweak -> removeOutputsTweak, removeMintTweak -> removeMintsTweak) and add a singular addMintTweak.
  • Missing redeemer tweaks: introduce Cooked.Tweak.Redeemers with redeemer modification tweaks for all five redeemer positions (spending, minting, proposing, withdrawing, certifying), an all-position variant, and tamperRedeemerTweak / malformRedeemerTweak mirroring the datum tweaks. modifySpendRedeemersOfTypeTweak moves here from Cooked.Tweak.Inputs.
  • Branch vs apply-all clarity: document the naming and branching conventions in doc/TWEAKS.md and summarize them in the Cooked.Tweak.Common haddock.

Add tests for the new redeemer tweaks and update CHEATSHEET and CHANGELOG.

fixes #491

mmontin and others added 14 commits June 28, 2026 01:11
Address the three shortcomings of the tweak DSL described in #491:

- Naming consistency: rename predicate-based removal tweaks to plural form
  (removeInputTweak -> removeInputsTweak, removeOutputTweak ->
  removeOutputsTweak, removeMintTweak -> removeMintsTweak) and add a singular
  addMintTweak.
- Missing redeemer tweaks: introduce Cooked.Tweak.Redeemers with redeemer
  modification tweaks for all five redeemer positions (spending, minting,
  proposing, withdrawing, certifying), an all-position variant, and
  tamperRedeemerTweak / malformRedeemerTweak mirroring the datum tweaks.
  modifySpendRedeemersOfTypeTweak moves here from Cooked.Tweak.Inputs.
- Branch vs apply-all clarity: document the naming and branching conventions in
  doc/TWEAKS.md and summarize them in the Cooked.Tweak.Common haddock.

Add tests for the new redeemer tweaks and update CHEATSHEET and CHANGELOG.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add and export viewAnyTweak (branching counterpart of viewAllTweak)
- Remove unused iviewTweak, inlining its single use in combineModsTweak
- Reimplement overMaybeSelectingTweak via selectP + elementsOf, so its
  position-based focus selection no longer relies on a manual counter;
  its select predicate is now Int -> Bool (documented in CHANGELOG)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Move the all-positions redeemer traversal from Cooked.Tweak.Redeemers to
  Cooked.Skeleton, exported as txSkelRedeemersT.
- Reimplement txSkelInsReferenceInRedeemers on top of txSkelRedeemersT.
- Replace the three duplicated allCombinations helpers with sequence from
  base, whose list-monad instance computes the same Cartesian product.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename three TxSkel fields and their lenses:
- txSkelIns -> txSkelInputs (txSkelInsL -> txSkelInputsL)
- txSkelInsReference -> txSkelReferenceInputs (txSkelInsReferenceL -> txSkelReferenceInputsL)
- txSkelOuts -> txSkelOutputs (txSkelOutsL -> txSkelOutputsL)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Certificate owners are stored with an IsEither kind, but several optics and
tweaks reached them through paths that forced IsScript, so their redeemers
were invisible. This fixes:

- txSkelRedeemersT's certifying branch (affecting
  txSkelReferenceInputsInRedeemers and malformRedeemerTweak),
- modifyCertificateRedeemersOfTypeTweak (affecting modifyRedeemersOfTypeTweak
  and tamperRedeemerTweak),
- autoFillReferenceScripts, which now also fills certifying reference scripts
  via the new txSkelRedeemedScriptsT traversal.

Adds regression tests for the certificate redeemer paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace infix operators (^?, ^.., & .~) with their prefix equivalents
(preview, toListOf, set) in Cooked.Tweak.Redeemers.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace overMaybeTweak, overMaybeSelectingTweak and combineModsTweak
with the overMods* family (overModsTweak, overModsSelectingTweak,
overModsTweakAll, overModsTweakAny) plus the selectF and embedFoldable
helpers. overModsTweak accumulates the labels of modified foci through a
Polysemy Writer instead of addLabelTweak, which removes the Common/Labels
import cycle, so the temporary Cooked.Tweak.Modifications module is merged
back into Cooked.Tweak.Common and deleted.

Migrate the callers accordingly:
- modifyRedeemersOfTypeAtTweak and tamperDatumTweak now use
  overModsTweakAll;
- doubleSatAttack now uses overModsTweak, branching its per-focus option
  lists through embedFoldable.

Update the Tweak.Common tests and the CHANGELOG to match.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fix typos, use single-quoted Haddock identifier references for
cross-links, and correct grammar throughout the module.

Rework the overModsTweak documentation: drop the argument bullet list
that was redundant with (and had drifted out of sync with) the inline
parameter docs, de-stale the worked examples to match the current
signature, and restructure them to cover all three grouping strategies
(all foci at once, one modification per transaction, all combinations)
with cross-references to overModsTweakAll and overModsTweakAny.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.

Homogenize tweaks

1 participant