Skip to content

D-HOLO H14c: thought-first positional reads, Hamming presence and Lance masked I/O - #1573

Merged
AdaWorldAPI merged 11 commits into
mainfrom
ccr-9f3b8075-74u47l-holo-h14c
Oct 16, 2026
Merged

AdaWorldAPI merged 11 commits into
mainfrom
ccr-9f3b8075-74u47l-holo-h14c

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

What this measures

H14 and H14b asked how cheaply each layout rebuilds a row. Thought-first C does not need rows for ordinary computation, so H14c asks a different question: once the thought, its operands and the Cartesian address are known, which accesses are still necessary?

Thought(t)[Table(a)[i] : Table(b)[i]]

The thought's program selects the lane tables (handles resolved once). The address i selects the operand in each table. A presence bit says whether a value is there, never where it is. Arm M from H14b is withdrawn as a layout candidate (#1569).

Pre-registered before any benchmark: 47b087e6 (.claude/plans/d-holo-h14c-thought-first-v1.md). Results were added after it; only the status line of the pre-registration changed.

What changed

  • crates/lance-graph-mask-risc/examples/holo_thought_first_probe.rs:
    • a typed read path: Selection → Resolved handles → read(i) → Overlay / Base / Absent / Denied operands;
    • presence populations as mask-risc And/Xor/Or + Count programs, with no new arithmetic;
    • an explicit terminal row;
    • arms C (lazy and eager positional tables), B (connected delta with rank) and S (sparse, binary search);
    • the lane_footprint(&Program) instrument;
    • 11 oracle tests.
  • crates/holo-lance-masked-io-probe (new, excluded from the workspace; its only dependencies are lance 13, arrow 58 and tokio):
    • Lance 13 with_row_addr_prefilter reads, combined vs independent vs unmasked, read statistics from scan_stats_callback;
    • a CoordMap (coordinate → _rowid at one version) that refuses a stale version;
    • 5 tests: equality with the reference, read order, identity across rewrites, the stale-map hazard, missing lanes.
  • The workspace Cargo.toml gains one exclude entry. No dependency of any workspace crate changes.
  • Plan, board entry with the raw CSV, STATUS_BOARD row, INTEGRATION_PLANS, AGENT_LOG (one Haiku census run, spot-checked).

Results (v4, tier: v4 (avx512f), rustc 1.99.0, lance 13.0.0)

criterion result
A operands read directly, no row-first discovery met
B tables the thought touched but did not select do not add work met: tables consulted == k for U = 2, 8, 31; at k = 2, U = 31 costs 0.90–1.01× U = 2 hot and 0.95–1.16× cold
C populations without loading values met: 0 value loads; 0.9–1.2 ns per 64-address word
D no row materialization outside the terminal met
E right coordinate across rewrites met for the checked path; every stale case is refused
  • C vs B on query-shaped reads is mixed. Hot, B is faster up to 1 % dirty: B tests one row index for all k lanes, C tests k presence planes. Cold, C is faster from 10 % dirty at k ≤ 8. At k ≥ 16, B is faster in most cells.
  • Memory. Positional tables are resident by touched page. Uniform 1 % costs ≈ 955 KiB per table for ≈ 10 KiB of values (≈ 93×, flagged at every T). Clustered 1 % costs 62 KiB. Seal is page-fault bound at low density.
  • Lance 13. Both halves of the prediction hold:
    • uniform 1 %: the mask reads the same bytes as no mask (ratio 1.00), while rows scanned drop to 692 of 65,536;
    • clustered 1 %: 0.24× the bytes;
    • the materialization style changed bytes in 0 of 120 cells.
  • Identity. A stale map gives silent omission, not wrong coordinates. Stable row ids keep _rowid across update and compaction (0 moved), but not across overwrite.
  • Workload harvest. Over test programs only (not a workload): 169 Program::new, 61 literal; distinct lanes 0:26, 1:31, 2:4.

Disable runs (each turned its test red; files restored):

  • drop the presence test;
  • shift the address by one;
  • substitute an unrelated lane;
  • probe every touched table;
  • build the row inside the point read;
  • treat absent as zero;
  • skip the aperture;
  • remove the version check (both identity tests).

Not measured. This VM exposes no hardware counters, so cache and TLB behaviour is read from hot vs cold timing and page faults. Lance does not expose decoded bytes, pages accessed or allocations.

Open, returned to the operator

  • How to bound positional-table residency without reintroducing traversal.
  • Whether lane datasets should enable stable row ids.
  • Whether data read by scattered masks should be laid out so presence is page-local.

No layout is decided.

Links:

🤖 Generated with Claude Code

https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh


Generated by Claude Code

… Lance 13 masked I/O)

Pre-registered before any benchmark: the read contract (handles from the
program, read at address i, tables consulted == requested lanes), presence
populations through mask-risc, three execution paths measured apart, the
memory grid, the Lance 13 masked-I/O prediction, coordinate identity
scenarios, oracles, disable runs and decision rules.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…ions, terminal row), 10 oracle tests

Selection -> resolved handles -> read at address i, one presence test and at
most one load per requested lane; Overlay/Base/Absent/Denied operands;
populations as mask-risc AND/XOR/OR + Count programs; arms C (lazy/eager
positional), B (connected delta, rank) and S (sparse, binary search).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…program names), test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…(excluded from the workspace; first build in progress, tests not yet run)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…verwrite, delete+compact, update, stable on/off

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…the deltas); Lance rows_scanned/ranges_scanned columns; fmt, clippy

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
… tables page-dense at uniform 1 %, Lance prediction holds

Results added after the unchanged pre-registration: tables consulted equal
the requested lanes for every touched count (k = 2 read at U = 31 is
0.90-1.16x U = 2); populations load no value; uniform 1 % positional tables
are ~93x payload resident; a scattered Lance mask cuts rows scanned but not
bytes read, a clustered one cuts both; stale coordinate maps omit silently
and are refused by the version check. Board entry carries the raw CSV.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 57524079-48b1-4255-924c-10e193931c83
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Oct 15, 2026

Copy link
Copy Markdown

Add Carrot credits or activate Agent usage billing to use Autofix

@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review October 15, 2026 23:45
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-15T23:50:07.295375Z 39488c5 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 39488c5755

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/holo-lance-masked-io-probe/src/main.rs Outdated
Comment thread crates/holo-lance-masked-io-probe/Cargo.toml
…d lance version

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
The first run timed per-lane mask construction inside the independent
strategy's loop. Re-run with masks built before the timer: all 360 rows
match the first run on bytes, IOPS, requests and rows scanned; the three
timing columns now come from the re-run and the wall-time bullet is
re-derived from it. The lance version is printed from the build, not
from an untracked lockfile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
Resolves the entries index and STATUS_BOARD conflicts from main, keeping
the H14c row. PR_ARC_INVENTORY and LATEST_STATE record #1569 as merged
and withdrawn (no layout verdict on C); the H14b STATUS row now says its
writer-byte rule held by construction.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
LATEST_STATE keeps both 2026-10-16 sections; entries README takes main's and
re-inserts the H14c row, regenerated with entries_index.py (--check clean).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
@AdaWorldAPI
AdaWorldAPI merged commit 461bbd1 into main Oct 16, 2026
18 checks passed
AdaWorldAPI pushed a commit that referenced this pull request Oct 16, 2026
Records the v4 run of C's four-stage operation (plan Results section,
board entry with the raw CSV, STATUS row), the #1573 merge in PR_ARC and
LATEST_STATE, and ISS-RELALG-ABSORPTION-AFTER-DE-MORGAN (2 of 2,000
programs widened by normalize).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants