Raw Block access — research

2026-10-09/10 · serves Kadek foundation row6's native ownership prerequisite and unimem's raw CPU access contract. No production edits or candidate gates. Initial source research is followed by explicitly delegated exact-parent gates below. Plan awaits a fresh vendor verdict; root owns review invocation.

Authority and base

Owned checkout /Users/master/cyber/honeycrisp-kadek-block-access, branch fix/unimem-block-access, HEAD/origin/main 7b148906263da5ea8aabc5ddb0e2e44ff2288ecc (Block PR13 merged23:59:02Z). Root fast-forwarded from implementation 6715335a3283e22218ad5f762316f2c735acb56f; git diff --exit-code 6715335 HEAD -- Cargo.toml Cargo.lock src unimem acpu rane aruminium returns0: only parent task/audit artifacts were added. Nebu identity is already repaired by 6560974dcd1a77b4b2e040a2b2a4187b702ace0b, with strata 56aedb2d12b3126c601eb333419136d403614dbb. The earlier scratch note's 9593c72 base and unresolved-nebu assertion are stale.

Read ~/cyber/cyberia/dev.md, root/unimem/aruminium/rane CLAUDE.md, native specs, source and the frozen parent task's research/plan in ~/cyber/honeycrisp-kadek-block-creation/.claude/tasks/unimem-block-creation/. Preserve those artifacts as parent evidence. The merged package repair receipt is audit/2026-10-09-nebu-package-identity/README.md; the completed Block receipt is audit/2026-10-09-unimem-block-creation/README.md. These distinguish passing native/workspace execution from pre-existing red fmt/lint gates. Initial source research ran no measurements; the later parent-only receipt below records its own commands/compiler and does not replace those historical receipts.

Commands: git status --short, git rev-parse HEAD origin/main, git log -4 --oneline, rg -n 'as_(bytes|f32|u16)(_mut)?\(|\.warm\(|\.wrap\(' --glob '*.rs', scoped cat/sed -n; external git ls-remote origin HEAD, then git grep -n -E ... <pin> -- '*.toml' '*.rs' and git show <pin>:<path>. All sibling source is immutable Git content, never dirty build input.

Actual access graph and contract holes

unimem/src/block.rs:114–220: Block owns/locks/releases an IOSurface and is Send+Sync. All six byte/u16/f32 slice accessors are safe; the mutable three take &self with mut_from_ref suppressed. Shared calls can create overlapping Rust references. Checked creation proves pointer alignment, extent and lifetime, not initial byte values, alias exclusion or CPU/device completion. Creation locks once and drop unlocks once; no lock/unlock occurs around a typed view, so Block performs no per-access synchronization. This is a source claim, not a universal statement about IOSurfaceLock's API semantics. The typed slices cover actual size(), size()/2*2 or size()/4*4 bytes, including native padding, not just requested bytes. Forming a whole typed view then slicing its initialized prefix does not establish the whole-view contract. Rust's primary from_raw_parts and mutable counterpart require initialized values throughout the returned slice and preserve their respective shared/exclusive access requirements; checked pointer arithmetic alone does not satisfy them. Both primary pages were read during this research.

tape.rs:35–55,127: warm(&self) writes one zero byte at a fixed16KiB stride while block() exposes the same backing owner. These offsets do not imply the runtime VM page size, and warming does not initialize all bytes. Raw takes outlive a Rust borrow; &mut Tape alone cannot express every external alias/device duty. Safe start_warm has the stronger fresh-owner proof. clear(&self) changes only the cursor; it establishes no retained output owner.

grid.rs:75–95: Grid exposes &Tape; Cell exposes a raw pointer and an already unsafe bytes(&mut self,len). The latter's contract says bounded/exclusive but omits initialization. No safe typed view should be inferred through this route. Independent gaps remain: Grid::new multiplies constants unchecked; give(Cell) does not establish the cell's originating grid, and safe take uses the returned index in pointer arithmetic. A foreign high index can exceed the receiving allocation. These need a separate ownership/arithmetic repair; this task must not claim all safe Grid operations are sound.

