Billy Barrow
|
64b9562f18
New nav
|
1 månad sedan |
saddle-Clanker-Saddle
|
143e8bd065
Incremental M0002 migration: upgrade serial-1 databases in place
|
1 månad sedan |
saddle-Clanker-Saddle
|
1fe5ec9d0a
Add the dashboard notes scratchpad with promote-to-goal
|
1 månad sedan |
saddle-Clanker-Saddle
|
487db9c1da
Goal link pre-fill from the primary project; stacks feature
|
1 månad sedan |
saddle-Clanker-Saddle
|
0a16e7b09f
event log: fix the dead SSE listener, flip the feed to oldest-first with bottom stick, and page older history correctly
|
1 månad sedan |
clanker
|
18736a2a49
version 1.0 (meson + MANIFEST.usm) — the release pairs with saddle 1.0 (PLAN-17's big bang ships both halves together); suites green sequentially through meson (966/0 on the new default runner)
|
1 månad sedan |
clanker
|
5fe16618a6
harness: sequential is the default runner — the unbounded parallel fan-out (13 apps + fake daemons at once) OOM'd the machine; --parallel [N] opts back into shards capped at N in flight (default 4), --bundle is unchanged, and the meson timeout covers the summed bundle times; users 39/0, dispatch 97/0 sequential
|
1 månad sedan |
clanker
|
d56d8e185a
Plan 17 M1+M2: consolidated M0001, unified events ledger, chunks ingestion
|
1 månad sedan |
clanker
|
4a528f3975
Force Wake: human-triggered resume of parked tasks and goals
|
1 månad sedan |
clanker
|
cc160d76e3
Users page, profile page, role gates (admin-gated user/saddle/capability management)
|
1 månad sedan |
clanker
|
b1176f3cf8
ui+docs: clanker-saddle favicon + touch-icon, emblem beside the heading; READMEs swept for the plan-16 world (single-row blocks, parked outcomes, derived saddle state, no subtask/legacy-wire remnants, 924-check count)
|
1 månad sedan |
clanker
|
2d0e09d1d9
r5: harness split (arch 18) — the monolith becomes a package. test/harness.py: the FakeSaddle daemon, every shared wire helper (http/act/login/slot_public/wait_for/quiet_window/db/check, task_state/wait_task_done/create_queued/enqueue_task/saddle_api/saddle_card/http_get_page/dump_threads and friends), the per-shard fixtures (Ctx/start_bundle), and the runner (run_bundle + run_all_parallel + main) — the parallel spawn now targets the entry shim so 'harness' stays one module instance per process, and run_bundle imports the bundle module lazily (after that shard's environment exists, so star-imported runtime globals are the shard's own) then re-syncs WORK/DB_PATH/ports onto it (the sequential debug path reuses modules across shards). test/bundles/<name>.py ×11: the scenario bodies moved verbatim (bundle_X -> run(ctx)); the x7 duplicated goal_state closures collapse onto harness.goal_state, late-bound through the runner's fixture ctx so the answers/replay restart scenarios' re-logins keep working (the first cut snapped the auth at shard start and the replay redelivery scenario caught it). test/web_stack_test.py stays the meson entry (args unchanged) and the shard spawn target. The S-workstream handoff survivors verified byte-intact after the move: the goalui S2 verdict-goal pins (resolveReviewBlock/goal.open_blocks/feedback posting/extraText gating on the goal page) and the goals S3 park-second waits (strictly-newer completed_at vs suspended_at seconds under SADDLE_GOAL_RESUME_S=1). Both execution modes green: parallel shards 851/0, WEBSTACK_SEQUENTIAL 851/0. 851 checks.
|
1 månad sedan |
clanker
|
bf9009c91b
r3: template partials (arch 16) — Statum DOES support includes (the mkpstm fragment pass: pstm-fragment with pstm-input parameters and pstm-materialise-as tag carry), so the partial strategy is compile-time fragments, not JS extraction. Five new partials in src/pages (auto-discovered, wired into template_deps): goal-branches (the branch chips paragraph, included 3x from goal_detail — head passes its note via the optional input, the note span hides where undefined), goal-compare (the Compare changes link, 2x), progress-feed (the latest+history card body shared between task and goal pages, parameterised on entries — heading and empty-state note stay per page with their page-specific wording), block-answer (the option-card question form — radio options + Other, shared between both pages' block loops; both loops expose the block as 'block' so no inputs), and block-reply (the free-text RFC reply form, shared likewise). The goal page's select+textarea answer form unifies onto the task page's richer option-card shape (the U1-pinned one): AnswerGoalBlockAction gains the __other__ resolution the task action already had, so a picked radio posts option=<value> exactly like the old select and the Other row carries the free text — the goal questions stay answerable with and without options. The goal page also gains the RFC reply fallback the task page already had (its old single form covered rfc blocks implicitly). Compiled-page inspection pins the composition: chips wrappers carry stm-if + the note def, no pstm-* residue. 851 checks.
|
1 månad sedan |
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).
|
1 månad sedan |
clanker
|
375d0957f9
r1: one time-format util — src/Format.vala's format_stamp owns the '%Y-%m-%d %H:%M' display shape; the four per-entrypoint format_stamp/format_time copies and the saddles/rules/projects inline formats collapse onto it (StatePulse keeps its second-precision pulse stamp); the clock domain is uniform now_local (PushService's VAPID exp was the lone now_utc, and to_unix is timezone-independent anyway).
|
1 månad sedan |
clanker
|
fa78f8a5bf
goals: flatten — subtask web machinery and task plans deleted
|
1 månad sedan |
clanker
|
44f2e66a5a
goals: schema, lifecycle service, wire contract and task callbacks
|
1 månad sedan |
clanker
|
9f5ab7ab36
push: plan 11 task E — real Web Push (VAPID) notifications
|
1 månad sedan |
clanker
|
b397745530
lifecycle: draft state machine on a flattened M0001 — enqueue/delete guards, edit matrix, auto-enqueue subtasks, waiting-on-drafts display
|
1 månad sedan |
clanker
|
087f0e5d6e
tests: dispatcher tick honours SADDLE_DISPATCH_TICK_S (default 5s unchanged); meson test timeout 900s
|
1 månad sedan |
clanker
|
16ea23f919
phase 3: capability awareness + dashboard — assignment capabilities context (saddle_tags/fleet_tags), GET /api/saddle/capabilities for the daemon CLI, subtask callback capabilities validated against the operator tag set (explicit-only, unknown tags name the valid list), task page status block pinned to the top with newest-first blocking sections, home dashboard pinning OPEN blocks as newest-first link-through cards above a cross-task activity timeline (TimelineService, last ~50 events), slow-ask lost-wake regression; tracked test bytecode removed
|
1 månad sedan |
clanker
|
2a8a2ec4b0
phase 1: work acquisition flip — ask/allocation, per-saddle tokens, wake computation + lost-wake guard
|
1 månad sedan |
clanker
|
32a9554c9d
feat: per-saddle git identity + ssh key storage — migration (git_name, git_email, ssh_public_key), poller and refresh persist the daemon-reported ssh_public_key, saddles page shows the key (copy button, deploy-key hint) with an inline identity edit form
|
1 månad sedan |
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 månad sedan |
clanker
|
5c140cb383
test: raise the meson timeout to 900s — the suite has grown past 420s with rounds 4-5
|
1 månad sedan |
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 månad sedan |
clanker
|
55848be0b3
feat: subtask status push — POST /subtask-status to the parent's live/parked-session daemon on creation and every status change, coalescing best-effort queue retried per tick (mirrors pending comments)
|
1 månad sedan |
clanker
|
0614417826
feat: suspended state + per-subtask parent resume — /status 'suspended' parks the task and frees the saddle (suspended_at stamps the parking window), the dispatcher resumes a suspended parent on each terminal subtask event with a coalesced markdown report as /start resume_notice, subtasks array in every /start payload (wire contract)
|
1 månad sedan |
clanker
|
8a2b5c00ca
feat: capability tags — migration, service, saddle chips + catalogue on /saddles, required-capabilities on the task page, capability-matched dispatch (superset pairing, skip-and-continue with a wait log + queue-row flag)
|
1 månad sedan |
clanker
|
279e7201a2
feat: raw terminal log — session_raw_log migration, GET /log polling while a session is active, SSE raw-chunk streaming rendered as one unstyled pre (entry-type view kept for legacy sessions); fix response body slicing by written size (steal_data buffer is not NUL-terminated)
|
1 månad sedan |