diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 937664c..dd86e07 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -310,6 +310,7 @@ jobs: - name: Create GitHub release env: GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} RELEASE_TAG: ${{ github.ref_name }} VERSION: ${{ needs.validate.outputs.version }} run: | diff --git a/STATUS.md b/STATUS.md index 9730857..6aa5d99 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,11 +1,17 @@ # BBP — Maturity & Honesty Matrix This file states plainly what is **exercised**, what is **structure-only**, and -what is **roadmap**. No claim here is made that a `make` target does not back up. -Trust is the product — read this before you rely on anything. +what is **roadmap**. Each claim names its reproducible gate or the checked-in +evidence and replay limit that backs it. Trust is the product — read this before +you rely on anything. Legend: - 🟢 **LIVE** — exercised end-to-end with a reproducible proof in this repo. +- 🟢 **MACHINE PROOF** — executes in the named target ISA, firmware context, or + machine emulator; it does not imply a complete OS integration. +- 🟢 **HOST-TESTED / HOST PROOF** — executes on the host; it never implies boot. +- 🟢 **RECORDED** — checked-in evidence from an external boot or integration that + the root CI does not currently replay. - 🟡 **SKELETON / STRUCTURE** — the ABI/code path exists and compiles, but it is a reference base or a definition, not a finished, exercised implementation. - 🔴 **ROADMAP** — designed for in the ABI, not yet built. @@ -37,16 +43,16 @@ Legend: | Integration | State | Proof / note | |-------------|:-----:|--------------| | `ports/tinalinux/` — native Linux OSIF | 🟢 LIVE | boots under QEMU+KVM; `bbp: tinalinux adapter ok, 5 tags, hhdm=0x…` in `ports/tinalinux/test/serial.log`; 5 CRC-sealed tags from real e820+ACPI+cmdline at `late_initcall` | -| `ports/minix/` — Limine adapter OSIF | 🟢 RECORDED | real MINIX boot evidence in `ports/minix/test/serial.log`; current root CI scaffold-checks but does not reproduce the external OS boot | -| `ports/linux01/` — native identity-mapped OSIF | 🟢 RECORDED | in-kernel QEMU boot evidence in `ports/linux01/test/serial.log`; current root CI does not reproduce it | -| `ports/josh/` — Limine + PMM OSIF | 🟢 RECORDED | real QEMU boot and verified entropy evidence in `ports/josh/test/serial.log`; current root CI does not reproduce it | +| `ports/minix/` — Limine adapter OSIF | 🟢 RECORDED | six-tag real MINIX boot evidence in `ports/minix/test/serial-all6-consumers.log`; current root CI scaffold-checks but does not reproduce the external OS boot | +| `ports/linux01/` — native identity-mapped OSIF | 🟢 HOST-TESTED | `ports/linux01/test/serial.log` is the hosted three-tag adapter proof; the conformance report records a separate in-kernel boot, but no raw in-kernel serial artifact is checked in | +| `ports/josh/` — Limine + PMM OSIF | 🟢 RECORDED | real QEMU boot evidence plus a six-tag hosted gate with a verified 48-byte entropy blob; current root CI does not reproduce the external OS boot | | OSIF contract (`bbp_osif.h`) + weak/strong hook seam | 🟢 LIVE | four ports compile against the same frozen interface; TinaLinux exercises its hosted adapter in current CI | ## Producers / bootloader side | Capability | State | Proof / note | |------------|:-----:|--------------| -| Tag builder API (firmware-agnostic) | 🟢 LIVE | used by both ports + the QEMU rig | +| Tag builder API (firmware-agnostic) | 🟢 LIVE | used by all four OSIF adapters and the QEMU machine rigs | | Limine, Multiboot2, and UEFI importers | 🟢 HOST-TESTED | `make importers-test` proves bounded, failure-atomic translation and parser roundtrips; platform collection remains external | | `bootloader/efi_main.c` UEFI producer | 🟡 SKELETON | **explicitly a reference skeleton**: its ELF-load, collectors, final memory-map/EBS, paging, and transfer path remain incomplete. The separate OVMF harness does not execute or validate this loader path. | | `tools/bbp_stamp.py` post-link header stamp | 🟢 LIVE | cross-verified against the C runtime CRC | @@ -75,8 +81,8 @@ Legend: ## One-line summary **The protocol, defensive parser, builder, and hosted TinaLinux adapter are -reproducible on x86_64; AArch64 also has a reproducible machine handoff proof, -and four ports carry checked-in boot records.** The root CI does not reproduce +reproducible on x86_64; AArch64 and RV64 have reproducible machine handoff +proofs, and four ports carry distinct hosted or checked-in evidence.** The root CI does not reproduce every external OS boot. The UEFI producer is a reference skeleton, LoongArch is roadmap, and the security tags await a measuring producer. If you find a gap between a claim and its proof, that is a bug — please open an issue. diff --git a/scripts/verify_site.py b/scripts/verify_site.py index 0dc584c..d03923e 100644 --- a/scripts/verify_site.py +++ b/scripts/verify_site.py @@ -43,6 +43,12 @@ def main(): "bbp_init_bounded()", "make qemu-aarch64", "make qemu-riscv64", + "make importers-test", + "make bbpctl-test", + "make sdk-check release-metadata-test", + "make tpm2-measure-test", + "global rollback floor", + "signed-tag release workflow emits and verifies", "requires serial PASS", "hero-proof-geometry.svg", ): @@ -58,6 +64,8 @@ def main(): "BBP v2 Draft / offline", "AArch64 boot proof", "Release checkpoint", + "INTEGRAÇÕES OSIF", + "Linux 0.01 tem harness host", "integridade com confiança", ): require(token in state_page, f"current-state page missing: {token}") @@ -65,11 +73,28 @@ def main(): require(" @@ -140,18 +140,66 @@ .tag-node[data-cat="debug"]{--tag-color:var(--green)} .tag-foot{display:flex;justify-content:space-between;gap:1rem;margin-top:1rem;color:#71809a;font-size:.68rem} -.proof-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem} -.proof-card{border:1px solid var(--line);padding:1.1rem;background:var(--panel)} -.proof-card header{display:flex;justify-content:space-between;gap:1rem;padding-bottom:.8rem;border-bottom:1px solid var(--line)} -.proof-card h3{font-size:.84rem;color:var(--fg)} +.proof-grid{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)} +.proof-card{display:grid;grid-template-columns:minmax(12rem,1.2fr) minmax(18rem,2fr);gap:1.4rem;padding:1rem 1.15rem;background:var(--panel)} +.proof-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem} +.proof-card h3{font-size:.84rem;color:var(--fg);letter-spacing:.04em} .state{font-size:.65rem;letter-spacing:.1em;color:var(--green)} .state.build{color:var(--amber)} .state.scope{color:var(--violet)} -.proof-card p{margin-top:.8rem;color:var(--dim);font-size:.76rem} +.state.recorded{color:var(--blue)} +.proof-card p{color:var(--dim);font-size:.76rem} .proof-card code{color:var(--jade)} +.proof-card .verdict{display:block;margin-top:.38rem;color:var(--fg);font-size:.68rem} .truth{margin-top:1rem;border:1px solid #493817;background:#120e06;padding:1rem;color:#d8c794} .truth b{color:var(--gold)} +.ingestion{background:linear-gradient(120deg,#070a08,#090b12);border-block:1px solid var(--line)} +.ingest-rail{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) 1.25fr 1.1fr;gap:1px;background:var(--line);border:1px solid var(--line)} +.ingest-node{padding:1rem;background:var(--bg);min-height:9.5rem;display:flex;flex-direction:column} +.ingest-node small{color:var(--dim);font-size:.62rem;letter-spacing:.12em} +.ingest-node b{color:var(--fg);margin:.75rem 0;font-size:.82rem} +.ingest-node span{color:var(--dim);font-size:.68rem;margin-top:auto} +.ingest-node.engine{background:#09120d}.ingest-node.engine b{color:var(--green)} +.ingest-node.output{background:#111006}.ingest-node.output b{color:var(--gold)} +.scope-note{margin-top:1rem;display:grid;grid-template-columns:auto 1fr;gap:1rem;border-left:3px solid var(--amber);padding:.75rem 1rem;background:#100d06;color:var(--dim);font-size:.72rem} +.scope-note b{color:var(--gold)} + +.product-grid{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)} +.product-row{display:grid;grid-template-columns:11rem 1.25fr 1fr;gap:1.4rem;padding:1.15rem;background:var(--bg);align-items:start} +.product-id{color:var(--jade);font-size:.7rem;letter-spacing:.12em} +.product-row:nth-child(2) .product-id{color:var(--violet)} +.product-row:nth-child(3) .product-id{color:var(--gold)} +.product-row:nth-child(4) .product-id{color:var(--rose)} +.product-row h3{color:var(--bright);font-size:1rem;margin-bottom:.25rem} +.product-row p{color:var(--dim);font-size:.72rem} +.product-command{border-left:1px solid var(--line);padding-left:1rem;color:var(--green);font-size:.7rem;overflow-wrap:anywhere} +.product-command small{display:block;color:var(--dim);margin-top:.4rem} + +.machines{background:var(--deep);border-block:1px solid #222a3c} +.machine-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#273047;border:1px solid #273047} +.machine{background:#080c12;padding:1.15rem;min-height:17rem;display:flex;flex-direction:column} +.machine small{color:#71809a;font-size:.62rem;letter-spacing:.12em} +.machine h3{color:var(--jade);margin:.7rem 0;font-size:1.08rem} +.machine:nth-child(2) h3{color:var(--gold)}.machine:nth-child(3) h3{color:var(--rose)}.machine:nth-child(4) h3{color:var(--violet)} +.register{display:flex;gap:.4rem;flex-wrap:wrap;margin:.3rem 0 .8rem} +.register span{border:1px solid #273047;padding:.2rem .38rem;color:#c7d2e6;font-size:.66rem} +.machine p{color:#8997af;font-size:.72rem} +.machine code{display:block;margin-top:auto;padding-top:1rem;color:var(--green);font-size:.68rem;overflow-wrap:anywhere} +.machine.roadmap{opacity:.72} + +.frontier-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line)} +.frontier-side{padding:1.4rem;background:var(--bg)} +.frontier-side.experimental{background:#0d0912} +.frontier-side .eyebrow{margin-bottom:.6rem}.frontier-side h3{font-size:1.5rem;color:var(--green);margin-bottom:1rem}.frontier-side.experimental h3{color:var(--violet)} +.frontier-list{display:grid;gap:.65rem} +.frontier-item{padding-top:.65rem;border-top:1px solid var(--line)} +.frontier-item b{display:block;color:var(--fg);font-size:.78rem}.frontier-item span{color:var(--dim);font-size:.69rem}.frontier-item code{color:var(--jade)} +.frontier-rule{grid-column:1/-1;padding:1rem;background:#120e06;color:#d8c794}.frontier-rule b{color:var(--gold)} + +.trust-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#4a3715;border:1px solid #4a3715;margin-top:2rem} +.trust-item{background:#0c0b07;padding:1rem}.trust-item b{display:block;color:var(--gold);font-size:.74rem;margin-bottom:.35rem}.trust-item span{color:#a99d7c;font-size:.68rem} + .ports{background:var(--panel);border-block:1px solid var(--line)} .port-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem} .port-card{background:var(--bg);border:1px solid var(--line);padding:1rem;min-height:16rem;display:flex;flex-direction:column} @@ -179,15 +227,16 @@ @media(max-width:900px){ .hero-grid{grid-template-columns:1fr;gap:2.5rem}.hero-aside{border-left:0;border-top:1px solid var(--line);padding:1rem 0 0;display:grid;grid-template-columns:repeat(2,1fr);gap:0 1rem}.aside-label,.hero-note{grid-column:1/-1} - .section-head{grid-template-columns:1fr;gap:.7rem}.lab-grid{grid-template-columns:1fr}.anatomy{grid-template-columns:1fr}.struct{min-height:15rem}.tag-grid{grid-template-columns:repeat(3,1fr)}.port-grid{grid-template-columns:repeat(2,1fr)} + .section-head{grid-template-columns:1fr;gap:.7rem}.lab-grid{grid-template-columns:1fr}.anatomy{grid-template-columns:1fr}.struct{min-height:15rem}.tag-grid{grid-template-columns:repeat(3,1fr)}.port-grid,.machine-grid{grid-template-columns:repeat(2,1fr)}.ingest-rail{grid-template-columns:repeat(2,1fr)}.product-row{grid-template-columns:9rem 1fr}.product-command{grid-column:2}.trust-grid{grid-template-columns:1fr} } @media(max-width:620px){ - body{font-size:14px}.wrap{width:min(100% - 1.2rem,1160px)}nav{padding:.5rem .6rem}.brand{font-size:.74rem}.brand span:last-child{display:none}.navlinks a:nth-child(2),.navlinks a:nth-child(3){display:none} + body{font-size:14px}.wrap{width:min(100% - 1.2rem,1160px)}nav{padding:.5rem .6rem}.brand{font-size:.74rem}.brand span:last-child{display:none}.navlinks{margin-left:0}.navlinks a{min-height:44px;display:inline-flex;align-items:center} .version{display:none}.hero{padding-top:4rem;min-height:auto}.hero h1{font-size:clamp(3.2rem,18vw,5rem)}.hero-aside{grid-template-columns:1fr 1fr}.scroll-cue{display:none} .seal{padding:2.8rem 0}.seal-caption{display:block}.seal-caption b{display:block;margin-bottom:.25rem} - section{padding:4rem 0}.wire{grid-template-columns:1fr;padding:1rem 0}.wire::before{top:8%;bottom:8%;left:50%;right:auto;width:1px;height:auto}.wire-node{min-height:5.2rem}.proof-grid,.port-grid{grid-template-columns:1fr}.tag-grid{grid-template-columns:repeat(2,1fr)}.tag-node{min-height:6.4rem}.tag-foot,.footer-grid{display:block}.footer-links{justify-content:flex-start;margin-top:1rem} + section{padding:4rem 0}.wire{grid-template-columns:1fr;padding:1rem 0}.wire::before{top:8%;bottom:8%;left:50%;right:auto;width:1px;height:auto}.wire-node{min-height:5.2rem}.proof-card,.product-row,.ingest-rail,.frontier-grid,.port-grid,.machine-grid{grid-template-columns:1fr}.product-command{grid-column:auto;border-left:0;border-top:1px solid var(--line);padding:1rem 0 0}.tag-grid{grid-template-columns:repeat(2,1fr)}.tag-node{min-height:6.4rem}.tag-foot,.footer-grid{display:block}.footer-links{justify-content:flex-start;margin-top:1rem}.frontier-rule{grid-column:auto}.scope-note{grid-template-columns:1fr} } @media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}} +@media(forced-colors:active){body::before{display:none}.state,.product-id,.machine h3{forced-color-adjust:auto}.tag-node.muted{opacity:.55}} @@ -195,7 +244,7 @@ @@ -206,9 +255,9 @@
Bear Boot Protocol / sealed handoff