aruminium/src/device.rs:137–177: buffer_wrap is already unsafe, while wrap(&Block) is safe and returns a Buffer with no Block lifetime/retained owner. Block must outlive imports and all encoded/in-flight accesses. Buffer's own safe closure read/write methods and as_bytes (buffer.rs:69–143) separately permit aliasing or in-flight reads; this unit marks the import boundary, not a full GPU API repair. Commands wait/status/error exist (command.rs:193–219), but no fence is attached to Block. rane/src/model.rs:170–201 contains already-unsafe Program::run_direct, its build_request is at342–402 and low-level Objective-C bindings are in rane/src/ffi.rs. The private evaluateWithQoS:options:request:error: call returns a success flag; the existing caller assumes evaluation and memory visibility are complete on success. No public documented Apple ANE completion specification was established here; retain that dependency assumption explicitly when migrating its existing test.

Metal page and VM-region compatibility

Apple's no-copy buffer contract requires page alignment of both pointer and imported extent, and confinement to one VM region. This is stronger than BlockPlan's IOSurface property alignment: creation checks exact returned size and lane alignment, not VM pages. The existing vecadd fixture requests1024bytes and therefore lacks this proof; a previous successful run cannot waive the documented precondition. The import must never round length beyond the actual owned extent. Change the fixture's allocation request, not BlockPlan/open or the imported length.

Apple's getpagesize returns the process/system VM page size, distinct from an assumed hardware page. Use a test-local C declaration and check its positive result. Neither the public base-address nor allocation-size page establishes a universal single-region IOSurface guarantee; none is claimed. For native fixtures, query and check the full actual mapping before import with mach_vm_region_recurse, whose SDK declaration and pinned XNU implementation are cited below. The test keeps its fresh owner live and performs no remapping after the query.

SDK26.4.1 (xcrun --show-sdk-version), real path /Library/Developer/CommandLineTools/SDKs/MacOSX26.4.sdk, pins this test-only FFI: unistd.h:572 getpagesize; mach/mach_init.h:80–81 task port global; mach/mach_vm.h:299–313 recurse signature; mach/vm_region.h:54,298–324 packed4 short-info structure/count; mach/vm_prot.h:87–88 RW flags. The short structure is48bytes/12integer words, with is_submap at byte32; ABI assertions protect the Rust test mirror. Passing depth=u32::MAX reaches a leaf; require is_submap=0, returned count12, RW access, and checked address+size containment. RW is required by these read/write fixtures; it is not an added universal Metal import precondition. The recurse API creates no object-name send right. This is a current mapping check, not an ownership or completion fence. Apple XNU f6217f891ac0bb64f3d375211650a4c1ff8ca1ea, osfmk/vm/vm_map.c:15150–15180,15304–15312,15485–15514, independently supplies short-info count, maximum-depth, leaf and returned-range semantics.

Full primary content and acquisition commands/checksums are frozen in /tmp/kadek-unimem-block-access-primary/{sources.json,sdk-inputs.json,SHA256SUMS}. SHA256SUMS hash: e386277ba595b3e3ece2b736815acc635853d8608a427ec94a3f05e8c0469013. The pack contains Metal/IOSurface Markdown, getpagesize HTML, exact SDK headers and the pinned full XNU file; two failed Mach Markdown fetches are recorded, with SDK/XNU primary evidence used instead. No probe/build was run during this primary-source acquisition; later parent-only gates are recorded separately. The separate REVIEW-SHA256SUMS selects full no-copy/IOSurface pages, the complete getpagesize manual body, complete XNU recurse function and SDK ABI excerpts with full-file hashes and inclusive ranges. This compact review selection preserves the original full archive and does not truncate any reviewed function body.

Shared Metal visibility and historical spec correction

Apple's CPU/GPU synchronization sample requires CPU writes to finish before committing commands that reference the shared buffer, and excludes CPU reuse until the relevant GPU work completes. Its ordered single-thread write/encode/commit path is the fixture's CPU→GPU proof. Apple's compute sample uses storageModeShared, commits then waits, and states completed results are CPU visible. waitUntilCompleted waits for GPU commands and completion handlers. These public API rules supersede buffer.rs:55–58's unsupported standalone dmb ish prescription. A CPU barrier alone establishes neither GPU completion nor Rust alias exclusion. Update only contents_ptr's documentation; its raw-pointer signature and Buffer behavior stay. This concerns current MTLCommandQueue/MTLCommandBuffer shared storage, not Metal4 queues, managed/private storage, or an ANE ordering guarantee.

