Skip to content

v0.1.7 — App reliability

Choose a tag to compare

@github-actions github-actions released this 25 May 14:03
· 981 commits to next since this release

v0.1.7 — "App reliability"

2026-05-25 · Patch bump (no epic gating a minor)

Highlights

Reliability

  • Operator dashboard Restart button is reliable again — closes a respawn race that killed the daemon with EADDRINUSE the moment the operator clicked Restart; the panel now reconnects through a fresh handshake in one cycle (#561, in-branch follow-up c627afc2).
  • Discovery indexer outages fail loudlydiscovery.fallbackToOnchain defaults to false, so a stale or broken Ponder indexer surfaces an explicit DiscoveryUnavailableError immediately instead of silently degrading every operator's task discovery for hours (638228f). Operators who self-host an RPC with generous getLogs quotas opt in via JINN_DISCOVERY_FALLBACK=1.
  • Daemon recovery no longer wedges on backlog scans — chunked delivery scans, pruned dead evaluation opportunities, and a swapped testnet RPC default (#555). Combined with #466 (HF outage cache) and #476 (eval cleanup + disk-floor guard), the swe-rebench v2 generator survives a wider class of transient infrastructure failures.
  • Eval subprocess bounded to 2 h wall clock — SWE-rebench eval.py invocations that wedge under Apple-Silicon emulation after a native crash are now killed by a hard guardrail; controllable via JINN_SWE_REBENCH_EVAL_TIMEOUT_MS (6ec021d).

Operator app

  • shadcn migration finished across the dashboard — every primary surface (configuration, captures, execution data, build, leaderboard, launcher create wizard, launcher launched cluster, operator catalogue, onboarding finish) now uses shadcn primitives. Consistent look-and-feel + accessibility (#451, #455, #457, #458, #459, #460, #461, #462, #473).
  • Activity-first information architecture — the Overview reshuffle (#449) puts Activity, Wallet, and Node Health at the top; activity rows are framed as task runs with proper tJINN unit fixes (#504); the Overview activity panel renders a real SSE event stream (#434) and highlights currently-active tasks with the effective plugin list (#450, #390).
  • Standalone checkpoint loop + Node Health surface — checkpoint cadence decoupled from claim activity; dashboard exposes daemon + RPC health under one card with restart / RPC-manage affordances (#511, #505).
  • Canonical notifications surface — Phase 1 of the spec-aligned notification model: structured events + dismissal semantics + per-channel routing (#426).
  • Real tJINN earned in WalletCard — wallet card now shows lifetime + recent tJINN earned by the operator's Safe, with proper unit handling (#456).
  • Polish + paper-cut fixes — Claude Code harness dropdown selects on click (#342); Leave SolverNet copy clarifies immediate vs deferred effects (#353); join-success affordance + banner consistency (#376); SolverNet join inline decision-context help (#365); per-harness readiness wired into the join harness selector (#362); gas top-up requires explicit click (#360); daemon-disconnect state surfaces in the SPA (#361); retire-confirm typed-name gate is case-insensitive (#500).

Release infrastructure

  • Tier-3 release-readiness now runs on the canonical SolverNet — Tier 3 passes green on the mainline SWE-rebench v2 manifest (bafkreichdzxtjav…), not the isolated workaround used in v0.1.6. Real-network validation matches what operators actually see (PR #529).
  • Tiered release-prep + release-readiness skills shipped — mechanical Tier 1 floor (#347), Tier 2 cross-op gates (#352), Tier 3 + meta-skill (#359), substrate foundation (#340), all integrated (#375).

Known issues

  • Per-operator claim quota does not refund on attempt expiry — failed attempts permanently consume slots (#576). Design discussion in progress.
  • Daemon's in-memory claimedRestorationTaskIds gate floors one claim per task per daemon, below what the contract's maxClaimsPerOperator allows (#582). Affects single-operator dogfooding throughput.
  • Ponder indexer TaskCreated handler regression — operator-app launcher and daemon discovery may show stale state until the indexer's handler chain is diagnosed (#567). Workaround: operators with direct chain access fall back to the on-chain canonical scan automatically.
  • Safe execTransaction retry helper resubmits stale nonce after nonce too low revert; bounded but observable under concurrent posting + claiming (#562).
  • Tier-2 T2.3 multi-op-spa-flow exceeds Playwright budget intermittently (#525).

Changes

feat

  • (#281) feat(broadcast-bot): open-source bot that posts network state to X — @oaksprout
  • (#339) feat(testing-jinn-app): multi-operator extension (Plan B) — @ritsuKai2000
  • (#340) feat(substrate): foundation lifecycle scripts (Plan A) — @ritsuKai2000
  • (#345) feat(331): cost surfacing + confirmation gate for paid-API-key harnesses — @ritsuKai2000
  • (#347) feat(release-prep): Tier 1 mechanical floor + release-prep skill (Plan C) — @ritsuKai2000
  • (#352) feat(release-prep): Tier 2 scenarios + cross-op gates (Plan D) — @ritsuKai2000
  • (#359) feat(release-readiness): meta-skill + Tier 3 scenario (Plan E) — @ritsuKai2000
  • (#365) feat(334): inline decision-context help in SolverNet join form — @ritsuKai2000
  • (#375) feat(release-readiness): substrate + tiered release gates — integrated stack (Plans A-E) — @ritsuKai2000
  • (#379) feat(launcher): surface operator-join count on launched dashboard (#351) — @ritsuKai2000
  • (#426) feat(operator-app): canonical notifications surface (Phase 1 of spec alignment) — @oaksprout
  • (#449) feat(overview): IA reshuffle — Activity / Wallet / Node Health surfaces — @oaksprout
  • (#456) feat(operator-app): show real tJINN earned in WalletCard — @ritsuKai2000
  • (#482) feat(client): expose live generator state on launched records — @ritsuKai2000
  • (#486) feat(client): publish swe-rebench vetted pool artifact — @ritsuKai2000
  • (#494) feat: add creator batch posting infrastructure — @ritsukai
  • (#511) feat(daemon): standalone checkpoint loop + dashboard rework (#505) — @oaksprout

fix

  • (#241) fix(hjex.1): preserve local state on retire failure; refuse stake on bound agent — @ritsuKai2000
  • (#243) fix(hjex.6): bootstrap retry endpoint + structured halt envelope + funding auto-resume — @ritsuKai2000
  • (#247) fix(hjex.10): donation toggle writes through on confirm — @ritsuKai2000
  • (#284) fix: use delivery event time for recovery expiry — @ritsuKai2000
  • (#285) fix: preserve verdict claim metadata on mech delivery retry — @ritsuKai2000
  • (#286) fix: cut operator log noise so real failures stay visible — @ritsuKai2000
  • (#287) fix: scope failed counters to the joined SolverNet — @ritsuKai2000
  • (#342) fix(329): Claude Code harness dropdown selects on click — @ritsuKai2000
  • (#343) fix(289): in-process respawn on operator-triggered restart — @ritsuKai2000
  • (#344) fix(330): claim loop gates on hermes harness readiness — @ritsuKai2000
  • (#353) fix(338): clarify Leave SolverNet copy — explain immediate vs deferred effects — @ritsuKai2000
  • (#355) fix(290): wire PluginPublication indexing for plugin:* MetadataSet events — @ritsuKai2000
  • (#356) fix(308): deep-fetch tag ancestry in promote-main workflow — @ritsuKai2000
  • (#357) fix(337): clear all-good indicator after jinn update — @ritsuKai2000
  • (#358) fix(309): document permissions + graceful PR-creation fallback in changelog-mirror — @ritsuKai2000
  • (#360) fix(336): gas top-up requires explicit click; no auto-fire — @ritsuKai2000
  • (#361) fix(335): surface daemon disconnect in the operator SPA — @ritsuKai2000
  • (#362) fix(332): wire per-harness readiness into JoinFlow harness selector — @ritsuKai2000
  • (#363) fix(348): codex variant of claim-loop readiness gate — @ritsuKai2000
  • (#376) fix(333): SolverNet join success affordance + banner consistency — @ritsuKai2000
  • (#377) fix(engine): clean up engine/work task dirs after terminal state (#320) — @ritsuKai2000
  • (#378) fix(release): rewrite T2.1 against real corpus artifact API (#349) — @ritsuKai2000
  • (#380) fix(release): rewrite T2.2 against real on-chain producer/evaluator loop (#350) — @ritsuKai2000
  • (#390) fix(219): surface activity as a primary section on the Dashboard — @ritsuKai2000
  • (#391) fix(366): codex readiness probe validates auth liveness — @ritsuKai2000
  • (#393) fix: v0.1.6 operator-app dogfood follow-ups (#328) — @ritsuKai2000
  • (#396) fix(325): surface RPC throttling distinctly + first-run BYO-RPC nudge — @ritsuKai2000
  • (#411) fix(engine): canAcceptTask uses cached harness readiness, not a per-task blocking probe — @ritsuKai2000
  • (#412) fix(mech): classify terminal evaluation reasons from the structured revert name — @ritsuKai2000
  • (#450) fix(overview): highlight active tasks + show effective plugins — @oaksprout
  • (#463) fix(learner): validate hooks assets in resolvePluginRoot — @ritsuKai2000
  • (#472) fix(client): codex readiness gates on id_token expiry, deadlocking claims — @ritsuKai2000
  • (#475) fix(client): swe-rebench-v2 generator survives HF outages via disk pool cache (#466) — @ritsuKai2000
  • (#479) fix(client): swe-rebench eval cleanup — prune every round + disk-floor guard (#476) — @ritsuKai2000
  • (#483) fix(client): show task run claim start time — @ritsuKai2000
  • (#484) fix(client): recover underpriced tx replacements — @ritsuKai2000
  • (#485) fix(client): throttle evaluator HF requests — @ritsuKai2000
  • (#500) fix(dashboard): retire-confirm typed-name gate is case-insensitive — @ritsuKai2000
  • (#503) fix(creator): drop un-bindable legacy tasks[] config entries at startup — @ritsuKai2000
  • (#551) fix(test): stub JSON-RPC + relay daemon stderr in funding-sequence e2e — @oaksprout
  • (#555) fix(mech): unwedge daemon recovery — chunked delivery scan, prune dead evals, swap testnet RPC default — @oaksprout

refactor

  • (#434) refactor(operator-app): render real SSE event stream on /overview/activity (§3.3) — @oaksprout
  • (#451) refactor(spa): progressive shadcn migration across operator dashboard — @oaksprout
  • (#455) refactor(spa): shadcn C.2 — captures + execution-data — @oaksprout
  • (#457) refactor(spa): shadcn C.7 — onboarding finish — @oaksprout
  • (#458) refactor(spa): shadcn C.6 — build + leaderboard — @oaksprout
  • (#459) refactor(spa): shadcn C.1 — configuration core — @oaksprout
  • (#460) refactor(spa): shadcn C.3 — launcher create wizard — @oaksprout
  • (#461) refactor(spa): shadcn C.4a — launcher launched cluster — @oaksprout
  • (#462) refactor(spa): shadcn C.4b — operator catalogue — @oaksprout
  • (#473) refactor(spa): finish shadcn — C.5 + C.8 + visible polish (final) — @oaksprout
  • (#504) refactor(dashboard): reframe activity rows as runs + tJINN unit fixes — @oaksprout

chore

  • (#270) chore(waxs.2): retire scripts/bd-mirror + friday-triage workflow — @ritsuKai2000
  • (#271) chore(waxs.3): release-notes-scaffold + changelog-mirror — verify bd-free + unify closed-ref aggregation — @ritsuKai2000
  • (#272) chore(waxs.4): disposition report for 34 unmirrored open beads — @ritsuKai2000
  • (#273) chore(waxs.5): freeze-beads runbook script + handbook archive-mechanic clarification — @ritsuKai2000
  • (#274) chore(waxs.6): GitHub Issue templates — work-unit + epic + config — @ritsuKai2000
  • (#315) chore(ci): operator-gate continue-on-error pending jinn-mono-lrey — @ritsuKai2000
  • (#354) chore(326): hide embedded agent surface until more robust — @ritsuKai2000
  • (#364) chore(327): hide plug-in builder UI surfaces behind a feature flag — @ritsuKai2000
  • (#389) chore(307): auto-open a release-review PR as the holistic-review gate — @ritsuKai2000
  • (#392) chore(367): converge client feature flags onto window.JINN_FEATURES@ritsuKai2000
  • (#401) chore(spa): stop tsc -b emitting .js into src/ — @ritsuKai2000
  • (#499) chore: ignore CLAUDE.local.md for per-operator Claude context — @oaksprout
  • (#501) chore(learner): ship plugin tree inside dist/ so it version-locks with compiled code — @ritsuKai2000

docs

  • (#269) docs: retire bd as issue substrate (DR-2026-05-18 + agent canon rewrite) — @ritsuKai2000
  • (#324) docs(release-readiness): design spec for substrate + release-prep + release-readiness — @ritsukai
  • (#394) docs: add OPERATOR-APP-SPEC.md as canonical operator app data model — @oaksprout
  • (#400) docs(307): document holistic release-review gate in the engineering handbook — @ritsuKai2000
  • (#452) docs(claude): add Frontends section — spec + domain model + shadcn rule — @oaksprout
  • (#454) docs(plan): shadcn thoroughness — agent prompt + SPA inventory + 8-phase sequence — @oaksprout
  • (#488) docs: SWE-rebench-v2 generation & claiming semantics (DR for #487) — @ritsukai
  • (#565) docs(spec): phase 2 chain architecture — staged launch proposal — @oaksprout
  • (#568) docs(press): two independent operators earned tJINN on Sepolia — @oaksprout
  • (#571) docs(comms): add External Communication canon + create-press-release skill — @oaksprout

other

Closed this week

Stats

  • Window: v0.1.6 → HEAD (2026-05-25)
  • 434 commits · 562 files changed, 68180 insertions(+), 11923 deletions(-) · 100 PRs · 3 contributors

Known issues

  • <placeholder — Captain edits>