The handoff is hostile.

-

A complementary boot-handoff layer with UUID-versioned tags, CRC-64/XZ integrity, and a kernel parser built to distrust every byte it receives.

+

A frozen boot-handoff ABI surrounded by a defensive parser, importers, SDKs, host capture, four OS seams, multi-ISA machine proofs, and an isolated next-generation laboratory.

- Inspect the wire contract + Inspect the proof ledger
@@ -218,7 +267,7 @@

The handoff is hostile.

HANDOFF INFO144 B
TAG FRAME32 B
TAG UUIDs15
-

Not a bootloader. BBP rides alongside Limine, UEFI, or a native kernel boot path.

+

Stable: SDK 1.3.0 / BBP wire 1.1. Not a bootloader. BBP rides alongside Limine, UEFI, Multiboot2, or a native kernel path.

@@ -240,7 +289,7 @@

The handoff is hostile.

01 / FAILURE PATH
-

Refusal is a feature.

The producer may be buggy or hostile. BBP validates structure before use, bounds the walk, checks each seal, and treats a corrupt tag as absent.

+

Refusal is a feature.

The producer may be buggy or hostile. Given a mapped immutable input window, BBP validates structure before use, bounds the walk, checks each seal, and treats a corrupt tag as absent.

@@ -251,7 +300,7 @@