Full new primary Markdown and curl commands/checksums: cache sources-v2.json, metal-cpu-gpu-sync.md, metal-compute.md, metal-wait.md. REVIEW-V2-SHA256SUMS selects the original inputs, full wait page, complete relevant article sections with inclusive line ranges/full-source hashes, and the compact complete caller inventory. SHA256: 09d22d36516f1f26c7daef7c1c9c386407cf3f19a3bfea361d21e1508f918f40. Full acquisition files remain cached; no contained sample method is truncated. Full Apple/SDK/XNU content remains a temporary acquisition cache. The later public audit retains URLs, revisions, hashes and original project probes, not those pages.

At base7b148906, unimem/specs/README.md:143,171–172,203 and api-sketch.md:89,160, plus unimem/CLAUDE.md's immutable-Block gotcha, incorrectly infer immutable storage/no races from owner fields or lock lifetime. README:171 universally promises one VM region; :460 reports it with ~20us/~23GB/s and a probe pointer. Inspecting the entire tracked probe directory finds only Cargo.toml/lock and source, no raw result or machine/run receipt. Source experiments/iosurface_probe/src/main.rs:452–531,690–741 queries 4KB/1MB/16MB/256MB, but that source alone proves no observed outcome. Git history records its import at1d1b866dd45b991b73d1f28b9bd3f736b5fcd65d; that is not a run revision. Layer1's “Measured performance (from experiment)” table repeats these four sizes/numbers without run provenance. Move both the :460 row and that table with its following throughput/projection sentence verbatim to the owner audit as historical reported claims with missing machine/invocation/run revision; remove the universal invariant and link the scoped evidence. Other unrelated performance sections stay outside this access repair. No fresh measurement is substituted for either historical claim. The adjacent CLAUDE.md:63 page-size gotcha needs the same fixed-stride/runtime-page distinction as README:240; no broader instruction-file cleanup is planned. Parent's separately reported C ABI and region probes are follow-up evidence with their own commands/source hashes, not provenance for the historical row.

Every direct in-repository caller found

File / function Existing initialization and required proof
unimem/tests/roundtrip.rs, block_slice_lengths / block_slice_pointer No initialization; initialize full actual size via raw bounded write before constructing any view, even for len/pointer checks
same, block_cross_view_f32_bytes / block_cross_view_u16_bytes Only first element assigned through full mutable slice; initialize actual backing first, then sequential nonoverlapping views
same, tape_warm_after_start Fresh tape, no takes yet; mutable binding and justified unsafe warm; start_warm proves freshness internally
same, cell_bytes First/last bytes only, whole slice already formed; initialize selected256-byte cell extent through raw pointer before unsafe view
unimem/tests/block_creation.rs, native_alignment_extent_and_raw_row_boundaries Already writes every actual byte 0xA5 before all three read views; retain oracle, add justified unsafe calls
aruminium/tests/integration.rs, wrap_block_vecadd A/B filled via full typed mutable views before initialization; C GPU writes only256 floats, native padding remains unproved. Zero entire actual A/B/C via raw writes, then fill A/B; end views before import; scoped buffers/commands stay alive through wait and status check; read C only after completion
same, gpu_buffer_wrap Hardcoded16KiB manual allocation then uninitialized f32 slice; use owning page-sized Block, runtime page/leaf-region preflight and actual-extent raw initialization before direct buffer_wrap; retain owner through buffer drop
rane/tests/hardware.rs, run_direct_with_unimem_block Input writes program extent only; output and padding uninitialized. Zero full actual input/output before views; end input borrow before run_direct; retain owners through synchronous evaluation and read output only after successful return

No production caller of the changed Block slice methods or Gpu::wrap was found in this checkout beyond their definitions. Tape::start_warm is a production internal caller; Layout, benches/examples call that safe constructor. Root facade, aruminium and rane re-export Block; source changes reach dependents. Raw-pointer tests initializing only endpoints remain valid because they read only those endpoints and never form whole typed slices.

