KESTREL / SILENT OVERRIDE
PROVENuhf_beacon
comms/uhf.c:41
Override since 47e1b5d233f6
The change to this function will not take effect here.
Shared-header exposure still requires review.
Aroxion traces flight-software changes across mission forks,
showing what lands, what diverges, and where to look next.
8 missions3 flagged5 take the change
KESTREL
PROVENThis mission owns its implementation.
38/**39 * Emit the periodic health beacon.40 */41int uhf_beacon(void)42{43 int rc = FSW_OK;44 uint8_t frame[32];4546 rc = pkt_encode(frame, (uint16_t)sizeof(frame), frame);47 if (rc != FSW_OK) {48 return rc;49 }50 rc = reg_write32(HW_REG_BASE + 0x144u, (uint32_t)UHF_BEACON_PERIOD_S);51 if (rc != FSW_OK) {52 return rc;53 }5455 return rc;56}
The patch also edits a shared header.
Review the additional exposure.
Illustrative report viewer · synthetic mission data
SCN-07 / UHF beacon retry
Changed symbol: uhf_beacon
File: comms/uhf.c
Satellite mission software
3 of 8 mission forks shown · synthetic data
uhf_beacon
comms/uhf.c:41
Override since 47e1b5d233f6
The change to this function will not take effect here.
Shared-header exposure still requires review.
KESTREL runs its own version of the function. Aroxion shows where the baseline change stops and why.
Explore the findingFour outcomes
You fix a bug in the baseline. Which missions does the fix actually reach? Checking means comparing every fork by hand, on every change, so it rarely gets done.
SCN-07 / UHF beacon retry
The fork still runs the baseline’s version, so the change takes effect.
5 of 8AURORA, MERIDIAN, NIMBUS,
TESSERA, VIREO
The fork wrote its own version long ago, so the change does nothing there.
1 of 8KESTREL
Same code, different defines. The change runs with values nobody tested it against.
1 of 8CINDER
The fork never touches the changed function, but code it does run depends on it.
1 of 8HALCYON
Only the first is what everyone assumes. The second looks exactly like success.
How it works
C/C++ flight software in Git, with history.
Runs from the command line.
01
Every verdict is measured from where that mission branched, not from today’s baseline tip.
KESTREL branched at r3HALCYON branched at r4CINDER branched at r9
02
Each function, each define, and which files pull in which.
fn uhf_beacondefine UHF_BEACON_PERIOD_Sinclude config/mission_config.h
03
Into each fork, then sort it into one of the four outcomes.
HALCYON 1 hopsched_tick -> uhf_beaconcore/scheduler.c:74
04
Each finding is proven or inferred, and anything it can’t see is listed.
[+] PROVEN KESTREL[:] inferred HALCYONCOVERAGE LIMIT
| Verdict | What it means | What the reviewer does | In SCN-07 |
|---|---|---|---|
| Lands | Runs the baseline’s version, so the change takes effect. | Normal review. | 5 missions |
| Silent override | Has its own version; the patch does nothing there. | Decide whether the fix is needed in the fork’s own version. | KESTREL |
| Config divergence | Same code, different define values. | Check the change against this mission’s values. | CINDER |
| Call reach | Doesn’t touch the changed function, but reaches it through calls or includes. | Review the indirect path. | HALCYON |
| Exposure | Has its own version, but it depends on a header this change also edits. | Look by hand. The tool won’t promise either way. | KESTREL |
Your reviewers stay in control. Your source stays on your machine.
fsw-analyse review --baseline repos/root-fsw --forks repos/fork-* \ --patch scenarios/SCN-07-uhf-beacon-retry.patch --manifest fleet-manifest.json
BLAST RADIUS SCN-07-uhf-beacon-retry.patch ============================================================================== 1 MISSION BLOCKS uhf_beacon (exposed: header also edited) 3 of 8 mission branches flagged 4 vehicles declared (3 operational, 1 commissioning) 5 take the change cleanly 0 out of scope 2 PROVEN / 8 inferred findings 1 mission carries a second mechanism (1 additional finding) Changed symbol uhf_beacon Config changed UHF_BEACON_PERIOD_S [+] PROVEN decidable from the source and the build files [:] inferred depends on reachability, which rests on the entry-point set [+] PROVEN OVERRIDE - the change to this symbol will not take effect here (1) [+] PROVEN KESTREL rev 16cab22 [+] deliberate since 47e1b5d233f6 [+] Confirm whether this override is affected by the rest of the [+] change: it includes config/mission_config.h, which this patch [+] edits. The change to uhf_beacon itself does not reach this [+] mission, but that is not the same as the patch having no effect [+] here. [+] COVERAGE LIMIT - this tool does not analyse what a changed [+] header or helper does to a fork's own definition; it reports [+] only that the patch touched one [+] comms/uhf.c:41 [+] also 1 finding on this mission: [+] [:] config: UHF_BEACON_PERIOD_S pinned at 10 here, baseline 30 [:] inferred DIVERGED CALLER - the change lands near code this mission owns (1) [:] inferred HALCYON rev 033ba79 [:] 1 hop: sched_tick -> uhf_beacon [:] core/scheduler.c:74 [+] PROVEN CONFIG DIVERGENCE - the code lands, the value differs (1) [+] PROVEN CINDER rev 079241f [+] override_blocks_change: this mission pins the key [+] UHF_BEACON_PERIOD_S is 60 here, baseline 30 [+] config/mission_config.h:8 [+] uhf_beacon takes the change here [:] inferred TAKES THE CHANGE CLEANLY (5) AURORA, MERIDIAN, NIMBUS, TESSERA, VIREO The change lands and applies. Behaviour on these missions does change. DECLARED what an engineer recorded, not what this tool checked declared by engineer@operator.example on 2026-09-12T04:00:00Z KESTREL rev 16cab22 release-12u UHF-rev-B Kestrel-2A (NWA-12U-2020-0512, operational) Kestrel-2B (NWA-12U-2021-0559, commissioning) HALCYON rev 033ba79 release-6u THM-rev-B Halcyon-3 (NWA-6U-2021-0631, operational) CINDER rev 079241f release-3u EPS-rev-D Cinder-1 (NWA-3U-2023-0801, operational) 5 finding(s) have a full explanation. Add --detail.
Real output from our test codebase: a synthetic baseline, eight mission forks, answers planted in advance.
Certain, not guessing. The code plainly shows it.
The fork chose this. It isn’t just out of date.
Where it can’t see, it says so.
What an engineer recorded, not what this tool checked.
Why you can trust it
It doesn’t decide anything. It tells your reviewers exactly where to look.
Every finding says which. A verdict that rests on reachability is never dressed up as a certainty.
If it can’t analyse something, the report says so, on the finding it affects.
Including decoys built to catch it over-flagging.
Your source never leaves your network. It reads only, and never writes to your repositories.
It works on source before merge, nowhere near the command path.
It sits beside your Git workflow. Try it on one change, drop it any time.
A focused three-week pilot on your own repositories.
Book a 30-minute callValidated on synthetic code so far. The pilot is where it meets yours.
We’re taking on a small number of spacecraft teams as pilot partners. Fixed scope, fixed fee, three weeks.
About
Aroxion was founded by Felix Cherrey, in Australia, following extensive conversations with spacecraft operators and manufacturers.