feat(falcon): v0.1.0 — dual-DNA flight stack first release#9
Conversation
The first tagged release of falcon, the dual-DNA flight stack built
inside relay (cFS-isomorphic mission DNA + PX4-style control DNA
fused at build time by meld). v0.1 is pre-product: boots, exchanges
MAVLink heartbeats with a ground control station over UDP, ships
the verified toolchain end-to-end with the rivet evidence chain in
CI.
What lands:
WIT
- wit/interfaces/relay-mavlink/protocol.wit (heartbeat, frame, codec-error)
- wit/interfaces/relay-control/dynamics.wit (imu-sample, vehicle-state,
setpoint records for the control cascade)
- wit/worlds/relay-falcon.wit (falcon-quad, -hex, -coax worlds)
Crates (no_std + no_alloc)
- relay-mavlink — MAVLink v2 codec with CRC-16/MCRF4XX validated against
reference vector 0x6F91, HEARTBEAT encode/decode (id=0, CRC_EXTRA=50),
bounds-checked frame parsing. 33 unit + proptest cases.
- relay-ekf-stub — v0.1 placeholder estimator; emits identity attitude,
healthy innovation. 9 unit + proptest cases. Real EKF in v0.2.
Example
- examples/falcon-hello — runnable demo binary with --mode vehicle and
--mode gcs; exchanges MAVLink heartbeats over UDP loopback. 9
integration tests including a real-socket round-trip.
Scripts and tooling
- scripts/falcon-hello-demo.sh — end-to-end smoke runner
- scripts/run-falcon-verification.py — spar-style extractor that runs
fields.steps[].run from rivet artifacts, emits Markdown summary
- tools/post_verification_comment.py — sticky-comment poster for the
verification gate
Rivet jumpstart artifacts (25 total)
- STKH-FALCON-001 stakeholder requirement
- SYSREQ-FALCON-001..010 system requirements
- SWARCH-FALCON-001 architecture (Leeloo cross-DNA composition)
- SWDD-FALCON-{EKF,RATE,ATT,POS,MIX}-001 detailed designs
- SWREQ-FALCON-{EKF,RATE,ATT,POS,MIX,MAVLINK,WORLD}-P0* sw reqs
- FEAT-FALCON-v0.1..v1.0 release-plan milestones with depends-on
- FV-FALCON-{MAVLINK,EKF-STUB,WORLD}-001 verification artifacts each
carrying fields.method + fields.steps[{run: ...}] in the same shape
spar uses, so the verification gate can extract and execute them.
GitHub Actions
- .github/workflows/ci.yml — fmt + clippy + cargo test (linux/macos/
windows) + falcon-hello-demo smoke
- .github/workflows/verification-gate.yml — rivet-driven PR gate that
runs the extracted steps and posts a sticky Markdown comment
- .github/workflows/release.yml — tag-triggered (falcon-v*) build of
five-target binaries with cosign keyless OIDC signing + SHA-256
checksums + GitHub release creation
Top-level
- README.md, CHANGELOG.md, LICENSE (Apache-2.0)
- falcon/README.md (full v0.1 → v1.0 release plan)
- .github/release-notes/v0.1.0.md (release body)
- .gitignore: ignore .claude/
Verification posture
- cargo test --workspace: 49 test suites green
- bash scripts/falcon-hello-demo.sh: PASS (14/14 heartbeats over UDP)
- python3 scripts/run-falcon-verification.py: 3/3 PASS, 8/8 steps green
- rivet validate: 0 broken cross-references
Honestly deferred (per the witness-style incremental discipline)
- Verus SMT proofs on new crates → v0.2 with real EKF
- witness MC/DC coverage on WASM → v0.2 (needs P3 streams + wit-bindgen)
- Gazebo SITL hookup → v0.3
- Hardware bring-up → v0.6
- Six-domain credit dossier → v1.0
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pre-existing cFS engine crates use `#[cfg(kani)]` without a corresponding `check-cfg` declaration. The `unexpected_cfgs` lint fires on those, and our workflow-level RUSTFLAGS=-D warnings promoted it to a hard error on ubuntu + macos test jobs. Fix: keep clippy strict (`-- -D warnings` on the falcon-scoped clippy invocation), but stop setting RUSTFLAGS=-D warnings at workflow level. Each cFS crate will get its own check-cfg cleanup in a follow-up commit; that's out of v0.1 scope. Verified: cargo test --workspace passes locally and on github-hosted runners after this change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Automated review for PR #9pulseengine/relay: Verdict: 💬 Comment Summary: The PR introduces several new features and dependencies, including the Findings: 0 mechanical (rivet) · 3 from local AI model. Findings (3):
Generated by a local AI model and post-validated against a strict JSON contract. Each finding includes the verbatim line being criticised — verify by reading the file at the cited location. Reviewed at |
|
running 33 tests test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 33 tests test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 33 tests test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 9 tests test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s [falcon-hello-demo] building release binary... running 9 tests test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 9 tests test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 9 tests test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s falcon verification gate (filter: (has-tag "falcon"))3 artifact(s) matched: FV-FALCON-MAVLINK-001, FV-FALCON-WORLD-001, FV-FALCON-EKF-STUB-001[ PASS] ( 1.54s) FV-FALCON-MAVLINK-001: cargo test -p relay-mavlink ✅ Rivet verification gate — falcon3/3 passed
Source of truth: |
scripts/tag-and-release.sh wraps the post-PR-merge sequence: ff-only-pull origin main, sanity-check via falcon-hello-demo, create annotated falcon-v0.1.0 tag, push (triggering release.yml), poll for the published release URL. This is the script the user runs *after* PR #9 lands. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
First tagged release of falcon, the dual-DNA flight stack inside
relay. v0.1 is pre-product: boots, exchanges MAVLink heartbeats with a ground control station over UDP, ships the verified toolchain end-to-end with the rivet evidence chain in CI.relay routes. falcon flies.What lands
relay-mavlink/protocol.wit,relay-control/dynamics.wit,wit/worlds/relay-falcon.wit(falcon-quad / hex / coax world specs).relay-mavlink(33 tests, MAVLink v2 codec with CRC-16/MCRF4XX validated against reference vector0x6F91);relay-ekf-stub(9 tests, placeholder estimator).examples/falcon-hello— runnable--mode vehicle/gcsUDP demo with 9 integration tests including a real-socket round-trip.scripts/falcon-hello-demo.shend-to-end smoke;scripts/run-falcon-verification.pyextracts and runsfields.steps[].runfrom rivet artifacts (spar pattern);tools/post_verification_comment.pyposts the sticky Markdown comment.depends-on), 3 FV with extractablefields.steps.ci.yml(fmt + clippy + test multi-OS + smoke),verification-gate.yml(rivet-driven PR gate with sticky comment),release.yml(tag-triggered 5-target build + cosign keyless + SHA-256 + GitHub release).README.md,CHANGELOG.md,LICENSE(Apache-2.0),falcon/README.md(full v0.1 → v1.0 release plan),.github/release-notes/v0.1.0.md.Verification posture
cargo test --workspacebash scripts/falcon-hello-demo.shpython3 scripts/run-falcon-verification.py --markdownrivet validateTest plan
✅ 3/3 passedcargo run -p falcon-hello -- --mode gcsin one terminal and--mode vehiclein another; observe heartbeats flow127.0.0.1:14550, verify vehicle appears in QGC listAfter merge
The
release.ymlworkflow then builds five-target binaries (linux x86_64/aarch64, macOS x86_64/aarch64, windows x86_64), cosign-keyless-signs each with Fulcio OIDC, computes SHA-256 checksums, and creates the GitHub Release with notes from.github/release-notes/v0.1.0.md.Honestly deferred (per the witness-style incremental discipline)
See falcon/README.md for the full release plan.
🤖 Generated with Claude Code