Skip to content

Changelog

Operator-relevant changes to VeloxSaarthi. Engineering-internal changes (test infrastructure, refactors with no observable behavior change) are omitted.


2026-06-12

Docs site: published on Azure Storage + restyled

  • This documentation site is now published to the Azure Storage static-website endpoint ($web on the saarthi account): https://saarthi.z29.web.core.windows.net/. The release pipeline rebuilds and republishes it on every release (push to main).
  • Restyled to the VeloxSaarthiBot "Swiss Ledger × Poster" design system — paper + ink + a single red accent, Archivo display type, Instrument Sans body, zero border-radius, no shadows. (Replaces the unused Azure Static Web Apps setup.)

2026-06-12

UI-proof Test stage + configurable approval gate

  • Browser evidence for UI stories: when a story's spec declares ui: true (Architect sets it for anything user-visible in a browser), the Test stage now starts the app under test (new ui_test config section), and the Inspector authors and runs real Playwright flows per acceptance criterion with video recording and screenshots. A failed flow routes back to Build like any other defect. UI stories with no ui_test config or no flow evidence escalate fail-closed — they never silently ship untested.
  • Mockup validation: images attached to the work item (or inline in the description) are downloaded to stories/<id>/mockups/; the Inspector compares each against the implemented UI and records a structured verdict. An ac_breaking mismatch routes to Build for ONE fix attempt on its own budget; if still mismatched the run ships flagged — Telegram warning, ADO comment, and a prominent PR-body section — for the human to judge. Cosmetic drift is reported without gating.
  • Evidence published where you are: flow videos, screenshots, and mockup side-by-sides are posted to the story's Telegram topic and attached to the ADO work item. The PR body now includes a per-AC verdict table and a UI-flows table.
  • Harness hardening: the orchestrator now verifies that required_gates includes the harness floor (bun test), that every story AC appears in ac_coverage, and that every cited evidence file exists on disk — violations escalate fail-closed instead of trusting the Inspector's claims.
  • Approval gate now optional (default OFF): Plan routes straight to Build unless approval_gate.enabled: true. vlx init asks during setup (60s of silence → disabled); an interactive daemon start with an older config asks once and persists the answer.

2026-06-12

Binary distribution + self-update (PR 1755, v0.0.1)

  • vlx now ships as a single self-contained binary for Windows x64, macOS (Apple Silicon), and Linux x64 — no Node, Bun, or source tree needed on the machine. Download from the release channel: https://saarthi.blob.core.windows.net/releases.
  • Self-update: every vlx daemon start checks the channel, verifies the SHA-256, swaps the binary, and restarts itself. Opt out per-run with --no-update / VLX_NO_UPDATE=1; force with the new vlx update command.
  • State home moved to ~/.vlx/: config (vlx.yaml), state (state.db), backups, worktrees, and secrets (secrets/global.env, auto-loaded at startup) all live under one root (VLX_HOME to override). The daemon can be started from any directory. Migration note: existing installs with ./vlx.yaml / ./state.db in the repo must move them to ~/.vlx/ (or set VLX_CONFIG / VLX_DB_PATH) — the daemon warns when it detects the legacy layout.
  • vlx init is now a guided wizard: prompts for ADO + Telegram details, resolves the repo ID, clones the client repo, writes config + secrets, and migrates — replacing the copy-the-template flow.
  • Releases are automated: the vlx-release Azure Pipeline builds and publishes all three targets (plus a versioned rollback copy) on every push to main.

2026-06-11

VLX-047 — Product documentation site (AB#4042)

  • Shipped this documentation site (VitePress + Azure Static Web Apps pipeline).
  • Added docs-as-code policy: Critic flags major on user-facing diffs without paired docs-site/ updates; Builder mirror rule enforces docs updates in the same branch.

2026-06-10

Architecture cleanup (15 stories shipped)

Adapters added

  • GitHub adapter (tracker + SCM host): adapters.tracker: "github" and adapters.scm_host: "github" now work. Supports GitHub Issues as a tracker and GitHub PRs as the SCM host. Configure via github: section in vlx.yaml.
  • Jira adapter (tracker): adapters.tracker: "jira" polls Jira Cloud issues. Configure via jira: section in vlx.yaml.
  • Microsoft Teams adapter (human channel): adapters.human_channel: "teams" uses Teams channels instead of Telegram for human-in-the-loop. Configure via teams: section in vlx.yaml.

New features

  • Auto-merge (VLX-034, AB#4038): opt-in auto-merge for approved PRs with no unresolved comments. Eligibility: auto-merge-ok tag + trust score ≥ threshold + cooldown elapsed. Operator escape hatch: /vetomerge <storyId>. Off by default; enable via auto_merge.enabled: true in vlx.yaml.
  • Trust score (VLX-033, AB#4037): per-project trust score (0.0–1.0) computed from the event log. Used as the auto-merge eligibility gate.
  • Candidate ledger (VLX-024b, AB#4025): tracks tool promotion proposals and rejection history so the agent cannot re-propose the same bad tool after a [brain] PR is rejected.
  • Memory hygiene report (vlx memory report, AB#4027): scans project memory for stale / large / duplicate entries.
  • Auto-merge PR tracking (AB#4036): daemon tracks auto-merge-eligible PRs in tracked_prs and merges after cooldown.
  • PR archive and DB archive (vlx db archive, AB#4030): event log archival for old terminal runs.
  • Browser-driven QA flow (AB#4039, AB#4040): Designer and browser-flow handlers for stories tagged [ui].
  • Conditional actors — Designer, Sentinel, Tuner actor files added (AB#4029, AB#4028, AB#4033): invoked on tag/scope triggers, not on every story.
  • Cancel command (/cancel <storyId>, AB#4031): kills the active run cleanly. Cancelled runs are excluded from auto-escape.

Operator-visible changes

  • vlx db archive subcommand added.
  • vlx memory report subcommand added.
  • /vetomerge <storyId> Telegram command added.
  • /cancel <storyId> Telegram command fixed (previously did not actually cancel the run).
  • Respin model changed: the vote-state-driven respin was replaced by a comment-quiescence-driven model. The 10-minute debounce (RESPIN_DEBOUNCE_MS) starts when the reviewer goes quiet, not when they vote. /respin bypasses the debounce immediately. Per-comment Responder actor added (AB#4032): one-shot classification + in-thread reply per new reviewer comment.
  • Telegram button answers now persist the option label, not the option index (fixes a bug where restoring from a different option count would map to the wrong answer).

Removed

  • Docker QA sandbox (AB#4020): the QaSandboxPort, Docker adapter, and adapters.qa_sandbox config key were removed. The Test stage runs the Inspector inside the ACP session (handlers/test.ts). No Docker dependency for running tests.
  • Secrets capability broker (AB#4020): the SecretStore, CapabilityBroker, and vlx secret CLI were removed. RequestCredential now uses the plaintext clarification path (see Security — Credential relay). The secrets table was dropped in migration 0010.
  • Per-run file logging (createRunLogger, vlx logs prune): removed; daemon logs to stdout/journald only.
  • Drizzle ORM dependency removed; migrations are plain SQL files applied by src/db/migrate.ts using bun:sqlite directly.

Breaking changes

  • adapters.qa_sandbox config key removed — remove it from vlx.yaml if present.
  • vlx secret CLI subcommand removed.
  • vlx logs prune subcommand removed.
  • deps and secrets tables dropped from state.db in migrations 0010+. The migration runs automatically at daemon startup.

Internal Veloxcore tool — not a public product.