Files
cubelinux/html/index.html
T
CUBELinux d7c71eede3 html: restore what the rewrite dropped, and bring the builds page current
index.html had lost the Partners and Git header links, the whole Open Graph /
Twitter / canonical block, and the "Register for build updates" call to action
pointing at /spec.php. Restored from the last good copy (site-mirror, Sep 8) while
preserving the newer content the same rewrite added — the CUBE_OP_RANGE section, the
69,638-record figure, the cubelinux0.6+ stats. A surgical merge, not a revert.

cubelinux-builds-to-date.html: the build line stopped at CUBE_OP_RANGE (#55). Added
format v4's class mask, CUBE_OP_FLAG_SCAN, and the one-frame-for-every-walk change,
each named with the gate that checks it. Build numbers for those are left as "—"
rather than invented. The test count is corrected 192 -> 204, counted across all 16
workspace members rather than estimated.
2026-09-22 21:10:35 -04:00

279 lines
15 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<meta name="theme-color" content="#0b0e14">
<title>CUBELinux OS — coordinate-addressed storage</title>
<link rel="icon" type="image/png" href="/images/favicon-64.png">
<meta name="description" content="CUBELinux OS — a Linux data layer where the database lives in the kernel and data is addressed by coordinate, not by path.">
<style>
:root{
color-scheme: dark;
/* palette sampled directly from the logo artwork */
--gold:#d8af68;
--gold-hi:#fff9b1;
--cyan:#39d7ff;
--cyan-deep:#2384ba;
--ink:#e8eaeb;
--mute:#8b98a5;
--bg:#0b0e14;
--line:rgba(216,175,104,.18);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
margin:0; background:var(--bg); color:var(--ink);
font:16px/1.6 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
-webkit-font-smoothing:antialiased;
}
a{color:var(--cyan)}
/* ============================================================
HEADER
The logo's own backdrop was a dark field with faint circuit
texture and a glow behind the cube. Rather than paste a
rectangular image onto a flat page, the header recreates that
field in CSS and drops the alpha-cut logo into it -- so the
artwork's glow bleeds into the page instead of ending at a
hard edge.
============================================================ */
header{
position:relative;
overflow:hidden;
border-bottom:1px solid var(--line);
padding:clamp(1rem,3vw,1.75rem) clamp(1rem,4vw,2.5rem);
background:
/* glow anchored behind the logo, upper-left */
radial-gradient(60ch 30ch at 12% 30%, rgba(57,215,255,.10), transparent 70%),
radial-gradient(40ch 22ch at 6% 40%, rgba(216,175,104,.08), transparent 70%),
linear-gradient(180deg, #11151d 0%, var(--bg) 100%);
}
/* faint circuit-board texture, echoing the logo's backdrop */
header::before{
content:"";
position:absolute; inset:0;
background-image:
linear-gradient(rgba(216,175,104,.055) 1px, transparent 1px),
linear-gradient(90deg, rgba(216,175,104,.055) 1px, transparent 1px);
background-size:44px 44px;
/* fade the grid out toward the right so it never competes with content */
-webkit-mask-image:radial-gradient(80% 120% at 8% 40%, #000 0%, transparent 75%);
mask-image:radial-gradient(80% 120% at 8% 40%, #000 0%, transparent 75%);
pointer-events:none;
}
.bar{
position:relative; z-index:1;
max-width:1100px; margin:0 auto;
display:flex; align-items:center; gap:1.25rem; flex-wrap:wrap;
}
/* --- the logo, upper-left --- */
.brand{
display:flex; align-items:center;
text-decoration:none; flex-shrink:0;
/* soft bloom under the mark so it sits *in* the background,
not on top of it */
filter:drop-shadow(0 0 18px rgba(57,215,255,.20))
drop-shadow(0 1px 2px rgba(0,0,0,.6));
}
.brand img{
display:block;
height:clamp(38px,6vw,52px);
width:auto;
}
.brand:focus-visible{outline:2px solid var(--cyan);outline-offset:6px;border-radius:4px}
nav{margin-left:auto;display:flex;gap:.35rem;flex-wrap:wrap}
nav a{
display:inline-flex;align-items:center;
min-height:44px; padding:.5rem .9rem;
color:var(--mute); text-decoration:none; font-size:.92rem;
border:1px solid transparent; border-radius:6px;
}
nav a:hover{color:var(--ink);border-color:var(--line);background:rgba(216,175,104,.05)}
/* ---------------- body ---------------- */
main{max-width:1100px;margin:0 auto;padding:clamp(2rem,6vw,4.5rem) clamp(1rem,4vw,2.5rem)}
h1{
font-size:clamp(1.9rem,5vw,3.1rem); line-height:1.12; margin:0 0 1rem;
letter-spacing:-.02em; text-wrap:balance;
}
h1 em{font-style:normal;color:var(--gold)}
.lede{font-size:clamp(1.02rem,2.2vw,1.2rem);color:var(--mute);max-width:62ch;text-wrap:pretty}
.status{
display:inline-flex;align-items:center;gap:.55rem;
margin-bottom:1.5rem;padding:.35rem .8rem;
border:1px solid var(--line);border-radius:100px;
font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)
}
.status::before{
content:"";width:6px;height:6px;border-radius:50%;
background:var(--cyan);box-shadow:0 0 8px var(--cyan)
}
h2{
font-size:clamp(1.3rem,3vw,1.7rem); letter-spacing:-.01em;
margin:3rem 0 1rem; padding-top:1.5rem;
border-top:1px solid var(--line);
}
h2:first-of-type{border-top:none;padding-top:0}
p{max-width:68ch}
.closing{
margin-top:2.5rem; padding:1.5rem clamp(1rem,3vw,2rem);
border:1px solid var(--line); border-radius:10px;
background:rgba(216,175,104,.04);
font-size:1.05rem; color:var(--ink);
}
.closing em{font-style:normal;color:var(--gold)}
/* ---- verified stats grid ---- */
.stats{
display:grid; gap:.75rem; margin:2.25rem 0 0;
grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
}
.stat{
border:1px solid var(--line); border-radius:10px;
padding:1.1rem 1.1rem 1rem;
background:linear-gradient(180deg, rgba(57,215,255,.04), transparent);
}
.stat .num{
font-size:clamp(1.6rem,4vw,2.1rem); font-weight:700; line-height:1;
color:var(--gold); letter-spacing:-.02em;
}
.stat .num small{font-size:.5em; font-weight:600; color:var(--mute); margin-left:.15em}
.stat .lbl{
margin-top:.5rem; font-size:.82rem; color:var(--mute); line-height:1.35;
}
/* ---- claims list ---- */
.claims{list-style:none; padding:0; margin:1.25rem 0 0; display:grid; gap:.9rem}
.claims li{
padding-left:1.1rem; border-left:2px solid var(--line);
color:var(--mute); max-width:70ch;
}
.claims li strong{color:var(--ink); font-weight:600}
.claims em{font-style:normal;color:var(--cyan)}
/* ---- roadmap ---- */
.road{list-style:none; padding:0; margin:1.25rem 0 0; display:grid; gap:.75rem; counter-reset:step}
.road li{display:flex; gap:1rem; align-items:flex-start}
.road .pkg{
flex-shrink:0; min-width:2.4rem; text-align:center;
font:700 .85rem/1 ui-monospace,monospace; color:var(--bg);
background:var(--gold); border-radius:6px; padding:.45rem .2rem;
letter-spacing:.05em;
}
.road div{color:var(--mute)}
.road strong{color:var(--ink)}
.road em{font-style:normal;color:var(--cyan)}
footer{
border-top:1px solid var(--line);margin-top:4rem;
padding:1.5rem clamp(1rem,4vw,2.5rem);
color:var(--mute);font-size:.85rem
}
footer .in{max-width:1100px;margin:0 auto;display:flex;gap:1rem;flex-wrap:wrap}
footer a{margin-left:auto}
@media (prefers-reduced-motion:no-preference){
.brand img{transition:filter .3s}
}
</style>
<!-- Open Graph / Twitter / canonical (site prep) -->
<meta property="og:type" content="website">
<meta property="og:title" content="CUBELinux OS — coordinate-addressed storage">
<meta property="og:description" content="CUBELinux OS — a Linux data layer where the database lives in the kernel; data is addressed by coordinate, not by path.">
<meta property="og:url" content="https://cubelinux.com/">
<meta property="og:image" content="https://cubelinux.com/images/logo-header@2x.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="CUBELinux OS — coordinate-addressed storage">
<meta name="twitter:description" content="CUBELinux OS — a Linux data layer where the database lives in the kernel; data is addressed by coordinate, not by path.">
<meta name="twitter:image" content="https://cubelinux.com/images/logo-header@2x.png">
<link rel="canonical" href="https://cubelinux.com/">
</head>
<body>
<header>
<div class="bar">
<a class="brand" href="/" aria-label="CUBELinux home">
<img src="/images/logo-header@2x.png" alt="CUBELinux">
</a>
<nav>
<a href="/cubelinux-whitepapers.html">Whitepapers &#8599;</a>
<a href="/partners.html">Partners &#8599;</a>
<a href="/git">Git &#8599;</a>
</nav>
</div>
</header>
<main>
<span class="status">Live testbed &middot; core verified</span>
<h1>The filesystem is dead.<br>CUBELinux OS stores data by <em>coordinate</em>.</h1>
<p class="lede">
CUBELinux OS is a from-scratch Linux data layer where storage is addressed by
coordinate &mdash; not by path. No directory tree to walk. No query layer bolted on
top. A position resolves directly to bytes, and the database lives in the kernel.
Currently being integrated into <a href="https://dulrobotics.com/">DULRobotics.com</a>.
</p>
<div class="stats">
<div class="stat"><div class="num">6.19.3<small>-cubelinux0.6+</small></div><div class="lbl">kernel &mdash; built to #55, installed, booted</div></div>
<div class="stat"><div class="num">coordinate</div><div class="lbl">a record is an address, not a path</div></div>
<div class="stat"><div class="num">seek</div><div class="lbl">a region is a seek &mdash; <code>CUBE_OP_RANGE</code></div></div>
<div class="stat"><div class="num">192</div><div class="lbl">workspace tests &mdash; 0 failures</div></div>
<div class="stat"><div class="num">69,638</div><div class="lbl">records in the live sealed store</div></div>
</div>
<h2>What's real today</h2>
<p>
This is not a concept sketch. The kernel was built, installed, and booted cleanly.
The root filesystem is stored by coordinate. Every claim on this page is backed by a
build that passed its verification gate &mdash; the details are in the whitepapers.
</p>
<ul class="claims">
<li><strong>A kernel that holds the store.</strong> <code>6.19.3-cubelinux0.6+</code> &mdash; the newest build is #55, which adds the region walk; #50 is what is installed and booted on 2026-09-21 with <code>cube_store=</code> set, where it answered <code>cube(2)</code> (#548) and walked the live store. GRUB's default entry is deliberately an older kernel, so which kernel is running is a question about <em>which boot</em> &mdash; check <code>/proc/cmdline</code>. The root fs is ordinary; the <em>store</em> is what is coordinate-addressed.</li>
<li><strong>Coordinates are addresses.</strong> The store&rsquo;s image carries its own index &mdash; a space table and a fixed-stride index sorted by key &mdash; so a listing costs what it returns rather than what the store holds: listing the same ten records across a store forty times larger measured 5.46&nbsp;ms &rarr; 6.24&nbsp;ms (1.1&times;), with a coordinate read at 2.45&nbsp;ms &rarr; 2.17&nbsp;ms. Measured by <code>kernel/verify-enum-cost.sh</code>, which is in the gate runner.</li>
<li><strong>A region is a seek.</strong> Build #55 adds <code>CUBE_OP_RANGE</code>: a box is found by seeking to the foot of its key span and reading forward, not by scanning the space. Over a 32,768-record space the aligned cube is answered at 1.00&times; over-coverage and the unaligned one at 6.99&times; &mdash; the honest cost of a bound. Gated by <code>kernel/verify-range.sh</code>, which diffs the kernel's answer against userspace's over a box with a trap record inside the span but outside the box.</li>
<li><strong>The OS stores itself &mdash; of the store, and not yet of the boot record.</strong> The kernel owns the store and every record lives in the same coordinate space it serves. The boot marker is still a userspace write, and still through the name tier, so this half is not done and is not claimed.</li>
<li><strong>Verified end to end.</strong> Format, tests, lint, a sustained stress run, crash-recovery replay, and in-VM read-back &mdash; all passed. 192 workspace tests, 0 failures; every gate the runner names, with the one red gate (<code>verify-efi-boot.sh</code>) named rather than averaged away.</li>
<li><strong>Not bolted on.</strong> Coordinates are the system&rsquo;s native interface: the kernel&rsquo;s own <code>cube(2)</code>, with no path in it and no translation step between a coordinate and the bytes. POSIX, where it is wanted, is a view at the edge &mdash; deliberately not a filesystem in the core.</li>
</ul>
<h2>What this is for</h2>
<p>
CUBELinux is a data layer where the database is the kernel and every record is
addressed the same way &mdash; by where it lives in coordinate space, not by what
directory it happens to sit in. That changes what a system can be: the OS and its
data are one thing, addressed one way.
</p>
<ul class="claims">
<li><strong>For builders of data-intensive systems.</strong> If your workload spends its time walking trees, joining paths, or stitching a query layer on top of storage, the coordinate model removes that layer entirely.</li>
<li><strong>For anyone tired of the filesystem being a hack.</strong> Directories, paths, inodes, mountpoints &mdash; all of it is history when a position in space resolves directly to bytes.</li>
<li><strong>For the people who want to read the math.</strong> The whitepapers carry the full technical story &mdash; the coordinate model, the curve, the VFS shim, the crate architecture, the verification numbers. This page is the front door; those are the floor.</li>
</ul>
<h2>Where it stands</h2>
<ol class="road">
<li><span class="pkg">01</span><div><strong>Kernel.</strong> 6.19.3-cubelinux0.6+ &mdash; the kernel holds the store and answers <code>cube(2)</code> (#548): put, get, del, sync, the cursor walk, and the region walk (<code>range</code>). Built to #55, installed, and booted with <code>cube_store=</code> set. <em>Done.</em></div></li>
<li><span class="pkg">02</span><div><strong>The coordinate layer.</strong> Storage addressed by position, not path &mdash; the store's image carries its own index and a coordinate resolves to a place in it. <em>Done &amp; verified.</em> The root filesystem itself is ordinary; addressing the root <em>as</em> coordinates is a separate question and is not claimed.</div></li>
<li><span class="pkg">03</span><div><strong>The OS writes itself.</strong> The store the kernel owns holds its records in the same coordinate space it serves to user data. <em>Done in the store.</em> The boot record is still written by a userspace client, through the name tier &mdash; so this one is half done and says so.</div></li>
<li><span class="pkg">04</span><div><strong>Verification.</strong> Format, tests, lint, stress, crash-recovery, and in-VM read-back all passed &mdash; 192 workspace tests, 0 failures, and every gate the runner names except <code>verify-efi-boot.sh</code>, which is red and is named rather than averaged away. <em>Live.</em></div></li>
</ol>
<p class="closing">
This is not a proposal. This is a running prototype &mdash; and the OS is being built on it.
CUBELinux OS is the idea that data shouldn't live <em>in</em> a system.
The system should <em>be</em> the data.<br><a style="display:inline-block;margin-top:16px;padding:.7rem 1.25rem;border:1px solid var(--cyan);border-radius:8px;color:var(--cyan);background:rgba(57,215,255,.08);text-decoration:none" href="/spec.php">Register for build updates &rarr;</a>
</p>
</main>
<footer>
<div class="in">
<span>CUBELinux.com &mdash; local testbed</span>
<a href="/cubelinux-whitepapers.html">Read the whitepapers &#8599;</a>
</div>
</footer>
</body>
</html>