Commit History

Autor SHA1 Mensaxe Data
  clanker 4a528f3975 Force Wake: human-triggered resume of parked tasks and goals hai 1 mes
  clanker 3785e9f562 In-place Edit buttons for task mandate and goal brief hai 1 mes
  clanker 73dcec9314 List UX: newest-first tables, New task expander above the queue hai 1 mes
  clanker 2cf9149d29 r3: legacy wire removal (arch 19, P3-1) — SaddleUpdateEndpoint + SaddlePollEndpoint and their routes are gone (the daemon never called them; verified against saddle/src at review time): the poll-era ingest/verdict pair 404s now, pinned by regressions. The service support that existed only for them dies with them: take_pending_answers (the saddle-keyed variant; the for_task assignment carrier stays), take_pending_comments + PendingComment, validate_token (its only caller was the update/poll bearer pin — resolve_bearer collapses to saddle_for_token for the all-id-less wire), the subtask/plan refusal arms, and the update endpoints' own statics move to SaddleWire (read_json_body/json_ok/json_error shared by every remaining /api/saddle/* route). Knock-ons per the plan: tasks.working_branch was write-dead (only /update done ever supplied it) — column + entity field + TaskDetailPublic member + the task-page line + mark_terminal/complete_task's dead parameter die; the plain-task plan-review UI in task_detail.html was unreachable (plans are goal-only since plan 12; only /update block type=plan could raise one) — BlockView.is_plan_review, the plan-review section, and the task page's ~180-line plan-remarks JS (dead with no [data-plan-review] targets) are removed; AnswerBlockAction's plan-verdict arms stay (the deep-link API + off-contract pushes keep working). Test fixtures rewrite into the push-era shapes: block raises ride POST /results blocked pushes (pages/lifecycle/push bundles), the terminal-task review fixture inserts its row directly (terminal pushes are consumed silently), rejected entries ride a results push, the dashboard review raise rides a review entry, the queued-state guard becomes a results state no-op, the /update subtask/plan refusals become 404 pins, and branch_advanced — the /poll verdict hint — is re-pinned on its surviving surface: the answers bundle's parked-resume allocation now asserts branch_advanced=true after a strictly-newer sibling completion on the shared branch. 856 -> 850 checks. hai 1 mes
  clanker a58d9c0738 r2: saddle-status + session-outcome constants, one bearer resolution (arch 26) — SADDLE_IDLE/BUSY/OFFLINE and OUTCOME_STOPPED/RESUMED/DONE/FAILED beside SaddleService replace the magic strings across SaddleService (register/list/park/free/offline writes incl. the guarded UPDATE SQL), TaskService (unreachable check, every release outcome), AllocationService (the claim's idle/busy/resumed), Dispatcher (the affine-wake idle check), SaddleApi (the offline->idle ask recovery, the legacy done outcome) and the four entrypoints' offline/idle guards; the {id}-anchored and id-less auth styles collapse into resolve_bearer (validate_token pinning the route's saddle vs saddle_for_token owning-whatever-registered) so every /api/saddle/* endpoint resolves its credential through one helper. No OUTCOME_PARKED: no web-side writer exists (D4's web half is unlanded) — an unused constant would be dead code; it lands with D4. The wire-state switch labels (daemon results states) and display labels stay literals by kind. hai 1 mes
  clanker acf1fcbe43 r2: LifecycleService owns the six cancel/retry/requeue orchestrations (arch 11) — TaskService+SaddleService+GoalService injected, no cycle; CancelTask/RetryTask/ResumeTask and CancelGoal/RetryGoalRun/RequeueGoalRun become thin auth+validation+notify wrappers delegating to it, the abort-before-mutate ordering and the abort failure contract (mark saddle offline, still proceed) living once in the service docblock+paths; RetryGoalRunAction's direct db.update_async<Goal> writes move into GoalService.retry_goal (goal revives active, completed_at withdrawn — no pulse added, matching the old action's write set). hai 1 mes
  clanker d46cc3426c r1: twin guards removed (P3.3, sequenced last) — the one-pending render guard on the goal page and answer_block's twin-answer sweep die: fresh DBs cannot hold pre-dedupe twins and the raise-side cross-dedupe (4884259) keeps them single; their tests now pin the raise-side single-row invariant (a redelivered review-kind push adopts the pending row, the verdict leaves zero pending completion-family rows). hai 1 mes
  clanker 4ac6ab1368 r1: is_valid_mode — the three identical TASK_MODES loops (edit_task, the daemon's task-create callback, the queue create action) collapse into the one validator beside TASK_MODES. hai 1 mes
  clanker 8d254a3426 r1: ONE goal_branches parser — GoalService.parse_goal_branches (typed repo/branch/pushed rows, the array shape the daemon emits, strict boolean push flags) feeds BOTH the completion-accept gate and the goal page's chips; the gate's objects/arrays-are-TRUE truthiness and the chips' objects/arrays-are-FALSE copy die together with the legacy object form the daemon never sent, killing the latent gate-vs-chips divergence (arch item behind the F9 gate). hai 1 mes
  clanker 12de25e747 r1: one block-kind vocabulary — the GOAL_BLOCK_* duplicates die; every raise/adopt/render/narrative path (GoalService, SaddleService's ensure_block + rfc fallback, GoalDetailEntrypoint, GoalActions, PushService) reads the single BLOCK_QUESTION/RFC/REVIEW/PLAN/COMPLETION set from TaskService, including the raw 'review'/'completion' literals the completion-review detection leaned on. hai 1 mes
  clanker 37508060cf r1: dead code deletion — has_yeehaw (the batch yeehaw_task_ids/yeehaw_feed own every surface), SaddleService snippet_text + generate_token (mint_saddle_token is the live minter), the Saddle.container_id column (entity + flattened M0001, tear-down convention), the never-set 'recovering' branch of unreachable_task_ids, TaskDetailPublic plan/auto_approve/toggle_auto_approve, the duplicated hideQuoteUi in main.html (the activeHandler-clearing definition wins), and the malformed/duplicated docblocks (TaskService nested /**, the orphaned list_tasks header, the SaddleService /status orphan, the TasksEntrypoint double header). fail_goal's empty cascaded-if dies with the counter, the shared cascade_goal_tasks helper owning the cancel/fail task sweep. hai 1 mes
  clanker 7db4cac172 s5: UI polish — mechanical rows ('session context restored', 'parked until') filtered from every user-facing timeline (write-side filtering on the daemon-ingest path, the web's restore comment removed, read-side filters on the goal narrative/task thread/dashboard so legacy rows vanish too; the raw terminal keeps everything), label reconciliation (a goal in completion review reads 'awaiting your review', the run-task status card agrees via display_map_for/display_of_detail — no bare 'blocked' for review parks), and verdict-shaped blocks pinned to their explicit accept/reject + free-text forms with NULL-options questions staying question-shaped. hai 1 mes
  clanker 0d1f6a97f4 s3: delta resume notices — take_resume_notice emits ONE-LINE task statuses (status + the summary's first line) with full bodies only for NEW completions each exactly once; the statuses/reports double embedding is dead, so the notice size is constant per event instead of cumulative with every parked round. hai 1 mes
  clanker 4b13a1ea1f s1: canonical-on-accept — goals.completion_report is written ONLY by the accept verdict (the winning block's body); submit_completion stops writing it at submission (the pending report lives only in its block), reject/revise leaves the goal row clean, and fail_goal's failure report keeps its goal-side home. Tests pin all four directions incl. the accept-gated goals.plan column. hai 1 mes
  clanker 4884259da9 fix: at most ONE pending completion-family block renders (stale pre-dedupe twins hidden), and the verdict answers every pending twin — the review shows once, the report card only after acceptance hai 1 mes
  clanker 89d58b1a8c fix: the completion review is one row — review-family cross-dedupe in raise_run_block (the daemon's done-park review block adopts the web's completion row instead of raising a twin that double-rendered the goal page review and pinned the dashboard); compare-changes link on the goal status head hai 1 mes
  clanker 3aadf3b00c C4: goal page batch — head line, expanders, live push flags, accept gate (F9) hai 1 mes
  clanker e2a11c459d C3: goal_events deleted — terminal watermark + derived narrative hai 1 mes
  clanker e7e167579f C2: goal comments ride the run task; system events styled (F8) hai 1 mes
  clanker d1c8bea7e2 C1: goal blocks ride the run task — one row, one answer path (F6) hai 1 mes
  clanker 336c94e49f B3: dashboard mirror-sync — either side of a dual-rowed pair closes it hai 1 mes
  clanker fd7d90fbb7 goals: failure cascade — fail_goal cancels non-terminal tasks, narrated hai 1 mes
  clanker 00c1a6dd2e replay: idempotent terminal + narrative projections — once per entry id, ever hai 1 mes
  clanker 8b1c48a785 ui: rename every user-visible 'bot' to 'agent' at the source hai 1 mes
  clanker dc8ccf792b integration: goal-era cross-binary pass — integration_test re-baselined, four ingestion faults fixed hai 1 mes
  clanker fa78f8a5bf goals: flatten — subtask web machinery and task plans deleted hai 1 mes
  clanker 4bc3e61edb goals: web UI — pile, timeline, queue filters, task page, carried fixes hai 1 mes
  clanker 44f2e66a5a goals: schema, lifecycle service, wire contract and task callbacks hai 1 mes