Repository navigation
Show program step journals in missions show and waiting-on - #6261
Draft
schickling-assistant wants to merge 8 commits into
Draft
schickling-assistant wants to merge 8 commits into
schickling-assistant wants to merge 8 commits into
Conversation
missions show projects each program step's current attempt journal (latest status, timing, failure and child per key) under the step and in --json; the published work row names the innermost open key with gate_kind program, so waiting-on reports kind program instead of watching and no-progress once the journal is quiet past stalled-after.
…gine-core' into schickling/2026-11-10-program-engine-visibility
…/kind page read Three unresolved sinks share one fingerprint, so their IDs follow their order in the file; moving the subject/kind page read into a function after the other two reorders them.
…tten missions show --json failed client-side with "u128 is not supported": serde's flatten buffers the journal through its Content type, which cannot hold u128. The view now deserializes from its spelled-out wire fields; the JSON shape is unchanged.
Base automatically changed from
schickling/2026-11-10-program-engine-core
to
main
November 10, 2026 23:20
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A program step is agentless with no gates, so the work list gives it
gate_kind: watchandmissions waiting-onreports it aswatching: a running or stuck program never names what it runs and never stalls its run.missions showshows nothing of the step'sprogram.stepjournal (design §8, R10).Goal
missions show(text and--json) andmissions waiting-onshow each program step's inner steps: per key the latest status, timing, failure and the child run or ask it waits on; waiting-on names the innermost open key and reports a program quiet past itsstalled-afterasno-progress.Decisions
fractal_kernel::program_journal::ProgramJournal::fold, over a step's newest entries of the current attempt (newest-first claims page the engine's replay already uses; no new SQL site:claims_for_subject_kind_atandreconcile_faultwere moved into_txfunctions with their existing large-value markers).MissionRunView.programsis filled only on presentation reads (both the run read and the tree), reusing the pinned definition those reads already parse. Views read the newest 200 entries and mark older onestruncated; the text lists the newest 12 keys.program(innermost open key, its start, its child, last entry, stalled-after) read from the newest 64 entries when the row refolds; every journal entry is a claim on the step, so the row refolds reactively.WaitKind::Program(not a cause); paststalled-after(default 30 minutes, the mission-level default) the step isno-progress, so the run is stalled. A program's ask staysask, prefixed with its key.gate_kind: programandprogram(schema, README, Rust/Swift templates; generated outputs to be regenerated withcargo run -p fractal-client-codegen).Verification
On the build host (
nix develop -c nice -n 19, own target dir), on an integration of this branch with #6262 and #6297:cargo test -p fractal-kernel --lib program_journal: 2 passed (a_journal_shows_each_keys_latest_entry_and_its_innermost_open_key,a_long_error_is_cut).cargo test -p fractal-api-core --lib a_program_step_names_its_innermost_open_key: 1 passed. It checksgate_kind: program, kindprogramwith the open key and its child, the reason wording,no-progressand a stalled run paststalled-after, and themissions showprojection.cargo test -p fractal --lib -- mission_view_shows waiting_on_cli: 5 passed, including the newmission_view_shows_each_program_key_and_the_program_fault.cargo run -p fractal-client-codegen(regenerated clients committed) and-- --check: passed.python3 scripts/check-sqlite-large-values: passed (the moved subject/kind page read keeps its marker; the three identical sinks keep their IDs in source order).Hosted CI at the exact head is the proof.
Complexity
About 600 changed lines including tests, docs and schema.
Concerns
Friction & bottlenecks
Build host memory limit: cold Rust builds are serialized across the program engine slices.
Follow-ups
program/stalled/program/hostfaults once the engine API (M1.1b) lands.References
docs/st3/program-engine.md §8; stacked on the M1.1a declaration branch.