Nishi Family › Compare › Engine Instruments
Nishi Compare · capabilities, evidence and delivery
Engine Instruments
Compare capabilities and delivery evidence. Source discovery, qualification, deployment and accepted outcomes are separate; an open contract names work still to verify.
Nishi vs RenderDoc and Tracy and MangoHud and GpuVis and O3DE -- the tools an engine is MEASURED with, built from the first byte in NishiLang. The field ships five excellent programs with five separate capture formats and five clocks, so a frame-time spike can never be joined to the draw call that caused it: you see the spike in one tool and go hunting in another, by eye. Here every subsystem writes into ONE record layout on ONE clock, so that join is arithmetic. Measured 2026-08-28: 24 of 32 rows grounded in source, nx_enginelab_gate 38 of 38 GREEN with 6 bite-proven cells and 7 named negative controls, and the instrument found a real defect in an incumbent on its first run.
Overview
The purpose, declared position and evidence coverage of this domain. Source presence and completed acceptance are different measures.
Where we are. The SPINE is built and gate-proven and the DEPTH is not. One record layout carries frames, CPU zones, GPU queue slices, draw calls, allocations and lock waits on one clock, which makes the cross-class join arithmetic rather than detective work: 24 of 32 board rows ground in source and nx_enginelab_gate runs 38 of 38 GREEN with 6 bite-proven cells and 7 named negative controls. Exact zone self-time, submit-to-start queue latency, an order-sensitive pipeline state hash, redundant-bind counting, a capture diff that names the divergent draw, golden-image regression composed in-process from nx_visual_diff, and a bound verdict that abstains rather than acquits are all present and toothed. On its first run the instrument found a real defect in an incumbent (nx_fpsmeter counted its zero-initialised ring tail as frames on a replayed clock), which was root-fixed and given a regression tooth in the incumbent's own gate. What is absent is everything that makes these tools INTERACTIVE rather than archival: captures live only in memory, nothing replays, no buffer contents or shader source are inspected, there is no sampling profiler for uninstrumented code, no flame export, no live overlay, and no ability to ingest a hardware trace from an engine we did not build.
Where we need to go. An engine instrument that can be pointed at a running system we did not write and answer, in one place, why a frame was slow: capture persisted to a file that can be attached to a bug report and replayed deterministically, real resource and shader contents inspectable per draw, call stacks sampled without source instrumentation, a live overlay for the operator watching the thing run, and hardware trace import so the board can measure rival engines on the same ruler instead of only measuring ours. The join stays the exceed at every rung -- each new capability enters the SAME record layout, so it is joinable to every other on arrival rather than becoming a sixth format.
Research bar. Tracy CPU profiling is measured on Nanosecond-resolution zones, allocations, lock contention and call-stack sampling. Theirs: instrumented zones plus sampling plus flame view. Ours: exact instrumented zones with self time, no sampling and no flame export.
Research bar. MangoHud pacing telemetry is measured on Live in-swapchain overlay of frame times, lows and system telemetry. Theirs: live overlay while the game runs. Ours: post-hoc analysis of a recorded spine, no overlay.
Latest recorded release
No valid dated release entry is recorded for this domain.
Release entries describe recorded changes; they do not establish that every capability passed evaluation.
30 of 32 capability source symbols found|6 of them authored stronger-claims|2 open|coverage 937/1000|adoption 26 full / 4 partial
Evidence profile — what the gaps on this board actually are
Measured by nx_swcompare_evidence, read back by nx_evprofile_lib. Every figure is a count with its denominator — there is deliberately no score, no grade and no percentage anywhere in this band, because a stored scalar is a field a seat can edit and a counted partition is not.
evidence|grounded 30/30|unsupported 0|gates green 2/2|proven able to fail 2/2|never bitten 0|green at 0/0 0|open gaps 2|of them unnamed 0|of them proof withheld 0|flips ready 1
proven able to fail counts the gates that have a RECORDED RED — nx_gate_bite mutated the gate subject, rebuilt it, watched the gate go red, and that record is inside the shared TTL. never bitten is its complement over the same denominator: those gates ran and were green, and nothing has ever shown them able to detect anything, so their green is a statement about this run and not about the gate. green at 0/0 is a separate and much weaker observation — the gate printed GREEN on a zero denominator, so its own tooth counter says it examined nothing. A gate can be green, non-zero, and still never bitten; that is the common case and it is now visible instead of implied.
partition: grounded + unsupported = 30 vs present 30 · named + unnamed + withheld = 2 vs open 2 · both reconcile
liar-kill conj=GPQN · all four conjuncts held
graded document: BUILDROOT tree, 17173 bytes · gates map: PRIMARY · stamped 0d 13h ago · source ../knowledge/status/evstamp_enginelab.verdict
| Gap class | What it is, and the work it names |
|---|---|
| FLIP-READY | A watch contract symbol is now present in the organ it named: the cell can flip on a pure data edit with no new code. These are the cheapest closures on this board and they belong before any new work. |
nx_swcompare_evidence enginelab itself and are not carried on the stamp, so this page names the classes and the producer names the rows. That split is stated rather than hidden: a count without a worklist is not actionable, and this band is honest about which half of that it is.Production map
Follow the dependencies, declared acceptance criteria and recorded priorities. Inspect source binding before treating a rank as executable work.
Ranking source binding: STALE_INCONSISTENT. Recorded priorities require current acceptance evidence and resource checks before execution.
Recorded ranking withheld
Current prerequisite graph is invalid or unavailable. Historical rank data is retained, but cannot establish a current order. Latest execution outcome is unverified.
Declared roadmap — contract, acceptance, executor, effort
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| Persist a capture to a file and reopen it byte-identically (EL1) after none | el_capture_write | A capture written, reloaded, and proven to reproduce every analyzer figure bit-identically to the in-memory original, with a truncated file REFUSED rather than partially parsed | organ | 2 u |
| Deterministic replay of a captured draw stream (EL2) after EL1 | el_replay | Replaying a capture reproduces the same state-hash sequence, proven by a tooth that mutates one draw and sees the replay diverge at exactly that ordinal | organ | 3 u |
| Inspect real resource and buffer contents per draw (EL3) after EL1 | el_resource_read | A named buffer readable back from a capture with its bytes, and a tooth proving two draws whose state hash matches also match on contents, so the hash is shown to be a sound proxy rather than assumed to be | organ | 3 u |
| Shader and pipeline source inspection per draw (EL4) after EL3 | el_shader_dump | The shader bound at a given draw ordinal recoverable from the capture, bite-proven against a capture where two draws bind different shaders | organ | 2 u |
| Sampling profiler for code with no instrumentation (EL5) after none | el_sample_stack | Periodic stack samples attributed to zones with a stated sampling interval and a published horizon, so what the sampler CANNOT see is on the record beside what it can | organ | 4 u |
| Flame graph and call-tree export (EL6) after none | el_flame_emit | A call tree emitted from the existing parent-child accounting, with a tooth asserting the tree total reconciles exactly to the sum of root inclusive times | organ | 2 u |
| Live overlay driven by the running frame spine (EL7) after none | el_overlay_emit | An overlay reading the same spine the analyzers read, with a tooth proving the overlay figure equals el_frame_stats on the same data -- one ruler, two surfaces, no second answer. SECOND CLAUSE, added 2026-08-28 from a sibling lane and binding: the overlay must publish a frame-time number and an IMAGE-QUALITY number ON THE SAME CLOCK, because a pacing figure published alone is exactly how performance work silently becomes pixels -- nothing in this estate currently measures the image that an adaptive-quality controller degrades, so an overlay that reports only milliseconds would make the degradation invisible while appearing to instrument it | organ | 4 u |
| Import a hardware or vendor GPU trace onto the spine (EL8) after EL1 | el_trace_import | An external trace mapped onto EL_K_GPU records such that el_bound_verdict and el_frame_attr work unchanged on it, proving the spine is a general format and not a private one | organ | 5 u |
Milestones
| Milestone | Rungs | Cumulative |
|---|---|---|
| M0 · The spine, proven | admission | 0 u |
| M1 · Captures that leave the process | EL1 EL2 | 5 u |
| M2 · Depth inside a capture | EL3 EL4 | 10 u |
| M3 · Profiling code we did not instrument | EL5 EL6 | 16 u |
| M4 · Live and external | EL7 EL8 | 25 u |
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| The engine-lab spine is admitted and proven (admission) | - | DECLARED 2026-09-04 by nx_board_idref_gate. This board's milestone M0 reads The spine, proven at cost 0 with exactly one member, admission, and no rung of that name existed, so M0 counted a member the board could not enumerate and its cumulative estimate was over a set nobody could list. The member is a real subject rather than a typo -- the admission spine that every later engine-lab rung builds on -- and M0 carries it at zero cost because it was already proven when the milestone was written. Declaring it makes M0 enumerable. If the owning lane meant an EL-numbered rung instead, renumber this row rather than deleting it. | Board | 0 u |
| Class | Count | Note |
|---|---|---|
| bars | 0 | sotabar rows on the plan |
| fresh | 0 | the bar month is the current month |
| attested | 0 | an older bar with a this-month barscan reporting no newer entry |
| stale | 0 | a this-month scan saw a newer month the bar ignores |
| unattested | 0 | nobody looked this month |
| malformed | 0 | a sotabar row missing a field |
| duplicate | 0 | bar ids an earlier row already carries |
| bars, summed | 0 | RECONCILED: the parts sum to the total 0 |
| current month | 2026-10 | the month every bar is judged against |
Inspect a rung and its prerequisites
Declared nodes 9. Rank input binding: STALE_INCONSISTENT. Dependency order is authored. Implementation, acceptance evidence, authority and resource readiness are unverified. No action is recommended or dispatched here.
Plan SHA-256 2e8c9fc75fa90cf39749b3658b718203b9fcc5a092265828fc49ebaa518004c2. Target rows 0; role rows 0. Existing risks and release worklog retain their own scope; no node completion is inferred.
Invalid declared graph. Malformed rows or IDs 0; duplicate IDs 0; duplicate prerequisites 0; missing prerequisites 4; cyclic or cycle-dependent nodes 0. Node paths withheld.
Learning and practice paths
No structured learning path is declared for this plan. Existing research, roadmap and worklog remain available above.
Rung dossiers — every record that bears on a rung, in one place
nx_swcompare_evidence enginelab writes it beside its stamp); every gate below reads UNRECORDED until it runs.knowledge/organ_gate.conf read from this working directory (1 rows) and from the estate root (196 rows); rows in both counted once: 0; declarations read: 197. Every declaration in either copy counts, so a stub beside the publisher can never hide the root.EL1 Persist a capture to a file and reopen it byte-identically · cell PRESENT · gate NO-GATE-DECLARED
| Contract | el_capture_write · executor organ · 2 u · stands on none (UNRESOLVED: no such rung on this plan) |
|---|---|
| Definition of done | A capture written, reloaded, and proven to reproduce every analyzer figure bit-identically to the in-memory original, with a truncated file REFUSED rather than partially parsed |
| Matrix cell | CAPTURE: persist a capture to a file so it can be shipped and reopened · runtime/nx_enginelab_store.nx · PRESENT decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_enginelab_store; declare nx_enginelab_store TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | no log row names this rung yet |
EL2 Deterministic replay of a captured draw stream · cell PRESENT · gate NO-GATE-DECLARED
| Contract | el_replay · executor organ · 3 u · stands on EL1 |
|---|---|
| Definition of done | Replaying a capture reproduces the same state-hash sequence, proven by a tooth that mutates one draw and sees the replay diverge at exactly that ordinal |
| Matrix cell | CAPTURE: deterministic replay of a captured frame · runtime/nx_enginelab_analysis.nx · PRESENT decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_enginelab_analysis; declare nx_enginelab_analysis TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | no log row names this rung yet |
EL3 Inspect real resource and buffer contents per draw · cell WATCHING · gate NO-GATE-DECLARED
| Contract | el_resource_read · executor organ · 3 u · stands on EL1 |
|---|---|
| Definition of done | A named buffer readable back from a capture with its bytes, and a tooth proving two draws whose state hash matches also match on contents, so the hash is shown to be a sound proxy rather than assumed to be |
| Matrix cell | CAPTURE: inspect real resource and buffer CONTENTS per draw · runtime/nx_enginelab_lib.nx · WATCHING decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_enginelab_lib; declare nx_enginelab_lib TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | no log row names this rung yet |
EL4 Shader and pipeline source inspection per draw · cell PRESENT · gate NO-GATE-DECLARED
| Contract | el_shader_dump · executor organ · 2 u · stands on EL3 |
|---|---|
| Definition of done | The shader bound at a given draw ordinal recoverable from the capture, bite-proven against a capture where two draws bind different shaders |
| Matrix cell | CAPTURE: shader and pipeline source inspection · runtime/nx_enginelab_analysis.nx · PRESENT decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_enginelab_analysis; declare nx_enginelab_analysis TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | no log row names this rung yet |
EL5 Sampling profiler for code with no instrumentation · cell PRESENT · gate NO-GATE-DECLARED
| Contract | el_sample_stack · executor organ · 4 u · stands on none (UNRESOLVED: no such rung on this plan) |
|---|---|
| Definition of done | Periodic stack samples attributed to zones with a stated sampling interval and a published horizon, so what the sampler CANNOT see is on the record beside what it can |
| Matrix cell | CPU: sampling profiler that needs no source instrumentation · runtime/nx_enginelab_analysis.nx · PRESENT decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_enginelab_analysis; declare nx_enginelab_analysis TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | no log row names this rung yet |
EL6 Flame graph and call-tree export · cell PRESENT · gate NO-GATE-DECLARED
| Contract | el_flame_emit · executor organ · 2 u · stands on none (UNRESOLVED: no such rung on this plan) |
|---|---|
| Definition of done | A call tree emitted from the existing parent-child accounting, with a tooth asserting the tree total reconciles exactly to the sum of root inclusive times |
| Matrix cell | CPU: flame graph and call-tree export · runtime/nx_enginelab_analysis.nx · PRESENT decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_enginelab_analysis; declare nx_enginelab_analysis TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | no log row names this rung yet |
EL7 Live overlay driven by the running frame spine · cell LANDED · gate NO-GATE-DECLARED
| Contract | el_overlay_emit · executor organ · 4 u · stands on none (UNRESOLVED: no such rung on this plan) |
|---|---|
| Definition of done | An overlay reading the same spine the analyzers read, with a tooth proving the overlay figure equals el_frame_stats on the same data -- one ruler, two surfaces, no second answer. SECOND CLAUSE, added 2026-08-28 from a sibling lane and binding: the overlay must publish a frame-time number and an IMAGE-QUALITY number ON THE SAME CLOCK, because a pacing figure published alone is exactly how performance work silently becomes pixels -- nothing in this estate currently measures the image that an adaptive-quality controller degrades, so an overlay that reports only milliseconds would make the degradation invisible while appearing to instrument it |
| Matrix cell | PACING: a live on-screen overlay in the swapchain · runtime/nx_enginelab_lib.nx · LANDED decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_enginelab_lib; declare nx_enginelab_lib TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | no log row names this rung yet |
EL8 Import a hardware or vendor GPU trace onto the spine · cell WATCHING · gate NO-GATE-DECLARED
| Contract | el_trace_import · executor organ · 5 u · stands on EL1 |
|---|---|
| Definition of done | An external trace mapped onto EL_K_GPU records such that el_bound_verdict and el_frame_attr work unchanged on it, proving the spine is a general format and not a private one |
| Matrix cell | GPU: import a real hardware GPU trace · runtime/nx_enginelab_lib.nx · WATCHING decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_enginelab_lib; declare nx_enginelab_lib TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | no log row names this rung yet |
admission The engine-lab spine is admitted and proven · cell NO-MATRIX-ROW · gate NO-MATRIX-ROW
| Contract | - · executor Board · 0 u · stands on nothing |
|---|---|
| Definition of done | DECLARED 2026-09-04 by nx_board_idref_gate. This board's milestone M0 reads The spine, proven at cost 0 with exactly one member, admission, and no rung of that name existed, so M0 counted a member the board could not enumerate and its cumulative estimate was over a set nobody could list. The member is a real subject rather than a typo -- the admission spine that every later engine-lab rung builds on -- and M0 carries it at zero cost because it was already proven when the milestone was written. Declaring it makes M0 enumerable. If the owning lane meant an EL-numbered rung instead, renumber this row rather than deleting it. |
| Matrix cell | NO-MATRIX-ROW — no matrix row carries -; the ranker reads this rung as unmapped and no cell can flip for it. Add the row and the join completes on the next publish. |
| Gate | the gate join needs a matrix row: no organ is named for this rung |
| Work log | no log row names this rung yet |
dossiers=9 cells_joined=8 no_matrix_row=1 (sum 9) gates_recorded=0 gates_unrecorded=0 no_gate_declared=8 (sum 8 of cells_joined) evgates=UNSTAMPED
Capability comparisons
Compare the field, search individual capabilities and open their source and adoption evidence. Documented presence does not establish comparative quality.
Position map — centrality and distinctiveness
The four-quadrant map the field uses for brand strategy (Dawar and Bagga, HBR June 2015), re-derived from this matrix on every publish. Centrality is the share of the category's feature mass a player covers, each feature weighted by how many hold it; distinctiveness is the average lead over each rival on the rows the player holds; breadth is the depth-weighted share of the whole matrix (the bubble); depth is how deeply the rows held are held; momentum is the day-over-day move off the spine (green rising, red falling, grey until day two); the dashed path runs first day → previous day → today. Dividers are the category means. Axes are fitted to the field of play, so read the tick numerals, not the frame. Rival marks are documented presence, so a rival's position reads the record, never its quality. The picture grades its own readability below; the table beside it is the same data for a screen reader or a second method.
knowledge/compare/enginelab.cdmap (cut|x|y, cube|x|y|z); absent = the HBR defaultsbubble area = breadth · ring = momentum (green rising, red falling, grey until day two) · dashed = category means · axes fitted to the field of play: centrality 0–1000, distinctiveness 350–750 of 0–1000 permil (the full range put every player in one corner)
readability of the 2D cut, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 0 (a fact of the data: two players that close are that close) · data spread 715 permil of the plot · quadrant words unseated 0
text contrast, measured with wcag2-ratio (floors from contrast.conf), light theme: labels 16.24 (floor 4.50) · notes 16.24 (floor 4.50) · quadrant words 5.89 (floor 4.50) · tick numerals 5.89 (floor 4.50) · axis titles 5.59 (floor 4.50) · dark theme: labels 13.78 (floor 4.50) · quadrant words 5.55 (floor 4.50) · axis titles 5.97 (floor 4.50) · dark classes under their floor 0 (one figure serves both themes: a dark shortfall is a token to fix, never a class to hide) · classes refused under their floor 0 (a refused class is not drawn; the scale classes are measured, never hidden) · export: SVG PNG (receipt, rendered by the estate's own rasteriser from this page)
readability of the 3D cube, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 1 (a fact of the data: two players that close are that close) · data spread 386 permil of the plot
10 panels over 5 registered axes, every pair once (the lower axis on x, the higher on y) · each panel fitted to its own field of play, first and last tick numerals shown · no labels in a small cut, the legend names the colours; the grade below reports the mark terms only (MM summed over the panels, spread averaged)
readability of the small multiples, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 6 (a fact of the data: two players that close are that close) · data spread 554 permil of the plot
| Player | Quadrant | centrality | distinctiveness | breadth | depth | momentum | Rows held | Days on spine | First seen |
|---|---|---|---|---|---|---|---|---|---|
| Nishi | Mainstream | 972 | 551 | 687 | 733 | 0 since 2026-09-23 | 30 | 10 | 2026-09-15 |
| RenderDoc 1.45 | Unconventional | 356 | 680 | 281 | 900 | 0 since 2026-09-23 | 10 | 10 | 2026-09-15 |
| Tracy | Aspirational | 520 | 594 | 333 | 888 | 0 since 2026-09-23 | 12 | 10 | 2026-09-15 |
| MangoHud | Unconventional | 205 | 688 | 166 | 888 | 0 since 2026-09-23 | 6 | 10 | 2026-09-15 |
| GpuVis | Peripheral | 369 | 511 | 218 | 777 | 0 since 2026-09-23 | 9 | 10 | 2026-09-15 |
| O3DE | Peripheral | 301 | 422 | 145 | 777 | 0 since 2026-09-23 | 6 | 10 | 2026-09-15 |
| Day | Matrix rows reviewed | Players recorded |
|---|---|---|
| 2026-09-15 | 32 | 6 |
| 2026-09-16 | 32 | 6 |
| 2026-09-17 | 32 | 6 |
| 2026-09-18 | 32 | 6 |
| 2026-09-19 | 32 | 6 |
| 2026-09-20 | 32 | 6 |
| 2026-09-21 | 32 | 6 |
| 2026-09-22 | 32 | 6 |
| 2026-09-23 | 32 | 6 |
| 2026-10-08 | 32 | 6 |
players 6|matrix rows 32|feature mass 73|centrality mean 453|distinctiveness mean 574|axes 5|spine days 10 (shown 10)|rows written today 0|readability defects 2D 0 cube 0|spine knowledge/status/cdmap/enginelab.spine
Capability matrix — measured against source
◉ authored stronger claim; source present● present◐ partial○ absent? unassessed; excluded from relative comparison · click any capability for its evidence
Peer cell coverage: authored assessed 160, unassessed 0. Authored assessments are not verified outcomes.
No capabilities match this filter or search.
| Capability | Nishi | RenderDoc 1.45 | Tracy | MangoHud | GpuVis | O3DE |
|---|---|---|---|---|---|---|
| SPINE | ||||||
one record layout for frame, zone, GPU slice, draw, allocation and lock, on one clockSource present; authored stronger claim:el_push in runtime/nx_enginelab_lib.nx, verified at emit. THE reason this board exists. Eight i64 per event, payload meanings named per kind rather than remembered. Every rival records a DIFFERENT format with a different clock, which is not a criticism of any of them -- each is excellent at its own subject -- but it is why no rival can offer the join row below. Gate T1 asserts a pushed record reads back on every field. Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of RenderDoc 1.45, Tracy, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ | ○ |
a full store REFUSES the event, counts the refusal, and reports incomplete coverageSource present; authored stronger claim:el_complete in runtime/nx_enginelab_lib.nx, verified at emit. NO SILENT CAPS, made structural rather than remembered. A cap reached in silence becomes a measurement nobody knows is partial, so el_push returns -1 and increments a drop counter, and el_complete is the one call that says whether every event offered was stored. Gate T2 plus a named negative control proving the store reports complete BEFORE it overflows. Profilers in the field drop events under load by design; the difference here is that the drop is reported in the same structure that holds the data. Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of RenderDoc 1.45, Tracy, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ | ○ |
| CPU | ||||||
zone SELF time, computed exactly by charging each child back to its parentMeasured:el_zone_self exists in runtime/nx_enginelab_lib.nx, verified at emit. Inclusive time says a function is expensive; only SELF time says whether the cost is IN it or BELOW it, and an instrument reporting inclusive alone sends every reader to the top of the call tree. Each open zone accumulates its direct children in its own record, so self equals duration minus children, exact and never sampled. Gate T3 asserts 100 inclusive minus 30 child equals 70 self. Tracy is the reference implementation of this idea and is coded Best [tracy]. Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, MangoHud; fully adopted on the estate ladderCons behind Tracy (leads) | ● | ○ | ◉ | ○ | ● | ● |
per-name aggregation with still-open scopes reported, never folded into the totalsMeasured:el_zone_agg exists in runtime/nx_enginelab_lib.nx, verified at emit. Calls, inclusive, self and max per zone name, plus a separate count of occurrences still open at read time. An open scope has no duration, and averaging it in as zero is how a hot zone disappears from its own report. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons behind Tracy (leads) | ● | ○ | ◉ | ○ | ○ | ○ |
the hottest zone by SELF time across a captureMeasured:el_zone_hottest exists in runtime/nx_enginelab_lib.nx, verified at emit. Returns -1 rather than nominating record zero when no closed zone exists, because an empty capture has no hottest zone and a default that looks like an answer is worse than an absence. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons behind Tracy (leads) | ● | ○ | ◉ | ○ | ○ | ○ |
root-zone resolution so nested scopes are never double-countedMeasured:el_zone_is_root exists in runtime/nx_enginelab_lib.nx, verified at emit. A zone is a root when no other closed zone on the same thread strictly contains it. Summing nested zones would manufacture an occupancy above 1000 permil out of entirely correct data, which is the arithmetic that makes a CPU-bound verdict wrong in the flattering direction. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ○ | ● | ○ | ○ | ○ |
allocation and free accounting with UNMATCHED FREES surfaced as their own classMeasured:el_mem_stats exists in runtime/nx_enginelab_lib.nx, verified at emit. Live bytes are allocations minus the allocations actually matched by a free. An unmatched free means the capture began mid-run, so the leak number describes the WINDOW and not the program -- surfaced as ORPHAN rather than swallowed, so the caller can say which. Gate T31 plus a named negative control. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons behind Tracy (leads) | ● | ○ | ◉ | ○ | ○ | ○ |
lock-wait events carried on the same spine as everything elseMeasured:el_lock_wait exists in runtime/nx_enginelab_lib.nx, verified at emit. Contention is recorded as a first-class event with its owner, so it lands in the frame join below rather than in a separate tool. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, MangoHud, O3DE; fully adopted on the estate ladderCons behind Tracy (leads) | ● | ○ | ◉ | ○ | ● | ○ |
| PACING | ||||||
frame statistics with every definition stated in the sourceMeasured:el_frame_stats exists in runtime/nx_enginelab_lib.nx, verified at emit. Frames, span, average, worst, median, stutter count, and the count of frames left OPEN and therefore excluded from every statistic. A percentile with an unstated definition is a number two people read two ways. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, GpuVis; fully adopted on the estate ladderCons behind MangoHud (leads) | ● | ○ | ● | ◉ | ○ | ● |
the 1 percent low as the MEAN of the worst 1 percent, not the 99th percentile frame timeMeasured:el_low_mean_fps exists in runtime/nx_enginelab_lib.nx, verified at emit. These two are different numbers and quoting one while meaning the other is how pacing claims drift. The CapFrameX and MangoHud sense is implemented and named in the source [mangohud]. Gate T10 asserts the low is STRICTLY worse than the average on a spiky series, so the statistic is proven to DISCRIMINATE rather than merely to compute -- a signal that fires on everything discriminates nothing. Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, Tracy, GpuVis, O3DE; fully adopted on the estate ladderCons behind MangoHud (leads) | ● | ○ | ○ | ◉ | ○ | ○ |
stutter detection against a multiple of the MEDIAN, threshold passed as a parameterMeasured:el_frame_stats exists in runtime/nx_enginelab_lib.nx, verified at emit. Bars are arguments with named default consts, never numbers buried in code, so a stutter definition can be driven from conf. Gate T11 is a BITE cell: the detector fires on an injected 100ms spike and stays silent on a perfectly paced series. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, Tracy, GpuVis, O3DE; fully adopted on the estate ladderCons behind MangoHud (leads) | ● | ○ | ○ | ◉ | ○ | ○ |
rolling FPS COMPOSED from nx_fpsmeter rather than re-implementedMeasured:el_fps_rolling exists in runtime/nx_enginelab_lib.nx, verified at emit. There is exactly one rolling FPS meter in this estate and this routes through it, so if that meter changes this changes with it and there is no second answer to reconcile. THIS ROW FOUND A REAL DEFECT: gate T13 failed on its first run because fm_fps scanned all 128 ring slots and counted the zero-initialised tail as real frames whenever the clock was near zero -- exactly the regime a REPLAYED capture lives in. Root-fixed in the incumbent to scan only its own fill count, which is bit-identical once the ring is warm. The incumbent gate could not have caught it: all three of its teeth start at t0 equals 100000, so its fixture could never reach the condition. It now carries a regression tooth and runs 4 of 4 GREEN. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, Tracy, GpuVis, O3DE; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ○ | ○ | ● | ○ | ○ |
per-frame budget verdict COMPOSED from nx_frame_budgetMeasured:el_budget_verdict exists in runtime/nx_enginelab_lib.nx, verified at emit. Budget and headroom come from the estate's one budget organ. Gate T14 asserts a 16ms frame fits the 60fps budget at 16666us with 666us headroom, and T15 bite-proves the over-run direction. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, Tracy, GpuVis; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ○ | ○ | ● | ○ | ● |
| GPU | ||||||
queue slices recorded with SUBMIT and START as separate timestampsMeasured:el_gpu_slice exists in runtime/nx_enginelab_lib.nx, verified at emit. Recording only execution time cannot answer whether the GPU is starved by the CPU or backed up behind itself. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of MangoHud, O3DE; fully adopted on the estate ladderCons behind GpuVis (leads) | ● | ● | ● | ○ | ◉ | ○ |
submit-to-start LATENCY measured, not just execution timeMeasured:el_gpu_stats exists in runtime/nx_enginelab_lib.nx, verified at emit. The number that says which of those two is happening. Gate T19 asserts a 50us wait is measured from a slice submitted at 50 and started at 100. GpuVis is the reference tool for reading hardware queue timelines and is coded Best on this row [gpuvis]. Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, Tracy, MangoHud, O3DE; fully adopted on the estate ladderCons behind GpuVis (leads) | ● | ○ | ○ | ○ | ◉ | ○ |
the CPU-bound or GPU-bound verdict ABSTAINS when it has no GPU evidenceSource present; authored stronger claim:el_bound_verdict in runtime/nx_enginelab_lib.nx, verified at emit. Five outcomes and the third one is load-bearing. With no GPU slices in the window the answer is UNKNOWN, never CPU-BOUND: reporting a bound because the other unit was not instrumented is an instrument acquitting on absent evidence, and it fails in the flattering direction so nobody investigates. Gate T16 and T17 prove both real verdicts at 980 permil occupancy, and a NAMED negative control proves the abstention. No rival ships a bound verdict that refuses to answer. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of RenderDoc 1.45, Tracy, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ● | ○ |
| CAPTURE | ||||||
draw calls recorded with pipeline, vertex count and bound-state hashMeasured:el_draw exists in runtime/nx_enginelab_lib.nx, verified at emit. RenderDoc is the reference frame debugger and is coded Best across the capture rows: its own introduction describes a graphics debugger for Vulkan, D3D11, D3D12, OpenGL and OpenGL ES [renderdoc]. Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Tracy, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons behind RenderDoc 1.45 (leads) | ● | ◉ | ○ | ○ | ○ | ○ |
an ORDER-SENSITIVE pipeline state hashMeasured:el_state_hash exists in runtime/nx_enginelab_lib.nx, verified at emit. Polynomial and integer. Two draws with the same bindings in a DIFFERENT order are not the same state and must not hash alike, which gate T26 asserts directly. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Tracy, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons behind RenderDoc 1.45 (leads) | ● | ◉ | ○ | ○ | ○ | ○ |
redundant consecutive state binds countedMeasured:el_draw_redundant exists in runtime/nx_enginelab_lib.nx, verified at emit. Every redundant bind is work the engine paid for and did not need -- the classic finding a frame debugger exists to surface. Gate T24 is a BITE cell and T25 asserts the count is exactly one, not merely that something was flagged. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Tracy, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons behind RenderDoc 1.45 (leads) | ● | ◉ | ○ | ○ | ○ | ○ |
two captures diffed to NAME the exact divergent draw, the field and both valuesSource present; authored stronger claim:el_capture_diff in runtime/nx_enginelab_lib.nx, verified at emit. The frame debugger's real job, made arithmetic. Two captures of the same frame that render differently: this returns the draw ordinal, a field code saying WHAT differs, and both values, instead of leaving a human to compare two lists by eye. Gate T21 asserts ordinal 2 field VERTS values 300 against 999, and T22 bite-proves it. A diff over ZERO draws returns UNMEASURABLE and never SAME, proven by a named negative control: two captures that recorded nothing are not two identical frames, and returning SAME there would let a harness that captured nothing report a clean run forever. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of RenderDoc 1.45, Tracy, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ● | ○ | ○ | ○ | ○ |
| REGRESSION | ||||||
golden-image comparison COMPOSED in-process from nx_visual_diffMeasured:el_golden exists in runtime/nx_enginelab_golden.nx, verified at emit. Grid-cell parity against a stored reference, composed as a FUNCTION rather than forked as a program, because handing a whole-image walker the wrong shape of argument is how a zero-subject run comes back GREEN. O3DE is the reference for engine-side automated image-comparison testing and is coded Best [o3de]. Gate T27 and T28 assert 1000 permil on identical images and 15 of 16 cells on one altered cell, and T29 bite-proves the pair. Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, Tracy, MangoHud, GpuVis; fully adopted on the estate ladderCons behind O3DE (leads) | ● | ○ | ○ | ○ | ○ | ◉ |
the comparator's REFUSAL survives composition instead of flattening into a passSource present; authored stronger claim:el_golden in runtime/nx_enginelab_golden.nx, verified at emit. nx_visual_diff returns -1 for a window it cannot actually measure, and it does so because that exact case once banked eight perfect frames that were never compared. Turning that refusal into a PASS one layer up would re-open the defect, so el_golden returns UNMEASURABLE and a named negative control asserts it. A regression harness that reports PASS for a comparison it could not perform is worse than no harness. Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of RenderDoc 1.45, Tracy, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ | ○ |
| THE JOIN | ||||||
one call ties a frame to its draws, GPU queue time, CPU root time, lock wait and bytesSource present; authored stronger claim:el_frame_attr in runtime/nx_enginelab_lib.nx, verified at emit. THE EXCEED, and it is mechanical rather than clever: it exists only because all five instrument classes share one record layout and one clock. For a given frame it returns duration, draw count, GPU busy, CPU root time, lock wait, bytes allocated, and the hottest zone BY SELF TIME. No rival can answer this at all -- not through lack of skill but because their captures are separate files, and joining them would mean correlating two clocks after the fact. Gate T33 T34 and T35 assert every field including that CPU root time sums without double-counting. Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of RenderDoc 1.45, Tracy, MangoHud, GpuVis, O3DE; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ | ○ |
| HARNESS | ||||||
the instrument is gate-proven with bite cells and named negative controlsMeasured:eg_mk_capture exists in runtime/nx_enginelab_gate.nx, verified at emit. 38 of 38 GREEN via /api/gate_run exit_code 0. Fixtures are built in memory inside the gate process, never on disk and never shared with a production beat, so there is no teardown to skip and no run that can poison the next. Seven controls are named neg-control so a census can COUNT them: a control nobody can find is a control nobody maintains. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: GATE:LIVE trial=- — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of MangoHud, GpuVis; fully adopted on the estate ladderCons behind O3DE (leads) | ● | ● | ● | ○ | ○ | ◉ |
| CAPTURE | ||||||
persist a capture to a file so it can be shipped and reopenedMeasured:el_capture_write exists in runtime/nx_enginelab_store.nx, verified at emit. OPEN AND STATED. Captures are in-memory only today, which means they cannot be attached to a bug report or diffed across machines. RenderDoc's rdc file is the reference for this and the whole workflow depends on it. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of MangoHud; fully adopted on the estate ladderCons behind RenderDoc 1.45 (leads), Tracy (leads) | ● | ◉ | ◉ | ○ | ● | ● |
deterministic replay of a captured frameMeasured:el_replay exists in runtime/nx_enginelab_analysis.nx, verified at emit. OPEN AND STATED. Recording a draw stream is not re-executing it, and replay is what makes a frame debugger interactive rather than archival. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program.Pros Implementing source symbol found; runtime acceptance separate; ahead of Tracy, MangoHud, GpuVis, O3DECons behind RenderDoc 1.45 (leads); not adopted yet: imported only by validation organs (gates, tests, benches): wire it into a shipping program | ● | ◉ | ○ | ○ | ○ | ○ |
inspect real resource and buffer CONTENTS per drawDARK —runtime/nx_enginelab_lib.nx EXISTS but does not declare el_resource_read: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. OPEN AND STATED. We record a state HASH, which detects that two draws differ; RenderDoc shows you the actual vertex buffer and texture, which tells you HOW. That is a genuinely deeper capability and the gap is named rather than blurred. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind themPros none measured yetCons behind RenderDoc 1.45 (leads); open contract; expected source declaration not established | ○ | ◉ | ○ | ○ | ○ | ○ |
shader and pipeline source inspectionMeasured:el_shader_dump exists in runtime/nx_enginelab_analysis.nx, verified at emit. OPEN AND STATED. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program.Pros Implementing source symbol found; runtime acceptance separate; ahead of Tracy, MangoHud, GpuVis, O3DECons behind RenderDoc 1.45 (leads); not adopted yet: imported only by validation organs (gates, tests, benches): wire it into a shipping program | ● | ◉ | ○ | ○ | ○ | ○ |
| CPU | ||||||
sampling profiler that needs no source instrumentationMeasured:el_sample_stack exists in runtime/nx_enginelab_analysis.nx, verified at emit. OPEN AND STATED. Every zone here is an explicit begin and end in source. Sampling call stacks of an uninstrumented binary is a different mechanism and the one that makes a profiler usable on code you do not own. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program.Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, MangoHud, O3DECons behind Tracy (leads); not adopted yet: imported only by validation organs (gates, tests, benches): wire it into a shipping program | ● | ○ | ◉ | ○ | ● | ○ |
flame graph and call-tree exportMeasured:el_flame_emit exists in runtime/nx_enginelab_analysis.nx, verified at emit. OPEN AND STATED. The parent-child arithmetic is already there in the self-time accounting; what is absent is the emission. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program.Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, MangoHud, O3DECons behind Tracy (leads); not adopted yet: imported only by validation organs (gates, tests, benches): wire it into a shipping program | ● | ○ | ◉ | ○ | ● | ○ |
| PACING | ||||||
a live on-screen overlay in the swapchainMeasured:el_overlay_emit exists in runtime/nx_enginelab_lib.nx, verified at emit. OPEN AND STATED. Everything here is post-hoc analysis of a recorded spine. MangoHud draws while the game runs, which is a different and genuinely useful thing [mangohud]. Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of RenderDoc 1.45, Tracy, GpuVis, O3DE; fully adopted on the estate ladderCons behind MangoHud (leads) | ● | ○ | ○ | ◉ | ○ | ○ |
| GPU | ||||||
import a real hardware GPU traceDARK —runtime/nx_enginelab_lib.nx EXISTS but does not declare el_trace_import: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. OPEN AND STATED. Queue slices are recorded by our own instrumentation today. Ingesting a vendor or kernel trace is what would let this board measure engines we did not build. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind themPros none measured yetCons behind GpuVis (leads); open contract; expected source declaration not established | ○ | ○ | ○ | ○ | ◉ | ○ |
| Class | Count | Note |
|---|---|---|
| rows with rival marks | 28 | rows carrying a Yes, Best or Part in a rival column |
| cited | 6 | a reference mark resolves to a pinned mirror |
| uncited | 22 | an observation read, badged until a reference lands |
| rows, summed | 28 | RECONCILED: the parts sum to the total 28 |
Delivery and evidence
Inspect risks, technical debt, rendered observations, experiments and references. Read scope and limitations alongside every result.
Risk register
| Risk | Likelihood x impact | Mitigation |
|---|---|---|
| The spine becomes a sixth capture format nobody else can read | medium x high | EL8 is deliberately on the ladder: importing an external trace onto the same records is the proof that the layout is general rather than private, and it is the rung that makes the board able to measure engines we did not build. |
| A sampling profiler reports a confident distribution of noise | medium x high | EL5 done-rule requires a stated sampling interval and a published horizon, so what the sampler cannot see is on the record beside what it can, exactly as the existing rolling-FPS horizon is stated rather than implied. |
| Depth rungs quietly drop the abstention discipline that makes the present rows trustworthy | low x high | Every rung done-rule above names a bite or a refusal case, never only a success case: EL1 refuses a truncated file, EL2 must diverge at the mutated ordinal, EL3 must prove the hash is a sound proxy rather than assume it. |
| The instruments pass while the product is visibly wrong -- the case this board exists to answer | high x high | FIVE INDEPENDENT WITNESSES IN ONE DAY, 2026-08-28. ATTRIBUTION IS PART OF THE EVIDENCE: four were measured by a sibling lane and are recorded here as that lane's measurements, NOT re-verified from this one -- a capture organ published 240x150 of a 1920x1200 frame as evidence; a judge scored the top 50 rows of a 1200-row frame and returned a confident number; a governor ratcheted against a triangle count its only actuator could not touch and killed the GPU context; and the string operator frame 20:19 appears six times in live source as the QA of record. THE FIFTH I CAN CORROBORATE FROM THIS LANE'S OWN EVIDENCE, which is why it is the one to reason from: /world/beach served HTTP 200 with every asset decoded, a11y clean and nx_page_verify GREEN while rendering an empty shore with no characters at all. I ran nx_page_verify against /compare/enginelab today and read its verdict line myself -- it states exactly what it proves, every referenced asset fetches AND decodes, and it makes NO claim about whether the render has content. So a GREEN there on an empty scene is not the instrument lying; it is the instrument being asked a question it never claimed to answer, and a reader treating page-liveness as render-correctness supplying the error. THAT GAP IS THIS BOARD'S SUBJECT: el_golden compares a render against a stored reference and el_capture_diff names the divergent draw, and neither can be satisfied by a page that fetches cleanly and draws nothing. |
| A future capture rung acquires a browser driver-protocol dependency and the board stops being portable | medium x high | NAMED BEFORE IT HAPPENS, 2026-08-28, prompted by an operator directive to use Waterfox and stop using Edge. Waterfox is Gecko, so the Chrome DevTools Protocol does not exist there and every CDP wire in this estate is inoperative against it -- it fails to CONNECT rather than failing usefully, which is the honest failure mode and not the dangerous one; the dangerous case is always a tool that connects and returns a confident wrong answer, and that distinction decides whether a remedy is port-to-BiDi or stop-trusting-the-number-already-collected. THIS BOARD HAS NO CDP DEPENDENCY TODAY, and that is mechanical rather than remembered: none of EL1 through EL8 names a driver protocol, every capture rung is our own instrumentation writing into the spine, and el_golden takes two DECODED IMAGE STRUCTS FROM ITS CALLER so where the pixels came from is never baked in. THE RISK IS A FUTURE SEAT, not the present state: EL1 capture-persistence and EL3 resource-inspection are precisely where somebody reaches for a driver protocol to grab a frame, and by the time it is load-bearing the argument is already lost. RULE FOR ANY RUNG THAT WANTS ONE: state why it is an ORACLE and not a DEPENDENCY -- the capability must survive the protocol being absent, which is the test CDP fails against Gecko by construction. EL7's in-page overlay is the portable half BY CONSTRUCTION because it runs inside the page rather than talking to it over a wire, which is the same reason the spine is pure integer. SHARPENED SAME DAY BY A SIBLING LANE'S MEASUREMENT, AND IT PARTLY INVERTS THE RISK ABOVE: against Gecko, CDP fails HONESTLY by not connecting, but against Chromium it can produce the DANGEROUS failure for exactly the measurement class these rungs care about. requestAnimationFrame was measured NOT FIRING on a CDP wire -- count 0 over 120 to 400 ms across five loads, recorded in the emitting organ's own comment -- so a frame-driven capture taken over that wire returns a CONFIDENT EMPTY RESULT rather than an error, and an empty frame series is indistinguishable from a scene that genuinely drew nothing. That is the same shape as the page-verify witness in the risk row above: not an instrument lying, but an instrument answering a question whose precondition silently did not hold. SO THE ORACLE-NOT-DEPENDENCY RULE IS NOT ONLY ABOUT PORTABILITY: a capture rung riding a driver protocol must first prove ITS SUBJECT ACTUALLY TICKS ON THAT WIRE, because until it does, every zero it reports is unreadable in both directions. That measurement is a sibling lane's, recorded here as theirs and not re-verified from this one. |
Person · product · place — not yet measured for this domain
knowledge/compare/enginelab.ppp (rows surface|nishi or c1..c4|label|url|connect naming OUR live surface and each rival's front door), run nx_ppp_probe domain enginelab, and this section fills itself on the next beat: the same ruler on both sides — privacy and CX (third-party hosts, tracker classes, cookies, security headers), design and longevity (design hygiene, computed WCAG contrast, render-blocking resources, unsized media, script weight, theme and motion queries), findability (landmarks, skip link, on-site search, breadcrumb, headings, internal links).The field — discovered, not chosen
Rows written by nx_field_discover from enginelab.seeds: the industry's own lists (Wikipedia wikitext, GitHub topics, awesome lists) read mechanically, every candidate counted across seeds. The matrix columns above are a SEAT'S pick; this band is the population they were picked from, and the stats line measures one against the other. A rival here is a lead, never a verdict — it earns a column when its capabilities are read and pinned.
| Class | Count | Note |
|---|---|---|
| seeds | 5 | |
| scanned | 5 | |
| fetched | 5 | |
| reused | 0 | |
| failed | 0 | |
| named | 5 | |
| candidates | 5 | |
| mentions | 5 | |
| capped | 0 |
| Rank | Rival | Seeds | Mentions | First seed | Kind | Link |
|---|---|---|---|---|---|---|
| 1 | RenderDoc 1.45 | 1 | 1 | col0-renderdoc | named | https://renderdoc.org/docs/introduction.html |
| 2 | Tracy | 1 | 1 | col1-tracy | named | https://github.com/wolfpld/tracy |
| 3 | MangoHud | 1 | 1 | col2-mangohud | named | https://github.com/flightlessmango/MangoHud |
| 4 | GpuVis | 1 | 1 | col3-gpuvis | named | https://github.com/mikesart/gpuvis |
| 5 | O3DE | 1 | 1 | col4-o3de | named | https://www.docs.o3de.org/docs/user-guide/testing/ |
field candidates 5|shown 5 of 5|matrix columns in the field 5 of 5|discovered rivals with no column 0|malformed rows 0 (counted, never rendered)|read-capped 0
Exclusive and shared capabilities
This board grades 30 capabilities: 30 exclusive to it and 0 shared with other boards. Shared rows on this page: 0 = home here 0 + home elsewhere 0 + ambiguous 0 + undecided 0 + refused 0 (partition 0); undecided = unmapped 0 + unproven 0 + unevidenced 0; homonyms 0; since the previous census: new 0, resolved 0. Census FRESH age_s=7025.
Gaps from the record — what the estate does that no board carries
The record census (nx_goalmap record) reads the invoked-tool population and every plan queue row and files each organ or directive that NO matrix, plan or gates row names. A row here is a callout the boards missed: adjudicate it onto a board or declare it infrastructure. Census state STALE (age 1396130 s), sources read 4 of 7 declared — a BLIND census is a FLOOR: unread sources can only add rows.
| kind | name | board | source | evidence |
|---|
rows shown 0|this board's directives 0|estate-wide un-boarded organs 452 (listed in full on /compare/ecosystem)|census rows 639|malformed 0 (counted, never rendered)
References
- [renderdoc] Karlsson, B. RenderDoc documentation, Introduction (v1.45). States: a graphics debugger currently available for Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES development on Windows, Linux, Android, and Nintendo Switch. MIT licensed. publisher · read in our library
knowledge/fetched/cmp_enginelab_renderdoc.html· pinh96306934f05cafe3b635eb01e0fbf0d081460b76d100e2783c654c7a06b9d086· accessed 2026-08-28 · vendor-docGrounds: The RenderDoc column on every CAPTURE row, and the Best codes on draw capture, state hash, redundant binds, replay, resource inspection and shader inspection. DIRECT PROSE READ of the mirrored bytes: the API list and the licence sentence above were read verbatim from the mirror, not from a summary. - [tracy] Taudul, B. Tracy Profiler, project repository page (branch master, oid 8b41c38ed9b0750e2c874ca7c9d82cf5b012a0e1 as served on the access date). publisher · read in our library
knowledge/fetched/cmp_enginelab_tracy.html· pinhaf5b46ea0d8e9c711287733fc095d445d3d6c983a10a0432dc05700c3bfb2862· accessed 2026-08-28 · mirrored-indexGrounds: The Tracy column on the CPU rows: zone self time, per-name aggregation, allocation accounting, lock waits, sampling and flame export. TOKEN-WITNESSED: the string nanosecond resolution was located in the mirrored bytes by nx_absent with coverage_complete=1, so the nanosecond-scale profiler characterisation is grounded; the per-feature cells are repository-index level and are coded as presence, not depth. - [mangohud] flightlessmango. MangoHud, project repository page (branch master, oid 00b63717ed7220e4476df7936cf047a11964ea2d as served on the access date). publisher · read in our library
knowledge/fetched/cmp_enginelab_mangohud.html· pinh8624423e64b6311f84a66e96ae76ca19a65cbc2c26181d4c19a5de66ec6f46f1· accessed 2026-08-28 · mirrored-indexGrounds: The MangoHud column on the PACING rows: frame statistics, the 1 percent low definition, stutter detection and the live overlay. TOKEN-WITNESSED: the string frametime was located in the mirrored bytes by nx_absent with coverage_complete=1. The 1 percent low is implemented here in the CapFrameX and MangoHud sense (mean of the worst 1 percent) and that definition is named in our source rather than inferred from this page. - [gpuvis] Sartori, M. gpuvis, GPU trace visualiser, project repository page. publisher · read in our library
knowledge/fetched/cmp_enginelab_gpuvis.html· pinh3d9e22682d092e88fe2b6f1ffa6fb4b00f2c493f328eae5b71c18b9839a6c891· accessed 2026-08-28 · mirrored-indexGrounds: The GpuVis column on the GPU rows: queue slices, submit-to-start latency, bound analysis and hardware trace import. INDEX-LEVEL ONLY, stated plainly: the mirrored bytes are a repository shell and no feature prose was witnessed in them, so these cells are coded from what the project publishes about itself at index level. A vblank probe over the corpus returned ABSENT-PROVEN, so the vsync capability this tool is known for is NOT claimed on this board. - [o3de] Open 3D Foundation. Open 3D Engine user guide, Testing section index. publisher · read in our library
knowledge/fetched/cmp_enginelab_o3de.html· pinh750b5097c97eb11d61b6f34ade05692632bd91d9da2b3532d5f72407a73c03a9· accessed 2026-08-28 · vendor-docGrounds: The O3DE column on the REGRESSION and HARNESS rows: golden-image comparison and the automated test harness. INDEX-LEVEL ONLY, stated plainly: the fetch returned the testing section of the user guide and the bytes read were its navigation tree, so the cells are coded from the documented existence of an engine-side testing surface and not from witnessed harness prose.
generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/enginelab.matrix · source checks show implementation presence; runtime and user-outcome evidence are reported separately · JavaScript supports page controls