Skip to content

conformance-ct: environment hygiene — sibling pin drift, cold-bootstrap margin, lock hash churn #312

Closed

Description

@lann

Bundle, one area: the sibling-checkout arrangement's operational edges (all interim until component-test publishes to registries).

  1. "At or past the pin" is unenforced in either direction. Nothing local compares the sibling's HEAD to .component-test-rev (the pin's only consumers are the five CI clone steps); _ct-tools keys bin/ reuse on the sibling's HEAD, whatever it is. Newer-than-pin: local green does not imply CI green (path deps leave no Cargo.lock trace unless the dep graph changes). Older-than-pin: loud but cryptic (e.g. a pre---suite-artifact ct-runner rejects the flag run-composed passes) with no message naming the pin. The pin moved four times on its first day — the coupling is hot and the latitude will be exercised. Fix shape: a drift check in _ct-tools (warn on mismatch, name the rev and the remedy).

  2. Cold-bootstrap margin vs the timeout/cache-save interaction. A timeout kill skips cache-save, so an undersized budget never converges (bacdf58's own analysis). Current numbers: 30-minute job timeout, measured full-cold 16m31s, pin-bump cold-ish 11m51s — ~13min margin, eroding with corpus growth. Secondary: the rust-cache restore is conditioned on the artifact-cache hit, so an artifact hit + tools-cache eviction rebuilds the wasmtime-embedding runner with no registry cache (slow-only). Worth a margin note and periodic re-measurement.

  3. artifact_sha256 churn in lock diffs. Upstream ruled artifact hashes are provenance, not identity (component-test#44): lock --check ignores them, but lock-update still rewrites the field with a machine-dependent value (rustc embeds absolute paths; the SDK is an out-of-workspace path dep), so every lock regeneration on any machine carries a meaningless hash-line diff — diluting "the diff is the review surface". Options: stop committing the field, normalize it, or teach lock-update to preserve the committed value when the inventory is unchanged.

Activity

  1. lann commented on Aug 5, 2026

    @lann
    CollaboratorAuthor

    PR #320 resolves item 1 structurally: component-test is now a git dependency pinned by rev in [workspace.dependencies] (tools cargo-installed from the same pin, rev read from Cargo.lock), so the "at or past the pin" latitude no longer exists — local builds use exactly the pin or an explicit [patch]. Items 2 (cold-bootstrap margin) and 3 (lock artifact_sha256 churn) remain.

  2. lann commented on Aug 5, 2026

    @lann
    CollaboratorAuthor

    Correction to the note above: #320 was a duplicate of the maintainer's earlier #319 and is closed — #319 is the PR that resolves item 1 structurally (same mechanism: git dependency pinned in [workspace.dependencies], tools cargo-installed at the Cargo.lock rev). Items 2 and 3 remain.

  3. lann commented on Aug 5, 2026

    @lann
    CollaboratorAuthor

    Re-verified against main post-#319: item 1's sibling-checkout premise is gone — component-test is a git dependency pinned in Cargo.toml/Cargo.lock, _ct-tools installs at exactly the locked rev, and the recipe now cross-checks the npm pin (jco/package-lock.json) against the cargo pin, failing on skew. That covers the drift class item 1 described, in the new arrangement's terms.

    Items 2 (cold-bootstrap margin vs the timeout/cache-save interaction) and 3 (artifact_sha256 churn in lock diffs — visible again in #324/#325's near-identical lockfiles differing only in the hash line) remain open. Item 3's cleanest fix is upstream (teach lock-update to preserve the committed hash when the inventory is unchanged, or stop emitting the field); repo-side normalization would re-implement lockfile parsing in a justfile.

  4. lann commented on Aug 11, 2026

    @lann
    CollaboratorAuthor

    Fresh evidence pass: item 2's margin-note half is effectively done — ci.yml:54-58 documents the ~20-minute cold bootstrap against the 30-minute budget and the timeout/cache-save trap — leaving periodic re-measurement (the job has since absorbed the deltic legs, so the margin is worth a re-read). Item 3 reconfirmed live: #353's lock regeneration (229dae5) churned artifact_sha256 again. The clean fix remains upstream in component-test's lock-update.

  5. lannbot commented on Aug 12, 2026

    @lannbot
    Contributor

    Closing: nothing actionable remains in this repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions