Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

English · 日本語

Bajutsu roadmap / backlog

Important

Ownership of open items lives in GitHub Issues, not in this file. Every open item (Status Proposal or In progress) has a matching GitHub issue, and that issue's Assignees are the single source of truth for who, if anyone, is working on it — no field in this repo tracks that. Browse issues labeled roadmap-tracking: no:assignee for the unclaimed backlog, assignee:<user> for one person's plate. See BE-0109 for details.

This document tracks features planned for future implementation. Each item has its own file (one BE ID per item). Add unformed thoughts to Unsorted ideas first, then promote them to a numbered item once the scope is clear.

Legend

PriorityP0 (do next) / P1 (will do) / P2 (nice to have) / P3 (idea stage) Status — 💡 idea / 📋 planned / 🚧 in progress / ❄️ on hold / ✅ done

Adding a roadmap item — BE IDs (agents MUST follow)

Every roadmap item is a directory roadmaps/BE-NNNN-<slug>/ holding the English file BE-NNNN-<slug>.md and its Japanese version BE-NNNN-<slug>-ja.md (same ID and slug). BE stands for Bajutsu Evolution and NNNN is a zero-padded, 4-digit, monotonically increasing ID. Every item lives directly under roadmaps/ in a flat layout: its path is fixed the moment its ID is allocated and never moves (BE-0159 retired the per-Status folders BE-0078 introduced). Status is the single source of truth for the index bucket an item lists under — it no longer decides the item's location.

When you add a roadmap item:

  1. Allocate the next ID = the highest existing BE-NNNN + 1, over every item under roadmaps/. Find it with:
    ls -d roadmaps/BE-*/ | sort | tail -1
    Never reuse, skip, or guess a number. The norm, though, is to leave it undetermined: name the item BE-XXXX-<slug> (the literal placeholder) and let CI assign the number. The item keeps BE-XXXX through review and the merge, and the roadmap-id workflow runs scripts/allocate_roadmap_ids.py on main after the PR merges, allocating the next free IDs in merge order and committing the rename to main (BE-0089). This is what the ideation skill does; it keeps the BE-NNNN sequence contiguous (a rejected PR never spends a number) and avoids two in-flight branches racing for one. A BE-creation PR therefore carries no [BE-NNNN] title prefix — the real number is not known until after the merge.
  2. Create the item directory and both language filesStatus: Proposal for a proposal, or Status: Implemented when the same PR also ships the implementation (a new item is a proposal first unless its code lands with it) — at roadmaps/BE-NNNN-<slug>/BE-NNNN-<slug>.md (English) and roadmaps/BE-NNNN-<slug>/BE-NNNN-<slug>-ja.md (Japanese, same ID & slug). Don't hand-edit the index tables below — they are generated from each item's own metadata. Run make roadmap-index (or python scripts/build_roadmap_index.py) to regenerate the tables between the <!-- GENERATED:* --> markers in both index pages. The item's Status (its bucket) + Topic decide its section, so an item in an existing section needs no manual table edit; the gate (tests/test_roadmap_index.py, run by make test) fails if the committed index drifts. The first item of a topic to reach a bucket needs a new marked section in the page (the generator names the missing region).
  3. IDs are permanent. Never renumber an existing item — not when its status changes, not when it is completed, not when it is removed from a table. A BE ID, once assigned, refers to that item forever.

Each file follows the Swift-Evolution proposal format: a metadata block then ## Introduction / ## Motivation / ## Detailed design / ## Alternatives considered / ## References (fill what you can; mark unknowns TBD). The metadata is a fenced | Field | Value | table — <!-- BE-METADATA --><!-- /BE-METADATA -->, opening with a | Field | Value | header row (| 項目 | 値 | on the Japanese side) and holding Proposal, Author, Status, Topic (plus Implementing PR once shipped and Origin last, when applicable); the Japanese mirror uses 提案, 提案者, 状態, トピック. Name the author by GitHub handle| Author | [@handle](https://github.com/handle) |, the account of whoever first authored the item (for an AI-assisted draft, the person who drove and committed it). tests/test_roadmap_format.py checks this shape. The Status decides only the index bucket: Implemented / In progress / Proposal / Proposal (deferred). When an item's status changes — it starts being built, or it ships — set its Status and regenerate the index (make roadmap-index); the item stays in its original directory (BE-0159), and the table moves it to the matching bucket automatically.