The handoff is hostile.

DELIVEREDKERNEL
-
LIVE CONTRACT MODEL
+
ILLUSTRATIVE FAILURE PATH
ACCEPTEDTag structure and CRC agree.
@@ -274,19 +323,38 @@

The handoff is hostile.

PRODUCER builds INFO + UUID tags -> seals the complete chain entry(RDI / X0 / A0) -> bbp_init_bounded() parser validates magic / version / size / bounds / CRC -bbp_find_tag() returns only a validated view -bad input -> REFUSE / SKIP / ABSENT -> never forged data
+bbp_tag_array() clamps counts; bbp_verify_blob() seals pointed-to bytes +bad framing -> REFUSE / SKIP / ABSENT; semantic truth remains consumer policy
+
PRECONDITIONThe INFO object and declared walk window must be mapped, readable and immutable through use. CRC detects changed bytes; it cannot prove that a CRC-valid memory map or address is truthful.
+ + + +
+
+
+
03 / INGESTION SEAM
+

Many boot sources. One bounded builder.

Platform-specific discovery stops at a narrow translation boundary. Every importer preflights the complete source before changing the destination arena.

+
+
+
SOURCE / NORMALIZEDLIMINEMemory map, SMP/BSP, command line, framebuffer and ACPI snapshots.
+
SOURCE / RAW BYTESMULTIBOOT2Bounded framing, modules, memory map, framebuffer and ACPI.
+
SOURCE / FINAL SNAPSHOTUEFIDescriptor strides, final map, SMBIOS and firmware tables.
+
SOURCE / OSIFNATIVE KERNELExisting Linux or kernel tables adapted without replacing their boot path.
+
FAILURE-ATOMICIMPORT + BUILDOverlap, capacity, malformed framing or overflow leaves builder and arena unchanged.
+
FROZEN OUTPUTBBP v1.1INFO plus deterministic UUID tag chain, each structure CRC-sealed.
+
+
PROOFmake importers-test executes successful round trips and adversarial source framing. Live firmware collection remains external; bootloader/efi_main.c is still a reference skeleton.
-
03 / CONSTELLATION
+
04 / CONSTELLATION

