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 @@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.
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 producer may be buggy or hostile. BBP validates structure before use, bounds the walk, checks each seal, and treats a corrupt tag as absent.
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.
Platform-specific discovery stops at a narrow translation boundary. Every importer preflights the complete source before changing the destination arena.
make importers-test executes successful round trips and adversarial source framing. Live firmware collection remains external; bootloader/efi_main.c is still a reference skeleton.