Retire vendor/jostoph-rs for the midgard mirror #4

Merged
larandar merged 1 commit from agent.teyla/jostoph-rs-via-midgard into fastlane 2026-08-10 08:12:53 +00:00 AGit
Collaborator

Closes #3.

PR #2 vendored 21 files of the substrate into this repository and was explicit that it was a stopgap: "the unblock, not the answer... bump by re-copying vendor/jostoph-rs from a fresh clone at the new rev." The reason was a credential problem — jo.et0.pw was private and the sandboxed fixed-output fetch had nothing to authenticate with.

Ting/Jostoph#3 settled the distribution model (lar.ad canonical, midgard public over anonymous HTTPS) and named jostoph-rs as bound for midgard. midgard/jostoph-rs main is 029a102cf606 — the exact rev vendored here — so the copy has nothing left to justify it.

In scope

  • jostoph-rs flake input at git+https://jo.et0.pw/midgard/jostoph-rs.git, flake = false, locked at 029a102.
  • vendor/jostoph-rs (21 files) deleted; materialized from the input instead — postPatch for the package, the devShell shellHook for a working tree.
  • /vendor gitignored.

Out of scope

  • A substrate bump. Content-identical: I diffed the mirror against the vendored tree before deleting anything, and the lock resolves to the same rev the copy was taken at. The only difference is the mirror additionally carries its own Cargo.lock, inert for a path dependency.
  • A Cargo git dependency. Staying a path dependency is what keeps Cargo.lock byte-unchanged, needs no outputHashes, and keeps the sandboxed build credential-free. The pin lives in flake.lock now, where nix flake update jostoph-rs bumps it deliberately, with a diff to review — the same posture the vendored copy had, minus 21 files in the tree.
  • .fastlane.toml. midgard/jostoph-rs is main-only by design (owner, 2026-08-10): the substrate is consumed as published, not co-developed branch-for-branch with this service. I initially got this wrong and filed Ting/Jostoph#11 to add it to the manifest; that is closed, and the reasoning is recorded in the input's own comment so it is not re-derived.
  • Any behaviour change. Same rev, same code, same binary surface.

Boundary

Copy, not symlink, in postPatch: the store path is read-only and cargo writes nothing there, but a dangling store symlink is not something src-based reproduction should rest on. --no-preserve=mode because store paths are r-xr-xr-x and the build tree has to stay writable. The devShell uses a symlink deliberately — in a working tree the point is that it tracks the input and cannot be locally edited into a lie.

The real cost: this build now follows a repository whose freshness nothing reconciles — Ting/Jostoph#3's push mirror is still hand-configured. Acceptable only because flake.lock records an exact rev, so a stale mirror cannot silently change what this builds; it can only delay what a future nix flake update finds. A mirror that stops tracking is Ting/Jostoph#3's finding to surface.

Acceptance

Every claim below was run, not reasoned:

  • Byte-identical before deletiondiff -r of midgard/jostoph-rs @ 029a102 against vendor/jostoph-rs: no differences except the mirror's own Cargo.lock.
  • flake.lock resolves jostoph-rs to 029a102cf6065ef3cd561b06bae613fb2ff0bbb2 — repoint, not bump.
  • Cargo.lock unchanged — not in this PR's diff.
  • nix build .#default — green; ./result/bin/vedanta --help lists serve, reconcile, mint-agent, mint-service.
  • cargo test (1 passed) and cargo clippy --all-targets -- -D warnings (clean) in the devShell, compiling jostoph v0.1.0 from the materialized path.
  • Overridability is live, not theoreticalnix build .#default --override-input jostoph-rs path:… builds a working binary against a different source, so a future bump or a local substrate checkout works without touching this repo.

Not run: a deployed services.vedanta.enable = true on heimdallr. This changes where the source comes from, not what the module does, and PR #2's module wiring is untouched.