Fifteen UUIDs. Seven namespaces.

The upper sixteen bits select a category; the lower forty-eight identify the tag. Unknown tags remain walkable and ignorable.

-
- +
+
SMPCORE / 0001
@@ -305,39 +373,99 @@

The handoff is hostile.

SMBIOSPLATFORM / 0005
METRICSDEBUG / 0001
-
VENDOR / FFFF remains reserved for private extension.source: include/bbp/bbp.h
+
SECURITY defines framing; no shipping firmware producer fills its measurement log yet.VENDOR / FFFF remains reserved. source: include/bbp/bbp.h
+
+
+ +
+
+
+
05 / CONSUME + CAPTURE + SHIP
+

The protocol became a product surface.

The repository now supports extracted consumers, safe host inspection and deterministic distribution without turning host containers or experiments into boot ABI.

+
+
+
C SDK / LIVE

Extract, build, prove.

A C11-only allowlisted archive compiles the full SDK and importers, runs a builder-to-bounded-parser round trip and emits deterministic conformance.json.

make onboardingHost conformance, not a machine boot.
+
RUST / HOST-TESTED

bbp-wire, always no_std.

Rust 2021 / MSRV 1.77, no dependencies, allocator, unsafe code or build script. Slice-only CRC/framing validation never converts physical values into pointers.

