0.2.3 — Per-PR parity gate (upstream-drift on every PR, required on main)
No engine or tool behavior changes; golden fixtures unchanged. CI and
docs only: the upstream-drift parity check now runs on every pull request
and is a required status check on main (paired with fpv-sim's new
parity workflow, so the two repos cannot diverge at merge time), and
describe_model / the pinned DESIGN_NOTES copy are corrected against the
code.
Docs
describe_modeltext (src/server/model.ts) corrected to match the
code, in step with upstream fpv-sim's DESIGN_NOTES.md fix (fpv-sim
PR #20):pathAttensamples 13 interior points and tops out near 3.9
(the cap of 6 is never reached); WLS weights floor range at 300 m; the
geometry-penalty cut angle is between the two strongest sensors'
bearings to the current estimate, not their mean LOBs; the terminal
search is an outward spiral, not an "expanding search" of unspecified
shape; and the determinism entry names every main-stream consumer
(including the display-only enemy-drone track noise) and the derived
terrain streams. Two engine comments (fix.ts,drone.ts) that had
inherited the upstream "mean bearings" / "expanding-square" wording are
corrected — comments only, no code change; goldens unchanged.docs/upstream/DESIGN_NOTES.mdre-synced to upstream74b161a
(SNAPSHOT.mdupdated; that pin is the design-notes copy, distinct
from the fixtures'_meta.source_commit).
Changed
- CI:
upstream-driftworkflow bumpedactions/checkoutand
actions/setup-nodefrom v4 to v5 (Node 24 action runtime), clearing
GitHub's Node 20 deprecation warning. The workflow still tests on
Node 20, the package's stated minimum; setup-node v5's automatic
package-manager caching does not engage becausepackage.jsonhas no
packageManagerfield. - CI:
upstream-driftnow also runs on every pull request and on push
tomain, so a PR whose engine no longer reproduces the committed
fixtures, or whose fixtures no longer match live upstream fpv-sim
main, shows a red check before it merges instead of failing the
weekly run afterwards. The weekly schedule and manual dispatch remain
for catching upstream movement while this repo is quiet. Paired with
fpv-sim's newparityworkflow (which regenerates these fixtures from
a PR'sindex.htmlon that side), divergence between the two repos
surfaces at merge time on whichever side changes. - CI: the
driftjob is now a required status check onmain
(repository ruleset "main: require upstream-drift", no bypass actors),
so a redupstream-driftrun blocks the merge outright rather than
merely flagging it. Repo setting, recorded here so it isn't invisible:
renaming the job requires updating the ruleset's required context.