Skip to content

Settle the lower tail of flying_height per roll from the logbooks (#60) - #73

Merged
NewGraphEnvironment merged 7 commits into
mainfrom
60-lower-tail-flying-height
Sep 26, 2026
Merged

NewGraphEnvironment merged 7 commits into
mainfrom
60-lower-tail-flying-height

Conversation

@NewGraphEnvironment

Copy link
Copy Markdown
Owner

Summary

  • The lower tail of flying_height is settled per roll. The 1,962 frames FLYING_HEIGHT is 10.764x too large on 1,589 catalogue frames, so fly_footprint(dem =) sized them at 110 km #54 left "implausible" are 42 rolls with one round-feet height each, so 77 roll-heights. Two witnesses independent of the disputed fields settle 22 of them (1,001 frames):
    • adjacent-frame spacing against the ~60% designed overlap, checked on known answers first;
    • the province's scanned flight logbooks, transcribed with three control rolls' catalogue values withheld.
  • What the 22 were. Ten dropped a digit, one dropped two (bc7280, catalogued at 60 m and flown at 20,000 ft). Eleven have the right height beside a wrong scale, so FLYING_HEIGHT is 10.764x too large on 1,589 catalogue frames, so fly_footprint(dem =) sized them at 110 km #54's fallback to nominal scale was drawing them 2–10× too wide.
  • Runtime. fly_footprint(dem = ) now reads inst/extdata/flying_height_rolls.csv, keyed on roll + height + lens + scale, and marks those frames height_source = "corrected_roll_table". The height used is the logbook's, converted.
  • Nothing left silent. Every other lower-tail roll-height ships in flying_height_rolls_excluded.csv with its reason (55, 961 frames).

Related Issues

Test plan

  • devtools::test(): 2,279 passed, 0 failed.
  • test-fly_footprint_height_rolls.R:
    • holds the table and the excluded list to the shipped sweep (an exact partition of the 1,962; every r_corrected recomputed);
    • each of seven restored defects turns it red.
  • R CMD build: creating vignettes ... OK; both CSVs ship; data-raw/ and planning/ do not.
  • /code-check, three rounds, eight findings fixed:
    • Round 3 found a defect inside round 1's fix, so a quiet round could not end the loop.
    • It ended on an enumeration instead: all 77 shipped labels were re-derived from the per-frame logbook states by an independent predicate, and all 77 agree.

Notes

  • The fly#60 section of inst/notes/terrain-correction.md covers method, controls and bounds. Spacing cannot tell ×10 from ×10.764; the logbook can.
  • data-raw/height_calibrate-lower_tail_rolls.R reproduces every figure. data-raw/flying_height_logbooks.csv is the hand transcription.
  • The table is consulted on the DEM route only. Without dem, a wrong-scale frame is still sized from its scale.
  • v0.15.0.

🤖 Generated with Claude Code

https://claude.ai/code/session_0115csb82i78r86GWFzwPzis

NewGraphEnvironment and others added 7 commits September 26, 2026 15:03
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0115csb82i78r86GWFzwPzis
The 1,962 frames #54 left implausible sit on 42 rolls with one
round-feet height each, so the tail is 77 roll-heights. Two
instruments that read none of the disputed fields settle 22 of them
(1,001 frames): adjacent-frame spacing against the ~60% designed
overlap, and the province's scanned flight logbooks, transcribed by
hand into data-raw/flying_height_logbooks.csv with three control
rolls' catalogue values withheld.

Ships inst/extdata/flying_height_rolls.csv (10 dropped-digit, 1
two-digit, 11 right-height-wrong-scale) and an excluded list with a
reason for each of the other 55. The height shipped is the logbook's,
converted, not the catalogue's times the factor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0115csb82i78r86GWFzwPzis
fly_footprint(dem = ) consults flying_height_rolls.csv before #54's
repair, keyed on film_roll, flying_height, focal_length and scale with
numbers formatted identically on both sides, and marks those frames
height_source "corrected_roll_table". A height slip must still
reconcile the frame's own ratio; a wrong-scale row cannot be asked
that, but its height must clear the ground. The table reaches frames
catalogued below the terrain, which is how two dropped digits arrive.

The terrain note gains a fly#60 section and corrects its r ~ 2 claim,
which holds for about half that mass (#72). The #54 decimal-point
finding is recorded as #71, not changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0115csb82i78r86GWFzwPzis
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0115csb82i78r86GWFzwPzis
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0115csb82i78r86GWFzwPzis
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0115csb82i78r86GWFzwPzis
R CMD check on all three runners: "::" import not declared from tibble.
dplyr is in Imports and re-exports it. Checked locally with
tools:::.check_packages_used_in_tests(), which reports tibble with the
old line restored and nothing with the fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0115csb82i78r86GWFzwPzis
@NewGraphEnvironment
NewGraphEnvironment merged commit 3f56272 into main Sep 26, 2026
4 checks passed
@NewGraphEnvironment
NewGraphEnvironment deleted the 60-lower-tail-flying-height branch September 26, 2026 23:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

~2,000 film frames carry a FLYING_HEIGHT far too small, and three remedies fit equally

1 participant