Write the Japanese file (*-ja.md) in 敬体 (the polite desu/masu style, ですます調), consistent with docs/ja/ — never the plain da/dearu style (常体). This is part of the japanese-tech-writing norm; a translation must read as natural polite Japanese, not a literal rendering of the English.


Implemented

Shipped — landed on main. This is the project's implementation record.

Platform support (iOS / Android / Web / Flutter)

One backend per platform behind the single driver interface (DESIGN §1) — the iOS Simulator (idb / XCUITest actuators), Android (adb), the web (Playwright), and Flutter — plus the on-device validation that keeps each backend's actuation faithful. Going multi-platform means adding backends, not changing the deterministic core. Overview: multi-platform.md.

ID Item Status
BE-0005 idb_companion version monitoring Implemented
BE-0006 idb element-tree normalization accuracy Implemented
BE-0007 Android backend Implemented
BE-0010 Update the scope statement Implemented
BE-0019 XCUITest backend Implemented
BE-0020 Multi-backend evidence fallback Implemented
BE-0037 WebView / hybrid support Implemented
BE-0041 Web (Playwright) backend Implemented
BE-0054 Web backend completion (rich capabilities & parallel runs) Implemented
BE-0076 Selectable browser engines & cross-browser compatibility matrix (web backend) Implemented
BE-0087 idb action timing robustness (settle before actuation) Implemented
BE-0088 Overlap the Simulator boot with the build Implemented
BE-0105 Single-snapshot element query for XCUITest Implemented
BE-0207 Make the XCUITest runner channel robust to transient timeouts Implemented
BE-0208 Android on-device e2e in CI (emulator via KVM) Implemented
BE-0210 Android on-device actuation fidelity Implemented
BE-0211 Android device control (setLocation, clipboard) Implemented
BE-0218 Stabilize the E2E Simulator gate: namespace-aware readiness and a bounded actuation timeout Implemented
BE-0221 Guarantee shared showcase scenarios run unchanged on Android Implemented
BE-0223 Reach every Android tab by driving the tab bar over adb Implemented
BE-0227 Web swipe scroll fidelity (mode-aware scroll dispatch) Implemented
BE-0228 Web device mode (desktop / mobile emulation) Implemented
BE-0232 Multi-touch gestures on the adb driver (pinch / rotate) Implemented
BE-0233 adb clipboard on-device fidelity Implemented
BE-0234 Speed up adb scenario runs (uiautomator dump bottleneck) Implemented
BE-0240 Capability-aware automatic actuator selection for iOS (idb/XCUITest transparency) Implemented
BE-0245 Resident UI Automator server for adb reads Implemented

Driver & backend architecture

The backend-agnostic core every platform plugs into: the driver interface and its conformance suite, the capability model and preflight, the wait_for polling contract, backend lifecycle, and per-target / per-platform config resolution.

ID Item Status
BE-0009 Cross-platform abstractions Implemented
BE-0042 Platform-aware backend registry & selection Implemented
BE-0057 Rename the config apps key to targets Implemented
BE-0082 Preflight capability check before a run Implemented
BE-0114 Driver conformance suite for backend-agnostic behavior Implemented
BE-0118 Unify the wait_for polling contract across drivers Implemented
BE-0126 Split Effective into per-platform configs Implemented
BE-0128 Preflight-gate device-control steps by capability Implemented
BE-0141 Bring backend lifecycle into the type system Implemented
BE-0212 Split the coarse deviceControl capability into per-operation tokens Implemented

Scenario authoring features

What a scenario can express: variables and light control flow, data-driven runs, tags and selective runs, secret variables, reusable parameterized steps, HTTP / OTP / email side-channel steps, and device / OS-state control steps (background, status bar, timezone, clipboard, shake, location).

ID Item Status
BE-0030 Parameterized shared steps Implemented
BE-0031 Data-driven scenarios Implemented
BE-0032 Secret variables Implemented
BE-0033 Scenario variables + light control flow Implemented
BE-0034 Tags / labels + selective runs Implemented
BE-0035 Device-control steps (background, status-bar override) Implemented
BE-0036 HTTP utility step Implemented
BE-0046 OTP & email side-channel steps Implemented
BE-0052 Device-state primitives: timezone, clipboard, shake Implemented
BE-0186 Mailbox provider registry for the email step Implemented

Verification & coverage

