История коммитов

Автор SHA1 Сообщение Дата
  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. 1 месяц назад
  clanker 8c55db2b38 r2: release_task — the ONE owner of close-open-sessions + free/requeue-saddle (arch 13): TaskService.release_task(task_id, outcome, requeue) folds close_open_sessions/free_saddles_running (their guarded UPDATEs byte-identical, the ask-race comment kept), complete/cancel/fail/requeue/retry collapse onto it; mark_saddle_unreachable keeps its keep-parked gate + 4-family flip + comment and its own guarded OFFLINE write, then releases the held task's sessions through the owner (the idle-free no-ops against the offline row — current_task_id already cleared under the entry-seen guard); unregister releases its held task through the requeue path too (deviation: the old inline 4-family flip left suspended tasks parked and open sessions dangling on deleted rows — the plan's normal form routes both through the owner; unpinned before, pinned now). Tests: the release outcomes (stopped requeue / done terminal) + both unregister routes (dead-host offline release, session-less direct release) — 849 -> 856. 1 месяц назад
  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. 1 месяц назад
  clanker 533278fa51 r1: delete_task/delete_task_rows dedup + terminal/park stamping centralised — the five-loop row teardown lives once in delete_task_rows (the human Delete and the goal cascade's quiet delete share it); mark_terminal owns the complete/fail/cancel status flip, completed_at stamp and summary precedence; set_parked owns the suspended+suspended_at stamp (the daemon's 'suspended' push calls it directly), all semantics byte-identical to the three inline copies. 1 месяц назад
  clanker 34f58415c3 r1: one JSON-entry reading surface — src/Json.vala grows EntryJson (string_member/optional_string_member/get_string_or/string_array_member/parse_iso/parse_string_array); SaddleService's four private statics, SaddleApi's get_string_or/parse_iso/string_options and TaskService.parse_block_options all collapse into it, three string-array parsers down to one, behaviour byte-identical (the malformed-options warning keeps each call site's wording). 1 месяц назад
  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. 1 месяц назад
  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. 1 месяц назад
  clanker 2b251e6521 s4: terminal-text single representation — the failure path stops writing the duplicate agent comment and retry stops copying summary→comment (tasks.summary is the terminal cache, the narrative renders summary_lead, the task page renders the card); human comments keep their ONE writer (the web's user-comment row — tests pin the single-row invariant; the daemon-side USER_COMMENT echo suppression is D's item). 1 месяц назад
  clanker 4ad0c84cc0 qa: terminal states are atomic-sticky — set_status and add_block's park flip guard the transition in the UPDATE's WHERE (a late 'working' push interleaving a completion on the main loop used to resurrect the task as working AFTER its session closed done — the parked-resume race, plan-15 C deviation 4; the callers' terminal checks have already yielded by write time). Harness: the dispatch rules-order fixture attaches rules while DRAFT then enqueues (the 1s dispatch tick could beat the attaches under load), and the app-ready probe requires OUR process alive — a free_port() TOCTOU handed the port to another shard's app whose identical seed answered the probe while ours died at MHD bind 1 месяц назад
  clanker e2a11c459d C3: goal_events deleted — terminal watermark + derived narrative 1 месяц назад
  clanker e7e167579f C2: goal comments ride the run task; system events styled (F8) 1 месяц назад
  clanker d1c8bea7e2 C1: goal blocks ride the run task — one row, one answer path (F6) 1 месяц назад
  clanker e9b8fc1064 B1: goal-run control parity — Retry supervision, Requeue-to-resume, /tasks redirect 1 месяц назад
  clanker 336c94e49f B3: dashboard mirror-sync — either side of a dual-rowed pair closes it 1 месяц назад
  clanker 00c1a6dd2e replay: idempotent terminal + narrative projections — once per entry id, ever 1 месяц назад
  clanker 8b1c48a785 ui: rename every user-visible 'bot' to 'agent' at the source 1 месяц назад
  clanker fa78f8a5bf goals: flatten — subtask web machinery and task plans deleted 1 месяц назад
  clanker 4bc3e61edb goals: web UI — pile, timeline, queue filters, task page, carried fixes 1 месяц назад
  clanker 44f2e66a5a goals: schema, lifecycle service, wire contract and task callbacks 1 месяц назад
  clanker 06760a6895 ui: agent celebrations — saddle yeehaw festive card, 🤠 badge and timeline events 1 месяц назад
  clanker 9f5ab7ab36 push: plan 11 task E — real Web Push (VAPID) notifications 1 месяц назад
  clanker b397745530 lifecycle: draft state machine on a flattened M0001 — enqueue/delete guards, edit matrix, auto-enqueue subtasks, waiting-on-drafts display 1 месяц назад
  clanker 9f9383720b fix: answered blocks resume flip daemons — verdict delivery + affine wake 1 месяц назад
  clanker 1568628f4e phase 2: telemetry flip — pushed chunks/results ingestion, staleness probe, pollers retired 1 месяц назад
  clanker 2a8a2ec4b0 phase 1: work acquisition flip — ask/allocation, per-saddle tokens, wake computation + lost-wake guard 1 месяц назад
  clanker 4d7354bd13 feat: branch_advanced on verdict and resume paths — any sibling (same parent, or same project+branch) completing/failing/dispatching/progressing after the task's park marker (suspended_at, else newest block, else last session activity) flips it true; carried on POST /answer, /notify verdicts, /poll answers and resume /start payloads so the daemon can skip the pointless pull --rebase 1 месяц назад
  clanker b55f9a8719 feat: dead/wedged daemon reconciliation — vanishing daemons drive offline+requeue with narrated comments (3-strike verified against connection-refused), stale last_activity wedges fence+requeue, saddles page health panel (state/uptime/last-contact/badge), task rows mark the unreachable window, raw-log polling verified from the first push; harness timeout 1800s 1 месяц назад
  clanker 8223c8d4d2 feat: 409-aware dispatch — machine-readable conflicts recover zombies (abort, bounded idle wait, one retry, narrated), live-task conflicts fence and alert; failed pushes mark the session push_failed and retries reuse the row instead of churning new ones 1 месяц назад
  clanker e561f584c3 feat: subtask auto-approve — tasks.auto_approve toggle above the subtasks table covers descendants transitively; covered review blocks auto-answered ('auto' recorded, timeline entry, delivered like a human verdict) while questions/RFCs and the parent's own review stay human-gated; all-terminal descendants resume with the push-first final-review instruction 1 месяц назад
  clanker 7625609d95 feat: POST /api/saddle/subtask callback — synchronous subtask creation (parent's project/branch, task_dependencies with exists+ancestor-cycle validation, timeline entry, idempotent on parent+title); entry-poll creation kept as dedup fallback 1 месяц назад