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 foundation row 4. Discovered from bao-empty-root, superseded unmerged implementation against 344ac162. Current Radio bc8b6331d3c76cbc011210e13f81e6ea351ef06f, Hemera d5f0a09539360934fb32db9b2e15a91995607db6. Ordinary source repair only.

One remaining production change

Immediately after destructuring BlobStatusMsg in iroh-blobs/src/store/fs/meta.rs::handle_get_blob_status:

if hash == Hash::EMPTY {
    tx.send(BlobStatus::Complete { size: 0 }).await.ok();
    return Ok(());
}

All other paths remain byte-identical. Reuse existing imports, no helper or API. The canonical EMPTY constant, its upstream documentation and equality test are already fixed and must remain unchanged. The status query describes the file's logical availability through existing synthetic reads and exports.

Files: this four-line addition in existing977-line meta.rs; only a cfg(test) mod empty_root declaration in existing621-line hash.rs; the three independent test files hash/empty_root.rs and hash/empty_root/{stores,remote}.rs; task artifacts and measured audit/review receipts. Each new Rust file is below500 lines. These are narrow existing-file exceptions. No spec, manifest, lock, dependency, version, docs-engine, storage-schema, list, deletion or Hash identity edit.

Steps and decisive checks

  1. Freeze current origins, committed dependency closure and test-only witness → verify raw origin/metadata receipts, unchanged locked inputs, exact parent production plus one cfg(test) declaration and three test files. Current debug witness has15 pass/2 Fs NotFound failures; preserve it and the release witness. The separately measured current listing is [] before/after empty add. Current Hemera primary contracts/literals match old byte hashes; optimized code does not. Fresh literal/domain controls, not that historical implementation, justify reuse of the published expected bytes.

  2. After fresh PLAN approval, copy the exact17-test sources/module to the owned worktree and candidate export, then add only the guard → verify production diff exactly matches this plan. Keep the two existing failing Complete{0} assertions. Final all/default/release tests should execute17; no-default15 because the two Fs tests are feature gated. The named existing EMPTY equality test stays upstream-identical and runs as an additional control.

  3. Validate synthetic availability through public storage APIs → verify fresh status/has, actual add in Raw and HashSeq formats, reads/reader, observe and completion, exactly eight zero BAO-header bytes, shutdown/reopen and forced deletion. Lists stay empty after current empty adds. Old zero and hello start absent; a real hello add is Complete5, exact bytes and LE64(5)||hello export before/after reopen, with only hello enumerated. No claim of empty persistence.

  4. Preserve admission, identity and verifier controls → verify fixed literal empty tree/plain-particle distinction, canonical/zero/hello raw and ticket serialization, leaking tag formats; local zero-header guard, short-header and wrong-key wrappers; actual remote ResponseDecoder empty success and wrong-root leaf mismatch; successful nonempty local/remote control. Tests use existing APIs and byte transports, with one finite30s bound, no retry or fake verifier.

  5. Exercise the current reverse closure → verify metadata includes iroh-docs, radio-cli and radio-integration-tests; test them using actual local package IDs. Read full docs engine status/download consumers. The changed Complete result avoids requesting already available synthetic empty content. Existing tombstone identity/validation remains byte-identical. Registry willow is still separate. A downstream failure gets its current-parent counterpart, never an explanation copied from old 344ac162 diagnostics.

  6. Freeze source and gate receipts → verify exact files, command/environment/time, stdout/stderr hashes, locked inputs and current-parent negative comparisons. Request fresh CODE review for this narrower current-origin source. Preserve both historical and amended plans/verdicts as separately labeled evidence.

Gates after approval

Use separate committed-source parent, witness and candidate exports with current pinned Hemera. Only tracked nettools/target is excluded with inventory. Ordinary actual Rustup1.95.0, MSRV1.89.0, named docs nightly-2025-10-09; matching Cargo, RUSTC and RUSTDOC, two jobs, RUSTFLAGS=-Dwarnings. Strict owning docs use RUSTDOCFLAGS=-Dwarnings; named CI docs keep --cfg docsrs. Retain archive VERGEN warnings without calling a successful exit warning-free. Coordinate targets with root; clean completed owned targets only,20GB staging and30GB hard budget.

