Mend the test prerequisites, document local CCTV packs without the dead demo feed, and credit the author

This commit is contained in:
Sameh Khamis committed 2026-11-02 07:17:39 -08:00
1 parent a0131a027f
commit c572a28e44
3 files changed
+20 -35

No files matched your search

+9 -7
View File
@@ -34,16 +34,18 @@ Open `http://localhost:4173`. Before sending a PR run `npm run build`, `npm test
- **`npm run test:track`** — the 3D flight-tracking regression harness. It
drives the **real app** in headless Chromium, so it **requires a running
dev server** (default `http://localhost:4173`). To target another instance,
run `npm run test:track -- --url <app-url>` (or `node scripts/track-regression.mjs --url <app-url>`).
depend on live OpenSky / adsb.lol / AISStream (those are optional or
rate-limited locally); it installs a persistent `fetch` shim that returns
synthetic aircraft in the exact upstream payload shapes the layers parse.
run `npm run test:track -- --url <app-url>` (or
`node scripts/track-regression.mjs --url <app-url>`). It does not depend on
live OpenSky / adsb.lol / AISStream (those are optional or rate-limited
locally); it installs a persistent `fetch` shim that returns synthetic
aircraft in the exact upstream payload shapes the layers parse.
- **`npm run build`** — production Vite build. No server or credentials
required; it validates that the client bundle compiles cleanly.
If you change runtime behavior, update `docs/CURRENT-STATE.md` and
`CHANGELOG.md` in the same PR. For a deeper catalog of what each harness
checks and what it needs to run, see [TESTING.md](TESTING.md).
Each feature also has its own headless gate; see
[Feature regression gates](#feature-regression-gates) below. Docs and changelog
rules are under [Pull requests](#pull-requests).
## Checking a built app locally
Run `npm run build` followed by `npm run preview`. Preview serves the built
+7 -28
View File
@@ -304,35 +304,14 @@ the retrieval date (2026-07-30), exact download URL, license evidence, and the
deterministic transform (`scripts/build-sf-neighborhoods.mjs`: `nhood` → `name`, ~2 m
Douglas-Peucker simplification, 6-decimal rounding).
### Pilot CCTV source packs (`config/`)
### Local CCTV source packs (`config/`)
`config/cctv_sources.shinjuku.json` is a **demo source pack** (3 cameras:
Shinjuku Crossing, Shinjuku Station West, Shibuya Scramble) used for
projection-pipeline testing. The feeds are Google-hosted sample MP4 videos
(`storage.googleapis.com/gtv-videos-bucket/sample/`), not live public cameras.
Camera poses (coordinates, heading, pitch, FOV, mount height) are fabricated
priors placed at recognizable Tokyo intersections.
Use the pack by setting:
```bash
CCTV_SOURCES_FILE=config/cctv_sources.shinjuku.json npm run dev
```
Or equivalently, via `./scripts/dev-cctv.sh`:
```bash
CCTV_SOURCES_FILE=config/cctv_sources.shinjuku.json ./scripts/dev-cctv.sh
```
The pack exercises the same CCTV registration and frustum-projection pipeline
as live city packs without requiring network access to a camera catalog. It is
**not** a live data source and carries no external attribution requirement. The
sample videos are publicly available Google test media.
`config/cctv_sources.austin.json` is the reference live pack. Custom source
packs follow the same JSON schema (see either file); `CCTV_SOURCES_JSON`
accepts inline JSON as an alternative to a file path.
The server can read a local camera list from `CCTV_SOURCES_FILE` (default
`config/cctv_sources.austin.json`, which ships empty) and inline JSON from
`CCTV_SOURCES_JSON`; the two are merged, and inline entries win on a duplicate
id. A non-empty local pack replaces the live open-data camera packs unless
`CCTV_FORCE_AUSTIN=1` is set. The packs under `config/` show the schema, and a
pack's cameras keep their own source's license and attribution.
---
@@ -0,0 +1,4 @@
- Contributor docs: CONTRIBUTING lists what each of the three baseline checks
needs to run, DATA_SOURCES documents loading a local CCTV source pack, and
KNOWN-ISSUES points the floor-placement note at its verification script
instead of a missing report (Gaurav Patidar, @gaurav7902, #210).