orbistoun documentation
Start here
- README - orbistoun documentation
Guide
Reference
- ADDRESS_MAP - The address map
- CRATES - Crates
- GLOSSARY - Glossary
- HANDOVER-OBSCENE - What
orbistoun wants measured next
- PAYLOADS - Running the open-toolchain
payloads, and answering Prosperous
- PROJECT_STATUS - Project
status
- PROVENANCE - Provenance: how to show a
name was derived, not taken
- REFERENCES - External references
- SCOPE - Scope
- SYMBOLS - Symbol databases and the NID
hash
- TESTING - Testing strategy
- THE_LOOP - The loop
- WORKFLOW - Workflow
- backlog/001-import-list-triage-done
- Import-list triage (done)
- backlog/002-enter-a-payload-at-main-skipping-its
- Enter a payload at
main, skipping its runtime start
- backlog/003-refuse-the-socket-shortcut
- Refuse the socket shortcut
- backlog/004-the-payload-servers-jump-to-null-inside
- The payload servers jump to null inside
find_pid
(answered - D359)
- backlog/005-naming-a-sysctl-mib-from-the-harvested
- Naming a
sysctl MIB from the harvested constants
(evaluated, not built)
- backlog/006-automated-stub-semantics-search
- Automated stub-semantics search
- backlog/007-fixed-address-tests-contend-across
- Fixed-address tests contend across crates (wrong, then fixed, now
closed)
- backlog/008-per-opcode-operand-data
- Per-opcode operand data
- backlog/009-verify-the-shader-address-register-map
- Verify the shader-address register map
- backlog/010-wire-the-shader-census-into-the-run
- Wire the shader census into the run report (half done)
- backlog/011-shader-translation-assistance
- Shader translation assistance
- backlog/012-two-things-orbistoun-llm-left-undone
- Two things
orbistoun-llm left undone
- backlog/013-harvesters-that-were-designed-and-not
- Harvesters that were designed and not built
- backlog/014-an-implemented-function-s-name-has-no
- An implemented function's name has no auditable derivation
- backlog/015-string-literals-already-collapsed-by-a
- String literals already collapsed by a formatter
- backlog/016-trace-analysis-cli
- Trace analysis CLI
- backlog/017-three-things-the-call-recorder-cannot
- Three things the call recorder cannot do yet
- backlog/018-ppsa02664-ppsa03416-image-0xafc959
- PPSA02664 / PPSA03416 -
image+0xafc959, write to
0xfffe0
- backlog/019-ppsa28061-image-0x43c4-read-of-0x0
- PPSA28061 -
image+0x43c4, read of 0x0
- backlog/020-ppsa04263-spins-on
- PPSA04263 - spins on
sceKernelDirectMemoryQuery
- backlog/021-and-one-that-is-blocked-on-ownership
- And one that is blocked on ownership, not knowledge
- backlog/022-three-gui-dependencies-fall-outside-the
- Three GUI dependencies fall outside the licence allow list
- backlog/023-hardware-probe-test-authoring
- Hardware-probe test authoring
- backlog/024-consume-the-hardware-corpus-as-fixtures
- Consume the hardware corpus as fixtures and as behaviour
- backlog/025-answer-obscene-s-command-protocol-so
- Answer obSCEne's command protocol, so one driver can diff hardware
against emulator
- backlog/026-hardware-derived-expectations-are
- Hardware-derived expectations are
assumed until they come
from the hardware
- backlog/027-error-code-corpus
- Error-code corpus
- backlog/028-arity-verification
- Arity verification
- backlog/029-miri-over-the-host-side-crates
- Miri over the host-side crates
- backlog/030-title-metadata-for-the-library-view
- Title metadata for the library view
- backlog/031-ordered-mounts-for-base-plus-patch
- Ordered mounts for base-plus-patch
- backlog/032-trim-the-landing-page
- Trim the landing page
- backlog/033-compatibility-table
- Compatibility table
- backlog/034-previous-generation-container-support
- Previous-generation container support
- backlog/035-resolved-since-this-list-was-written
- Resolved since this list was written
- backlog/036-the-names-sweep-records-the-path-it-was-given
- The names sweep records the path it was given
- backlog/_preamble -
Backlog
- decisions/D001-rust-not-c-or-c
- D001 - Rust, not C++ or C#
- decisions/D002-edition-2024-msrv-1-85-toolchain-pinned
- D002 - Edition 2024, MSRV 1.85, toolchain pinned to 1.97.1
- decisions/D003-mit-or-apache-2-0-permissive-only
- D003 - MIT OR Apache-2.0; permissive-only dependency policy
- decisions/D004-fourteen-crates-arranged-as-a
- D004 - Fourteen crates arranged as a dependency spine
- decisions/D005-interception-is-linking-not-hooking
- D005 - Interception is linking, not hooking
- decisions/D006-the-nid-hash-suffix-is-runtime-data-not
- D006 - The NID hash suffix is runtime data, not a source constant
- decisions/D007-symbol-databases-store-names-nids-are
- D007 - Symbol databases store names; NIDs are derived
- decisions/D008-stub-policy-defaults-to-unimplemented
- D008 - Stub policy defaults to
Unimplemented, never
Ok
- decisions/D009-placeholder-error-codes-avoid-the-high
- D009 - Placeholder error codes avoid the high bit
- decisions/D010-honest-failure-over-plausible-output
- D010 - Honest failure over plausible output
- decisions/D011-the-container-parser-contains-zero
- D011 - The container parser contains zero
unsafe
- decisions/D012-vendor-p-type-range-asserted-individual
- D012 - Vendor
p_type range asserted; individual constants
are not
- decisions/D013-lints-live-in-a-workspace-table-with
- D013 - Lints live in a workspace table, with unsafe discipline at
deny
- decisions/D014-provenance-is-enforced-in-ci-and-in-the
- D014 - Provenance is enforced in CI and in the pre-push hook
- decisions/D015-no-vendor-trademarks-in-prose-or-in-our
- D015 - No vendor trademarks in prose or in our own API
- decisions/D016-validation-is-separated-from-effects
- D016 - Validation is separated from effects
- decisions/D017-handles-are-per-subsystem-and-never
- D017 - Handles are per-subsystem and never recycled
- decisions/D018-traces-are-binary-sequence-numbered-and
- D018 - Traces are binary, sequence-numbered, and call-site
attributed
- decisions/D019-greenfield-no-legacy-no-compatibility
- D019 - Greenfield: no legacy, no compatibility shims
- decisions/D020-synthetic-fixtures-are-a-prerequisite
- D020 - Synthetic fixtures are a prerequisite, not a nice-to-have
- decisions/D021-the-abi-spike-happens-out-of-order
- D021 - The ABI spike happens out of order
- decisions/D022-the-trace-sink-is-wired-at-phase-4-not
- D022 - The trace sink is wired at phase 4, not earlier
- decisions/D023-release-profile-favours-speed-debug
- D023 - Release profile favours speed; debug info kept
- decisions/D024-other-projects-are-reference-only-and
- D024 - Other projects are reference-only, and get credited
- decisions/D025-generate-the-symbol-name-list-never
- D025 - Generate the symbol name list; never ship a database
- decisions/D026-crunch-until-the-queue-is-dry-then-re
- D026 - Crunch until the queue is dry, then re-plan
- decisions/D027-linux-verification-via-multipass
- D027 - Linux verification via multipass; Windows is the primary
host
- decisions/D028-no-urgency-take-the-highest-payoff-path
- D028 - No urgency; take the highest-payoff path
- decisions/D029-contracts-and-swappable-backends
- D029 - Contracts and swappable backends, abstracted at guest
semantics
- decisions/D030-backend-seams-are-enforced-by-crate
- D030 - Backend seams are enforced by crate boundaries, not
discipline
- decisions/D031-where-the-abstraction-principle
- D031 - Where the abstraction principle deliberately stops
- decisions/D032-the-guest-executes-in-a-child-process
- D032 - The guest executes in a child process
- decisions/D033-worker-mode-is-self-reinvocation-no
- D033 - Worker mode is self-reinvocation; no binary is privileged
- decisions/D034-cli-gui-and-worker-are-interaction
- D034 - CLI, GUI, and worker are interaction shims; logic lives in the
crates
- decisions/D035-the-protocol-is-serialisable-data
- D035 - The protocol is serialisable data, defined separately from its
transport
- decisions/D036-gui-egui-not-tauri
- D036 - GUI: egui, not Tauri
- decisions/D037-two-user-facing-binaries-plus-a
- D037 - Two user-facing binaries, plus a portable GUI artifact
- decisions/D038-portable-mode-specification
- D038 - Portable mode specification
- decisions/D039-configuration-formats-toml-and-json-no
- D039 - Configuration formats: TOML and JSON; no database
- decisions/D040-gui-is-library-first-inspect-before
- D040 - GUI is library-first; Inspect before Launch
- decisions/D041-firmware-system-menu-launch-is-the
- D041 - Firmware / system-menu launch is the lowest-priority stretch
goal
- decisions/D042-a-manifest-driven-test-corpus-under
- D042 - A manifest-driven test corpus under
titles/
- decisions/D043-the-accuracy-suite-is-a-separate
- D043 - The accuracy suite is a separate repository,
obSCEne
- decisions/D044-the-open-toolchain-is-a-lawful-source
- D044 - The open toolchain is a lawful source for interface facts,
never for implementations
- decisions/D045-obscene-result-model-ordering-and
- D045 - obSCEne result model, ordering, and coverage generation
- decisions/D046-three-observability-channels-not-one
- D046 - Three observability channels, not one
- decisions/D047-files-first-otlp-export-is-an-opt-in
- D047 - Files first; OTLP export is an opt-in feature, not the
substrate
- decisions/D048-per-title-overrides-one-file-per-title
- D048 - Per-title overrides: one file per title, three layers, merged
per key
- decisions/D049-containers-are-wrapped-the-elf-is-not
- D049 - Containers are wrapped; the ELF is not at offset zero
- decisions/D050-revised-starting-order-after-real
- D050 - Revised starting order after real material arrived
- decisions/D051-fixtures-are-generated-never-extracted
- D051 - Fixtures are generated, never extracted
- decisions/D052-the-wrapper-descriptor-table-locates
- D052 - The wrapper descriptor table locates segment data, not the ELF
headers
- decisions/D053-imports-use-standard-elf-machinery-only
- D053 - Imports use standard ELF machinery; only the names are
vendor-encoded
- decisions/D054-a-module-is-reserved-as-one-contiguous
- D054 - A module is reserved as one contiguous span, not per
segment
- decisions/D054-distribution-formats-stop-at-the-door
- D054 - Distribution formats stop at the door; mounts are ordered
- decisions/D055-the-linux-path-was-broken-and-only
- D055 - The Linux path was broken, and only running it showed that
- decisions/D055-title-metadata-is-cheap-not-a-second
- D055 - Title metadata is cheap, not a second container format
- decisions/D056-a-remote-hardware-probe-is-the-top
- D056 - A remote hardware probe is the top-value future capability
- decisions/D056-the-guest-to-host-call-boundary-works
- D056 - The guest-to-host call boundary works, and needs
extern "sysv64"
- decisions/D057-worker-mode-is-implemented-and-both
- D057 - Worker mode is implemented, and both shims go through it
- decisions/D058-image-placement-and-the-host-allocation
- D058 - Image placement, and the host allocation granularity
- decisions/D059-relocations-apply-interception-is
- D059 - Relocations apply; "interception is linking" is now machine
code
- decisions/D060-protection-is-computed-per-page-as-a
- D060 - Protection is computed per page, as a union
- decisions/D061-thread-local-storage-is-variant-ii-and
- D061 - Thread-local storage is variant II, and the block sits
below the pointer
- decisions/D062-one-stub-per-import-not-one-shared
- D062 - One stub per import, not one shared target
- decisions/D063-guest-code-runs-on-its-own-stack
- D063 - Guest code runs on its own stack, entered through a switch
- decisions/D064-a-worker-that-dies-without-a-verdict
- D064 - A worker that dies without a verdict gets a postmortem
- decisions/D065-execute-is-never-dropped-and-never
- D065 - Execute is never dropped, and never means "no access"
- decisions/D066-a-guest-that-will-not-stop-is-a-result
- D066 - A guest that will not stop is a result, not a hang
- decisions/D067-a-stub-index-is-worthless-a-name-is-a
- D067 - A stub index is worthless; a name is a work list
- decisions/D068-names-are-generated-and-proved-never
- D068 - Names are generated and proved, never obtained
- decisions/D069-nothing-is-searched-without-a-suffix
- D069 - Nothing is searched without a suffix, and a miss on standard
names indicts it
- decisions/D070-the-hasher-read-the-digest-backwards
- D070 - The hasher read the digest backwards, from the very first
commit
- decisions/D071-the-hash-suffix-ships-with-the
- D071 - The hash suffix ships with the repository
- decisions/D072-first-names-and-the-first-concrete
- D072 - First names, and the first concrete implementation target
- decisions/D073-every-name-records-how-it-was-found-and
- D073 - Every name records how it was found, and the record is
checked
- decisions/D074-symbol-databases-accumulate-and-are
- D074 - Symbol databases accumulate, and are generated by a task
- decisions/D075-standard-library-names-are-harvested
- D075 - Standard-library names are harvested from FreeBSD, not
remembered
- decisions/D076-names-are-ours-selection-is-the-module-s
- D076 - Names are ours; selection is the module's
- decisions/D077-the-loop-is-a-verb-and-its-output-is
- D077 - The loop is a verb, and its output is durable
- decisions/D078-sweep-not-crunch
- D078 -
sweep, not crunch
- decisions/D079-run-title-does-everything-a-run-needs
- D079 -
run <title> does everything a run needs
- decisions/D080-the-loop-has-an-objective-function
- D080 - The loop has an objective function
- decisions/D081-run-checks-the-machine-before-it-tries
- D081 -
run checks the machine before it tries
anything
- decisions/D082-declarations-reach-the-guest-and-the
- D082 - Declarations reach the guest, and the first function is
implemented
- decisions/D083-the-guest-ignores-return-codes-the
- D083 - The guest ignores return codes; the buffer is the channel
- decisions/D084-a-tech-debt-pass-and-the-vocabulary
- D084 - A tech-debt pass, and the vocabulary grows from our own
observations
- decisions/D084-instrument-the-gpu-before-translating
- D084 - Instrument the GPU before translating any of it
- decisions/D085-the-hash-suffix-is-supplied-and-the
- D085 - The hash suffix is
supplied, and the file now says
so
- decisions/D085-the-instruction-encoding-table-is-data
- D085 - The instruction encoding table is data, and says it is
unverified
- decisions/D086-rank-blockers-by-shaders-blocked-within
- D086 - Rank blockers by shaders blocked, within an effort tier
- decisions/D087-decoding-never-fails-it-reports
- D087 - Decoding never fails; it reports
- decisions/D088-the-shader-corpus-is-content-addressed
- D088 - The shader corpus is content-addressed, and is the regression
suite
- decisions/D089-verify-the-encoding-table-against-a
- D089 - Verify the encoding table against a reference disassembler
- decisions/D090-instruction-names-come-only-from-what
- D090 - Instruction names come only from what was observed
- decisions/D091-register-extraction-is-mechanism-the
- D091 - Register extraction is mechanism; the shader-address map is a
hypothesis
- decisions/D092-report-rendering-lives-in-the-library
- D092 - Report rendering lives in the library
- decisions/D093-operands-are-decoded-and-the-numbering
- D093 - Operands are decoded, and the numbering lives in data
- decisions/D094-scalar-destinations-use-the-shared
- D094 - Scalar destinations use the shared operand numbering
- decisions/D095-the-shader-census-has-a-cli-surface
- D095 - The shader census has a CLI surface
- decisions/D096-operand-layout-is-a-property-of-the
- D096 - Operand layout is a property of the opcode, not of the encoding
family
- decisions/D097-per-opcode-operand-fields-are-solved
- D097 - Per-opcode operand fields are solved from probes, not
transcribed
- decisions/D098-predicated-translation-first-structured
- D098 - Predicated translation first; structured reconstruction stubbed
loudly
- decisions/D099-translated-shaders-are-executed-not
- D099 - Translated shaders are executed, not merely validated
- decisions/D100-three-wavefront-models-kept-as-a
- D100 - Three wavefront models, kept as a differential oracle
- decisions/D101-guest-memory-is-a-second-binding-never
- D101 - Guest memory is a second binding, never a second half of the
first
- decisions/D102-the-spir-v-builder-holds-the-section
- D102 - The SPIR-V builder holds the section layout, not its
callers
- decisions/D103-the-builder-checks-that-its-identifiers
- D103 - The builder checks that its identifiers resolve
- decisions/D104-a-blocked-instruction-names-its
- D104 - A blocked instruction names its dependency; an unwritten one
does not
- decisions/D105-hand-written-assembly-is-a-fixture
- D105 - Hand-written assembly is a fixture source, and it caught a
wrong row
- decisions/D106-the-lane-model-refuses-a-mask-write
- D106 - The lane model refuses a mask write; Auto reads the shader to
choose, and says so
- decisions/D107-the-operand-solver-checks-that-a-family
- D107 - The operand solver checks that a family agrees with itself
- decisions/D108-an-operand-the-encoding-does-not-carry
- D108 - An operand the encoding does not carry is recorded, not
omitted
- decisions/D109-a-candidate-operand-field-may-not
- D109 - A candidate operand field may not overlap the opcode
- decisions/D110-control-flow-is-a-dispatch-loop-not
- D110 - Control flow is a dispatch loop, not reconstructed
structure
- decisions/D111-function-bodies-are-exempt-from-the
- D111 - Function bodies are exempt from the define-before-use
check
- decisions/D112-the-gpu-subsystem-is-driven-by
- D112 - The GPU subsystem is driven by submissions, not called by the
emulator
- decisions/D113-translated-shaders-are-cached-by
- D113 - Translated shaders are cached by content, never by address
- decisions/D114-a-shader-read-from-memory-ends-where
- D114 - A shader read from memory ends where the program ends
- decisions/D115-the-condition-code-is-state-both-models
- D115 - The condition code is state both models hold
- decisions/D116-supported-lists-what-the-translator
- D116 -
SUPPORTED lists what the translator handles, not
what one function dispatches
- decisions/D117-library-attribution-was-fabricated-and
- D117 - Library attribution was fabricated, and looked fine
- decisions/D118-the-real-library-table-found-by
- D118 - The real library table, found by prediction rather than by
guessing
- decisions/D119-a-supplied-name-is-not-a-published-one
- D119 - A supplied name is not a published one
- decisions/D120-graphics-vocabulary-and-the-submit
- D120 - Graphics vocabulary, and the submit function
- decisions/D121-signed-overflow-is-computed-in-bits-not
- D121 - Signed overflow is computed in bits, not compared
- decisions/D122-knowledge-is-a-file-and-it-is-the-loop
- D122 - Knowledge is a file, and it is the loop's output
- decisions/D122-which-sub-encoding-an-opcode-uses
- D122 - Which sub-encoding an opcode uses decides how its first word is
read
- decisions/D123-an-opcode-with-no-shape-row-is-an-error
- D123 - An opcode with no shape row is an error, not a skip
- decisions/D124-the-biggest-wall-was-c-static
- D124 - The biggest wall was C++ static initialisation
- decisions/D124-the-division-sequence-is-refused-and
- D124 - The division sequence is refused, and says which numbers are
missing
- decisions/D125-an-error-code-in-a-pointer-register-is
- D125 - An error code in a pointer register is a wild pointer
- decisions/D125-two-routes-to-a-shader-address-and-the
- D125 - Two routes to a shader address, and the disagreement is the
point
- decisions/D126-a-submission-knows-which-queue-it-came
- D126 - A submission knows which queue it came from
- decisions/D126-the-word-list-is-harvested-and-cited-a
- D126 - The word list is harvested and cited; a rule I invented cost
the most important name
- decisions/D127-source-modifiers-are-read-from-the-raw
- D127 - Source modifiers are read from the raw words, and refused where
unimplemented
- decisions/D127-two-invented-rules-in-one-afternoon-and
- D127 - Two invented rules in one afternoon, and the tests caught
both
- decisions/D128-a-field-no-probe-can-reach-is-widened
- D128 - A field no probe can reach is widened from its family, and the
claim is checked
- decisions/D128-the-heap-and-a-fault-address-that
- D128 - The heap, and a fault address that identified itself
- decisions/D129-side-effects-on-hidden-state-are-part
- D129 - Side effects on hidden state are part of an instruction, not an
extra
- decisions/D129-two-progress-signals-and-the-verdict
- D129 - Two progress signals, and the verdict says which moved
- decisions/D130-the-gpu-address-assumption-is-a-named
- D130 - The GPU-address assumption is a named function, not a
silence
- decisions/D130-the-thread-pointer-installs-and-it-is
- D130 - The thread pointer installs, and it is checked rather than
assumed
- decisions/D131-a-capture-is-a-pair-what-the-call-asked
- D131 - A capture is a pair: what the call asked for, and the bytes it
appended
- decisions/D132-generated-fixtures-and-dumped-shaders
- D132 - Generated fixtures and dumped shaders do not share an
extension
- decisions/D133-the-subgroup-level-is-blocked-on
- D133 - The subgroup level is blocked on hardware, not on effort
- decisions/D134-a-named-immediate-the-reference-appends
- D134 - A named immediate the reference appends without a comma is
still an operand
- decisions/D135-the-local-data-share-is-workgroup
- D135 - The local data share is workgroup storage, and the lane model
refuses it
- decisions/D136-the-differential-oracle-is-a-property
- D136 - The differential oracle is a property, tested by
generation
- decisions/D137-out-of-range-guest-memory-is-masked
- D137 - Out-of-range guest memory is masked, because undefined is not
comparable
- decisions/D138-the-generator-does-not-branch
- D138 - The generator does not branch
- decisions/D139-the-target-is-rdna2-the-supported-list
- D139 - The target is RDNA2; the supported list names instructions
rather than numbering them
- decisions/D140-a-zero-operand-entry-may-be-solved-from
- D140 - A zero-operand entry may be solved from one sample
- decisions/D141-sixty-four-lane-wavefronts-and-the
- D141 - Sixty-four-lane wavefronts, and the tables do not care
- decisions/D142-one-vulkan-loader-one-instance-one
- D142 - One Vulkan loader, one instance, one device, for the life of
the process
- decisions/D143-two-thirds-of-the-division-sequence-and
- D143 - Two thirds of the division sequence, and a sharper reason for
the third
- decisions/D144-the-division-pre-scale-needs-no-float
- D144 - The division pre-scale needs no float controls, and could not
have had them
- decisions/D145-wavefront-width-is-a-parameter-and-a
- D145 - Wavefront width is a parameter, and a narrow shader is a
different instruction stream
- decisions/D146-the-subgroup-level-is-the-per-lane
- D146 - The subgroup level is the per-lane model with a ballot, not a
third model
- decisions/D147-a-descriptor-this-translator-cannot
- D147 - A descriptor this translator cannot address is forced out of
bounds
- decisions/D148-the-shader-work-gets-the-same-progress
- D148 - The shader work gets the same progress loop as the imports
- decisions/D149-an-address-that-resolves-is-evidence
- D149 - An address that resolves is evidence, not just a
precondition
- decisions/D150-threads-the-guest-decides-how-many-the
- D150 - Threads: the guest decides how many, the host decides how
fast
- decisions/D151-a-thread-handle-is-an-address-because
- D151 - A thread handle is an address, because the guest dereferences
it
- decisions/D152-the-entry-point-was-reading-a-stray
- D152 - The entry point was reading a stray host pointer, and it looked
like progress
- decisions/D153-the-process-entry-image-and-a-matrix
- D153 - The process entry image, and a matrix that ruled out three
hypotheses at once
- decisions/D154-the-ranked-list-is-the-wrong-view-at-a
- D154 - The ranked list is the wrong view at a wall; the ordered tail
is the right one
- decisions/D155-two-names-confirmed-by-hash-and-the
- D155 - Two names confirmed by hash, and the vocabulary extended to
derive them
- decisions/D156-nothing-reachable-from-a-guest-call-may
- D156 - Nothing reachable from a guest call may panic
- decisions/D157-the-mapping-is-parked-behind-a-switch
- D157 - The mapping is parked behind a switch, not deleted and not
shipped
- decisions/D158-the-fault-handler-always-had-the
- D158 - The fault handler always had the registers; it printed two
addresses
- decisions/D159-every-guest-call-was-misaligned-and
- D159 - Every guest call was misaligned, and nobody was looking
- decisions/D160-a-second-shim-found-the-logic-the-first
- D160 - A second shim found the logic the first one had absorbed
- decisions/D161-egui-chosen-for-the-shape-of-what-it
- D161 - egui, chosen for the shape of what it has to draw
- decisions/D162-a-settings-pane-for-a-subsystem-that
- D162 - A settings pane for a subsystem that does not exist is a dead
control
- decisions/D163-homebrew-pkgs-are-encrypted-measured
- D163 - Homebrew pkgs are encrypted, measured; pkg support
deferred
- decisions/D164-the-library-list-was-doing-file-i-o
- D164 - The library list was doing file I/O every frame
- decisions/D165-the-files-were-always-there-there-was
- D165 - The files were always there; there was nothing to hand them
over
- decisions/D166-the-main-bisection-lever-was-wired-to
- D166 - The main bisection lever was wired to nothing
- decisions/D167-the-video-output-handle-and-what-a
- D167 - The video-output handle, and what a large negative sweep is
worth
- decisions/D168-the-harvested-name-list-is-missing-the
- D168 - The harvested name list is missing the syscall family
- decisions/D169-three-names-a-video-out-handle-and-the
- D169 - Three names, a video-out handle, and the wall that has not
moved
- decisions/D170-cross-project-findings-taken-and-one
- D170 - Cross-project findings taken, and one declined
- decisions/D171-an-out-pointer-that-is-never-written
- D171 - An out-pointer that is never written has no signature
- decisions/D172-the-fault-handler-walks-the-frame-chain
- D172 - The fault handler walks the frame chain
- decisions/D173-call-sites-which-principle-9-asked-for
- D173 - Call sites, which principle 9 asked for and nothing
recorded
- decisions/D174-physical-memory-has-to-alias-itself
- D174 - Physical memory has to alias itself
- decisions/D175-the-filesystem-is-exonerated-and-four
- D175 - The filesystem is exonerated, and four walls are not one
wall
- decisions/D176-both-container-generations-parse-the
- D176 - Both container generations parse; the refusal was never
tested
- decisions/D177-abort-must-not-return-and-it-was
- D177 -
abort must not return, and it was reporting the
opposite of the truth
- decisions/D178-the-mapping-was-the-witness-not-the
- D178 - The mapping was the witness, not the culprit (resolves
D157)
- decisions/D179-findings-because-the-consumer-will-not
- D179 - Findings, because the consumer will not be a person
- decisions/D180-behavioural-provenance-because
- D180 - Behavioural provenance, because abstinence is not
enforceable
- decisions/D181-a-run-records-what-it-was-subject-to-so
- D181 - A run records what it was subject to, so a verdict can be
evidence
- decisions/D182-the-compatibility-record-is-the-other
- D182 - The compatibility record is the other half of the title
file
- decisions/D183-snprintf-s-refuses-rather-than-renders
- D183 - snprintf_s refuses rather than renders what it can
- decisions/D184-guards-for-the-instrumentation-because
- D184 - Guards for the instrumentation, because the tests were faithful
to the mistake
- decisions/D185-a-poisoned-stack-so-nobody-wrote-this
- D185 - A poisoned stack, so "nobody wrote this" can be measured
- decisions/D186-printf-because-the-guest-was-explaining
- D186 - printf, because the guest was explaining itself into a
void
- decisions/D187-the-stub-policy-reached-only-declared
- D187 - The stub policy reached only declared imports, and a conclusion
rested on it
- decisions/D188-the-shipped-symbol-database-is-loaded
- D188 - The shipped symbol database is loaded unless told
otherwise
- decisions/D189-the-vocabulary-was-never-missing-a-word
- D189 - The vocabulary was never missing a word; it was missing a
shape
- decisions/D190-one-allocation-path-because-alignment
- D190 - One allocation path, because alignment cannot be a special
case
- decisions/D191-the-harvest-walker-ignored-the-rule
- D191 - The harvest walker ignored the rule written to fix it
- decisions/D192-check-says-everything-before-it-fails
- D192 -
check says everything before it fails, and an
advisory tool cannot end the report
- decisions/D193-the-titles-carry-their-own-names-and
- D193 - The titles carry their own names, and the generator could not
spell one
- decisions/D194-the-run-dumps-what-the-guest-was
- D194 - The run dumps what the guest was pointing at
- decisions/D195-a-run-widens-the-grammar-it-searched
- D195 - A run widens the grammar it searched with
- decisions/D196-the-unknowns-are-a-queue-not-a-candour
- D196 - The unknowns are a queue, not a candour exercise
- decisions/D197-the-run-reports-the-fault-instead-of
- D197 - The run reports the fault, instead of leaving it in the
trace
- decisions/D198-findings-for-the-commonest-outcome-and
- D198 - Findings for the commonest outcome, and dumps for the ones
already implemented
- decisions/D199-a-guard-that-cannot-see-what-it-is
- D199 - A guard that cannot see what it is checking is worse than
none
- decisions/D200-the-submission-entry-point-takes-an
- D200 - The submission entry point takes an address, because a guest
has one
- decisions/D201-decision-numbers-are-checked-because
- D201 - Decision numbers are checked, because more than one session
assigns them
- decisions/D202-a-candidate-operand-field-may-not
- D202 - A candidate operand field may not overlap anything the encoding
table already reads
- decisions/D203-the-typed-buffer-format-table-is
- D203 - The typed-buffer format table is measured from the assembler,
both directions
- decisions/D204-typed-and-untyped-buffer-accesses-share
- D204 - Typed and untyped buffer accesses share one body, and
unmeasured formats are refused
- decisions/D205-operands-spelled-as-names-have-their
- D205 - Operands spelled as names have their codes measured, not
written down
- decisions/D206-vendor-documentation-is-consumed-freely
- D206 - Vendor documentation is consumed freely; the LLVM restriction
is about oracles, not licences
- decisions/D207-orbistoun-implements-obscene-s-protocol
- D207 - orbistoun implements obSCEne's protocol; it does not shape
it
- decisions/D208-the-repository-s-own-layout-audited
- D208 - The repository's own layout, audited once the tree stopped
being small
- decisions/D209-the-table-generators-are-a-crate-behind
- D209 - The table generators are a crate, behind a seam that replays a
recording
- decisions/D210-a-semaphore-handle-is-an-int-and-the
- D210 - A semaphore handle is an int, and the type says so now
- decisions/D211-the-call-recorder-is-the-dispatch-ring
- D211 - The call recorder is the dispatch ring; the crate declaring one
is deleted
- decisions/D212-a-language-model-service-in-a-crate
- D212 - A language-model service, in a crate that knows nothing about
orbistoun
- decisions/D213-harvesting-is-categorised-by-what-it
- D213 - Harvesting is categorised by what it observed, and the tiers
are checked
- decisions/D214-proposals-are-paired-with-an-oracle-the
- D214 - Proposals are paired with an oracle; the first one asks for
words, not names
- decisions/D215-the-toolbar-captures-the-window-and
- D215 - The toolbar captures the window, and says that is what it
captures
- decisions/D216-a-pattern-s-size-is-computed-once-not
- D216 - A pattern's size is computed once, not per candidate
- decisions/D217-the-readable-window-was-a-page-low-and
- D217 - The readable window was a page low, and the wall had been
unreadable because of it
- decisions/D218-two-experiments-that-eliminated-four
- D218 - Two experiments that eliminated four things and confirmed
nothing
- decisions/D219-the-inference-runtime-is-downloaded-not
- D219 - The inference runtime is downloaded, not compiled in; and a
proposer samples
- decisions/D220-the-diagnostics-share-plumbing-and-one
- D220 - The diagnostics share plumbing, and one of them is dyed
banknotes
- decisions/D221-every-environment-variable-is-declared
- D221 - Every environment variable is declared in one crate
- decisions/D222-a-build-says-which-build-it-is-and-the
- D222 - A build says which build it is, and the field for it was never
populated
- decisions/D223-three-cheap-diagnostics-and-a
- D223 - Three cheap diagnostics, and a hypothesis nobody had
raised
- decisions/D224-mapping-the-faulting-address-moved-the
- D224 - Mapping the faulting address moved the wall, and the reading
was wrong
- decisions/D225-asking-the-probe-is-a-live-oracle-and
- D225 - Asking the probe is a live oracle, and the answer travels with
its caveat
- decisions/D226-the-correction-to-d224-the-address-was
- D226 - The correction to D224: the address was wrong after all
- decisions/D227-principle-3-applies-to-the-tools-and-an
- D227 - Principle 3 applies to the tools, and an intervention says so
on the line
- decisions/D228-the-library-folder-was-resolved-against
- D228 - The library folder was resolved against the launch directory,
which is not a setting
- decisions/D229-a-plant-could-reach-only-offset-zero
- D229 - A plant could reach only offset zero, and a fill silently
erased it
- decisions/D230-nothing-could-change-what-an-unnamed
- D230 - Nothing could change what an unnamed function answers, so an
elimination had never been measured
- decisions/D231-a-chooser-is-slower-than-running
- D231 - A chooser is slower than running everything it would choose
between
- decisions/D232-a-fault-that-moves-and-a-guest-broken
- D232 - A fault that moves and a guest broken earlier are the same
address and opposite results
- decisions/D233-the-subject-of-a-fault-is-where-the
- D233 - The subject of a fault is where the guest died, not what it
called
- decisions/D234-a-forced-answer-reaches-an-implemented
- D234 - A forced answer reaches an implemented function, and the
implementation still runs
- decisions/D235-the-initialiser-tags-are-parsed-and-the
- D235 - The initialiser tags are parsed, and the answer was that there
are none
- decisions/D236-orbistoun-answers-the-probe-s-protocol
- D236 - orbistoun answers the probe's protocol, and is a stand-in for
itself
- decisions/D237-address-translation-was-only-ever
- D237 - Address translation was only ever implemented for signed
containers
- decisions/D238-the-limit-that-decides-a-verdict-is-a
- D238 - The limit that decides a verdict is a call budget; the clock
stays as a backstop
- decisions/D239-two-counters-one-quantity-and-the
- D239 - Two counters, one quantity, and the number a person read was
wrong by ten
- decisions/D240-the-numbers-in-the-documentation-are
- D240 - The numbers in the documentation are generated, and a check
fails when they drift
- decisions/D241-one-lock-per-module-for-one-process
- D241 - One lock per module for one process-wide table, and the run
that measured nothing
- decisions/D242-a-name-enters-the-database-only-if-this
- D242 - A name enters the database only if this repository can
re-derive it
- decisions/D243-the-work-list-removed-what-a-run-solved
- D243 - The work list removed what a run solved, not what anything
could name
- decisions/D244-an-illegal-instruction-has-an-address
- D244 - An illegal instruction has an address, and it is not one the
guest asked for
- decisions/D245-the-probe-s-by-name-census-was-arriving
- D245 - The probe's by-name census was arriving and going nowhere
- decisions/D246-an-existence-fact-is-graded-like-every
- D246 - An existence fact is graded like every other fact, and only the
target may name
- decisions/D247-orbistoun-read-modules-by-a-path-the
- D247 - orbistoun read modules by a path the console does not use
- decisions/D248-an-unchanged-fault-yields-two-different
- D248 - An unchanged fault yields two different offsets, so it read as
disagreement
- decisions/D249-nothing-the-guest-calls-answers-with
- D249 - Nothing the guest calls answers with the base, through any
channel
- decisions/D250-a-guest-gets-writable-storage-and-it-is
- D250 - A guest gets writable storage, and it is never the title's own
directory
- decisions/D251-the-console-s-filesystem-is-a-knowledge
- D251 - The console's filesystem is a knowledge file, and a title's
data layers over it
- decisions/D252-a-failed-open-must-not-look-like-a
- D252 - A failed open must not look like a descriptor
- decisions/D253-the-model-was-told-the-wrong-libraries
- D253 - The model was told the wrong libraries, and earned names from
ones it was never shown
- decisions/D254-a-wrong-proposal-is-free-on-disk-and
- D254 - A wrong proposal is free on disk and expensive in the loop
- decisions/D255-thirty-five-per-cent-of-what-the-model
- D255 - Thirty-five per cent of what the model proposed was already in
the shipped word list
- decisions/D256-the-probe-s-worklist-taken-from-the-top
- D256 - The probe's worklist, taken from the top
- decisions/D257-a-name-that-does-not-say-how-it-was
- D257 - A name that does not say how it was found cannot be used
- decisions/D258-the-vocabulary-was-never-the-gap-the
- D258 - The vocabulary was never the gap; the shapes were
- decisions/D259-two-missing-words-made-seven-confirmed
- D259 - Two missing words made seven confirmed names
unreproducible
- decisions/D260-the-audit-reads-the-grammar-the-binary
- D260 - The audit reads the grammar the binary was built with, not the
one on disk
- decisions/D261-shapes-are-the-binding-constraint-not
- D261 - Shapes are the binding constraint, not vocabulary, by three to
one
- decisions/D262-repeated-learned-became-affordable-when
- D262 - Repeated
learned became affordable when the list
shrank, and nobody noticed
- decisions/D263-a-diagnostic-clause-is-read-from-the
- D263 - A diagnostic clause is read from the right, so a target may be
qualified
- decisions/D264-a-shape-has-two-costs-and-they-rank
- D264 - A shape has two costs, and they rank differently
- decisions/D265-the-model-gets-its-own-binary-not-a
- D265 - The model gets its own binary, not a place in the CLI
- decisions/D266-a-round-s-cost-depends-on-which
- D266 - A round's cost depends on which position it grows, by a factor
of twenty
- decisions/D267-a-second-guess-at-where-data-lives-put
- D267 - A second guess at where data lives put a downloaded runtime in
the repository
- decisions/D268-floating-point-arguments-never-reached
- D268 - Floating-point arguments never reached an implementation
- decisions/D269-a-mount-replaces-and-a-layer-stacks-and
- D269 - A mount replaces and a layer stacks, and the order cost a title
its textures
- decisions/D270-the-c-library-arrived-as-one-batch
- D270 - The C library arrived as one batch because it was one
absence
- decisions/D271-an-error-code-in-a-boolean-reads-as-true
- D271 - An error code in a boolean reads as true
- decisions/D272-two-shapes-a-guest-hands-over-and-both
- D272 - Two shapes a guest hands over, and both were got wrong
- decisions/D273-a-count-an-offset-and-a-descriptor-are
- D273 - A count, an offset and a descriptor are read as data, not
tested against a table
- decisions/D274-the-first-call-into-guest-code-rather
- D274 - The first call into guest code, rather than out of it
- decisions/D275-a-clock-that-does-not-advance-reads-as
- D275 - A clock that does not advance reads as a sleep that returned
instantly
- decisions/D276-the-expensive-half-of-a-watchpoint
- D276 - The expensive half of a watchpoint, built because the cheap
half ran out
- decisions/D277-a-data-breakpoint-fires-after-the
- D277 - A data breakpoint fires after the access, and pretending
otherwise would be a lie
- decisions/D278-a-watchpoint-that-reads-its-own-address
- D278 - A watchpoint that reads its own address traps itself
- decisions/D279-a-dump-is-binary-and-the-size-guard-was
- D279 - A dump is binary, and the size guard was measuring the wrong
thing
- decisions/D280-the-first-six-steps-of-check-could-hide
- D280 - The first six steps of
check could hide the other
ten
- decisions/D281-five-crates-export-a-registration
- D281 - Five crates export a registration nothing calls
- decisions/D282-one-body-for-two-arities-read-an
- D282 - One body for two arities read an argument it was never
passed
- decisions/D283-the-wall-needed-two-things-right-at
- D283 - The wall needed two things right at once, and the sweep varied
one at a time
- decisions/D284-a-contract-can-be-measured-without
- D284 - A contract can be measured without knowing what the function
means
- decisions/D285-the-shape-that-spells-a-verb-over-two
- D285 - The shape that spells a verb over two learned nouns
- decisions/D286-the-sweep-gains-a-second-dimension-and
- D286 - The sweep gains a second dimension, and it is a condition
rather than a sentinel
- decisions/D287-naming-a-function-silently-breaks-every
- D287 - Naming a function silently breaks every experiment aimed at its
hash
- decisions/D288-the-sweep-kept-its-own-list-of
- D288 - The sweep kept its own list of diagnostics, and it was already
wrong
- decisions/D289-the-plan-gets-a-runner-and-an-out
- D289 - The plan gets a runner, and an out-parameter finding follows
itself through
- decisions/D290-every-floating-point-function-works-and
- D290 - Every floating-point function works and every one is reported
as missing
- decisions/D291-what-the-sweep-measured-becomes-a
- D291 - What the sweep measured becomes a knowledge entry, and what it
did not becomes an assumption
- decisions/D292-the-merge-rule-moves-to-the-crate-that
- D292 - The merge rule moves to the crate that owns the format
- decisions/D293-the-dispatcher-and-the-naming-loop
- D293 - The dispatcher and the naming loop become two crates
- decisions/D294-the-first-function-implemented-from-a
- D294 - The first function implemented from a contract the loop
measured
- decisions/D295-a-stub-policy-that-can-write-so-the
- D295 - A stub policy that can write, so the loop stops needing a
person to type Rust
- decisions/D296-three-tiers-of-automatic-fix-and-why
- D296 - Three tiers of automatic fix, and why the third is the
smallest
- decisions/D297-the-learned-file-becomes-a-record-of
- D297 - The learned file becomes a record of measurements, so it can be
sent to somebody
- decisions/D298-verification-runs-against-a-machine
- D298 - Verification runs against a machine that has learned
nothing
- decisions/D299-finding-which-answer-the-guest
- D299 - Finding which answer the guest dereferenced, rather than
reasoning about it
- decisions/D300-one-concept-give-the-guest-a-region-and
- D300 - One concept: give the guest a region, and say how it
arrives
- decisions/D301-further-saturates-and-a-comparison
- D301 -
FURTHER saturates, and a comparison needs headroom
to be a comparison
- decisions/D302-make-the-fix-loop-look-like-the-naming
- D302 - Make the fix loop look like the naming loop: oracle first,
generator second
- decisions/D303-the-corpus-is-the-oracle-the-probe-is
- D303 - The corpus is the oracle; the probe is one member of it
- decisions/D304-the-repair-searched-for-an-index-it
- D304 - The repair searched for an index it could compute
- decisions/D305-a-plain-name-is-a-nid-nobody-hashed-yet
- D305 - A plain name is a NID nobody hashed yet
- decisions/D306-the-payloads-take-their-world-from-rdi
- D306 - The payloads take their world from
rdi, and the
stack says nothing
- decisions/D307-an-import-that-names-data-was-getting-a
- D307 - An import that names data was getting a function
- decisions/D308-ask-the-guest-which-field-it-wants
- D308 - Ask the guest which field it wants, rather than guessing the
structure
- decisions/D309-the-comparison-invented-a-position-the
- D309 - The comparison invented a position the display half refuses to
invent
- decisions/D310-the-window-and-the-guest-are-different
- D310 - The window and the guest are different processes, so the shell
button had nowhere to go
- decisions/D311-the-shell-holds-meanings-and-refuses-to
- D311 - The shell holds meanings and refuses to hold the vendor's
numbers
- decisions/D312-a-run-helped-by-named-overrides-was
- D312 - A run helped by named overrides was recorded as an honest
measurement
- decisions/D313-one-word-for-the-shell-and-the-window
- D313 - One word for the shell, and the window had already taken
it
- decisions/D314-an-argument-beats-a-setting-and
- D314 - An argument beats a setting, and contradictions are refused
rather than resolved
- decisions/D315-a-submission-is-a-bundle-of-claims-and
- D315 - A submission is a bundle of claims, and the receiver counts
them itself
- decisions/D316-the-decision-number-was-allocated-by-a
- D316 - The decision number was allocated by a convention that
races
- decisions/D317-both-sides-are-vulkan-was-an-assumption
- D317 - "Both sides are Vulkan" was an assumption, and it happened to
be true
- decisions/D318-the-overlay-is-blocked-earlier-than
- D318 - The overlay is blocked earlier than "cross-process
presentation"
- decisions/D319-a-gate-that-cannot-be-scoped-cannot-be
- D319 - A gate that cannot be scoped cannot be run in a shared
tree
- decisions/D320-a-curated-list-regrew-to-sixty-seven
- D320 - A curated list regrew to sixty-seven times its size, and only
the clock noticed
- decisions/D321-three-things-were-built-and-inert-and
- D321 - Three things were built and inert, and one of them could not be
built at all
- decisions/D322-a-generated-patch-is-safe-because
- D322 - A generated patch is safe because promotion is the verification
step
- decisions/D323-data-imports-get-storage-not-a-stub
- D323 - Data imports get storage, not a stub
- decisions/D324-nobody-picks-a-test-address-at-either
- D324 - Nobody picks a test address, at either level
- decisions/D325-the-third-place-nobody-wrote-and
- D325 - The third place nobody wrote, and proving the poison fired
- decisions/D326-a-controller-subsystem-that-stops-at
- D326 - A controller subsystem that stops at the guest, and says
where
- decisions/D327-categories-along-a-row-children-down-a
- D327 - Categories along a row, children down a column
- decisions/D328-a-promotion-generated-from-a
- D328 - A promotion generated from a measurement, and the one field it
invented
- decisions/D329-the-one-table-left-hand-copied-and-the
- D329 - The one table left hand-copied, and the rule that seemed to
forbid generating it
- decisions/D330-the-harvest-could-undo-the-curation-and
- D330 - The harvest could undo the curation, and a one-line list read
as seventy-six words
- decisions/D331-the-diagnostic-that-said-something-was
- D331 - The diagnostic that said something was the one the summary
dropped
- decisions/D332-a-record-with-no-honest-baseline-and
- D332 - A record with no honest baseline, and the parse test that
failed for it
- decisions/D333-the-model-that-costs-nothing-to-set-up
- D333 - The model that costs nothing to set up, and the two things not
copied with it
- decisions/D334-measuring-the-engines-took-three-tries
- D334 - Measuring the engines took three tries, and the first two
ranked the wrong one
- decisions/D335-the-benchmark-was-wrong-three-times-and
- D335 - The benchmark was wrong three times, and the third nearly
retired a working engine
- decisions/D336-no-think-suppressed-the-reasoning-and
- D336 -
/no_think suppressed the reasoning and not the
tags
- decisions/D340-the-pad-library-exports-both-spellings
- D340 - The pad library exports both spellings, and both are
imported
- decisions/D341-cross-port-key-conflicts-were-invisible
- D341 - Cross-port key conflicts were invisible, and a keyboard could
not move a stick
- decisions/D342-a-shape-can-be-disabled-and-the-two
- D342 - A shape can be disabled, and the two names that cost
- decisions/D343-enter-at-main-and-the-payloads-start
- D343 - Enter at
main and the payloads start working
- decisions/D344-guest-threads-are-asked-to-stop-not
- D344 - Guest threads are asked to stop, not made to
- decisions/D345-input-crosses-the-process-boundary
- D345 - Input crosses the process boundary before anything can read
it
- decisions/D346-a-console-has-users-and-one-of-their
- D346 - A console has users, and one of their names reaches a guest
unencoded
- decisions/D347-a-record-named-after-a-scratch-directory
- D347 - A record named after a scratch directory
- decisions/D348-klogsrv-prints-its-own-banner
- D348 - klogsrv prints its own banner
- decisions/D349-the-posix-spellings-were-unserved-and
- D349 - The POSIX spellings were unserved, and they are the same
functions
- decisions/D350-sysctl-refuses-what-it-does-not-know
- D350 -
sysctl refuses what it does not know, and says
what was asked
- decisions/D351-the-sweep-could-not-judge-a-guest-that
- D351 - The sweep could not judge a guest that never faults
- decisions/D352-the-harvest-took-names-because-the-work
- D352 - The harvest took names because the work was naming
- decisions/D353-the-harvest-is-a-command-and-writing-it
- D353 - The harvest is a command, and writing it twice found a bug
- decisions/D354-a-revision-the-file-states-is-a-claim-a
- D354 - A revision the file states is a claim; a revision the checkout
states is a fact
- decisions/D355-a-turn-that-measured-a-contract-and
- D355 - A turn that measured a contract and wrote nothing
- decisions/D356-the-dispatcher-read-what-crashed-and
- D356 - The dispatcher read what crashed and never what we had written
down as unknown
- decisions/D357-the-loop-can-close-a-question-when-the
- D357 - The loop can close a question when the discriminator is
arithmetic
- decisions/D358-the-loop-writes-down-what-it-worked-out
- D358 - The loop writes down what it worked out
- decisions/D359-entering-at-main-skips-the
- D359 - Entering at
main skips the initialisation the
program needed
- decisions/D360-bss-markers-that-name-themselves-and
- D360 -
.bss markers that name themselves, and what they
found
- decisions/D361-the-documentation-route-is-closed-not
- D361 - The documentation route is closed, not untried
- decisions/D362-concat-defeats-an-implicit-format
- D362 -
concat! defeats an implicit format capture
- decisions/D363-a-compile-time-constant-fails-as-though
- D363 - A compile-time constant fails as though the source were
broken
- decisions/D364-a-va-list-is-a-cursor-so-the-v-forms
- D364 - A va_list is a cursor, so the v-forms render what the register
forms cannot
- decisions/D365-the-handoff-structure-answers-by-being
- D365 - The handoff structure answers by being asked
- decisions/D366-scekerneldlsym-is-how-a-payload-gets
- D366 - sceKernelDlsym is how a payload gets its C library, and the
answer is a stub we already had
- decisions/D367-a-symbol-is-declared-where-it-is
- D367 - A symbol is declared where it is imported, not where its code
lives
- decisions/D368-handoff-field-two-is-a-pointer-and-what
- D368 - Handoff field two is a pointer, and what the unknown fields
hold is a setting
- decisions/D369-a-marker-nobody-decodes-is-arithmetic
- D369 - A marker nobody decodes is arithmetic somebody does by
hand
- decisions/D370-a-constant-one-crate-hardcodes-is
- D370 - A constant one crate hardcodes is checked by the crate that
holds the table
- decisions/D371-files-and-sockets-share-one-descriptor
- D371 - Files and sockets share one descriptor table, because a guest
has one
- decisions/D372-where-the-shared-thing-is-what-is-under
- D372 - Where the shared thing is what is under test, a lock is the
fix
- decisions/D373-asking-must-not-take-and-waiting-must
- D373 - Asking must not take, and waiting must not hold
- decisions/D374-the-checkout-is-a-newer-freebsd-than
- D374 - The checkout is a newer FreeBSD than the target
- decisions/D375-orbistoun-runs-a-payload-built-with-the
- D375 - orbistoun runs a payload built with the real toolchain
- decisions/D376-a-runtime-s-globals-are-named-and-the
- D376 - A runtime's globals are named, and the last wall is a syscall
gadget
- decisions/D377-a-syscall-gadget-is-not-a-function
- D377 - A syscall gadget is not a function
- decisions/D378-the-syscall-boundary-built-and-not-yet
- D378 - The syscall boundary, built and not yet reached
- decisions/D379-a-setting-consulted-nowhere-for-the
- D379 - A setting consulted nowhere, for the fourth time
- decisions/D380-a-fault-in-our-own-code-should-say
- D380 - A fault in our own code should say where in our own code
- decisions/D381-the-dispatch-path-runs-on-the-guest-s
- D381 - The dispatch path runs on the guest's stack
- decisions/D382-ftpsrv-wants-to-be-root-and-that-is-a
- D382 - ftpsrv wants to be root, and that is a wall worth having
- decisions/D383-conforming-is-not-the-same-as-compatible
- D383 - Conforming is not the same as compatible
- decisions/D384-a-gadget-is-not-reached-from-a-call
- D384 - A gadget is not reached from a call site a compiler wrote
- decisions/D385-what-a-harvest-skips-has-to-be-counted
- D385 - What a harvest skips has to be counted, or the section is a
lie
- decisions/D386-the-seventh-argument-is-on-the-stack
- D386 - The seventh argument is on the stack, and nothing was reading
it
- decisions/D387-a-guest-thread-s-stack-is-guest-memory
- D387 - A guest thread's stack is guest memory, and the diagnostics
could not see it
- decisions/D388-a-set-says-which-and-never-when-and
- D388 - A set says which and never when, and when was the
whole question
- decisions/D389-dev-klog-has-something-true-in-it-and
- D389 -
/dev/klog has something true in it, and the
accuracy caveat that comes with it
- decisions/D390-ask-the-guest-which-fields-it-uses-one
- D390 - Ask the guest which fields it uses, one poisoned field per
run
- decisions/D391-what-real-hardware-said-and-which-of-it
- D391 - What real hardware said, and which of it orbistoun had
wrong
- decisions/D392-a-stub-for-every-import-makes-does-this
- D392 - A stub for every import makes "does this symbol exist"
unanswerable
- decisions/D393-a-capital-letter-is-a-different-symbol
- D393 - A capital letter is a different symbol
- decisions/D394-the-machine-is-one-setting-not-five
- D394 - The machine is one setting, not five constants
- decisions/D395-not-derivable-is-not-the-same-as-not
- D395 - Not derivable is not the same as not measurable
- decisions/D396-a-log-written-after-the-guest-stops-is
- D396 - A log written after the guest stops is a log no guest can
read
- decisions/D397-the-kernel-s-own-version-is-a-setting
- D397 - The kernel's own version is a setting with no default
- decisions/D398-the-hardware-trip-happened-and-it-moved
- D398 - The hardware trip happened, and it moved seven
placeholders
- decisions/D399-the-payloads-were-never-handed-what
- D399 - The payloads were never handed what they read, and the
instrument could not see it
- decisions/D400-the-payload-builds-its-own-syscall
- D400 - The payload builds its own syscall entry, and this hands it
something with no inside
- decisions/D401-a-guest-that-talks-to-the-kernel
- D401 - A guest that talks to the kernel directly left no trace on the
work list
- decisions/D402-a-stub-that-returns-from-exit-turns-a
- D402 - A stub that returns from
exit turns a clean
shutdown into a crash
- decisions/D403-the-call-that-was-blocking-every
- D403 - The call that was blocking every payload, and what it says the
machine is
- decisions/D404-the-wall-behind-649-firmware-specific
- D404 - The wall behind 649: firmware-specific address arithmetic
- decisions/D405-the-console-answered-the-sysctl-probe
- D405 - The console answered the sysctl probe, and it says 12.40
- decisions/D406-a-firmware-skeleton-crate-for-guests
- D406 - A firmware skeleton crate, for guests that reach past the
interface
- decisions/D407-word-zero-is-getpid-and-libkernel-is
- D407 - Word zero is getpid, and libkernel is laid out by measured
vaddr
- decisions/D408-the-handoff-measured-whole-on-a-console
- D408 - The handoff, measured whole on a console, and made faithful
here
- decisions/D409-layout-as-a-testable-plan-console
- D409 - Layout as a testable plan, console profiles, port reporting,
and vaddr provenance
- decisions/D410-the-console-confirmed-five-more-export
- D410 - The console confirmed five more export vaddrs, and validated
the whole base+vaddr model
- decisions/D411-diagnosis-of-the-image-0x2708-wall-in
- D411 - Diagnosis of the
image+0x2708 wall in
klog.elf: kernel_copyout, setsockopt, and high-half
kpipe_addr
- decisions/D412-syscall-477-mmap-implemented-and-wired
- D412 - Syscall 477 (
mmap) implemented and wired to the
syscall table
- decisions/D413-emulation-of-the-kernel-escape-r-w-pipe
- D413 - Emulation of the kernel escape R/W pipe and dynamic symbol
resolution
- decisions/D414-the-test-corpus-made-a-verb-a-manifest
- D414 - The test corpus, made a verb: a manifest of sources, fetched
and recorded on demand
- decisions/D415-the-compatibility-table-as-a-tracked
- D415 - The compatibility table as a tracked markdown file, generated
from the records
- decisions/D416-four-hle-fixes-from-the-hardware-vs
- D416 - Four HLE fixes from the hardware-vs-orbistoun obSCEne diff
- decisions/D417-three-more-hle-fixes-from-the-same-diff
- D417 - Three more HLE fixes from the same diff: thread join, mutex
type, audio init
- decisions/D418-the-census-control-failed-because
- D418 - The census control failed because obSCEne's canary leaked into
our symbol database
- decisions/D419-five-more-libkernel-vaddrs
- D419 - Five more libkernel vaddrs behaviourally confirmed from the
second payload run
- decisions/D420-scekernelgetsystemswversion-answers-13
- D420 - sceKernelGetSystemSwVersion answers 13.09, which is not the
12.40 firmware
- decisions/D421-the-software-version-is-a-profile
- D421 - The software version is a profile setting, like the firmware,
not a kernel constant
- decisions/D422-the-console-s-writable-device-paths-are
- D422 - The console's writable device paths are a per-title sandbox, in
the overlay already built
- decisions/D423-the-sandbox-is-one-entry-point-in
- D423 - The sandbox is one entry point in orbistoun-fs, not
orchestration in a consumer
- decisions/D424-the-flip-queue-is-a-counter-that
- D424 - The flip queue is a counter that completes on submit, and it
unblocked the whole suite
- decisions/D425-scevideooutgetresolutionstatus-presents
- D425 - sceVideoOutGetResolutionStatus presents 1080p; the skip is a
held output, not a headless one
- decisions/D426-video-out-refuses-with-its-own-error
- D426 - Video-out refuses with its own error family, and refuses a
second open of a held output
- decisions/D427-the-gpu-subsystem-starts-at-the-command
- D427 - The GPU subsystem starts at the command builders: a PM4 writer,
and the two dispatch calls
- decisions/D428-libscesysmodule-and-the-real-title
- D428 - libSceSysmodule, and the real-title walls triaged
- decisions/D429-scekernelreservevirtualrange-and-the
- D429 - sceKernelReserveVirtualRange, and the boundary the real titles
reach
- decisions/D430-reentrant-guest-execution-and-its-first
- D430 - Reentrant guest execution, and its first user:
std::call_once
- decisions/D431-the-c-runtime-threading-family-and-a
- D431 - The C-runtime threading family, and a metric that fell as it
was fixed
- decisions/D432-the-fault-report-carries-the-faulting
- D432 - The fault report carries the faulting instruction, and what the
shared wall actually is
- decisions/D433-guest-thread-local-storage-the-block-is
- D433 - Guest thread-local storage: the block is built, and Windows
will not keep the base
- decisions/D434-the-windows-thread-pointer-backstop-and
- D434 - The Windows thread-pointer backstop, and PPSA28061 past its TLS
wall
- decisions/D435-libsceult-mutexes-and-condition
- D435 - libSceUlt mutexes and condition variables, and the wall that
turned out to be online
- decisions/D436-the-remaining-title-walls-are-one-class
- D436 - The remaining title walls are one class: a guest allocation
returning null, and it needs hardware
- decisions/D437-the-hardware-memory-data-was-already
- D437 - The hardware memory data was already captured; the map does not
start at zero
- decisions/D438-cross-section-diff-against-hardware
- D438 - Cross-section diff against hardware: placeholder error codes
replaced with the measured ones
- decisions/D439-cross-section-hardware-diff-the-system
- D439 - Cross-section hardware diff: the system-wide divergences worth
fixing
- decisions/D440-the-hardware-cross-section-diff-is
- D440 - The hardware cross-section diff is mined out for clean
fixes
- decisions/D441-dlsym-handle-validation-and-sysmodule
- D441 - dlsym handle validation and sysmodule id-0, from user direction
on the D440 tail
- decisions/D442-the-flexible-memory-shared-allocator
- D442 - The flexible-memory "shared allocator" theory was aimed at the
wrong titles
- decisions/D443-ppsa02664-s-allocator-wall-was
- D443 - PPSA02664's allocator wall was orbistoun's policy region
sitting on the guest's heap
- decisions/D444-obscene-is-orbistoun-s-oracle-now-and
- D444 - obSCEne is orbistoun's oracle now, and it measured the
flexible-memory bug exactly
- decisions/D445-a-readable-guard-above-the-stack-and
- D445 - A readable guard above the stack, and obSCEne now runs its
whole suite under orbistoun
- decisions/D446-scekernelvirtualquery-now-sees-the
- D446 - sceKernelVirtualQuery now sees the guest's own image and
stack
- decisions/D447-sysctlbyname-answers-the-knobs-it-can
- D447 - sysctlbyname answers the knobs it can source, and
kern.osrelease stops being refused
- decisions/D448-the-obscene-oracle-s-clean-orbistoun
- D448 - The obSCEne oracle's clean orbistoun bugs are mined out; the
rest are by design
- decisions/D449-ppsa02664-regressed-to-the-allocator
- D449 - PPSA02664 regressed to the allocator wall; the
policy-region/reserve collision is the mechanism (open)
- decisions/D450-ppsa02664-s-two-walls-are-a-thread
- D450 - PPSA02664's "regression" is a thread race between two
concurrent walls, not a regression
- decisions/D451-ppsa21564-boots-the-mspace
- D451 - PPSA21564 boots once the sceLibcMspace allocator family (and
bcmp) answer real values
- decisions/D452-scepthreadgetthreadid-and-ppsa21564
- D452 - scePthreadGetthreadid answers the thread's handle, and
PPSA21564 reaches 0% stubs
- decisions/D453-posix-tls-keys-tbb-unblocked
- D453 - POSIX thread-specific-data keys; PPSA21564's TBB scheduler
stops aborting
- decisions/D454-time-and-fgets-astro-reaches-main
- D454 - localtime/asctime and fgets carry PPSA21564 into main(); it
prints, parses its args, and walls on a threading assert
- decisions/D455-posix-unnamed-semaphores
- D455 - POSIX unnamed semaphores (sem_init family); the Cond.cpp wall
is not a traced HLE call
- decisions/D456-fault-reports-name-privileged-instructions
- D456 - Fault reports name privileged instructions and call an emulator
bug an emulator bug
- decisions/D457-fault-reports-name-the-null-base-register
- D457 - Fault reports name the null base register, not just dump
sixteen
- decisions/D458-execute-breakpoints-capture-call-arguments
- D458 - Execute breakpoints, so a guest-computed value can be read
where it is used
- decisions/D459-trace-records-what-a-call-answered
- D459 - The call trace records what each call answered, not only what
it was asked
- decisions/D460-map-commits-into-a-reserved-range
- D460 - Mapping direct memory commits into an existing reservation, it
does not reserve again
- decisions/D461-random-device-is-deterministic
- D461 - std::random_device is deterministic here, on purpose
- decisions/D462-reservation-failures-are-surfaced
- D462 - A reservation the guest could not make is named in the run
report
- decisions/D463-mapping-arena-clear-of-data-blocks
- D463 - The guest mapping arena is moved clear of the thunk data
blocks
- decisions/D464-spawned-threads-get-their-own-tls
- D464 - Spawned guest threads get their own thread-local storage
- decisions/D465-blocking-wait-event-flag
- D465 - sceKernelWaitEventFlag blocks on the event-flag condvar rather
than being absent
- decisions/D466-packed-typed-buffer-formats-by-kind
- D466 - Narrow typed-buffer formats translate through a packed path,
built up one kind at a time
- decisions/D467-half-floats-widen-through-a-16-bit-type
- D467 - A packed half widens to a float through a real 16-bit float
type, not a hand-rolled unpack
- decisions/D468-the-ctype-tables-are-measured-not-transcribed
- D468 - The ctype tables are measured off hardware, because the
documented layout is the wrong one
- decisions/D469-the-getpctype-wall-was-misattributed
- D469 - PPSA02664's wall is not
_Getpctype; the trace was
naming the wrong function
- decisions/D470-a-run-that-wrote-no-trace-reports-nothing
- D470 - A run that wrote no trace reports nothing, rather than
reprinting an old one
- decisions/D471-the-fault-reporter-checks-before-it-reads
- D471 - The fault reporter checks the page before reading it, because
an execute fault puts
rip in the hole
- decisions/D472-published-interfaces-are-ported-in-bulk
- D472 - Published interfaces are ported in bulk; only vendor code is
found one wall at a time
- decisions/D473-a-throw-is-a-named-stop-while-there-is-no-unwinder
- D473 - Without an unwinder, a C++ throw is a named stop rather than a
return
- decisions/D474-implemented-and-finished-are-counted-separately
- D474 - "Implemented" and "finished" are different states, and the
report counts them separately
- decisions/D475-the-posix-prefixed-family-delegates-to-its-twin
- D475 - The
posix_-prefixed exports delegate to their
unprefixed twins, on an assumed footing
- decisions/D476-errno-carries-published-values-in-a-named-tier
- D476 - The
errno table carries published values too, in a
tier that says so
- decisions/D477-one-sysctlbyname-merged-from-two
- D477 - One
sysctlbyname, merged from the two that were
both live
- decisions/D478-a-differential-result-is-its-own-tier
- D478 - A differential result gets its own tier, because it is not a
measurement
- decisions/D479-the-differential-runs-against-whatever-is-reachable
- D479 - The differential runs against whatever published implementation
is reachable, and names it
- decisions/D480-the-sign-extension-claim-is-withdrawn
- D480 - The sign-extension divergence is withdrawn: it was the probe's
cast, not the console's
- decisions/D481-a-measured-value-that-is-not-a-property-cannot-be-claimed
- D481 - A measured value that is not a property of the interface gets
its own list
- decisions/D482-a-title-module-is-found-by-the-name-that-imports-it
- D482 - A title's own module is found by the name that imports it, not
by a path
- decisions/D483-attribution-is-half-of-what-identifies-an-import
- D483 - Attribution is half of what identifies an import, and
libc is the title's
- decisions/D484-one-stub-table-for-every-module-not-one-each
- D484 - One stub table across every module, not one table each
- decisions/D485-a-measured-value-is-not-automatically-a-constant
- D485 - A measured value is not automatically a constant, and the
counter proves it
- decisions/D486-a-measured-register-holds-configuration-and-status-and-only-one-is-reproducible
- D486 - A measured register holds configuration and status, and only
one is reproducible
- decisions/D487-a-run-is-not-reproducible-so-the-verdict-needs-a-noise-floor
- D487 - A run is not reproducible, so the progress verdict needs a
noise floor
- decisions/D488-the-titles-modules-were-placed-on-the-guests-own-heap-arena
- D488 - The title's modules were placed on the guest's own heap
arena
- decisions/D489-placing-a-module-does-nothing-until-it-is-bound-protected-and-located
- D489 - Placing a module does nothing until it is bound, protected and
located
- decisions/D490-a-shared-table-needs-shared-labels
- D490 - A shared stub table needs shared labels, or the trace names the
wrong function
- decisions/D491-the-null-is-a-module-global-and-it-is-not-a-missing-constructor
- D491 - The null is a module global, and it is not a missing
constructor
- decisions/D492-retail-title-modules-do-not-export-module-start
- D492 - Retail title modules do not export
module_start
- decisions/D493-the-null-is-bss-and-binding-made-the-answer-invisible
- D493 - The null is
.bss, and binding made the answer
invisible
- decisions/D494-bound-calls-were-always-observable
- D494 - Bound calls were always observable, and only two of five are
called
- decisions/D495-the-game-asks-for-its-modules-by-name-and-load-start-starts-nothing
- D495 - The game asks for its modules by name, and
LoadStartModule starts nothing
- decisions/D496-these-modules-declare-no-code-to-run-at-load
- D496 - These modules declare no code to run at load, and
DT_FINI is why that is a finding
- decisions/D497-half-the-encoder-probes-measure-the-probes-own-initialiser
- D497 - Half the encoder probes measure the probe's own
initialiser
- decisions/D498-strtol-converts-the-zero-in-0x
- D498 -
strtol converts the zero in "0x", and
a stale work item is not a work item
- decisions/D499-the-residual-oscillation-is-one-allocation-round
- D499 - The residual oscillation is one allocation round, and it moves
the verdict again
- decisions/D500-the-lifecycle-is-implemented-and-the-data-path-is-not
- D500 - Every A/V/input subsystem implements the lifecycle and not the
data path
- decisions/D501-the-citations-were-already-here-in-the-wrong-field
- D501 - The citations were already here, in the wrong field
- decisions/D502-ten-outstanding-measurements-were-never-going-to-be-claimed
- D502 - Ten outstanding measurements were never going to be
claimed
- decisions/D503-seven-hardware-claims-from-data-already-in-hand
- D503 - Seven hardware claims from data already in hand, and nine more
non-claims
- decisions/D504-the-current-generations-graphics-api-declared-as-names
- D504 - The current generation's graphics API, declared as names and
nothing else
- decisions/D505-the-declared-surface-now-matches-what-guests-ask-for
- D505 - The declared surface now matches what guests ask for, and the
coverage figure got worse
- decisions/D506-the-encoder-measurements-record-a-non-resolution
- D506 - The encoder measurements record a non-resolution, and thirty
names had no provenance
- decisions/D507-a-second-capture-settles-the-third-query-field
- D507 - A second capture settles the third query field, and demotes
thirty measurements
- decisions/D508-a-raw-register-is-claimable-once-status-is-masked-off
- D508 - A raw register is claimable once status is masked off
- decisions/D509-the-console-writes-eight-bytes-where-documentation-said-four
- D509 - The console writes eight bytes where documentation said
four
- decisions/D510-a-message-that-describes-a-gap-outlives-the-gap
- D510 - A message that describes a gap outlives the gap
- decisions/D511-two-formatter-bugs-in-one-run
- D511 - Two formatter bugs in one run, both in the padding nobody
tested
- decisions/D512-the-differential-covers-every-libc-function-it-can
- D512 -
vsnprintf closes the list, and the break proves
which cases were carrying it
- decisions/D513-the-oscillation-was-the-guests-own-allocator
- D513 - The oscillation was the guest's own allocator, and the deciding
input was ordering
- decisions/D514-the-wall-is-a-module-that-was-never-started
- D514 - The wall is a module that was loaded, placed, and never
started
- decisions/D515-starting-a-module-took-the-wall-down
- D515 - Starting the modules took the wall down, and the guest reached
its frame loop
- decisions/D516-nothing-is-ever-pending
- D516 - Nothing is ever pending, and the guest left its frame loop
- decisions/D517-dlsym-never-knew-the-guests-own-exports
- D517 -
dlsym never knew the guest's own exports, and the
wall did not move anyway
- decisions/D518-the-null-global-has-exactly-one-writer
- D518 - The null global has exactly one writer (and the guard I blamed
is never reached)
- decisions/D519-the-guest-calls-its-module-before-the-memory-manager-exists
- D519 - The guest calls into its module before the memory manager
exists, and D518 blamed the wrong guard
- decisions/D520-starting-every-module-early-is-not-the-missing-ordering
- D520 - Starting every placed module before entry is not the missing
ordering
- decisions/D521-the-callback-has-no-branch-that-avoids-the-read
- D521 - The callback has no branch that avoids the read, so one of
D519's two readings is dead
- decisions/D522-a-fault-now-says-what-its-registers-point-at
- D522 - A fault now says what its registers point at, and the label is
"None"
- decisions/D523-the-thread-affinity-setter-and-the-one-beside-it-that-stays-unimplemented
- D523 - The thread affinity setter, and the one beside it that stays
unimplemented
- decisions/D524-the-event-queue-exists-because-a-handle-has-to-mean-something
- D524 - The event queue exists so a handle means something, not so
events can be delivered
- decisions/D525-the-vendor-stat-is-not-the-posix-one-under-another-name
- D525 - The vendor
stat is not the POSIX one under another
name, and it opened eight functions
- decisions/D526-a-positioned-read-took-the-guest-into-the-gpu
- D526 - A positioned read took the guest into the GPU, and the wall
finally moved
- decisions/D527-the-wall-is-a-shader-and-the-cap-was-hiding-it
- D527 - The wall is
sceAgcCreateShader, and a hardcoded
cap was hiding it
- decisions/D528-two-walls-that-need-a-measurement-and-the-mechanism-that-asks-for-it
- D528 - Two walls that need a measurement, and the mechanism that asks
for one
- decisions/D529-the-record-format-already-carried-what-it-was-said-to-lack
- D529 - The record format already carried what D512 said it lacked
- decisions/D530-the-wide-family-verified-and-the-case-that-bites
- D530 - The wide family is verified, and one case is the reason it was
worth doing
- decisions/D531-the-interleaved-sequence-is-the-only-thing-that-tells-them-apart
- D531 - The interleaved sequence is the only thing that tells
strtok_r from strtok
- decisions/D532-strftime-and-the-question-that-found-it
- D532 -
strftime, and the question that found it
- decisions/D533-libm-splits-in-two-and-only-half-belongs-here
- D533 - libm splits in two, and only half of it belongs in a
differential
- decisions/D534-two-rounding-rules-that-pin-each-other
- D534 - Two rounding rules that pin each other
- decisions/D535-a-missing-terminator-is-only-caught-by-luck
- D535 -
strdup covered, and a missing terminator is only
caught by luck
- decisions/D536-one-clock-two-names-and-one-origin
- D536 - One clock, two names, and one origin
- decisions/D537-the-reasoning-was-in-the-code-and-the-record-said-nothing
- D537 - The reasoning was in the code, and the record said nothing
- decisions/D538-two-thirds-of-the-ask-list-is-forty-sentences
- D538 - Two thirds of the ask list is forty sentences
- decisions/D539-one-question-written-a-hundred-and-forty-nine-ways
- D539 - One question, written a hundred and forty-nine ways
- decisions/D540-the-ask-list-was-asking-for-a-function-that-does-not-exist
- D540 - The ask list was asking for a function that does not exist
- decisions/D541-a-measurement-was-sitting-in-the-list-of-things-nobody-knows
- D541 - A measurement was sitting in the list of things nobody
knows
- decisions/D542-six-records-said-nothing-was-known-while-holding-a-measurement
- D542 - Six records said nothing was known while holding a measurement,
and the axis closes
- decisions/D543-dlsym-succeeds-where-the-console-refuses
- D543 -
dlsym succeeds where the console refuses, and the
reason written down was not the reason
- decisions/D544-forty-seven-measured-values-that-no-test-looked-at
- D544 - Forty-seven measured values that no test looked at
- decisions/D545-the-relations-are-testable-where-the-numbers-are-not
- D545 - The relations are testable where the numbers are not
- decisions/D546-a-permanent-resident-of-the-work-queue
- D546 - A permanent resident of the work queue
- decisions/D547-the-relation-needed-a-mount-not-a-guest
- D547 - The relation needed a mount, not a guest
- decisions/D548-the-wall-is-an-experiment-and-there-is-no-guest-to-run
- D548 - The wall is an experiment, and there is no guest to run
- decisions/D549-the-oracle-the-roadmap-said-did-not-exist
- D549 - The oracle the roadmap said did not exist
- decisions/D550-the-oracle-draws
- D550 - The oracle draws
- decisions/D551-the-export-was-already-decoded
- D551 - The export was already decoded, and its blocker had half
expired
- decisions/D552-the-fragment-path-does-not-need-the-feature
- D552 - The fragment path does not need the feature, and the report
must not claim it
- decisions/D553-the-translator-draws
- D553 - The translator draws
- decisions/D554-the-oracle-carries-a-varying
- D554 - The oracle carries a varying, before anything interpolates
- decisions/D555-the-wall-was-real-and-the-record-was-twelve-days-stale
- D555 - The wall was real, the record was twelve days stale, and the
library was never empty
- decisions/D556-the-out-parameter-is-the-whole-wall
- D556 - The out-parameter is the whole of the wall, and the capture
that could answer it does not exist yet
- decisions/D557-a-measured-answer-is-not-a-prop
- D557 - A measured answer is not a prop, and a region always was
one
- decisions/D558-a-rung-for-the-first-frame
- D558 - A rung for the first frame, and where frames may not rank
- decisions/D559-the-agc-argument-classes-and-the-arity-gate
- D559 - The Agc argument classes, and how to get past the arity gate
without guessing
- decisions/D560-events-are-delivered-from-a-published-layout
- D560 - Events are delivered, from a published layout, and the wait
does not block
- decisions/D561-the-per-thread-scheduling-record-d523-predicted
- D561 - The per-thread scheduling record D523 said would be needed
- decisions/D562-the-tail-worked-by-what-a-placeholder-does
- D562 - The tail, worked in order of what a placeholder does
- decisions/D563-the-record-could-not-see-the-work
- D563 - The record could not see the work, and three copies of the
ordering had drifted
- decisions/D564-a-placeholder-as-a-size-is-a-quiet-four-gigabytes
- D564 - A placeholder answered as a size is a very quiet four
gigabytes
- decisions/D565-the-first-measured-command-packets
- D565 - The first measured command packets, and a census that
contradicts its own report
- decisions/D566-the-biggest-item-in-the-work-list-has-no-name
- D566 - The biggest item in the work list has no name, and no return
value fixes it
- decisions/D567-a-placeholder-that-names-its-own-source
- D567 - A placeholder that names its own source
- decisions/D568-the-tail-was-not-the-tail
- D568 - The tail was not the tail
- decisions/D569-a-diagnostic-nobody-asked-about
- D569 - A diagnostic nobody asked about, and the record it
overwrote
- decisions/D570-six-arguments-and-a-refuted-hypothesis
- D570 - Six arguments, a refuted hypothesis, and a filter that turned
out to be load-bearing
- decisions/D571-the-ring-is-circular-and-the-trade-was-false
- D571 - The ring is circular, and the trade it seemed to require was
false
- decisions/D572-the-unnamed-futex-had-a-name-in-the-tree
- D572 - The unnamed futex had a name in the tree, and the search missed
it for a word order
- decisions/D573-a-wait-that-returns-without-waiting-is-a
- D573 - A wait that returns without waiting is a busy loop, so the wait
now waits
- decisions/D574-three-tools-that-reported-more-than-they
- D574 - Three tools that reported more than they measured, on one
afternoon
- decisions/D575-the-stack-the-collector-scans-and-the
- D575 - The stack the collector scans, and the wall three titles
shared
- decisions/D576-a-breakpoint-was-called-stub-padding-without
- D576 - A breakpoint was called stub padding without anything looking
at the address
- decisions/D577-a-guest-may-re-protect-the-regions-somebody
- D577 - A guest may re-protect the regions somebody else placed for
it
- decisions/D578-the-random-devices-and-a-record-of-what-a
- D578 - The random devices, and a record of what a guest actually
opened
- decisions/D579-the-mapping-arena-had-no-name-and-its
- D579 - The mapping arena had no name and its bytes were
unreadable
- decisions/D580-a-watch-that-killed-the-run-and-a
- D580 - A watch that killed the run, and a message that said mapped
when it meant published
- decisions/D581-every-mapping-the-guest-was-given-in
- D581 - Every mapping the guest was given, in order
- decisions/D582-the-clock-a-guest-reads-has-to-repeat
- D582 - The clock a guest reads has to repeat, and still move
- decisions/D583-the-loop-checks-that-a-run-repeats
- D583 - The loop checks that a run repeats before it believes any
comparison
- decisions/D584-every-handle-the-guest-is-given-comes
- D584 - Every handle the guest is given comes from one region
- decisions/D585-a-fresh-thread-attribute-set-is-not
- D585 - A fresh thread attribute set is not entirely zero, and the
console said so
- decisions/D586-the-loop-reads-back-the-structure-a
- D586 - The loop reads back the structure a call was handed
- decisions/D587-the-asynchronous-file-path-named-and
- D587 - The asynchronous file path, named and reported
- decisions/D588-write-implies-read-and-the-dump-ran-out
- D588 - Write implies read, the dump ran out of room, and D580 was
wrong
- decisions/D589-delivering-the-file-the-asynchronous
- D589 - Delivering the file the asynchronous path resolved changes
nothing
- decisions/D590-the-guest-explains-itself-and-nothing
- D590 - The guest explains itself, and nothing was reading it
- decisions/D591-the-title-ships-the-index-the
- D591 - The title ships the index the asynchronous file path needs
- decisions/D592-the-replacement-library-is-guest-code
- D592 - The replacement library is guest code, and the index is
read
- decisions/D593-the-modules-a-title-ships-were
- D593 - The modules a title ships were unreadable to every
diagnostic
- decisions/D594-the-wall-is-a-library-the-dump-replaced
- D594 - The wall is a library the dump replaced, not three
functions
- decisions/D595-a-read-of-four-hundred-and-two-bytes
- D595 - A read of four hundred and two bytes printed as zero
- decisions/D596-every-message-carries-where-it-was-said
- D596 - Every message carries where it was said from
- decisions/D597-nothing-ever-wrote-the-command-and-a
- D597 - Nothing ever wrote the command, and a second summary read as
none
- decisions/D598-two-titles-are-two-kinds-of-dump-and
- D598 - Two titles are two kinds of dump, and one names the code it
wanted
- decisions/D599-the-dispatcher-was-measuring-a
- D599 - The dispatcher was measuring a different program
- decisions/D600-a-bogus-finding-disappears-and-the
- D600 - A bogus finding disappears, and the check passes on a run that
still varies
- decisions/D601-guest-visible-blocks-belong-in-the
- D601 - Guest-visible blocks belong in the memory crate
- decisions/D602-the-drift-is-a-guest-branch-not-a
- D602 - The drift is a guest branch, not a mapping we refused - NO, it
is a refusal
- decisions/D603-the-head-of-the-call-sequence-and-a
- D603 - The head of the call sequence, and a redirection that measured
nothing
- decisions/D604-a-placement-that-would-not-step-past-a
- D604 - A placement that would not step past a conflict
- decisions/D605-the-largest-record-kind-in-every
- D605 - The largest record kind in every report, read by nothing
- decisions/D606-a-name-is-a-seed-for-the-next-name
- D606 - A name is a seed for the next name
- decisions/D607-the-sweep-kept-the-weaker-of-two
- D607 - The sweep kept the weaker of two true records
- decisions/D608-a-guard-reading-a-shape-that-no
- D608 - A guard reading a shape that no longer exists
- decisions/D609-the-corpus-was-five-files-of-twenty
- D609 - The corpus was five files of twenty-eight
- decisions/D610-the-count-and-the-mode-were-both
- D610 - The count and the mode were both ignored
- decisions/D611-a-parser-that-required-a-prefix
- D611 - A parser that required a prefix the probe does not always
write
- decisions/D612-the-predicate-that-was-never-a
- D612 - The predicate that was never a predicate
- decisions/D613-a-wait-that-did-not-wait-and-a
- D613 - A wait that did not wait, and a record that answered for
somebody else
- decisions/D614-the-timeout-that-arrived-early
- D614 - The timeout that arrived early
- decisions/D615-a-queue-nobody-registered-and-two
- D615 - A queue nobody registered, and two nobody waited on
- decisions/D616-the-record-asked-the-wrong-thread
- D616 - The record asked the wrong thread
- decisions/D617-a-second-batch-and-the-pipeline
- D617 - A second batch, and the pipeline that was built for it
- decisions/D618-evidence-going-missing-made-a-claim
- D618 - Evidence going missing made a claim stronger
- decisions/D619-the-other-work-list
- D619 - The other work list
- decisions/D620-a-question-put-to-the-guest-and
- D620 - A question put to the guest, and the answer was no
- decisions/D621-the-report-paired-a-fault-with
- D621 - The report paired a fault with another thread's calls
- decisions/D622-the-probe-runs-here-too
- D622 - The probe runs here too
- decisions/D623-the-dump-answered-a-different
- D623 - The dump answered a different question
- decisions/D624-the-differential-counted-items
- D624 - The differential counted items and called them findings
- decisions/D625-a-dump-was-taken-and-never
- D625 - A dump was taken and never shown
- decisions/D626-seven-differences-were-the-probe
- D626 - Seven of the differences were the probe declining to call
- decisions/D627-two-spellings-of-one-condition
- D627 - Two spellings of one condition gave the encoding
- decisions/D628-the-guest-names-its-own
- D628 - The guest names its own functions
- decisions/D629-a-module-handle-now-narrows
- D629 - A module handle now narrows the answer, for one handle
- decisions/D630-the-titles-own-code-was-mapped
- D630 - The title's own code was mapped, and stubbed anyway
- decisions/D631-advice-that-cannot-succeed
- D631 - Advice that cannot succeed
- decisions/D632-one-function-two-answers
- D632 - One function, two answers, decided by how the guest asked
- decisions/D633-three-walls-one-subsystem
- D633 - Three walls, one subsystem
- decisions/D634-the-ratchet-cannot-say-worse
- D634 - The ratchet cannot say "worse"
- decisions/D635-the-branch-that-printed-nothing
- D635 - The branch that printed nothing
- decisions/D636-a-record-older-than-the-repository
- D636 - A record older than the repository
- decisions/D637-an-answer-needs-somebody-who-asked
- D637 - An answer needs somebody who asked
- decisions/D638-one-defect-against-the-like-for-like-leg
- D638 - One defect, against the leg that compares like for like
- decisions/D639-twenty-blank-pages-nobody-mentioned
- D639 - Twenty blank pages nobody mentioned
- decisions/D640-every-import-accounted-for
- D640 - Every import accounted for, with a reason
- decisions/D641-a-number-is-a-name-the-guest-did-not-spell
- D641 - Four numbers, and the wall moved
- decisions/D642-two-tables-that-answer-each-other
- D642 - Two tables that answer each other
- decisions/D643-one-name-and-a-third-title-reached-the-same-wall
- D643 - One name, and a third title reached the same wall
- decisions/D644-the-binding-reached-the-relocation
- D644 - The binding reached the relocation
- decisions/D645-a-signal-the-guest-sends-itself
- D645 - A signal the guest sends itself
- decisions/D646-the-clock-samples-instead-of-sleeping
- D646 - The clock samples instead of sleeping
- decisions/D647-the-name-a-faulting-register-points-at
- D647 - The name a faulting register points at
- decisions/D648-half-a-signal-contract-is-worth-implementing
- D648 - Half a signal contract is worth implementing
- decisions/D649-a-name-that-cannot-be-confirmed
- D649 - A name that cannot be confirmed
- decisions/D650-the-signal-goes-to-another-thread
- D650 - The signal goes to another thread
- decisions/D651-the-thread-that-was-not-calling
- D651 - The thread that was not calling
- decisions/D652-the-pending-signal-slot
- D652 - The pending-signal slot
- decisions/D653-a-second-reader-over-one-corpus
- D653 - A second reader over one corpus
- decisions/D654-four-harness-errors-and-no-reader-defects
- D654 - Four harness errors and no reader defects
- decisions/D655-the-symbol-level-agrees
- D655 - The symbol level agrees
- decisions/D656-the-context-has-to-be-on-a-real-stack
- D656 - The context has to be on a real stack
- decisions/D657-both-warnings-were-mirrors
- D657 - Both warnings were mirrors
- decisions/D658-what-the-guest-said
- D658 - What the guest said
- decisions/D659-two-walls-that-hardware-cannot-reach
- D659 - Two walls that hardware cannot reach
- decisions/D660-a-page-per-title
- D660 - A page per title
- decisions/D661-three-roots-not-one
- D661 - Three roots, not one
- decisions/D662-category-is-a-permission-not-a-label
- D662 - Category is a permission, not a label
- decisions/D663-the-codenames-are-the-vocabulary
- D663 - The codenames are the vocabulary
- decisions/D664-an-origin-list-with-every-failure-named
- D664 - An origin list, with every failure named
- decisions/D665-the-index-reads-the-entry-not-its
- D665 - The index reads the entry, not its title
- decisions/D666-orbis-is-the-machine-neo-is-the
- D666 - Orbis is the machine, neo is the refresh
- decisions/D667-the-vendor-spelling-of-a-socket-call
- D667 - The vendor spelling of a socket call, and the errno that
travels with it
- decisions/D668-twelve-knowledge-files-nothing
- D668 - Twelve knowledge files nothing loaded
- decisions/D669-a-title-does-not-resolve-by-name-and
- D669 - A title does not resolve by name, and orbistoun was calling
itself a payload
- decisions/D670-the-refusal-a-guest-cannot-see-is-a
- D670 - The refusal a guest cannot see is a success
- decisions/D671-the-pad-structure-was-measured-so-the
- D671 - The pad structure was measured, so the shim D345 deferred could
be written
- decisions/D672-the-audio-drain-was-measurable-without
- D672 - The audio drain was measurable without a device
- decisions/D673-an-empty-queue-is-a-report-not-a
- D673 - An empty queue is a report, not a refusal
- decisions/D674-a-high-water-mark-that-could-move
- D674 - A high-water mark that could move backwards
- decisions/D675-a-console-s-own-sysctl-knobs-belong-to
- D675 - A console's own sysctl knobs belong to its profile, and two
belong to the platform
- decisions/D676-weak-undefined-symbols-bind-to-zero
- D676 - Weak undefined symbols bind to zero when unanswered
- decisions/_preamble -
Decision log
- roadmap/001-where-this-actually-stands-2026-08-24
- Where this actually stands (2026-08-24)
- roadmap/002-phase-0-synthetic-fixtures-reduced
- Phase 0 - Synthetic fixtures (reduced; rejections already covered
inline)
- roadmap/003-phase-0b-abi-spike-done-both-platforms
- Phase 0b - ABI spike (DONE, both platforms)
- roadmap/004-phase-0c-structural-seams-done
- Phase 0c - Structural seams (DONE)
- roadmap/005-phase-0d-test-corpus-tooling-not-done
- Phase 0d - Test corpus tooling (done)
- roadmap/006-phase-0e-observability-substrate-done
- Phase 0e - Observability substrate (DONE)
- roadmap/007-phase-1-container-wrapper-and-dynamic
- Phase 1 - Container wrapper and dynamic segment (DONE)
- roadmap/008-phase-1b-corpus-wide-survey-report-done
- Phase 1b - Corpus-wide survey report (DONE)
- roadmap/009-phase-2-symbol-resolution-done
- Phase 2 - Symbol resolution (DONE)
- roadmap/010-phase-2b-gui-shell-and-library-done-no
- Phase 2b - GUI shell and library (DONE; no output
surface)
- roadmap/011-phase-3-address-space-done-both
- Phase 3 - Address space (DONE, both platforms verified)
- roadmap/012-phase-4-worker-placement-relocation
- Phase 4 - Worker, placement, relocation, protection, stubs, entry
(DONE); thread pointer, trace sink
- roadmap/013-phase-5-threading-and-synchronisation
- Phase 5 - Threading and synchronisation (begun)
- roadmap/014-phase-6-first-pixel-contents-being
- Phase 6 - First pixel (contents being built ahead of it)
- roadmap/015-phase-6-s-contents-built-ahead-of-it
- Phase 6's contents, built ahead of it
- roadmap/016-running-alongside
- Running alongside
- roadmap/017-stretch -
Stretch
- roadmap/018-not-on-the-roadmap
- Not on the roadmap
- roadmap/019-answering-prosperous
- Answering Prosperous
- roadmap/_preamble -
Roadmap
- titles/BFpilot_v0.4.4 -
BFpilot_v0.4.4
- titles/BackPork_0.1 -
BackPork_0.1
- titles/CheatRunner_v0.17
- CheatRunner_v0.17
- titles/Lapy-JB-Daemon_v1.2 -
Lapy-JB-Daemon_v1.2
- titles/PPSA02664-app0 -
Alex Kidd in Miracle World DX
- titles/PPSA03416-app0 -
Summer Sports Games
- titles/PPSA04263-app0 -
Grand Theft Auto V
- titles/PPSA21564-app0 -
ASTRO BOT
- titles/PPSA25872-app0 -
Terminator 2D: NO FATE
- titles/PPSA28061-app0 -
Earthion
- titles/PPSA99980 - obSCEne
- titles/ShadowMountPlus_1.6beta16
- ShadowMountPlus_1.6beta16
- titles/WebKit-Autoloader-Installer_v0.4.0
- WebKit-Autoloader-Installer_v0.4.0
- titles/elfldr_v0.26 -
elfldr_v0.26
- titles/etaHEN_2.5B -
etaHEN_2.5B
- titles/ftpsrv-drakmor_1.15-ng-stable
- ftpsrv-drakmor_1.15-ng-stable
- titles/ftpsrv_v0.21.1 -
ftpsrv_v0.21.1
- titles/garlic-savemgr_v1.13
- garlic-savemgr_v1.13
- titles/klogsrv_v0.9 -
klogsrv_v0.9
- titles/kstuff-lite_v1.10
- kstuff-lite_v1.10
- titles/kstuff-toggle_0.6
- kstuff-toggle_0.6
- titles/kstuff_v1.6.7 -
kstuff_v1.6.7
- titles/nanoDNS_0.4 -
nanoDNS_0.4
- titles/obscene-payload -
obscene-payload
- titles/obscene - obscene
- titles/pldmgr_v0.5.1 -
pldmgr_v0.5.1
- titles/prosperous -
prosperous
- titles/ps5-app-dumper_v1.11
- ps5-app-dumper_v1.11
- titles/ps5-linux-loader_v2.4
- ps5-linux-loader_v2.4
- titles/ps5-web-file-manager_v1.7
- ps5-web-file-manager_v1.7
- titles/ps5debug-NG_1.3.0
- ps5debug-NG_1.3.0
- titles/ps5upload_v5.14.0
- ps5upload_v5.14.0
- titles/shsrv_v0.20 -
shsrv_v0.20
- titles/websrv_v0.34 -
websrv_v0.34
- titles/zftpd_v1.5.0 -
zftpd_v1.5.0
- worklog/001-scaffold -
2026-08-19 - Scaffold
- worklog/002-terminology-and-documentation-pass
- 2026-08-19 - Terminology and documentation pass
- worklog/003-concept-intake-and-roadmap-resequence
- 2026-08-19 - Concept intake and roadmap resequence
- worklog/004-test-corpus-and-the-accuracy-suite
- 2026-08-19 - Test corpus and the accuracy suite
- worklog/005-observability-and-per-title-overrides
- 2026-08-19 - Observability and per-title overrides
- worklog/006-real-material-arrived-plan-revised
- 2026-08-19 - Real material arrived; plan revised against it
- worklog/007-crunch-phase-0c-0e-and-most-of-phase-1
- 2026-08-19 - Crunch: phase 0c, 0e, and most of phase 1
- worklog/008-crunch-continued-phases-2-0e-and-3
- 2026-08-19 - Crunch continued: phases 2, 0e, and 3
- worklog/009-crunch-continued-worker-mode-and-image
- 2026-08-19 - Crunch continued: worker mode and image placement
- worklog/010-open-at-end-of-session
- Open at end of session
- worklog/011-guest-code-executes
- 2026-08-19 - Guest code executes
- worklog/012-later-the-guest-runs-and-says-what-it
- 2026-08-19 (later) - The guest runs, and says what it wants
- worklog/013-later-still-the-name-search
- 2026-08-19 (later still) - The name search
- worklog/014-evening-names-and-proving-they-are-ours
- 2026-08-19 (evening) - Names, and proving they are ours
- worklog/015-late-the-loop-made-runnable
- 2026-08-19 (late) - The loop, made runnable
- worklog/016-night-making-the-loop-canonical
- 2026-08-19 (night) - Making the loop canonical
- worklog/017-very-late-the-first-implemented
- 2026-08-19 (very late) - The first implemented function, and what it
taught
- worklog/018-gpu-instrumentation-counting-before
- 2026-08-19 - GPU instrumentation: counting before translating
- worklog/019-the-encoding-table-stops-being-a-guess
- 2026-08-19 - The encoding table stops being a guess
- worklog/020-operands-and-a-surface-to-see-them
- 2026-08-19 - Operands, and a surface to see them through
- worklog/021-operand-layouts-and-the-limit-of-the
- 2026-08-19 - Operand layouts, and the limit of the per-family
model
- worklog/022-per-opcode-operands-solved-rather-than
- 2026-08-19 - Per-opcode operands, solved rather than written
- worklog/023-the-execution-model-decided-and-stubbed
- 2026-08-19 - The execution model, decided and stubbed
- worklog/024-translated-shaders-can-now-be-run-not
- 2026-08-19 - Translated shaders can now be run, not just
validated
- worklog/025-the-first-guest-instruction-translated
- 2026-08-19 - The first guest instruction, translated and executed
- worklog/026-the-worklist-starts-moving
- 2026-08-19 - The worklist starts moving
- worklog/027-two-wavefront-models-agreeing
- 2026-08-20 - Two wavefront models, agreeing
- worklog/028-factoring-floats-and-the-solver-earning
- 2026-08-20 - Factoring, floats, and the solver earning its
refusals
- worklog/029-flat-memory-layouts-and-the-same-lesson
- 2026-08-20 - Flat memory layouts, and the same lesson learned
twice
- worklog/030-guest-memory-and-two-driver-faults-that
- Guest memory, and two driver faults that a builder could have
caught
- worklog/031-the-worklist-blockers-and-a-solver-that
- The worklist blockers, and a solver that was quietly wrong about three
of them
- worklog/032-the-last-three-encoding-families-and
- The last three encoding families, and one of them was wrong
- worklog/033-the-execution-mask-becomes-real
- The execution mask becomes real
- worklog/034-comparisons-and-a-conditional-shader
- Comparisons, and a conditional shader with no branch in it
- worklog/035-lanes-that-do-different-things
- Lanes that do different things
- worklog/036-control-flow-a-switch-inside-a-loop
- Control flow: a switch inside a loop
- worklog/037-the-seam-a-submitted-command-buffer
- The seam: a submitted command buffer reaches the GPU
- worklog/038-the-condition-code-and-the-first
- The condition code, and the first compiled shader to translate
- worklog/039-vector-arithmetic-and-the-bits-nothing
- Vector arithmetic, and the bits nothing was looking at
- worklog/040-the-condition-code-everywhere-it-was
- The condition code, everywhere it was missing
- worklog/041-attribution-the-submit-function-and
- 2026-08-20 - Attribution, the submit function, and honest word
lists
- worklog/042-the-second-sub-encoding-and-a-check
- The second sub-encoding, and a check that was lying
- worklog/043-two-routes-to-a-shader-because-the
- Two routes to a shader, because the loader thread named the entry
points
- worklog/044-reconciling-with-the-loader-thread
- Reconciling with the loader thread
- worklog/045-later-a-home-for-what-we-learn
- 2026-08-20 (later) - A home for what we learn
- worklog/046-g9-the-capture-format-and-a-guard-that
- G9: the capture format, and a guard that was right
- worklog/047-g13-measured-rather-than-assumed-and
- G13 measured rather than assumed, and the work that does have an
oracle
- worklog/048-the-local-data-share-and-an-operand
- The local data share, and an operand that was never in any sample
- worklog/049-using-the-oracle-properly
- Using the oracle properly
- worklog/050-the-generator-found-a-real-bug-which-is
- The generator found a real bug, which is what it was for
- worklog/051-the-target-generation-was-never-checked
- The target generation was never checked
- worklog/052-named-instructions-because-there-are
- Named instructions, because there are two targets
- worklog/053-evening-the-wall-had-a-name-and-it-was-c
- 2026-08-20 (evening) - The wall had a name, and it was C++
- worklog/054-the-dispatch-speaks-names
- The dispatch speaks names
- worklog/055-the-retarget-and-the-tree-is-red-on
- The retarget, and the tree is red on purpose
- worklog/056-the-retarget-landed
- The retarget landed
- worklog/057-threads-are-real-and-the-entry-point
- Threads are real, and the entry point was reading garbage
- worklog/058-the-crash-was-the-harness-rebuilding
- The crash was the harness rebuilding Vulkan ninety-six times
- worklog/059-the-retarget-was-not-finished-and-cargo
- The retarget was not finished, and cargo had been hiding it
- worklog/060-the-entry-image-is-built-and-measured
- The entry image is built, and measured out of the running
- worklog/061-the-division-sequence-two-thirds-of-it
- The division sequence, two thirds of it
- worklog/062-the-tail-found-the-wall-and-the-wall
- The tail found the wall, and the wall moved once
- worklog/063-a-debugger-of-the-cheap-kind-and-it
- A debugger, of the cheap kind - and it named the parked bug in one
run
- worklog/064-the-number-nobody-had-recorded-every
- The number nobody had recorded: every guest call was misaligned
- worklog/065-float-controls-then-narrow-wavefronts
- Float controls, then narrow wavefronts
- worklog/066-starting-the-gui-found-the-leak-before
- Starting the GUI found the leak before writing a line of GUI
- worklog/067-the-subgroup-level-runs
- The subgroup level runs
- worklog/068-phase-2b-a-window-and-it-launches-guests
- Phase 2b: a window, and it launches guests
- worklog/069-the-last-unblocked-instruction-and-the
- The last unblocked instruction, and the buffer descriptor's
operands
- worklog/070-the-shell-grew-a-menu-a-toolbar-and-an
- The shell grew a menu, a toolbar, and an argument about dead
controls
- worklog/071-untyped-buffer-access
- Untyped buffer access
- worklog/072-the-worklist-ranks-by-reachability-first
- The worklist ranks by reachability first
- worklog/073-what-downloadable-homebrew-can-and
- What downloadable homebrew can and cannot do for us
- worklog/074-library-rows-were-being-rebuilt-sixty
- Library rows were being rebuilt sixty times a second
- worklog/075-the-library-folder-is-a-setting-now-and
- The library folder is a setting now, and refresh is a button
- worklog/076-a-filesystem-and-the-guest-read-every
- A filesystem, and the guest read every file it asked for
- worklog/077-review-queue-and-the-shader-loop-gets-a
- Review queue, and the shader loop gets a verdict
- worklog/078-the-bisection-lever-had-never-been
- The bisection lever had never been connected
- worklog/079-the-two-rungs -
The two rungs
- worklog/080-one-name-out-of-a-quarter-million-and
- One name out of a quarter million, and sixteen useful refusals
- worklog/081-the-name-sweep-could-not-have-found-the
- The name sweep could not have found the answer
- worklog/082-the-decision-log-had-been-quietly
- The decision log had been quietly losing its own references
- worklog/083-video-out-handles-two-more-names-and-a
- Video-out handles, two more names, and a wall that will not move
- worklog/084-the-sub-encoding-list-was-never-needed
- The sub-encoding list was never needed
- worklog/085-the-oracle-for-hidden-side-effects-was
- The oracle for hidden side effects was in the fixtures already
- worklog/086-notes-from-the-obscene-thread-one
- Notes from the obSCEne thread: one declined, one implemented
- worklog/087-a-recorded-gap-was-recorded-wrongly
- A recorded gap was recorded wrongly
- worklog/088-the-dispatch-loop-was-not-where-the
- The dispatch loop was not where the cost was
- worklog/089-the-log-line-became-a-check
- The log line became a check
- worklog/090-a-stack-trace-at-last
- A stack trace, at last
- worklog/091-call-sites-aliasing-and-a-wall-that-has
- Call sites, aliasing, and a wall that has taken eight attempts
- worklog/092-three-assumptions-asked-a-question-they
- Three assumptions asked a question they had only ever answered
themselves
- worklog/093-the-filesystem-is-cleared-and-there-are
- The filesystem is cleared, and there are four walls
- worklog/094-the-most-common-instruction-in-the-set
- The most common instruction in the set had no operands, and every test
was green
- worklog/095-the-split-opcode-and-a-test-that-asked
- The split opcode, and a test that asked to be deleted
- worklog/096-two-titles-that-never-parsed-and-an
- Two titles that never parsed, and an abort reported as an illegal
instruction
- worklog/097-typed-buffers-operands-solved-formats
- Typed buffers: operands solved, formats measured
- worklog/098-the-decision-number-ceiling-drops-to
- The decision-number ceiling drops to thirteen
- worklog/099-a-documentation-sweep-because-six-units
- A documentation sweep, because six units of change left claims
behind
- worklog/100-the-run-now-says-what-to-do-about-itself
- The run now says what to do about itself
- worklog/101-typed-buffer-translation-and-the-last
- Typed buffer translation, and the last thing in this lane that needed
nobody
- worklog/102-the-decode-side-is-finished
- The decode side is finished
- worklog/103-behavioural-provenance-d180
- 2026-08-21 - Behavioural provenance (D180)
- worklog/104-run-conditions-and-the-discount-on-the
- 2026-08-21 - Run conditions and the discount on the headline
(D181)
- worklog/105-a-provenance-rule-that-was-stated-too
- A provenance rule that was stated too narrowly, and a refusal defended
for the wrong reason
- worklog/106-the-compatibility-record-d182
- 2026-08-21 - The compatibility record (D182)
- worklog/107-the-third-source-idea-had-no-consumer
- The third-source idea had no consumer, and I had already written that
it did
- worklog/108-snprintf-s-and-what-implemented-does
- 2026-08-21 - snprintf_s, and what "implemented" does not mean
(D183)
- worklog/109-the-abort-at-53-is-one-bug-in-two-unity
- 2026-08-21 - The abort-at-53 is one bug, in two Unity titles
- worklog/110-the-interop-contract-pinned-before
- The interop contract, pinned before either side has code
- worklog/111-the-probe-record-reader-built-against
- The probe-record reader, built against transcripts and no
hardware
- worklog/112-the-abort-at-53-diagnosed-d186-d187
- 2026-08-21 - The abort-at-53, diagnosed (D186, D187)
- worklog/113-the-database-was-there-all-along-d188
- 2026-08-21 - The database was there all along (D188)
- worklog/114-a-shape-not-a-word-list-d189-and-an
- 2026-08-21 - A shape, not a word list (D189), and an audit that was
already red
- worklog/115-provenance-across-the-boundary-and-the
- Provenance across the boundary, and the demotion that has to stay
visible
- worklog/116-memalign-and-one-allocation-path-d190
- 2026-08-21 - memalign, and one allocation path (D190)
- worklog/117-the-nine-attempt-wall-a-clean-negative
- 2026-08-21 - The nine-attempt wall: a clean negative, after three
false starts
- worklog/118-the-corpus-is-records-all-the-way-down
- The corpus is records all the way down, and the reader was looking in
the wrong place
- worklog/119-from-a-check-passed-to-this-function
- From "a check passed" to "this function returns this, and here is how
well we know it"
- worklog/120-a-record-becomes-a-knowledge-entry
- A record becomes a knowledge entry, graded, or it does not become one
at all
- worklog/121-symbols-are-graded-differently-from
- Symbols are graded differently from values, and four record kinds were
left unparsed
- worklog/122-per-area-coverage-and-what-a-skip-is-not
- Per-area coverage, and what a skip is not
- worklog/123-a-probe-cannot-certify-its-own-machine
- A probe cannot certify its own machine, and the grading was resting on
it
- worklog/124-orbistoun-drives-the-session-now-and
- orbistoun drives the session now, and D207 said it never would
- worklog/125-freebsd-harvest-the-walker-ignored-its
- 2026-08-22 - FreeBSD harvest: the walker ignored its own rule
(D191)
- worklog/126-call-and-read-are-live-and-the-fixture
-
call and read are live, and the fixture for
one of them is broken
- worklog/127-the-streamed-report-needed-no-change
- The streamed report needed no change, and now there is a test saying
so
- worklog/128-the-pinned-defect-fired-and-the
- The pinned defect fired, and the replacement pins the shape
instead
- worklog/129-three-ways-of-not-knowing-kept-as-three
- Three ways of not knowing, kept as three
- worklog/130-a-shared-bridge-file-and-the-open-enum
- A shared bridge file, and the open-enum rule caught a live bug
here
- worklog/131-closing-the-automation-gaps-d193-d194
- 2026-08-22 - Closing the automation gaps (D193, D194, D195)
- worklog/132-project-status-md-rewritten-because-it
- 2026-08-24 - PROJECT_STATUS.md rewritten, because it opened with a
falsehood
- worklog/133-a-claim-made-to-the-other-thread-then
- A claim made to the other thread, then tested
- worklog/134-the-unknowns-become-a-queue-d196
- 2026-08-24 - The unknowns become a queue (D196)
- worklog/135-the-loop-written-down-and-a
- 2026-08-24 - The loop, written down; and a documentation audit (D197,
D198, D199)
- worklog/136-the-repository-s-own-layout-audited-d208
- 2026-08-24 - The repository's own layout, audited (D208)
- worklog/137-orbistoun-gen-the-table-generators-and
- 2026-08-24 -
orbistoun-gen: the table generators, and the
seam that makes them checkable (D209)
- worklog/138-the-obscene-bridge-caught-a-live-memory
- 2026-08-24 - The obSCEne bridge caught a live memory bug (D210)
- worklog/139-what-observed-actually-meant-and-the
- 2026-08-24 - What
observed actually meant, and the
ceiling that was not one (D213)
- worklog/140-a-language-model-service-isolated-from
- 2026-08-24 - A language-model service, isolated from everything
- worklog/141-the-first-proposer-and-the-optimisation
- 2026-08-24 - The first proposer, and the optimisation that had to be
reverted
- worklog/142-the-toolbar-captures-the-window-and
- 2026-08-24 - The toolbar captures the window, and recording is greyed
out (D215)
- worklog/143-the-wall-was-readable-all-along-d217
- 2026-08-24 - The wall was readable all along (D217)
- worklog/144-four-eliminations-no-confirmations-d218
- 2026-08-24 - Four eliminations, no confirmations (D218)
- worklog/145-a-diagnostics-toolkit-and-the-registry
- 2026-08-24 - A diagnostics toolkit, and the registry that should have
come first (D220, D221)
- worklog/146-a-build-says-which-build-it-is-d222
- 2026-08-24 - A build says which build it is (D222)
- worklog/147-the-wall-moved-and-the-address-had-been
- 2026-08-25 - The wall moved, and the address had been right all along
(D223, D224)
- worklog/148-the-console-gets-a-console
- The console gets a console
- worklog/149-the-rule-became-code-and-a-convenience
- The rule became code, and a convenience script nearly corrupted the
fixtures
- worklog/150-two-eliminations-that-were-never
- 2026-08-25 - two eliminations that were never measured
- worklog/151-every-diagnostic-axis-and-a-dispatcher
- Every diagnostic axis, and a dispatcher that turns the loop
- worklog/152-two-files-that-disagreed-and-the-last
- Two files that disagreed, and the last unexplained sweep result
- worklog/153-the-last-channel-into-the-wall-and-two
- The last channel into the wall, and two words that paid for
themselves
- worklog/154-pointing-the-model-at-the-right-question
- Pointing the model at the right question
- worklog/155-seven-names-two-words-and-a-stale-binary
- Seven names, two words, and a stale binary
- worklog/156-asking-whether-the-next-name-needs-a
- Asking whether the next name needs a word or a shape
- worklog/157-three-measured-shapes-and-a-delimiter
- Three measured shapes, and a delimiter that could not spell a
library
- worklog/158-the-model-gets-a-door-of-its-own
- The model gets a door of its own
- worklog/159-watchpoints-and-what-the-first-one-found
- Watchpoints, and what the first one found
- worklog/160-a-library-that-was-written-declared
- A library that was written, declared, tested, and never
registered
- worklog/161-the-sweep-gains-a-second-dimension-and
- The sweep gains a second dimension, and a wall opens
- worklog/162-the-loop-turns-itself-and-clears-the
- The loop turns itself, and clears the wall doing it
- worklog/163-promotion-what-a-turn-measured-and-what
- Promotion: what a turn measured, and what it did not
- worklog/164-the-merge-rule-leaves-the-shim
- The merge rule leaves the shim
- worklog/165-every-floating-point-function-worked
- Every floating-point function worked, and every one was reported
missing
- worklog/166-the-dispatcher-becomes-its-own-crate
- The dispatcher becomes its own crate, and the loop becomes a
command
- worklog/167-teach-a-man-to-fish-the-stub-policy
- Teach a man to fish: the stub policy learns to write
- worklog/168-tier-one-the-loop-writes-its-own-patch
- Tier one: the loop writes its own patch
- worklog/169-the-learned-file-becomes-something-you
- The learned file becomes something you can send somebody
- worklog/170-the-loop-finds-a-gap-nobody-had-looked
- The loop finds a gap nobody had looked at
- worklog/171-two-hypotheses-instead-of-one-and-the
- Two hypotheses instead of one, and the oracle that could not tell them
apart
- worklog/172-the-oracle-arrives-and-immediately
- The oracle arrives, and immediately corroborates
- worklog/173-five-hours-to-fourteen-seconds
- Five hours to fourteen seconds
- worklog/174-the-loader-learned-to-read-the-other
- 2026-08-26 - The loader learned to read the other half of the
world
- worklog/175-the-vocabulary-regrew-and-the-only
- The vocabulary regrew, and the only alarm was a clock
- worklog/176-the-shell-button-had-nowhere-to-go
- The shell button had nowhere to go
- worklog/177-one-word-for-the-shell-and-the-window
- One word for the shell, and the window had already taken it
- worklog/178-asked-the-guest-what-it-wanted-instead
- 2026-08-27 - Asked the guest what it wanted instead of guessing
- worklog/179-data-imports-finally-get-something-they
- 2026-08-27 - Data imports finally get something they can
dereference
- worklog/180-two-backlog-items-and-a-method-that-was
- 2026-08-27 - Two backlog items, and a method that was quietly
unsound
- worklog/181-a-model-that-needs-no-key-and-the-parts
- 2026-08-27 - A model that needs no key, and the parts not worth
copying
- worklog/182-the-benchmark-disagreed-with-me-twice
- 2026-08-27 - The benchmark disagreed with me twice before it was
right
- worklog/183-a-controller-subsystem-and-a-name-i
- A controller subsystem, and a name I talked myself out of
- worklog/184-the-payloads-started-working
- 2026-08-27 - The payloads started working
- worklog/185-asked-to-drop-an-engine-and-the-engine
- 2026-08-27 - Asked to drop an engine, and the engine was fine
- worklog/186-two-modelled-states-made-real-after
- Two modelled states made real, after being told they were only
modelled
- worklog/187-the-tags-outlived-the-instruction-that
- 2026-08-27 - The tags outlived the instruction that removed the
thinking
- worklog/188-user-support-and-the-third-thing-found
- User support, and the third thing found modelled and inert
- worklog/189-klogsrv-prints-its-banner
- 2026-08-27 - klogsrv prints its banner
- worklog/190-the-posix-names-were-unserved-and-they
- The POSIX names were unserved, and they were never missing
behaviour
- worklog/191-the-guest-names-its-own-requirement
- 2026-08-27 - The guest names its own requirement
- worklog/192-the-bsd-harvest-was-names-only-and-the
- 2026-08-27 - The BSD harvest was names-only, and the work outgrew
it
- worklog/193-coverage-crunch-libc-elf-hle
- Coverage crunch: libc, elf, hle
- worklog/194-the-harvest-became-a-command-and
- 2026-08-27 - The harvest became a command, and writing it twice found
a bug
- worklog/195-coverage-crunch-kernel-and-thunk
- Coverage crunch: kernel and thunk
- worklog/196-proof-of-sourcing-for-the-harvested
- 2026-08-27 - Proof of sourcing for the harvested constants
- worklog/197-the-null-jump-is-not-the-sysctl-refusal
- 2026-08-29 - The null jump is not the sysctl refusal
- worklog/198-the-null-jump-was-the-shortcut-coming
- 2026-08-29 - The null jump was the shortcut coming due
- worklog/199-markers-in-bss-and-the-sdk-s-logging
- 2026-08-29 - Markers in
.bss, and the SDK's logging
helper
- worklog/200-gate-green -
2026-08-29 - Gate green
- worklog/201-the-payload-wall-answered-by-asking-the
- 2026-08-29 - The payload wall, answered by asking the guest
- worklog/202-sockets-and-the-file-calls-that-go-with
- 2026-08-29 - Sockets, and the file calls that go with them
- worklog/203-klogsrv-imports-nothing-that-is-not
- 2026-08-29 - klogsrv imports nothing that is not implemented
- worklog/204-what-about-klogsrv
- 2026-08-29 - What about klogsrv
- worklog/205-the-syscall-boundary-built-and-not-yet
- 2026-08-29 - The syscall boundary, built and not yet reached
- worklog/206-a-setting-consulted-nowhere-for-the
- 2026-08-29 - A setting consulted nowhere, for the fourth time
- worklog/207-a-fault-report-that-names-our-own-code
- 2026-08-29 - A fault report that names our own code
- worklog/208-klogsrv-opens-a-port-and-something
- 2026-08-29 - klogsrv opens a port and something connects to it
- worklog/209-ftpsrv-talks-and-asks-to-be-root
- 2026-08-29 - ftpsrv talks, and asks to be root
- worklog/210-a-one-line-disagreement-about-zero
- 2026-08-29 - A one-line disagreement about zero
- worklog/211-an-ftp-server-and-the-six-things-in
- 2026-08-30 - An FTP server, and the six things in front of it
- worklog/212-the-listing -
2026-08-30 - The listing
- worklog/213-the-download-and-three-blind-instruments
- 2026-08-30 - The download, and three blind instruments
- worklog/214-when-not-which -
2026-08-30 - When, not which
- worklog/215-ask-the-guest-one-field-at-a-time
- 2026-08-30 - Ask the guest, one field at a time
- worklog/216-what-real-hardware-sent-back
- 2026-08-30 - What real hardware sent back
- worklog/217-the-probe-answers-a-question-about
- 2026-08-30 - The probe answers a question about itself
- worklog/218-seven-placeholders-retired-by-one-file
- 2026-08-30 - Seven placeholders, retired by one file
- worklog/219-the-constant-was-a-handle-and-the-wall
- 2026-08-30 - The constant was a handle, and the wall was an
argument
- worklog/220-a-landing-zone-and-the-first-syscalls-a
- 2026-08-30 - A landing zone, and the first syscalls a payload has ever
made here
- worklog/221-the-work-list-could-not-see-a-system
- 2026-08-30 - The work list could not see a system call
- worklog/222-the-hardware-had-already-answered-the
- 2026-08-30 - The hardware had already answered; the results were on
disk
- worklog/223-word-zero-is-getpid-and-the-payload-s
- 2026-08-30 - Word zero is getpid, and the payload's own arithmetic
lands on real functions
- worklog/224-four-plans-crunched-testable-layout
- 2026-08-31 - Four plans crunched: testable layout, profiles, port
reporting, vaddr provenance
- worklog/225-obscene-s-hardware-run-absorbed-five
- 2026-08-31 - obSCEne's hardware run absorbed: five vaddrs confirmed,
and a payload retry
- worklog/226-disassembled-klog-elf-around-image
- 2026-08-31 - Disassembled
klog.elf around
image+0x2708: kernel_copyout, setsockopt, and high-half
kpipe_addr (D411)
- worklog/227-implemented-syscall-477-mmap-and-wired
- 2026-08-31 - Implemented Syscall 477 (
mmap) and wired to
the syscall table (D412)
- worklog/228-later-payload-retry-after-further
- 2026-08-31 (later) - payload retry after further changes: 7 -> 32
syscalls, into klog's socket loop
- worklog/229-emulated-kernel-escape-r-w-pipe-for
- 2026-08-31 - Emulated kernel escape R/W pipe for dynamic symbol
resolution (D413)
- worklog/230-later-orbistoun-runs-the-whole-obscene
- 2026-08-31 (later) - orbistoun runs the whole obSCEne suite; obSCEne
becomes its conformance oracle
- worklog/231-later-the-test-corpus-becomes-a-verb
- 2026-08-31 (later) - the test corpus becomes a verb (D414)
- worklog/232-later-compatibility-md-generated-from
- 2026-08-31 (later) - COMPATIBILITY.md, generated from the records
(D415)
- worklog/233-later-four-hle-fixes-from-the-hardware
- 2026-08-31 (later) - four HLE fixes from the hardware diff (D416)
- worklog/234-later-three-more-hle-fixes-thread-join
- 2026-08-31 (later) - three more HLE fixes: thread join, mutex type,
audio (D417)
- worklog/235-later-the-census-control-leak-root
- 2026-08-31 (later) - the census-control leak, root-caused and fixed
(D418)
- worklog/236-swversion-write-refined-from-the
- 2026-08-31 - SwVersion write refined from the hardware dump
- worklog/237-later-second-payload-run-absorbed-five
- 2026-08-31 (later) - second payload run absorbed: five vaddrs
confirmed (D419)
- worklog/238-later-the-surely-there-s-more-pass
- 2026-08-31 (later) - the "surely there's more" pass found a wrong
firmware value (D420)
- worklog/239-later-scekernelgetsystemswversion-made
- 2026-08-31 (later) - sceKernelGetSystemSwVersion made a profile
setting (D421)
- worklog/240-later-per-title-device-sandbox-from-the
- 2026-08-31 (later) - per-title device sandbox, from the overlay
already there (D422)
- worklog/241-later-c-succeeded-the-full-current
- 2026-08-31 (later) - C succeeded: the full current obSCEne runs as the
payload
- worklog/242-later-video-flip-model-the-first
- 2026-08-31 (later) - video flip model: the first complete obSCEne run
in orbistoun (D424)
- worklog/243-later-first-fidelity-fix-off-the
- 2026-08-31 (later) - first fidelity fix off the complete run:
GetModuleInfo refusal code
- worklog/244-later-resolution-status-implemented-and
- 2026-08-31 (later) - resolution-status: implemented, and the
"headless" skip debunked
- worklog/245-systematic-hardware-diff-video-error
- 2026-09-01 - systematic hardware diff: video error family +
single-output-ownership (D426)
- worklog/246-started-the-gpu-subsystem-pm4-command
- 2026-09-01 - started the GPU subsystem: PM4 command builders
(D427)
- worklog/247-real-title-loop-libscesysmodule-the
- 2026-09-01 - real-title loop: libSceSysmodule (the load call nearly
every title makes)
- worklog/248-reentrant-guest-execution-std-call-once
- 2026-09-01 - reentrant guest execution + std::call_once (D430)
- worklog/249-scekernelvirtualquery-the-c-runtime
- 2026-09-01 - sceKernelVirtualQuery + the C-runtime threading family
(D431)
- worklog/250-fault-reports-carry-the-faulting
- 2026-09-01 - Fault reports carry the faulting instruction (D432)
- worklog/251-ppsa28061-s-wall-diagnosed-no-guest
- 2026-09-01 - PPSA28061's wall diagnosed: no guest thread pointer
(D432)
- worklog/252-loop-tls-block-built-windows-fs-base
- 2026-09-01 (/loop) - TLS block built; Windows fs-base limitation
found; knowledge debt cleared
- worklog/253-loop-windows-fs-base-backstop-ppsa28061
- 2026-09-01 (/loop) - Windows fs-base backstop; PPSA28061 FURTHER to
the JSON/ULT wall
- worklog/254-loop-libsceult-mutex-condvar-ulthread
- 2026-09-01 (/loop) - libSceUlt mutex/condvar/ulthread; PPSA28061 wall
is now online (D435)
- worklog/255-loop-names-search-ppsa28061-s-online
- 2026-09-01 (/loop) - names search: PPSA28061's online import is
un-nameable locally
- worklog/256-loop-remaining-walls-characterised-all
- 2026-09-01 (/loop) - remaining walls characterised; all need
obscene/external data (D436)
- worklog/257-loop-obscene-hardware-memory-data-mined
- 2026-09-01 (/loop) - obSCEne hardware memory data mined; map now
starts at 0x10000 (D437)
- worklog/258-loop-error-code-sweep-completed-5-6
- 2026-09-01 (/loop) - error-code sweep completed: 5/6 rejects-* checks
match hardware (D438 cont.)
- worklog/259-loop-file-error-codes-now-the-measured
- 2026-09-01 (/loop) - file error codes now the measured errnos (D439
cont.)
- worklog/260-loop-gnm-dispatch-header-now-byte
- 2026-09-01 (/loop) - GNM dispatch header now byte-matches hardware
(D439 cont.)
- worklog/261-loop-user-task-orbistoun-fs-test
- 2026-09-01 (/loop, user task) - orbistoun-fs test isolation + clippy
debt fixed
- worklog/262-shared-allocator-diagnosis-wrong-titles
- 2026-09-01 - Shared-allocator diagnosis: wrong titles, real gap is
Configured (D442)
- worklog/263-proc-param-reader-built-the-mem-param
- 2026-09-01 - proc-param reader built; the mem-param oracle falsified
the budget premise
- worklog/264-ppsa02664-goes-further-233-1541-calls
- 2026-09-01 - PPSA02664 goes FURTHER (233->1541 calls): policy
region was on the guest's heap
- worklog/265-obscene-is-the-oracle-flexible-memory
- 2026-09-01 - obSCEne is the oracle; flexible-memory fixed byte-exact
against hardware
- worklog/266-stack-read-ahead-guard-obscene-runs-its
- 2026-09-01 - stack read-ahead guard; obSCEne runs its whole suite
under orbistoun
- worklog/267-scekernelvirtualquery-sees-the-image
- 2026-09-01 - sceKernelVirtualQuery sees the image and stack (obSCEne
vq-text/vq-stack pass)
- worklog/268-sysctlbyname-implemented-kern-osrelease
- 2026-09-01 - sysctlbyname implemented; kern.osrelease answers (obSCEne
osrelease passes)
- worklog/269-obscene-oracle-mined-out-for-clean
- 2026-09-01 - obSCEne oracle mined out for clean fixes; pivot to a real
title next
- worklog/270-found-ppsa02664-regression-1541-234
- 2026-09-01 - found PPSA02664 regression (1541->234); mechanism
understood, fix deferred (net-zero turn)
- worklog/271-ppsa02664-fault-site-is-non
- 2026-09-01 - (/loop) PPSA02664's fault site is non-deterministic; the
"regression" was a thread race
- worklog/272-ppsa21564-boots-mspace-family
- 2026-09-01 - (/loop) PPSA21564 boots: the sceLibcMspace allocator
family + bcmp
- worklog/273-scepthreadgetthreadid-0pct-stubs
- 2026-09-01 - (/loop) scePthreadGetthreadid; PPSA21564 now runs at 0%
stubs
- worklog/274-posix-tls-keys-tbb-unblocked
- 2026-09-01 - (/loop) POSIX TLS keys unblock Unity's TBB scheduler;
PPSA21564 stops aborting/racing
- worklog/275-time-and-fgets-astro-reaches-main
- 2026-09-01 - (/loop) time + fgets: PPSA21564 (Astro's Playroom)
reaches main(), prints, parses args
- worklog/276-posix-unnamed-semaphores
- 2026-09-01 - (/loop) POSIX unnamed semaphores; the Cond.cpp wall is
not a traced HLE call
- worklog/277-fault-reports-name-privileged-instructions
- 2026-09-01 - (/loop) Fault reports name privileged instructions +
distinguish emulator bugs
- worklog/278-fault-reports-name-the-null-base
- 2026-09-01 - (/loop) Fault reports name the null base register
automatically
- worklog/279-execute-breakpoints
- 2026-09-01 - (/loop) Execute breakpoints: capture a guest value where
it is used
- worklog/280-trace-records-return-values
- 2026-09-01 - (/loop) The call trace records what each call
answered
- worklog/281-map-commits-into-a-reserved-range
- 2026-09-01 - (/loop) Map direct memory into an existing reservation;
crack image+0xafcc08
- worklog/282-map-fix-blast-radius
- 2026-09-01 - (/loop) The reserve-then-map fix advanced three titles,
not one
- worklog/283-standard-libc-functions-putchar-random-device
- 2026-09-01 - (/loop) Overnight crunch: putchar and
std::random_device
- worklog/284-ppsa04263-map-failure-investigation
- 2026-09-01 - (/loop) PPSA04263's map wall: a rigorous narrowing, not
yet a fix
- worklog/285-mapping-arena-collision-fixed
- 2026-09-01 - (/loop) Made reservation failures legible, then cracked
the collision they hid
- worklog/286-strcpy-s-and-new-thread-tls-diagnosis
- 2026-09-02 - (/loop) strcpy_s implemented; new-thread TLS gap
diagnosed (the real wall)
- worklog/287-per-thread-tls-implemented
- 2026-09-02 - (/loop) Per-thread TLS for spawned guest threads:
PPSA04263 10k -> 333k calls
- worklog/288-wait-event-flag-and-math
- 2026-09-02 - (/loop) Blocking WaitEventFlag (kills a 304k spin) +
atan2f/sincosf
- worklog/289-ppsa25872-spin-and-attr-setters
- 2026-09-02 - (/loop) PPSA25872's unnamed spin (naming-gated) + pthread
attr setters
- worklog/290-last-standard-stubs
- 2026-09-02 - (/loop) The last clearly-standard stubs: vsprintf_s,
SetVirtualRangeName
- worklog/291-last-clean-functions-and-crunch-summary
- 2026-09-02 - (/loop) The last clean functions; the oracle-free crunch
is complete
- worklog/292-packed-uint-buffer-load
- 2026-09-02 - (/loop) Packed typed-buffer formats begin: UINT
single-word load, GPU-verified
- worklog/293-packed-sint-buffer-load
- 2026-09-02 - (/loop) Packed typed-buffer SINT load: sign extension,
GPU-verified
- worklog/294-packed-unorm-buffer-load
- 2026-09-02 - (/loop) Packed typed-buffer UNORM load: the first
converting kind, GPU-verified
- worklog/295-packed-snorm-buffer-load
- 2026-09-02 - (/loop) Packed typed-buffer SNORM load: the clamp,
GPU-verified
- worklog/296-packed-float16-buffer-load
- 2026-09-02 - (/loop) Packed typed-buffer FLOAT16 load: driver-widened
halves, GPU-verified
- worklog/297-ctype-tables-from-hardware
- 2026-09-02 - (/loop) The ctype tables, measured off hardware: table
right, wall unchanged
- worklog/298-the-wall-is-not-getpctype
- 2026-09-02 - (/loop) The
_Getpctype wall is a mislabel:
measured, and it reframes four decisions
- worklog/299-a-stale-trace-was-being-reported-as-this-run
- 2026-09-02 - (/loop) Every report today was a file from 01:50; the
ctype work had moved the wall
- worklog/300-the-ctype-work-was-a-7x-advance
- 2026-09-02 - (/loop) The reporter could not survive an execute fault;
fixed, and the ctype work turns out to be a 7x advance
- worklog/301-the-work-list-is-now-inventory-driven
- 2026-09-02 - (/loop) 452 documented functions were knowable all along;
the work list is now inventory-driven
- worklog/302-batch-1-bounded-string-and-memory
- 2026-09-02 - (/loop) Bulk port batch 1: the bounded string and memory
functions
- worklog/303-batch-2-runtime-internals
- 2026-09-02 - (/loop) Bulk port batch 2: the runtime's out-of-line
atomics, conversions and assert
- worklog/304-batch-3-streams-locks-and-the-cxx-runtime
- 2026-09-02 - (/loop) Bulk port batch 3: the standard streams, real
recursive locks, and the C++ runtime
- worklog/305-batch-4-posix-delegation-and-the-environment
- 2026-09-02 - (/loop) Bulk port batch 4: 20 POSIX delegations, and the
arity check that refused two
- worklog/306-batch-5-math-and-byte-order
- 2026-09-02 - (/loop) Bulk port batch 5: the single-precision math
family and byte order
- worklog/307-the-partial-marker
- 2026-09-02 - (/loop) A partial marker, and the inconsistency the audit
found
- worklog/308-batch-7-descriptor-and-mapping-calls
- 2026-09-02 - (/loop) Bulk port batch 7: scatter/gather, sync, and the
ones refused instead
- worklog/309-batch-8-the-posix-prefixed-family
- 2026-09-02 - (/loop) Bulk port batch 8: the
posix_-prefixed family, 69 in one go
- worklog/310-batch-9-the-attribute-accessors
- 2026-09-02 - (/loop) Bulk port batch 9: the attribute accessors, and
three guards that fired
- worklog/311-batch-10-getsockopt-and-a-near-duplication
- 2026-09-02 - (/loop) Bulk port batch 10:
getsockopt, and
what "missing" actually means
- worklog/312-batch-11-the-cheap-wins-are-exhausted
- 2026-09-02 - (/loop) Bulk port batch 11: two inits resolved, and the
cheap wins are exhausted
- worklog/313-batch-12-and-a-recommendation-that-was-wrong
- 2026-09-02 - (/loop) Bulk port batch 12: the lock-attribute families -
and my stop recommendation was wrong
- worklog/314-batch-13-timed-wait-and-once
- 2026-09-02 - (/loop) Bulk port batch 13: the timed condition wait and
pthread_once
- worklog/315-batch-14-deadlines-and-a-guard-on-the-wrong-table
- 2026-09-02 - (/loop) Bulk port batch 14: the timed acquisitions, and a
guard that checked the wrong table
- worklog/316-r0-the-red-gates-cleared
- 2026-09-02 - (/loop) R0: the red gates cleared, and the knowledge file
catches up
- worklog/317-r1-the-measure-count-is-not-a-bug
- 2026-09-02 - (/loop) R1: the measure count is not a bug, and the name
oracle already answered
- worklog/318-r5-the-hardware-records-finally-get-read
- 2026-09-02 - (/loop) R5: the hardware records finally get read, and
the two runs disagree
- worklog/319-r6-measurements-become-a-work-queue
- 2026-09-02 - (/loop) R6: measurements become a work queue with a
completion condition
- worklog/320-r7-the-differential-finds-four-bugs-on-day-one
- 2026-09-02 - (/loop) R7: a live oracle at last, and it found four bugs
in twenty-four cases
- worklog/321-more-differential-cases-and-a-spurious-wakeup
- 2026-09-02 - (/loop) More differential cases, and the parallel run
finds a real concurrency bug
- worklog/322-qsort-and-bsearch-call-back-into-guest-code
- 2026-09-02 - (/loop) The differential calls back into guest code, and
qsort agrees
- worklog/323-a-claim-i-made-was-wrong-and-is-withdrawn
- 2026-09-02 - (/loop) The sign-extension divergence was mine, not the
console's
- worklog/324-strtok-sequences-and-the-mutex-types-pinned
- 2026-09-02 - (/loop)
strtok needs a sequence, and the
mutex type mapping becomes a test
- worklog/325-the-memory-query-flags-and-the-overlap-cases
- 2026-09-02 - (/loop) Four outstanding items that were never hard, and
the overlapping moves
- worklog/326-the-loader-answers-were-already-right-and-the-real-gap-is-exports
- 2026-09-02 - (/loop) The loader's answers were already right; the real
gap is exports
- worklog/327-exports-exist-now-and-the-title-module-answers-the-wall
- 2026-09-02 - (/loop) Exports exist now, and the title's own module
answers the wall
- worklog/328-three-firmware-directories-and-a-test-that-cannot-see-them
- 2026-09-02 - (/loop) Three firmware directories, and a test that
cannot tell them apart
- worklog/329-a-title-module-is-found-by-name-and-fakelib-proves-it
- 2026-09-03 - (/loop) A title's module is found by name, and
fakelib/ proved the rule right
- worklog/330-the-wall-resolves-and-libc-turns-out-to-be-the-titles
- 2026-09-03 - (/loop) The wall resolves to a real address, and
libc turns out to be the title's
- worklog/331-the-stub-tables-are-global-so-there-is-one-of-them
- 2026-09-03 - (/loop) The stub tables are global, so there is one of
them (D484)
- worklog/332-r9-was-already-closed-and-twenty-one-new-differential-cases
- 2026-09-03 - (/loop) R9 was already closed, and twenty-one new
differential cases
- worklog/333-a-third-capture-took-two-claims-away
- 2026-09-03 - (/loop) A third capture added 186 measurements and took
two claims away
- worklog/334-one-stub-table-with-a-range-per-module
- 2026-09-03 - (/loop) One stub table with a range per module
- worklog/335-the-float-environment-and-the-bit-that-is-not-configuration
- 2026-09-03 - (/loop) The float environment, and the bit that is not
configuration
- worklog/336-the-titles-own-modules-relocate
- 2026-09-03 - (/loop) The title's own modules relocate
- worklog/337-the-worker-links-the-title-and-the-verdict-is-noisy
- 2026-09-03 - (/loop) The worker links the title, and the verdict turns
out to be noisy
- worklog/338-the-decision-log-had-the-answer
- 2026-09-03 - (/loop) The decision log had the answer
- worklog/339-the-guest-runs-its-own-code
- 2026-09-03 - (/loop) The guest runs its own code
- worklog/340-the-trace-was-naming-the-wrong-functions
- 2026-09-03 - (/loop) The trace was naming the wrong functions
- worklog/341-the-instruction-bytes-answered-it-and-the-tags-refused-the-answer
- 2026-09-03 - (/loop) The instruction bytes answered it, and the tags
refused the answer
- worklog/342-a-nid-verb-and-a-hypothesis-that-did-not-survive-it
- 2026-09-03 - (/loop) A
nid verb, and a hypothesis that
did not survive it
- worklog/343-bss-and-a-blind-spot-of-our-own-making
- 2026-09-03 - (/loop)
.bss, and a blind spot of our own
making
- worklog/344-the-instrument-existed-and-i-mis-grepped-it
- 2026-09-03 - (/loop) The instrument existed, and I mis-grepped it
- worklog/345-the-guest-says-which-modules-to-start
- 2026-09-03 - (/loop) The guest says which modules to start, and we do
not start them
- worklog/346-six-absences-and-the-tag-that-made-them-mean-something
- 2026-09-03 - (/loop) Six absences, and the tag that made them mean
something
- worklog/347-24-claims-24-non-claims-and-a-restore-that-broke-a-mutex
- 2026-09-03 - (/loop) 24 claims, 24 non-claims, and a restore that
broke a mutex
- worklog/348-a-conformance-bug-a-stale-work-item-and-a-lying-instrument
- 2026-09-03 - (/loop) a conformance bug, a stale work item, and a lying
instrument
- worklog/349-the-oscillation-is-one-allocation-round
- 2026-09-03 - (/loop) The oscillation is one allocation round, and the
backlog is now the whole list
- worklog/350-what-the-96-percent-does-not-say
- 2026-09-03 - (/loop) What the 96% does not say, a stale red phase, and
three more libc functions
- worklog/351-the-citations-were-already-here
- 2026-09-03 - (/loop) The citations were already here, and R9 was
already closed
- worklog/352-the-queue-had-permanent-residents
- 2026-09-03 - (/loop) The queue had permanent residents, and two asks
were about the run
- worklog/353-skeletons-for-the-gaps
- 2026-09-03 - (/loop) Skeletons for the gaps: 61 graphics names and 49
recorded imports
- worklog/354-twenty-eight-libraries-and-an-honest-denominator
- 2026-09-03 - (/loop) Twenty-eight libraries, and a coverage figure
that got worse on purpose
- worklog/355-the-encoder-measurements-say-the-opposite
- 2026-09-03 - (/loop) The encoder measurements say the opposite, and
thirty names go back
- worklog/356-a-second-capture-settles-a-field
- 2026-09-03 - (/loop) A second capture settles the third query
field
- worklog/357-a-masked-register-and-single-precision
- 2026-09-03 - (/loop) A masked register, and the width where a shim
shows itself
- worklog/358-eight-bytes-and-a-round-trip
- 2026-09-03 - (/loop) Eight bytes where documentation said four
- worklog/359-a-closed-gap-that-both-surfaces-called-open
- 2026-09-03 - (/loop) A closed gap that both surfaces still called
open
- worklog/360-two-formatter-bugs
- 2026-09-03 - (/loop) Two formatter bugs, in the padding nobody had
tested
- worklog/361-vsnprintf-closes-the-list
- 2026-09-03 - (/loop)
vsnprintf closes the list, and the
break names the cases carrying it
- worklog/362-the-oscillation-is-settled
- 2026-09-03 - (/loop) The oscillation is settled: it was the guest's
own allocator
- worklog/363-the-wall-is-a-module-never-started
- 2026-09-03 - (/loop) The wall named: a module that was loaded, placed,
and never started
- worklog/364-the-wall-is-down
- 2026-09-03 - (/loop) The wall is down: the guest reached its frame
loop
- worklog/365-nothing-is-ever-pending
- 2026-09-03 - (/loop) Nothing is ever pending: the guest left its frame
loop
- worklog/366-dlsym-and-a-wall-that-did-not-move
- 2026-09-03 - (/loop)
dlsym never knew the guest's own
exports; the wall did not move
- worklog/367-one-writer-thirty-seven-readers
- 2026-09-03 - (/loop) One writer, thirty-seven readers, and a guard
that never passes
- worklog/368-i-blamed-a-guard-that-never-ran
- 2026-09-03 - (/loop) I blamed a guard that never ran
- worklog/369-starting-everything-early-is-not-it
- 2026-09-03 - (/loop) Starting every module early is not the missing
ordering
- worklog/370-no-branch-avoids-the-read
- 2026-09-03 - (/loop) No branch avoids the read: half the open question
is closed
- worklog/371-a-fault-says-what-it-points-at
- 2026-09-03 - (/loop) A fault now says what its registers point at, and
the label is "None"
- worklog/372-one-implemented-one-deliberately-not
- 2026-09-03 - (/loop) One thread call implemented, one deliberately
not
- worklog/373-the-event-queue
- 2026-09-03 - (/loop) The event queue exists so a handle means
something
- worklog/374-the-vendor-stat
- 2026-09-03 - (/loop) The vendor
stat is not the POSIX one
under another name
- worklog/375-a-positioned-read-into-the-gpu
- 2026-09-03 - (/loop) A positioned read took the guest into the
GPU
- worklog/376-the-wall-is-a-shader
- 2026-09-03 - (/loop) The wall is
sceAgcCreateShader, and
a cap was hiding it
- worklog/377-routing-two-walls-to-the-console
- 2026-09-03 - (/loop) Two walls that need a measurement, routed to the
mechanism that asks
- worklog/378-the-format-already-carried-it
- 2026-09-04 - (/loop) The record format already carried what it was
said to lack
- worklog/379-the-wide-family-verified
- 2026-09-04 - (/loop) The wide family verified, and the case that
bites
- worklog/380-the-interleaved-sequence
- 2026-09-04 - (/loop) The interleaved sequence, and the sixteen cases
that were blind
- worklog/381-strftime-and-the-question
- 2026-09-04 - (/loop)
strftime, and the question that
found it
- worklog/382-libm-splits-in-two
- 2026-09-04 - (/loop) libm splits in two, and only half belongs
here
- worklog/383-two-rounding-rules
- 2026-09-04 - (/loop) Two rounding rules that pin each other
- worklog/384-caught-by-luck -
2026-09-04 - (/loop)
strdup covered, and a missing
terminator is only caught by luck
- worklog/385-one-clock-two-names
- 2026-09-04 - (/loop) One clock, two names, and one origin
- worklog/386-the-record-said-nothing
- 2026-09-04 - (/loop) The reasoning was in the code, and the record
said nothing
- worklog/387-two-thirds-of-the-ask-list
- 2026-09-04 - (/loop) Two thirds of the ask list is forty
sentences
- worklog/388-one-question-written-149-ways
- 2026-09-04 - (/loop) One question, written a hundred and forty-nine
ways
- worklog/389-asking-for-a-function-that-does-not-exist
- 2026-09-04 - (/loop) The ask list was asking for a function that does
not exist
- worklog/390-a-measurement-in-the-list-of-unknowns
- 2026-09-04 - (/loop) A measurement was sitting in the list of things
nobody knows
- worklog/391-six-records-and-the-axis-closes
- 2026-09-04 - (/loop) Six records said nothing was known while holding
a measurement
- worklog/392-dlsym-succeeds-where-the-console-refuses
- 2026-09-04 - (/loop)
dlsym succeeds where the console
refuses
- worklog/393-measured-values-nothing-looked-at
- 2026-09-04 - (/loop) Forty-seven measured values that no test looked
at
- worklog/394-relations-testable-where-numbers-are-not
- 2026-09-04 - (/loop) The relations are testable where the numbers are
not
- worklog/395-a-permanent-resident-of-the-queue
- 2026-09-04 - (/loop) A permanent resident of the work queue
- worklog/396-the-relation-needed-a-mount
- 2026-09-04 - (/loop) The relation needed a mount, not a guest
- worklog/397-the-wall-is-an-experiment
- 2026-09-04 - (/loop) The wall is an experiment, and there is no guest
to run
- worklog/398-the-oracle-the-roadmap-said-did-not-exist
- 2026-09-04 - (/loop) The oracle the roadmap said did not exist
- worklog/399-the-oracle-draws
- 2026-09-04 - (/loop) The oracle draws
- worklog/400-the-export-was-already-decoded
- 2026-09-04 - (/loop) The export was already decoded, and its blocker
had half expired
- worklog/401-the-fragment-path-does-not-need-the-feature
- 2026-09-04 - (/loop) The fragment path does not need the feature
- worklog/402-the-translator-draws
- 2026-09-04 - (/loop) The translator draws
- worklog/403-the-oracle-carries-a-varying
- 2026-09-04 - (/loop) The oracle carries a varying
- worklog/404-the-wall-was-real
- 2026-09-04 - (/loop) The wall was real, the record was twelve days
stale, VINTRP translates
- worklog/405-the-out-parameter-is-the-whole-wall
- 405. The out-parameter is the whole of the wall
- worklog/406-a-rung-for-the-first-frame
- 406. A rung for the first frame, and a prop that was never
counted
- worklog/407-the-agc-probe-set
- 407. The Agc probe set, aimed from the guest's own arguments
- worklog/408-the-flip-completion-had-no-reader
- 408. The flip completion had no reader
- worklog/409-the-pthread-family-and-a-prediction-kept
- 409. The pthread family, and a prediction kept
- worklog/410-the-tail-and-what-was-decided-not-to-do
- 410. The tail, and what was decided not to do
- worklog/411-the-record-could-not-see-the-work
- 411. The record could not see the work
- worklog/412-the-whole-corpus-was-twelve-days-stale
- 412. The whole corpus was twelve days stale
- worklog/413-libsceult-and-the-quiet-four-gigabytes
- 413. libSceUlt, and the quiet four gigabytes
- worklog/414-the-first-command-packets-came-back
- 414. The first command packets came back
- worklog/415-the-constructor-was-the-wrong-question
- 415. The constructor was the wrong question
- worklog/416-seventy-eight-percent-of-every-call
- 416. Seventy-eight percent of every call
- worklog/417-a-placeholder-that-says-who
- 417. A placeholder that says who
- worklog/418-the-classification-failed-and-found-two-bugs
- 418. The classification failed, and found two bugs on the way
- worklog/419-six-arguments-and-a-refuted-hypothesis
- 419. Six arguments, and a hypothesis that was wrong
- worklog/420-the-ring-is-circular
- 420. The ring is circular, and the trade was false
- worklog/421-the-futex-had-a-name-and-the-wait-now-waits
- 421. The futex had a name, and the wait now waits
- worklog/422-the-stack-the-collector-scans
- 422. The stack the collector scans
- worklog/423-the-fault-message-was-guessing
- 423. The fault message was guessing, and it cost a finding
- worklog/424-the-protection-call-learns-the-other-half
- 424. The protection call learns about the other half of the map
- worklog/425-what-the-guest-opened
- 425. What the guest opened, and the two devices it wanted
- worklog/426-the-wall-was-the-crash-reporter
- 426. The wall was the crash reporter, and the file path it died on has
a name now
- worklog/427-reading-the-command-buffer
- 427. Reading the command buffer, and the two tools that had to be
fixed to do it
- worklog/428-the-determinism-bug-had-two-halves
- 428. The determinism bug had two halves and a third that is
architecture
- worklog/429-autodebugging-starts-by-not-believing-the-run
- 429. Autodebugging starts by not believing the run
- worklog/430-the-hardware-answered-and-the-loop-reads-structures
- 430. The hardware answered, and the loop reads structures by
itself
- worklog/431-the-path-was-globalgamemanagers
- 431. The path was globalgamemanagers, and yesterday's finding was
wrong
- worklog/432-the-bytes-were-not-what-it-wanted
- 432. The bytes were not what it wanted
- worklog/433-the-guest-was-telling-us-all-along
- 433. The guest was telling us all along
- worklog/434-the-answer-was-in-the-title-directory
- 434. The answer was in the title directory
- worklog/435-the-library-was-guest-code-all-along
- 435. The library was guest code all along
- worklog/436-stepping-through-the-construction
- 436. Stepping through the construction
- worklog/437-fifty-eight-not-three
- 437. Fifty-eight, not three
- worklog/438-four-hundred-and-two-bytes
- 438. Four hundred and two bytes
- worklog/439-opened-never-touched
- 439. Opened, never touched
- worklog/440-untouched-not-zero
- 440. Untouched, not zero
- worklog/441-the-other-title
- 441. The other title
- worklog/442-a-different-program
- 442. A different program
- worklog/443-re-derived -
443. Re-derived
- worklog/444-one-branch -
444. One branch
- worklog/445-the-head-of-the-sequence
- 445. The head of the sequence
- worklog/446-a-conflict-nobody-stepped-past
- 446. A conflict nobody stepped past
- worklog/447-the-largest-record-nobody-read
- 447. The largest record nobody read
- worklog/448-five-files-of-twenty-eight
- 448. Five files of twenty-eight
- worklog/449-the-probe-runs-here-too
- 449. The probe runs here too
- worklog/450-the-probe-was-not-calling
- 450. The probe was not calling
- worklog/451-the-encoding-fell-out-of-a-pairing
- 451. The encoding fell out of a pairing
- worklog/452-the-generous-window-was-zero
- 452. The generous window was zero
- worklog/453-the-guest-was-carrying-the-answer
- 453. The guest was carrying the answer
- worklog/454-the-handle-was-never-consulted
- 454. The handle was never consulted
- worklog/455-the-biggest-number-on-the-board
- 455. The biggest number on the board
- worklog/456-advice-that-cannot-succeed
- 456. Advice that cannot succeed
- worklog/457-one-function-two-answers
- 457. One function, two answers
- worklog/458-the-ratchet-cannot-say-worse
- 458. The ratchet cannot say worse
- worklog/459-the-branch-that-printed-nothing
- 459. The branch that printed nothing
- worklog/460-a-record-older-than-the-repository
- 460. A record older than the repository
- worklog/461-a-hypothesis-tested-and-rejected
- 461. A hypothesis tested and rejected
- worklog/462-an-answer-needs-somebody-who-asked
- 462. An answer needs somebody who asked
- worklog/463-the-eboot-was-never-stuck
- 463. The eboot was never stuck
- worklog/464-twenty-blank-pages
- 464. Twenty blank pages
- worklog/465-every-import-accounted-for
- 465. Every import accounted for
- worklog/466-four-numbers
- 466. Four numbers
- worklog/467-two-tables-that-answer-each-other
- 467. Two tables that answer each other
- worklog/468-a-third-title-at-the-same-wall
- 468. A third title at the same wall
- worklog/469-the-binding-reached-the-relocation
- 469. The binding reached the relocation
- worklog/470-the-guest-signals-itself
- 470. The guest signals itself
- worklog/471-the-report-can-see-a-guest-sitting-still
- 471. The report can see a guest sitting still
- worklog/472-the-canary-had-a-name
- 472. The canary had a name
- worklog/473-every-request-came-back-at-once
- 473. Every request came back at once
- worklog/474-the-target-is-not-the-caller
- 474. The target is not the caller
- worklog/475-the-report-learned-to-name-threads
- 475. The report learned to name threads
- worklog/476-the-handler-ran
- 476. The handler ran
- worklog/477-two-readers-one-corpus
- 477. Two readers, one corpus
- worklog/478-the-differential-was-measuring-itself
- 478. The differential was measuring itself
- worklog/479-the-symbol-level
- 479. The symbol level
- worklog/480-further - 480.
FURTHER
- worklog/481-mirrors-and-a-new-wall
- 481. Mirrors, and a new wall
- worklog/482-the-guest-was-talking-all-along
- 482. The guest was talking all along
- worklog/483-the-guest-is-the-only-oracle-left
- 483. The guest is the only oracle left
- worklog/484-the-corpus-has-names
- 484. The corpus has names
- worklog/485-three-roots -
485. Three roots
- worklog/486-the-differential-was-comparing-two-sandboxes
- 486. The differential was comparing two sandboxes
- worklog/487-prospero-trinity-orbis-neo
- 487. Prospero, Trinity, Orbis, Neo
- worklog/488-an-origin-list -
488. An origin list
- worklog/489-the-index-was-never-mine-to-edit
- 489. The index was never mine to edit
- worklog/490-orbis-not-neo -
490. Orbis, not neo
- worklog/491-the-vendor-spelling-of-a-socket
- 491. The vendor spelling of a socket, and the flag that hung the
guest
- worklog/492-orbistoun-was-calling-itself-a-payload
- 492. orbistoun was calling itself a payload
- worklog/493-the-refusal-a-guest-could-not-see
- 493. The refusal a guest could not see
- worklog/494-the-pad-structure-had-been-measured
- 494. The pad structure had been measured
- worklog/495-the-audio-drain-was-arithmetic
- 495. The audio drain was arithmetic
- worklog/496-a-weak-symbol-orbistoun-says-exists
- 496. A weak symbol orbistoun says exists
- worklog/497-the-comparison-ran-on-the-wrong-machine
- 497. The comparison ran on the wrong machine
- worklog/498-weak-undefined-symbols-bind-to-zero
- 498. Weak undefined symbols bind to zero
- worklog/499-the-corpus-is-gpu-bound-and-a-real-header
- 499. The corpus is GPU-bound, and a real header agreed
- worklog/500-the-frontier-fully-mapped-and-what-blocks-it
- 500. The frontier, fully mapped, and the two things that block it
- worklog/501-the-naming-avenue-is-closed-not-untried
- 501. The naming avenue is closed, not untried - and obSCEne's AGC
names are already ours
- worklog/502-the-memory-read-capture-is-hardened-shut-and-obscene-pivoted
- 502. The memory-read capture is hardened shut, and obSCEne pivoted to
calling the builders
- worklog/503-the-wall-moves-mechanically-and-the-next-one-is-not-gpu-blocked
- 503. The wall moves mechanically — and the next one is a kernel
struct, not GPU-blocked
- worklog/504-the-mapper-refuses-cold-and-the-guest-wants-the-fill
- 504. The mapper refuses cold, and the guest wants the fill not the
code
- worklog/505-measured-refusals-dont-move-out-parameter-walls
- 505. Measured refusals do not move out-parameter walls — and Earthion
gates on the mapper
- worklog/506-the-agc-builders-run-as-pure-encoders-and-the-decoder-holds
- 506. The AGC builders run as pure encoders, the decoder holds, and one
builder is new
- worklog/507-create-shader-succeeded-on-hardware-and-the-fill-is-held-for-the-object-model
- 507. create-shader succeeded on hardware, and the fill is held for the
object model
- worklog/508-3c5e-answered-shader-object-is-guest-adjacent-the-cheap-case
- 508. 3c5e answered: the shader object is guest-adjacent - the cheap
case, held ready
- worklog/509-the-mapper-is-agc-linked-earthions-chain-is-one-context
- 509. b7e2 = case (b): the mapper is AGC-linked, and Earthion's chain
is one context
- worklog/510-actioned-4b1a-the-compute-dispatch-stream-decodes-whole
- 510. Actioned 4b1a: obSCEne's compute-dispatch stream decodes whole;
execution is the gap
- worklog/511-e4f1-fixed-a-transcribed-opcode-name-linkage-functions-held
- 511. e4f1: fixed a transcribed opcode name obSCEne's disassembly
caught; linkage HLE held
- worklog/512-sceagccreateshader-implemented-earthion-moved-on-measured-data
- 512. sceAgcCreateShader implemented from the measured model - Earthion
moved, for real
- worklog/_preamble - Work
log
Project memory