Pin the shared Hemera dependency

Serves: owner's Kadek phase-1 closure · Radio/soft3 · consumable dependency prerequisite for bounded BAO verification, foundation row 4. Stage: draft. Source parent Radio a11d342594949d4ea542b26366f71d56ef21662d; Hemera source d5f0a09539360934fb32db9b2e15a91995607db6. Implementation awaits fresh different-vendor PLAN approval. Root owns final CODE disposition/commit/merge.

Contract and files

Every current root-workspace path-Hemera consumer resolves the same immutable Git package. Existing std/serde behavior and all Rust source bytes remain the same as the pinned Radio/Hemera baseline. A checkout without a sibling Hemera directory can resolve its owning workspace. Root Cargo.lock preserves all other dependency sources, versions and checksums. The separate FFI workspace and the two existing registry0.1 declarations are unchanged, including their limitations.

Production files, exactly:

  • Cargo.toml and Cargo.lock.
  • cyber-bao/Cargo.toml; iroh-blobs/Cargo.toml; iroh-docs/Cargo.toml; iroh-gossip/Cargo.toml; iroh-relay/Cargo.toml; iroh-willow/Cargo.toml; particle/Cargo.toml; radio-cli/Cargo.toml.

Root declaration:

[workspace.dependencies]
hemera = { package = "cyber-hemera", git = "https://github.com/cyberia-to/hemera", rev = "d5f0a09539360934fb32db9b2e15a91995607db6", default-features = false }

Seven inheritors use hemera = { workspace = true, features = ["std"] }. iroh-blobs uses features = ["std", "serde"]. Existing cyber-bao serde forwarding stays as-is. No reducer, no_std module gating, Hash API, source code, test source, specification, component version or release pin changes in this unit. Research/PLAN/execution/review and a compact audit are the only additional files.

Steps and checks

  1. Freeze actual parent, rules, registry, full ten production inputs, all owning/direct-consumer manifests and relevant concrete Hash consumers. Preserve the published-package comparison and successful exact Git resolution receipt. Export parent Radio and Hemera from named Git objects, excluding only tracked nettools/target with an explicit inventory; never build the original shared trees. Export a separate unchanged Radio baseline without the sibling Hemera directory → verify: ordinary locked Cargo metadata fails at the missing Hemera manifest before the fix; retain full exact command/raw error. This is the failure-first source-delivery witness, not a codec/hash failure.

  2. After PLAN approval, apply the ten manifest/lock edits above. Resolve without an adjacent Hemera directory, using installed Rustup1.95 and the committed lock. Permit only the necessary lock update, then use --locked --offline for subsequent gates → verify: metadata succeeds; one Git cyber-hemera0.3.1 ID reaches all eight inheritors; the expected std/serde edges exist; registry0.1.2 stays distinct; no source requires the adjacent sibling. Every downloaded Git package file matches the exact Hemera commit, not merely its version string.

  3. Compare baseline and candidate metadata under default, no-default and all features, including each owning manifest as needed to avoid feature unification masking a missing std edge → verify: map the single 0.3.1 path ID to the new exact Git ID, and compare the graph/features. The only intentional feature marker removal is default, whose pinned expansion is exactly std. Preserve cfg-relevant std/serde. Freeze all non-Hemera package IDs, sources, versions and checksums. Record any Cargo-generated lock difference precisely; unexplained unrelated changes block implementation completion.

  4. Run the real existing independent BAO/consumer checks on exact candidate sources: cargo test -p cyber-bao --all-features --locked --offline and cargo test -p cyber-bao --release --all-features --locked --offline; owning iroh-blobs lib tests with filters root_policy, export_pairs, parent_pairs and empty_root (cargo test --manifest-path iroh-blobs/Cargo.toml --lib --locked --offline <filter>); checks/tests for actual particle, radio-cli, iroh-docs and radio-integration-tests package IDs found by metadata. Compiler checks cover all eight inheritors and native transitive consumers → verify: canonical/old-root literal distinction, existing real Hash exchange and store controls remain correct. Use exact same commands on the pinned path-Hemera parent for any failure; preserve unknown/different causes. Do not write a duplicate algorithm or a mock to replace a real consumer.

  5. Run scoped strict Clippy and documentation, current-parent and last-tag semver checks with separate fresh helper targets/locks, then repository gates from the pinned workflow below → verify: exact current Rust sources are unchanged; candidate and parent source/command identities are retained; all required reds remain red. API diagnostic compares default and nondefault owner surfaces; source identity escaping in public Hash conversions is an explicit compatibility boundary even if rustdoc comparison reports green. Never turn an inconclusive tool result into a pass. Add a small compile probe of the existing public Hash exchange using a separately declared path Hemera: unchanged parent must compile, candidate must expose the intentional distinct Git/path type mismatch. This is a compatibility witness, not an algorithm test or a reason to change sibling manifests. A newly failing real dependent remains introduced unless the exact parent reproduces the same failure.

  6. Freeze the dependency delta and bounded CODE input with complete changed manifests/lock, direct consumer contracts, source/feature comparison, ordinary witness and final outputs. Obtain fresh different-vendor CODE review; retain unedited verdict and invocation. Assemble lossless compact audit and Nu verifier → verify: exact command/source reconstruction, no dirty input or unexplained lock change. Root handles any decision/wip accounting and ordinary PR merge. No source mutation after freeze without new review disposition.