make sdk-rust-msrv-testUnknown IDs remain visible without gaining semantic trust.
+
BBPCTL / LIVE

Capture bytes without dereferencing history.

BBPC v1 preserves INFO, tags and original physical topology for bounded inspect, verify and canonical evidence workflows. It is a 96-byte host container, never boot wire.

make bbpctl-testNo out-of-line blob capture in BBPC v1.
+
RELEASE / REPRODUCIBLE

Allowlisted bytes with provenance.

C SDK, host tools and Rust crate use fixed metadata, SHA-256 manifests, artifact-level SPDX, signed tags and keyless Sigstore bundles. Release mode rejects dirty or development sources.

make sdk-check release-metadata-testThe signed-tag release workflow emits and verifies the SHA-256, SPDX and Sigstore material.
+
-
04 / CLAIM LEDGER
-

State the proof. State the limit.

A green word only appears where a command or checked-in execution record supports it. Structure-only work stays visibly structure-only.

+
06 / CLAIM LEDGER
+

State the proof. State the limit.

Every row names what executes, the command that proves it, and the line it deliberately does not cross.

-

FROZEN ABI LAYOUT

LIVE

make abi compiles 28 exact structure-size assertions. Reordering the wire contract fails before boot.

-

ADVERSARIAL PARSER

