evolution: _preview variant convention#215
Merged
Merged
Conversation
…nvention Follow-up to #209. Visual review surfaced that the preview teaser column for Plinth_Unisay showed 1.61, not the most recent preview compilation. Reason: track classification read min_plutus_version, but only the 1.61 default submission carried that field — 1.64 and 1.65 default ship UPLC compatible with the mainnet cost model, so their metadata leaves min_plutus_version unset, and the 1.64 preview attempt lived under a non-default `_builtincasing` variant that the report filtered out. New convention: author declares track via directory suffix. Plinth_X.Y.Z.W_Handle/ → variant default → mainnet timeline Plinth_X.Y.Z.W_Handle_preview/ → variant preview → preview teaser Track is now read directly from the variant name. min_plutus_version keeps its operational role (`cape submission verify --all` skipping, `cape submission measure --preview`) but no longer steers the report. Renames: Plinth_1.61.0.0_Unisay → Plinth_1.61.0.0_Unisay_preview Plinth_1.64.0.0_Unisay_builtincasing → Plinth_1.64.0.0_Unisay_preview Also corrects two pre-existing filename mismatches in the 1.64 preview submissions: factorial.uplc → factorial_naive_recursion.uplc and fibonacci.uplc → fibonacci_naive_recursion.uplc (per the PR #203 scenario- name convention; the variant rename was the natural occasion). report.sh: build_evolution_stats filters on `.variant == "default" or "preview"`, partitions per (compiler, author), and computes delta_vs_latest_mainnet for the latest preview submission. Removes the cape_versions.sh dependency from report.sh. ADR 20260526 extended with a second Refinement section documenting the variant convention and why it replaces the runtime-version threshold. Plinth 1.65 _preview submissions will land separately via plinth-cape-submissions; once they do, the teaser auto-promotes from 1.64 to 1.65.
Contributor
🚀 PR Preview DeployedPreview URL: https://intersectmbo.github.io/UPLC-CAPE/pr-215/ The preview site is automatically updated on every push to this PR and will be removed when the PR is closed. |
This was referenced Jun 22, 2026
There was a problem hiding this comment.
Pull request overview
Updates the evolution report to treat “preview vs mainnet” as an explicit, author-declared directory naming convention (_preview) instead of inferring it from compilation_config.min_plutus_version, aligning the report output with how submissions are organized on disk.
Changes:
- Update
build_evolution_statsto classify tracks via the submission directory variant (defaultvspreview) and ignore other variants. - Document the
_previewconvention and rationale in the evolution report ADR. - Apply submission-directory renames and normalize a couple of scenario artifact filenames to the scenario name convention.
Reviewed changes
Copilot reviewed 2 out of 61 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| doc/adr/20260526-evolution-report-per-compiler-version-view.md | Documents the _preview variant convention and why it replaces metadata-derived track classification. |
| scripts/cape-subcommands/submission/report.sh | Implements variant-based track classification (default vs preview) in build_evolution_stats. |
| submissions/ecd/Plinth_1.61.0.0_Unisay_preview/ecd.uplc | Adds/relocates the preview UPLC artifact for ecd (Plinth 1.61). |
| submissions/ecd/Plinth_1.61.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for ecd preview submission (Plinth 1.61). |
| submissions/ecd/Plinth_1.61.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for ecd preview submission (Plinth 1.61). |
| submissions/ecd/Plinth_1.61.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for ecd preview submission (Plinth 1.61). |
| submissions/ecd/Plinth_1.64.0.0_Unisay_preview/ecd.uplc | Adds/relocates the preview UPLC artifact for ecd (Plinth 1.64). |
| submissions/ecd/Plinth_1.64.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for ecd preview submission (Plinth 1.64). |
| submissions/ecd/Plinth_1.64.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for ecd preview submission (Plinth 1.64). |
| submissions/ecd/Plinth_1.64.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for ecd preview submission (Plinth 1.64). |
| submissions/factorial_naive_recursion/Plinth_1.61.0.0_Unisay_preview/factorial_naive_recursion.uplc | Adds/relocates the preview UPLC artifact for factorial_naive_recursion (Plinth 1.61). |
| submissions/factorial_naive_recursion/Plinth_1.61.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for factorial_naive_recursion preview submission (Plinth 1.61). |
| submissions/factorial_naive_recursion/Plinth_1.61.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for factorial_naive_recursion preview submission (Plinth 1.61). |
| submissions/factorial_naive_recursion/Plinth_1.61.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for factorial_naive_recursion preview submission (Plinth 1.61). |
| submissions/factorial_naive_recursion/Plinth_1.64.0.0_Unisay_preview/factorial_naive_recursion.uplc | Adds/relocates the preview UPLC artifact for factorial_naive_recursion (Plinth 1.64). |
| submissions/factorial_naive_recursion/Plinth_1.64.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for factorial_naive_recursion preview submission (Plinth 1.64). |
| submissions/factorial_naive_recursion/Plinth_1.64.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for factorial_naive_recursion preview submission (Plinth 1.64). |
| submissions/factorial_naive_recursion/Plinth_1.64.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for factorial_naive_recursion preview submission (Plinth 1.64). |
| submissions/fibonacci/Plinth_1.61.0.0_Unisay_preview/fibonacci.uplc | Adds/relocates the preview UPLC artifact for fibonacci (Plinth 1.61). |
| submissions/fibonacci/Plinth_1.61.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for fibonacci preview submission (Plinth 1.61). |
| submissions/fibonacci/Plinth_1.61.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for fibonacci preview submission (Plinth 1.61). |
| submissions/fibonacci/Plinth_1.61.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for fibonacci preview submission (Plinth 1.61). |
| submissions/fibonacci/Plinth_1.61.0.0_Unisay_preview/README.md | Adds/relocates implementation notes for fibonacci preview submission (Plinth 1.61). |
| submissions/fibonacci/Plinth_1.64.0.0_Unisay_preview/fibonacci.uplc | Adds/relocates the preview UPLC artifact for fibonacci (Plinth 1.64). |
| submissions/fibonacci/Plinth_1.64.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for fibonacci preview submission (Plinth 1.64). |
| submissions/fibonacci/Plinth_1.64.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for fibonacci preview submission (Plinth 1.64). |
| submissions/fibonacci/Plinth_1.64.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for fibonacci preview submission (Plinth 1.64). |
| submissions/fibonacci_naive_recursion/Plinth_1.61.0.0_Unisay_preview/fibonacci_naive_recursion.uplc | Adds/relocates the preview UPLC artifact for fibonacci_naive_recursion (Plinth 1.61). |
| submissions/fibonacci_naive_recursion/Plinth_1.61.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for fibonacci_naive_recursion preview submission (Plinth 1.61). |
| submissions/fibonacci_naive_recursion/Plinth_1.61.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for fibonacci_naive_recursion preview submission (Plinth 1.61). |
| submissions/fibonacci_naive_recursion/Plinth_1.61.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for fibonacci_naive_recursion preview submission (Plinth 1.61). |
| submissions/fibonacci_naive_recursion/Plinth_1.64.0.0_Unisay_preview/fibonacci_naive_recursion.uplc | Adds/relocates the preview UPLC artifact for fibonacci_naive_recursion (Plinth 1.64). |
| submissions/fibonacci_naive_recursion/Plinth_1.64.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for fibonacci_naive_recursion preview submission (Plinth 1.64). |
| submissions/fibonacci_naive_recursion/Plinth_1.64.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for fibonacci_naive_recursion preview submission (Plinth 1.64). |
| submissions/fibonacci_naive_recursion/Plinth_1.64.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for fibonacci_naive_recursion preview submission (Plinth 1.64). |
| submissions/htlc/Plinth_1.61.0.0_Unisay_preview/htlc.uplc | Adds/relocates the preview UPLC artifact for htlc (Plinth 1.61). |
| submissions/htlc/Plinth_1.61.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for htlc preview submission (Plinth 1.61). |
| submissions/htlc/Plinth_1.61.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for htlc preview submission (Plinth 1.61). |
| submissions/htlc/Plinth_1.61.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for htlc preview submission (Plinth 1.61). |
| submissions/htlc/Plinth_1.61.0.0_Unisay_preview/README.md | Adds/relocates implementation notes for htlc preview submission (Plinth 1.61). |
| submissions/htlc/Plinth_1.64.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for htlc preview submission (Plinth 1.64). |
| submissions/htlc/Plinth_1.64.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for htlc preview submission (Plinth 1.64). |
| submissions/htlc/Plinth_1.64.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for htlc preview submission (Plinth 1.64). |
| submissions/linear_vesting/Plinth_1.61.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for linear_vesting preview submission (Plinth 1.61). |
| submissions/linear_vesting/Plinth_1.61.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for linear_vesting preview submission (Plinth 1.61). |
| submissions/linear_vesting/Plinth_1.61.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for linear_vesting preview submission (Plinth 1.61). |
| submissions/linear_vesting/Plinth_1.61.0.0_Unisay_preview/README.md | Adds/relocates implementation notes for linear_vesting preview submission (Plinth 1.61). |
| submissions/linear_vesting/Plinth_1.64.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for linear_vesting preview submission (Plinth 1.64). |
| submissions/linear_vesting/Plinth_1.64.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for linear_vesting preview submission (Plinth 1.64). |
| submissions/linear_vesting/Plinth_1.64.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for linear_vesting preview submission (Plinth 1.64). |
| submissions/two_party_escrow/Plinth_1.61.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for two_party_escrow preview submission (Plinth 1.61). |
| submissions/two_party_escrow/Plinth_1.61.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for two_party_escrow preview submission (Plinth 1.61). |
| submissions/two_party_escrow/Plinth_1.61.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for two_party_escrow preview submission (Plinth 1.61). |
| submissions/two_party_escrow/Plinth_1.64.0.0_Unisay_preview/metadata.json | Adds/relocates metadata for two_party_escrow preview submission (Plinth 1.64). |
| submissions/two_party_escrow/Plinth_1.64.0.0_Unisay_preview/metrics.json | Adds/relocates metrics for two_party_escrow preview submission (Plinth 1.64). |
| submissions/two_party_escrow/Plinth_1.64.0.0_Unisay_preview/source/README.md | Adds/relocates source reproduction notes for two_party_escrow preview submission (Plinth 1.64). |
Unisay
added a commit
that referenced
this pull request
Jun 22, 2026
#216) * submissions: Plinth 1.65.0.0 (Unisay) preview track across 7 scenarios Adds Plinth_1.65.0.0_Unisay_preview/ for ecd, factorial_naive_recursion, fibonacci, fibonacci_naive_recursion, htlc, linear_vesting, and two_party_escrow. Preview track = the Plinth 1.65.0.0 compiler combined with the BuiltinCasing extension; the emitted UPLC uses builtins outside the mainnet cost model, so each submission carries compilation_config.min_plutus_version 1.65.0.0 — the field the _preview classification keys on. The .uplc filename is the scenario folder name. Source: Unisay/plinth-cape-submissions @ 3efc19ad785a7dcb6aead5a936d18654f0649a2b (built with the `preview` cabal flag). metrics.json produced by `cape submission measure --preview`. Builds on the `_preview` suffix + variant-based preview classification from #215; intended to merge after it. * source/README: point Branch field at main The source commit 3efc19a landed on main via plinth-cape-submissions#8 (merge commit), and the feature branch was auto-deleted on merge. Update the `Branch:` field in all 7 preview submissions from the deleted feature branch to `main`, matching the Plinth_1.64.0.0_Unisay_preview convention. Reproduction is by commit SHA and is unaffected.
4 tasks
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.
Why
PR #209 shipped the per-compiler evolution view. Visual review of the Plinth_Unisay timeline surfaced that the preview teaser column showed 1.61, not the most recent preview compilation. Two reasons:
compilation_config.min_plutus_version: 1.61 default was authored withmin_plutus_version: "1.61.0.0", but 1.64 and 1.65 default ship UPLC compatible with the mainnet cost model and so left it unset — they fell into mainnet by accident._builtincasingvariant, which the evolution report filtered out as a sibling experiment.The author's intent ("is this an alternative mainnet artifact or a preview-only artifact?") is cleanly captured by directory naming, not by inspecting metadata. This PR makes that intent explicit.
New convention
Per
(scenario, compiler, version, author)the author may ship two submissions on the evolution timeline:<Compiler>_<Version>_<Handle>default<Compiler>_<Version>_<Handle>_previewpreviewbuild_evolution_statsnow reads the variant suffix directly.min_plutus_versionkeeps its operational role (cape submission verify --allskipping,cape submission measure --preview) but no longer steers the report.What changes
Renames (no metadata edits):
Plinth_1.61.0.0_Unisay→Plinth_1.61.0.0_Unisay_preview(7 scenarios) — the 1.61 default release was always a preview submission; the path now matches author intent.Plinth_1.64.0.0_Unisay_builtincasing→Plinth_1.64.0.0_Unisay_preview(7 scenarios) —_builtincasingdescribed the implementation strategy but failed to express the track-level intent. Per-implementation experimentation belongs in additional variants (_builtincasing,_vanrossem,_prepacked, …) on either track.Fix-along corrections:
factorial_naive_recursion/.../factorial.uplc→factorial_naive_recursion.uplcfibonacci_naive_recursion/.../fibonacci.uplc→fibonacci_naive_recursion.uplcThese predate PR #203's scenario-name convention; the variant rename was the natural occasion to normalize them.
Code:
scripts/cape-subcommands/submission/report.sh—build_evolution_statsfilters.variant == "default" or "preview", classifies tracks from the variant string, drops themin_plutus_version/CAPE_CURRENT_PLUTUS_VERSIONthreshold logic, removes thecape_versions.shsource line.doc/adr/20260526-evolution-report-per-compiler-version-view.md— second## Refinementsection documents the convention and why it replaces the runtime-version threshold.What the rendered page shows after this lands
Plinth_Unisay/ecd:
Scalus_Unisay: mainnet 0.12.1 → 0.16.0 → 0.17.0, no preview column.
When Plinth 1.65
_previewsubmissions land (delegated separately to plinth-cape-submissions), the teaser auto-promotes from 1.64 to 1.65.Test plan
cape submission verify --all— preview submissions skipped viacape_is_preview_submission; all mainnet pass.bash scripts/cape-subcommands/test/test.sh— 53/53.cape submission report --allregenerates locally; build_evolution_stats output inspected: Plinth_Unisay shows mainnet 1.45/1.64/1.65 + preview 1.64, Scalus_Unisay shows mainnet only.pr-<N>/for visual review (pr-ci preview filter doesn't trigger on rename-only diffs).