saddle-Clanker-Saddle
|
bee0463662
Ghost-working sweep: requeue stale open sessions from the dispatcher tick
|
4 tuần trước cách đây |
saddle-Clanker-Saddle
|
4f74836c93
Park/answer-wake fix: allocation guard, busy-answer delivery, batched verdicts
|
4 tuần trước cách đây |
Billy Barrow
|
3d8a8b1897
Requeue crash-orphaned sessions when an idle saddle asks for work
|
1 tháng trước cách đây |
Billy Barrow
|
215e8281e3
Improvements to UI
|
1 tháng trước cách đây |
saddle-Clanker-Saddle
|
cfcf2dc92d
Standalone (no-project) tasks; comments resurrect terminal goals and plain tasks
|
1 tháng trước cách đây |
clanker
|
7007d4b94c
protocol-native integration pass: goal-era arc end to end against the real daemon — the harness speaks tool calls (mock script per §7 grammar: narrated probes, question via run_command's saddle block, submit_plan/create_task/enqueue+suspend, the worker's five identical probes tripping the loop warning, finish, the coalesced merge/push/submit_report resume) and asserts the ledger world (turn_text/tool_call/tool_result/usage events, §7.2 kind set, seq exactly-once on chunks, the event log page + SSE replay, tool results as role=tool turns, the retired results-entries array consumed silently); web fixes surfaced by the pass: a review-kind block push on a goal run routes to submit_completion (the daemon's submit_report done-park now reaches completion_review with its goal-scoped narrative row), the narrative derives block-raised from the run task's question/RFC raises, the U2 mechanical rows (session context restored, parked-until) persist as system comment events on resume/park with the goal thread filtered like the task page, and the replay bundle's remark query pins the model-actor row; integration 125/0, 13 bundles sequential 966/0
|
1 tháng trước cách đây |
clanker
|
d56d8e185a
Plan 17 M1+M2: consolidated M0001, unified events ledger, chunks ingestion
|
1 tháng trước cách đây |
clanker
|
73dcec9314
List UX: newest-first tables, New task expander above the queue
|
1 tháng trước cách đây |
clanker
|
cb269d0d30
r23: sessions as truth — the saddle-row work cache dies, IDLE/BUSY derive from open sessions
|
1 tháng trước cách đây |
clanker
|
db546c35a7
r23: D4 web half — parks close their session rows 'parked'
|
1 tháng trước cách đây |
clanker
|
13d283c0a6
r3: query layer (arch 14) — the work moves into the ORM with identical results. list_tasks filters (status/project) and sorts (priority, created_at — DateTime columns are unix-epoch ints, so the SQL ORDER BY equals the old .to_unix() compare) inside the query; get_ready_tasks stops loading EVERY task row for predecessor checks and queries only the queued candidates' predecessors; unreachable_task_ids batches (candidate tasks once, their sessions in one id-filtered query, the saddles in another — the newest-open-session-per-task semantics preserved by an id-ordered backward walk); display_map_for loads the wanted tasks' blocks in ONE task_id-filtered query instead of three full-table scans filtered in Vala; TasksState.build materialises the task list ONCE (the triple list_tasks died); TaskDetailState's enqueue dropdown queries exactly the standalone rows it lists (new list_standalone_tasks) instead of every task on every pulse; TimelineService.recent_window stops loading every session twice — the yeehaw session->task map builds from a batched lookup of only the WINDOW newest entries' sessions. The batched WHERE-in is an OR-chain helper (id_in/id_filter) because the expression grammar has no IN operator; id batches carry decimal strings (the Invercargill collections mishandle boxed value types — an int64 vector through to_immutable_buffer corrupts the heap, the exact trap the CreateTaskAction comment warns about). 851 checks, unchanged.
|
1 tháng trước cách đây |
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.
|
1 tháng trước cách đây |
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 tháng trước cách đây |
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 tháng trước cách đây |
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 tháng trước cách đây |
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 tháng trước cách đây |
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 tháng trước cách đây |
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 tháng trước cách đây |
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 tháng trước cách đây |
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 tháng trước cách đây |
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 tháng trước cách đây |
clanker
|
e2a11c459d
C3: goal_events deleted — terminal watermark + derived narrative
|
1 tháng trước cách đây |
clanker
|
e7e167579f
C2: goal comments ride the run task; system events styled (F8)
|
1 tháng trước cách đây |
clanker
|
d1c8bea7e2
C1: goal blocks ride the run task — one row, one answer path (F6)
|
1 tháng trước cách đây |
clanker
|
e9b8fc1064
B1: goal-run control parity — Retry supervision, Requeue-to-resume, /tasks redirect
|
1 tháng trước cách đây |
clanker
|
336c94e49f
B3: dashboard mirror-sync — either side of a dual-rowed pair closes it
|
1 tháng trước cách đây |
clanker
|
00c1a6dd2e
replay: idempotent terminal + narrative projections — once per entry id, ever
|
1 tháng trước cách đây |
clanker
|
8b1c48a785
ui: rename every user-visible 'bot' to 'agent' at the source
|
1 tháng trước cách đây |
clanker
|
fa78f8a5bf
goals: flatten — subtask web machinery and task plans deleted
|
1 tháng trước cách đây |
clanker
|
4bc3e61edb
goals: web UI — pile, timeline, queue filters, task page, carried fixes
|
1 tháng trước cách đây |