LIVE

make test covers bad magic, forged lengths, cyclic chains, pointer wrap, CRC tamper and blob boundaries.

-

MALFORMED-INPUT FUZZING

LIVE

make fuzz runs a bounded libFuzzer/ASan smoke campaign or a deterministic fallback driver.

-

BARE-METAL ROUNDTRIP

LIVE

make qemu boots the real builder/parser proof under QEMU/TCG and requires serial PASS plus a distinct guest success status.

-

x86_64 / i386 PORT EVIDENCE

CHECKED IN

Four ports carry conformance reports and serial records. Current root CI does not reproduce every external OS boot.

-

AARCH64 / RISC-V / LOONGARCH

MULTI-ISA / SDK 1.3

make qemu-aarch64 and make qemu-riscv64 prove X0/A0 handoffs with CRC-verified QEMU Device Trees. LoongArch remains roadmap.

+

FROZEN ABI LAYOUT

LIVE

make abi compiles 28 exact structure-size assertions.VERDICT: layout drift fails the build, before boot.

+

BOUNDED PARSER + EVIDENCE

LIVE

make test covers 16-byte magics, typed extents, cycles, pointer wrap, forged counts, blob CRC and a domain-separated INFO+tags evidence stream.LIMIT: mapped immutable input and semantic validation remain consumer obligations.

+

MALFORMED-INPUT FUZZING

LIVE

make fuzz runs raw and structure-aware harnesses under libFuzzer+ASan or a deterministic watchdog fallback.VERDICT: bounded completion, no crash or hang.

+

IMPORTERS

HOST-TESTED

make importers-test executes Limine, raw Multiboot2 and final UEFI translation, including failure atomicity and overlap rejection.LIMIT: source collection is external.

+

SDK + HOST TOOLS

LIVE

make sdk-check bbpctl-test validates extracted C onboarding, Rust MSRV, reproducible archives and bounded BBPC capture tooling.VERDICT: distributable host surfaces agree with wire 1.1.

+

x86 BARE METAL + OVMF

MACHINE PROOF

make qemu qemu-uefi requires serial PASS, timeout discipline and distinct guest status from real builder/parser execution.LIMIT: OVMF harness is not the incomplete reference UEFI loader.

+

AARCH64 + RISC-V

MACHINE PROOF

make qemu-aarch64 qemu-riscv64 proves X0/A0 handoffs with copied, CRC-verified QEMU Device Trees and tamper rejection.LIMIT: protocol machines, not OS ports.