Complete scan is /tmp/unimem-block-access-caller-inventory.json, generated by /tmp/unimem-block-access-v2-research.nu: git ls-tree -r --name-only 7b148906, then git show <pin>:<every tracked .rs> and the bare-name expression \b(as_bytes|as_bytes_mut|as_f32|as_f32_mut|as_u16|as_u16_mut|warm|wrap)\b. All157 tracked Rust files have a hash, line count, lexical matches and explicit changed-call count, including zero. Manual type classification yields26 calls in the five files above, including the warm invocation INSIDE start_warm at tape.rs:37; calls TO unchanged start_warm are excluded. The bare-name regex cannot match start_warm because underscore is a word character. Definitions/comments and Buffer's unrelated as_bytes are excluded; rane/model.rs:44 and probe/compile.rs:153 call str::as_bytes. Broad bare names also cover associated calls/function references. Private block/tests.rs, aruminium/src/tests.rs and render/tests.rs, every example, bench member, probe module and experiment have zero changed-API calls. The review selection contains full private block/aruminium tests and unimem ffi, plus full rane/model.rs and probe/compile.rs to resolve the two str::as_bytes matches. Unmodified zero-call examples/bench/probe/experiment bodies are represented by the complete per-file inventory/commands/hashes; complete source stays available at the pinned commit. No local Rust file is excerpted. Inventory includes the historical IOSurface probe's exact SHA; its body is omitted for context size. No example/bench migration is planned; only inspected test fixtures need added initialization. Inventory SHA256: a066fde1cec16f9a0c1613e2efc232ab852d621da4ba9740aa06a2c0668fdef6.

Separate exact-source \bstart_warm\b scan across the same157 Rust files finds five unchanged constructor calls: unimem/benches/alloc.rs:7, benches/bandwidth.rs:41, examples/pipeline.rs:267, src/layout.rs:28 and tests/roundtrip.rs:271; src/tape.rs:35 is its definition. Commands, every source hash and explicit zero/nonzero matches are in /tmp/unimem-block-access-start-warm.json, generated by the adjacent .nu script. This corrects v2 review's suggested two call sites and stale line numbers with committed source evidence.

Exact-parent lint reachability and gates

Root delegated parent-only validation while PLANv2 was frozen. Immutable 7b148906/strata56aedb2 archives and preserved lock, rustup1.95.0/rustc59807616, LLVM22.1.2, jobs4; /tmp/unimem-block-access-validation-6eQqO1/parent-baseline/README.md and final.json record21 receipts including two superseded tool-path attempts. The original fmt/Clippy selected Homebrew subcommands; Clippy failed E0514. Prepending the chosen toolchain bin fixed resolution; actual paths/hashes/versions are retained. Homebrew's LLVM22.1.3 is a different toolchain despite the same rustc commit. No source/lock change, candidate overlay or candidate gate occurred.

Pinned fmt remains red; workspace -D warnings and selected packages without --no-deps stop on four emitted acpu diagnostics, possibly masking other findings. Selected all-targets --no-deps reaches further but hits existing test lints and benchmark imports. Full workspace -W warnings also exits101: four emitted warnings,36 E0433 benchmark errors and two failure notes. Thus neither suggested all-targets alternative alone establishes C1's required lint coverage. The actual strict selected-library --lib --no-deps -Dwarnings -Dclippy::missing_safety_doc exits0 and reaches both unimem and aruminium. Selected unimem/aruminium/rane --tests --no-deps -Wwarnings exits0 with eight existing needless_range_loop warnings. These complementary candidate gates must reach all eight newly unsafe methods and changed fixture modules. Keep full -D and -W gates red/attributed; compare complete emitted diagnostics and masking, not only exits. No new allow or unrelated lint/benchmark repair is authorized.

Workspace tests passed336/ignored5; release build, strict docs, existing native filters, unimem release/build/bench, pipeline, named vecadd and bounded64³ matmul all exit0. Exact commands/raw outputs are retained; these are execution results, not safety or performance proofs. Parent/candidate archives remain unchanged: 450honeycrisp +244strata files per archive; no extra source paths. Final live target was1849676KiB. PARENT-BASELINE-SHA256SUMS SHA256: e620a15100c4f5205d5c470de6852c9f8a8fcb456ce1914cc7c0e799a78f022b. Raw JSON diagnostics plus parent-baseline/diagnostics.nu support exact emitted message multiset comparison (duplicate counts preserved; coordinate shifts ignored only in comparison keys). Source coordinates remain in diagnostics.json. The v2 task docs/brief/inputs/response/verdict are preserved in /tmp/unimem-block-access-plan-v2-archive; its SHA256SUMS hashes to 1cea80a27c66f99ef5bc1143bebcb25f0b1f962ef21288f7a13fd43327d8fca8. Baseline final.json records that still-frozen v2 plan, before these corrections. Primary-cache REVIEW-V3-SHA256SUMS preserves every v2 input and adds the compact complete start_warm scan/procedure and actual C1 gate evidence/comparison script; SHA256 2cc06f416881bf4593c6c96fb2e719f05e9cfb642ba60215eafe0fe4f2b2e422.

