feat(recovery,context): tier-2 intent-holder arbiter + remaining-delta pinning + surfaced signal events

- recovery: two-tier repair ladder — owner then arbiter (recovery stage recast
  as intent-holder, holds initial intent, reconciles cross-file contract disputes)
  with independent INTENT_ROUTE_BUDGET; RecoveryRoutingTest coverage
- context: remaining-delta checklist pinning (RemainingDelta{Pinning,Entry}Test)
- surface write-only events (session name, quality signals) into stats/browse
- parseToolArguments lenient-Json fallback for bare-key drift
- tools: ChildProcess seam
This commit is contained in:
2026-07-11 23:56:52 +04:00
parent 3d5e05c1fb
commit 15248cae8a
55 changed files with 1932 additions and 231 deletions
+8
View File
@@ -119,6 +119,7 @@ type ToolRecord struct {
Name string
Tier int
Status ToolStatus
Params []string // pretty "key=value" call args, from tool.started
}
// ManifestTool is a declared (not-yet-run) tool from a stage manifest.
@@ -208,6 +209,7 @@ type Session struct {
Status string
WorkflowID string
Name string
named bool // Name came from a session.renamed (intent-derived title); don't clobber with workflowId
LastEventAt int64
CurrentStage string
PlanGoal string
@@ -429,6 +431,11 @@ type Model struct {
// the OUTPUT transcript; they always stay in the EVENTS panel. Persisted in tui-prefs.json.
actionsHidden bool
// thinkingShown reveals the model's reasoning/thinking blocks in the OUTPUT transcript.
// Off by default (collapsed to a one-line summary) so the trace doesn't drown the answer;
// toggled from the palette ("thinking"). Persisted in tui-prefs.json.
thinkingShown bool
// outputScroll is how many rows up from the bottom the OUTPUT transcript is scrolled
// (0 = tail-follow the newest output). PgUp/PgDn + ctrl+u/d move it; esc snaps back.
outputScroll int
@@ -504,6 +511,7 @@ func NewModel(client *ws.Client) Model {
transcriptSel: -1,
sbHidden: loadStatusbarHidden(),
actionsHidden: loadPrefs().InlineActionsHidden,
thinkingShown: loadPrefs().ThinkingShown,
}
}