Skip to content

Hard-delete Pair taxonomy from shipping surfaces - #450

Closed
lemone112 wants to merge 1 commit into
agent/f0-program-lcs-loweringfrom
agent/pair-taxonomy-hard-delete
Closed

Hard-delete Pair taxonomy from shipping surfaces#450
lemone112 wants to merge 1 commit into
agent/f0-program-lcs-loweringfrom
agent/pair-taxonomy-hard-delete

Conversation

@lemone112

@lemone112 lemone112 commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

Stack

Draft stacked on #449. Review this deletion only after #449.

Exact base: a244a61abfc36b76188713d551b997294fd1141d.
Exact head: e84d07ef1c0d7d8b897fd50185fbd32dae14f41b.

This is a deletion-first prerequisite for #419, not the terminal Core → WASM → controller cut.

What changed

  • Deletes the private Core pair.rs execution path and its Pair-label tests.
  • Removes PairFill / PairLabel from Core recipes, validation, lowering, semantic dispatch, presets, fixtures, mutation scope, and boundary guards.
  • Removes the matching WASM DTO and TypeScript variants plus both canonical Lab UI fixtures and the npm boundary golden.
  • Removes obsolete joint-report accessors whose only consumers were the deleted Pair tests.
  • Rewrites the documentation boundary around the generic client-owned Program topology.
  • Regenerates the point-support artifact and verifier binding because lib.rs is part of its exact source closure.
  • Rebinds the zero-headroom runtime WASM ratchet to the exact canonical artifact measured by CI after deletion: 376977 B (-47994 B), not an invented cap.

The delta is intentionally deletion-heavy: 36 additions / 1,262 deletions across 23 paths.

Hard boundary

There is no deprecation alias, adapter, compatibility parser, named serde rejection tombstone, or hidden Pair lowering. The useful relationship is not a Core role: a client declares opaque nodes and connects foreground Paint → derived Surface → Occurrence → constraints in the generic Program algebra.

This PR does not contain the in-progress finite-target F1 work, packed WASM wire, or controller primitive.

Existing Glow, Material, Ladder, and the remaining legacy recipe facade are outside this narrow delta and remain scheduled for hard deletion in the terminal #419 cut. This PR does not claim that the full repository is already free of Lab UI vocabulary.

Validation

  • Exact Pair taxonomy search over the staged shipping tree: 0 matches for PairFill|PairLabel|pair-fill|pair-label|pair_fill|pair_label|crate::pair.

  • cargo test -p labcolors-core --lib --offline --no-fail-fast: 697 passed, 0 failed, 6 ignored.

  • cargo clippy -p labcolors-core --all-targets --offline -- -D warnings: passed.

  • Point-support independent verifier: passed over the exact 19-file semantic closure with 43 negative controls.

  • Source closure: 6a541c168d9a5c266367050caec0114ea137a8f20f11f9868a6e46c821ba2ec2.

  • Proof payload: 535001a983b26b2ba9a157417e4d42de3517c0bf784c9d1863f0e4943981e959.

  • Verifier: 2e192f355564c93d83a8f43ae648e06b34cbcb20d347137a998608657c98c434.

  • Artifact bytes: 030c1f4b98bde6c59c84525bd61e5b0a61bfdf2f3951cbda881a2a3d983af71d.

  • Canonical Linux x64 artifact first measured by CI run 29955098154 and reproduced at zero headroom by exact-head CI run 29955554404: 376977 B raw, 168159 B gzip diagnostic-only, SHA-256 e9c5f36158e6d011835c483069c3f83a8c0ad2f459f3f29a402676093d3d6dd7.

  • Remote CI run 29955554404: success — rustfmt/clippy, MSRV, full tests and proof gates, audit, docs, WASM build/headless/size, npm artifact, and Node 22 consumer floor.

  • Native conformance run 29955554428: success on Linux Swift 6.1.3; macOS arm64 is policy-skipped because paid runners are disabled.

  • CodeRabbit status check: success; no review submission or inline threads were produced.

Refs #419.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 8026ec31-2148-4209-acba-e9c4ba493d7e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/pair-taxonomy-hard-delete

Comment @coderabbitai help to get the list of available commands.

@lemone112
lemone112 force-pushed the agent/pair-taxonomy-hard-delete branch from cb4bc6f to e84d07e Compare July 22, 2026 20:32
lemone112 added a commit that referenced this pull request Jul 25, 2026
…fact