+

OSIF INTEGRATIONS

LIVE + RECORDED

make ports-check compiles all four seams; hosted harnesses and external boot records document each integration separately.LIMIT: root CI does not replay every external OS boot.

+

V2 PROFILE + PORTABILITY

EXPERIMENTAL

make v2-test v2-profile-test v2-vectors-test v2-fuzz v2-portability covers capsule framing, Profile 0, Python/C vectors and three-ISA freestanding compilation.LIMIT: offline Draft, not frozen or deployed wire.

+

TPM2 + AUTH ENVELOPE

EXPERIMENTAL

make tpm2-measure-test auth-envelope-test proves PCR16 extension and host-only HMAC replay/rollback policy across key rotation.LIMIT: not Secure Boot, public-key identity or firmware provisioning.

+
+
Vocabulary: LIVE means reproducible in this repository; MACHINE PROOF executes a target ISA or firmware context; HOST-TESTED never implies boot; RECORDED names checked-in external evidence; EXPERIMENTAL stays outside the stable ABI.
+
+
+ +
+
+
+
07 / MACHINE HANDOFFS
+

Registers, firmware contexts, real verdicts.

The same little-endian v1.1 contract is exercised in four distinct machine contexts. Each lane names the incoming platform state and the outgoing BBP handoff.

+
+
+
x86 / MULTIBOOT1

BARE METAL

IN / MULTIBOOT1VERDICT / 33

The i386 rig builds INFO locally and executes the bounded parser under QEMU/TCG with a real memory-map round trip.

make qemu → BBP-QEMU: PASS
+
x86_64 / OVMF

UEFI CONTEXT

PE/COFFSTATUS / 33

OVMF loads the EFI app and executes the same core. This does not validate ELF loading, EBS or the reference loader transfer path.

make qemu-uefi → BBP-UEFI: PASS
+
AARCH64 / QEMU VIRT

X0 → X0

IN / DTB X0OUT / INFO X0

The real QEMU DTB is copied, CRC-sealed, consumed and tamper-tested with memory and kernel-address tags.

make qemu-aarch64 → BBP-AARCH64: PASS
+
RV64 / OPENSBI

A1 → A0

IN / DTB A1OUT / INFO A0

OpenSBI supplies hart/DTB state; BearBoot transfers a bounded handoff and rejects payload or tag corruption.

make qemu-riscv64 → BBP-RISCV64: PASS
-
Trust boundary: a malicious producer can recompute CRC. BBP detects corruption and rejects malformed framing; Secure Boot and measured boot provide authenticity.
+
ROADMAPLoongArch has a reserved architecture enum only. No code or proof is claimed. AArch64 and RV64 are protocol machine proofs, not complete OS integrations.
-
05 / OSIF SEAM
+
08 / OSIF SEAM

One frozen core. Four different kernels.

The OS-interface isolates allocation, logging, time and physical mapping. Each integration documents its own aliases, limits and evidence.

-
PORT / NATIVE LINUX

TinaLinux

Native Linux tables become five CRC-sealed tags at late_initcall without replacing the existing boot path.

QEMU+KVM SERIAL RECORD / 5 TAGS
-
PORT / LIMINE

MINIX x86_64

A higher-half Limine adapter keeps the kernel-image and HHDM aliases explicitly separate.

REAL MINIX SERIAL RECORD / 6 TAGS
-
PORT / IDENTITY MAP

Linux 0.01

The 1991 fixed RAM model truthfully produces only memory map, HHDM and kernel address tags.

IN-KERNEL QEMU RECORD / 3 TAGS
-
PORT / PMM ARENA

Josh-Bear

A bounded walk window surrounds PMM-backed tags; verified boot entropy seeds the kernel CSPRNG.

REAL QEMU RECORD / 5 TAGS
+
LIVE / NATIVE LINUX

TinaLinux

Native Linux tables become five CRC-sealed tags at late_initcall without replacing the existing boot path.

