Skip to content

evolution: _preview variant convention#215

Merged
Unisay merged 1 commit into
mainfrom
yura/evolution-preview-variant-convention
Jun 22, 2026
Merged

evolution: _preview variant convention#215
Unisay merged 1 commit into
mainfrom
yura/evolution-preview-variant-convention

Conversation

@Unisay

@Unisay Unisay commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

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:

  1. Track classification was derived from compilation_config.min_plutus_version: 1.61 default was authored with min_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.
  2. The 1.64 preview submission lived under a non-default _builtincasing variant, 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:

Suffix Variant Track
<Compiler>_<Version>_<Handle> default mainnet timeline
<Compiler>_<Version>_<Handle>_preview preview preview teaser

build_evolution_stats now reads the variant suffix directly. min_plutus_version keeps its operational role (cape submission verify --all skipping, cape submission measure --preview) but no longer steers the report.

What changes

Renames (no metadata edits):

  • Plinth_1.61.0.0_UnisayPlinth_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_builtincasingPlinth_1.64.0.0_Unisay_preview (7 scenarios) — _builtincasing described 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.uplcfactorial_naive_recursion.uplc
  • fibonacci_naive_recursion/.../fibonacci.uplcfibonacci_naive_recursion.uplc

These predate PR #203's scenario-name convention; the variant rename was the natural occasion to normalize them.

Code:

  • scripts/cape-subcommands/submission/report.shbuild_evolution_stats filters .variant == "default" or "preview", classifies tracks from the variant string, drops the min_plutus_version / CAPE_CURRENT_PLUTUS_VERSION threshold logic, removes the cape_versions.sh source line.
  • doc/adr/20260526-evolution-report-per-compiler-version-view.md — second ## Refinement section documents the convention and why it replaces the runtime-version threshold.

What the rendered page shows after this lands

Plinth_Unisay/ecd:

1.45.0.0 1.64.0.0 1.65.0.0 preview 1.64
36.7M 29.2M (-20.3%) 29.1M (-0.3% / -20.5%) 18.7M (-35.7% vs 1.65)

Scalus_Unisay: mainnet 0.12.1 → 0.16.0 → 0.17.0, no preview column.

When Plinth 1.65 _preview submissions 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 via cape_is_preview_submission; all mainnet pass.
  • bash scripts/cape-subcommands/test/test.sh — 53/53.
  • cape submission report --all regenerates 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-CI green (build_measure, verify, format checks).
  • Manual gh-pages deploy under pr-<N>/ for visual review (pr-ci preview filter doesn't trigger on rename-only diffs).

…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.
@github-actions

Copy link
Copy Markdown
Contributor

🚀 PR Preview Deployed

Preview 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.

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.

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_stats to classify tracks via the submission directory variant (default vs preview) and ignore other variants.
  • Document the _preview convention 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 Unisay merged commit 642e6b3 into main Jun 22, 2026
7 checks passed
@Unisay Unisay deleted the yura/evolution-preview-variant-convention branch June 22, 2026 15:38
github-actions Bot added a commit that referenced this pull request Jun 22, 2026
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

UPLC-CAPE Tracks UPLC-CAPE scope

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants