feat(orchestrator): Layer 1 deterministic per-turn progress signals (IDE-211) - #72
Open
mattias-ident wants to merge 1 commit into
Conversation
…IDE-211) Compute cheap, deterministic progress signals once per turn boundary: a read-only git probe yields a working-tree fingerprint, empty-tree bit, and commits-since-dispatch, which SymphonyElixir.ProgressSignal rolls into per-issue streaks and classifies into one status (:progressing / :stuck_state / :oscillating / :repeated_error) plus an independent at_risk_no_commits flag. :stuck_state is gated on an empty working tree, so a dirty-but-identical tree stays :progressing (the IDE-189 misclassification). Layer 1 only reports and logs — no session kills, Linear state moves, or continuation gating. trigger?/2 exposes a single boolean for the future Layer-2 AI overseer; the assessment is surfaced via Orchestrator.snapshot/0 and a per-turn log line. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.
Context
Layer 0 (IDE-210) can act on budget pressure but Symphony cannot yet tell, cheaply, whether a running issue is actually progressing. Layer 1 fills that gap with deterministic per-turn signals.
TL;DR
Per-turn git-derived progress signals that classify a running issue as progressing/stuck/oscillating/repeated-error — report-only.
Summary
SymphonyElixir.ProgressSignal: pure classifier rolling per-issue streaks into one status plus an independentat_risk_no_commitsflag.Git.working_tree_probe/4: one read-onlyshprobe (fingerprint + empty-tree bit + commits-since-dispatch) off the agent's critical path.:stuck_stateis empty-tree-gated, so a dirty-but-identical tree stays:progressing(fixes the IDE-189 misclassification).snapshot/0+ a per-turn log line;trigger?/2is the Layer-2 hand-off.agent.progress_signal_*knobs added.Alternatives
Test Plan
make -C elixir allmix test progress_signal_test.exs git_test.exs orchestrator_progress_signal_test.exs(30 tests, incl. IDE-189 replay regression)