clanker c4c089b4d7 Notifications: per-browser bell, truthful delivery, test button преди 1 месец
..
__init__.py cc160d76e3 Users page, profile page, role gates (admin-gated user/saddle/capability management) преди 1 месец
allocation.py db546c35a7 r23: D4 web half — parks close their session rows 'parked' преди 1 месец
answers.py db546c35a7 r23: D4 web half — parks close their session rows 'parked' преди 1 месец
dispatch.py 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 месец
goals.py db546c35a7 r23: D4 web half — parks close their session rows 'parked' преди 1 месец
goalui.py db546c35a7 r23: D4 web half — parks close their session rows 'parked' преди 1 месец
lifecycle.py cb269d0d30 r23: sessions as truth — the saddle-row work cache dies, IDLE/BUSY derive from open sessions преди 1 месец
lineage.py db546c35a7 r23: D4 web half — parks close their session rows 'parked' преди 1 месец
pages.py 73dcec9314 List UX: newest-first tables, New task expander above the queue преди 1 месец
push.py c4c089b4d7 Notifications: per-browser bell, truthful delivery, test button преди 1 месец
replay.py db546c35a7 r23: D4 web half — parks close their session rows 'parked' преди 1 месец
subtasks.py db546c35a7 r23: D4 web half — parks close their session rows 'parked' преди 1 месец
users.py cc160d76e3 Users page, profile page, role gates (admin-gated user/saddle/capability management) преди 1 месец