How a run decides pass or fail — deterministically, and often below the UI: behavioral / protocol assertions, visual-regression assertions and their compare engines, the determinism / flakiness audit, and the E2E coverage map. The deterministic runner these build on landed first.

ID Item Status
BE-0001 Deterministic runner (M1) Implemented
BE-0028 Guard against over-matching evidence rules Implemented
BE-0029 Visual-regression assertions Implemented
BE-0048 Behavioral / protocol assertions Implemented
BE-0049 Determinism / flakiness audit Implemented
BE-0050 E2E coverage map Implemented
BE-0165 Selectable perceptual compare engines for visual regression Implemented
BE-0171 Element-scoped visual assertions and selector-based masking Implemented

Authoring experience (record / GUI editor)

The AI-driven record (Tier 1) is implemented (recording.md). These items make the record → edit → re-run cycle easier for humans; the local web UI launcher bajutsu serve is the first step.

ID Item Status
BE-0002 AI authoring loop & evidence (M2) Implemented
BE-0011 Local web UI (bajutsu serve) Implemented
BE-0012 Action-capture record Implemented
BE-0013 Scenario GUI editor Implemented
BE-0014 Demarcation from the existing AI record Implemented
BE-0044 Scenario provenance (from: — step ↔ natural-language origin) Implemented
BE-0060 Download / export a run report as a zip Implemented
BE-0068 Regenerable reports (render from stored run data) Implemented
BE-0072 Responsive serve Web UI (small-screen & touch layout) Implemented
BE-0095 Interactive crawl graph (draggable nodes + realign) Implemented
BE-0098 Unified authoring surface in serve Implemented
BE-0102 Aggregate run-stats dashboard Implemented
BE-0178 Multi-action record turns (batch intra-screen actions) Implemented
BE-0179 Human-in-the-loop handoff during record (pause / hand off / resume) Implemented
BE-0180 Crawl history viewer in the Web UI Implemented
BE-0191 Pluggable theme system for the serve Web UI (visual tokens and swappable transitions) Implemented
BE-0192 Vision-on-demand in record (attach a screenshot only when it adds information) Implemented
BE-0193 Right-size the record screenshot with a deterministic client-side downscale Implemented
BE-0194 Lean the record turn payload (compact the element tree, token-budget controls, per-category usage) Implemented
BE-0225 Config project hub in serve (register, list, switch, run) Implemented
BE-0226 Cross-project metrics comparison dashboard Implemented
BE-0241 Drill down from the Stats dashboard to the runs behind it Implemented

Autonomous crawl

Autonomous exploration that maps an app's screens on its own, kept fast and resumable: parallel crawl across simulators and browsers, web crawl, and full-frontier continuation.

ID Item Status
BE-0038 Autonomous crawl exploration (App Explorer style) Implemented
BE-0064 Parallel crawl across multiple simulators Implemented
BE-0066 Web crawl (Playwright backend) Implemented
BE-0077 Parallel web crawl across multiple browsers Implemented
BE-0181 Resumable crawl continuation (Web UI + full-frontier resume) Implemented

codegen coverage

Turning a passing scenario into a native test in a destination framework's idiom — XCUITest, Playwright, and Android (Espresso / UI Automator).

ID Item Status
BE-0003 codegen, traces, network & CI (M3) Implemented
BE-0025 Coordinate swipe generation Implemented
BE-0026 Shrink unsupported syntax Implemented
BE-0062 Playwright codegen target Implemented
BE-0083 Unify the codegen emitters behind a shared scenario walk Implemented
BE-0085 Shrink unsupported web (Playwright) codegen syntax Implemented
BE-0209 Android codegen emitter (Espresso / UI Automator) Implemented

Self-healing triage

Lower the maintenance cost of regressions while keeping AI out of the judge role and limited to an investigator.

ID Item Status
BE-0004 Self-healing triage (M4) Implemented
BE-0021 AI triage (root-cause summary, fix suggestions) Implemented
BE-0022 update (minimal-diff proposals = applying structured fixes) Implemented
BE-0023 Guards against "making tests laxer" Implemented
BE-0039 Self-healing limited to "propose + opt-in apply" Implemented
BE-0220 Flaky-test suggestion and cross-run fix proposals from DB run history Implemented

doctor / onboarding

ID Item Status
BE-0024 doctor / onboarding Implemented
BE-0164 Config-aware environment installer Implemented

