Flightdeck Tools is a public Apache-2.0 reference collection, deprecated for new Claude Code integrations as of September 22, 2026.
Operational tools often compress several meanings into one green status. A repository could not be inspected, so it has zero reported changes. A review still matches its files, so it appears approved. A local tracking branch matches, so the remote is called current.
Three Flightdeck tools keep those meanings separate.
Repo Health preserves unknowns
Repo Health inspects explicit Git paths and reports branch state, tracked and untracked changes, conflicts, and comparisons against locally available upstream references.
If there is no upstream evidence, the sync state is unknown and its counts are null. If one path fails, the failure remains visible while other repositories still produce results.
The scanner does not fetch. Equality with a local tracking reference therefore cannot prove that the server has not changed. Exit zero means the requested inspection completed; it does not require every repository to be clean.
Config Baseline bounds the comparison
Config Baseline records explicitly labelled roots with relative paths, entry types, permission modes, byte sizes, hashes, and literal symbolic-link targets.
Reference files use labels instead of absolute paths, so a deliberate relocation can still be compared. Entry, byte, and depth budgets stop an unexpectedly large scan before partial output can become a successful baseline.
A match only covers recorded attributes. It is not a malware scan, and it does not include ownership, access-control lists, extended attributes, timestamps, or hard-link relationships.
Review Receipts bind words to bytes
Review Receipts stores a reviewer label, verdict, notes, and evidence references alongside the SHA-256 hash, size, and POSIX mode of each selected file. Checking requires the expected file set again, so a caller cannot silently narrow the original scope.
The important distinction is between freshness and approval. A rejecting review can still be current. If the files match, the check succeeds while preserving the rejecting verdict. If one selected byte changes, the receipt becomes stale rather than rewriting the original review words.
The receipt does not authenticate the reviewer or judge the review’s quality. Someone who can edit the receipt can forge a consistent record. It covers only the selected files and attributes.
A failed query is not an empty answer
The composition demo exposed this distinction in its own verification. Its final ledger query ran inside a shell string-emptiness test. When the query failed with empty standard output, the outer test still succeeded and the demo printed PASS.
The corrected demo captures output in an assignment whose exit status is checked, then interprets the returned rows. Regression controls cover a failed query with empty output, a failed validation, and a successful query with unexpected live rows; all must fail the demo without printing PASS. An empty successful answer can mean no reported live sessions; a failed inspection leaves the answer unknown. This failure belongs to the composition, not the ledger implementation.
Honest status composes better
These tools are small because each status should answer one question.
Did the inspection run? Is the upstream comparison known? Does this configuration match the recorded attributes? Are these the same bytes that were reviewed? What verdict did the review actually contain?
Keeping those answers separate gives a larger agent workflow better material for its next decision. It also leaves room for uncertainty without converting uncertainty into success.