From 29ebab6bf319d6602e60a5a553c7d152cf6f0eda Mon Sep 17 00:00:00 2001 From: Joel Natividad <1980690+jqnatividad@users.noreply.github.com> Date: Mon, 12 Oct 2026 21:53:18 -0400 Subject: [PATCH 1/2] Embed the 12-character git sha in release binaries Release builds passed the full github.sha, so v0.1.0 binaries report a 40-character sha while Docker and local builds report 12 (build.rs uses rev-parse --short=12). Both release build steps now pass GITHUB_SHA::12, as ci.yml's docker job already does. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/release.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 78eb31f..eae57ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -67,13 +67,11 @@ jobs: key: ${{ matrix.target }} - name: build if: ${{ !matrix.musl }} - env: - UCG_GIT_SHA: ${{ github.sha }} - run: cargo build --release --locked --target "${{ matrix.target }}" + run: UCG_GIT_SHA="${GITHUB_SHA::12}" cargo build --release --locked --target "${{ matrix.target }}" - name: build (musl, static) if: ${{ matrix.musl }} run: | - docker run --rm -v "$PWD:/src" -w /src -e UCG_GIT_SHA="${{ github.sha }}" rust:1.99-alpine \ + docker run --rm -v "$PWD:/src" -w /src -e UCG_GIT_SHA="${GITHUB_SHA::12}" rust:1.99-alpine \ sh -c 'apk add --no-cache musl-dev && cargo build --release --locked --target "${{ matrix.target }}"' file "target/${{ matrix.target }}/release/ucgeocoder" | tee /dev/stderr | grep -q 'static' - name: package From 9185ed16b708a263e14bf5e4bb176cd9738af287 Mon Sep 17 00:00:00 2001 From: Joel Natividad <1980690+jqnatividad@users.noreply.github.com> Date: Mon, 12 Oct 2026 21:54:11 -0400 Subject: [PATCH 2/2] Record the v0.1.0 release and the fork/upstream workflow in the plan Co-Authored-By: Claude Opus 5.5 --- docs/PLAN.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/PLAN.md b/docs/PLAN.md index 12cee57..addf80e 100644 --- a/docs/PLAN.md +++ b/docs/PLAN.md @@ -409,8 +409,10 @@ Phases 0–10 are committed on `main`; the gate (`cargo fmt --check && cargo cli **Allocator: mimalloc (2026-10-12).** Measured in Docker on arm64 (Apple M4 Max, Docker Desktop, 8 vCPU), `ab -k -c 64 -t 20` from a container on the same Docker network against a warm geographies HIT (default-layer filtering, 5290-byte body), alternating runs: musl system allocator 9,488 / 10,105 req/s, p99 13 / 12 ms; mimalloc 45,443 / 45,092 req/s, p99 3 / 3 ms (~4.6× throughput). The mimalloc image also builds and serves a live MISS→HIT under amd64 emulation; amd64 was not benchmarked (emulation would measure QEMU). The criterion medians in §13 (18–28 µs) are system-allocator, single-request numbers. +**Released v0.1.0 (2026-10-13).** The work was merged upstream as dathere/uscensus-caching-geocoder#1 with a merge commit (`b5a5e7a`), so every hash in this log is valid upstream. Tag `v0.1.0` on `b5a5e7a` was pushed to `upstream` only; the release workflow (run 38333424379) passed every job, including `check-version` and `gh release create`, and published five tarballs with `.sha256` files. The hand-written release notes replaced the generated ones. The downloaded aarch64-apple-darwin tarball verified and ran. v0.1.0 binaries embed the full 40-character sha; `29ebab6` switched release builds to 12 characters to match Docker and local builds. Remotes: `origin` is the fork (jqnatividad), `upstream` is dathere. Work lands on the fork, then goes to dathere by PR; merge with a merge commit, and push tags to `upstream` only (a tag on the fork would publish a release there). Before 0.1.0 the dry run (`workflow_dispatch`, run 38331310642) had already built every target. + **Still open (not started, not blocking):** -- The release workflow's build matrix has run: a manual dry run (`workflow_dispatch`, run 38331310642 on the fork, 2026-10-13) built and uploaded all five tarballs (x86_64 gnu, x86_64 and aarch64 static musl on `ubuntu-latest` / `ubuntu-24.04-arm`, both macOS) in about 6 minutes, with `check-version` skipped for the branch ref and `release` skipped. Only the tag path (`check-version` on a tag, `gh release create`) is first exercised by the first `v*` tag. CI (`check`, `docker` on amd64, `deny`) first ran green on GitHub for `335560f` (run 38327492793, 2026-10-13); `cargo-deny` has still never been run locally. +- CI (`check`, `docker` on amd64, `deny`) first ran green on GitHub for `335560f` (run 38327492793, 2026-10-13); `cargo-deny` has still never been run locally. - `tests/live.rs` checks the Tie case by row shape only (batch Tie/No_Match answers are load-dependent upstream); the other cases are byte-exact and can flap only if Census changes its texts or data. - `.serena/logs/` was untracked at the start of the Phase 7–10 session and was deliberately left alone. - Two config keys have no implementation (documented as reserved in the README, `check-config` and `ucgeocoder.example.toml`): `jobs.single_record_upgrade` (Phase 7, deferred) and `batch.serve_partial_json_from_batch` (§5.4's `X-UCG-Partial` synthesis; found unimplemented by roborev 5305).