Integration & automation (MCP)

ID Item Status
BE-0017 MCP server Implemented
BE-0018 Return evidence as MCP resources Implemented

Integration with external services

Sending a run's result out to a service the team already lives in — post-verdict, deterministic transports that carry the verdict the runner computed, never an LLM's.

ID Item Status
BE-0099 Webhook notifications for run results Implemented
BE-0161 Export run results in Common Test Report Format (CTRF) Implemented

AI provider configuration

The Tier-1 AI paths (record / triage / --dismiss-alerts / crawl) call Claude through a pluggable provider. This topic covers selecting and configuring that provider — e.g. Amazon Bedrock (authenticated with AWS credentials) as an alternative to the direct Anthropic API — and the provider-agnostic, redacted AI data path. The deterministic run / CI gate calls no model and is unaffected.

ID Item Status
BE-0047 AI data sovereignty (provider-agnostic, redacted AI path) Implemented
BE-0053 Amazon Bedrock as a pluggable AI provider Implemented
BE-0097 AI data sovereignty for the crawl guide and serve-spawned AI paths Implemented
BE-0101 Legible Claude-using / Claude-free split with a zero-config non-AI path Implemented
BE-0104 Vendor-neutral AI backend interface Implemented
BE-0111 Make the AI SDK an optional extra so the deterministic gate installs AI-free Implemented
BE-0163 Replace the Claude Code CLI authoring backend with an ant-CLI OAuth AI provider Implemented
BE-0175 Sign in to the ant provider from the serve Web UI Implemented
BE-0176 Revive Claude Code as an AiBackend adapter with file-based vision Implemented
BE-0183 Per-provider AI settings in the serve Web UI Implemented
BE-0184 Persist serve AI provider settings across restarts Implemented
BE-0188 Configurable AI output language for record and crawl Implemented
BE-0215 Explicit CLAUDE_CODE_OAUTH_TOKEN credential for the claude-code provider Implemented
BE-0229 Resolve serve AI provider settings per organization at runtime Implemented

AI usage and cost observability

Making Bajutsu's AI token and dollar spend visible: an attributed, persistent ledger of every AI call, and (separately) the serve Web UI dashboard that reads it.

ID Item Status
BE-0195 Visualize AI token usage and cost in the serve Web UI Implemented
BE-0196 Record AI token usage and cost as an attributed, persistent ledger Implemented

Surfacing CLI features in the serve Web UI

Bringing the CLI's own tools into the serve Web UI, where authoring happens. The scenario editor's inline lint / schema validation landed first.

ID Item Status
BE-0137 Generate native test code from the serve Web UI Implemented
BE-0138 Inline scenario validation in the serve editor Implemented
BE-0145 Determinism audit in the serve Web UI Implemented
BE-0146 E2E coverage map in the serve Web UI Implemented
BE-0147 Triage failed runs in the serve Web UI Implemented
BE-0148 Doctor readiness panel in the serve Web UI Implemented

Hosting the web UI (cloud / self-hosted)

Standing up bajutsu serve beyond loopback. The hardening that makes the existing stdlib server safe to expose (auth, input validation) has shipped; the full hosted topologies remain proposals below.

ID Item Status
BE-0015 Public hosting of the web UI Implemented
BE-0016 Self-hosting of the web UI Implemented
BE-0051 Serve hardening for hosting (auth, input validation) Implemented
BE-0055 Operational logging for the hosted serve Implemented
BE-0090 Govern and sandbox command execution from uploaded bundle configs Implemented
BE-0106 Post-completion worker model (eliminate Redis dependency) Implemented
BE-0108 Restrict config sources to upload and Git when hosted Implemented
BE-0110 Evidence upload to object storage via URI Implemented
BE-0127 Split the serve operations god-module Implemented
BE-0129 Bound serve scope and keep host concerns out of shared config Implemented
BE-0160 Credential-free worker uploads via presigned URLs Implemented
BE-0166 Capability-routed job queues Implemented
BE-0169 Serve metrics and observability endpoint Implemented
BE-0173 Slim Linux web-worker container image Implemented
BE-0190 Org-scoped crawl history on the server backend Implemented
BE-0204 GCS support for server-side object storage Implemented

Configuration sourcing

Where a project's config and scenarios come from. A Git repository + ref is a today-runnable source for CI and a self-hosted serve, materialized at an immutable commit.

