Skip to content

RelyLoop v0.1.1 — MVP1 alpha feature-complete

Choose a tag to compare

@SoundMindsAI SoundMindsAI released this 14 May 16:30
· 320 commits to main since this release
3a0ed58

Patch release on top of v0.1.0. The MVP1 dashboard reads Path to MVP1: 0, 36/36 scoped done (100%) — the MVP1 alpha is feature-complete. The two remaining held items are correctly classified for MVP2 and visible on the new MVP2 dashboard.

This release lands the post-launch polish that accumulated since the v0.1.0 alpha cut: one new user-visible feature, two new backend surfaces, a wave of CI / tooling hardening, and three idea drops that drained the backlog to zero actionable items.

What's new since v0.1.0

Features

  • feat_query_inline_crud (PR #101) — PATCH / DELETE / GET endpoints on /api/v1/query-sets/{id}/queries + inline editable table on /query-sets/[id] page. 12 stories, zero migrations.
  • feat_judgments_periodic_resume_sweep (PR #104) — in-worker resume_stuck_judgment_lists Arq cron that re-enqueues every judgment_lists.status='generating' row every 15 minutes via deterministic Arq _job_id dedup. Replaces the old boot-time-only sweep with continuous coverage.
  • chore_chat_last_message_preview (PR #117) — adds last_message_preview (truncated to 120 chars) and last_message_at to ConversationSummary. /chat list page renders the preview under the title and shows last-touch time instead of created-at. LATERAL JOIN against the existing messages_conversation_idx — no migration.

Tooling + infrastructure

  • Per-release dashboards + top-level roadmap roll-up (PR #119) — docs/00_overview/DASHBOARD.md + dashboard.html index over the canonical release matrix (MVP1 → MVP2 → MVP3 → MVP4 → GA v1 → v2+). Per-release dashboards auto-discovered via _mvpN folder suffix; bidirectional navigation between roadmap and per-release detail.
  • env-defense workflow + gitleaks (PR #94, PR #99) — .env* filename guard CI workflow + content-scan step, surfaced after a local .env corruption incident.
  • make backend-* sub-targets (PR #110) — make backend-fmt / backend-lint / backend-typecheck for Node-18 contributors who can't run the bundled make fmt (which gates on pnpm's Node ≥20.18 engine).
  • structlog test helpers (PR #114) — backend/tests/_log_helpers.py factors assert_log_level, find_log_events, and RecordingLogger after a two-CI-run debugging arc on PR #112.
  • Dashboard regen idempotency + relative-link rewriting (PR #108) — pre-commit hook no longer churns on no-op writes; one-liner links extracted from idea files resolve correctly when embedded in the dashboard.

Bug fixes

  • bug_query_inline_crud_since_filter_uuidv7_ms_collision (PR #106) — 10ms sleep in _seed_set helpers to avoid UUIDv7 ms-collision flake.
  • chore_digest_worker_narrow_except (PR #112) — narrowed except Exception in the digest worker's optuna.importance.get_param_importances call so future dep-regressions like the PR #92 sklearn ImportError surface at ERROR level on day one instead of silently shipping empty importance maps for days.

Idea drops (won't-do)

  • chore_cluster_run_query_history (PR #103) — superseded by feat_chat_agent's run_query tool.
  • chore_studies_ui_shadcn_polish (PR #116) — ClusterFilterSelect precedent established native <select> as the project's standard for page-level filter/control surfaces; F1 inconsistency claim retired.
  • chore_demo_recording_mvp3 (PR #119) — single-maintainer alpha base rates make a 4–6 hour record-edit-upload-embed task unlikely to execute; tutorial-first-study.md serves the demo's discovery role; any pre-MVP4 recording would need re-shooting once MVP4 auth UI lands.

Held for MVP2

Two ideas explicitly held for MVP2 on the new MVP2 dashboard:

  • bug_chat_long_conversation_truncation_mvp2 — chat agent silently drops load-bearing context past 100-message cap. Latent bug; no operator has hit it. MVP2 timing aligns with Langfuse trace tooling for summarization prompt calibration.
  • infra_arq_subprocess_test_mvp2 — subprocess-driven Arq worker test for narrow Arq-version-regression guard. Trigger-locked at three conditions (arq pin bump, 3rd cron, MVP3 hardening opt-in).

Stack

Unchanged from v0.1.0:

  • Python 3.13 + FastAPI · Next.js 16 (React 19, TypeScript App Router, Turbopack) · Tailwind 4 · Vitest 4
  • Postgres 16 + SQLAlchemy 2.0 async + Alembic
  • Redis 7 + Arq workers
  • Optuna with TPE sampler + RDBStorage · pytrec_eval
  • openai SDK pointed at any OpenAI-compatible endpoint via OPENAI_BASE_URL
  • ElasticAdapter handling both ES 8.11+/9.x and OpenSearch 2.x/3.x
  • Single-tenant, no auth, Docker Compose-only deployment

Try it

git clone https://github.com/SoundMindsAI/relyloop
cd relyloop
git checkout v0.1.1
make up
# Then follow docs/08_guides/tutorial-first-study.md

License: Apache 2.0. Status: alpha. Multi-tenant + SSO arrive at MVP4 / v0.4.