Repository/rung gate staging

Use explicit installed toolchain paths and record actual cargo/rustc/rustdoc versions, environment, cwd, complete output and exit. Native stable1.95, MSRV1.89 and workflow nightly2025-10-09 are the planned installed tools; verify availability before use. At most two Cargo jobs, incremental disabled, owned targets only. No toolchain install, runner fleet, paid job or broad process kill is authorized by this plan.

Named repository controls: workspace default test compilation/runtime; all/default/no-default nextest compilation/runtime and feature/doctest loops from tests.yaml; format-check from Makefile.toml; strict workspace Clippy feature matrix; MSRV cargo +1.89 check --workspace --all-targets; private nightly docs; deny and semver. Use the pinned nextest0.9.80 and committed timeout configuration when available. Start each stage with its prerequisite; a compilation failure blocks its dependent runtime and is recorded as such. Existing source/runtime failures get identical exact-parent counterparts; only failed runtime cases need repeat, with the narrower comparison disclosed. Prior PR36 outputs are history, not this candidate's gate results. Full native runs remain bounded by the committed timeout policy. Formatter/source fixes are outside this unit.

Platform matrices (Linux/FreeBSD/Android/Wasm/Windows), minimal-versions and netsim remain named obligations; local unexecuted checks are unverified rather than omitted or inferred from compilation on macOS. Existing hosted codespell and other-source errors remain visible. Do not install Python or change its tooling as part of this manifest task. Stage storage and clean only owned, completed target caches; keep all raw receipts before cleanup.

Radio is part_of=soft3 at fresh registry44824e6, so ring1 must include exact committed soft3 product/direct-dependent closure, specification and kelvin gates. Inventory and run feasible prerequisites in isolation; retain concrete missing/blocked prerequisites, then classify dependent product gates unverified. Do not replace them with the absence of Cargo consumers. Public dependency source/type identity sets a major compatibility floor for path-Hash consumers; ring2 obligations remain open unless actually run. Current soft3 has no direct Radio Cargo edge; its inspected path cybergraph/foculus closure uses path Hemera and upstream iroh, while Cyb's separate facade declares registry cyber-radio/Hemera and exchanges byte arrays. That measured source boundary is not a product pass or universal downstream absence claim. Preserve full manifests/callers, registry-only obligations and cached/unavailable inventory limitations separately. Existing phase1 Radio and Hemera release pins remain untouched and their drift remains visible. This unit makes no bump, release, tag or crates.io delivery.

Five failure questions

  1. Does source pinning silently downgrade Hemera? Exact current Git source, file-byte verification and independent existing root literals expose it.
  2. Do path and Git Hash types split across crates? Eight unified IDs and actual public consumer compilation expose it; separate registry/FFI boundaries stay visible rather than silently migrated.
  3. Does std disappear in a isolated consumer or serde drift under unification? Per-manifest metadata/feature comparisons and default/none/all compilation expose it; explicit inherited std keeps the present behavior.
  4. Does a general lock refresh move unrelated dependencies? Exact package/source/ checksum diff and locked offline repeats fail unless the sole intended Hemera source migration is the complete change.
  5. Do historical green results or source-only metadata hide actual product reds? Current candidate/parent receipts, named blocked prerequisites and separate ring status prevent that claim; fresh CODE approval alone is not a gate pass.