ID Item Status
BE-0063 Load config (and its scenario tree) from a Git repository + ref Implemented
BE-0073 Upload a config + scenarios + app-binary bundle as a zip and run it from the web UI Implemented
BE-0119 Version the scenario schema for cross-version reads Implemented
BE-0177 Per-target config defaults for run-behavior settings Implemented
BE-0187 View the loaded config in the serve Web UI (raw YAML, structured tree, Git provenance) Implemented
BE-0224 Granting private-repository access for the GitHub config source Implemented
BE-0242 Resolve config-declared paths relative to the config file Implemented
BE-0243 Persist uploaded zip config bundles to object storage for hosted serve Implemented
BE-0268 Upload config, scenarios, and app binary as independent content-addressed artifacts composed per run Implemented

Security hardening

Closing the edges the deterministic core does not touch — serve's HTTP surface, how secrets flow through capture / record / artifacts, driver argument hygiene, and the CI supply chain. These items keep the tool safe to run on a shared machine and safe to hand a scenario from an untrusted source, without weakening the prime directives.

ID Item Status
BE-0115 Authenticate the in-process iOS network collector Implemented
BE-0116 Tighten UDID validation against argument injection Implemented
BE-0120 Tokenize secrets in recorded scenario YAML Implemented
BE-0121 Unconditional CSRF and Host-allowlist defenses for serve Implemented
BE-0123 Route composite-action inputs through env indirection Implemented
BE-0124 Tighten config-source owner and repo validation Implemented
BE-0125 Restrict the claude-code authoring agent tools Implemented
BE-0130 Redact sensitive network headers and cookies by default Implemented
BE-0131 Restrict run-artifact file permissions Implemented
BE-0133 Pin the actionlint installer by SHA Implemented
BE-0136 Write-once secrets store for serve Implemented
BE-0144 Close the auto-merge stale-approval race Implemented
BE-0151 Warn when screenshots and video may capture on-screen secrets Implemented
BE-0152 Keep literal TOTP seeds out of run artifacts Implemented
BE-0153 Encode-aware secret redaction Implemented
BE-0155 Pass idb input text via stdin to keep secrets out of argv Implemented
BE-0174 Contain scenario component and data refs within the suite root Implemented

Dogfood fixtures (demo apps)

Purpose-built test subjects that exercise the commands end-to-end. The showcase suite is the iOS dogfood target — the same app in UIKit and SwiftUI, each in an accessibility-on / accessibility-off variant — so run, record, doctor, and crawl all have one rich, representative subject. The screen-by-screen contract lives in demos/showcase/SPEC.md.

ID Item Status Origin
BE-0045 Dogfood showcase apps (UIKit × SwiftUI, accessibility-paired) Implemented Dogfooding
BE-0079 Consolidate the demo & dogfood apps onto the showcase suite Implemented Dogfooding
BE-0107 Reach every showcase tab by navigation, not a launch-env shortcut Implemented Dogfooding

Dogfood fixtures (web UI)

Bajutsu's own serve Web UI is a web app, so the Web (Playwright) backend drives it — a deterministic, Tier-2 regression net for the UI, the web-side counterpart to the iOS showcase fixtures.

ID Item Status Origin
BE-0058 Dogfood the serve Web UI (web-backend regression net) Implemented Dogfooding
BE-0059 Bring up the target server for a run (launchServer) Implemented Dogfooding
BE-0189 Gate the serve Web UI dogfood in CI Implemented Dogfooding

Development infrastructure (contributor workflow)

Reduce friction for the many parallel sessions working this repo — treat merge conflicts as a design smell and reshape the file flow so independent changes touch disjoint files.

