# v190.1 — Space Test Validation UI/State Model - Adds a dedicated canonical Space Test timeline: Start, Runtime, API, Endpoint, Payload, Smoke test, Result, Report. Validation views no longer reuse build/recovery phases such as repair upload, manual hardware, or upload files. - Fixes Run Explorer status normalization for validation runs so terminal validation verdicts such as `full_inference_success` override stale `running` summaries. - Humanizes Gradio endpoint schema rendering: component metadata objects are normalized into labels, choices/defaults are summarized, and `[object Object]` is never displayed. - Adapts Space Test labels for completed validation runs: terminal runs can show `Run validation again`, latency displays `Not recorded` when missing, and running validations keep actions disabled. - Keeps build worker/runtime behavior unchanged. # v190.0 — Active Run layout consolidation - Consolidates the Active Run UI without runtime changes: canonical timelines now fit the center column on desktop, hide the redundant Done dot, and relabel Hardware as GPU. - Keeps Run notes as the only compact home for non-blocking signals, with explicit Pi assistant mismatch / GPU fallback wording. - Makes Recovery phase details compact when Agent recovery provides the full diagnosis, avoiding duplicate Diagnose/Decide/Patch/Revalidate rows. - Improves Agent recovery text wrapping so blocker explanations and next actions are not truncated. # v189.9 — Timeline polish and Run notes clarity ## UI polish - Keeps Recovery phase details compact when the dedicated Agent recovery panel is available. - Uses `Run notes` as the single compact place for non-blocking warnings such as Pi model routing and hardware fallback. - Removes opaque `+N more` style note summaries from the canonical warning banner. - Keeps timeline phase details as navigation summaries rather than duplicating specialized diagnostic panels. ## Runtime - No worker/runtime behavior changed from v189.8. The v189.7 guardrails remain: quoted safe `python_version`, torch added when imported, and `.cache/` excluded from generated Space uploads. # v189.8 — Runtime Sanitation + Failed Timeline Truth - Sanitizes README `python_version` to quoted safe values (`3.10`, `3.11`, `3.12`) so `3.10` is never interpreted as YAML float `3.1`. - Adds `torch>=2.0.0` automatically when generated `app.py` imports torch but requirements omit it. - Excludes transient `.cache/` files from generated Space uploads. - Makes canonical timeline archive state prefer confirmed `published=true` over stale `record_not_ready` events. - Improves failed recovery summaries so final build blockers are surfaced distinctly from initial repaired blockers. - Keeps timeline node labels compact in both canonical and legacy render paths. - Prioritizes failed-run documents: Report, Blockage, Build error, Space logs, Decision, Repair. # v189.6 — Timeline State Hotfix - Derives canonical phase status from the latest status per worker step, not any historical event. - Prevents terminal runs from leaving early phases visually `running` because of older `started` events. - Prevents resolved Space log collection warnings from over-marking Deploy when final log quality is full. - Refines terminal active-phase selection so full-success runs focus Live test/Archive/Done while non-blocking warnings stay grouped separately. - Keeps the validated worker/runtime path unchanged. # v189.4 — Mobile Timeline Polish - Adds an Active Run phase details panel for the canonical `run_timeline_model.v1`. - Uses a mobile-first vertical canonical timeline on narrow screens. - Shows compact phase details and Needs attention summaries without changing the validated runtime worker path. - Keeps legacy timeline fallback behavior for older runs without `timeline_model`. # v189.2 — Canonical Timeline UI bridge - Active Run now uses `run_timeline_model.v1` for the progress header and main timeline whenever the backend view model provides it. - The legacy compact worker timeline remains as a fallback for old or partial payloads. - Timeline phases now represent product-level phases instead of re-inferred worker step groups, reducing conflicting progress states. # v184 — Compact Model Pre-scan Card - Refined the default Model pre-scan card to be more visible without adding heavy borders. - Reworked successful model pre-scan results into a compact premium summary with metadata icon chips, inline signal pills, and a single recommendation line. - Reduced the visual footprint of safe scans while preserving pipeline, library, expected output, good signals, and recommendations. # v176 — startup import fix for eval archive build - Fixed a syntax error in `src/bucket.py` caused by nested quotes inside the launch summary `artifacts_url` f-string. - Verified that the app imports/compiles cleanly again and that the full test suite passes. # v174 — Bucket run-prefix mount and robust worker bootstrap writes - Mounted the `runs/` Storage Bucket prefix explicitly into Jobs using `Volume(type="bucket", source=..., path="runs", mount_path="/output/runs")`. - Preserved the worker contract: `OUTPUT_ROOT=/output`, `run_dir=/output/runs/`, and remote objects under `runs//`. - Hardened API-side `_worker.py` persistence with `HfFileSystem.write_text`, `pipe_file`, `open(..., "wb")`, and a final `sync_bucket` fallback. - Removed virtual-directory creation for Bucket prefixes and kept deletion/listing/document links aligned with the configurable run prefix. - Raised the minimum `huggingface_hub` requirement to `>=1.11.0`. # v173 — Bucket path separation fix - Reverts the v172 API-side `makedirs` workaround for fresh run prefixes. - Keeps a strict distinction between remote bucket object URIs (`hf://buckets///runs//...`) and Job mount paths (`/output/runs//...`). - Writes API-side bucket objects directly with `HfFileSystem.pipe_file(...)`, with `open(..., "w")` as a compatibility fallback. - Adds tests to prevent treating virtual `runs/` prefixes as directories/repositories. # v172 — fresh bucket writes and pre-scan polish - Keeps Hugging Face Space metadata at the very top of `README.md` so the app archive cannot boot with a configuration error. - Makes fresh Bucket run-prefix writes more robust by creating parent prefixes before writing `_worker.py`, `launch.json`, `summary.json`, `state.json`, and other API-authored artifacts. - Restyles the Model pre-scan card into a calmer premium status panel with compact metadata chips and less oversized success treatment. # v171 — delete Space option, ghost-run cleanup, storage polish - Added an opt-in checkbox in the premium delete modal to delete the associated generated Space for build runs. - Kept validation runs protected from accidental associated Space deletion. - Made ghost/unknown run prefixes deletable from Run Explorer. - Compacted the Run Storage setup error card. - Preserved the v170 real recursive bucket deletion behavior. # v120 — Agent recovery UI - Added the Agent recovery section to summarize Pi recovery decisions, blockers, evidence, and repair/revalidation status. - Kept detailed source files in Run traces instead of duplicating raw recovery logs in the summary card.