obSCEne documentation
Start here
- README - obSCEne documentation
Guide
Reference
- ARTIFACTS - Build artifacts
- BOOT - Module boot sequence
- CLIENT - Writing a client for the obSCEne
protocol
- COMPATIBILITY - What each loader
does with obSCEne
- DECK - Capturing a real RDNA2 GPU corpus on
a Steam Deck
- DESIGN - Design
- EMULATORS - Emulator toolkit
- GLOSSARY - Glossary
- GNM - The platform GPU API:
libSceGnmDriver
- GPU_SURFACE - The GPU ISA surface,
and obSCEne's coverage of it
- HARDWARE-PROBE - obSCEne on real
hardware
- HARDWARE - What a real PS5 answers
- INJECTOR - obscene-injector - Native PS5
Process Injector
- LOADING - Loader requirements
- MODULE-FORMAT - Module format
- OUTPUT - The report format
- PLATFORM_LIBRARIES - Prospero
system library layout and privilege model
- PROTOCOL - The obSCEne command protocol,
version 1
- TOOLING - obscene-tool
- TRACER - The call/response tracer
- USER_GUIDE - Operator guide
- WORKFLOW - Workflow
- decisions/D001-a-host-build-beside-the-target-build
- D001 - A host build beside the target build
- decisions/D002-announce-before-attempting
- D002 - Announce before attempting
- decisions/D003-one-machine-readable-format
- D003 - One machine-readable format; presentation lives in the
tool
- decisions/D004-six-statuses
- D004 - Six statuses
- decisions/D005-freestanding-c-clang-only-no-vendor-sdk
- D005 - Freestanding C, clang only, no vendor SDK
- decisions/D007-check-from-the-failure-side-where-layouts-are-unknown
- D007 - Check from the failure side where layouts are unknown
- decisions/D008-nothing-is-invented
- D008 - Nothing is invented; uncertain signatures are omitted
- decisions/D009-the-section-order-is-one-explicit-list
- D009 - The section order is one explicit list
- decisions/D010-dependencies-are-capability-bits
- D010 - Dependencies are capability bits, not check names
- decisions/D012-the-build-directory-is-linux-local
- D012 - The build directory is overridable and Linux-local
- decisions/D014-presence-and-behaviour-are-separate
- D014 - Presence and behaviour are separate questions
- decisions/D015-a-census-needs-a-control-in-both-directions
- D015 - A census needs a control in both directions
- decisions/D017-the-c-runtime-is-a-behavioural-section
- D017 - The C runtime is a behavioural section
- decisions/D018-derived-facts-enter-as-provenance-headed-data
- D018 - Derived facts enter the repository as provenance-headed
data
- decisions/D019-a-regression-is-a-check-that-got-worse
- D019 - A regression is a check that got worse
- decisions/D021-symbols-carry-their-console-generation
- D021 - Symbols carry their console generation
- decisions/D026-the-tooling-is-rust-in-one-binary
- D026 - The tooling is Rust, in one binary
- decisions/D032-the-output-channel-is-chosen-by-what-moves-a-byte
- D032 - The output channel is chosen by what moves a byte
- decisions/D035-the-entry-point-ends-the-process
- D035 - The entry point ends the process
- decisions/D040-checks-can-be-excluded-and-the-default-list-is-empty
- D040 - Checks can be excluded, and the default list is empty
- decisions/D041-the-report-is-drawn-as-well-as-written
- D041 - The report is drawn as well as written
- decisions/D044-every-check-records-where-its-expectation-came-from
- D044 - Every check records where its expectation came from
- decisions/D046-an-intermittent-failure-is-reported-with-its-rate
- D046 - An intermittent failure is reported with its rate
- decisions/D047-responsiveness-is-asked-separately-from-correctness
- D047 - Responsiveness is asked separately from correctness
- decisions/D049-crack-hits-are-proof-and-misses-are-nothing
- D049 -
crack: a hit is proof and a miss is nothing
- decisions/D051-value-checks-use-exact-answers
- D051 - Value checks use exact answers that a stub cannot give
- decisions/D054-the-emulators-live-outside-the-repository
- D054 - The emulators live outside the repository, read for facts
- decisions/D058-a-check-guards-every-symbol-it-calls
- D058 - A check guards every symbol it calls
- decisions/D059-measurements-assert-nothing
- D059 - Measurements assert nothing
- decisions/D062-the-console-generation-is-a-build-input
- D062 - The console generation is a build input; everything else is
detected
- decisions/D067-the-headline-number-is-a-frontier
- D067 - The headline number is a frontier, not a sum
- decisions/D068-relational-checks-where-no-document-reaches
- D068 - Relational checks where no document reaches
- decisions/D070-documentation-is-checked-against-the-tree
- D070 - Documentation is checked against the tree
- decisions/D071-the-orchestration-scripts-are-sh
- D071 - The orchestration scripts are
sh
- decisions/D072-consensus-is-a-substitute-oracle-within-one-generation
- D072 - Consensus is a substitute oracle within one generation
- decisions/D081-layout-checks-record-bytes-and-interpret-nothing
- D081 - Layout checks record bytes and interpret nothing
- decisions/D084-obscene-may-consult-other-projects-and-orbistoun-may-not
- D084 - obSCEne may consult other projects; orbistoun may not
- decisions/D090-the-compatibility-table-is-generated
- D090 - The compatibility table is generated and ranks nothing
- decisions/D094-emulators-are-built-from-source
- D094 - Emulators are built from the source that is read
- decisions/D096-the-blind-prober-calls-what-it-cannot-describe
- D096 - The blind prober calls what it cannot describe, and never on
hardware
- decisions/D097-blame-needs-a-control-build
- D097 - Blame for a loader failure needs a control build
- decisions/D102-the-protocol-is-specified-before-it-is-implemented
- D102 - The command protocol is specified first, with transcripts as
contract
- decisions/D104-backends-are-chosen-by-the-source-list
- D104 - Platform backends are chosen by the source list
- decisions/D108-only-a-corpus-carries-machine-origin
- D108 - A report and a corpus differ, and only the corpus carries
machine origin
- decisions/D109-the-gpu-is-probed-by-executing-shaders
- D109 - The GPU is probed by executing shaders and reading result
bits
- decisions/D114-the-prober-walks-a-callable-list
- D114 - The census walks every symbol; the prober walks a callable
list
- decisions/D116-a-reference-oracle-for-gpu-results
- D116 - A reference oracle for GPU results
- decisions/D117-a-gpu-isa-surface-census
- D117 - A GPU ISA surface census
- decisions/D121-console-generation-is-observed-never-asserted-from-presence
- D121 - Console generation is observed, never asserted from
presence
- decisions/D122-code-execution-verbs-are-off-unless-a-build-asks
- D122 - Code-execution verbs are off unless a build asks for them
- decisions/D125-a-gate-is-trusted-only-after-it-has-rejected-something
- D125 - A gate is trusted only after it has rejected something
- decisions/D129-call-and-read-are-implemented-proven
- D129 -
call and read invoke and dump without
pre-validating
- decisions/D131-gpu-kernels-are-files-and-the-list-is-generated
- D131 - GPU kernels are files, and the kernel list is generated
- decisions/D132-a-serving-build-listens-first
- D132 - A serving build listens first and runs the suite on demand
- decisions/D137-gpu-diffs-are-keyed-by-input
- D137 - GPU diffs are keyed by input, not lane
- decisions/D138-an-unnamed-identifier-is-imported-with-a-sigil
- D138 - An unnamed identifier is imported with a
$
sigil
- decisions/D139-the-hud-shows-a-value-or-unknown
- D139 - The HUD shows a value or
unknown, and is
screen-only
- decisions/D140-the-display-prefers-the-older-video-out-form
- D140 - The display prefers the older video-out form when both
resolve
- decisions/D143-the-corpus-records-what-it-was-mined-from
- D143 - The corpus records what it was mined from
- decisions/D144-a-timeout-is-told-from-a-hang-by-doubling-the-budget
- D144 - A timeout is told from a hang by doubling the budget
- decisions/D164-the-prober-classifier-stays-shape-only
- D164 - The prober's classifier keeps emulator knowledge out
- decisions/D165-the-command-socket-takes-a-per-startup-secret
- D165 - The command socket takes a secret generated per startup
- decisions/D170-a-document-may-anchor-a-claim-to-the-source
- D170 - A document may anchor a claim to the source
- decisions/D172-exclusions-are-learned-at-run-time-from-the-previous-report
- D172 - Exclusions are learned at run time from the previous
report
- decisions/D176-a-patched-loader-measures-the-patch
- D176 - A patched loader's report never occupies that loader's row
- decisions/D180-each-loading-mechanism-is-an-artifact
- D180 - Each loading mechanism is its own artifact
- decisions/D183-obscene-does-not-do-what-a-shell-does
- D183 - obSCEne does not do what a shell does
- decisions/D184-hardware-capabilities-are-measured-on-every-use
- D184 - Hardware is registered by address; its capabilities are
measured on every use
- decisions/D189-the-console-transport-is-a-shared-crate
- D189 - The console transport is a shared crate, taken by path
- decisions/D192-corroboration-is-counted-per-claim
- D192 - Corroboration is counted per independent claim
- decisions/D199-scripts-reach-wsl-through-one-shim
- D199 - Scripts reach WSL through one shim
- decisions/D200-the-file-formats-live-in-selfish
- D200 - The file formats live in selfish; measurements stay here
- decisions/D202-a-mined-name-a-section-calls-is-declared-in-the-section
- D202 - A mined name a section calls is declared in that section
- decisions/D213-the-payload-runtime-is-obscene-and-the-format-is-selfish
- D213 - The payload runtime is obSCEne's; its format primitives are
selfish's
- decisions/D220-bundled-modules-are-built-here
- D220 - The modules a title bundles are built here, never copied
- decisions/D226-an-eboot-requires-only-what-the-harness-needs
- D226 - An eboot requires only the libraries the harness needs; the
census probes the rest at run time
- decisions/D235-an-unresolved-symbol-has-three-explanations
- D235 - An unresolved symbol has three explanations, and the report
names which
- decisions/D248-imports-are-encoded-with-global-binding
- D248 - Imports are encoded with global binding
- decisions/D260-each-source-compiles-to-its-own-object
- D260 - Each source compiles to its own object, keyed by a flags
sentinel
- decisions/D269-one-verb-per-hardware-task
- D269 - One verb per hardware task, on
bin/obscene
- decisions/D278-a-separate-payload-loads-the-probe-natively
- D278 - A separate payload loads the probe into a native process
- decisions/D296-privilege-and-category-are-independent-build-inputs
- D296 - Privilege tier and application category are independent build
inputs
- decisions/D297-sdk-versions-come-from-an-external-dictionary
- D297 - SDK versions come from an external dictionary and are validated
per generation
- decisions/D298-a-native-title-carries-a-procparam-and-bundled-modules
- D298 - A native title carries a process parameter block and compliant
bundled modules
- decisions/D302-captures-are-named-for-the-launch-shape
- D302 - A hardware capture is named for the launch shape, and hardware
is the authority
- decisions/D303-a-scalar-out-parameter-is-poisoned-not-zeroed
- D303 - A scalar out-parameter is poisoned, not zeroed
- decisions/D314-the-decision-gate-checks-the-split-log
- D314 - The decision gate checks the split log, and finding nothing
fails
- decisions/D315-a-document-beside-a-makefile-means-that-makefile
- D315 - A document beside a Makefile names that Makefile's rules
- decisions/D316-porthole-drives-a-virtual-controller-device
- D316 - Porthole drives a virtual controller device
- decisions/D317-porthole-reuses-oops-sdk-for-display-and-memory
- D317 - Porthole reuses oops-sdk for display and memory
- decisions/D325-a-fault-guard-catches-a-crashing-check
- D325 - A fault guard catches a crashing check so the suite
continues
- decisions/D327-the-payload-zeroes-its-own-bss
- D327 - The payload zeroes its own .bss
- decisions/D328-a-pending-status-for-a-check-awaiting-input
- D328 - A pending status for a check that is waiting for its input
- decisions/D331-a-borrowed-value-is-a-hypothesis-a-check-can-refute
- D331 - A borrowed value is a hypothesis a check can refute, not an
expectation
- decisions/D334-the-default-suite-runs-only-checks-that-retire-reliably
- D334 - The default suite runs only checks that retire reliably
- decisions/_preamble -
Decisions
- examples/README - Example
runs
- examples/protocol/README
- Captured exchanges
- worklog/183-sceAgcCreateShader-header-relocation-extent-and-stage-sweep
-
worklog/183-sceAgcCreateShader-header-relocation-extent-and-stage-sweep
- worklog/184-apr-resolve-filepaths-spelling-matrix-hardware-resolution
-
worklog/184-apr-resolve-filepaths-spelling-matrix-hardware-resolution
- worklog/_preamble - Work
log
Project memory