ID Item Status
BE-0043 Conflict-resistant file flow (generated indexes, modular files, git hygiene) Implemented
BE-0061 Collision-proof BE-ID allocation (atomic reservation + auto-repair) Implemented
BE-0065 Docstring standard & generated API reference Implemented
BE-0067 Code-quality gate hardening (CI fidelity, security lint, supply-chain) Implemented
BE-0069 Executable contributor guardrails (procedures as commands) Implemented
BE-0074 Standardize the BE item template (EN / JA) Implemented
BE-0078 Status-driven roadmap folders (proposals / deferred / in-progress / implemented) Implemented
BE-0089 Merge-time BE-ID allocation on main Implemented
BE-0093 Public project website & documentation portal (GitHub Pages) Implemented
BE-0094 Generated roadmap status dashboard on GitHub Pages Implemented
BE-0096 Keep docs links to roadmap items from rotting on promotion Implemented
BE-0100 Progress tracking and cross-item relations in the BE template Implemented
BE-0103 Right-size the model and reasoning effort per development task Implemented
BE-0109 GitHub Issues as the ownership tracker for open roadmap items Implemented
BE-0112 Enforce core / contract / periphery layer boundaries in the gate Implemented
BE-0113 Realign DESIGN.md with the current implementation Implemented
BE-0117 Cover the rest of the CLI command layer, then ratchet the coverage floor Implemented
BE-0122 Legible GitHub Actions workflow and job names Implemented
BE-0139 Link the roadmap dashboard and item files to their tracking issue Implemented
BE-0149 Close the roadmap-placeholder format-guardrail gap Implemented
BE-0156 Keep roadmap-item PR labels in sync with Topic Implemented
BE-0159 Flatten roadmap items into one directory (retire status-driven folders) Implemented
BE-0162 Roadmap status-filter skill for AI sessions Implemented
BE-0203 Claude Code as the automated PR code reviewer Implemented
BE-0213 Terminology glossary and documentation structure review Implemented
BE-0214 Web-only beginner tutorial (no Xcode/Simulator required) Implemented
BE-0216 propose-and-build: author a BE proposal and its implementation in parallel, stacked Implemented
BE-0217 Harden the automated PR review prompt with research-backed policy Implemented
BE-0219 Text search on the roadmap status dashboard Implemented
BE-0222 Scheduled daily workflows that refresh the roadmap and docs separately, each opening its own review PR Implemented
BE-0230 Hands-free implement-review loop: auto-PR and pr-followup polling in implement-be Implemented
BE-0266 Contributor workflow tutorial: a hands-on guide to ideation / implement-be / propose-and-build Implemented

Codebase quality & technical debt

Behavior-preserving cleanup inside bajutsu/ itself — deduplication, decomposition of oversized functions/modules, and naming clarity — as distinct from Development infrastructure (contributor workflow) above, which covers the tooling contributors use to work on this repo (CI, hooks, roadmap automation).

ID Item Status
BE-0092 Extract the crawl coordinator into a class Implemented
BE-0132 Deduplicate crawl screenshot helpers Implemented
BE-0134 Eliminate serve-to-CLI flag-mirror drift Implemented
BE-0135 Resolve top-level module naming debt Implemented
BE-0140 Deduplicate Claude client initialization Implemented
BE-0142 Cover the CLI command layer Implemented
BE-0143 Decompose the run command god-function Implemented
BE-0150 Fail cleanly on a malformed scenario in trace --explain and audit Implemented
BE-0172 Decompose the run-path step loop and per-scenario runner Implemented
BE-0197 Even out the Environment protocol shape for a third platform Implemented
BE-0198 Split the JobRegistry out of ServeState Implemented
BE-0199 Share the doctor screen probe between CLI and serve Implemented
BE-0200 Make the run-id format a single named contract Implemented
BE-0201 Consolidate the duplicated replay helpers of record and enrich Implemented
BE-0202 Split serve.js into section files without a build step Implemented
BE-0205 Decompose the crawl CLI command like run Implemented
BE-0206 Split serve job state from job execution Implemented
BE-0246 Clarify the module taxonomy for talking to Claude Implemented
BE-0248 Continue decomposing ServeState into auth and provider-settings managers Implemented
BE-0249 Remove the dead Claude-client wrapper orphaned by the backend seam Implemented
BE-0251 Hoist duplicated driver helpers into drivers.base and unify small constants Implemented
BE-0254 Extract a shared CoordinateTreeDriver base for idb and adb Implemented
BE-0255 Deduplicate codegen identifier and regex helpers into codegen_common Implemented
BE-0258 Route serve step-artifact reads through the ArtifactStore seam Implemented
BE-0259 Reuse the settled query snapshot across assert and extract steps Implemented
BE-0260 Consolidate the duplicated CLI command bring-up and add a neutral DeviceError Implemented
BE-0261 Round-trip Author YAML edits through the serializer Implemented
BE-0264 Return JSON errors for uncaught serve handler exceptions Implemented

In progress

Accepted and actively being built — a PR is in flight or imminent.

