feat(automations): implement lookbook V2 scheduler and run ledger - #1521
Closed
ScriptedAlchemy wants to merge 3 commits into
Closed
ScriptedAlchemy wants to merge 3 commits into
ScriptedAlchemy wants to merge 3 commits into
Conversation
Rebuild channel 09 on the daemon's automation authorities: scheduler configuration reading with the real pause/resume control, per-task due and skip readings with the observed last scheduler run, user jobs joined to the ledger on their exact task_key, managed skills with provenance, automatic fact receipts filed under their run, and the durable run ledger with a run inspector. Hover and focus preview an identity, click pins it, Escape clears it; artifacts and the daemon's chain-integrity verdict are read only once a run is inspected. The run row now carries task_key, error_classification, error_retryable and backend_attempt_count from the ledger record so the dashboard can join and type without inventing either. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
|
Give every ledger table fixed column shares so identifiers wrap inside their column instead of pushing trailing columns out of the panel, and drop the clipping and no-wrap rules so no cell hides content at 768 or 320. Merge the artifact count and integrity verdict into one column and stack the last-run outcome over its stamp. Add per-run artifact list and payload fixtures plus stateless pause and resume answers so the story surface exercises the verdict and control paths, and point the concept README at the new module set. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Owner
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
mockups/ui-concept-v2/09-automations/final/01-scheduler-run-ledger.md) into the shippingdashboard/on the feat: TraceDecay V2 delivery (PR8–PR13) + daemon performance, memory, and reliability overhaul #707 tip./api/automation/runsrow withtask_key,error_classification,error_retryableandbackend_attempt_count(all already on the ledger record) so the browser can join and type without inventing.Automations loaded, 1440 dark
Selected run with inspector, artifacts and daemon verdict
Motivation
Channel 09 was a stack of cards. The approved plate asks for one auditable ledger: configuration and observation kept distinct, every aggregate declaring its window, artifact presence and integrity independent, and no control that lacks a real mutation path.
Changes
dashboard/src/workspaces/automations/AutomationsPage.tsx— composition, five independent reads in labelled bays, transient/pinned inspection state, Escape clears.SchedulerBay.tsx— status word read as configuration (configuredis neverrunning); observed scheduler run named separately from the newestlast_scheduler_run; real pause/resume pair gated on scope writability; per-task due/skip/last-run table;LedgerReadoutsKPI bar over exactly the loaded page.RunLedger.tsx— newest-first table: UTC start, task key, measured duration or typed absence, outcome + tallies, fact receipts joined onrun_id, artifact count with integrity read from the artifacts query cache only (unchecked · inspect rununtil inspected;no artifact to verifyfor none).RunInspector.tsx— run / scheduler task / user job / fact receipt detail; artifacts fetched only on inspection, daemon verdict verbatim, payload fetched only when an artifact is chosen and identity-guarded.AutomationLedgers.tsx— user jobs joined on exactuser_job:<id>, skills with provenance, receipts table.LedgerTable.tsx— table grammar: fixed column shares that wrap rather than clip,InspectRow(hover/focus inspect, click select, roving arrows, 44px hit),ToneWord(word + solid/hatched/dashed lamp),Absent.ledger.ts+ledger.test.ts— pure model: typed-state tones, scheduler reading, UTC/duration formatting, window tallies, exact-identity joins, artifact helpers.RunHistory.tsxkept for the Knowledge curation console (its only remaining consumer); shared artifact logic moved intoledger.ts.dashboard/src/data/query/automation.ts— run row schema gains the four fields; jobs/skills schemas read the struct fields the routes already serialize;SchedulerLastRunSchemareads theunknownlast-run record.crates/tracedecay-dashboard-api/src/automation_run_api.rs—run_history_rowemits the four fields; unit tests for present and absent cases.dashboard/stories/fixtures/data.ts— wire-true automation fixtures (task_key,delivery.mode, receipts filed under a served run, a running and a skipped row, per-run artifact list + payload, stateless pause/resume answers).dashboard/audit-baselines/automations__*.png— re-baselined for the redesigned surface.mockups/ui-concept-v2/09-automations/README.md— production-authority file list updated.Test plan
cargo test -p tracedecay-dashboard-api --lib automation_run_api— 2 passed;rustfmt --checkcleandashboard:npx tsc --noEmit,npx vitest run— 162 files / 1490 tests pass;npm run buildcleanautomations_journey_report.json): initialno selection→ hoverpreview(row not selected) → pointer leaves table →empty→ click →selected,aria-pressed=true, exactly one/runs/{id}/artifactsread, verdictledger publication mismatchin inspector and row → choosetraces→ exactly one/artifacts/tracesread, payload rendered → keyboard: focus →preview, ArrowDown moves to next row, Enter →selected, Escape →emptyand no pressed row → task / job / receipt inspection → Pause → onePOST /scheduler/pause, status word becomespausedfrom the daemon's answer → all/api/**503: fiveerrorchips, zero empty-state sentences, six dashesnpm run visual:audit -- --diff: six automations plates drift (redesign) with zero Plan 11 failures; the 12 failures reported are Brain/Loom, pre-existingChecklist
CHANGELOG.mdupdated (under[Unreleased]if no version bump).envfiles included/api/automation/runsrows gain four keys, the dashboard's strict row schema is updated in the same changeGaps (typed absences the daemon does not yet serve)
configuredis presented as configuration and the only runtime evidence is the last scheduler-triggered ledger record per task./api/plugins/holographic/curation/config), not the status route; not read here.POST /api/automation/jobs/{id}/runanswers202 accepted(an acceptance ticket, not a durable receipt) and there is no cancel/retry route, so no such control is drawn.backend_attempt_countis projected; the per-attemptbackend_attemptsrecords remain behind the artifact routes.has_more), never the whole ledger — no route tallies it.unsupported schemain the audit rather than the daemon's real 404error.RunHistory; adopting the ledger + inspector there is a channel-07 decision./api/**; an enrolled daemon profile was not available on this VM, so live ledger identity and the real pause receipt are unverified here.To show artifacts inline, enable in settings.