Nishi Family › Compare › Emitted Charts and Boards
Nishi Compare · capabilities, evidence and delivery
Emitted Charts and Boards
Compare capabilities and delivery evidence. Source discovery, qualification, deployment and accepted outcomes are separate; an open contract names work still to verify.
Nishi compare emitters vs Datawrapper and Observable Plot and Vega-Lite and D3
Overview
The purpose, declared position and evidence coverage of this domain. Source presence and completed acceptance are different measures.
Where we are. Measured 2026-09-15. The compare emitter draws the position map (2D cut and 3D cube), the day spine, the leaderboard and every board table from data on every publish, and since today it fits each axis to the field of play, seats every label clear of every other mark and label, paints rivals in a colour-blind-safe palette on the page's own theme tokens, ships a title, a description and a data twin with every figure, and PRINTS ITS OWN READABILITY GRADE (label overlaps, off-canvas labels, unresolved labels, data spread) beside the picture and in api.json. The junk verdict was right: the same five players on the fixed 0 to 1000 canvas grade 9 defects; the fitted layout grades 0. Absent: measured text contrast per the WCAG 3 draft, small multiples, an annotation layer, an outside referee over the rendered pixels, export, print, and the JS door for hover and filter.
Where we need to go. Every chart the estate emits reads at a glance on any device and both themes, grades itself before it ships, is refuted from outside by a browser render judged on pixels, and every board inherits each improvement on the next beat because there is ONE layout ruler and ONE emitter.
Latest recorded release
2026-09-17 · DV11
SUBSTRATE ROWS OFF THE MAP (2026-09-17): cd_sym_is_substrate and cd_substrate_mask in nx_cdmap_lib (plan join by rung symbol and rungrole, _ABSENT_ prefix stripped), the mask applied in nx_swcompare_lib cdmap_pass_heading with rows_matrix and rows_substrate_excluded in api.json and a Rows sentence in the page, nx_cdmap_gate T14 to T14g (135 of 135 GREEN on the laptop, planted plan excluded=2); sources on the NAS, generators building; the day spine's rows column records the denominator change, so the momentum across the change is read beside it, never as movement
Release entries describe recorded changes; they do not establish that every capability passed evaluation.
23 of 23 capability source symbols found|7 of them authored stronger-claims|0 open|coverage 1000/1000|adoption 23 full / 0 partial
Evidence profile — what the gaps on this board actually are
nx_swcompare_evidence datavis and this section fills itself on the next beat. No numbers are shown, deliberately — a zero-filled profile would read as a board with no gaps, which is the one wrong answer nobody would question.Production map
Follow the dependencies, declared acceptance criteria and recorded priorities. Inspect source binding before treating a rank as executable work.
Ranking source binding: PLAN_MATRIX_BOUND_ONLY. Recorded priorities require current acceptance evidence and resource checks before execution.
Ranking matches the captured plan and matrix only. Latest execution outcome, research freshness, accepted delivery and investment return are unverified.
Recorded priority estimates
Order from nx_compare_rank (nx_dr_ocm: (deficit + cost-of-delay + option + enables) x sponsor x self-sufficiency x momentum / cost). FINISH rows are rungs whose symbol is present but whose organ is short of full adoption: listed before new work by this heuristic. Priority is not measured delivery cost or execution readiness. Stamp: # asof=1790082194 domain=datavis target_version=- rungs=11 done=11 open=0 finish=0 ranker=nx_dr_ocm
| # | Stage | Rung | Priority | Derivation |
|---|
Declared roadmap — contract, acceptance, executor, effort
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| The layout ruler and the self-grade (DV1) | cl_critic | nx_chartlay_lib: domain-fit scales with nice ticks, integer scaling, collision-free label placement with leaders, the Okabe-Ito palette, and the readability critic; cdmap_pass composes it for both views and prints the grade. DONE-RULE: nx_chartlay_gate GREEN with the live junk cluster grading as junk and the fitted layout at zero defects, both trees identical, the emitter promoted and restaged, the search page showing the grade line with defects 0 on both views and api.json carrying readability_cut and readability_cube | Organ | 1 u |
| Outside referee: a browser render judged on pixels (DV2) after DV1 | crg_judge | A real browser (the estate's own, or a foreign one used ONLY as an oracle outside the build path) renders the published page; an in-estate judge counts text overlaps and clipping on the rendered pixels and compares them with the self-grade. DONE-RULE: a planted overlap the self-grade cannot see (a font-metric drift) is caught by the referee and named; agreement on the live page is journaled per beat. This is the liar-killer for DV1, the same shape as BRIGHT for search [insight26] | Organ | 2 u |
| Measured text contrast per the WCAG 3 draft (DV3) after DV1 | cl_contrast | Every label's colour against its rendered background is measured with a size-and-weight-aware contrast rule and the figure refuses to publish a label under the floor. The 10 September 2026 draft leaves the algorithm to be determined; the rung binds to the draft's Core requirement and names the algorithm chosen as DATA so it can move when the draft does [wcag3] | Organ | 1 u |
| Small multiples over every registered axis pair (DV4) after DV1 | cdp_splom | A scatterplot matrix of the registered axes (every pair as one small cut sharing the fitted domains), so a five-axis registry reads as ten small pictures instead of one cube | Organ | 1 u |
| Annotation layer (DV5) after DV1 | cdp_annotate | A board-authored note pinned to a mark or a region (knowledge/compare/<dom>.cdnotes) rendered by the emitter with the same placer so it never collides | Organ | 1 u |
| Export SVG and PNG (DV6) after DV1 | cdp_export | A download of any figure as standalone SVG and as PNG rasterised by the estate's own rasteriser, never a foreign renderer | Organ | 1 u |
| Print stylesheet for boards (DV7) | sc_print_css | A print media block in the emitted CSS so a board prints as pages: figures unbroken, tables paginated, chips and filters hidden | Organ | 0.5 u |
| Interaction as a JS door over the zero-JS floor (DV8) after DV1 | cdp_interact | Hover reveals the values, legend toggles hide a player, brushing selects a region; the zero-JS render stays complete without it and the interaction trace is itself evidence a claim can be checked against [insight26] | Organ | 1 u |
| Every emitted chart composes the one layout ruler (DV9) after DV1 | cl_adoption_gate | A fleet gate that names every SVG-emitting function in the compare generators and refuses a chart that scales, places or colours by hand; a second ruler is the defect this board exists to prevent | Organ | 1 u |
Milestones
| Milestone | Rungs | Cumulative |
|---|---|---|
| M0 · The grade | DV1 | 1 u |
| M1 · Refuted from outside | DV2 | 3 u |
| M2 · Field parity | DV3 DV4 DV5 DV6 DV7 | 8 u |
| M3 · Interaction and the fleet | DV8 DV9 | 11 u |
Ladder to SOTA
| Rung | Role | Toward | Stands on | Why |
|---|---|---|---|---|
| DV1 | substrate | T-BIC-DATAVIS | - | the one layout ruler every figure composes and the grade every figure prints |
| DV2 | contender | T-BIC-DATAVIS | DV1 | the outside referee that can refute the self-grade: without it the grade is a claim |
| DV3 | substrate | T-BIC-DATAVIS | DV1 | contrast is the accessibility floor the September draft names |
| DV4 | arm | T-BIC-DATAVIS | DV1 | small multiples are how the field reads more than two variables |
| DV5 | arm | T-FR-DATAVIS | DV1 | annotations are the claims a reader verifies against the marks |
| DV6 | arm | T-BIC-DATAVIS | DV1 | export is table stakes for every rival named |
| DV7 | arm | T-BIC-DATAVIS | - | print is the last device on the ladder |
| DV8 | contender | T-FR-DATAVIS | DV1 | interaction traces are the frontier's evidence; the door must stay optional |
| DV9 | substrate | T-BIC-DATAVIS | DV1 | one ruler or the board rots into hand-drawn charts again |
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| Second ruler: the self-grade re-derived from the SVG and re-measured with real glyph advances (DV10) after DV1 | cr_critic | nx_cdmap_referee_lib parses the published cdmap figure back out of the page (marks, labels, the plot frame), runs the same critic over the emitter's own widths (the heuristic must REPRODUCE the published readability_cut or the page and its api.json disagree) and again over real TrueType advances from a real sans face (Liberation Sans, SIL-OFL data, nx_ttf_fontlib) so the 560-permil-em estimate is checked against measured glyphs. DONE-RULE: the gate's planted label-on-label and label-on-mark defects fire under both rulers, the live page's self-grade is reproduced from its SVG, and the program's verdict on the live page is journaled. It is an ARM, not the pixel referee: a stand-in face, no kerning, no pixels -- DV2 stays the contender | Organ | 1 u |
| Rung | Role | Toward | Stands on | Why |
|---|---|---|---|---|
| DV10 | arm | T-BIC-DATAVIS | DV1 | a second method class over the emitter's own claim; it triangulates the self-grade without competing for the number, and the browser-pixel referee DV2 remains the contender it hands its findings to |
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| Substrate rows stay off the position map: a matrix row whose plan rung carries the role substrate is the estate's scaffolding, not a category feature (DV11) after DV1 | cd_substrate_mask | The centrality and distinctiveness map plots what customers perceive (Dawar and Bagga 2015). A kernel, a bound or an instrument the board itself marks substrate on its ladder is not a feature a rival could hold, so counting it inflated Nishi's distinctiveness and carried inherited rival cells onto the picture (measured 2026-09-17 on the search board: the engine's kernel rows sat on the customer map). nx_cdmap_lib.cd_substrate_mask joins each matrix row's symbol to its rung row and that rung's rungrole row, both DATA the board already declares; cdmap_pass drops the substrate rows before computing the points, announces rows_substrate_excluded beside rows in api.json and states it in the page prose. Done-rule: nx_cdmap_gate T14 proves the join on a planted plan (bare and _ABSENT_-prefixed symbols excluded, contender and role-less rungs mapped, an empty plan excludes nothing, a symbol prefix is not a join) and the live search api.json reports rows_substrate_excluded above zero with the map re-derived from the feature rows only | Organ | 1 u |
| Rung | Role | Toward | Stands on | Why |
|---|---|---|---|---|
| DV11 | substrate | T-BIC-DATAVIS | DV1 | the map cannot read at a glance if scaffolding rows move the players; the board's own ladder data is the only honest row classifier |
Ladder verdict, counted (17 rows, more than the 12-row disclosure bar)
| Class | Count | Note |
|---|---|---|
| targets | 2 | sotatarget rows on the plan |
| best in class | 1 | targets whose class is best-in-class, by code |
| frontier | 1 | targets whose class is frontier, by code |
| undated | 0 | targets naming no bar that exists |
| bad class | 0 | targets whose class is neither word |
| duplicate | 0 | target ids an earlier row already carries |
| rungs | 11 | rung rows on the plan |
| placed | 11 | rungs carrying a rungrole row |
| unplaced | 0 | rungs with no role toward any target |
| bad role | 0 | rungrole rows naming a role the ladder does not know |
| bad target | 0 | rungrole rows naming a target no sotatarget row declares |
| rungs, summed | 11 | RECONCILED: the parts sum to the total 11 |
| substrate | 4 | what the target's own methods consume |
| arm | 5 | a sovereign arm that triangulates without competing for the number |
| contender | 2 | its done-rule is a number against the target |
| superseded | 0 | kept as capability, retired as a claim |
| placed, summed | 11 | RECONCILED: the parts sum to the total 11 |
| Class | Count | Note |
|---|---|---|
| bars | 1 | 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 | 1 | nobody looked this month |
| malformed | 0 | a sotabar row missing a field |
| duplicate | 0 | bar ids an earlier row already carries |
| bars, summed | 1 | RECONCILED: the parts sum to the total 1 |
| current month | 2026-10 | the month every bar is judged against |
| Class | Count | Note |
|---|---|---|
| rows | 2 | treat rows declared on the plan |
| complete | 0 | every declared step verifies against the evidence |
| partial | 2 | a declared step is unmet |
| malformed | 0 | a treat row missing a field |
| rows, summed | 2 | RECONCILED: the parts sum to the total 2 |
| rungs | 11 | rungs on the plan |
| undeclared | 9 | rungs with no treat row |
| allowlist bytes read | 207162 | the MCP allowlist the ranker reads |
| roster bytes read | 119881 | the gate roster |
| clock plane bytes read | 0 | the clock DESIRED plane |
| Rung | MCP row | API route | Primitive | Workflow | Agent beat | Verdict |
|---|---|---|---|---|---|---|
| DV11 | nx_cdmap_gate present | /api/tools/call name=nx_cdmap_gate present | nx_cdmap_lib present | boardship-datavis present | cdmappixjudge declared | PARTIAL |
| DV10 | nx_cdmap_referee present | /api/tools/call name=nx_cdmap_referee present | nx_cdmap_referee_lib present | boardship-datavis present | cdmappixjudge declared | PARTIAL |
Inspect a rung and its prerequisites
Declared nodes 11. Rank input binding: PLAN_MATRIX_BOUND_ONLY. Dependency order is authored. Implementation, acceptance evidence, authority and resource readiness are unverified. No action is recommended or dispatched here.
Plan SHA-256 c6934c8511de9dddaa343a047d81b32c7f2973b755588e6eeeed6c983059af21. Target rows 2; role rows 11. Existing risks and release worklog retain their own scope; no node completion is inferred.
Runtime observation coverage: 0 of 11 rungs have current, identity-bound execution observations. Observation may report RED. Accepted completion remains unknown; source presence, qualification and deployment do not establish it.
Use Enter or Space on a rung to inspect its contract. Prerequisite links locate another rung in this list; open its summary to inspect it. Estimates are authored effort, not forecasts.
DV1 — The layout ruler and the self-grade
Prerequisites: None declared; this does not establish execution eligibility.
Contract:
cl_criticAcceptance: nx_chartlay_lib: domain-fit scales with nice ticks, integer scaling, collision-free label placement with leaders, the Okabe-Ito palette, and the readability critic; cdmap_pass composes it for both views and prints the grade. DONE-RULE: nx_chartlay_gate GREEN with the live junk cluster grading as junk and the fitted layout at zero defects, both trees identical, the emitter promoted and restaged, the search page showing the grade line with defects 0 on both views and api.json carrying readability_cut and readability_cube
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV2 — Outside referee: a browser render judged on pixels
Prerequisites: DV1 (acceptance unverified)
Contract:
crg_judgeAcceptance: A real browser (the estate's own, or a foreign one used ONLY as an oracle outside the build path) renders the published page; an in-estate judge counts text overlaps and clipping on the rendered pixels and compares them with the self-grade. DONE-RULE: a planted overlap the self-grade cannot see (a font-metric drift) is caught by the referee and named; agreement on the live page is journaled per beat. This is the liar-killer for DV1, the same shape as BRIGHT for search [@insight26]
Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV3 — Measured text contrast per the WCAG 3 draft
Prerequisites: DV1 (acceptance unverified)
Contract:
cl_contrastAcceptance: Every label's colour against its rendered background is measured with a size-and-weight-aware contrast rule and the figure refuses to publish a label under the floor. The 10 September 2026 draft leaves the algorithm to be determined; the rung binds to the draft's Core requirement and names the algorithm chosen as DATA so it can move when the draft does [@wcag3]
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV4 — Small multiples over every registered axis pair
Prerequisites: DV1 (acceptance unverified)
Contract:
cdp_splomAcceptance: A scatterplot matrix of the registered axes (every pair as one small cut sharing the fitted domains), so a five-axis registry reads as ten small pictures instead of one cube
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV5 — Annotation layer
Prerequisites: DV1 (acceptance unverified)
Contract:
cdp_annotateAcceptance: A board-authored note pinned to a mark or a region (knowledge/compare/<dom>.cdnotes) rendered by the emitter with the same placer so it never collides
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV6 — Export SVG and PNG
Prerequisites: DV1 (acceptance unverified)
Contract:
cdp_exportAcceptance: A download of any figure as standalone SVG and as PNG rasterised by the estate's own rasteriser, never a foreign renderer
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV7 — Print stylesheet for boards
Prerequisites: None declared; this does not establish execution eligibility.
Contract:
sc_print_cssAcceptance: A print media block in the emitted CSS so a board prints as pages: figures unbroken, tables paginated, chips and filters hidden
Authored effort: 0.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV8 — Interaction as a JS door over the zero-JS floor
Prerequisites: DV1 (acceptance unverified)
Contract:
cdp_interactAcceptance: Hover reveals the values, legend toggles hide a player, brushing selects a region; the zero-JS render stays complete without it and the interaction trace is itself evidence a claim can be checked against [@insight26]
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV9 — Every emitted chart composes the one layout ruler
Prerequisites: DV1 (acceptance unverified)
Contract:
cl_adoption_gateAcceptance: A fleet gate that names every SVG-emitting function in the compare generators and refuses a chart that scales, places or colours by hand; a second ruler is the defect this board exists to prevent
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV10 — Second ruler: the self-grade re-derived from the SVG and re-measured with real glyph advances
Prerequisites: DV1 (acceptance unverified)
Contract:
cr_criticAcceptance: nx_cdmap_referee_lib parses the published cdmap figure back out of the page (marks, labels, the plot frame), runs the same critic over the emitter's own widths (the heuristic must REPRODUCE the published readability_cut or the page and its api.json disagree) and again over real TrueType advances from a real sans face (Liberation Sans, SIL-OFL data, nx_ttf_fontlib) so the 560-permil-em estimate is checked against measured glyphs. DONE-RULE: the gate's planted label-on-label and label-on-mark defects fire under both rulers, the live page's self-grade is reproduced from its SVG, and the program's verdict on the live page is journaled. It is an ARM, not the pixel referee: a stand-in face, no kerning, no pixels -- DV2 stays the contender
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.DV11 — Substrate rows stay off the position map: a matrix row whose plan rung carries the role substrate is the estate's scaffolding, not a category feature
Prerequisites: DV1 (acceptance unverified)
Contract:
cd_substrate_maskAcceptance: The centrality and distinctiveness map plots what customers perceive (Dawar and Bagga 2015). A kernel, a bound or an instrument the board itself marks substrate on its ladder is not a feature a rival could hold, so counting it inflated Nishi's distinctiveness and carried inherited rival cells onto the picture (measured 2026-09-17 on the search board: the engine's kernel rows sat on the customer map). nx_cdmap_lib.cd_substrate_mask joins each matrix row's symbol to its rung row and that rung's rungrole row, both DATA the board already declares; cdmap_pass drops the substrate rows before computing the points, announces rows_substrate_excluded beside rows in api.json and states it in the page prose. Done-rule: nx_cdmap_gate T14 proves the join on a planted plan (bare and _ABSENT_-prefixed symbols excluded, contender and role-less rungs mapped, an empty plan excludes nothing, a symbol prefix is not a join) and the live search api.json reports rows_substrate_excluded above zero with the map re-derived from the feature rows only
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt
, SHA-256. Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.
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 datavis 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.DV1 The layout ruler and the self-grade · cell PRESENT · gate UNRECORDED
| Contract | cl_critic · executor Organ · 1 u · stands on nothing |
|---|---|
| Definition of done | nx_chartlay_lib: domain-fit scales with nice ticks, integer scaling, collision-free label placement with leaders, the Okabe-Ito palette, and the readability critic; cdmap_pass composes it for both views and prints the grade. DONE-RULE: nx_chartlay_gate GREEN with the live junk cluster grading as junk and the fitted layout at zero defects, both trees identical, the emitter promoted and restaged, the search page showing the grade line with defects 0 on both views and api.json carrying readability_cut and readability_cube |
| Matrix cell | Readability critic self-grade · runtime/nx_chartlay_lib.nx · PRESENT decl |
| Gate | nx_chartlay_gate · UNRECORDED — no recorded verdict for this gate (it is declared for the organ but the evidence referee's last run did not record it: it is not on this board's gates map, or the referee has not run since the per-gate record shipped) |
| Work log | 2026-09-15 land Source-landed and laptop-proven: buildroot/runtime/nx_chartlay_lib.nx (12947 B, both trees), _hdl_build/nx_chartlay_gate.nx 48/48 GREEN on the laptop lane (junk_label_overlaps=9, junk_spread_permil=223, fit_spread_permil=690, fit_unresolved=0, fit_mark_overlaps=1 which is Mojeek and Marginalia genuinely 11 permil apart), cdmap_pass_heading rewritten in nx_swcompare_lib.nx (both views fitted, placed, graded; readability_cut, readability_cube and the fitted domains in api.json). NAS build, promote, restage and regen follow in this leg. 2026-09-15 lesson A fixed full-range canvas is a chart of the scale, not of the data: five players inside 21 percent of the width read as one blob. Fit the axes, print the numerals, and let a critic count what the eye cannot read -- then publish the count, because a grade nobody can see is a grade nobody can refute. 2026-09-15 land SHIPPED through the mgmt lane: nx_chartlay_gate NAS qualify 48/48 GREEN (jobs 1789487254 and 1789487425, the second after the chl_slen rename), /api/build nx_chartlay_gate 52360 B sha 56b9e0a3 PROMOTED + offc + registered + rostered; nx_leaderboard_gate NAS 34/34 GREEN, 52392 B sha eb45e31a PROMOTED + offc + registered + rostered; organ_gate.conf rows nx_chartlay_lib and nx_leaderboard_lib; the emitter nx_swcompare_matrix /api/build 758768 B sha 29c369e9 (src_path verified, src_stable 1), contentdiff BIDIRECTIONAL lost 38 of 2714 runs (14 permil: the old fixed-canvas renderer's two hard-coded fills, its lead paragraph, the overflow wrapper, aria-label, the grey marker, the currentColor frame, the retired cdp_fill symbol, one source path -- every one superseded by the fitted renderer) gained 185, PROMOTED with allow_capability_loss=yes naming that list, offc-installed, nx_restage RESTAGED buildroot/_offc 758768 B; nishi_compare_regen launched (job 1789487604). ⚠The first emitter build FAILED: cl_slen was defined twice in the closure (nx_catalog_lib owns cl_slen) -- a new lib's prefix must be checked against every lib in its consumers' closures, not only the registry; renamed chl_slen, both trees, both gates re-proven. 2026-09-15 measure nx_compare_rank datavis: BARFRESH bars=1 fresh=1 verdict=FRESH; LADDER targets=2 rungs=9 placed=9 verdict=LADDERED; rungs=9 done=1 open=8; critical path #1 DV2 (the outside referee), then DV4 DV5 DV6 DV8 DV3 DV7 DV9; DV1 reads LIB-UNCENSUSED (a library younger than the last eco-graph build), which clears on the next graph build. The DARK-CONTRACT labels on the open rungs are the ruler's known reading of an honest _ABSENT_ row on an existing organ file (nx_swcompare_lib, nx_swcompare_matrix, nx_chartlay_lib), not builds lost to darkness. 2026-09-15 measure FIRST PUBLISH READ BACK from sites/nishifamily/compare/search/index.html (659575 B) while the regen was still walking: the 2D cut renders axes fitted 700-1000 x 0-350 with seven and eight numerals, the means labelled 882 and 136, quadrant names centred, five seated labels (Marginalia to the left of its mark), grade line label overlaps 0, labels over marks 0, off-canvas 0, unresolved 0, mark overlaps 1, spread 690 permil; api.json carries readability_cut. The cube graded 0 label defects but mark overlaps 3 and spread 171 permil -- the critic was handed the whole 760x560 canvas while the cube occupies its own rhombus, and the 220 px unit left a third of the canvas empty. REFINED at once, both trees (nx_swcompare_lib 260820 B, hash 13b26574): the critic judges spread against the cube's own extent (left corner, z top, right corner, bottom corner) and the unit is 250 px with the origin raised to 290; rebuilt 758984 B sha 8dd44362, promote and restage follow the running regen so its fork copy is not swapped under it. |
DV2 Outside referee: a browser render judged on pixels · cell LANDED · gate UNRECORDED
| Contract | crg_judge · executor Organ · 2 u · stands on DV1 |
|---|---|
| Definition of done | A real browser (the estate's own, or a foreign one used ONLY as an oracle outside the build path) renders the published page; an in-estate judge counts text overlaps and clipping on the rendered pixels and compares them with the self-grade. DONE-RULE: a planted overlap the self-grade cannot see (a font-metric drift) is caught by the referee and named; agreement on the live page is journaled per beat. This is the liar-killer for DV1, the same shape as BRIGHT for search [insight26] |
| Matrix cell | Outside referee: browser render judged on pixels · runtime/nx_cdmap_pixjudge_lib.nx · LANDED decl |
| Gate | nx_cdmap_pixjudge_gate · UNRECORDED — no recorded verdict for this gate (it is declared for the organ but the evidence referee's last run did not record it: it is not on this board's gates map, or the referee has not run since the per-gate record shipped) |
| Work log | 2026-09-15 lesson A REFEREE THAT SHARES THE EMITTER'S NUMBERS PROVES ONLY CONSISTENCY. DV10 re-derives the grade from the published bytes and swaps one input (glyph width) for a measured one, so it can refute a self-grade that the page itself contradicts or that real glyphs overturn -- and it cannot see what a browser draws. That is why DV10 is an arm and DV2 (crg_judge, a render judged on pixels) is still the critical path. 2026-09-15 land SHIPPED THE PIXEL REFEREE from the first byte: nx_cdmap_pixjudge_lib (crg_judge: every player label rasterised through the sovereign TrueType engine nx_ttf_fontlib, glyph coverage at or above 128 of 255 is ink, marks as disks, LL LM OFF MM counted on the pixels, DEFECTS = LL+LM+OFF slot for slot with the self-grade, a label's own mark skipped as cl_critic skips it), program nx_cdmap_pixjudge (page + api.json + two faces, optional journal row per run, verdict AGREE/DISAGREE/UNPROVEN exit 0/1/3, every offender named) and gate nx_cdmap_pixjudge_gate (34 teeth, runtime fixtures, the drift plant derived from the ruler's own reserve); NAS /api/build gate 95176 B sha d65ec2d7 PROMOTED + REGISTERED + offc, program 90184 B sha 94d42ec7 built and promoted by hash; sources byte-identical in both trees (lib ae69ed9c 14935 B, program 17d70b4f 8520 B, gate b68e4765 15155 B); the matrix row repointed from runtime/_hdl_build/nx_cdmap_render_gate.nx to runtime/nx_cdmap_pixjudge_lib.nx so the crg_judge watch can flip on the next emit 2026-09-15 measure GATE 34/34 GREEN FIRST RUN ON THE NAS with Liberation Sans: the planted font-metric drift is CAUGHT and named (six W at 13 px: heuristic reserve 43 px, real ink 72 px, label B placed at x=145 just past the reserve; the box ruler reads LL=0 on those bytes and the pixel ruler LL=1 with 43 shared ink pixels); a label on another player's mark reads LM=1 (11 ink pixels inside the disk) while 135 own-mark ink pixels are not a defect; ink past the frame reads OFF=1 (ink x1 754 against frame x1 730); no face, no figure and unpaired labels are named refusals never zero vectors; LIVE /compare/search: pixel defects 0 = published 0, AGREE. The done-rule's first clause is met by the plant; the second clause (agreement journaled per beat) is the clock row queued below 2026-09-15 queue PER-BEAT JOURNAL: a clock row running nx_cdmap_pixjudge over the served search page and api.json with the Liberation faces and the journal path knowledge/status/cdmap_pixjudge.jrnl, one pj row per day beside the compare beat; the foreign-browser oracle (a real browser screenshot read outside the build path) remains the cross-check of the sovereign rasteriser itself and is never a dependency 2026-09-15 measure BITE-PROVEN: nx_gate_bite nx_cdmap_pixjudge_gate over runtime/nx_cdmap_pixjudge_lib.nx (2 comparison sites): baseline GREEN 95176 B, site 0 SURVIVED (a measurement, not yet adjudicated: one of the two bounds on a guarded comparison, mutate the whole invariant before calling the tooth vacuous), site 1 KILLED on a compiling mutant, valid_mutants=2 not_reached=0 void_build_lane=0 killed=1, restore byte-identical 14935 B, both twins RESTORED, verdict GREEN. LIVE RUN of the program on /compare/search (nx_job_run nx_cdmap_pixjudge with the Liberation faces and the journal path): 5 labels 5 marks, ink 164/197/146/189/292 px, pixel LL=0 LM=0 OFF=0 MM=1 DEFECTS=0 = published 0, AGREE, the first pj row appended to knowledge/status/cdmap_pixjudge.jrnl (78 B). Registered nx_cdmap_pixjudge + nx_cdmap_pixjudge_gate, offc installed, cap ~/.nishi/pixjudge0915.cap, organ_gate.conf pairs, gateroster and datavis.gates rows, importers.tsv re-censused (nx_cdmap_pixjudge_lib importers=2 nonval=1) 2026-09-15 land PER-BEAT JOURNAL WIRED: clock row cdmappixjudge 86400 = nx_cdmap_pixjudge.elf over the served search page and api.json with the Liberation faces and knowledge/status/cdmap_pixjudge.jrnl (CLOCKJOB-PUT ok rows=187, desired state; the scheduler folds it at its next window init, verify on the live plane with nx_clockjob get cdmappixjudge and by the journal growing one pj row per day). The DV2 done-rule is met on both clauses once the live plane carries the row: the drift plant is caught and named, and agreement on the live page is journaled per beat. Still an ARM beside the self-grade, not the operator's acceptance: a foreign-browser screenshot read outside the build path remains the oracle that cross-checks the sovereign rasteriser itself |
DV3 Measured text contrast per the WCAG 3 draft · cell LANDED · gate UNRECORDED
| Contract | cl_contrast · executor Organ · 1 u · stands on DV1 |
|---|---|
| Definition of done | Every label's colour against its rendered background is measured with a size-and-weight-aware contrast rule and the figure refuses to publish a label under the floor. The 10 September 2026 draft leaves the algorithm to be determined; the rung binds to the draft's Core requirement and names the algorithm chosen as DATA so it can move when the draft does [wcag3] |
| Matrix cell | Text contrast measured (WCAG 3 draft) · runtime/nx_chartlay_lib.nx · LANDED decl |
| Gate | nx_chartlay_gate · UNRECORDED — no recorded verdict for this gate (it is declared for the organ but the evidence referee's last run did not record it: it is not on this board's gates map, or the referee has not run since the per-gate record shipped) |
| Work log | 2026-09-15 queue INCUMBENTS named by the ranker (ES28) before any build: nx_uiq_contrast (measured text contrast against the rendered background with a floor) and nx_a11y_check (per-label WCAG contrast with a size-aware rule) already exist -- DV3 COMPOSES one of them inside the layout ruler and binds the algorithm as data; a second contrast ruler is refused. 2026-09-15 land CONTRAST MEASURED, FLOORS AS DATA, REFUSAL WIRED (2026-09-15): nx_chartlay_lib gained cl_contrast (composes the estate's ONE WCAG 2.x kernel nx_uiq_color.uiq_ratio100, KAT black/white 21.00 and 767676/white 4.54), cl_blend, cl_contrast_floor (size-and-weight tiers), cl_contrast_ok and cl_contrast_conf, which reads knowledge/compare/contrast.conf -- algorithm 2026-09-15 lesson A COLOUR TOKEN AT PARTIAL OPACITY IS A DIFFERENT COLOUR, AND THE ONLY WAY TO KNOW ITS CONTRAST IS TO BLEND IT OVER THE SURFACE IT SITS ON AND MEASURE THE RESULT: the quadrant words had been drawn at 0.75 opacity for weeks and read as muted on purpose; the first measurement (cl_blend then uiq_ratio100) put them at 3.67 against a 4.50 floor, under AA by a margin no eye can judge. A floor that lives in a conf row is a bar a machine can read (contrast.conf: algorithm, floors, size tiers), and an algorithm the ruler does not implement falls to the defaults ANNOUNCED rather than silently, so the WCAG 3 draft can be adopted by editing one row when its measure is named. Refuse the classes a placer seats (labels, notes, quadrant words) and print the classes that are structure (ticks, axis titles): hiding a scale to pass a contrast bar is the blank-chart defect wearing an accessibility badge. Also: a word whose eight leader seats all collide needs a seat inside its OWN region (cl_reseat_in), not a ninth candidate on the same ring. 2026-09-16 land DARK REGISTER MEASURED (2026-09-15, the extension the DV3 land row queued): cdp_contrast now measures the same classes against the brand SSOT's DARK rows (bt_emit_dark_root_buf -> rs_theme_load -> the dark fg/mut/panel/bg) beside the light ones -- labels, quadrant words and axis titles as x100 ratios, the count of dark classes under their floors, and the dark tokens read -- printed in the figcaption ("dark theme: ...") and in api.json (contrast_dark_labels_x100, contrast_dark_quadrant_x100, contrast_dark_axes_x100, contrast_dark_under_floor, contrast_dark_tokens_read). ONE figure serves both themes through var() tokens, so a dark shortfall is printed and counted, never hidden: the refusal flags stay the light register's, and the remedy for a dark shortfall is a token in the brand SSOT. Promoted matrix d426dbd7 and sota 06f7a94a (rulers GREEN, no loss); the buildroot/_offc twins refresh once the running compare beat releases them, then search and datavis republish with the dark line. |
DV4 Small multiples over every registered axis pair · cell LANDED · gate NO-GATE-DECLARED
| Contract | cdp_splom · executor Organ · 1 u · stands on DV1 |
|---|---|
| Definition of done | A scatterplot matrix of the registered axes (every pair as one small cut sharing the fitted domains), so a five-axis registry reads as ten small pictures instead of one cube |
| Matrix cell | Small multiples (scatterplot matrix) · runtime/nx_swcompare_lib.nx · LANDED decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_swcompare_lib; declare nx_swcompare_lib TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | 2026-09-15 land SOURCE-LANDED (both trees byte-identical, nx_swcompare_lib.nx 273524 B sha 0842d11b, replayed onto the NAS under a four-hunk size ladder 260820 to 272936 to 273303 to 273455 to 273524): cdp_splom draws every pair of the five registered axes as one small cut (ten panels, three per row, 246 x 190 cells), each panel fitted to its own field of play through the one layout ruler (cl_domain and cl_scale_dom), first and last tick numerals, category means dashed, the same momentum-ringed marks as the cut at half radius (floor 3 px), no labels (the legend names the colours), the critic called with zero-size boxes and only its MARK terms read (MM per panel, spread per panel), a grade line summing MM and averaging spread, and cdp_splom_json emitting a splom block (panels, axes, mark_overlaps_total, spread_min_permil, spread_mean_permil, panels_list with x, y, mark_overlaps, spread_permil, fit_x_lo/hi, fit_y_lo/hi) into api.json; computed once before the branches so page and JSON carry the same numbers. NOT YET BUILT: the emitters compile after the R0 cross-encoder run frees the box (load 7.9 on 8 cores while it runs); the DV4 done-rule (ten small pictures from a five-axis registry, sharing the fitted domains) is claimed only when the regen publishes it and nx_page_verify reads GREEN 2026-09-15 land SHIPPED AND PUBLISHED: nx_swcompare_matrix rebuilt on the laptop lane in the NAS flavour (772208 B sha 5b333bcf, 594 subprograms, cdp_splom present), staged through the sovereign content door, nx_contentdiff live vs staged lost 1 of 2901 runs (the source path runtime/_hdl_build/nx_brand_tokens.nx, which the laptop lane resolves at runtime/ instead; every gained run is the splom section) so promoted with allow_capability_loss=yes naming that one path, offc-installed and copied byte-identical to buildroot/_offc (nx_filehash cmp identical=1); nx_cdmap_gate 71024 B sha 04d1c545 ONE-WAY-GAIN promoted and offc-installed, 93/93 GREEN on the laptop (the day spine written twice and read back); nx_chartlay_gate 48/48 GREEN. Scoped regen (nx_job_run nx_compare_regen buildroot ../sites/nishifamily/compare/ --domain-file knowledge/compare/regen.scope, since the launcher refuses the pinned row) published search index.html 695426 B (prev 661575) and api.json 144533 B with forkchecked=4 forkfresh=4 verdict=GREEN; the page reads 10 panels over 5 registered axes and api.json carries splom panels=10 axes=5 mark_overlaps_total=15 spread_min_permil=312 spread_mean_permil=549; nx_page_verify /compare/search VERDICT=GREEN a11y-issues=0. DV4 done-rule MET on the search page (browser rendering unverified; the pixel referee DV2 judges the cut, not the panels, so the panels are self-graded only). The scope file is read one domain per run, so datavis is regenerated in a second run. 2026-09-15 lesson A SCOPE FILE THAT READS ITS FIRST LINE ONLY IS A ONE-DOMAIN SWITCH WEARING A LIST'S NAME: two domains in the file published one, and the receipt named the one it took without naming the one it dropped. Read every line or announce the lines ignored; until the reader does, one domain per run. |
DV5 Annotation layer · cell LANDED · gate NO-GATE-DECLARED
| Contract | cdp_annotate · executor Organ · 1 u · stands on DV1 |
|---|---|
| Definition of done | A board-authored note pinned to a mark or a region (knowledge/compare/<dom>.cdnotes) rendered by the emitter with the same placer so it never collides |
| Matrix cell | Annotation layer (callouts on marks) · runtime/nx_swcompare_lib.nx · LANDED decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_swcompare_lib; declare nx_swcompare_lib TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | 2026-09-15 land SHIPPED AND PUBLISHED, from the first byte: the annotation layer is DATA (knowledge/compare/<dom>.cdnotes rows note 2026-09-15 lesson A NOTE IS A LABEL WITH A LONGER TEXT AND NO PLAYER OF ITS OWN: seating it through the same placer and counting it in the same critic is what makes it an annotation rather than a sticker; a second placer or an uncounted box is the junk verdict returning through a new door. The build refused twice before it ran, both times on a loop variable the render scope already owned as a let, so an emitter this large needs a distinct name per block, never a shared q. 2026-09-15 measure THE PIXEL REFEREE READ UNPROVEN ON THE FIRST ANNOTATED PAGE (scan labels=13 marks=5: the eight note lines carry the label fill), an honest refusal that would have read UNPROVEN on every daily beat; FIXED IN THE RULERS THE SAME HOUR: nx_cdmap_referee_lib cr_scan now skips text inside a cdnote group (cr_in_note over cr_rfind) and cr_scan_notes reads the groups as note lines with their note index; nx_cdmap_pixjudge_lib draws ONE mask per note over all its lines (ink box unioned) and counts a note in LL (against labels and other notes), LM (over ANY mark, a note owns none) and OFF, never in MM; the program names note offenders and prints notes= note_lines= and per-note ink. nx_cdmap_pixjudge_gate 34 to 49 teeth (T9: pairing kept, one note of two lines scanned, ink drawn, a clear note adds nothing, a note on the Mojeek label reads LL=1 while the players-only box ruler reads 0 as its named neg-control, a note over the Nishi mark reads LM=1, no notes reads 0 groups) GREEN on the laptop and on the NAS with the live page AGREE; nx_cdmap_referee_gate 44/44 on the NAS. All four binaries contentdiff ONE-WAY-GAIN lost 0, promoted and offc-installed (pixjudge 100432 B b16834c4, its gate 106736 B 9bcdaae8, referee 66544 B 2b3f2567, its gate 85200 B a0b446d4); sources landed in both trees. LIVE /compare/search re-judged: labels=5 marks=5 notes=2 note_lines=8, note ink 1342 and 1451 px, pixel LL=0 LM=0 OFF=0 MM=1 DEFECTS=0 = published 0, verdict AGREE; the DV10 referee AGREE (the heuristic reproduces the published grade, the metric critic agrees). 2026-09-15 lesson A NEW FIGURE ELEMENT IS A NEW CLASS FOR EVERY REFEREE: the emitter grew a layer and both rulers went blind or unproven in the same instant, so an emitter feature ships with its referees or the daily agreement journal decays into UNPROVEN and nobody is alarmed. The fixture that proved the note-on-mark tooth first read LL=1 because the planted note also crossed the Nishi label: read the second defect before blaming the ruler. |
DV6 Export SVG and PNG · cell LANDED · gate NO-GATE-DECLARED
| Contract | cdp_export · executor Organ · 1 u · stands on DV1 |
|---|---|
| Definition of done | A download of any figure as standalone SVG and as PNG rasterised by the estate's own rasteriser, never a foreign renderer |
| Matrix cell | Export SVG and PNG · runtime/nx_swcompare_lib.nx · LANDED decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_swcompare_lib; declare nx_swcompare_lib TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | 2026-09-15 queue INCUMBENTS named by the ranker: nx_render_svg (standalone SVG emitter), nx_figures_page + nx_figure_gate (figure export and its referee) and nx_eco_graph_png (SVG rasterised to PNG by the estate's own renderer) -- DV6 wires the position-map figures through those, never a new rasteriser. 2026-09-15 land EXPORT SHIPPED: nx_cdmap_raster_lib (the sovereign SVG-subset rasteriser: rect, circle, dashed line, polyline with the momentum arrow, polygon, text incl. the -90 rotation, halo and opacity, cdnote groups; :root tokens resolved; every glyph through nx_ttf_fontlib; PNG through nx_png) + nx_cdmap_export program (PROMOTED f607033b, registered) + nx_cdmap_export_gate 56/56 GREEN on the laptop (PROMOTED 14947d00, registered, rostered) + cdp_export in nx_swcompare_lib (the DV6 contract symbol) run as nx_swcompare_matrix <dom> export <dir> (PROMOTED b926c35b, allow_capability_loss on its own source-path run) which nx_compare_regen forks after every matrix page it publishes (PROMOTED ae4b1983, ONE-WAY-GAIN; exports= exports_absent= export_fails= on the summary, a failed twin never fails the page); the figcaption links cdmap.svg, cdmap.png and cdmap.export.json and api.json carries export_svg, export_png, export_receipt. The standalone SVG is the figure with xmlns declared and every var(--nx-color-*) resolved to the page's rgb; the PNG is twice the viewBox. Sources on both trees. 2026-09-15 lesson A SUBSET RASTERISER IS HONEST ONLY IF IT COUNTS WHAT IT SKIPS: the receipt carries rect, circle, line, polyline, polygon, text, notes, arrows, rotated, rotated_skipped, skipped and unresolved_colors, so a partial render reads as partial instead of as a picture of the renderer's blind spots. And three of the first gate's 56 teeth failed on the seat's arithmetic, not the renderer's: a dash phase computed in canvas px against a scaled pattern, and two ink bands that crossed the gridline and the momentum path -- a pixel tooth must be placed where nothing else paints, and its expected value derived in the units the renderer uses. 2026-09-15 land TWO DEFECTS THE FIRST EXPORT SHOWED, FIXED IN THE EMITTER AND THE RASTERISER (2026-09-15): (1) the standalone SVG carried the page's NAMED HTML entities (– in both axis titles, · and → in the mark titles) which are parse errors in XML, so nx_cdmap_raster_lib now holds ONE entity table read by both the twin writer (named -> numeric character reference, – -> –) and the rasteriser (nearest ASCII: dashes to a hyphen, the middle dot to a period, the arrow to ->); nx_cdmap_export_gate 60/60 with T19g/T19h/T19i/T15b. (2) the HBR quadrant words were painted first and covered by whatever came later (a note box over CONVENTIONAL, a player label over MAINSTREAM on the live search map): nx_chartlay_lib gained cl_place_from(n, nfixed, ...) -- the same placer with the first nfixed boxes FIXED -- and cdmap_pass now seats the four words after every player label and note with those as obstacles (cdp_quad_at at the seat; quad_unseated printed beside the grade, 0 on datavis and search). nx_chartlay_gate 54/54 (T9..T9e incl. the unfixed neg-control). Promoted: nx_swcompare_matrix 391939d5, nx_swcompare_sota 6ef16d25, nx_cdmap_export e377bad5, nx_cdmap_export_gate 8f8cd3d6, nx_chartlay_gate 194fcf46; buildroot/_offc twins refreshed; datavis republished (exports=1, 0 unseated). |
DV7 Print stylesheet for boards · cell LANDED · gate NO-GATE-DECLARED
| Contract | sc_print_css · executor Organ · 0.5 u · stands on nothing |
|---|---|
| Definition of done | A print media block in the emitted CSS so a board prints as pages: figures unbroken, tables paginated, chips and filters hidden |
| Matrix cell | Print stylesheet for boards · runtime/nx_swcompare_lib.nx · LANDED decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_swcompare_lib; declare nx_swcompare_lib TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | 2026-09-16 land PRINT SHEET SHIPPED (2026-09-15): sc_print_css in nx_swcompare_lib, the sc_theme_pass shape -- written once, called LAST by all five generators (matrix, sota, hub, compute, office) immediately before the style close, so order is the specificity and no importance hack is needed. The SSOT's light rows are re-selected under html,html[data-theme],:root:not([data-theme]) and the five grounds (bg, panel, soft, tint, codebg) made white; figures and cards break-inside:avoid; thead as table-header-group, rows unsplit, tables paginate; the sticky filter bar, filter and theme chips, skip link, header nav, map tooltip and selection line hidden; links print their target once, never inside the refs list. Gate nx_print_css_gate 36/36 laptop and 37/37 NAS with the live search page witnessed (promoted 03773c0b, registered, offc-installed, rostered, evidence row in datavis.gates beside new rows for the export and interact gates). Generators promoted: matrix 0c90dcc3 (ruler GREEN), sota 43687f6e (GREEN), hub 45f8d782 / compute c0255917 / office b2f8aa22 with allow_capability_loss -- their 12/16/16 lost runs are the plan section headings and table-open literals that moved into sc_heading_open and sc_plan_table_open weeks ago, every name still in the lib, the same re-encode the matrix and sota already carried; buildroot/_offc twins refreshed (regen forkfresh=4); search republished with the block. The DV7 board row was repointed from nx_swcompare_matrix.nx to nx_swcompare_lib.nx (it read DARK-CONTRACT until then). 2026-09-16 lesson A PRINT SHEET NEEDS NO IMPORTANCE WHEN IT IS EMITTED LAST: order is a specificity axis the lexer cannot forbid. The nx_cc string lexer refuses the bang byte, so the print block every generator writes immediately before its style close wins every equal-specificity tie by position, and the one selector that would have out-weighed it (the OS-dark block's :root:not([data-theme])) is matched at its own weight rather than beaten. The paper palette is the SSOT's light register re-selected, not a fourth hand palette, and its grounds are white because a background the printer will not paint is a surface the DV3 contrast measure would have lied about. Three generators had sat BEHIND the base lib for weeks (hub 164,872 vs 204,016 B, compute 59,823 vs 127,512 B) and read as CAPLOSS on rebuild for headings that had merely moved into helpers: a lib change is a fleet ship, and its stragglers are the census's BEHIND rows, never litter. |
DV8 Interaction as a JS door over the zero-JS floor · cell LANDED · gate NO-GATE-DECLARED
| Contract | cdp_interact · executor Organ · 1 u · stands on DV1 |
|---|---|
| Definition of done | Hover reveals the values, legend toggles hide a player, brushing selects a region; the zero-JS render stays complete without it and the interaction trace is itself evidence a claim can be checked against [insight26] |
| Matrix cell | Interactive hover and filter · runtime/nx_swcompare_lib.nx · LANDED decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_swcompare_lib; declare nx_swcompare_lib TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | 2026-09-15 land SHIPPED AND PUBLISHED: the interaction door is ONE inline script the compare base emits after the 2D cut (cdp_interact in nx_swcompare_lib; the matrix row repointed from nx_swcompare_matrix.nx to the lib so the contract names the file that declares it). Every mark, label and momentum path carries data-p; the legend swatches became buttons (aria-pressed) that toggle a player's mark, label and path; hover or keyboard focus on a mark reveals the values the emitter already wrote into its title, in a tooltip; dragging on the plot brushes a region whose players are listed in an output element with the bounds converted to permil on the cut axes through the SAME fit domains the page drew with, and the region is written into the URL hash as cdsel=xlo,xhi,ylo,yhi so the trace is shareable and re-applied on load; api.json announces interact_door. The zero-JS floor is intact: the figure, legend, notes and grade render without the script, the buttons are inert and the output empty. The lexer forbids a hash mark or a bang inside a literal, so the hash is built from its character code and every negation is a comparison. nx_cdmap_interact_gate (21 teeth: the fit domains and the frame inside the script, the hash-free trace key with a byte-count neg-control, the three interactions, the re-applied trace, the optional-door style, and on the NAS the live page: buttons 5 equal marks 5, one output, the door announced) GREEN on the laptop and on the NAS, promoted cccf02cd, registered, offc-installed; emitter 798944 B sha 17a05b80 contentdiff ONE-WAY-GAIN lost 0, promoted, offc-installed, buildroot/_offc byte-identical; scoped regen GREEN, page 702696 B, nx_page_verify GREEN a11y 0. The edge serves the page with NO Content-Security-Policy header (Content-Type, Content-Length, Connection, Cache-Control only, read through nx_https_get with headers), so the inline door is not blocked. SCOPE STATED: the estate proves the door's structure and numbers; a browser executing it is the oracle outside the path, and that witness (a real hover, click and drag) is owed before the rung is complete under the three-party law. 2026-09-15 lesson A DOOR OVER A FLOOR IS HONEST ONLY IF THE FLOOR IS SEEN WITHOUT IT: the buttons render and the output exists with the script off, and the gate reads the door's numbers back from the emitted bytes rather than trusting the emitter that wrote them. The header read was the cheap experiment that decided whether an inline script could run at all; ship no door before reading the policy the edge actually sends. |
DV9 Every emitted chart composes the one layout ruler · cell LANDED · gate NO-GATE-DECLARED
| Contract | cl_adoption_gate · executor Organ · 1 u · stands on DV1 |
|---|---|
| Definition of done | A fleet gate that names every SVG-emitting function in the compare generators and refuses a chart that scales, places or colours by hand; a second ruler is the defect this board exists to prevent |
| Matrix cell | One layout ruler across the fleet · runtime/_hdl_build/nx_chartlay_adoption_gate.nx · LANDED decl |
| Gate | NO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_chartlay_adoption_gate; declare nx_chartlay_adoption_gate TAB <gate> and the ship loop proves it and the verdict lands here. |
| Work log | 2026-09-15 queue THE FLEET POPULATION for the adoption ratchet, named by the ranker: nx_render_svg, nx_chart, nx_viz_chart, nx_batt_chart, _genealogy_chart, nx_mindmap, nx_figures_page -- every one an SVG emitter that scales, places or colours on its own today; DV9's gate censuses them and ratchets the count that compose nx_chartlay_lib upward, naming each offender. 2026-09-15 measure FLEET BASELINE for the adoption ratchet, nx_absent over buildroot/runtime: pattern <svg matches=149 coverage_complete=1 corpus_complete=1 (occurrences, not distinct files -- the organ lists 12 of 149, so the distinct-file count is UNMEASURED and the ratchet's first job is that partition). Every one of those sites scales, places or colours on its own today; nx_chartlay_lib has exactly one adopter (cdmap_pass in nx_swcompare_lib). The ratchet counts adopters up and names each remaining hand-drawn emitter; wiki graph (nx_wiki_graph), the ad banner logos (nx_ad_banner, nx_ad_emitter_grow) and the eco-graph renderers are the first population the census shows. 2026-09-16 land THE FLEET RATCHET SHIPPED (2026-09-15): nx_chartlay_adoption_gate (symbol cl_adoption_gate) censuses every function in the compare generators that writes an svg start tag and judges it by the ONE layout ruler: ADOPTER when it or its prefix family (the helpers sharing its name up to the first underscore) calls a ruler verb, HAND when none does, HAND-COLOUR when the family paints a fill or stroke with a literal rgb(); a decorative icon (aria-hidden) is counted never judged, an svg named in a comment is nothing, and a URL before the tag cannot hide it (comments are stripped outside string literals). Sources, ruler verbs and named exemptions are DATA in buildroot/knowledge/compare/cl_adoption.conf; an allow row exempts one function WITH a reason and reads STALE (RED) the moment that function stops being an offender, so the ratchet only tightens. Planted fixtures prove every class both ways (F0-F10d), then the live fleet: 11 sources, 441 functions, 2 chart emitters -- cdp_fig_open ADOPTER (family 49, 8 ruler calls), rs_svg_standalone HAND but ALLOWED as the twin writer whose geometry is judged at cdp_fig_open -- 1 icon (the gap map's nav glyph), 0 unallowed hand charts, 0 stale rows. 34/34 GREEN laptop; promoted dc593c93, registered, offc-installed, rostered, evidence row in datavis.gates. Named residual: the gap map's momentum bars are HTML divs sized by a percentage width, a chart by CSS the svg census cannot see -- the next widening of this ruler is a bar-width verb in nx_chartlay_lib and a conf row for HTML charts. 2026-09-16 lesson A FLEET RATCHET NAMES ITS OFFENDERS OR IT IS A NUMBER: the first measure of this rung (149 svg sites, one adopter) was a fleet COUNT, and a count cannot say which function to fix, cannot tell a chart from a nav icon, and cannot tell a re-emitter of an already-laid figure from a hand layout. The gate that closes the rung prints one line per emitter with its verdict and its remedy, exempts by a NAMED row that carries its reason and goes stale by itself, and derives its scope from a conf so widening it is a data edit. Also: a comment stripper that does not track string literals eats the tag after a URL on the same line and reports a real chart as nothing -- the planted adopter fixture carries exactly that line so the stripper cannot regress silently. 2026-09-16 land THE POSITION MAP DRAWS EVERY DAY, NOT THREE POINTS: each player's movement line on the four-quadrant map used to join first spine day, previous spine day and today, so from the fourth day on every day in between vanished and where a player is moving day by day could not be read off the picture; nx_cdmap_lib gained cd_spine_trail (every spine day before today, oldest first, one record per day with that day's values in the first-day slots, so the one axis rule cd_hist_axis_plot places a past day on any registered axis), and nx_swcompare_lib's cdmap pass computes the trail once per player and uses it for the fitted axes (every drawn day stays on the canvas), the cut polyline and the cube polyline (each tagged data-days) and api.json, where every position now carries trail:[[day, centrality, distinctiveness, breadth points, held, matrix rows], ...]; nx_cdmap_gate S9-S9k plus neg-control-trail-excludes-today, 127/127 GREEN, cross-identity: the trail's day two plots exactly where the history's previous day plots; promoted nx_cdmap_gate 61cc6430 and nx_swcompare_matrix 0fed31a9 (debug flavour matched to the incumbent, content ruler lost one run -- the cube polyline opening, now carrying data-days) into the serving root, nishihost _offc and buildroot _offc; qualified on the live search board before promote: every player's api.json position carries its 2026-09-15 spine row as its trail 2026-09-16 measure LIVE WITNESS OF THE DAILY TRAIL: full regen job 1789572844 with nx_swcompare_matrix 0fed31a9 finished REGEN published=249 fails=0 verdict=GREEN; https://nishifamily.com/compare/search/cdmap.svg serves every movement polyline tagged data-days='2' with one point per spine day plus today (Nishi 180,216 -> 235,212; the old three-point form repeated the first day as the previous day), and https://nishifamily.com/compare/search/api.json (200, 153,839 B) carries trail:[[20711,750,199,97,46,67]] for Nishi and the matching spine row for Mojeek, Brave, Google and Marginalia; the trail grows by one point per day on all 115 boards from here |
DV10 Second ruler: the self-grade re-derived from the SVG and re-measured with real glyph advances · cell PRESENT · gate UNRECORDED
| Contract | cr_critic · executor Organ · 1 u · stands on DV1 |
|---|---|
| Definition of done | nx_cdmap_referee_lib parses the published cdmap figure back out of the page (marks, labels, the plot frame), runs the same critic over the emitter's own widths (the heuristic must REPRODUCE the published readability_cut or the page and its api.json disagree) and again over real TrueType advances from a real sans face (Liberation Sans, SIL-OFL data, nx_ttf_fontlib) so the 560-permil-em estimate is checked against measured glyphs. DONE-RULE: the gate's planted label-on-label and label-on-mark defects fire under both rulers, the live page's self-grade is reproduced from its SVG, and the program's verdict on the live page is journaled. It is an ARM, not the pixel referee: a stand-in face, no kerning, no pixels -- DV2 stays the contender |
| Matrix cell | Second ruler over the self-grade (SVG re-derivation plus real-font re-measurement) · runtime/nx_cdmap_referee_lib.nx · PRESENT decl |
| Gate | nx_cdmap_referee_gate · UNRECORDED — no recorded verdict for this gate (it is declared for the organ but the evidence referee's last run did not record it: it is not on this board's gates map, or the referee has not run since the per-gate record shipped) |
| Work log | 2026-09-15 land SHIPPED, both trees: nx_cdmap_referee_lib.nx (10380 B), nx_cdmap_referee.nx (7209 B), _hdl_build/nx_cdmap_referee_gate.nx (15981 B). NAS: gate BUILT 83864 B sha 6b5e31a5 PROMOTED and registered; program BUILT 65632 B sha e9ac2a7d PROMOTED and registered. The gate's first run read 42/43: its own control T5 refused a plant I had placed over the label's OWN mark, which the critic skips by design -- the plant now sits on another player's mark and the own-mark semantics is pinned as T5b. 2026-09-15 measure LIVE, sites/nishifamily/compare/search: labels=5 marks=5 frame 70,30 to 730,460; real Liberation Sans advances vs the emitter's reserve -- Nishi (bold) 29 vs 36 px, Mojeek 39 vs 43, Brave 32 vs 36, Google 40 vs 43, Marginalia 55 vs 72 (delta -69 to -236 permil); heuristic LL=0 LM=0 OFF=0 MM=1 SPREAD=690 reproduces the published readability_cut exactly; metric DEFECTS=0 equals the published 0; verdict=AGREE. The estimate over-reserves on this face, so it cannot hide an overlap here; a narrower reserve or a wider face is the case the pixel referee owes. 2026-09-15 measure nx_gate_bite nx_cdmap_referee_gate over runtime/nx_cdmap_referee_lib.nx (2 sites): baseline GREEN 84280 B, cmp site 0 KILLED on a compiling mutant, valid_mutants=1 killed=1 not_reached=0 void_build_lane=0, restore byte-identical 10380 B, twin RESTORED, verdict=GREEN gate BITES; nx_page_verify /compare/datavis VERDICT=GREEN static 128566 B a11y-issues=0 (browser rendering unverified, that is DV2); nx_eco_graph_build re-run nodes=20914 edges=58945 files_scanned=20943 saved knowledge/store/ecograph_full so the DV1 and DV10 lib rows can leave LIB-UNCENSUSED on the next emit 2026-09-15 measure after nx_importcensus (asof=1789493461 rows=20914 has_nonval=3934 val_only=2748 orphan=14232 sum=20914 edges=58945) the scoped re-emit published datavis at 123597 B with LIB-UNCENSUSED states 0 and every library row LIB-WIRED: nx_chartlay_lib importers=3 nonval=2, nx_cdmap_lib importers=2 nonval=1, nx_cdmap_referee_lib importers=2 nonval=1 (first importer nx_cdmap_referee.nx), nx_leaderboard_lib importers=2 nonval=1; DV1 and DV10 cleared 2026-09-15 lesson rebuilding the eco graph does NOT flip a LIB-UNCENSUSED cell: the emitter reads knowledge/status/importers.tsv (nx_catalog_lib clb_load), a flat census nx_importcensus derives from the store, and that file was a day stale (asof 1789411173, nodes 20880) while the store already held 20914 nodes; the CWD hypothesis was refuted first by a positive control (search and ecosystem pages read LIB-WIRED from the same emitter); the scoped cap did not name nx_importcensus and the session cap was denied, so a cap was minted (nonce 1789493450) and banked at ~/.nishi/importcensus0915.cap 2026-09-15 queue MECHANISM OWED IN THE EMITTER: when knowledge/store/ecograph_full is newer than the asof of knowledge/status/importers.tsv the regen should refresh the census (fork nx_importcensus) or announce IMPORTERS-STALE beside every LIB state, so a new library never reads UNCENSUSED for a day because two beats disagree; today the recipe is nx_eco_graph_build then nx_importcensus then the scoped regen |
DV11 Substrate rows stay off the position map: a matrix row whose plan rung carries the role substrate is the estate's scaffolding, not a category feature · cell PRESENT · gate UNRECORDED
| Contract | cd_substrate_mask · executor Organ · 1 u · stands on DV1 |
|---|---|
| Definition of done | The centrality and distinctiveness map plots what customers perceive (Dawar and Bagga 2015). A kernel, a bound or an instrument the board itself marks substrate on its ladder is not a feature a rival could hold, so counting it inflated Nishi's distinctiveness and carried inherited rival cells onto the picture (measured 2026-09-17 on the search board: the engine's kernel rows sat on the customer map). nx_cdmap_lib.cd_substrate_mask joins each matrix row's symbol to its rung row and that rung's rungrole row, both DATA the board already declares; cdmap_pass drops the substrate rows before computing the points, announces rows_substrate_excluded beside rows in api.json and states it in the page prose. Done-rule: nx_cdmap_gate T14 proves the join on a planted plan (bare and _ABSENT_-prefixed symbols excluded, contender and role-less rungs mapped, an empty plan excludes nothing, a symbol prefix is not a join) and the live search api.json reports rows_substrate_excluded above zero with the map re-derived from the feature rows only |
| Matrix cell | Substrate rows stay off the position map (the board's own rungrole rows decide) · runtime/nx_cdmap_lib.nx · PRESENT decl |
| Gate | nx_cdmap_gate · UNRECORDED — no recorded verdict for this gate (it is declared for the organ but the evidence referee's last run did not record it: it is not on this board's gates map, or the referee has not run since the per-gate record shipped) |
| Work log | 2026-09-17 land SUBSTRATE ROWS OFF THE MAP (2026-09-17): cd_sym_is_substrate and cd_substrate_mask in nx_cdmap_lib (plan join by rung symbol and rungrole, _ABSENT_ prefix stripped), the mask applied in nx_swcompare_lib cdmap_pass_heading with rows_matrix and rows_substrate_excluded in api.json and a Rows sentence in the page, nx_cdmap_gate T14 to T14g (135 of 135 GREEN on the laptop, planted plan excluded=2); sources on the NAS, generators building; the day spine's rows column records the denominator change, so the momentum across the change is read beside it, never as movement 2026-09-17 measure FIRST LIVE CUT ON THE SEARCH BOARD (2026-09-17): 35 of 93 matrix rows read substrate through the plan join and left the map, 58 feature rows remain; category means moved from centrality 832 and distinctiveness 178 to 799 and 209; Nishi 760 and 248 became 768 and 317 (the scaffolding rows had carried inherited rival cells that credited the rivals), Google 972 and 430 became 957 and 506; every quadrant assignment held. nx_cdmap_gate 135 of 135 GREEN on the laptop and the NAS with T14 to T14g; generators promoted (matrix 386052e8, sota 66c78395) with the one lost run named as the build-metadata path runtime/nx_brand_tokens.nx, fork copies in buildroot/_offc hash-identical to the promoted files |
dossiers=11 cells_joined=11 no_matrix_row=0 (sum 11) gates_recorded=0 gates_unrecorded=5 no_gate_declared=6 (sum 11 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/datavis.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 650–1000, distinctiveness 0–600 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 1 (a fact of the data: two players that close are that close) · data spread 558 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 1 · unresolved labels 0 · mark overlaps 6 (a fact of the data: two players that close are that close) · data spread 88 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 12 (a fact of the data: two players that close are that close) · data spread 619 permil of the plot
| Player | Quadrant | centrality | distinctiveness | breadth | depth | momentum | Rows held | Days on spine | First seen |
|---|---|---|---|---|---|---|---|---|---|
| Nishi | Aspirational | 1000 | 407 | 771 | 771 | 0 since 2026-09-23 | 19 | 10 | 2026-09-15 |
| Datawrapper | Peripheral | 876 | 83 | 403 | 638 | 0 since 2026-09-23 | 12 | 10 | 2026-09-15 |
| Observable Plot | Peripheral | 846 | 15 | 350 | 606 | 0 since 2026-09-23 | 11 | 10 | 2026-09-15 |
| Vega-Lite | Peripheral | 846 | 0 | 333 | 575 | 0 since 2026-09-23 | 11 | 10 | 2026-09-15 |
| D3 | Peripheral | 876 | 34 | 368 | 583 | 0 since 2026-09-23 | 12 | 10 | 2026-09-15 |
| Day | Matrix rows reviewed | Players recorded |
|---|---|---|
| 2026-09-15 | 21 | 5 |
| 2026-09-16 | 22 | 5 |
| 2026-09-17 | 22 | 5 |
| 2026-09-18 | 19 | 5 |
| 2026-09-19 | 19 | 5 |
| 2026-09-20 | 19 | 5 |
| 2026-09-21 | 19 | 5 |
| 2026-09-22 | 19 | 5 |
| 2026-09-23 | 19 | 5 |
| 2026-10-08 | 19 | 5 |
players 5|matrix rows 19|feature mass 65|centrality mean 888|distinctiveness mean 107|axes 5|spine days 10 (shown 10)|rows written today 0|readability defects 2D 0 cube 1|spine knowledge/status/cdmap/datavis.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 92, unassessed 0. Authored assessments are not verified outcomes.
No capabilities match this filter or search.
| Capability | Nishi | Datawrapper | Observable Plot | Vega-Lite | D3 |
|---|---|---|---|---|---|
Domain-fit axes with nice ticksMeasured:cl_domain exists in runtime/nx_chartlay_lib.nx, verified at emit. Axes fit the data with a breathing pad and snap outward to a nice step (4 to 7 ticks); the default in every tool named [datawrapper] [plot] [vegalite] [d3] Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ● | ● | ● |
Integer linear scale both waysSource present; authored stronger claim:cl_scale in runtime/nx_chartlay_lib.nx, verified at emit. Pure integer arithmetic, bit-identical on every host from a sensor to a supercomputer; the rivals scale in IEEE floats [d3] Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ● | ● | ● | ● |
Collision-free direct labelsMeasured:cl_place exists in runtime/nx_chartlay_lib.nx, verified at emit. Greedy seat search with leader lines and an UNRESOLVED count; Plot and D3 ship occlusion handling, Datawrapper and Vega-Lite hide or nudge [plot] [vegalite] Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Datawrapper, Vega-Lite; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ◐ | ● | ◐ | ● |
Readability critic self-gradeSource present; authored stronger claim:cl_critic in runtime/nx_chartlay_lib.nx, verified at emit. Every render counts its own label overlaps, labels over marks, off-canvas labels, mark overlaps and data spread and publishes them with the picture and in api.json; no rival grades its own output [fidelity26] Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ |
Colour-blind-safe categorical paletteMeasured:cl_palette exists in runtime/nx_chartlay_lib.nx, verified at emit. Okabe-Ito for rivals plus the house accent token; every rival ships a CVD-safe scheme [datawrapper] [plot] Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ● | ● | ● |
Theme tokens light and darkMeasured:cdp_label exists in runtime/nx_swcompare_lib.nx, verified at emit. Marks, halos and text read the page's design tokens so one render is legible on both themes; Datawrapper themes, the libraries leave it to the host page [datawrapper] Adoption: LIB-WIRED importers=34 nonval=28 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ◐ | ◐ | ◐ |
Responsive SVG with viewBoxMeasured:cdp_fig_open exists in runtime/nx_swcompare_lib.nx, verified at emit. Width 100 percent, viewBox scaling, no horizontal scroll [plot] Adoption: LIB-WIRED importers=34 nonval=28 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ● | ● | ● |
Accessible title, description and data twinMeasured:cdp_fig_open exists in runtime/nx_swcompare_lib.nx, verified at emit. Every figure carries an SVG title and desc, aria-labelledby, and the SAME numbers in a table; Datawrapper adds alt text, the libraries leave it to the author [wcag3] Adoption: LIB-WIRED importers=34 nonval=28 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ◐ | ◐ | ◐ |
Four-quadrant position mapSource present; authored stronger claim:cd_quadrant in runtime/nx_cdmap_lib.nx, verified at emit. The centrality-distinctiveness map re-derived from the matrix cells on every publish [hbr2015] Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ |
Isometric cube with fitted axesMeasured:cdp_iso_fit exists in runtime/nx_swcompare_lib.nx, verified at emit. A 3D view with per-axis fit, floor-grid numerals, drop lines and far-to-near paint order; D3 has community 3D, the rest none [d3] Adoption: LIB-WIRED importers=34 nonval=28 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ○ | ○ | ○ | ◐ |
Day spine and momentum trajectorySource present; authored stronger claim:cd_spine_append in runtime/nx_cdmap_lib.nx, verified at emit. One row per player per day and the first-to-previous-to-today path drawn from it: time as a first-class axis of every board Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ |
Leaderboard with computed rankSource present; authored stronger claim:lb_rank_of in runtime/nx_leaderboard_lib.nx, verified at emit. Public boards as data, the estate's rank recomputed from the scores, never copied from the file [bright] Adoption: LIB-WIRED importers=6 nonval=4 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ |
Chart quality regression gateSource present; authored stronger claim:main in runtime/_hdl_build/nx_chartlay_gate.nx, verified at emit. The layout ruler is gate-proven on the live junk cluster: the junk layout grades as junk, the fitted layout places every label clear; rivals test their libraries, not each render Adoption: GATE:LIVE trial=GREEN — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ |
Outside referee: browser render judged on pixelsMeasured:crg_judge exists in runtime/nx_cdmap_pixjudge_lib.nx, verified at emit. The liar-killer for the self-grade: a real browser renders the page and an in-estate judge counts overlaps and clipping on the pixels, the way BRIGHT referees search from outside [insight26] Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ○ | ○ | ○ | ○ |
Text contrast measured (WCAG 3 draft)Measured:cl_contrast exists in runtime/nx_chartlay_lib.nx, verified at emit. The 10 September 2026 WCAG 3 draft makes text contrast a Core requirement with a size-and-weight-aware measure still to be determined; the emitter owes a measured contrast of every label against its rendered background [wcag3] Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ◐ | ○ | ○ | ○ |
Small multiples (scatterplot matrix)Measured:cdp_splom exists in runtime/nx_swcompare_lib.nx, verified at emit. Every pair of registered axes as one small cut sharing the fitted domains; every rival composes facets [plot] [vegalite] Adoption: LIB-WIRED importers=34 nonval=28 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ● | ● | ● |
Annotation layer (callouts on marks)Measured:cdp_annotate exists in runtime/nx_swcompare_lib.nx, verified at emit. A board-authored note pinned to a mark or a region, rendered by the emitter with the same placer [datawrapper] Adoption: LIB-WIRED importers=34 nonval=28 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ● | ● | ● |
Interactive hover and filterMeasured:cdp_interact exists in runtime/nx_swcompare_lib.nx, verified at emit. Hover reveals, brushing, legend toggles; every rival has it, the estate's zero-JS floor renders without it and a JS door may add 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=34 nonval=28 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ● | ● | ● |
Export SVG and PNGMeasured:cdp_export exists in runtime/nx_swcompare_lib.nx, verified at emit. A download of the figure as standalone SVG and as PNG rasterised by the estate's own rasteriser 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=34 nonval=28 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ● | ● | ● |
Print stylesheet for boardsMeasured:sc_print_css exists in runtime/nx_swcompare_lib.nx, verified at emit. A print media block so a board prints as pages, not a screen dump [css2025] Adoption: LIB-WIRED importers=34 nonval=28 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ● | ○ | ○ | ○ |
One layout ruler across the fleetMeasured:cl_adoption_gate exists in runtime/_hdl_build/nx_chartlay_adoption_gate.nx, verified at emit. A fleet gate that names every SVG-emitting function in the compare generators and refuses a chart that scales, places or colours by hand Adoption: GATE:LIVE trial=GREEN — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ○ | ○ | ○ | ○ |
Second ruler over the self-grade (SVG re-derivation plus real-font re-measurement)Source present; authored stronger claim:cr_critic in runtime/nx_cdmap_referee_lib.nx, verified at emit. The emitter's readability grade is a claim; nx_cdmap_referee re-derives it from the published SVG alone and re-measures every label with real TrueType advances (Liberation Sans, SIL-OFL data) through nx_ttf_fontlib, then runs the one critic over both. Landed 2026-09-15: on the live search cut the heuristic reproduces the published grade and the metric ruler finds the same zero defects (bold Nishi 29 px real vs 36 reserved, Marginalia 55 vs 72); nx_cdmap_referee_gate plants a label on a label and a label on another player's mark and both rulers fire. None of the four rivals grades its own render, so none can be refereed this way. Not the browser-pixel referee: that is DV2 and stays open Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Source symbol found; stronger capability claim is authored; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ |
Substrate rows stay off the position map (the board's own rungrole rows decide)Measured:cd_substrate_mask exists in runtime/nx_cdmap_lib.nx, verified at emit. DV11 (2026-09-17): a matrix row whose plan rung is substrate (a kernel, a bound, an instrument) is scaffolding, not a category feature; the map joins each row's symbol to its rung and role and drops substrate rows before computing centrality, distinctiveness, breadth and depth, announcing rows_substrate_excluded beside rows in api.json. No rival charting tool classifies its input rows by a ladder of declared roles, so the rival cells read No as not applicable rather than as a measured lack Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder).Pros Implementing source symbol found; runtime acceptance separate; ahead of Datawrapper, Observable Plot, Vega-Lite, D3; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ● | ○ | ○ | ○ | ○ |
| Class | Count | Note |
|---|---|---|
| rows with rival marks | 14 | rows carrying a Yes, Best or Part in a rival column |
| cited | 12 | a reference mark resolves to a pinned mirror |
| uncited | 2 | an observation read, badged until a reference lands |
| rows, summed | 14 | RECONCILED: the parts sum to the total 14 |
Delivery and evidence
Inspect risks, technical debt, rendered observations, experiments and references. Read scope and limitations alongside every result.
Release history and work log
| When | Rung | Kind | Entry |
|---|---|---|---|
| 2026-09-15 | DV1 | land | Source-landed and laptop-proven: buildroot/runtime/nx_chartlay_lib.nx (12947 B, both trees), _hdl_build/nx_chartlay_gate.nx 48/48 GREEN on the laptop lane (junk_label_overlaps=9, junk_spread_permil=223, fit_spread_permil=690, fit_unresolved=0, fit_mark_overlaps=1 which is Mojeek and Marginalia genuinely 11 permil apart), cdmap_pass_heading rewritten in nx_swcompare_lib.nx (both views fitted, placed, graded; readability_cut, readability_cube and the fitted domains in api.json). NAS build, promote, restage and regen follow in this leg. |
| 2026-09-15 | DV1 | lesson | A fixed full-range canvas is a chart of the scale, not of the data: five players inside 21 percent of the width read as one blob. Fit the axes, print the numerals, and let a critic count what the eye cannot read -- then publish the count, because a grade nobody can see is a grade nobody can refute. |
| 2026-09-15 | DV1 | land | SHIPPED through the mgmt lane: nx_chartlay_gate NAS qualify 48/48 GREEN (jobs 1789487254 and 1789487425, the second after the chl_slen rename), /api/build nx_chartlay_gate 52360 B sha 56b9e0a3 PROMOTED + offc + registered + rostered; nx_leaderboard_gate NAS 34/34 GREEN, 52392 B sha eb45e31a PROMOTED + offc + registered + rostered; organ_gate.conf rows nx_chartlay_lib and nx_leaderboard_lib; the emitter nx_swcompare_matrix /api/build 758768 B sha 29c369e9 (src_path verified, src_stable 1), contentdiff BIDIRECTIONAL lost 38 of 2714 runs (14 permil: the old fixed-canvas renderer's two hard-coded fills, its lead paragraph, the overflow wrapper, aria-label, the grey marker, the currentColor frame, the retired cdp_fill symbol, one source path -- every one superseded by the fitted renderer) gained 185, PROMOTED with allow_capability_loss=yes naming that list, offc-installed, nx_restage RESTAGED buildroot/_offc 758768 B; nishi_compare_regen launched (job 1789487604). ⚠The first emitter build FAILED: cl_slen was defined twice in the closure (nx_catalog_lib owns cl_slen) -- a new lib's prefix must be checked against every lib in its consumers' closures, not only the registry; renamed chl_slen, both trees, both gates re-proven. |
| 2026-09-15 | DV3 | queue | INCUMBENTS named by the ranker (ES28) before any build: nx_uiq_contrast (measured text contrast against the rendered background with a floor) and nx_a11y_check (per-label WCAG contrast with a size-aware rule) already exist -- DV3 COMPOSES one of them inside the layout ruler and binds the algorithm as data; a second contrast ruler is refused. |
| 2026-09-15 | DV6 | queue | INCUMBENTS named by the ranker: nx_render_svg (standalone SVG emitter), nx_figures_page + nx_figure_gate (figure export and its referee) and nx_eco_graph_png (SVG rasterised to PNG by the estate's own renderer) -- DV6 wires the position-map figures through those, never a new rasteriser. |
| 2026-09-15 | DV9 | queue | THE FLEET POPULATION for the adoption ratchet, named by the ranker: nx_render_svg, nx_chart, nx_viz_chart, nx_batt_chart, _genealogy_chart, nx_mindmap, nx_figures_page -- every one an SVG emitter that scales, places or colours on its own today; DV9's gate censuses them and ratchets the count that compose nx_chartlay_lib upward, naming each offender. |
| 2026-09-15 | DV1 | measure | nx_compare_rank datavis: BARFRESH bars=1 fresh=1 verdict=FRESH; LADDER targets=2 rungs=9 placed=9 verdict=LADDERED; rungs=9 done=1 open=8; critical path #1 DV2 (the outside referee), then DV4 DV5 DV6 DV8 DV3 DV7 DV9; DV1 reads LIB-UNCENSUSED (a library younger than the last eco-graph build), which clears on the next graph build. The DARK-CONTRACT labels on the open rungs are the ruler's known reading of an honest _ABSENT_ row on an existing organ file (nx_swcompare_lib, nx_swcompare_matrix, nx_chartlay_lib), not builds lost to darkness. |
| 2026-09-15 | DV1 | measure | FIRST PUBLISH READ BACK from sites/nishifamily/compare/search/index.html (659575 B) while the regen was still walking: the 2D cut renders axes fitted 700-1000 x 0-350 with seven and eight numerals, the means labelled 882 and 136, quadrant names centred, five seated labels (Marginalia to the left of its mark), grade line label overlaps 0, labels over marks 0, off-canvas 0, unresolved 0, mark overlaps 1, spread 690 permil; api.json carries readability_cut. The cube graded 0 label defects but mark overlaps 3 and spread 171 permil -- the critic was handed the whole 760x560 canvas while the cube occupies its own rhombus, and the 220 px unit left a third of the canvas empty. REFINED at once, both trees (nx_swcompare_lib 260820 B, hash 13b26574): the critic judges spread against the cube's own extent (left corner, z top, right corner, bottom corner) and the unit is 250 px with the origin raised to 290; rebuilt 758984 B sha 8dd44362, promote and restage follow the running regen so its fork copy is not swapped under it. |
| 2026-09-15 | DV9 | measure | FLEET BASELINE for the adoption ratchet, nx_absent over buildroot/runtime: pattern <svg matches=149 coverage_complete=1 corpus_complete=1 (occurrences, not distinct files -- the organ lists 12 of 149, so the distinct-file count is UNMEASURED and the ratchet's first job is that partition). Every one of those sites scales, places or colours on its own today; nx_chartlay_lib has exactly one adopter (cdmap_pass in nx_swcompare_lib). The ratchet counts adopters up and names each remaining hand-drawn emitter; wiki graph (nx_wiki_graph), the ad banner logos (nx_ad_banner, nx_ad_emitter_grow) and the eco-graph renderers are the first population the census shows. |
| 2026-09-15 | DV10 | land | SHIPPED, both trees: nx_cdmap_referee_lib.nx (10380 B), nx_cdmap_referee.nx (7209 B), _hdl_build/nx_cdmap_referee_gate.nx (15981 B). NAS: gate BUILT 83864 B sha 6b5e31a5 PROMOTED and registered; program BUILT 65632 B sha e9ac2a7d PROMOTED and registered. The gate's first run read 42/43: its own control T5 refused a plant I had placed over the label's OWN mark, which the critic skips by design -- the plant now sits on another player's mark and the own-mark semantics is pinned as T5b. |
| 2026-09-15 | DV10 | measure | LIVE, sites/nishifamily/compare/search: labels=5 marks=5 frame 70,30 to 730,460; real Liberation Sans advances vs the emitter's reserve -- Nishi (bold) 29 vs 36 px, Mojeek 39 vs 43, Brave 32 vs 36, Google 40 vs 43, Marginalia 55 vs 72 (delta -69 to -236 permil); heuristic LL=0 LM=0 OFF=0 MM=1 SPREAD=690 reproduces the published readability_cut exactly; metric DEFECTS=0 equals the published 0; verdict=AGREE. The estimate over-reserves on this face, so it cannot hide an overlap here; a narrower reserve or a wider face is the case the pixel referee owes. |
| 2026-09-15 | DV2 | lesson | A REFEREE THAT SHARES THE EMITTER'S NUMBERS PROVES ONLY CONSISTENCY. DV10 re-derives the grade from the published bytes and swaps one input (glyph width) for a measured one, so it can refute a self-grade that the page itself contradicts or that real glyphs overturn -- and it cannot see what a browser draws. That is why DV10 is an arm and DV2 (crg_judge, a render judged on pixels) is still the critical path. |
| 2026-09-15 | DV10 | measure | nx_gate_bite nx_cdmap_referee_gate over runtime/nx_cdmap_referee_lib.nx (2 sites): baseline GREEN 84280 B, cmp site 0 KILLED on a compiling mutant, valid_mutants=1 killed=1 not_reached=0 void_build_lane=0, restore byte-identical 10380 B, twin RESTORED, verdict=GREEN gate BITES; nx_page_verify /compare/datavis VERDICT=GREEN static 128566 B a11y-issues=0 (browser rendering unverified, that is DV2); nx_eco_graph_build re-run nodes=20914 edges=58945 files_scanned=20943 saved knowledge/store/ecograph_full so the DV1 and DV10 lib rows can leave LIB-UNCENSUSED on the next emit |
| 2026-09-15 | DV10 | measure | after nx_importcensus (asof=1789493461 rows=20914 has_nonval=3934 val_only=2748 orphan=14232 sum=20914 edges=58945) the scoped re-emit published datavis at 123597 B with LIB-UNCENSUSED states 0 and every library row LIB-WIRED: nx_chartlay_lib importers=3 nonval=2, nx_cdmap_lib importers=2 nonval=1, nx_cdmap_referee_lib importers=2 nonval=1 (first importer nx_cdmap_referee.nx), nx_leaderboard_lib importers=2 nonval=1; DV1 and DV10 cleared |
| 2026-09-15 | DV10 | lesson | rebuilding the eco graph does NOT flip a LIB-UNCENSUSED cell: the emitter reads knowledge/status/importers.tsv (nx_catalog_lib clb_load), a flat census nx_importcensus derives from the store, and that file was a day stale (asof 1789411173, nodes 20880) while the store already held 20914 nodes; the CWD hypothesis was refuted first by a positive control (search and ecosystem pages read LIB-WIRED from the same emitter); the scoped cap did not name nx_importcensus and the session cap was denied, so a cap was minted (nonce 1789493450) and banked at ~/.nishi/importcensus0915.cap |
| 2026-09-15 | DV10 | queue | MECHANISM OWED IN THE EMITTER: when knowledge/store/ecograph_full is newer than the asof of knowledge/status/importers.tsv the regen should refresh the census (fork nx_importcensus) or announce IMPORTERS-STALE beside every LIB state, so a new library never reads UNCENSUSED for a day because two beats disagree; today the recipe is nx_eco_graph_build then nx_importcensus then the scoped regen |
| 2026-09-15 | DV2 | land | SHIPPED THE PIXEL REFEREE from the first byte: nx_cdmap_pixjudge_lib (crg_judge: every player label rasterised through the sovereign TrueType engine nx_ttf_fontlib, glyph coverage at or above 128 of 255 is ink, marks as disks, LL LM OFF MM counted on the pixels, DEFECTS = LL+LM+OFF slot for slot with the self-grade, a label's own mark skipped as cl_critic skips it), program nx_cdmap_pixjudge (page + api.json + two faces, optional journal row per run, verdict AGREE/DISAGREE/UNPROVEN exit 0/1/3, every offender named) and gate nx_cdmap_pixjudge_gate (34 teeth, runtime fixtures, the drift plant derived from the ruler's own reserve); NAS /api/build gate 95176 B sha d65ec2d7 PROMOTED + REGISTERED + offc, program 90184 B sha 94d42ec7 built and promoted by hash; sources byte-identical in both trees (lib ae69ed9c 14935 B, program 17d70b4f 8520 B, gate b68e4765 15155 B); the matrix row repointed from runtime/_hdl_build/nx_cdmap_render_gate.nx to runtime/nx_cdmap_pixjudge_lib.nx so the crg_judge watch can flip on the next emit |
| 2026-09-15 | DV2 | measure | GATE 34/34 GREEN FIRST RUN ON THE NAS with Liberation Sans: the planted font-metric drift is CAUGHT and named (six W at 13 px: heuristic reserve 43 px, real ink 72 px, label B placed at x=145 just past the reserve; the box ruler reads LL=0 on those bytes and the pixel ruler LL=1 with 43 shared ink pixels); a label on another player's mark reads LM=1 (11 ink pixels inside the disk) while 135 own-mark ink pixels are not a defect; ink past the frame reads OFF=1 (ink x1 754 against frame x1 730); no face, no figure and unpaired labels are named refusals never zero vectors; LIVE /compare/search: pixel defects 0 = published 0, AGREE. The done-rule's first clause is met by the plant; the second clause (agreement journaled per beat) is the clock row queued below |
| 2026-09-15 | DV2 | queue | PER-BEAT JOURNAL: a clock row running nx_cdmap_pixjudge over the served search page and api.json with the Liberation faces and the journal path knowledge/status/cdmap_pixjudge.jrnl, one pj row per day beside the compare beat; the foreign-browser oracle (a real browser screenshot read outside the build path) remains the cross-check of the sovereign rasteriser itself and is never a dependency |
| 2026-09-15 | DV2 | measure | BITE-PROVEN: nx_gate_bite nx_cdmap_pixjudge_gate over runtime/nx_cdmap_pixjudge_lib.nx (2 comparison sites): baseline GREEN 95176 B, site 0 SURVIVED (a measurement, not yet adjudicated: one of the two bounds on a guarded comparison, mutate the whole invariant before calling the tooth vacuous), site 1 KILLED on a compiling mutant, valid_mutants=2 not_reached=0 void_build_lane=0 killed=1, restore byte-identical 14935 B, both twins RESTORED, verdict GREEN. LIVE RUN of the program on /compare/search (nx_job_run nx_cdmap_pixjudge with the Liberation faces and the journal path): 5 labels 5 marks, ink 164/197/146/189/292 px, pixel LL=0 LM=0 OFF=0 MM=1 DEFECTS=0 = published 0, AGREE, the first pj row appended to knowledge/status/cdmap_pixjudge.jrnl (78 B). Registered nx_cdmap_pixjudge + nx_cdmap_pixjudge_gate, offc installed, cap ~/.nishi/pixjudge0915.cap, organ_gate.conf pairs, gateroster and datavis.gates rows, importers.tsv re-censused (nx_cdmap_pixjudge_lib importers=2 nonval=1) |
| 2026-09-15 | DV2 | land | PER-BEAT JOURNAL WIRED: clock row cdmappixjudge 86400 = nx_cdmap_pixjudge.elf over the served search page and api.json with the Liberation faces and knowledge/status/cdmap_pixjudge.jrnl (CLOCKJOB-PUT ok rows=187, desired state; the scheduler folds it at its next window init, verify on the live plane with nx_clockjob get cdmappixjudge and by the journal growing one pj row per day). The DV2 done-rule is met on both clauses once the live plane carries the row: the drift plant is caught and named, and agreement on the live page is journaled per beat. Still an ARM beside the self-grade, not the operator's acceptance: a foreign-browser screenshot read outside the build path remains the oracle that cross-checks the sovereign rasteriser itself |
| 2026-09-15 | DV4 | land | SOURCE-LANDED (both trees byte-identical, nx_swcompare_lib.nx 273524 B sha 0842d11b, replayed onto the NAS under a four-hunk size ladder 260820 to 272936 to 273303 to 273455 to 273524): cdp_splom draws every pair of the five registered axes as one small cut (ten panels, three per row, 246 x 190 cells), each panel fitted to its own field of play through the one layout ruler (cl_domain and cl_scale_dom), first and last tick numerals, category means dashed, the same momentum-ringed marks as the cut at half radius (floor 3 px), no labels (the legend names the colours), the critic called with zero-size boxes and only its MARK terms read (MM per panel, spread per panel), a grade line summing MM and averaging spread, and cdp_splom_json emitting a splom block (panels, axes, mark_overlaps_total, spread_min_permil, spread_mean_permil, panels_list with x, y, mark_overlaps, spread_permil, fit_x_lo/hi, fit_y_lo/hi) into api.json; computed once before the branches so page and JSON carry the same numbers. NOT YET BUILT: the emitters compile after the R0 cross-encoder run frees the box (load 7.9 on 8 cores while it runs); the DV4 done-rule (ten small pictures from a five-axis registry, sharing the fitted domains) is claimed only when the regen publishes it and nx_page_verify reads GREEN |
| 2026-09-15 | DV4 | land | SHIPPED AND PUBLISHED: nx_swcompare_matrix rebuilt on the laptop lane in the NAS flavour (772208 B sha 5b333bcf, 594 subprograms, cdp_splom present), staged through the sovereign content door, nx_contentdiff live vs staged lost 1 of 2901 runs (the source path runtime/_hdl_build/nx_brand_tokens.nx, which the laptop lane resolves at runtime/ instead; every gained run is the splom section) so promoted with allow_capability_loss=yes naming that one path, offc-installed and copied byte-identical to buildroot/_offc (nx_filehash cmp identical=1); nx_cdmap_gate 71024 B sha 04d1c545 ONE-WAY-GAIN promoted and offc-installed, 93/93 GREEN on the laptop (the day spine written twice and read back); nx_chartlay_gate 48/48 GREEN. Scoped regen (nx_job_run nx_compare_regen buildroot ../sites/nishifamily/compare/ --domain-file knowledge/compare/regen.scope, since the launcher refuses the pinned row) published search index.html 695426 B (prev 661575) and api.json 144533 B with forkchecked=4 forkfresh=4 verdict=GREEN; the page reads 10 panels over 5 registered axes and api.json carries splom panels=10 axes=5 mark_overlaps_total=15 spread_min_permil=312 spread_mean_permil=549; nx_page_verify /compare/search VERDICT=GREEN a11y-issues=0. DV4 done-rule MET on the search page (browser rendering unverified; the pixel referee DV2 judges the cut, not the panels, so the panels are self-graded only). The scope file is read one domain per run, so datavis is regenerated in a second run. |
| 2026-09-15 | DV4 | lesson | A SCOPE FILE THAT READS ITS FIRST LINE ONLY IS A ONE-DOMAIN SWITCH WEARING A LIST'S NAME: two domains in the file published one, and the receipt named the one it took without naming the one it dropped. Read every line or announce the lines ignored; until the reader does, one domain per run. |
| 2026-09-15 | DV5 | land | SHIPPED AND PUBLISHED, from the first byte: the annotation layer is DATA (knowledge/compare/<dom>.cdnotes rows note |
| 2026-09-15 | DV5 | lesson | A NOTE IS A LABEL WITH A LONGER TEXT AND NO PLAYER OF ITS OWN: seating it through the same placer and counting it in the same critic is what makes it an annotation rather than a sticker; a second placer or an uncounted box is the junk verdict returning through a new door. The build refused twice before it ran, both times on a loop variable the render scope already owned as a let, so an emitter this large needs a distinct name per block, never a shared q. |
| 2026-09-15 | DV5 | measure | THE PIXEL REFEREE READ UNPROVEN ON THE FIRST ANNOTATED PAGE (scan labels=13 marks=5: the eight note lines carry the label fill), an honest refusal that would have read UNPROVEN on every daily beat; FIXED IN THE RULERS THE SAME HOUR: nx_cdmap_referee_lib cr_scan now skips text inside a cdnote group (cr_in_note over cr_rfind) and cr_scan_notes reads the groups as note lines with their note index; nx_cdmap_pixjudge_lib draws ONE mask per note over all its lines (ink box unioned) and counts a note in LL (against labels and other notes), LM (over ANY mark, a note owns none) and OFF, never in MM; the program names note offenders and prints notes= note_lines= and per-note ink. nx_cdmap_pixjudge_gate 34 to 49 teeth (T9: pairing kept, one note of two lines scanned, ink drawn, a clear note adds nothing, a note on the Mojeek label reads LL=1 while the players-only box ruler reads 0 as its named neg-control, a note over the Nishi mark reads LM=1, no notes reads 0 groups) GREEN on the laptop and on the NAS with the live page AGREE; nx_cdmap_referee_gate 44/44 on the NAS. All four binaries contentdiff ONE-WAY-GAIN lost 0, promoted and offc-installed (pixjudge 100432 B b16834c4, its gate 106736 B 9bcdaae8, referee 66544 B 2b3f2567, its gate 85200 B a0b446d4); sources landed in both trees. LIVE /compare/search re-judged: labels=5 marks=5 notes=2 note_lines=8, note ink 1342 and 1451 px, pixel LL=0 LM=0 OFF=0 MM=1 DEFECTS=0 = published 0, verdict AGREE; the DV10 referee AGREE (the heuristic reproduces the published grade, the metric critic agrees). |
| 2026-09-15 | DV5 | lesson | A NEW FIGURE ELEMENT IS A NEW CLASS FOR EVERY REFEREE: the emitter grew a layer and both rulers went blind or unproven in the same instant, so an emitter feature ships with its referees or the daily agreement journal decays into UNPROVEN and nobody is alarmed. The fixture that proved the note-on-mark tooth first read LL=1 because the planted note also crossed the Nishi label: read the second defect before blaming the ruler. |
| 2026-09-15 | DV8 | land | SHIPPED AND PUBLISHED: the interaction door is ONE inline script the compare base emits after the 2D cut (cdp_interact in nx_swcompare_lib; the matrix row repointed from nx_swcompare_matrix.nx to the lib so the contract names the file that declares it). Every mark, label and momentum path carries data-p; the legend swatches became buttons (aria-pressed) that toggle a player's mark, label and path; hover or keyboard focus on a mark reveals the values the emitter already wrote into its title, in a tooltip; dragging on the plot brushes a region whose players are listed in an output element with the bounds converted to permil on the cut axes through the SAME fit domains the page drew with, and the region is written into the URL hash as cdsel=xlo,xhi,ylo,yhi so the trace is shareable and re-applied on load; api.json announces interact_door. The zero-JS floor is intact: the figure, legend, notes and grade render without the script, the buttons are inert and the output empty. The lexer forbids a hash mark or a bang inside a literal, so the hash is built from its character code and every negation is a comparison. nx_cdmap_interact_gate (21 teeth: the fit domains and the frame inside the script, the hash-free trace key with a byte-count neg-control, the three interactions, the re-applied trace, the optional-door style, and on the NAS the live page: buttons 5 equal marks 5, one output, the door announced) GREEN on the laptop and on the NAS, promoted cccf02cd, registered, offc-installed; emitter 798944 B sha 17a05b80 contentdiff ONE-WAY-GAIN lost 0, promoted, offc-installed, buildroot/_offc byte-identical; scoped regen GREEN, page 702696 B, nx_page_verify GREEN a11y 0. The edge serves the page with NO Content-Security-Policy header (Content-Type, Content-Length, Connection, Cache-Control only, read through nx_https_get with headers), so the inline door is not blocked. SCOPE STATED: the estate proves the door's structure and numbers; a browser executing it is the oracle outside the path, and that witness (a real hover, click and drag) is owed before the rung is complete under the three-party law. |
| 2026-09-15 | DV8 | lesson | A DOOR OVER A FLOOR IS HONEST ONLY IF THE FLOOR IS SEEN WITHOUT IT: the buttons render and the output exists with the script off, and the gate reads the door's numbers back from the emitted bytes rather than trusting the emitter that wrote them. The header read was the cheap experiment that decided whether an inline script could run at all; ship no door before reading the policy the edge actually sends. |
| 2026-09-15 | DV6 | land | EXPORT SHIPPED: nx_cdmap_raster_lib (the sovereign SVG-subset rasteriser: rect, circle, dashed line, polyline with the momentum arrow, polygon, text incl. the -90 rotation, halo and opacity, cdnote groups; :root tokens resolved; every glyph through nx_ttf_fontlib; PNG through nx_png) + nx_cdmap_export program (PROMOTED f607033b, registered) + nx_cdmap_export_gate 56/56 GREEN on the laptop (PROMOTED 14947d00, registered, rostered) + cdp_export in nx_swcompare_lib (the DV6 contract symbol) run as nx_swcompare_matrix <dom> export <dir> (PROMOTED b926c35b, allow_capability_loss on its own source-path run) which nx_compare_regen forks after every matrix page it publishes (PROMOTED ae4b1983, ONE-WAY-GAIN; exports= exports_absent= export_fails= on the summary, a failed twin never fails the page); the figcaption links cdmap.svg, cdmap.png and cdmap.export.json and api.json carries export_svg, export_png, export_receipt. The standalone SVG is the figure with xmlns declared and every var(--nx-color-*) resolved to the page's rgb; the PNG is twice the viewBox. Sources on both trees. |
| 2026-09-15 | DV6 | lesson | A SUBSET RASTERISER IS HONEST ONLY IF IT COUNTS WHAT IT SKIPS: the receipt carries rect, circle, line, polyline, polygon, text, notes, arrows, rotated, rotated_skipped, skipped and unresolved_colors, so a partial render reads as partial instead of as a picture of the renderer's blind spots. And three of the first gate's 56 teeth failed on the seat's arithmetic, not the renderer's: a dash phase computed in canvas px against a scaled pattern, and two ink bands that crossed the gridline and the momentum path -- a pixel tooth must be placed where nothing else paints, and its expected value derived in the units the renderer uses. |
| 2026-09-15 | DV6 | land | TWO DEFECTS THE FIRST EXPORT SHOWED, FIXED IN THE EMITTER AND THE RASTERISER (2026-09-15): (1) the standalone SVG carried the page's NAMED HTML entities (– in both axis titles, · and → in the mark titles) which are parse errors in XML, so nx_cdmap_raster_lib now holds ONE entity table read by both the twin writer (named -> numeric character reference, – -> –) and the rasteriser (nearest ASCII: dashes to a hyphen, the middle dot to a period, the arrow to ->); nx_cdmap_export_gate 60/60 with T19g/T19h/T19i/T15b. (2) the HBR quadrant words were painted first and covered by whatever came later (a note box over CONVENTIONAL, a player label over MAINSTREAM on the live search map): nx_chartlay_lib gained cl_place_from(n, nfixed, ...) -- the same placer with the first nfixed boxes FIXED -- and cdmap_pass now seats the four words after every player label and note with those as obstacles (cdp_quad_at at the seat; quad_unseated printed beside the grade, 0 on datavis and search). nx_chartlay_gate 54/54 (T9..T9e incl. the unfixed neg-control). Promoted: nx_swcompare_matrix 391939d5, nx_swcompare_sota 6ef16d25, nx_cdmap_export e377bad5, nx_cdmap_export_gate 8f8cd3d6, nx_chartlay_gate 194fcf46; buildroot/_offc twins refreshed; datavis republished (exports=1, 0 unseated). |
| 2026-09-15 | DV3 | land | CONTRAST MEASURED, FLOORS AS DATA, REFUSAL WIRED (2026-09-15): nx_chartlay_lib gained cl_contrast (composes the estate's ONE WCAG 2.x kernel nx_uiq_color.uiq_ratio100, KAT black/white 21.00 and 767676/white 4.54), cl_blend, cl_contrast_floor (size-and-weight tiers), cl_contrast_ok and cl_contrast_conf, which reads knowledge/compare/contrast.conf -- algorithm |
| 2026-09-15 | DV3 | lesson | A COLOUR TOKEN AT PARTIAL OPACITY IS A DIFFERENT COLOUR, AND THE ONLY WAY TO KNOW ITS CONTRAST IS TO BLEND IT OVER THE SURFACE IT SITS ON AND MEASURE THE RESULT: the quadrant words had been drawn at 0.75 opacity for weeks and read as muted on purpose; the first measurement (cl_blend then uiq_ratio100) put them at 3.67 against a 4.50 floor, under AA by a margin no eye can judge. A floor that lives in a conf row is a bar a machine can read (contrast.conf: algorithm, floors, size tiers), and an algorithm the ruler does not implement falls to the defaults ANNOUNCED rather than silently, so the WCAG 3 draft can be adopted by editing one row when its measure is named. Refuse the classes a placer seats (labels, notes, quadrant words) and print the classes that are structure (ticks, axis titles): hiding a scale to pass a contrast bar is the blank-chart defect wearing an accessibility badge. Also: a word whose eight leader seats all collide needs a seat inside its OWN region (cl_reseat_in), not a ninth candidate on the same ring. |
| 2026-09-16 | DV7 | land | PRINT SHEET SHIPPED (2026-09-15): sc_print_css in nx_swcompare_lib, the sc_theme_pass shape -- written once, called LAST by all five generators (matrix, sota, hub, compute, office) immediately before the style close, so order is the specificity and no importance hack is needed. The SSOT's light rows are re-selected under html,html[data-theme],:root:not([data-theme]) and the five grounds (bg, panel, soft, tint, codebg) made white; figures and cards break-inside:avoid; thead as table-header-group, rows unsplit, tables paginate; the sticky filter bar, filter and theme chips, skip link, header nav, map tooltip and selection line hidden; links print their target once, never inside the refs list. Gate nx_print_css_gate 36/36 laptop and 37/37 NAS with the live search page witnessed (promoted 03773c0b, registered, offc-installed, rostered, evidence row in datavis.gates beside new rows for the export and interact gates). Generators promoted: matrix 0c90dcc3 (ruler GREEN), sota 43687f6e (GREEN), hub 45f8d782 / compute c0255917 / office b2f8aa22 with allow_capability_loss -- their 12/16/16 lost runs are the plan section headings and table-open literals that moved into sc_heading_open and sc_plan_table_open weeks ago, every name still in the lib, the same re-encode the matrix and sota already carried; buildroot/_offc twins refreshed (regen forkfresh=4); search republished with the block. The DV7 board row was repointed from nx_swcompare_matrix.nx to nx_swcompare_lib.nx (it read DARK-CONTRACT until then). |
| 2026-09-16 | DV7 | lesson | A PRINT SHEET NEEDS NO IMPORTANCE WHEN IT IS EMITTED LAST: order is a specificity axis the lexer cannot forbid. The nx_cc string lexer refuses the bang byte, so the print block every generator writes immediately before its style close wins every equal-specificity tie by position, and the one selector that would have out-weighed it (the OS-dark block's :root:not([data-theme])) is matched at its own weight rather than beaten. The paper palette is the SSOT's light register re-selected, not a fourth hand palette, and its grounds are white because a background the printer will not paint is a surface the DV3 contrast measure would have lied about. Three generators had sat BEHIND the base lib for weeks (hub 164,872 vs 204,016 B, compute 59,823 vs 127,512 B) and read as CAPLOSS on rebuild for headings that had merely moved into helpers: a lib change is a fleet ship, and its stragglers are the census's BEHIND rows, never litter. |
| 2026-09-16 | DV9 | land | THE FLEET RATCHET SHIPPED (2026-09-15): nx_chartlay_adoption_gate (symbol cl_adoption_gate) censuses every function in the compare generators that writes an svg start tag and judges it by the ONE layout ruler: ADOPTER when it or its prefix family (the helpers sharing its name up to the first underscore) calls a ruler verb, HAND when none does, HAND-COLOUR when the family paints a fill or stroke with a literal rgb(); a decorative icon (aria-hidden) is counted never judged, an svg named in a comment is nothing, and a URL before the tag cannot hide it (comments are stripped outside string literals). Sources, ruler verbs and named exemptions are DATA in buildroot/knowledge/compare/cl_adoption.conf; an allow row exempts one function WITH a reason and reads STALE (RED) the moment that function stops being an offender, so the ratchet only tightens. Planted fixtures prove every class both ways (F0-F10d), then the live fleet: 11 sources, 441 functions, 2 chart emitters -- cdp_fig_open ADOPTER (family 49, 8 ruler calls), rs_svg_standalone HAND but ALLOWED as the twin writer whose geometry is judged at cdp_fig_open -- 1 icon (the gap map's nav glyph), 0 unallowed hand charts, 0 stale rows. 34/34 GREEN laptop; promoted dc593c93, registered, offc-installed, rostered, evidence row in datavis.gates. Named residual: the gap map's momentum bars are HTML divs sized by a percentage width, a chart by CSS the svg census cannot see -- the next widening of this ruler is a bar-width verb in nx_chartlay_lib and a conf row for HTML charts. |
| 2026-09-16 | DV9 | lesson | A FLEET RATCHET NAMES ITS OFFENDERS OR IT IS A NUMBER: the first measure of this rung (149 svg sites, one adopter) was a fleet COUNT, and a count cannot say which function to fix, cannot tell a chart from a nav icon, and cannot tell a re-emitter of an already-laid figure from a hand layout. The gate that closes the rung prints one line per emitter with its verdict and its remedy, exempts by a NAMED row that carries its reason and goes stale by itself, and derives its scope from a conf so widening it is a data edit. Also: a comment stripper that does not track string literals eats the tag after a URL on the same line and reports a real chart as nothing -- the planted adopter fixture carries exactly that line so the stripper cannot regress silently. |
| 2026-09-16 | DV3 | land | DARK REGISTER MEASURED (2026-09-15, the extension the DV3 land row queued): cdp_contrast now measures the same classes against the brand SSOT's DARK rows (bt_emit_dark_root_buf -> rs_theme_load -> the dark fg/mut/panel/bg) beside the light ones -- labels, quadrant words and axis titles as x100 ratios, the count of dark classes under their floors, and the dark tokens read -- printed in the figcaption ("dark theme: ...") and in api.json (contrast_dark_labels_x100, contrast_dark_quadrant_x100, contrast_dark_axes_x100, contrast_dark_under_floor, contrast_dark_tokens_read). ONE figure serves both themes through var() tokens, so a dark shortfall is printed and counted, never hidden: the refusal flags stay the light register's, and the remedy for a dark shortfall is a token in the brand SSOT. Promoted matrix d426dbd7 and sota 06f7a94a (rulers GREEN, no loss); the buildroot/_offc twins refresh once the running compare beat releases them, then search and datavis republish with the dark line. |
| 2026-09-16 | DV9 | land | THE POSITION MAP DRAWS EVERY DAY, NOT THREE POINTS: each player's movement line on the four-quadrant map used to join first spine day, previous spine day and today, so from the fourth day on every day in between vanished and where a player is moving day by day could not be read off the picture; nx_cdmap_lib gained cd_spine_trail (every spine day before today, oldest first, one record per day with that day's values in the first-day slots, so the one axis rule cd_hist_axis_plot places a past day on any registered axis), and nx_swcompare_lib's cdmap pass computes the trail once per player and uses it for the fitted axes (every drawn day stays on the canvas), the cut polyline and the cube polyline (each tagged data-days) and api.json, where every position now carries trail:[[day, centrality, distinctiveness, breadth points, held, matrix rows], ...]; nx_cdmap_gate S9-S9k plus neg-control-trail-excludes-today, 127/127 GREEN, cross-identity: the trail's day two plots exactly where the history's previous day plots; promoted nx_cdmap_gate 61cc6430 and nx_swcompare_matrix 0fed31a9 (debug flavour matched to the incumbent, content ruler lost one run -- the cube polyline opening, now carrying data-days) into the serving root, nishihost _offc and buildroot _offc; qualified on the live search board before promote: every player's api.json position carries its 2026-09-15 spine row as its trail |
| 2026-09-16 | DV9 | measure | LIVE WITNESS OF THE DAILY TRAIL: full regen job 1789572844 with nx_swcompare_matrix 0fed31a9 finished REGEN published=249 fails=0 verdict=GREEN; https://nishifamily.com/compare/search/cdmap.svg serves every movement polyline tagged data-days='2' with one point per spine day plus today (Nishi 180,216 -> 235,212; the old three-point form repeated the first day as the previous day), and https://nishifamily.com/compare/search/api.json (200, 153,839 B) carries trail:[[20711,750,199,97,46,67]] for Nishi and the matching spine row for Mojeek, Brave, Google and Marginalia; the trail grows by one point per day on all 115 boards from here |
| 2026-09-17 | DV11 | land | SUBSTRATE ROWS OFF THE MAP (2026-09-17): cd_sym_is_substrate and cd_substrate_mask in nx_cdmap_lib (plan join by rung symbol and rungrole, _ABSENT_ prefix stripped), the mask applied in nx_swcompare_lib cdmap_pass_heading with rows_matrix and rows_substrate_excluded in api.json and a Rows sentence in the page, nx_cdmap_gate T14 to T14g (135 of 135 GREEN on the laptop, planted plan excluded=2); sources on the NAS, generators building; the day spine's rows column records the denominator change, so the momentum across the change is read beside it, never as movement |
| 2026-09-17 | DV11 | measure | FIRST LIVE CUT ON THE SEARCH BOARD (2026-09-17): 35 of 93 matrix rows read substrate through the plan join and left the map, 58 feature rows remain; category means moved from centrality 832 and distinctiveness 178 to 799 and 209; Nishi 760 and 248 became 768 and 317 (the scaffolding rows had carried inherited rival cells that credited the rivals), Google 972 and 430 became 957 and 506; every quadrant assignment held. nx_cdmap_gate 135 of 135 GREEN on the laptop and the NAS with T14 to T14g; generators promoted (matrix 386052e8, sota 66c78395) with the one lost run named as the build-metadata path runtime/nx_brand_tokens.nx, fork copies in buildroot/_offc hash-identical to the promoted files |
Person · product · place — not yet measured for this domain
knowledge/compare/datavis.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 datavis, 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).Exclusive and shared capabilities
This board grades 22 capabilities: 22 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 1; since the previous census: new 0, resolved 0. Census FRESH age_s=7220.
| Capability | Organ | Boards grading it | Home | Rule | Evidence | Standing on this board |
|---|---|---|---|---|---|---|
| main | - | browser:runtime/_hdl_build/nx_uiq_perf.nx, graphviz:runtime/_hdl_build/nx_eco_graph_forest.nx, graphviz:runtime/_hdl_build/nx_eco_graph_png.nx, graphviz:runtime/_hdl_build/nx_eco_graph_forest.nx, graphviz:runtime/_hdl_build/nx_eco_graph_wiki.nx, familyatlas:runtime/_hdl_build/nx_eco_graph_png.nx, familyatlas:runtime/_hdl_build/nx_eco_graph_card.nx, ecosysdesign:runtime/_hdl_build/nx_eco_graph_arch.nx, typography:runtime/nx_font_ttf_emit.nx, koikatsu:runtime/_hdl_build/nx_retarget_emit.nx, pmdash:runtime/nx_dr_ocm_cli.nx, failmodes:runtime/nx_compare_refs_gate.nx, ecosystem:runtime/nx_compare_rank_fleet.nx, gen:runtime/_hdl_build/nx_gen_orchestrator_daemon.nx, capregistry:runtime/nx_catalog.nx, capregistry:runtime/_hdl_build/nx_coe_intoto.nx, capregistry:runtime/nx_toolreg_reconcile.nx, capregistry:runtime/nx_capsweep.nx, datavis:runtime/_hdl_build/nx_chartlay_gate.nx, speech:runtime/nx_voice_eval.nx | — | homonym | - | homonym |
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 1396325 s), sources read 4 of 7 declared — a BLIND census is a FLOOR: unread sources can only add rows.
| kind | name | board | source | evidence |
|---|---|---|---|---|
| directive | nx_a11y_check | datavis | plan-queue | rung=DV3 |
| directive | nx_render_svg | datavis | plan-queue | rung=DV6 |
| directive | nx_figures_page | datavis | plan-queue | rung=DV6 |
| directive | nx_figure_gate | datavis | plan-queue | rung=DV6 |
| directive | nx_viz_chart | datavis | plan-queue | rung=DV9 |
| directive | nx_batt_chart | datavis | plan-queue | rung=DV9 |
| directive | nx_mindmap | datavis | plan-queue | rung=DV9 |
rows shown 7|this board's directives 7|estate-wide un-boarded organs 452 (listed in full on /compare/ecosystem)|census rows 639|malformed 0 (counted, never rendered)
References
- [datawrapper] Datawrapper (2026). Product home: charts, maps and tables for newsrooms, the field's reference for responsive, accessible, themed charts. publisher · read in our library
knowledge/fetched/rf_67ebdc04.raw· pinh3771e332d48163b41d138665d5957a5127225505eeb2b001fa22f71ba67c96c9· accessed 2026-09-15 · vendor-docGrounds: Domain-fit axes with nice ticks - [plot] Observable (2026). Plot documentation, Plots: marks, scales, axes, facets and the plot frame of a grammar-of-graphics library. publisher · read in our library
knowledge/fetched/rf_d8bbbc78.raw· pinh73761a1e2723717d8d62ce1975c0afdad58738422c0d910c8c26bf7f1f5151b9· accessed 2026-09-15 · vendor-docGrounds: Collision-free direct labels - [vegalite] Vega-Lite (2026). Documentation index: a high-level grammar of interactive graphics with scales, axes, legends and view composition. publisher · read in our library
knowledge/fetched/rf_60eaa53e.raw· pinhaba275e3390d0dedec1578463ff40e19f10f1cb2ecdc2fb0781ad8edd1ffdd32· accessed 2026-09-15 · vendor-docGrounds: Small multiples (scatterplot matrix) - [d3] D3 (2026). What is D3: the low-level toolbox of scales, shapes, axes and selections the visualization field builds on. publisher · read in our library
knowledge/fetched/rf_ccf7a5ea.raw· pinh67fa111c6e3e847ed5663cdb96bff3c405bf20d76118de49d3502253d643a9bd· accessed 2026-09-15 · vendor-docGrounds: Integer linear scale both ways - [wcag3] W3C Accessibility Guidelines Working Group (2026-09-10). W3C Accessibility Guidelines (WCAG) 3.0, W3C Working Draft 10 September 2026: Text contrast sufficient (minimum) is a Core requirement at Developing status whose contrast measure is still to be determined and is assumed to carry a size and weight factor. publisher · read in our library
knowledge/fetched/rf_09a7e0d6.raw· pinhd8653102cc537e909b6d4a68785e24bd9c1872c567bcc02c890e34ba1b9f456b· accessed 2026-09-15 · published-standardGrounds: Text contrast measured (WCAG 3 draft) - [css2025] W3C CSS Working Group (2025-09-18). CSS Snapshot 2025, W3C Group Note: the modules that make up the current state of CSS. publisher · read in our library
knowledge/fetched/rf_96b252f5.raw· pinhcb69f0c0754b80c438521def32cf2a6851fa8ac3cc612d2b7bfaaf49afb35f59· accessed 2026-09-15 · published-standardGrounds: Print stylesheet for boards - [fidelity26] Saharan S., Oliver M., Gordon K., McGill G., Jenkinson J. (2026-09). Representational Fidelity in Didactic Visualization: Toward a Multidimensional Design Space. arXiv 2609.08037, to appear in IEEE TVCG (IEEE VIS 2026): five fidelity dimensions (Morphological, Dynamic, Cueing, Contextual, Interactive) derived from a 175-item corpus. publisher · read in our library
knowledge/fetched/rf_f901b785.raw· pinh65c0be833cfffa573ce19c5783602f13db2e25574fc7813bef9d44d6443a9d5d· accessed 2026-09-15 · published-paperGrounds: Readability critic self-grade - [insight26] Hutchinson M., Huq S.M., Albinhassan M., Jianu R., Slingsby A., Madhyastha P. (2026-09). InSight: A Benchmark for Agentic Claim Verification in Interactive Visualizations. arXiv 2609.01383, EMNLP 2026: 21,349 claims over fully interactive web visualizations, interaction traces as the proxy for reasoning. publisher · read in our library
knowledge/fetched/rf_f8fdee42.raw· pinhed2daf083904c540b0c22d52bd9d650790091c4b72191278865f1efc34c20090· accessed 2026-09-15 · published-paperGrounds: Outside referee: browser render judged on pixels - [arxivcshc202609] arXiv cs.HC listing, September 2026 (Human-Computer Interaction): 294 entries, fetched and read for the month's newest visualization work. publisher · read in our library
knowledge/fetched/rf_bec44911.raw· pinh660676368e927c8bb1f1f00a97906ddaec13c996c1d3ef58258617f3f3b2e0f4· accessed 2026-09-15 · mirrored-indexGrounds: SB-DATAVIS - [awwwards] Awwwards (2026). Sites of the Month: the juried monthly award for web design; the listing read on 2026-09-15 runs January to August 2026. publisher · read in our library
knowledge/fetched/rf_76a26fd4.raw· pinhb73486e1368c4dace6ad490cab1359d37fe6113c411b1fc2822a454dad443216· accessed 2026-09-15 · mirrored-indexGrounds: SB-DATAVIS - [iib] Information is Beautiful Awards (2026). The awards celebrate excellence and beauty in data visualizations and infographics. publisher · read in our library
knowledge/fetched/rf_bf258644.raw· pinh6069b630cdb1b6e3ece16758352f3a3bb4a0c13a423ff820355eb5248eccb89a· accessed 2026-09-15 · vendor-docGrounds: SB-DATAVIS - [bright] BRIGHT: a reasoning-intensive retrieval benchmark, live leaderboard; the estate's outside referee for search and the template for the outside referee this board owes. publisher · read in our library
knowledge/fetched/cmp_search_brightbenchmarkbrightbenchmarkgit.html· pinhbc96adc8a1f8ca5030b1b3677fde24ce58cb92e23f127f443ef0b3a420f926f1· accessed 2026-09-04 · datasetGrounds: Leaderboard with computed rank - [hbr2015] Dawar N., Bagga C.K. (2015-06). A Better Way to Map Brand Strategy. Harvard Business Review, June 2015: the centrality-distinctiveness map and its four quadrants. publisher · read in our library
knowledge/fetched/rf_a5ae141e.raw· pinha770ad8e1c8f1045f63e25cdd43ea1bf8eac80dca7dd1050e75e0f1bb8a6b5ea· accessed 2026-09-15 · published-paperGrounds: Four-quadrant position map
generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/datavis.matrix · source checks show implementation presence; runtime and user-outcome evidence are reported separately · JavaScript supports page controls