docs: note package/publish gaps blocking the 10MB-fix release
Code fix (35f1f972) is done, tested, and pushed. Package build + Forgejo
package-registry publish is blocked on missing packaging conventions
here (no existing publish script/credentials/target-scope decision) --
see NOTES-package-publish-todo.md for what's needed to finish this.
This commit is contained in:
parent
35f1f97290
commit
76e3d6ced8
|
|
@ -0,0 +1,60 @@
|
|||
# Status: 10MB IPFS `cat` fix — code done and pushed; package build/publish still needs your input
|
||||
|
||||
## Done (verified, no further action needed)
|
||||
|
||||
- Root-caused and fixed the bug: `crates/radicle-cli/src/ipfs.rs`'s `cat()` used ureq's
|
||||
`Body::read_to_vec()`, which silently caps reads at 10MB (a default meant for typical JSON
|
||||
API responses, not LFS content). Any LFS object over 10MB failed with "the response body is
|
||||
larger than request limit: 10485760" — this is exactly what broke `blog-deploy.service` on
|
||||
the VPS today, on `assets/posts/hashcash/thumbnail.xcf` (29MB).
|
||||
- Fix: raised the limit to 1GiB via ureq's `.with_config().limit(...)`. Commit `35f1f972`,
|
||||
branch `rad-lfs-ipfs`.
|
||||
- Verification performed:
|
||||
1. Added a `#[cfg(test)]` regression test (`ipfs::tests::cat_round_trips_content_larger_than_ureqs_default_10mb_limit`,
|
||||
`#[ignore]`d since it needs a live Kubo daemon) — a 15MB add+cat round-trip.
|
||||
2. Confirmed it **fails** with the exact production error when the fix is reverted, and
|
||||
**passes** with the fix in place.
|
||||
3. Ran the full `radicle-cli` test suite (123 tests) — one pre-existing, unrelated failure
|
||||
(`rad_help`, a stale `--help`-output snapshot missing the `lfs` subcommand — confirmed to
|
||||
fail identically on the unmodified base commit, nothing to do with this change).
|
||||
4. `cargo clippy` clean (one pre-existing warning in an unrelated file/crate).
|
||||
5. **Live reproduction against the real file**: moved aside the cached LFS blob for
|
||||
`thumbnail.xcf` in `~/Blog/Blog`, ran `rad lfs fetch` with the *old* installed binary —
|
||||
reproduced the identical production error byte-for-byte. Ran it again with the *newly
|
||||
built* binary — the 10MB error is completely gone; it now correctly proceeds to the next
|
||||
step (prompting for a passphrase to decrypt the private-repo content, which is expected
|
||||
behavior and unrelated to this bug — I did not attempt to supply a passphrase). Restored
|
||||
the blog repo's `.git/lfs/objects` cache back to its original state afterward; no changes
|
||||
left in `~/Blog/Blog`.
|
||||
- Pushed to `origin` (the Forgejo remote, `ssh://git.hswro.org:9022/mab122/radicle-heartwood-lfs.git`),
|
||||
branch `rad-lfs-ipfs`, commit `35f1f972..4ae9756a`.
|
||||
|
||||
## Not done — needs your call
|
||||
|
||||
I did **not** build or publish a package. Stopping here rather than guessing, because:
|
||||
|
||||
1. **No existing Forgejo-package publishing path in this repo.** There's a `build/Dockerfile`
|
||||
that cross-compiles reproducible `.tar.xz` releases (4 targets: linux/macOS ×
|
||||
x86_64/aarch64) via `cargo-zigbuild`, but nothing that uploads anywhere — no CI workflow,
|
||||
no `curl`-to-package-registry script, nothing referencing Forgejo's package API. I don't
|
||||
know what package type you want registered (generic package? a distro-specific one?), what
|
||||
name/version scheme you use there, or the auth (token?) needed to publish to
|
||||
`git.hswro.org`'s package registry. I deliberately did not go hunting through credential
|
||||
stores (`~/.netrc`, etc.) to find one myself — that's exactly the kind of thing I should ask
|
||||
about rather than dig for.
|
||||
2. **The existing Dockerfile's package doesn't include `rad-lfs-transfer`** — only `rad`,
|
||||
`git-remote-rad`, and `radicle-node` get copied into the release tarball. `rad-lfs-transfer`
|
||||
is a separate crate/binary (`radicle-lfs-transfer/`) and is required for this fork's whole
|
||||
LFS-over-IPFS feature to work on a fresh install — worth fixing in the Dockerfile too, but
|
||||
I didn't want to change the packaging script's scope without confirming that's wanted.
|
||||
3. **Platform scope is unclear.** The existing Dockerfile builds all 4 targets (needed for a
|
||||
real public release); the VPS only needs `x86_64-unknown-linux-musl`. Building all 4 takes
|
||||
meaningfully longer and needs the macOS SDK blob (`build/macos-sdk-11.3.tar.xz`) and Zig
|
||||
cross-toolchain set up — I can do it, but wanted to confirm whether you want the full
|
||||
release matrix or just what's needed to update the VPS.
|
||||
|
||||
If you want me to keep going on this (rather than picking it up in the session that already
|
||||
knows this fork's packaging conventions), I'd need: the Forgejo package type/target and an
|
||||
auth token (however you'd like to provide it — e.g. via an env var you set, not me searching
|
||||
for it), confirmation on whether to add `rad-lfs-transfer` to the Dockerfile's package list,
|
||||
and whether to build the full 4-target matrix or just linux/x86_64.
|
||||
Loading…
Reference in New Issue