Appearance
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 (
$webon thesaarthiaccount): https://saarthi.z29.web.core.windows.net/. The release pipeline rebuilds and republishes it on every release (push tomain). - 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 (newui_testconfig 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 noui_testconfig 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. Anac_breakingmismatch 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_gatesincludes the harness floor (bun test), that every story AC appears inac_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 initasks 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 daemonstart 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 newvlx updatecommand. - 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_HOMEto override). The daemon can be started from any directory. Migration note: existing installs with./vlx.yaml/./state.dbin the repo must move them to~/.vlx/(or setVLX_CONFIG/VLX_DB_PATH) — the daemon warns when it detects the legacy layout. vlx initis 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-releaseAzure Pipeline builds and publishes all three targets (plus a versioned rollback copy) on every push tomain.
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
majoron user-facing diffs without paireddocs-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"andadapters.scm_host: "github"now work. Supports GitHub Issues as a tracker and GitHub PRs as the SCM host. Configure viagithub:section invlx.yaml. - Jira adapter (tracker):
adapters.tracker: "jira"polls Jira Cloud issues. Configure viajira:section invlx.yaml. - Microsoft Teams adapter (human channel):
adapters.human_channel: "teams"uses Teams channels instead of Telegram for human-in-the-loop. Configure viateams:section invlx.yaml.
New features
- Auto-merge (VLX-034, AB#4038): opt-in auto-merge for approved PRs with no unresolved comments. Eligibility:
auto-merge-oktag + trust score ≥ threshold + cooldown elapsed. Operator escape hatch:/vetomerge <storyId>. Off by default; enable viaauto_merge.enabled: trueinvlx.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_prsand 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 archivesubcommand added.vlx memory reportsubcommand 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./respinbypasses 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, andadapters.qa_sandboxconfig 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, andvlx secretCLI were removed.RequestCredentialnow uses the plaintext clarification path (see Security — Credential relay). Thesecretstable 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.tsusing bun:sqlite directly.
Breaking changes
adapters.qa_sandboxconfig key removed — remove it fromvlx.yamlif present.vlx secretCLI subcommand removed.vlx logs prunesubcommand removed.depsandsecretstables dropped fromstate.dbin migrations 0010+. The migration runs automatically at daemon startup.