@@ -21,10 +21,27 @@ to the pull request that made the change.
2121 reproduces its sensor noise (#54 ).
2222- Golden-master regression tests for scenarios 0 and 1, comparing the rocket and
2323 balloon trajectories against stored baselines so an ActiveRocketPy change
24- cannot move a score unnoticed (#47 , #49 ).
24+ cannot move a score unnoticed (#47 , #49 ). Scenario 0's baseline also records
25+ the step each balloon is popped on and how the episode ends (#100 ).
26+ - ` scripts/verify_submission.py ` , which regenerates a submission's balloons from
27+ the shipped scenario and its seed and reports anything that does not match.
28+ The balloons are not something an agent commands, so they are reproducible
29+ independently of the run (#97 ).
2530- Unit tests for the pop-detection geometry (#48 ) and for actuator dynamics
26- (#66 ).
27- - CI checks that ` uv.lock ` is current against the ActiveRocketPy submodule (#62 ).
31+ (#66 , #71 ).
32+ - ` CONTRIBUTING.md ` and this changelog, with ` make format ` matching what CI
33+ checks (#76 ). ` CITATION.cff ` and ` SECURITY.md ` , and release notes grouped by
34+ kind (#79 ).
35+ - The pop rule is written down in the README and pinned by tests, along with the
36+ coordinate frame observations are reported in (#81 , #87 ).
37+ - CI checks that ` uv.lock ` is current against the ActiveRocketPy submodule (#62 )
38+ and runs on the Python floor the package claims rather than only asserting it
39+ (#75 ).
40+ - Tests for the submission path (#77 ), scenario 1's release states (#83 ), the
41+ 3D position error rather than each coordinate alone (#85 ), and the render
42+ behaviour a previous change had deleted (#86 ). The import guards no longer
43+ hide an installed but broken simulation stack (#82 ), and baselines are written
44+ as strict JSON, atomically, and refused when diverged (#84 ).
2845
2946### Changed
3047
@@ -43,11 +60,13 @@ to the pull request that made the change.
4360 the previous behaviour (#39 ).
4461- The observation and the whitelisted ` given_parameters ` handed to an agent are
4562 copies. Writing into them used to reach the environment's own state, which was
46- a scoring hole rather than an API detail (#99 ).
63+ a scoring hole rather than an API detail (#99 , # 103 ).
4764- Diagnostics go through the ` logging ` module instead of ` print ` (#51 ).
4865- ActiveRocketPy updated to the RocketPy v1.13 line (#60 ), with ` uv.lock `
4966 relocked to match (#62 ).
5067- ruff is pinned in CI so formatting results are reproducible (#50 ).
68+ - The README's update instructions point at the pinned ActiveRocketPy commit
69+ rather than at whatever its branch currently holds (#72 ).
5170
5271### Fixed
5372
@@ -67,6 +86,18 @@ to the pull request that made the change.
6786 than by how long they are. A millimetre-scale pair at ninety degrees was
6887 called parallel and reported 1.5005 m where the real distance is 1.4995 m,
6988 which against a 1.5 m balloon radius is a pop reported as a miss (#98 ).
89+ - ** Scoring:** the first interval after launch is checked for pops. The sweep
90+ started from the previous recorded position, which is all-NaN before launch,
91+ so the step where the rocket leaves the pad was skipped. It tracks the sweep
92+ origin explicitly now (#69 ).
93+ - The submission file is written atomically and its name no longer carries the
94+ team name into the path. Two runs in the same second used to overwrite each
95+ other (#73 ).
96+ - ` balloon_flights ` is no longer packed into a submission. Nothing reads it and
97+ ` trajectories ` already holds the same positions, so submissions are much
98+ smaller (#74 ).
99+ - The console handler no longer competes with the level the CLI sets, so the
100+ score line prints once at the level asked for (#95 ).
70101- The documented coordinate frame was wrong about Z. X and Y are east and north
71102 of the launch point, but Z is altitude above sea level, not height above the
72103 pad, in ` balloon_states ` , the GNSS sensors and the rocket state alike. A
0 commit comments