Closes #3. PR #2 vendored 21 files of the substrate into this repository and was explicit that it was a stopgap: *"the unblock, not the answer... bump by re-copying `vendor/jostoph-rs` from a fresh clone at the new rev."* The reason was a credential problem — `jo.et0.pw` was private and the sandboxed fixed-output fetch had nothing to authenticate with. `Ting/Jostoph#3` settled the distribution model (`lar.ad` canonical, `midgard` public over anonymous HTTPS) and named `jostoph-rs` as bound for midgard. `midgard/jostoph-rs` `main` is `029a102cf606` — the exact rev vendored here — so the copy has nothing left to justify it. ## In scope - `jostoph-rs` flake input at `git+https://jo.et0.pw/midgard/jostoph-rs.git`, `flake = false`, locked at `029a102`. - `vendor/jostoph-rs` (21 files) deleted; materialized from the input instead — `postPatch` for the package, the devShell `shellHook` for a working tree. - `/vendor` gitignored. ## Out of scope - **A substrate bump.** Content-identical: I diffed the mirror against the vendored tree *before* deleting anything, and the lock resolves to the same rev the copy was taken at. The only difference is the mirror additionally carries its own `Cargo.lock`, inert for a path dependency. - **A Cargo `git` dependency.** Staying a path dependency is what keeps `Cargo.lock` byte-unchanged, needs no `outputHashes`, and keeps the sandboxed build credential-free. The pin lives in `flake.lock` now, where `nix flake update jostoph-rs` bumps it deliberately, with a diff to review — the same posture the vendored copy had, minus 21 files in the tree. - **`.fastlane.toml`.** midgard/jostoph-rs is `main`-only **by design** (owner, 2026-08-10): the substrate is consumed as published, not co-developed branch-for-branch with this service. I initially got this wrong and filed `Ting/Jostoph#11` to add it to the manifest; that is closed, and the reasoning is recorded in the input's own comment so it is not re-derived. - **Any behaviour change.** Same rev, same code, same binary surface. ## Boundary Copy, not symlink, in `postPatch`: the store path is read-only and cargo writes nothing there, but a dangling store symlink is not something `src`-based reproduction should rest on. `--no-preserve=mode` because store paths are `r-xr-xr-x` and the build tree has to stay writable. The devShell uses a symlink deliberately — in a working tree the point is that it tracks the input and cannot be locally edited into a lie. The real cost: this build now follows a repository whose freshness nothing reconciles — `Ting/Jostoph#3`'s push mirror is still hand-configured. Acceptable only because `flake.lock` records an exact rev, so a stale mirror cannot silently change what this builds; it can only delay what a future `nix flake update` finds. A mirror that stops tracking is `Ting/Jostoph#3`'s finding to surface. ## Acceptance Every claim below was run, not reasoned: - **Byte-identical before deletion** — `diff -r` of `midgard/jostoph-rs` @ `029a102` against `vendor/jostoph-rs`: no differences except the mirror's own `Cargo.lock`. ✅ - `flake.lock` resolves `jostoph-rs` to `029a102cf6065ef3cd561b06bae613fb2ff0bbb2` — repoint, not bump. ✅ - **`Cargo.lock` unchanged** — not in this PR's diff. ✅ - `nix build .#default` — green; `./result/bin/vedanta --help` lists `serve`, `reconcile`, `mint-agent`, `mint-service`. ✅ - `cargo test` (1 passed) and `cargo clippy --all-targets -- -D warnings` (clean) in the devShell, compiling `jostoph v0.1.0` from the materialized path. ✅ - **Overridability is live, not theoretical** — `nix build .#default --override-input jostoph-rs path:…` builds a working binary against a different source, so a future bump or a local substrate checkout works without touching this repo. ✅ Not run: a deployed `services.vedanta.enable = true` on heimdallr. This changes where the source comes from, not what the module does, and PR #2's module wiring is untouched.
PR #2 vendored 21 files of the substrate because jo.et0.pw was private
and the sandboxed build had no credential to fetch it with. It said so
at the time: provisional, "the unblock, not the answer," bump by
re-copying.

Ting/Jostoph#3 settled the distribution model — lar.ad canonical,
midgard public over anonymous HTTPS — and midgard/jostoph-rs main is
029a102, the exact rev vendored here. Diffed before deleting anything:
byte-identical.

So the input moves to flake.lock and the copy leaves the tree. It stays
a Cargo path dependency, materialized by postPatch for the package and
by the devShell shellHook for a working tree, which keeps Cargo.lock
untouched, needs no outputHashes, and keeps the build credential-free.

Not a fastlane input: midgard/jostoph-rs is main-only by design.

Closes #3
larandar merged commit d3eeea6e0a into fastlane 2026-08-10 08:12:53 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Ting/Vedanta!4
No description provided.