HOST GATE + QEMU/KVM RECORD / 5 TAGS
+
RECORDED / LIMINE

MINIX x86_64

A higher-half Limine adapter keeps kernel-image and HHDM aliases separate. The six-tag real-MINIX transcript is distinct from the standalone harness.

serial-all6-consumers.log / 6 TAGS
+
HOST-TESTED / IDENTITY MAP

Linux 0.01

The 1991 fixed RAM model truthfully produces only memory map, HHDM and kernel address. The checked serial artifact is a hosted adapter proof.

HOSTED HARNESS / 3 TAGS
+
RECORDED / PMM ARENA

Josh-Bear

A bounded walk window surrounds PMM-backed tags; a verified 48-byte entropy blob seeds the kernel CSPRNG.

REAL QEMU + HOST GATE / 6 TAGS
+
+
COMMON SEAMAll four adapters call bbp_init_bounded(). make ports-check compiles every port against the frozen core; checked-in external boots remain records unless CI explicitly reruns them.
+
+
+ +
+
+
+
09 / STABLE LINE + V2 LAB
+

Evolution without ambiguity.

The shipping boot contract and the experimental laboratory are deliberately different objects, with an explicit bounded bridge between them.

+
+
+
STABLE / SDK 1.3.0

BBP wire v1.1

+
Frozen pointer-chain ABI160-byte HEADER, 144-byte INFO, 32-byte tag frame and 15 UUID definitions.
+
Defensive consumerMapped-window parsing, CRC, count clamping, typed bodies, blob verification and canonical evidence.
+
Distributed surfacesC SDK, Rust crate, host capture, deterministic metadata and release packages.
+
BBPC v1 is separateHost archival container preserving topology; never a boot handoff or v2 capsule.
+
+
EXPERIMENTAL / OFFLINE

BBP v2 Draft

+
Contiguous bounded capsuleExact extent, 64-byte header, 48-byte directory entries, relative offsets, zero padding and per-payload CRC.
+
Profile 0Identity, validated memory ranges, kernel address and inline DTB as a separate semantic layer.
+
Independent + portable proofPython/C vectors, layout-independent digest, fuzzing and freestanding x86_64/AArch64/RV64 compilation.
+
Measurement, then authenticationPCR16 swtpm machine proof plus host-only HMAC global rollback floor across key rotation.
+
+
NON-PROMOTION RULE: v2 is not frozen, deployed, negotiated from v1.1 or authenticated by CRC. The HMAC envelope is not a public-key signature, and the TPM proof is not producer identity.
@@ -346,7 +474,12 @@

The handoff is hostile.

The non-claim is part of the protocol

Integrity is not authenticity.

-

CRC-64/XZ detects accidental corruption and casual tampering. A producer controlling the bytes can recompute it. BBP never promotes a valid checksum into a trusted identity.

+

CRC-64/XZ detects accidental corruption and casual tampering. A producer controlling the bytes can recompute it. BBP never promotes a valid checksum into a trusted identity or semantic truth.

+
+
MAPPED EXTENTThe consumer must supply readable bounds before the parser can safely inspect producer memory.
+
IMMUTABLE THROUGH USEValidation and consumption must not race producer-controlled mutation; copy when the lifetime is uncertain.
+
EXTERNAL AUTHORITYSecure Boot, signatures, TPM policy and platform-specific semantics live above CRC framing.
+
@@ -354,7 +487,7 @@

Integrity is not authenticity.

@@ -384,7 +517,11 @@

Integrity is not authenticity.

const tags = [...document.querySelectorAll('.tag-node')]; filters.forEach(filter => filter.addEventListener('click', () => { const selected = filter.dataset.filter; - filters.forEach(item => item.classList.toggle('active', item === filter)); + filters.forEach(item => { + const active = item === filter; + item.classList.toggle('active', active); + item.setAttribute('aria-pressed', String(active)); + }); tags.forEach(tag => tag.classList.toggle('muted', selected !== 'all' && tag.dataset.cat !== selected)); })); })();