Pin CultLib 75188fde (stamp hardening #175) #66
Loading…
Reference in a new issue
No description provided.
Delete branch "hands/cultlib-pin-75188fde"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Huginn's own pin is exactly 75188fde; the kit pin (a4eae905 via model-connector) stays transitive. It bumps Huginn's one CultLib pin to CultLib main
75188fdefa0b4baf131dbfd94e77d06a965f0cc6(stamp hardening #175, which includes #171 cultcache-rsafab2d5a, #172 cultcache-pyc77d734d, #174 cultmesh-py raw-putc88b939e). No other Huginn-owned revision is used. Base:db9605fb.Pin
Huginn pins CultLib in one place:
Cargo.toml[workspace.dependencies](cultcache-rs,cultnet-rs, rev8fc74c70->75188fde).Cargo.lockregenerated bycargo fetchonly (nocargo update): cultcache-rs 0.2.0 -> 0.3.1, cultnet-rs 0.1.0 -> 0.3.0; the lock drops 11 crates the old revision alone needed (ahash 0.7, hashbrown 0.12, lru, reed-solomon-erasure, ...) adds no crates. Lock changes: cultcache-rs 0.2.0 -> 0.3.1, cultcache-rs-derive 0.1.0 -> 0.2.0, cultnet-rs 0.1.0 -> 0.3.0, 11 crates removed. The old pin appears nowhere else as live state; the remaining8fc74c7mentions are dated snapshots indocs/(maps, cut records) and are left as history.The kit pin is separate and unchanged: ModelConnector/Ghostlight still pull CultLib
a4eae905transitively (cultcache-rs 0.3.1 + cultnet-rs 0.2.0), so the graph still holds two CultLib revisions. That is the existing two-pin state (crates/mind-body/Cargo.tomlcomment), not new, and it is not fixable from this repo.Raw-put audit (nothing here sends a raw put without storedAt)
Huginn is Rust-only. It has no cultmesh-py/ts client, no
document_put_rawsender other than the chat client, and nocultcache-ts/cultmeshdependency anywhere (findfor package.json/pyproject: only two probe.pytest drivers undercrates/mind-body/src/self_run/probe/).crates/mind-body/src/chat_rudp.rs:134-140CultNetMessage::DocumentPutRawto Bifrost's mouth (the only peer raw put; used by the Persona organ's chat send)stored_at: Utc::now().to_rfc3339_opts(SecondsFormat::Millis, true)(2026-..T..:..:..sssZ, a valid stamp shape)crates/mind-body/tests/chat_rudp.rs:67-73"2026-10-29T00:00:00.000Z"crates/mind-body/src/control.rs:217,:472andheartbeat.rs:359cache.put_raw_envelope(...)replaying the envelopes of a store file pulled read-onlyputwrote (cache stampsnow_utc_second) or the install script'sbrake hold; a non-stamp now refuses (new)huginn-mindadmission/persona put,eureka-stateand thehuginnCLI incl.persona putCultCache::prepare_entry->compare_and_swap_batchDocumentPutRawRange check
Huginn declares no cultcache-ts / cultmesh-ts / py range (no JS or Python runtime dependency; git revs for the Rust crates). Rust crates declare CultLib only by git rev in the workspace table; the declared crate versions at the new rev are
cultcache-rs 0.3.1andcultnet-rs 0.3.0. Note: the cultcache-rs CHANGELOG at this rev lists an "Unreleased" block marked Breaking (0.3.x -> 0.4.0) while Cargo.toml still says 0.3.1; the adaptations below are that block biting.Retry decision (#171 update-with-retry)
No hand-rolled retry to replace. Huginn commits through
compare_and_swap_batch(multi-document, strong-read-versioned) and returns a typedConflicton a lost race (receipt.rs:261-311,admission.rs:232,312); no loop.update's single-record read-modify-write has different semantics from a multi-document receipt-bound commit, so nothing is cut. The CLI/daemon docs state callers retryUnavailableonce; that is the caller's rule, not code here.Adaptations forced by the new cultcache-rs (in the one commit)
CacheBackingStore::push/push_allnow return the stamps written: the five test stores follow (huginn-mindstore.rs, receipt.rs, read_tests.rs). Production uses the CultLib stores, so no production code changed for this.FileStore::open) no longer failed closed on an old initiative store (testan_old_heartbeat_store_fails_closed_...failed).open()now refuses whenforeign_records()is non-empty.ControlWriter::opennow carries the same guard (commit0c2d1e2, with a test that plants a foreign record, expects the open to refuse and asserts the file bytes unchanged; red without the guard, green with it).SwarmWriter::opencarries the same guard and a matching test (red without the guard, green with it).FileTrace::record(persona.rs:676) has the same pull-then-write shape and is NOT changed (benign: a trace store); huginn-mind refuses foreign types explicitly (refuse_foreign_types), and eureka-state has no pull-then-write of this shape.control/tests.rspulls first;tests/control.rsplants a real store viaControlWriter, notb""). Production always pulls first and the install script writes a real store (brake hold).Tests (consumer side)
cargo test --workspace --no-fail-fast,CARGO_TARGET_DIR=/var/lib/mind-eureka-self/target-huginn-pin, host Linux x86_64 as non-root uid 985 (Yggdrasil mind account). Many tests require a root-owned dir and fail here on base too.db9605fb(same commands intarget-huginn-pin-base): base-only failures wereselection_schema_matches_cultlib(offline fetch), and two flaky self_run process tests; pin-only: none.unshare -r cargo test -p mind-body -p eureka-state: huginn-mind lib and mind-body lib all pass; remaining failures are userns artefacts (a_directory_not_owned_by_root_is_refused,a_non_root_user_cannot_write...,no_non_root_open..., persona_bin env tests) plusthe_librarys_public_surface_is_the_committed_one(surface drift inchat_client::Basis, fails identically on base). Those are the same on base.Footprint: pin target dir 21 GiB, base target dir 8.9 GiB (to be deleted after review); disk 559 GiB free.
Deploy gates
The pin crosses 1,712 CultLib commits with breaking changes the compiler and tests cannot see: pull refuses a store holding two types at one key (redb), a payload tail, read-only on unread slots, and duplicate unique-index values; cultnet-rs 0.3.0 changes the wire. Before the Huginn deploy:
huginn.cc.The bump is not deployed and rides the next Huginn deploy (a separate decision).
Not deployed: Huginn#63
db9605fis also undeployed; this bump rides the next Huginn deploy, which is a separate decision.🤖 Generated with Claude Code