Repository navigation
Release v2.09.5
v2.09.5
-
Clear the Logging unknown-view fallback notice when either sidebar panel is explicitly selected, including the already active Log Viewer. Preserve the initial fallback explanation and add isolated panel-choice, reload and rotation-fetch regressions; update the EN/DE guides.
-
Preserve the Logging Settings panel and active sidebar selection across browser reloads using the non-secret
viewURL parameter. Reload Settings with current rotation values, preserve unsaved edits during ordinary panel switches, and normalize unknown views with a short status message. Keep other URL components and history state intact; add isolated reload, navigation and delayed/error response regressions and update the EN/DE guides. The request-local rotation snapshot fix remains unchanged. -
Fix the pre-existing PB8 Strategy Explorer EMA adapter gap (#405): include the exact geometric close-EMA span for complete, positive finite sibling pairs in both side-level and nested
entryparameters. Keep the two contexts and sides independent, reject nonfinite/zero products, retain individual EMA detection and use the selected candle window without changing inputs. Add parameterized span/value and all-three-native-call regressions, preserving the cache/concurrency fix and existing native error diagnostics. No PB8/Rust or production configuration changes. External native A/B observations remain separate evidence; independently verified native compatibility and manual three-tab acceptance must be reported separately. -
Keep verified optimizer failures visible when optional diagnostic-log metadata, open or read operations fail. Preserve exit code 1 as failed through Stop and result-import recovery instead of leaving the job collecting; retain separate recoverable publication errors. Add isolated log-I/O and repeated-recovery regressions and update the EN/DE test instructions (#451, #425).
-
Preserve verified optimizer execution outcomes after a Stop publication timeout and its subsequent local recovery failures. Report incomplete collection separately, keep genuine optimizer failures visible, retain finalization locking and avoid duplicate downloads/imports. Make Retry result import available for these separate technical errors. Bind manual rental and selected job GPU profiles to the reviewed AI Loop replacement and preserve them on both rental start paths, remapping only the interrupted job. Align browser asset assertions, extend focused compatibility regressions and update EN/DE verification guidance (#451, #425).
-
Complete Vast.ai job-control recovery after interrupted Stop requests (#425): allow an explicit confirmed retry only after a new negative status observation, retain the uncertain stop indication, and reconcile late acceptance without automatic POST repetition. Reject contradictory or non-integer final convergence counters while preserving genuinely unavailable assessments. Add focused stale-response, BFCache, late-acceptance and finalization regressions; update EN/DE guidance.
-
Fix Vast.ai Stop & collect and Retry result import concurrency (#425): share per-job action locks across queue/details and confirmation, preserve selection and current dashboards, encode job IDs, and distinguish browser timeouts from page lifecycle cancellation. Serialize final result import, assessment and technical retry persistence across API, runner, Stop and startup repair; preserve successful recovery through rental-end and Stop fallback writes. Keep published results recoverable after a later finalization failure. Add isolated browser and concurrency regressions and update both Vast guides.
-
Collect existing AI Loop observer reports fairly during open GPU replacement operations, including Pause/Resume. Skip unprepared reports and rotate native polls in batches of four so a queued backlog cannot indefinitely hide a later running/completed report. Keep the bounded, expiring polling cursor in memory without adding archive writes; retain queued jobs and existing report-data isolation. Add isolated backlog, controller-recreation and resume regressions and update the EN/DE manual verification instructions (#451).
-
Keep AI Loop Pause/Stop and storage pauses responsive during replacement input verification and pending provider Create responses. Hold Loop/Queue transaction locks only for the final authorization/input recheck and durable Create claim. Preserve ambiguous requests for reconciliation without duplicate rentals; reject input changes made during the unlocked scan. Add isolated competing-thread and input-provenance regressions (#451).
-
Normalize host execution receipt timestamps safely before validation, retention arithmetic and ordering. Oversized JSON integers now yield a structured unconfirmed status or are pruned without blocking a fresh reviewed decision. Add isolated status-read, cleanup, stale-replay and valid-integer timestamp regressions (#452).
-
Correct the manual verification instructions for AI host exclusions: require an existing cloud job in a separate test installation, use the actual Hosts status filter and proposal-review order, and distinguish optional offer inspection from automated-only failure/recovery checks. No runtime behavior changes (#452).
-
Validate host execution receipts against the reviewed identity, explicit intent and revision before reporting success; reject malformed proof and local offer metadata with safe structured failures. Keep outcome reads free of unrelated persisted fields, document the verification boundary, and add isolated corruption/read-failure regressions (#452).
-
Serialize the final AI Loop GPU replacement job assignment with newer Pause/Stop controls. Run frozen-input scans outside Loop/Queue locks, then recheck control generations, deadlines, preserved inputs, ownership and the exclusive successor/rental binding before claiming work. Recheck native controls and provider state in the final short transaction. A discarded assignment can retry the same successor after Resume without another attempt or duplicate transfer allocation. Add isolated control, expiry, binding and concurrent-thread regressions; update EN/DE guides (#451).
-
Start the AI Loop replacement Create propagation grace at its durable request marker after input verification. Slow local data scans no longer shorten the 120-second wait before fresh provider absence checks can release an ambiguous rental. Add an isolated clock/restart regression proving that only one Create is sent and two spaced absence checks are still required (#451).
-
Preserve confirmed host-action success through journal/history finalization failures, provide an owner/conversation-scoped read-only outcome lookup after response loss, and keep failed approvals visibly failed during chat continuation. Automatically remove blocked-machine offers on assistant/background updates while retaining eligible selection and filter drafts; reject deferred stale previews. Add focused persistence, recovery, status-read and frontend regressions (#452).
-
Add explicit, reviewed AI host block/unblock actions bound to the current cloud job, lease and locally verified machine. Expose persisted exclusions and monotone revisions separately from rental preferences; commit bounded execution receipts atomically and refuse stale or terminal recovery writes. Distinguish historical execution from current policy in chat results, protect generic assistant host toggles, preserve human host controls, and update the open log automatically. Existing rentals and optimizer processes continue. Add isolated concurrency, recovery, API, context and browser regressions and EN/DE guides (#452).
-
Include confirmed, already allocated and pending transfer reserves in AI Loop GPU replacement chain costs, using the highest obligation per rental plus elapsed compute and any higher provider bill. Treat unreadable cost evidence conservatively. Review, reservation and the final Create guard now share the corrected remaining budget; late cost increases block an unsent Create while retaining its identity, and already sent requests still reconcile and clean up. Add focused offline regressions for missing/stale billing, malformed cost evidence, multi-rental chains, restarts and late cost observations (#451).
-
Recheck current GPU capacity and host blocks at the durable AI Loop replacement Create boundary, including changes during input verification. Keep blocked unsent reservations recoverable under the same identity while continuing reconciliation of already sent requests. Monitor dispatched parallel optimizers and enforce their hours/proxy quotas during replacement waits and pauses, with generation-guarded, durable Stop intent and retained execution evidence. Add isolated regressions for late restrictions, ambiguous Create recovery, quota monitoring, competing controls and storage failures (#451).
Fixes
-
Publish the last verified partial/final Stop snapshot before GPU replacement collection finishes, preserving real optimizer completion/failure status and idempotent result attribution. Keep local verification and publication inside the existing collection deadline, include archive hashing and metadata packaging in upload cancellation, and recheck job/lease Stop after upload before starting an optimizer. Extend isolated regressions and replacement browser coverage to mobile widths (#451).
-
Cache PB8 Strategy Explorer default capabilities for 30 seconds with runtime/helper fingerprint invalidation, defensive copies and one shared cold calculation. Bound helpers and metadata waiters to 16 admitted calls together, retain two active helpers, and let session/snapshot/market bootstrap calls wait up to 15 seconds for a slot. Preserve immediate overload rejection for replay/Compare/Movie, cancellation and shutdown cleanup. Admit fingerprint scans before they can wait on the shared metadata lock, releasing the same permit after warm hits, errors and shutdown. Bound frontend load requests, discard stale follow-ups and preserve the saved config, stage, market selection and controls when reload recovery fails instead of overwriting them with defaults. Retain inputs changed during delayed restoration and market responses, without changing the stored context on failure; resume persistence after successful recovery. Tie deferred Movie rebuilding to the initialized generation so selector setup does not discard it, while later edits still invalidate it. Also guard that callback with the Movie generation: real Frames edits and manual Generate Movie starts discard it without launching a duplicate helper or aborting the newer request. Native snapshot failures such as MissingEma now report unknown candle availability instead of asserting missing local candles, and unavailable PB8 snapshots use an error engine status. Preserve native HTTP 422 diagnostics and cached edit context; isolated fault-injection tests do not establish the live MissingEma cause or replace the outstanding live acceptance (#405).
-
Coin Data row selection uses one delegated listener per table body and updates highlighting in place instead of rebuilding entire tables. Fit the selected detail card within the click handler instead of delaying its final size to another frame. Repeated clicks, hidden tables and automatic updates retain working selection; closing details with X or Escape clears highlights without rebuilding tables or filter controls or discarding a focused tag-filter draft (#419). Measure selection latency with separate real mouse events to avoid Playwright hit-target instrumentation; retain the 20 ms handler limit and reject Long Tasks overlapping the handler through completed card fitting. Record subsequent frame timing/tasks separately, with regressions for enclosing tasks and interval boundaries.
-
Add Replace GPU and continue loop for owned PB8 Vast Loop rentals, including manual capacity, with native AI proposal/review/approval. Archive replacement intent before Stop, bound upload cancellation and artifact collection, require confirmed provider deletion before another rental, and pair the preserved optimizer input exclusively with its reserved successor worker. Retain Loop identity, logical round, seed, overrides, frozen training inputs, baseline, incumbent and completed history. Charge interrupted attempts and chain costs against unchanged original limits; keep provider/capacity/authorization failures recoverably visible. Pause, Stop, storage failures and expired deadlines prevent new paid effects; restarts and approval replay reuse durable identities. Select/Evaluate evidence distinguishes authorized infrastructure cancellations from genuine search failures and retains real results. Waiting user-only reports survive replacement while running reports are collected separately. Ordinary End rental remains distinct and acknowledges attached Loops, including batch termination. Update EN/DE guides and automatically reload Vast cards when returning to Queue. Focused offline regressions and isolated browser checks cover these paths; no live provider resources were used (#451).
-
Market Data settings defer and preserve the latest exchange load during a save, keep mismatched forms unavailable, and reject saves for a superseded exchange (#418). Auto-enable availability changes no longer invent unsaved edits or discard prompts; compare user settings independently of derived coin lists while retaining full save payloads and draft baselines.
-
Market Data settings and native Best 1m availability read a bounded, signature-invalidated local mapping snapshot instead of constructing CoinData/CMC clients or calling Hyperliquid metadata (#418). Reuse a metadata-only Tiingo identity cache and read current usage without bootstrap or rollover writes. Preserve saved coins when mappings are missing or auto-enable has no options; report mapping read failures before save/job mutations and reuse the prepared snapshot in save responses. Settings revalidates affected availability/status automatically while preserving drafts, selection, focus, filters and navigation. Ordinary Hyperliquid settings remain saveable without AWS credentials.
-
Logging Monitor loads rotation defaults, per-log rules and all managed scopes from one locked INI snapshot per response, eliminating repeated configuration locks and parses as log counts grow (#435). Preserve physical logfile keys, filtering, bounds, zero backups and existing error fallbacks; subsequent requests read current settings without a shared cache.
-
Avoid progressively slower AI decisions and startup Stop handling caused by snapshot retention repeatedly decoding every full evidence body for every run. Scan at most 4 KiB of identity/age metadata per snapshot through a dedicated no-follow prefix reader; fully validate only actual deletion candidates and retain malformed/protected evidence. Admit controller work before startup maintenance.
-
Prevent AI Loops from repeatedly decoding unchanged full histories during polling and quota accounting. Bound independent snapshot caches by resident object size and TTL; invalidate them on manifest/archive changes and preserve corruption checks. Cache serialized list rows separately, keep AI ledger transactions and response encoding off the API event loop, and avoid rewriting unchanged diagnostic job status. Persisted Pause/Stop now cancels the owned in-flight AI request instead of waiting for a silent model response; native launch/collection steps retain their cancellation safeguards.
-
Keep the API responsive during AI Loops and independent Holdout/Full Time Range reports: run archive reads, transactions and job snapshots in owned background threads, preserving cancellation joins and per-run ownership. Cache at most 128 small legacy inventory summaries, invalidate them on file identity/content changes, and avoid repeatedly hydrating unchanged historical runs during controller scans.
-
PB8 Optimize settings, bot parameters, new config drafts and page limits load static metadata without probing GPU capabilities (#434). Reuse the request fingerprint for the first lookup in both metadata caches, reducing warm reads from four runtime checks to two while preserving fresh checks after waits, during loads and before return. Keep the full metadata contract, GPU probe expiry, defensive copies and runtime error diagnostics unchanged. Queue Settings now shares a navigation-independent, deduplicated GET with a 30-second UI deadline. Only validated settings enable editing/saving; errors block writes, and field drafts survive automatic updates, re-entry and concurrent saves. Revalidate after saves and BFCache restoration without persisting placeholder values.
-
AI Loops keep active JSON bounded using an owner-scoped immutable SQLite archive with deduplicated configurations and paged history. Migrate legacy runs on their next normal write while retaining original bytes; publish archive transactions before atomically replacing the manifest. Controller inventory skips historical hydration for completed runs. Storage failures pause without discarding completed AI decisions or entering AI repair retries. Preserve full detail/history compatibility and bounded, redacted support diagnostics. Backups must include the archive files.
-
Dashboard PNL charts handle missing, invalid and non-finite values as gaps instead of crashing or showing false zeros (#427). Keep valid daily values and resume cumulative totals after invalid days; preserve gaps after cumulative overflow. Guard the PNL JSON response and synchronize renderer cache versions. Explicitly place true zero-day labels outside zero-height bars so
0.00remains visible in both view and editor; keep gaps unlabelled. Add real SVG-label checks across mode changes, live updates and reload, and document safe fixture-only manual acceptance. -
AI Loops no longer abort candidate selection when optional evidence reads reach the mandatory recovery reserve. Return a bounded tool notice so ChatGPT/OpenCode can finish from existing evidence, or recover explicitly listed missing mandatory pages first. Denied optional batches do not read data or consume recovery read capacity. Preserve hard data-read limits, mandatory compaction recovery, control checks and bounded handling of repeatedly ignored notices; record optional-budget notices in completed decision diagnostics.
-
AI Loops show independent per-round Holdout and Full Time Range progress, distinguishing terminal jobs from complete reports (#453). Display complete CPU training winner reports without waiting for unrelated Holdouts, including retained candidate and starting-config winners; keep display aliases and reference deltas consistent without adding jobs or changing AI evidence. Browser regressions use normal Playwright deadlines and include report-cell diagnostics on failed state transitions. Legacy browser fixtures explicitly identify their selected report rather than relying on an arbitrary first job. Verify that archive round-trips preserve both winner origins, independent report readiness, native job counts and reference deltas. Expose each viewport of the existing observer/compare browser workflow as an independently runnable test, preserving scenario coverage. Derive the observer regression's expected script URL from the optimizer page so cache-version bumps remain compatible. Document numbered read-only manual checks on existing test runs, including pending transitions, disabled Holdout, errors and retained winners, instead of referring users to internal Playwright fixture switches.
-
Simplify AI Loop Template date/window presentation by removing redundant success text and the preview heading. Keep inclusive UTC field labels, editable Training/Holdout rows, loading/errors and unused-day warnings; preserve status live regions without empty spacing. Document safe draft-only manual checks and distinguish market-availability timeouts from successful automatic-date acceptance; retain existing timeout/retry behavior (#454).
-
Update the isolated Optimize Queue Settings test fixture to use the actual validated loading and saving functions, distinguish GET/POST requests and await post-save revalidation while retaining layout, navigation and log assertions. Check both temporary 3D candidates by filename, including their projected objectives and scoring directions, without relying on filesystem iteration order; retain original-file and stage-cleanup checks (#434).