Fresh external inventory

Fresh remote HEAD pins and immutable manifest scan (unimem|aruminium|honeycrisp):

Repo Pin Relevant result
cyb 4e4711f1ba4de640e60e29304b6180c94f20c9d7 Direct path dependencies; no changed accessor/import caller found
mir b9c832d5011d5a719bec6021afef123be35490ab Direct path dependencies; changed calls below
evy 2f23bfb97fe2904e3bcba3f116b473ed6cbec483 Direct dependencies; probe only calls unchanged Block::open; bbg backend path below
bbg a3c9a0c22bfb78ef891265f9e2cd25838ef77c2d Dormant unimem storage source; backend-unimem feature/dependency unwired
strata 56aedb2d12b3126c601eb333419136d403614dbb nebu registry acpu path feature stays off; no direct changed API caller
soft3 94af9de717658b3e912bcfccc85409fd29b23a10 Component/release registry only
spark 5399d36e99637a9d36018ecf88f3d4d6a80cc9a9 No matching manifest dependency
file fc666a5880ff874adae655150414b3a45832baf0 Same
prysm f66cbd82cada5f5e6315b674818bce705b962eb6 Same
optica 9f0c352cfea30e1ac8ce0feb0d735ffb9fa47ace Same
wysm bde62d57e4ed2a89fae475ea9e216aeffbd6deb8 Same
lytics 02c98495deda66c5f3c69ba3d5be650ce658e313 Same
cyber e5a0b80708d1caffcfedd4428161edd95d573a4f Same
true-cyber b58589f130f4f80dd8b2752f98704842372aa2d9 Same
bita cff2b0af4dd0c24c996cdde7283fff04d7e3c6e7 Direct workspace/optional rbtc-hash5 dependencies; changed calls below
erga 848e17e2522db2f6225ad72d9b1797f8735d26d0 CLI and benchmark/miner dependencies; changed calls below
glia 89adc925c47205ba8ce0438ffb984f3e1466a92a run/Cargo.toml aruminium; no changed API caller found
nika 3dfb67415a1b2420300d6f114fad64286f22cc3e Direct unimem/aruminium; no changed API caller found
perla d06b980d3f29ee829ba0fd264d67581cf79b75f6 Direct aruminium; no changed API caller found
quanta c7838cbc86f7d74477da1771139f377a8e438072 Local discovery match absent from committed origin manifests; no dirty input used
trisha 3cb3984eca9e6a1e71cb9fd8e2cc7ea18913fd2d honeycrisp/Cargo.toml optional aruminium; no changed API caller found
xena 6ea943a2ea3c613e071543cf712287dd087532ba Direct unimem/aruminium; changed calls below
zoya ef8f582f2562a61c1e5f4adb46f0651aa6b86bbf crates/progpow aruminium; no changed API caller found

The additional repositories were discovered with rg -l --glob Cargo.toml 'honeycrisp/(unimem|aruminium)|^unimem:space:*=|^aruminium:space:*=' /Users/master/cyber, then separately pinned by git ls-remote origin HEAD and inspected with git grep/show <pin>. Filesystem discovery is not source authority; duplicate worktrees were collapsed. Type-resolved follow-up excludes unrelated Bitcoin Block and glia Tensor methods from changed-call results.

Mir Apple arm re-exports aruminium. Non-Apple src/gpu.rs:129–143 initializes via as_f32_mut, and wrap at700–708 uses whole as_bytes in its fallback. Imports retain Vulkan memory/device, not Block. It also expects Block::alloc_size and Android support absent from pinned upstream. An unsafe annotation alone would not repair those ownership/platform gaps. This task does not patch mir.