The exact-length gate still pinned 376830B from
`canonical-authored-program-lowerer` (#456, run 29971399220). This slice
grew the runtime artifact to 376985B and did not carry the re-pin that
every earlier stacked slice performed (#450, #452, #454, #456), so the
gate has rejected this head and every head above it.

The +155B is attributable to this slice alone: runs 30115821523 (#457),
30124467410 (#458), 30125634830 (#459), 30129537515 (#460) and
30136346868 (#461) all measure exactly 376985B, so #458-#461 contribute
zero bytes to the artifact and were failing only on the inherited pin.

The new measurement is the CI run for this exact head
(39ee0a7), not a local build: the
canonical platform is linux-x64 and a local arm64 build only produces a
DIAGNOSTIC result. The budget file's own SHA-256 is re-pinned in the
checker so the drift gate keeps rejecting unattributed edits.

Co-Authored-By: Claude <noreply@anthropic.com>
lemone112 added a commit that referenced this pull request Jul 26, 2026
* feat(core): compile generic point-render sessions

* fix(core): satisfy format and all-target lint gates

* perf(core): recycle point-render session buffers

* style(core): format reusable session buffers

* feat(lcs): execute sealed sRGB8 tristimulus derivation

* style(lcs): format sealed tristimulus slice

* feat(lcs): derive versioned appearance views

* style(lcs): canonicalize Oklab coefficient

* feat(core): expose typed terminal program path

* fix(core): satisfy terminal Program quality gates

* feat(lcs): bind private output projection registry

* style(core): canonicalize release module order

* fix(core): scope private registry lint firewall

* fix(core): harden terminal Program admission

* style(core): match pinned Rust formatter

* feat(core): bind F0 release descriptors

* perf(core): add linear canonical surface ingestion

* refactor(core): unify terminal physical identities

* perf(core): prebind terminal evaluation slots

* perf(core): make present ingestion lazy and borrowed

* refactor(core): remove per-port surface mutation

* feat(core): evaluate typed constraints and emit terminal paints

* feat(core): bind observation groups to runtime streams

* refactor(core): share one encoded point Paint value

* refactor(core): share revision-bound observation state

- admit correlated scenario sets once behind shared immutable backing
- make joint selection domain-safe, linear, and ownership-retryable
- refresh source-bound release proof gates

* fix(ci): bind V2a budget to measured artifact

- keep allocation tests ownership-preserving without a large Result closure
- pin the zero-headroom WASM ratchet to the reproducible V2a artifact

* refactor(core): remove superseded Program runtime

Keep only the private Program compiler/lowering payload for the direct sole-Session bridge.
Delete the duplicate owner, lifecycle, output materialization, and test evaluator scaffolding.
Pin the hard cut with a negative facade gate and refresh the exact point-support source receipt.

* feat(core): execute compiled plans through sole Session

Replace the point-support-specific lifecycle with one sealed monomorphized Session, attach reusable CompiledProgram epochs through strong ownership, and retain complete case-by-constraint reports. Bind every decision to the exact admitted observation before atomic commit and refresh release proof pins.

* feat(core): bind Program assessments to context-bound LCS

* Hard-delete Pair taxonomy from shipping surfaces

* Compile typed finite targets into Program sessions

* quarantine unsupported Display P3 promises

* core: make compiled programs the sole session-generation owner

* core: close the evaluator union and package session bridge

* core: derive a typed CAM16-UCS occurrence view

* core: lower authored physical declarations into the canonical Program

* core: bind Program content identity

* core: name versioned identity discriminants

* fix(ci): re-pin the runtime WASM budget to this slice's measured artifact

The exact-length gate still pinned 376830B from
`canonical-authored-program-lowerer` (#456, run 29971399220). This slice
grew the runtime artifact to 376985B and did not carry the re-pin that
every earlier stacked slice performed (#450, #452, #454, #456), so the
gate has rejected this head and every head above it.

The +155B is attributable to this slice alone: runs 30115821523 (#457),
30124467410 (#458), 30125634830 (#459), 30129537515 (#460) and
30136346868 (#461) all measure exactly 376985B, so #458-#461 contribute
zero bytes to the artifact and were failing only on the inherited pin.

The new measurement is the CI run for this exact head
(39ee0a7), not a local build: the
canonical platform is linux-x64 and a local arm64 build only produces a
DIAGNOSTIC result. The budget file's own SHA-256 is re-pinned in the
checker so the drift gate keeps rejecting unattributed edits.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(ci): re-bind the point-support source capsule to this slice's cone

This slice moves files inside the point-support semantic cone, so the capsule
digest and the committed surplus proof move with it. Both are now regenerated in
the same commit that causes the drift, matching the convention the rest of the
stack follows; previously the re-bind was batched at #460, which left #457-#459
fail-closed on their own heads and made the stack unmergeable in order.

Numerical review: every proof field is unchanged. Only the source-binding
identities move -- the file hashes of the cone files this slice edits, the
resulting closure digest, the verifier hash and the rolled-up payload hash.
The surplus mathematics is byte-identical.

Co-Authored-By: Claude <noreply@anthropic.com>

* core: project complete program certificate evidence

* fix(ci): re-bind the point-support source capsule to this slice's cone

This slice moves files inside the point-support semantic cone, so the capsule
digest and the committed surplus proof move with it. Both are now regenerated in
the same commit that causes the drift, matching the convention the rest of the
stack follows; previously the re-bind was batched at #460, which left #457-#459
fail-closed on their own heads and made the stack unmergeable in order.

Numerical review: every proof field is unchanged. Only the source-binding
identities move -- the file hashes of the cone files this slice edits, the
resulting closure digest, the verifier hash and the rolled-up payload hash.
The surplus mathematics is byte-identical.

Co-Authored-By: Claude <noreply@anthropic.com>

* core: bind Program operations to exact owner snapshots

* fix(ci): re-bind the point-support source capsule to this slice's cone

This slice moves files inside the point-support semantic cone, so the capsule
digest and the committed surplus proof move with it. Both are now regenerated in
the same commit that causes the drift, matching the convention the rest of the
stack follows; previously the re-bind was batched at #460, which left #457-#459
fail-closed on their own heads and made the stack unmergeable in order.

Numerical review: every proof field is unchanged. Only the source-binding
identities move -- the file hashes of the cone files this slice edits, the
resulting closure digest, the verifier hash and the rolled-up payload hash.
The surplus mathematics is byte-identical.

Co-Authored-By: Claude <noreply@anthropic.com>

* core: single-own compiled observation schemas

* chore(proof): document Python 3.9 zip invariant

* core: define the public Program API

* core: address Program API review

* fix(ci): re-bind public Program proof capsule

* test: close compile-fail sentinel escape

* core: make joint order non-empty by construction and bound evidence cells

`AdmittedFiniteJointOrderV1` stored one flat tuple slice, so an empty
admitted order was representable and the evaluation path carried a
runtime `state_count == 0 -> InternalInvariant` guard to reject it. The
guard proved nothing about the type; it only re-checked a property the
constructor already enforced.

Split the order into `first + rest`. Non-emptiness becomes structural,
`state_count()` is total, and the `InternalInvariant` branch in
`prepare_program_evaluation_buffers` is deleted rather than left dead.
The `joint_state_count: Option<usize>` parameter disappears with it:
cell counts are now derived from the epoch itself.

The same pass stops reserving an exhaustive-conflict buffer that no
constraint can ever fill. `can_conflict` is false when every compiled
constraint is report-only, so a report-only program no longer reserves
`cases x constraints x states` cells and no longer reports
`ResourceExhausted` for a conflict it cannot produce.

`OwnerV1::evidence_cell_bounds` exposes the same arithmetic as a pure
preflight, with `EvidenceBoundsErrorV1::CardinalityOverflow` as the only
closed failure. It creates no Session and mutates no state.

Verified locally on the CI-pinned toolchain: full workspace tests green,
`cargo fmt --all --check` and `cargo clippy --workspace --all-targets --
-D warnings` clean.

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: explain packed proof invariants

* core: fail closed without current Program evidence

* core: revoke outputs on unknown session handoff

* core: keep incomplete Program crate-private

* perf: bind smaller private Program wasm

* core: make staged Program unexportable

* ci: explain rustdoc surface mismatch

---------

Co-authored-by: Claude <noreply@anthropic.com>
@lemone112

Copy link
Copy Markdown
Collaborator Author

Superseded by the reviewed cumulative squash merge #465 (24fd1f4). The lower stacked branch was intentionally not merged on its own because its intermediate head was not the safe terminal public boundary.

@lemone112 lemone112 closed this Jul 26, 2026
@lemone112
lemone112 deleted the agent/pair-taxonomy-hard-delete branch July 27, 2026 00:13
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.

1 participant