Desktop capsule correctness, and a measurement harness that reports the tail #12
Open
nonos-sync
wants to merge 24 commits from
nonos-sync/gh-476 into main
AGit
pull from: nonos-sync/gh-476
merge into: NON-OS:main
NON-OS:main
NON-OS:ci/dark-features
NON-OS:crypto/out-of-ring-zero
NON-OS:attest/ak-public
NON-OS:syscall/reachability
NON-OS:asm/entry-surface
NON-OS:vault/keyring-wallet
NON-OS:drivers/conformance
NON-OS:attest/receipt
NON-OS:fs/blockfs-dirs
NON-OS:process/inbox-names
NON-OS:smp/bring-up
NON-OS:feat/files-backend
NON-OS:shell-backoff-and-ipc-bench
NON-OS:desktop-ui-and-measurement
NON-OS:release/trust-reuse
NON-OS:feat/about-redesign
NON-OS:fix/release-gates
NON-OS:tools/guided-build
NON-OS:feat/terminal-rail-and-blocks
NON-OS:feat/proof-carrying-installer
NON-OS:release/inherit-secrets
NON-OS:release/attestation-surface
NON-OS:build/self-verifying
NON-OS:crown/net-desktop
NON-OS:stark/mount-unified
NON-OS:attest/export-and-dev-roots
NON-OS:stark/subgroup-closed-form
NON-OS:feat/nonos-docs-document-core
NON-OS:feat/calculator-restyle
NON-OS:feat/snake-arcade
NON-OS:arch/iommu-smp-gpu
NON-OS:consolidate/all-to-main
NON-OS:integration/production
NON-OS:feat/launchpad-restyle
NON-OS:feat/process-manager-restyle
NON-OS:feat/settings-restyle
NON-OS:caps/service-gate-binding
NON-OS:feat/paint-primitive-layer
NON-OS:feat/video-player-mvp
NON-OS:feat/display-fidelity-w2
NON-OS:abi/syscall-contract
NON-OS:libc/drop-retired-graphics
NON-OS:sdk/declared-capabilities
NON-OS:tls/certificate-basic-constraints
NON-OS:feat/display-fidelity-w1-desktop-aa
NON-OS:browser-engine
NON-OS:dependabot/cargo/bitflags-2.13.0
NON-OS:dependabot/cargo/ed25519-dalek-3.0.0
NON-OS:fix/third-party-app-launch-unblock
NON-OS:dependabot/github_actions/softprops/action-gh-release-3.0.2
NON-OS:nym-bring-up
NON-OS:git-in-terminal
NON-OS:aarch64-capsule-boot
NON-OS:dependabot/github_actions/actions/upload-artifact-7.0.1
NON-OS:dependabot/github_actions/actions/download-artifact-8.0.1
NON-OS:aarch64-bringup
NON-OS:Launchpad-Boot-Fixes
NON-OS:feat/hda-audio-playback
NON-OS:dependabot/github_actions/actions/checkout-7.0.1
NON-OS:security/trusted-path-audit
NON-OS:ci-benchmark-disk
NON-OS:send-live-fees
NON-OS:shell-launch-toast
NON-OS:fix-multiwindow-drain
NON-OS:iwlwifi-gen3-prph-scratch
NON-OS:wallet-qr-receive
NON-OS:browser-layout-fixes
NON-OS:terminal-builtins-driver-probe
NON-OS:browser-image-keepalive-fix
NON-OS:stark-parallel-prover
NON-OS:std-pal-unmodified-tokio
NON-OS:stark-parallel-periodic-commit
NON-OS:feat/nox-pull-http-transfer
NON-OS:lean-verification
NON-OS:stark-recursion-assembly
NON-OS:stark-preprocessed-periodic
NON-OS:feat/wallet-nonos-design-reskin
NON-OS:stark-enrollment-tool
NON-OS:quickjs-browser-engine
NON-OS:dependabot/github_actions/actions/attest-build-provenance-4.1.1
NON-OS:wifi-stack-and-browser-engine
NON-OS:dependabot/cargo/smallvec-1.15.2
NON-OS:stark-shared-crate
NON-OS:stark-recursion-prod
NON-OS:lean-stark-attestation-proofs
NON-OS:feat/wifi-core
NON-OS:feat/image-viewer-capsule
NON-OS:wifi-mlme-supplicant
NON-OS:pr-device-bringup
NON-OS:iwlwifi-mlme-frames
NON-OS:mechanism-code-binding
NON-OS:Lean-Kernel-Proofs-To-Main
NON-OS:sync-primitives-proofs
NON-OS:dependabot/cargo/volatile-0.6.1
NON-OS:dependabot/cargo/halo2curves-0.10.0
NON-OS:repo-hardening
NON-OS:fix/installer-endpoint-collision
NON-OS:fix/installer-spawnbroker-cap
NON-OS:hardening/desktop-graphics
NON-OS:hardening/verification
NON-OS:hardening/apps
NON-OS:hardening/drivers-net
NON-OS:stark-poseidon-recursion
NON-OS:stark-money-grade
NON-OS:feat/terminal-shell-core
NON-OS:stark-lean-degree-bound
NON-OS:Stark-Kernel-Gate
NON-OS:Contributing-ZK-Refresh
NON-OS:Stark-300-Port
NON-OS:Stark-Land
NON-OS:Lean-Evidence
NON-OS:readme-proven-section
NON-OS:Stark-Per-Layer
NON-OS:Lean-Expand-To-Main
NON-OS:Stark-Wiring-Fuzz
NON-OS:Extraction-Regen
NON-OS:Lean-Spec-Coverage
NON-OS:Stark-Whole-Proof
NON-OS:Extraction-To-Main
NON-OS:Lean-Proofs
NON-OS:Stark-Monolith
NON-OS:Lean-Proofs-Expand
NON-OS:Stark-Recursive-Verifier-v2
NON-OS:Stark-Wired-Multi
NON-OS:Stark-Lookup
NON-OS:Stark-Fused
NON-OS:Stark-Multi-Trace-Api
NON-OS:Stark-Fri-Query
NON-OS:verify-proof-gates-main
NON-OS:Stark-Recursive-Verifier
NON-OS:Stark-Poseidon-Fri
NON-OS:Stark-Air-Sponge
NON-OS:Stark-Fri-Fold
NON-OS:revert-270-verification-foundation
NON-OS:Stark-Deep
NON-OS:Stark-Air-Poseidon
NON-OS:ci-verify-main
NON-OS:Fs-Hardening
NON-OS:Deps-Crossbeam-Advisory
NON-OS:verification-foundation
NON-OS:Stark-Fri-Proofs
NON-OS:Extraction-Proofs
NON-OS:Virtio-Net-Proofs
NON-OS:Stark-Proofs
NON-OS:Crypto-Proofs
NON-OS:Kernel-Isolation-Proofs
NON-OS:fix/crossbeam-advisory
NON-OS:Rtl8139-Proofs
NON-OS:Usb-Msc-Proofs
NON-OS:browser-render-fixes
NON-OS:Kernel-Proofs
NON-OS:Xhci-Proofs
NON-OS:E1000-Proofs
NON-OS:Verification-Docs
NON-OS:feat/clock-app
NON-OS:Virtio-Blk-Proofs
NON-OS:Nvme-Proofs
NON-OS:Usb-Proofs
NON-OS:Driver-Proofs
NON-OS:Net-Proofs
NON-OS:Boot-Proofs
NON-OS:browser-full-render
NON-OS:feat/ntp-time-sync
NON-OS:fix/prod-readiness-p0-p1
NON-OS:browser-ui-hardening
NON-OS:kernel-release-attestation
NON-OS:browser-network-hardening
NON-OS:network-browser-hardening
NON-OS:kernel-hardening
NON-OS:feat/netsurf-relibc-fork
NON-OS:ci/benchmark-artifacts
NON-OS:feat/net-core-smoltcp
NON-OS:feat/capsule-browser
NON-OS:bootloader-menu-policy
NON-OS:bootloader-anti-rollback
NON-OS:bootloader-tpm-status
NON-OS:bootloader-tpm-counter
NON-OS:bootloader-hardening
NON-OS:chore/bump-nonos-sign-v2
NON-OS:fix/wallet-tls-live-handshake
NON-OS:integrate/wallet-tls-into-main
NON-OS:feat/terminal-restyle
NON-OS:dev-enroll-bootstrap
NON-OS:bootloader-nonos
NON-OS:feat/terminal-tabs-and-blocks
NON-OS:feat/terminal-prod-readiness
NON-OS:feat/terminal-vt100
NON-OS:nonos-hardening
NON-OS:nonos/surface-vblank-phase-grid
NON-OS:nonos/syscall-bound-user-lengths
NON-OS:fix/preempt-transport-lock-deadlock
NON-OS:nonos/syscall-sleep-ms-getcwd
NON-OS:fix/net-dhcp-dns-crypto-cap
NON-OS:nonos/smp-apic-x2apic-ipi
NON-OS:nonos/input-key-release-target
NON-OS:nonos/mm-fault-budget-heap-guard
NON-OS:nonos/sched-percpu-correctness
NON-OS:perf/desktop-drop-demo-embeds
NON-OS:feat/net-control-op-auth
NON-OS:feat/net-security-wave1
NON-OS:feat/tcp-reliability-core
NON-OS:fix/net-l2-arp-eviction
NON-OS:fix/net-ip-reject-fragments
NON-OS:nonos/crypto-aead-wallet-tls
NON-OS:fix/virtio-net-rx-refill
NON-OS:fix/tcp-ack-acceptability
NON-OS:fix/net-l2-learns-ip
NON-OS:fix/microkernel-syscall-union-merge
NON-OS:nonos/kernel-thread-spawn
NON-OS:feat/dock-hover-reveal
NON-OS:nonos/std-platform-layer-complete
NON-OS:feat/tcp-rfc793-p0-p1
NON-OS:nonos/docs
NON-OS:nonos/desktop-shell
NON-OS:nonos/wallet
NON-OS:nonos/proof-capsules-v2
NON-OS:nonos/proof-capsules
NON-OS:nonos/std-library-expansion
NON-OS:nonos/kernel-process-args
NON-OS:nonos/std-platform-layer
NON-OS:feat/snake-game
NON-OS:nonos/runtime-stack
NON-OS:ek_gpu_scanout_clamp
NON-OS:ek_qemu_widescreen
NON-OS:ek_terminal_shell
NON-OS:feat/alive-system
NON-OS:ek_zk_production_enforce
NON-OS:feat/vfs-real-work-loop
NON-OS:fix/capsule-integrity-fixes
NON-OS:feat/boot-experience-splash
NON-OS:fix/keyboard-hvf-ps2
NON-OS:input-probe-harness
NON-OS:ek_boot_and_capsules_init/spawn
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
NON-OS/nonos-micro-kernel!12
Loading…
Reference in a new issue
No description provided.
Delete branch "nonos-sync/gh-476"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
22 commits, one concern each, all building standalone. Boot checked on every pass.
Started as UI work on the wallet and process manager. Most of the visual faults had a real defect behind them, so it ended up mostly correctness.
Trust surface
capsule_attestansweredOP_PROOF_CAPSULE_LISTfrom 17 capsule names with capability masks typed into the source, served as a proof. Now reads the live process table.MkProcStatneeds no capability so the mask stays CoreExec|IPC|Memory: an attestation service needing more authority to report on authority would be answering its own question.Its invariants were prose with nothing checking them. Each now names how it is settled (holders of a bit, only init holding a bit, every capsule masked) or reports unchecked. Never a pass where it cannot be settled at runtime.
capsule_aboutgets a Verify screen: live checks over one read of the process table, the TPM attestation document with its challenge verified, the boot record with the kernel's own caveat that reading it re-verifies nothing, and the claims this window cannot settle with where each is settled instead.Measurement
Kernel had a microbenchmark harness reporting min/avg over 256 runs.
minis the statistic that cannot regress: make 1 call in 50 twenty times slower and it does not move.nonos-benchis shared by the kernel harness and a newbenchterminal command. p50/p95/p99/max, nearest rank so every figure was measured. Reads arelfenced both sides sincerdtscis not a barrier and an unserialised pair can close before the work retires. Counter overhead calibrated against an empty body and subtracted using the floor. Kernel buffer 256 -> 1024, since at 256 the p99 is the third slowest run.Capabilities that existed and nothing called
Four fixes here are the same shape.
MkAttestDoc: implemented in the kernel, absent from libc. No capsule had ever asked for a signed statement of what the machine is running.MkFutexWait: never exposed, so capsules waited by looping onmk_yield, which returns immediately when nothing else wants the CPU.capsule_loginheld 88% of a core for the life of the session.spawn_nextdocuments that a full instance table means the caller focuses an existing window. The caller logged the error and dropped it, so the wallet opened twice per boot then silently stopped responding.No compiler warning and no test covers this class.
Apps
u8::MAXafter a saturating cast, recorded during boot and kept as the peak.u32of milli-ETH with no decimal key, so 0.0005 could not be entered.sign_eth_transfertookvalue_wei: u64, capping a send at 18.4 ETH. The wire already carried a 256 bit word.NODE_CAPwas 128, so every client entered the mixnet through the same prefix of gateways. The full set is 40 KB.Presentation
Proofs
New crates for the attestation document parser, benchmark reduction and wallet keypad, in
verify.ymlwith clippy denied on warnings.Parser proofs drive malformed input, not the happy path: every truncation refused, trailing bytes refused,
u32::MAXlength fields refused without panicking, replayed challenge parsed but never reported fresh. The type ramp is asserted against the font floor so the flattening cannot come back silently.Not done
desktop_shellstill makes ~40 timed outvfs_poolcalls per boot while package staging holds the block device.Opened on GitHub by eKisNonos as pull request 476. Review and merge happen there while this repository is kept in step from GitHub; this copy follows it, and is marked merged or closed when it is.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.