mapv10 local-only product premise — accepted decision
Status
Accepted decision. mapv10 is a local-only generated product. Product gates target local filesystem read, decode-worker, main-thread scheduling, and GPU upload latency. Remote RTT / CDN / edge-cache behaviour is outside the shipping product boundary and must not block product-foundation work.
Premise
mapv10 — and Valenar by extension — is a local product. The viewer loads
generated artifacts from the local filesystem via the dev server's
/mapv10/runs/<run-id>/... route (see
viewer/server/mapv10ArtifactMiddleware.ts). The generator emits
content-addressed run directories that the viewer reads directly. The Valenar
host runs server-authoritative locally per durable memory
feedback_valenar_not_offline.md; the server-authoritative tick loop is local,
not multiplayer-over-network.
There is no production network path between viewer and artifact store. There is
no shipping HTTP CDN, edge cache, or remote artifact service. The viewer's
fetch calls are loopback fetches to the local dev server, and the artifact
middleware (viewer/server/mapv10ArtifactMiddleware.ts) is the live transport.
Consequence: the "slow-network" Playwright scenario throttle
(mapv10_continent_to_location_slow_network in
viewer/src/scenarios/mapv10_scenarios.json, networkThrottle.delayMs = 75) is
a test artifact, not a product use case. It simulates a network condition
that the deployed product does not experience.
Concrete consequences of the premise
- The R-31 result on
mapv10_continent_to_location_slow_networkrecorded anomittedSlotCountMaxactual value of 24 under a 75 msdelayMsthrottle in the staleviewer/verification/scenarios/latest/scenario-results.jsonartifact. That evidence remains useful as future-resilience / cold-cache stress evidence, but it is no longer a blocking product gate by itself. A blocking omitted-slot gate still belongs on clean/local scenarios that model the shipped latency surface. - Any future architectural decision that assumes a "network latency budget" needs to be reframed as a local-disk-and-decode latency budget. The scheduler's frame-budgeted lanes (route lane, label lane, terrain texture lane) target local decode and GPU upload work, not RTT.
- The
sample-runfixture (T4-6) was originally retained partly as a slow-load smoke target. Once "slow network" is acknowledged as non-product, the fixture's retention rationale weakens — the remaining justification reduces to its three current references inviewer/src/ui/__tests__/manifestUrl.test.ts,viewer/server/mapv10ArtifactMiddleware.ts(legacy-path interception), andviewer/scripts/verify-browser.mjs.
Accepted dispositions
- Slow-network scenario disposition. Retain
mapv10_continent_to_location_slow_networkas non-blocking resilience / cold-cache stress evidence. Its throttled omitted-slot metric belongs in the warning budget or an explicitly excluded non-product gate, not the blockingperformanceBudget.zoomTrace.failgroup. - Clean/local gate ownership. Keep omitted-slot failures blocking for scenarios that model the shipped local surface. If a future cold-local-cache scenario is added without remote RTT throttle, it should hard-fail on omitted terrain slots unless the user accepts a new product-level policy.
- T4-6 cleanup timing. The local-only decision weakens the slow-load
rationale for
viewer/public/sample-run/, but cleanup remains a separate user decision because the fixture is still referenced byviewer/src/ui/__tests__/manifestUrl.test.ts,viewer/server/mapv10ArtifactMiddleware.ts, andviewer/scripts/verify-browser.mjs. - Other network-condition assumptions. At PROC time the only scenario
throttle found in
viewer/src/scenarios/mapv10_scenarios.jsonis the retained slow-network stress scenario. Future throttles must justify the local product surface they represent. - Valenar transport boundary. Valenar import packaging is out of scope for this decision. Keep schemas, export fixture, and dummy-map alignment in later waves if product/schema changes require it; do not change downstream Valenar runtime defaults from mapv10 process reconciliation.
Cross-references
next-work.mdrow R-31 (slow-network strict-fallback FAIL)next-work.mdrow T4-6 (stalesample-runfixture cleanup)next-work.mdrow T1-1 (state-field producer transport — touches Q5)viewer/src/scenarios/mapv10_scenarios.jsonscenariomapv10_continent_to_location_slow_network(thenetworkThrottleblock)viewer/server/mapv10ArtifactMiddleware.ts(the live local-only artifact transport)docs/wave-3b-lod-ladder-camera-decision.md(related deferred architectural decision; same Wave 2/3 LOD-coherence cluster)- Durable memory:
feedback_valenar_not_offline.md(Valenar local server-authoritative architecture)
What this document is NOT
- Not permission to delete the slow-network scenario. It is retained as non-blocking stress evidence until a replacement local-decode/upload stress scenario exists.
- Not a claim that the resolver's strict-fallback contract is wrong. The contract remains correct for the deployed local product surface.