Skip to main content

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_network recorded an omittedSlotCountMax actual value of 24 under a 75 ms delayMs throttle in the stale viewer/verification/scenarios/latest/scenario-results.json artifact. 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-run fixture (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 in viewer/src/ui/__tests__/manifestUrl.test.ts, viewer/server/mapv10ArtifactMiddleware.ts (legacy-path interception), and viewer/scripts/verify-browser.mjs.

Accepted dispositions

  1. Slow-network scenario disposition. Retain mapv10_continent_to_location_slow_network as 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 blocking performanceBudget.zoomTrace.fail group.
  2. 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.
  3. 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 by viewer/src/ui/__tests__/manifestUrl.test.ts, viewer/server/mapv10ArtifactMiddleware.ts, and viewer/scripts/verify-browser.mjs.
  4. Other network-condition assumptions. At PROC time the only scenario throttle found in viewer/src/scenarios/mapv10_scenarios.json is the retained slow-network stress scenario. Future throttles must justify the local product surface they represent.
  5. 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.md row R-31 (slow-network strict-fallback FAIL)
  • next-work.md row T4-6 (stale sample-run fixture cleanup)
  • next-work.md row T1-1 (state-field producer transport — touches Q5)
  • viewer/src/scenarios/mapv10_scenarios.json scenario mapv10_continent_to_location_slow_network (the networkThrottle block)
  • 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.