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:
@@ -16,6 +16,7 @@ import (
|
||||
type SessionSummary struct {
|
||||
SessionID string `json:"sessionId"`
|
||||
Status string `json:"status"`
|
||||
Name string `json:"name"`
|
||||
Intent string `json:"intent"`
|
||||
WorkflowID string `json:"workflowId"`
|
||||
StageCount int `json:"stageCount"`
|
||||
@@ -222,7 +223,12 @@ func (m Model) sessionListRow(i int) string {
|
||||
statusCell := lipgloss.NewStyle().Foreground(statusColor(t, s.Status)).Background(t.P.BgPanel).Bold(true).
|
||||
Render(padRaw(statusLabel(s.Status), 9))
|
||||
|
||||
stage := s.WorkflowID
|
||||
// Prefer the human session name (SessionNamedEvent, intent-derived) over the raw
|
||||
// workflow id — it's what the operator recognizes a session by.
|
||||
stage := s.Name
|
||||
if stage == "" {
|
||||
stage = s.WorkflowID
|
||||
}
|
||||
if s.StageCount > 0 {
|
||||
stage += " ·" + itoa(s.StageCount) + "stg"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user