Skip to main content

FRESH: Flight Rule Evaluation Script Helper

Project logo

About Teamtools Studio

Teamtools Studio Utilities is part of JPL's Teamtools Studio (TTS).

TTS is an effort originated in JPL's Planning and Execution section to centralize shared repositories across missions. This benefits JPL by reducing cost through reducing duplicated code, collaborating across missions, and unifying standards for development and design across JPL.

Although Planning and Execution is primarily concerned with flight operations, the TTS suite has been generalized and atomized to the point where many of these tools are applicable during other mission phases and even in non-spaceflight contexts. Through our work flying space missions, we hope to provide tools to the open source community that have utility in data analysis or planning for any complex system where failure is not an option.

For more infomation on how to contribute, and how these libraries form a complete ecosystem for high reliability data analysis, see the Full TTS Documentation.

What is FRESH?

Overview

FRESH is a static Flight Rule checker. At JPL Flight Rules typically represent:

  • Residual issues found in development but not fully fixed prior to flight
  • Other known ways we do not wish to operate our spacecraft.
  • Idiosyncracies and "Use as is" issues disconvered in the design

Flight rule may be used to safeguard against misconfiguration, to keep us from entering a failure mode discovered in testing, or even just to make sure operations remain efficient and operators stay sane.

A given mission can have between hundreds and thousands of Flight Rules, making manaully checking them all but impossible in the time operators are given to plan a spacecraft command load. While some Flight Rules can be highly complex and need bespoke code, many can be at least partially checked with simple constructs. FRESH is meant to be a static checker that checks spacecraft commands sequences in the way an IDE would check linting rules, and it is optimized to check these simple rule architypes while also defining an interface to define more complex rules if needed.

Rule Architypes

Nearly every Flight Rule can at least be partially checked with one of a few architypes

  • Do not send command X in condition Y
  • Do not send command X with arguments Y in condition Z
  • Do not send command X within Y seconds before/after Command Z in condition W

In all cases, the command and argument portions of these architypes are actually fairly straightforward for a computer to check, but can be very taxing for a human. On the other hand, the more open ended the "condition Y" is, the more difficult it is to implement in a way where a computer can check it, with implementation complexity exploding around rare corner cases. However, more often than not, the humans in the loop of spacraft planning can quickly disposition these conditions by simply leveraging their situational awareness (are we in safe mode? Did that werid thing that almost never happens happen today?).

In this way, a strong FRESH implementation serves as a filter. Thousands of Flight Rules get checked, and out comes a decimated list of rules that still need human intervention, often on the order of 20-50, which is a much more tractable number for a human to check on a tactical timeline (e.g. if command X is nowhere in today's command load, no one needs to check if we are in condition Y, so FRESH can disposition the rule without a human's help).

A note on command timing rules

FRESH does not simulate sequences. To the extent that it can handle timing conditions, it can only see the time stamps one sequence at a time as it is designed to be a static checker.

For spacecraft that use parallel sequences or do not explicitly and statically include their command timing in their sequences, some of the above architypes should be used with care or not used at all.

Any project's Flight Rule implementation will still only be as good as the team is able to judiciously write, edit, and implement their rules. FRESH can be a very strong part of that solution, but it requires a lot of human intuition. Like most TTS tools, FRESH is intended to get the nit-picky programming challenges out of the way so a human can get to apply that intuition more simply and without distraction by unrelated technical issues.

If a project need to check rules on more complex timing, see our digital twin library tts_seq.

Projects Currently Supported

  • Mars 2020 (Prototype only)
  • Europa Clipper
  • NISAR
  • DemoSat

Metadata

Release files for tts-fresh 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tts-fresh 0.3.0
File Size Uploaded
tts_fresh-0.3.0.tar.gz 575.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tts-fresh 0.3.0
File Interpreter ABI Platform
tts_fresh-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 747.4 kB

Release files / tts_fresh-0.3.0.tar.gz

Download URL tts_fresh-0.3.0.tar.gz
Size 575.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ac18fdb22fbd4f98c1a993e2f921ce3f742cf10796676431809711eeb8ad73a8
BLAKE2b-256 checksum
How to use checksums
c777785dcca3eae896c16490461527bbe793fccf15f8a56360c2fb95a08fffd3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / tts_fresh-0.3.0-py3-none-any.whl

Download URL tts_fresh-0.3.0-py3-none-any.whl
Size 171.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3bfbe235536330ba0f89dd05ddafd8838e48e6bc4984322f950f81e1e8f322ad
BLAKE2b-256 checksum
How to use checksums
33197139d747b00fe6376809bdd294f91a0bfe242725f815edb570cd15398440
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page