Counters that may only fall, each with a committed baseline and a test
that fails on growth:
- report-engine-coupling.mjs gains layer modules that take the viewer
in attachRenderer (33), layer folders with their own "view being
restored" flag (9), engine.surface calls outside src/globe (41) and
layer ids named in the engine switch (3).
- report-qa-harness.mjs counts QA scripts that launch Chrome themselves
(98), wait with fixed sleeps (117), take the hidden loading screen as
readiness (9), read Cesium-only objects (75) or define their own
waitFor helpers (19).
- withCallLog records every contract member the contract suite calls on
the fake engine; contractCoverage.test.mjs fails when a member outside
contract-uncalled-baseline.json goes uncalled, and when a listed one
is called now, so the list of 12 only shrinks.
scripts/report-engine-coupling.mjs counts the engine-specific code left
outside src/globe/cesium and src/globe/navara: layer renderer lines per
engine, Cesium imports, `viewer` mentions, engine-name checks, raw Navara
reads, Navara ground passes, Cesium SDK loads and ScreenSpaceEventHandler
users. engineCoupling.test.mjs fails npm test when a count grows past
scripts/engine-coupling-baseline.json, so each step towards drawing
through the globe contract can only lower them.
scripts/qa-contract-suite.mjs runs src/globe/testing/contractSuite.mjs in
headless Chrome on the Cesium and Navara of a keyless dev server, which
until now only ran on the fake engine. The page imports the suite from the
dev server, starts at a fixed view, waits for the camera to rest and lets
the pointer through the panels. Cesium passes 57 of 57 checks, Navara 64
of 67; docs/CURRENT-STATE.md names the three that fail.