Platform support (iOS / Android / Web / Flutter)

ID Item Status
BE-0231 Harden the E2E first-wait against Simulator settling flake In progress

AI provider configuration

Hosting the web UI (cloud / self-hosted)

ID Item Status
BE-0239 Deletable runs and reports in the serve Web UI In progress

Codebase quality & technical debt

ID Item Status
BE-0250 Split assertions into a package and thread evaluation contexts as one EvalContext In progress
BE-0257 Package the enforced architecture layers as directories In progress

Proposals

Under consideration — not yet decided. Promote an item to In progress once work starts, or to Implemented when it ships.

Platform support (iOS / Android / Web / Flutter)

ID Item Status
BE-0008 Flutter support Proposal
BE-0269 Speed up the system-alert guard's intervention during wait steps Proposal

Device-cloud execution

Running a scenario on a hosted device farm instead of a local Simulator, emulator, or browser, behind a common provider abstraction — an opt-in execution target beyond the deterministic core's local-first default.

ID Item Status
BE-0235 AWS Device Farm batch submitter Proposal
BE-0236 Device-cloud provider abstraction Proposal
BE-0237 Firebase Test Lab / Device Streaming adapter Proposal
BE-0238 iOS device-cloud execution Proposal

Scenario authoring features

ID Item Status
BE-0265 Text-editing steps: select, clear, delete, copy Proposal

Authoring experience (record / GUI editor)

ID Item Status
BE-0182 Human value entry during record (OTP / random / one-off values) Proposal
BE-0185 Human takeover step during record (CAPTCHA / biometrics / unresolvable gestures) Proposal
BE-0262 Live step-picking and target-scoped runs in the Author editor Proposal
BE-0263 Bring the Author view into the tiling layout Proposal
BE-0267 Reuse cost-ordered actuator selection in serve capture and enrich Proposal

Hosting the web UI (cloud / self-hosted)

ID Item Status
BE-0167 Control-plane scale-out behind a load balancer Proposal
BE-0168 Self-hosted high availability and single-point-of-failure hardening Proposal
BE-0170 Weighted-fair cross-org job dispatch Proposal
BE-0244 Deploy the hosted web UI service Proposal

Configuration sourcing

Development infrastructure (contributor workflow)

Codebase quality & technical debt

ID Item Status
BE-0247 Move the serve frontend to ES modules Proposal
BE-0252 Split config into a package and group Effective into sub-records Proposal
BE-0253 Unify the serve dual-backend route tables behind a declarative registry Proposal
BE-0256 Split platform_lifecycle into a package and route device resolution through the Environment seam Proposal

Deferred

Parked proposals — considered, then shelved for now. Kept here (not deleted) so the decision and its rationale stay on record; un-defer by changing Status back to Proposal.

Scenario authoring features

ID Item Status
BE-0157 Shake device primitive Deferred
BE-0158 Timezone device primitive Deferred

Verification & coverage

ID Item Status
BE-0040 AI assertions Deferred

Hosting the web UI (cloud / self-hosted)

ID Item Status
BE-0070 Live in-progress run artifacts across the worker split Deferred

Security hardening

ID Item Status
BE-0154 Run roadmap-promote from the base SHA Deferred

Miscellaneous / on hold

ID Item Status
BE-0027 mockServer (external mock) Deferred

Not adopting (already covered / out of scope)

  • Change history / version management — already covered, since scenarios are YAML under git.
  • Cloud device farm / real-device execution as the default — the deterministic core stays local-first and CI-friendly (Simulator, headless browser, emulator), not real hardware or device clouds (DESIGN §1). Hosted device-cloud execution is not the default, but it is no longer flatly out of scope: it is tracked as opt-in proposals under Device-cloud execution. Multi-platform likewise lives under the Platform support items.
  • Per-step screenshots / UI tree on error / device logs — already covered by the evidence subsystem (capturePolicy + the result:error safety net).
  • NL→test generation (Autopilot equivalent) — overlaps with the existing record + the Authoring experience items.
  • Scheduling / Slack / TestRail integration — the domain of the CI / notification layer. Low priority (separately, if needed).
  • Automatic retry of failed tests — in tension with determinism-first (no fixed sleeps, condition waits). It can hide flakiness, so if adopted at all it should be limited to quarantine use and needs careful consideration.

Unsorted ideas

Add unformed thoughts here. Promote them to a numbered BE item later.