Repository navigation
Commit 9dabbef
authored
chore: post-1.0.0-rc.1 cleanup (non-Node findings) (#253)
Closes the non-Node findings left open when `1.0.0-rc.1` shipped, from
the three adversarial reviews of
[#250](#250) plus items
discovered while cutting the release. Plan:
[`docs/superpowers/plans/2026-09-05-post-rc-cleanup.md`](docs/superpowers/plans/2026-09-05-post-rc-cleanup.md).
Every item was re-verified against `main` before starting, rather than
carried over from review text. Node findings are deliberately deferred
so the N-API surface lands as one reviewable group.
## The two with real weight
**Arrow decode errors were silently discarded**
(`authenticated_client.rs`). Both label lookups iterated batches with
`if let Ok(batch) = batch_result`, so a corrupt batch produced a map
covering only what happened to decode — indistinguishable from "this
table defines no labels", the worst failure for metadata used to render
UI. The same `if let` chain swallowed schema mismatches via its
`downcast_ref` tuple. The `#[expect]` waivers that documented this as
deliberate were removed during the edition-2024 let-chain sweep, taking
the recorded intent with them.
Both now propagate. Safe: the only callers are in a salesforce example
that already uses `unwrap_or_default()`. Also fixes a latent panic —
`RecordBatch::column(1)` panics out of bounds, so a one-column batch
would have aborted. The two functions had byte-identical bodies, so the
logic is extracted into `parse_label_pairs`, fixing it once and dropping
~50 lines. Five new tests build real Arrow IPC streams and assert a
truncated stream and a non-TEXT column are **errors**, which is
precisely what the old code returned `Ok` for.
**A user-facing command that didn't exist.** The `HYPERD_PATH is not
set` error told users to run `cargo run -p hyperd-bootstrap -- download`
— a package gone since the rename, failing with `package(s) not found in
workspace`. It's the first thing a new user sees when `HYPERD_PATH` is
unset. Verified both directions: the old form errors, the new one prints
the CLI help.
## Coverage holes found while fixing
- **Windows was never linted.** `cfg`-gated code is stripped before
lints run and clippy only ran ubuntu, so "all 127 `collapsible_if` sites
fixed" was Linux-scoped — one survivor sat in `process.rs`'s
`#[cfg(windows)]` Named Pipe branch. Added `windows-latest` to the
clippy matrix and fixed it. macOS is deliberately omitted (shares
`cfg(unix)` with the Linux leg).
- **Nothing ran `hyperdb-compile-check`'s tests.** It declares its own
`[workspace]`, so `--workspace` can't see it, and every CI reference is
a `cargo check` or publish step. Its 13 tests — including registry logic
changed in this branch — had never executed. Added to CI and `make
test`.
- **`make test` covered 3 of 8 crates** while CI covers 7, making the
widely-quoted "1519 passed" look like whole-workspace coverage. Now
mirrors CI: **1586**.
- **The RHEL gate skipped `hyperdb-compile-check`** — the one gate
proving "builds on Red Hat's toolchain with no rustup" never covered a
published crate.
## Hardening and accuracy
- `protoc` was unzipped into `/usr/local` as root with no integrity
check. Now sha256-verified against a pinned digest (upstream publishes
no checksum file, so it's computed and recorded with its refresh
command). Validated both directions locally.
- RHEL workflow had no `concurrency` group, unlike every other workflow,
so pushes stacked multi-minute container runs.
- `hyperdb-compile-check`'s lint table had drifted from the root (`warn`
vs `deny`); it satisfies `deny` with no code changes.
- The benchmark comparison quoted Rust-at-10M figures with no 10M table
published. Re-measured and published it; all 8 figures now appear
verbatim in the table above, verified programmatically.
- `AGENTS.md` Editor Setup was wrong on both points (workspace-wide
edition 2024, and `rust-toolchain.toml` now provisions rust-analyzer).
- `hyperdb-compile-check` got the `CHANGELOG.md` it never had;
AGENTS.md's list is now nine crates.
## One correction to a review finding
The review flagged the benchmark aggregation cell `~1 K/s` as wrong,
arguing the measured value is 199/s. Re-measuring showed **the cell was
right**: 199/s is the *100M* figure, while at 10M the workload is 10
rows in 0.007s ≈ 1.4 K/s. It was unverifiable, not incorrect. Left
as-is.
## Verification
`fmt`, `clippy -D warnings` (workspace **and** the out-of-workspace
crate), `doc` over 8 crates, `deny`, `audit`, and `cargo +1.88 check
--locked` on both manifests all exit 0. `make test` is **1586 passed / 0
failed**.36 files changed
Lines changed: 1208 additions & 242 deletions
File tree
- .agents/skills/update-hyperd-release
- .claude/skills/update-hyperd-release
- .github/workflows
- docs
- superpowers/plans
- hyperdb-api-core
- src
- client/grpc
- protocol
- hyperdb-api-derive
- src
- hyperdb-api
- src
- hyperdb-bootstrap
- src
- bin
- tests
- hyperdb-compile-check
- src
- hyperdb-mcp
- src
- daemon
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
| |||
59 | 61 | | |
60 | 62 | | |
61 | 63 | | |
62 | | - | |
| 64 | + | |
63 | 65 | | |
64 | | - | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
65 | 123 | | |
66 | 124 | | |
67 | 125 | | |
| |||
73 | 131 | | |
74 | 132 | | |
75 | 133 | | |
76 | | - | |
| 134 | + | |
77 | 135 | | |
78 | 136 | | |
79 | 137 | | |
| |||
88 | 146 | | |
89 | 147 | | |
90 | 148 | | |
91 | | - | |
| 149 | + | |
92 | 150 | | |
93 | 151 | | |
94 | 152 | | |
| |||
116 | 174 | | |
117 | 175 | | |
118 | 176 | | |
119 | | - | |
| 177 | + | |
120 | 178 | | |
121 | 179 | | |
122 | 180 | | |
123 | 181 | | |
124 | 182 | | |
125 | 183 | | |
126 | | - | |
| 184 | + | |
127 | 185 | | |
128 | 186 | | |
129 | 187 | | |
130 | 188 | | |
131 | 189 | | |
132 | 190 | | |
133 | | - | |
| 191 | + | |
134 | 192 | | |
135 | 193 | | |
136 | 194 | | |
| |||
139 | 197 | | |
140 | 198 | | |
141 | 199 | | |
| 200 | + | |
142 | 201 | | |
143 | 202 | | |
144 | 203 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
| |||
59 | 61 | | |
60 | 62 | | |
61 | 63 | | |
62 | | - | |
| 64 | + | |
63 | 65 | | |
64 | | - | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
65 | 123 | | |
66 | 124 | | |
67 | 125 | | |
| |||
73 | 131 | | |
74 | 132 | | |
75 | 133 | | |
76 | | - | |
| 134 | + | |
77 | 135 | | |
78 | 136 | | |
79 | 137 | | |
| |||
88 | 146 | | |
89 | 147 | | |
90 | 148 | | |
91 | | - | |
| 149 | + | |
92 | 150 | | |
93 | 151 | | |
94 | 152 | | |
| |||
116 | 174 | | |
117 | 175 | | |
118 | 176 | | |
119 | | - | |
| 177 | + | |
120 | 178 | | |
121 | 179 | | |
122 | 180 | | |
123 | 181 | | |
124 | 182 | | |
125 | 183 | | |
126 | | - | |
| 184 | + | |
127 | 185 | | |
128 | 186 | | |
129 | 187 | | |
130 | 188 | | |
131 | 189 | | |
132 | 190 | | |
133 | | - | |
| 191 | + | |
134 | 192 | | |
135 | 193 | | |
136 | 194 | | |
| |||
139 | 197 | | |
140 | 198 | | |
141 | 199 | | |
| 200 | + | |
142 | 201 | | |
143 | 202 | | |
144 | 203 | | |
| |||
0 commit comments