BBG rs/src/storage/unimem.rs: four mutable calls (124,138,167,181); immutable calls in get/iter/tests (86,105,241,256,344). Pool writes initialize one slot, per-entry writes initialize count*8, neither proves the entire Block view. It exposes Block and has separate count/capacity concerns. Its cfg is declared for linting but feature/dependency are not wired (rs/Cargo.toml:30–34), so no executed-feature compatibility claim is possible. Do not mechanically wrap calls or enable the backend as part of this unit. Fresh inventory is a named source closure, not all external ecosystem users or a passing ring1 gate.

Erga rs/blake-bench/src/lib.rs:98–115 wraps an uninitialized Block and exposes safe mutable bytes through &self; rs/rtable-bench/src/lib.rs:57–58,80,111 does likewise before parallel table writes. Both declare imported Buffer before Block so field drop order is appropriate, but this does not establish full-view initialization, exclusion or completion. Xena crates/xena-hash/src/scratchpad.rs: 24–42 forms whole byte views before scratchpad initialization; crates/xena-gpu/ src/lib.rs:45–63 wraps, submits and waits but accepts a shared Block. Benchmark direct wraps occur in crates/xena-bench/src/{cpugpu,gpubench,gpudebug,gpuverify, power}.rs. These need reviewed caller contracts, not mechanical unsafe blocks.

Bita crates/rbtc-hash5/src/metal/mining.rs:86–93,130,170,210,252,339–345 wraps Blocks, forms whole mutable slices then initializes only the counter or 80-byte header, and exposes async GPU futures independently of backing ownership. Block fields precede their Buffer imports in the struct. Lifetime/exclusion and full initialization require an independent consumer repair; annotation alone is insufficient. No external code or feature activation is in this unit.

For later ring receipts, separate causal diagnostics from caller safety proofs:

Consumer Change-caused compiler obligation Independent existing safety/build gap
xena scratchpad + GPU/bench wraps unsafe-call diagnostic; mutable scratchpad receivers already &mut Whole-view initialization and import lifetime/exclusion still need proof; adding unsafe alone is not a sound repair
erga ZeroCopyBuf/RTable unsafe calls plus mutable Block borrow through &self; receiver/ownership redesign Full extent initialization and parallel exclusion remain unproved
bita mining unsafe calls plus &self mutable access; receiver/ownership redesign Partial init, async ownership and field drop ordering remain unproved
mir non-Apple gpu New unsafe calls are a separate source regression Missing alloc_size/platform support already blocks compilation and may mask new diagnostics
bbg dormant backend Unsafe/receiver obligations apply if wired; latent source break Feature/dependency unwired at parent; no executed feature claim

For every attempted consumer, compare exact parent and candidate under the same compiler/feature/closure, record each first diagnostic and whether it masks later calls, and label new/regressed versus reproduced pre-existing failure per path. No external unsafe annotation is accepted as proof or applied by this task.

Exact existing review inputs

All local paths below exist at7b148906 except the two owned task docs. Planned new unimem/tests/block_access.rs and aruminium/tests/support/import_memory.rs are intentionally not existing inputs. Add the selected primary pack and complete caller inventory above. Zero-call bodies omitted under that inventory remain unmodified pinned source; this list is the review selection, not the scan's scope.

.claude/tasks/unimem-block-access/research.md
.claude/tasks/unimem-block-access/plan.md
CLAUDE.md
Cargo.toml
Cargo.lock
src/lib.rs
unimem/CLAUDE.md
unimem/Cargo.toml
unimem/src/block.rs
unimem/src/block/creation.rs
unimem/src/block/tests.rs
unimem/src/ffi.rs
unimem/src/tape.rs
unimem/src/grid.rs
unimem/src/lib.rs
unimem/src/layout.rs
unimem/tests/roundtrip.rs
unimem/tests/block_creation.rs
unimem/specs/README.md
unimem/specs/api-sketch.md
aruminium/CLAUDE.md
aruminium/Cargo.toml
aruminium/README.md
aruminium/specs/README.md
aruminium/src/device.rs
aruminium/src/buffer.rs
aruminium/src/command.rs
aruminium/src/encoder.rs
aruminium/src/dispatch.rs
aruminium/src/sync.rs
aruminium/src/lib.rs
aruminium/src/tests.rs
aruminium/src/ffi/mod.rs
aruminium/src/ffi/selectors.rs
aruminium/src/ffi/trampoline.rs
aruminium/tests/integration.rs
rane/CLAUDE.md
rane/Cargo.toml
rane/src/model.rs
rane/src/surface.rs
rane/src/ffi.rs
rane/src/lib.rs
rane/tests/hardware.rs
rane/src/probe/compile.rs
.claude/tasks/unimem-block-creation/research.md
.claude/tasks/unimem-block-creation/plan.md
audit/2026-10-09-unimem-block-creation/README.md
audit/2026-10-09-nebu-package-identity/README.md