Scope Executable check
Failure-first Current production plus test-only overlay: cargo test --manifest-path iroh-blobs/Cargo.toml --lib empty_root --all-features --locked --offline, debug/release; current public enumeration probe.
Candidate focused Same owning filters all/default/no-default/release; existing test_empty_hash, root_policy, export_pairs and parent_pairs. cargo test -p cyber-bao --all-features --locked --offline.
Current broad behavior Parent and candidate native owning nextest with --lib --all-features --locked --offline --test-threads 1 --profile default --no-fail-fast, unchanged committed30s bounds. Per-name outcomes and actual diagnostics.
Current reverse consumers cargo nextest run -p iroh-docs -p radio-cli -p radio-integration-tests --all-features --lib --bins --tests --locked --offline --profile default --test-threads 1 --no-fail-fast; parent counterpart for every candidate failure. No older package-ownership shortcut.
Owning gates All-target/all-feature Clippy -- -D warnings; strict private owning docs; git diff --check, cargo fmt --all --check, cargo make --disable-check-for-updates format-check.
Workspace stack gate Current cargo test --workspace --locked --no-run; bounded workspace runtime is covered by the named CI nextest execution below, without a duplicate matrix. Distinguish it from the unbounded train command.
Named CI tasks Exact workspace nextest no-run and Clippy target/feature loops default/none/all; workflow feature/doctest package loops and workspace all-feature doctests. Runtime commands use the committed profile ci bounds when reached; missing/failed compilation remains a gate failure.
MSRV Actual1.89 owning filters above, plus literal CI cargo check --workspace --all-targets --locked --offline (the step title says all features but argv omits that flag). Current consumers also compile.
Named nightly docs Actual pinned nightly cargo doc --workspace --all-features --no-deps --document-private-items --locked --offline, CI RUSTDOCFLAGS.
Dependency policy Verified cargo-deny0.18.9 binary; cargo deny --workspace --all-features --locked check --disable-fetch -Dwarnings with unchanged frozen advisory DB identified before each run.
API Semver0.51 against exact current parent and last-tagv0.1.0 source, pinned current Hemera; retain actual helper manifests/locks and disclose scratch resolution separately from committed-lock gates.

Read the current workflow argv before executing named tasks. Metadata may still resolve literal CI names iroh/iroh-relay to registry packages; report that honestly and keep actual local consumer gates separate. For each required current red format/lint/docs/compiler result, run a matching current-parent command and retain complete diagnostic differences. For test failures/timeouts compare names and causes, never counts alone. Do not rerun whole matrices merely to seek green. No cross-target fleet, minimal-version dependency mutation, hosted CI, kelvin, rung or release pass is implied by local checks. Required reds retain wip/decision accounting; owner authorization covers this ordinary source fix, not release.

Failure questions and boundaries

  1. Did upstream already fix the guard? Current source and the two unchanged ordinary assertions prove it has not; recheck origin immediately before merge.
  2. Are old vectors valid after Hemera optimization? Pin current contract/literal byte identity and execute current domain/nonempty controls; do not claim full implementation equivalence.
  3. Does synthetic status mask absent/nonempty data? Match only canonical EMPTY; fresh/reopened zero/hello negatives and real hello round trips exercise the unchanged lookup. Legacy empty inconsistency masking is explicitly accepted.
  4. Did changed dependency wiring widen the effect? Current docs engine is a local consumer; run it and preserve tombstone/signature/identity code unchanged.
  5. Are stale tests or errors misattributed? Current source/lock manifests and failure-first receipts are independent of old344 evidence. Current listing already omits synthetic empty; this guard changes status/has only.

MemStore pre-add consistency, bounded proof work/allocation and authenticated particle/root/length binding remain separate. No API or identity migration and no release/version/tag action. Root owns review invocation, commit and merge.

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-hemera-pin/plan
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…
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:…

Graph