Rollback is an ordinary revert of this dependency unit, restoring the previous sibling-path requirement. It changes no stored keys or payloads. The subsequent bounded-reducer PLAN depends on this unit's reviewed source boundary; it must retain canonical root/non-root semantics, fixed frontier, charge-before-work, and independent partition/boundary oracles. Warm anchor and cold association authority remain open after both units.

Homonyms

plan
plan the schedule: standing orders and deferred intents. the seed exists — the mining standing order in cy/specs/body|body is the first plan entry; it generalizes into the robot acting at 3am so you don't have to. cyb/parts/time|time reads the plan forward as the future half of its screen. part of…
warriors/erga/plan
erga — ERGO (Autolykos v2) miner for Apple Silicon Zero-copy Autolykos v2 miner on Rust using the honeycrisp hardware driver stack. ERGO uses Autolykos v2: a memory-hard k-sum PoW where each nonce attempt requires 32 random reads from a 2+ GB precomputed table R, summed, and Blake2b256-hashed…
cy/specs/plan
neural/rune/PLAN
rune implementation plan rune = open-computation language for the cyber soft3 stack. Full spec: `~/cyber/cyber/root/rune.md`. architecture Two registers, one AST, one Nox target: `rust` — classic, Rust-familiar surface `rune` — pure, Hoon-style sigil surface Three proof tiers: pure: unconditional…
soft3/mir/docs/plan
Graph World — Rendering Implementation Plan Protocol spec: `cybergraph/reference/render.md` (R-1.0) Implementation spec: `cyb/render/specs/render.md` (R-1.0-cyb) Architectural decisions Barnes-Hut vs BVH The deeper question is not "which algorithm for rendering cull" but "does this manifold need…
neural/inf/rs/plan
plan
soft3/radio/audit/2026-10-11-bao-bounded-traversal/plan
Checked traversal PLAN evidence Research and proposed tests only, on actual Radio parent `a96d86e28d384cdf656aadc4282c78c0c170c102` (PR38). Production is unchanged. The [PLAN](/soft3/radio/.claude/tasks/bao-bounded-traversal/plan) specifies one admitted byte range, one emitted geometric item per…
soft3/nox/.claude/tasks/hemera-no-std/plan
Preserve nox's no_std dependency boundary Stage: revised PLAN v2, awaiting fresh different-vendor review. Parent: `0b1407a4b855e4961ede07e1b7ea199cb8018c30`. Lineage and measured failures are in [research.md](/soft3/nox/.claude/tasks/hemera-no-std/research); exact feature/ring analysis is in…
soft3/radio/.claude/tasks/bao-bounded-reducer/plan
Bounded BAO group reducer — proposed PLAN Serves: owner's Kadek phase-1 closure · Radio/soft3 · foundation row 4, bounded authenticated-range prerequisite. Source research is pinned in research-inputs.json at Radio `a11d342594949d4ea542b26366f71d56ef21662d` and Hemera…
soft3/radio/.claude/tasks/bao-bounded-traversal/plan
Bounded BAO range traversal Stage: draft; independent PLAN review pending, no production changed. Serves the owner's Kadek phase-1 closure, Radio/soft3 and foundation row 4 (bounded authenticated source ranges). Discovered from the [measured traversal…
soft3/radio/.claude/tasks/audit-cargo-packaging/plan
Lossless archival Cargo manifests Status: draft; fresh different-vendor PLAN approval required before edits to existing artifacts. Serves Kadek foundation row 4 through Radio; discovered from PR40's committed Git consumer. Parent: `ce0fb312faa8770e80efe9afa864106ae6b51552`. Result Rename exactly…
cyb/honeycrisp/.claude/tasks/unimem-block-creation/plan
Checked Block creation — plan PLAN approved with binding conditions in `/tmp/unimem-block-creation-plan-review.txt`. Implementation follows those conditions; fresh CODE review remains required. Base: `9593c7218e14e2b5b816d9008b45ab60b9580cf3`, branch `fix/unimem-block-creation`. Serves kadek…
warriors/erga/.claude/tasks/blake-batch-owner/plan
Close the Blake benchmark batch owner Stage draft; awaits root and fresh different-vendor PLAN approval. No production changes. Base Erga848e17e2522db2f6225ad72d9b1797f8735d26d0; Honeycrisp9cbd4807, Strata494df7, exact full pins/source evidence in research.md. Serves Kadek native Image ownership…
cyb/honeycrisp/.claude/tasks/unimem-block-access/plan
Raw Block access — PLAN v3 candidate Serves Kadek foundation row6/native ownership prerequisite; upstream unimem CPU access and aruminium import contracts. Base `7b148906263da5ea8aabc5ddb0e2e44ff2288ecc`; [research](/cyb/honeycrisp/.claude/tasks/unimem-block-access/research) records parent and…
soft3/radio/.claude/tasks/bao-bounded-proof/plan
Bounded complete-buffer BAO proof verification Proposed PLAN; no production implementation or approval. Serves Kadek foundation row 4 through Radio, declared part of soft3; the future Kadek adapter reaches Cyb. Radio implementation parent is b933829cbe273d2f31fe75ca83125f3ddd8917a2 (PR39); research…
warriors/erga/.claude/tasks/mine-owner/plan
Mine owner plan Stage draft; implementation waits for fresh different-vendor PLAN approval. Serves Kadek foundation row6; discovered-from Honeycrisp PR14 and Erga PR2. Base `8dcb33888868d74ddfda3eeeb9bc90e58677b394`, Honeycrisp `9cbd4807`, Strata `494df7a`; full pins/evidence in research. No…
warriors/erga/.claude/tasks/rtable-owner/plan
RTable owner plan Stage draft; implementation waits for fresh different-vendor PLAN approval. Serves Kadek foundation row 6; discovered-from Honeycrisp PR14 and Erga PR1. Base `14b40d667b7fa927f62f46423cd8096f01cf704f`, Honeycrisp `9cbd4807`, Strata `494df7a`; full revisions/evidence are in…
soft3/radio/audit/2026-10-12-bao-proof-research/prerequisite/plan
Bounded BAO range traversal Stage: draft; independent PLAN review pending, no production changed. Serves the owner's Kadek phase-1 closure, Radio/soft3 and foundation row 4 (bounded authenticated source ranges). Discovered from the [measured traversal…
soft3/radio/audit/2026-10-12-bao-proof-research/task/plan
Bounded complete-buffer BAO proof verification Proposed PLAN; no production implementation or approval. Serves Kadek foundation row 4 through Radio, declared part of soft3; the future Kadek adapter reaches Cyb. Radio implementation parent is b933829cbe273d2f31fe75ca83125f3ddd8917a2 (PR39); research…
soft3/radio/.claude/tasks/kadek-export-pairs/plan
Correct actual BAO exporter pair width Status: source-only plan awaiting fresh different-vendor approval; no code/tests edited or builds run. Base origin/main `764d732ac38fb9116c4cf525a6d1bb463d409a06`. Owned branch/worktree: `fix/kadek-export-pairs` /…
soft3/radio/.claude/tasks/bao-root-policy/plan
Canonical BAO ROOT finalization Status: draft v3, awaiting correction PLAN review; no implementation. Serves: Kadek phase-1 foundation row 4 and runtime proof-before-admission clause; radio's Hemera BAO dependency, pinned tree ROOT finalization contract. Base: radio…
soft3/radio/.claude/tasks/kadek-slice-traversal/plan
Correct sync slice traversal Status: implementation source frozen for fresh code review. Scoped tests pass; unrelated Clippy/full-workspace/tooling failures remain visible in research. Base: radio `db1d62e2cd1e4b2f309fa19bcc158bd29b44753d`, freshly fetched origin/main. Owned worktree:…
soft3/radio/.claude/tasks/kadek-memstore-pairs/plan
Canonical in-memory BAO parent pairs Status: proposed PLAN v2; fresh different-vendor approval required before source edits. Serves: Kadek phase-1 row4, existing radio verified-range import/storage dependency. Base radio `0d11468503c052aa5dcefb0dabc4602bd8efdc60`, exact Hemera…
cyb/honeycrisp/.claude/tasks/nebu-package-identity/plan
nebu package identity — plan One manifest identity repair restores origin-source Cargo resolution for the unimem gate prerequisite. Root owns implementation/review/commit/PR; this unit does not overlap the Block constructor's source/spec files. 1. Record `rustc -Vv`, `cargo -V`, host and target:…
soft3/radio/.claude/tasks/bao-empty-status/plan
Fs synthetic empty status — PLAN amendment Stage: active. Fresh Grok4.7 PLAN APPROVE preceded production edits; the exact reviewed draft and raw verdict remain frozen in the audit. Fresh CODE APPROVE and root disposition are retained in audit/2026-10-11-empty-status/. Serves Kadek phase 1…

Graph