All the small things.
Review code, PRs, and docs without fighting your editor. Rip keeps the useful parts close and leaves the rest out.
rocket-launch
Pull Requests
xipkit/rocket-launch5 openOpenClosedMergedAll
#12feature/redline-hold-reasonsagent
claude · → main · today 09:41 · 4 files
3 passed+118 −22
#11fix/countdown-drift
bflowers · → main · today 09:12 · 2 files
3 passed+31 −9
#9docs/runbook-abort-modesagent
claude · → main · yesterday · 3 files
1 failedDraft+64 −0
#8refactor/sequencer-phase-enumagent
codex · → main · yesterday · 6 files
3 passed+210 −187
#6feature/telemetry-compression
bflowers · → main · 2 days ago · 2 files
3 passedDraft+40 −0
main↑↓ select↩ open⌘R refresh
Your whole PR queue
See every open PR with its CI status, size, and author. Rip badges agent-written PRs so you know where to look closer.
docs · ARCHITECTURE.md
ARCHITECTURE.md
Preview: ARCHITECTURE.md
1# Architecture
2
3Four programs, one manifest.
4Everything reads `mission.toml`.
5
6```mermaid
7sequenceDiagram
8 participant GC as ground-control
9 participant Seq as sequencer
10 GC->>Seq: start count
11 loop every second
12 Seq->>Seq: redline check
13 Seq-->>GC: phase + count
14 end
15```
16
17## The sequencer
18
19The count is a small state
20machine. Holds are automatic.
Architecture
Four programs, one manifest. Everything reads
mission.toml.ground-control
sequencer
ground-control
sequencer
start count
phase + count
The sequencer
mainLn 1, Col 1Spaces: 2Markdown
rocket-launch
Uncommitted changes
Split Files
Uncommitted changes
~/Work/bflowers/rocket-launch · 2 files · +4 −1
src/sequencer.rs+1−1Viewed
const MIN_BATTERY_V@@ -78,7 +78,7 @@
78/// Redlines checked every second of the count.
79const MAX_CHAMBER_PRESSURE_BAR: f64 = 92.0;
80const MIN_LOX_PRESSURE_BAR: f64 = 3.2;
81−const MIN_BATTERY_V: f64 = 27.5;
81+const MIN_BATTERY_V: f64 = 27.0;
82
83impl Sequencer {
84 pub fn from_manifest(path: &str) -> Result<Self> {
85 let raw = std::fs::read_to_string(path)?;
main
src
src
main.rs
sequencer.rs
telemetry.rs
main.rs
1//! Kestrel launch sequencer.
2
3mod sequencer;
4mod telemetry;
5
6use sequencer::{Phase, Sequencer};
7
8fn main() -> anyhow::Result<()> {
9 let mut seq = Sequencer::from_manifest("mission.toml")?;
10 while seq.phase() != Phase::Liftoff {
11 let frame = telemetry::sample(seq.t());
12 match seq.step(&frame) {
13 Ok(phase) => println!("{:<6} T{:+}", phase.label(), seq.t()),
14 Err(abort) => return Err(abort.into()),
15 }
16 }
17 println!("LIFTOFF");
18 Ok(())
19}
git
Workspace: Toggle Git Status⌥⌘G
Git: Switch Branch⌘K ⌘B
Git: Open Pull Requests
Git: Uncommitted Changes⌘⇧G
Git: File History
Review: Toggle Whitespace
Editor: Move Right
mainLn 1, Col 1Spaces: 2Rust
rocket-launch
rocket-launch
.github
docs
src
tools
Cargo.toml
mission.toml
README.md
Locations
Locations3 locations
warning: unused variable `frame`
--> src/sequencer.rs:147:22
error[E0308]: mismatched types
--> src/main.rs:24:31
Traceback (most recent call last):
File "tools/trajectory.py", line 44, in main
⌘↩ jump to the first hit · ↑↓ ↩ walk the list · esc back to the editor
src/sequencer.rs
line 147, col 22
146 }
147 if frame.lox_pressure < MIN_LOX_PRESSURE_BAR && self.t > -120 {
148 return Some(format!("LOX ullage {:.2} bar", frame.lox_pressure));
149 }
src/main.rs
line 24, col 31
23 while seq.phase() != Phase::Liftoff {
24 let frame = telemetry::sample(seq.t());
25 match seq.step(&frame) {
main
rocket-launch
#12 · 4 files
src/sequencer.rs+14 −9
src/redlines.rs+22 −3
tests/hold.rs+41 −0
docs/RUNBOOK.md+6 −1
#12 feature/redline-hold-reasons
Request changesApprove
src/sequencer.rshunk 1 of 3J/K next · V seen
@@ -142,9 +142,14 @@ impl Sequencer
142142 match self.phase {
143143 Phase::Hold { at, reason } => {
144- if self.operator_released() {
144+ if self.operator_released() && self.redlines.all_clear() {
145145 self.resume_from(at);
146+ self.log("hold released", reason);
146147 }
b
bflowers2 min ago
If the hold is released before
redline_clear fires we'll re-enter Hold on the next tick. Should this also check self.redlines.all_clear()?C
claudeagentjust now
Good catch. Pushed a follow-up that gates the release on
all_clear() and added a test for the double-hold case.Reply…ResolveComment ⌘↩
147148 }
148149 Phase::PropellantLoad => self.check_redlines(),
149150 _ => {}
150151 }
feature/redline-hold-reasons1 of 4 files seen2 comments
Review where you read
Comment on any line, step through hunks with J/K, and mark files seen. Then approve or request changes. Rip syncs every thread with GitHub, including agent replies.