7.3 KiB
Session handoff — 2026-06-18 (74)
Large session. Continues from handoff-73 (Ctrl-G demo alias). This one ran
the road to public availability end to end: a post-merge doc
reconciliation, then versioning, installers, crates.io/binstall, the
cargo fmt gate, and an actual v0.2.0 release that is now live on
crates.io. Three new main-sequence ADRs (0054/0055/0056), one CI-ADR
amendment, issue #35 closed.
§1. State
Branch main. 2509 pass / 0 fail / 1 ignored (the long-standing
friendly doctest); clippy clean; cargo fmt --check clean (the
tree is now stock-rustfmt formatted, and CI gates it). rdbms-playground --version → rdbms-playground 0.2.0.
Released: v0.2.0 — Gitea release with all six D1 targets
(Linux/Windows via release.yaml on the tag; macOS via the dispatched
release-macos.yaml, ad-hoc-signed). Published to crates.io
(cargo install rdbms-playground and cargo binstall rdbms-playground
both user-verified).
Push state: earlier commits were pushed (they triggered CI/releases). The most recent commits are unpushed and matter:
3c87dbbmacOS nix-prune fix (takes effect next macOS dispatch).d3af1c4+8ebe213the manualpublish.yamlworkflow — ADR-0056 in the first, the workflow file itself in the second (git commit -amhad skipped the new untracked file).- this handoff.
Push
mainto land them. (Push is the user's step.)
§2. What shipped (commits 628b250→d3af1c4)
628b250doc reconciliation after the CI + website branch merges: rewrote CLAUDE.md's stale repo-layout tree; added a Website subproject note; fixed the CI note; gitignored.wrangler/+.vscode/and removed a trackedwebsite/.vscode/; updated requirements (D1 macOS runtime-verified, DOC1 canonical-docs-on-website) + ADR-ci-003.c30a611ADR-0054 — version surfaces.--version/-V+ an in-appversioncommand, both readingCARGO_PKG_VERSIONvia onecli::version_text(). A release-CI guard fails the release unless thev*tag equalsv<Cargo.toml version>.ef99e6cADR-0055 —scripts/install.sh(curl|sh, POSIX, shellcheck-clean, checksum-verified,~/.local/bin). Verified end-to-end against the live release.install.ps1(Windowsirm|iex) added later (e9606b5) — written but untested here (no PowerShell on this box; validate on Windows).e9606b5ADR-0056 — crates.io + binstall prep. Publish-ready Cargo.toml (droppedpublish=false; homepage/keywords/categories/exclude);README.md;LICENSE-MIT/LICENSE-APACHE(dual, © Lazy Evaluation Ltd) +CONTRIBUTING.md(inbound=outbound); the[package.metadata.binstall]block with per-target overrides (linux-gnu→musl, windows-msvc→gnu/gnullvm; macOS direct).41b7e9a+ec3c7c3— #35 fmt gate. One mechanicalcargo fmt(stock defaults, 102 files, behaviour-preserving) recorded in.git-blame-ignore-revs;ci.yamlnow gatesfmt --check(ADR-ci-002 Amendment 1). Closes #35.88830ed+bd5be5e— v0.2.0 bump + the guard bug. The firstrelease.yamlrun failed at the version guard: it pipednix develop -c cargo metadatato node, but the flake devShell prints a banner to stdout, corrupting the JSON. Fixed to a toolchain-freegrep -m1 '^version = ' Cargo.toml. Thev0.2.0tag was re-pointed (Option A) to the fix commit; re-run went green.3c87dbb— macOS nix-prune fix. The prune step's profile dir (~/.cache/rdbms-ci) didn't exist, sonix develop --profileerrored (swallowed by|| true) → the gc-root was never created → the whole toolchain (~3.8 GiB) was deleted and re-downloaded every run. Addedmkdir -p+ dropped the|| true. Diagnosed from the run-74 log viatea actions runs logs 74.d3af1c4— manualpublish.yaml.workflow_dispatch+taginput (mirrorsrelease-macos.yaml). Idempotentcrates-iojob (crates.io API pre-check +cargo publishbackstop), independent jobs so Scoop/Homebrew/winget slot in later. ADR-0056 Amendment 1.
§3. Live vs manual vs parked
- Automated on a
v*tag:release.yamlbuilds + publishes the four Linux/Windows targets (+ fmt/clippy/test gate). - Manual
workflow_dispatch:release-macos.yaml(mac binaries — intermittent runner) andpublish.yaml(crates.io now; more registries later). Run them once the tag's build is up. - Parked (user decisions):
- macOS Developer-ID signing. The pipeline ad-hoc-signs
(
codesign --sign -). The user'sApple Developmentcert is the wrong type — distribution needsDeveloper ID Application+ notarization (App Store Connect API key recommended). Fine forcurl|sh(no quarantine); matters for browser downloads. Details indocs/plans/20260616-public-availability.md. - Remaining D3: Scoop (
lazyevalbucket), Homebrew (lazyevaltap), winget (komac on Linux CI, or manual PR) — each a sibling job inpublish.yaml+ a manifest repo.
- macOS Developer-ID signing. The pipeline ad-hoc-signs
(
§4. Immediate next steps
- Push
main(lands3c87dbb+d3af1c4). - Add the
CARGO_REGISTRY_TOKENsecret (crate-scoped,publish-update) sopublish.yamlworks:tea actions secrets create CARGO_REGISTRY_TOKEN(paste at prompt) or the Gitea UI. - Smoke-test
publish.yaml: dispatch it forv0.2.0— it should idempotently skip ("already on crates.io"), exercising the path risk-free. - The release ritual going forward (ADR-0054): bump
Cargo.toml→ commit → tagv<x.y.z>→ push tag (Linux/Windows release builds) → dispatchrelease-macos→ dispatchpublish.
§5. Gotchas learned (don't relearn the hard way)
- The flake devShell prints a banner to stdout — never pipe
nix develop -c <cmd>into a parser. Read Cargo.toml directly, etc. - Workflow-file source differs by trigger: a tag-triggered run
(
release.yaml) uses the workflow at the tagged commit; aworkflow_dispatchrun (release-macos/publish) uses the default branch (main). So fixing a dispatched workflow only needs amainpush; fixing a tag-triggered one needs the tag re-pointed. - Version vs tag:
Cargo.tomlis bare0.2.0; the git tag isv0.2.0; the guard checkstag == "v" + version; binstallpkg-urlspellsv{ version }. - CI logs are reachable via
tea actions runs logs <id>(andtea actions runs list --output tsv). Use it instead of guessing from a step name. - crates.io API needs a descriptive User-Agent (403 without one).
§6. How to take over
- Read handoffs 72 → 73 → 74,
CLAUDE.md,docs/requirements.md, anddocs/plans/20260616-public-availability.md(the GA roadmap with all decisions + parked items). - Confirm green:
cargo test(2509 / 1 ignored),cargo clippy --all-targets,cargo fmt --check. - ADRs for this arc: 0054 (versioning), 0055 (installer),
0056 (crates.io/binstall + the publish workflow); CI side
ADR-ci-002 Amendment 1 (fmt gate), ADR-ci-003 (release matrix
- macOS).
- Workflow unchanged: phased, test-first,
/runda+ DA before commits, ADR amendment + README index-upkeep for decided-area changes, confirm commit messages, never push. - Consider a
cargo sweepat this milestone (target/grows).