External primary caller inputs, obtained by git show <table-pin>:<path>: mir Cargo.toml, src/gpu.rs; bbg rs/Cargo.toml, rs/src/storage/unimem.rs; erga rs/blake-bench/{Cargo.toml,src/lib.rs}, rs/rtable-bench/{Cargo.toml,src/lib.rs}; xena Cargo.toml, crates/xena-gpu/{Cargo.toml,src/lib.rs}, crates/xena-hash/{Cargo.toml,src/scratchpad.rs}; bita Cargo.toml, crates/rbtc-hash5/{Cargo.toml,src/metal/mining.rs}. No external source is edited.

Scope limits

No zeroing in Block::open/plan, allocation semantic change, new owner/lease API, pool reservation, immutable publication, device fence, portable backend or Kadek production edit. CPU VA stays CPU VA. Retention, foreign Grid cells, Tape argument arithmetic and safe GPU/ANE wrapper concurrency remain separately identified gaps. The only initialization added here belongs to inspected tests that actually read or form typed references; it is not a native allocator guarantee.

Homonyms

cyber/research
open research areas and theoretical foundations for the cyber protocol see sub-pages for individual research topics
species/research
cyberia/research
research working research packs for cyberia — each folder is one project with a `README.md` index. | project | what | |---------|------| | genome-protocol | attested genome / kinship proofs without a central registry | | migration-market | status currencies, funnel, and nomad awareness model | |…
plants/research
soft3/soma/research
research
soft3/radio/.claude/tasks/bao-hemera-pin/research
Reproducible Hemera source for BAO Serves: owner's Kadek phase-1 closure · Radio/soft3 · prerequisite for bounded BAO verification in Kadek foundation row 4. Dependency-only task; bounded root reduction, no_std API, slice parsing and authenticated particle/root association remain separate dependent…
cyb/honeycrisp/.claude/tasks/nebu-package-identity/research
nebu package identity — research 2026-10-09 · serves: Kadek foundation row 6 native storage, via unimem's required full-workspace gates; discovered from `unimem-block-creation`. `git ls-remote --symref origin HEAD` pins honeycrisp main to `9593c7218e14e2b5b816d9008b45ab60b9580cf3` and strata main…
soft3/radio/.claude/tasks/kadek-export-pairs/research
BAO exporter pair width 2026-10-09. Source-only preparation; no build, new panic reproduction or gate. Serves: kadek foundation row 4 · radio proof provider · current Hemera pair wire. Discovered from kadek's committed `16b53f7b85640be5a68a07787815a44ec6559377`,…
soft3/nox/.claude/tasks/hemera-no-std/research
Hemera feature propagation Stage: active research. Serves the owner's Kadek phase-1 foundation closure, through nox's declared `no_std + alloc` mode and Kadek foundation row 7's real scalar kernels. Discovered from Kadek private FLAC header audit, PR 60, merged as…
soft3/radio/.claude/tasks/bao-bounded-traversal/research
Bounded BAO traversal research Owner: mov_pcm_resume, handed off by root; stage active, finite source observations measured. Serves the owner's Kadek phase-1 closure, foundation row 4 and `specs/runtime.md` verified source ranges. Discovered from the proof-provenance and bounded-reducer tasks. The…
soft3/radio/.claude/tasks/kadek-memstore-pairs/research
In-memory BAO parent-pair storage Status: research / proposed PLAN, 2026-10-10; no implementation or new gate run. Serves: Kadek phase-1 foundation row 4, authenticated-range transport prerequisite; radio's existing Hemera BAO import/storage contract. Discovered from PR32/PR33. Pinned inputs and…
soft3/radio/.claude/tasks/kadek-slice-traversal/research
Sync slice traversal research Status: fresh Opus plan APPROVE received; implementation source frozen for code review. Serves: owner's phase-1 completion · radio verified streaming · kadek foundation closure row 4 authenticated slice-proof dependency. Parent/discovered-from: [kadek…
cyb/honeycrisp/.claude/tasks/unimem-block-creation/research
Checked Block creation — research 2026-10-09 · source-only · serves: kadek foundation row 6 retained unimem storage, with row 3 admission; upstream unimem spec § Layer 1 / error model. No builds, gates, production edits or allocation experiments ran in this task. Authority and checkout Read…
soft3/radio/audit/2026-10-12-bao-proof-research/task/research
Bounded BAO proof research Serves Kadek foundation row 4 through Radio (declared part of soft3) and a future Kadek adapter in Cyb. Stage: research complete; PLAN proposed, not approved. Owned branch research/bao-bounded-proof; no production changes, commit, push or vendor dispatch. Original…
soft3/radio/.claude/tasks/bao-bounded-proof/research
Bounded BAO proof research Serves Kadek foundation row 4 through Radio (declared part of soft3) and a future Kadek adapter in Cyb. Stage: research complete; PLAN proposed, not approved. Owned branch research/bao-bounded-proof; no production changes, commit, push or vendor dispatch. Original…
warriors/erga/.claude/tasks/rtable-owner/research
RTable owner research Stage draft; research/PLAN only. Serves Kadek foundation row 6 native ownership; discovered-from Honeycrisp PR14 and Erga PR1's remaining RTable diagnostics. This unit covers the table, its concrete GPU probe and rtable CLI. Mine ownership, native Image, performance and…
soft3/radio/.claude/tasks/bao-root-policy/research
BAO canonical ROOT policy before bounded proof admission Draft v3 research and plan candidate, 2026-10-10. Serves: Kadek phase 1, foundation-closure row 4, runtime provenance and unchanged decoder state on failed authentication. Source-only findings; no candidate implementation or gates.…
warriors/erga/.claude/tasks/mine-owner/research
Mine owner research Stage draft; research/PLAN only. Serves Kadek foundation row 6 native ownership; discovered-from Honeycrisp PR14 and Erga PR2's remaining mine consumer errors. The next concrete unit is the benchmark's read-only table binding, private GPU output/texture, and sole CLI. Native…
warriors/erga/.claude/tasks/blake-batch-owner/research
Blake benchmark owner research Stage draft; no production authorization. Serves Kadek foundation row6 native Image ownership prerequisite; discovered-from Honeycrisp PR14 raw Block boundary repair and its reverse-dependent audit. This unit repairs a concrete Erga owner; it does not close Kadek…
soft3/radio/.claude/tasks/bao-empty-status/research
Fs synthetic empty status — current-origin research Stage: active. Serves Kadek phase 1 foundation row 4, authenticated transport. Discovered from `bao-empty-root`; current-origin amendment supersedes its unmerged five-file implementation. Owner: root, executor: radio_resume. No production change…
soft3/radio/.claude/tasks/bao-bounded-reducer/research
Bounded BAO prerequisite: read-only handoff Serves Kadek foundation row 4. This is source exploration, not an approved implementation plan, gate result, or proof of cold partial provenance. Exact inputs Fresh `git ls-remote origin HEAD` reported Radio `a11d342594949d4ea542b26366f71d56ef21662d` and…
soft3/nox/.claude/tasks/exact-tag-api-baseline/research
Restore an executable exact-tag API baseline Stage: blocked; evidence: measured. Discovered-from: [Hemera no_std repair](/soft3/nox/.claude/tasks/hemera-no-std/research). Serves nox release/API conformance under cyberia/dev § rings. Blocks: clean last-tag gate and any claim of clean release…
soft3/radio/.claude/tasks/audit-cargo-packaging/research
Archived Cargo manifest discovery Status: measured; packaging repair remains proposed. Serves Kadek foundation row 4 through Radio; discovered from the committed strict-proof consumer. Exact Radio parent is `ce0fb312faa8770e80efe9afa864106ae6b51552` (PR40). This worktree is clean at that parent…

Graph