NJustyBaseDocumentation

reference guide

PROJECT QUALITY ROADMAP

Legacy referencev3.18.6 · verified 2026-09-26

#Project Quality Improvement Roadmap

Last audited: 2026-09-26

Baseline commit: 05f1ad8

Roadmap mode: quality-first, exit-criteria driven

This is the canonical engineering-quality backlog for the repository. Product capability detail remains in the capability matrices and parity audit; this document owns cross-cutting quality priorities, measurable exit criteria, and the order in which the work should be undertaken.

The roadmap is a living document. A completed item must link to its tests or CI evidence, update affected contracts and user documentation, and record the date on which its acceptance criteria were verified.

#Status and priority model

Field Values
Status planned, in-progress, blocked, done, retired
Priority P0 release/safety risk, P1 material quality or product value, P2 longer-term improvement
Effort S hours, M 1–3 days, L 1–2 weeks, XL multi-week
Owner Maintainer role responsible for evidence and status, not necessarily the sole implementer

Work is ordered by exit criteria rather than dates. New functionality may be developed in parallel only when its affected subsystem already meets the P0 quality gates below.

#Audited baseline

The following measurements were collected from the baseline commit on 2026-08-31, before the Web Editor was retired on 2026-09-26. API/web entries are historical measurements, not current products or gates. The extended-lint row reflects the current frozen ratchet after that retirement; the remaining static/test rows are the pre-retirement snapshot and are refreshed when the baseline changes.

Area Baseline Evidence
Static and build Architecture check, root/media type checks, root and extended lint, documentation check, desktop build, and API/web builds pass npm run check:architecture, npm run check-types, npm run lint, npm run lint:extended, npm run docs:check
Root tests 524 suites, 9,247 tests, and one snapshot pass npm run test:validate
Root teardown Jest force-exits one worker after the successful run npm run test:validate output
Root coverage 72.28% statements, 58.59% branches, 77.08% functions, 72.76% lines npm run test:coverage
API tests 12 suites and 55 tests pass npm run test:api
React web tests 1 suite and 3 tests pass npm run test:web
Browser tests 30 Playwright tests pass npm run test:playwright
Extension Host Deterministic SQLite Result Panel scenario passes xvfb-run -a npm run test:extension-host
Extended lint 52 warnings, all in media (current frozen ratchet after the Web Editor retirement) npm run lint:extended:check
Dependency audit No known production or development vulnerabilities reported npm audit --audit-level=high
Documentation 68 generated pages and current catalog/link checks pass npm run docs:check

The global coverage average hides uneven risk. Parser and dialect code is near 87–89% line coverage, while migration is about 27%, activation 41%, views 49%, commands 59%, imports 58%, and exports 64%. The largest non-generated modules also concentrate orchestration and UI state: Result Panel bootstrap and host view code exceed 3,000 lines, while schema, metadata prefetch, filters, and grid construction exceed 2,000 lines.

At the baseline, the dependency check protected seven configured layers. The current desktop-only graph retains five layers: contracts, shared packages, desktop extension, webviews, and companions. It resolves workspace and alias imports, rejects forbidden platform dependencies, and fingerprints strongly connected components. A new forbidden edge or cycle fails the gate.

#Definition of done by risk

Every change keeps type checks, lint, affected builds, and targeted tests green. Additional requirements are based on risk:

Risk Examples Required evidence
Low Pure utility, copy, non-behavioral documentation Unit tests where behavior changes; documentation check for public changes
Medium Provider, parser, metadata mapping, isolated UI behavior Direct branch tests, integration test at the nearest real boundary, coverage review, compatibility note
High Execution, streaming, cancellation, persisted state, authentication, write operations, migrations, shared contracts Unit/state-machine tests, real runtime or browser/Extension Host test, failure and cleanup cases, security review, documentation and rollout evidence

High-risk work is not complete when only a mocked happy path passes. It must prove identity, state transitions, invalidation, failure recovery, cleanup, and backward compatibility at the closest production boundary.

#QG — Quality governance and metrics

ID Pri Effort Owner Status Work and acceptance criteria
QG01 P0 M Build/CI maintainer done Added the ignored, schema-versioned quality report (quality/quality-report.v1.schema.json) and reproducible artifact command (npm run quality:report). Evidence: scripts/quality-report.mjs, scripts/quality-tools.test.mjs. Verified 2026-08-31.
QG02 P0 S Repository maintainer done Applied the risk-based definition of done, state/failure matrix, and cleanup evidence to the PR template and contributor guide. Evidence: .github/pull_request_template.md, CONTRIBUTING.md. Verified 2026-08-31.
QG03 P0 M Test maintainer done Enforced global floors of 71% statements, 58% branches, 76% functions, and 72% lines (raised to 72/59/77/73 on 2026-10-02), plus 80% changed-line/70% changed-branch coverage for high-risk src/ roots. Evidence: jest.config.js, scripts/quality-gate.mjs, CI unit job. Verified 2026-08-31.
QG04 P0 M Frontend maintainer done Reduced the extended-lint baseline from 162 to 70 warnings and then to the current 52 warnings after the Web Editor retirement (52 media, 0 packages, 0 extensions) while keeping the ratchet blocking. The Phase 1B target of 100 warnings is met. Evidence: quality/quality-baseline.json, npm run lint:extended:check. Verified 2026-08-31.
QG05 P1 S recurring Repository maintainer planned Review this scorecard monthly. A done item must include evidence links, verification date, and any follow-up risk; stale or contradicted status returns to planned.

Long-term exit criteria are at least 80% global line coverage, 70% branch coverage, zero lint warnings, zero forced test-worker exits, and no undocumented high-risk change merged without multi-layer evidence.

#CQ — Architecture and code quality

ID Pri Effort Owner Status Work and acceptance criteria
CQ01 P0 XL Result Panel owner done Decomposed Result Panel state/identity, host coordination, messaging, persistence, row-count/grouping dependencies, filtering, aggregation, and rendering boundaries while preserving facades and behavior. Added platform-neutral @justybase/result-core and a desktop synchronization adapter; shared operations preserve NULL, decimal, large-number, filtering, grouping, streaming, cancellation, and legacy-identity behavior. Removed the migrated Result Panel cycle. Evidence: packages/result-core/, src/state/resultCoreStateAdapter.ts, src/state/resultStateManager.ts, media/resultPanel/rowCount.ts, media/resultPanel/diskGroupingState.ts, media/resultPanel/grid/persistence.ts, src/__tests__/resultPanelStateContract.test.ts, src/__tests__/resultPanelView.scroll.test.ts, src/__tests__/resultPanelGrid.test.ts, scripts/extensionHost/extensionHost.js, test-harness/tests/table-rendering.spec.ts, quality/architecture-rules.json. Verified 2026-09-09 with npm run test:extension-host, npm run test:extension-host:designer, and Playwright rendering coverage.
CQ02 P1 XL Desktop owners done Split the largest desktop host view, schema, metadata-prefetch, and React presentation coordinators by responsibility. The Result Panel facades remain intentionally thin, and shared presentation stays in packages/ui-react while VS Code owns webview integration. Evidence: src/providers/schemaProviderSupport.ts, src/metadata/prefetchMapping.ts, media/resultPanel/sharedView.tsx, and the package-owned shared UI tests. Verified 2026-09-10.
CQ03 P0 L Architecture owner done Extended check:architecture into a fail-closed TypeScript Compiler API graph check with seven configured layers, workspace/alias/.js resolution, exact path exceptions, unresolved-import diagnostics, and fingerprinted SCC detection. Evidence: quality/architecture-rules.json, scripts/architecture-check.mjs, scripts/architecture-check.test.mjs, and docs/ARCHITECTURE.md. Verified 2026-09-06: npm run test:quality-tools, npm run check:architecture, npm run check-types, npm run verify:pr, and npm run docs:check pass.
CQ04 P0 L Webview protocol owner done Replaced Result Panel catch-all messages with exhaustive host/webview unions and runtime validation at both untrusted boundaries. Compile-time command sync and negative rejection paths are covered. Evidence: media/resultPanel/hostContracts.ts, media/resultPanel/protocol.ts, src/contracts/webviews/resultPanelRuntime.ts, src/__tests__/resultPanelProtocol.test.ts, src/__tests__/resultPanelView.scroll.test.ts. Verified 2026-08-31.
CQ05 P0 M Result state owner done Wrapped persisted grid state in a versioned envelope keyed by stable resultSetId, with documented timestamp fallback, legacy migration, and safe reset for corrupt or future state. Evidence: media/resultPanel/grid/persistence.ts, src/__tests__/resultPanelMessagesScroll.test.ts. Verified 2026-08-31.
CQ06 P1 L Subsystem owners done Preserved caught error causes, removed the remaining architecture-cycle seams, and made lifecycle ownership explicit for the SQL linter timer/cache/disposables, metadata providers, database connections, and Netezza maintenance callbacks. The linter dispose path is idempotent and clears its timer, cache, and subscriptions. Evidence: src/providers/sqlLinterProvider.ts, src/__tests__/sqlLinterProvider.functionCoverage.test.ts, focused linter/metadata/connection tests, npm run test:fast, and npm run check-types. Verified 2026-09-10.
CQ07 P1 S Access package owner done Marked Access index-code data as generated, pinned the JustyBase.UCanAccessCs source and six canonical checksums, added deterministic --check/--write generation, and excluded the generated file from hand-written size and coverage metrics. Evidence: tools/access-ddl-compare/access-index-codes.manifest.json, scripts/generate-index-codes.cjs, quality/generated-files.json, scripts/quality-report.mjs, jest.config.js, and scripts/verify-access-release-snapshot.js. Verified 2026-09-10 with node scripts/generate-index-codes.cjs --check, npm run check:access-index-codes, and the 45/45 npm run test:quality-tools suite.
CQ08 P1 M Shared UI owner retired The typed HTTP/CSRF/WebSocket workspace transport package served only the Web Editor and was removed with that product on 2026-09-26. Shared contracts and UI components remain where VS Code consumes them.

The follow-up shared-code preparation defines target ownership, audits duplicate contracts and public companion entry points, and orders migration slices with desktop-first parity gates. Its infrastructure adds pure-package import checks, exact exceptions with removal conditions and the read-only architecture:report inventory. The first SQL validation slice now has package-owned Netezza parser and semantic validation, a reversible compatibility boundary and a parity harness. Legacy validation remains for non-Netezza dialects. CQ01, CQ02, and CQ06 are complete for the current refactoring closure slice; subsequent runtime, coverage, accessibility, security, and product migrations remain separate work, ordered in the refactoring plan and the backlog below.

R2 runtime extraction is accepted as a separate vertical slice: SQLite, DuckDB and Netezza have instance-scoped Node runtime packages, API adapters use the registry, desktop SQLite/DuckDB facades share the runtime sessions, and the Netezza driver is imported only by @justybase/netezza-runtime. Evidence is in the three package manifests/sources, API/runtime tests, DuckDB/File SQL integration suites, packaging checks and the architecture package-boundary gate. The live Netezza integration gate now passes on Linux (13 suites, 153 tests); Windows Extension Host and Remote-WSL checks remain environment- specific release evidence.

The R4 metadata-rule slice is implemented as a concrete @justybase/metadata-core package. Desktop cache, prefetch, index, identifier, completeness, disk-restart, and both schema-provider paths use the shared rules; the API metadata service is server-instance/owner/connection scoped and generation guarded. Its Linux verification is recorded in REFACTORING_PLAN.md; Windows and live-database gates remain environment-specific follow-up evidence. CQ02 is complete for the broader schema/API/React coordinator decomposition described above.

Architecture completion means zero new cycles, no vscode dependency in shared packages, no untyped high-traffic webview command, and no state migration that silently applies data belonging to another result identity.

#TQ — Deep, live, and stateful testing

ID Pri Effort Owner Status Work and acceptance criteria
TQ01 P0 M Test infrastructure owner done Fixed the unit network guard so blocked sockets emit an asynchronous error and database-driver timeout cleanup runs. The complete suite now terminates naturally without forced exit. Evidence: src/__tests__/unitNetworkGuard.setup.ts, src/__tests__/metadataDiskCompress.test.ts, npm run test:validate. Verified 2026-08-31.
TQ02 P0 L Test maintainer in-progress Raise coverage first in migration, activation, views, commands, editors, imports, and exports. Reach the changed-code gate before increasing global thresholds toward 80% lines/70% branches. Progress: lifecycle/state tests added for Edit Data, Import Wizard, and Migration Wizard; pure migration type-translation covered (107 tests) raising src/migration from 27% to 48% lines; the duplicated desktop formatter was removed and all dialects now delegate to @justybase/sql-core (parity tests per dialect); global floors raised to 72/59/77/73 (current 73.18/59.76/77.32/73.85). Evidence: src/__tests__/editDataProvider.test.ts, src/__tests__/importWizardMessageHandler.test.ts, src/__tests__/migrationWizardView.test.ts, src/__tests__/translateType.test.ts, src/__tests__/sqlFormatter.test.ts. Remaining: target writer/export/commands/views/activation waves.
TQ03 P0 XL UI owners in-progress Result Panel now has an executable desktop host/state contract and deep scroll/browser/Extension Host evidence covering stable identity, pinned/index transitions, source removal, streaming cancellation, late-chunk rejection, active-source recovery, filtering, sorting, grouping, aggregate analysis, hidden-view recovery, and stream ordering. Windows/Remote-WSL and remaining stateful panels remain open. Evidence: src/__tests__/resultPanelStateContract.test.ts, src/__tests__/resultPanelView.scroll.test.ts, docs/RESULT_PANEL_REGRESSION.md, scripts/extensionHost/extensionHost.js, test-harness/tests/table-rendering.spec.ts, and test-harness/tests/data-grid-performance.spec.ts. Verified 2026-09-12. Extend the same contract to remaining desktop panels.
TQ04 P0 L Web owner retired React workspace coverage work was retired with the Web Editor on 2026-09-26. Continue covering shared ui-core/ui-react packages and desktop webview behavior through their existing package and Extension Host gates.
TQ05 P0 L Browser/host test owner in-progress High-traffic authoring and Result Grid paths now run through real browser and Extension Host gates with observable readiness, sanitized reports, and live viewport metrics. Extend the same boundary coverage to the remaining desktop panels and CI environments. Evidence: test-harness/tests/table-rendering.spec.ts, test-harness/tests/data-grid-performance.spec.ts, and scripts/extensionHost/extensionHostAuthoringSmoke.js. Verified 2026-09-12.
TQ06 P0 XL Execution owner done Shared instance-owned orchestration governs desktop single/batch/stream execution with monotonic events, exactly one terminal summary, bounded safe reconnect, cancellation checks around reconnect, partial-progress retention, and idempotent LIFO cleanup. Desktop activation owns coordinator/streaming maps and timers. Result transport preserves stable identity, row offsets, and monotonic sequence; duplicate/delayed chunks and repeated terminal completion are ignored, while gaps recover through authoritative hydrate. Evidence: packages/contracts/src/queryExecution.ts, packages/database-runtime/src/execution.ts, packages/database-runtime/src/retrySafety.ts, src/core/execution/desktopExecutionBackend.ts, src/core/batchQueryExecutor.ts, src/core/singleQueryExecutor.ts, package/runtime tests, src/__tests__/desktopExecutionBackend.test.ts, media/resultPanel/streamingSequence.ts, and scripts/extensionHost/extensionHost.js. Verified 2026-09-09.
TQ07 P1 L Metadata owner done Restart, corrupt metadata/columns, stale TTL, committed DDL invalidation, same-process prefetch deduplication, two-writer fence ordering, lock expiry, v2-column-to-v3 rewrite, future/legacy isolation, fingerprint changes, external refresh, and host↔LSP invalidation are covered. Evidence: src/__tests__/metadataCache.diskPersistence.test.ts, src/__tests__/metadataDiskStorage.test.ts, src/__tests__/metadataDiskLock.test.ts, src/__tests__/tableDdlSynchronizer.test.ts, src/__tests__/metadataHostLspCoherence.test.ts, src/__tests__/integration/metadataCacheRestart.integration.test.ts. Verified 2026-09-01.
TQ08 P1 XL Data movement owner in-progress Import/export coverage exercises round trips and failures for nulls, Unicode, large integers, decimals, timestamps/time zones, duplicate headers, empty/header-only files, compressed CSV, cancellation, partial failure, bounded rows, and temporary-resource cleanup. Migration round trips and the remaining spreadsheet edge matrix are still open. Evidence: src/__tests__/tabularImportRuntime.test.ts, desktop importer/exporter tests, and the live migration suite. Verified 2026-09-12.
TQ09 P1 XL Dialect owners in-progress Selected authoring profiles drive completion, snippets, diagnostics, signatures, formatting, semantic tokens, and guarded capability states. Complete reusable metadata/DDL/import contracts and add controlled runtime gates before promoting more dialect capabilities. Evidence: packages/contracts/src/database/index.ts, dialect authoring profiles, and companion extension gates. Verified 2026-09-12.
TQ10 P2 L Core test owner planned Add property-based tests for identifiers, quoting, state keys, pagination, and format round trips. Run targeted mutation testing periodically on pure safety-critical modules rather than on every PR.
TQ11 P1 M CI owner done The weekly Linux Result Panel workflow runs JUSTYBASE_EXTENSION_HOST_REPEAT=20, retains per-iteration sanitized reports/traces and an aggregate summary, records duration/pending requests/artifact availability, and fails after collecting all iteration outcomes. Evidence: .github/workflows/result-panel-regression.yml, scripts/extensionHost/extensionHost.js, docs/RESULT_PANEL_EXTENSION_HOST_RUNBOOK.md. Verified 2026-09-01.

#Reference Result Panel state matrix

The existing scroll tests are the depth standard, not a one-off exception. Keep their current source/result switching coverage and add any missing cells below.

State to preserve:

  • vertical offset, horizontal offset, and virtualizer anchor;
  • sorting, global and column filters, grouping, and expanded groups;
  • column order, width, visibility, and pinning;
  • result formatting, alternate view, and disk-group expansion state.

Identity and invalidation:

  • key state by source URI, result index, and stable resultSetId;
  • accept execution timestamps only as the documented legacy fallback;
  • never restore state from another result identity;
  • invalidate incompatible state on a new execution while retaining explicitly pinned historical results.

Transitions:

  • Logs → result → Logs → the same result;
  • result set → another result set and back;
  • source/editor tab → another source and back;
  • panel hide/reveal and initially zero-sized layout;
  • webview reload/revival and VS Code window reload where persistence applies;
  • pin, unpin, close, index shift, refresh, and new execution;
  • active streaming, cancellation with partial rows, disk-backed data, and empty results.

Assertions and layers:

  • prefer exact stable identity and virtualizer-anchor assertions;
  • assert both axes; use pixel tolerance only when no anchor exists;
  • wait for hydrate, layout, and persistence acknowledgement rather than sleep;
  • cover pure persistence logic, bundled DOM behavior, the real Extension Host, and scheduled repeated race runs.

#Other mandatory state/failure matrices

  • Editor/LSP: rapid edits, stale diagnostics, metadata refresh, connection switching, disconnect/reconnect, document close, and server restart.
  • Query execution: stream sequencing, retry, cancellation, row limits, partial results, multi-statement errors, and late callbacks.
  • Metadata: warm/cold cache, incomplete layers, concurrent refresh, disk restart, corruption, and schema-changing DDL.
  • Data movement: format/type boundaries, target rollback or partial-write reporting, source/target capability mismatch, and cleanup.

#UX — Accessibility, consistency, and performance

ID Pri Effort Owner Status Work and acceptance criteria
UX01 P0 L Frontend owners planned Add automated accessibility checks and keyboard-only flows for high-traffic VS Code webviews and extension workflows. Fail on serious or critical violations.
UX02 P0 XL Panel owners in-progress Complete loading, refresh, empty, error, cancellation, retry, focus restoration, and disabled-action behavior for every panel in the UX audit. Progress: Edit Data, Import Wizard, and Migration Wizard now surface errors, expose a distinct analyzing/busy state, and render failed imports as errors (docs/PANEL_STATE_MATRIX.md).
UX03 P1 L Accessibility owner planned Test accessible names, focus traps, Escape/Enter behavior, grid navigation, selection/copy, high-contrast themes, 200% zoom, and reduced motion.
UX04 P1 L Performance owner planned Run LSP, typing, quality, hydration, and grid benchmarks on stable scheduled runners. Keep existing parser construction below 2,000 ms and investigate a sustained three-run median regression above 15%.
UX05 P1 L Runtime owners planned Measure memory and resource stability across repeated query execution, panel recreation, metadata refresh, large results, and worker use. No unbounded growth or retained disposed session is acceptable.

#DQ — Documentation quality

ID Pri Effort Owner Status Work and acceptance criteria
DQ01 P0 M Documentation owner done Reconciled the Web Editor parity audit with implementation paths and executable evidence. The audit is now archived because the product was retired on 2026-09-26; it remains historical evidence for the shared-package migration.
DQ02 P0 M Test/documentation owners done Testing strategy now owns risk tiers, stateful-test contracts, live-suite selection, coverage ratchets, flake policy, and quality-tooling gates. Evidence: docs/TESTING_STRATEGY.md, CI quality/unit jobs. Verified 2026-08-31.
DQ03 P1 L Documentation tooling owner planned Validate roadmap IDs, statuses, review dates, evidence links, and machine-verifiable feature claims in docs:check.
DQ04 P1 XL Product/architecture owners planned Move capability status toward a generated registry consumed by tests and documentation so implementation and parity claims cannot drift independently.
DQ05 P1 M Documentation owner planned Clearly label canonical guides, implementation contracts, runbooks, historical notes, and active backlogs; archive or redirect duplicate sources.

#SQ — Security, supply chain, and release quality

ID Pri Effort Owner Status Work and acceptance criteria
SQ01 P0 L Desktop security owner done Maintain a threat model for SecretStorage, untrusted webview messages, local-file authorization, read-only bypass, DDL confirmation, and artifact redaction. Evidence: docs/THREAT_MODEL.md, SECURITY.md. Verified 2026-10-02.
SQ02 P0 XL Security/test owners planned Add adversarial tests for every trust boundary, including malformed webview messages and SQL intended to bypass read-only classification. Preserve the MCP read-only gate on both transports.
SQ03 P1 M Dependency owner planned Add weekly dependency updates, CodeQL for JavaScript/TypeScript, release SBOM generation, license checks, and continued production/development dependency audits.
SQ04 P0 L Release owner planned Install and smoke-test packaged VSIX artifacts on Linux and Windows before publication; development-extension tests alone are insufficient release proof.
SQ05 P0 S CI/security owner planned Keep traces allow-listed and sanitized. Screenshots remain opt-in and require fixture/data review before external sharing.

#FQ — Functional completeness

Functional work follows quality readiness; it does not bypass it.

ID Pri Effort Owner Status Work and acceptance criteria
FQ01 P0 M Product/documentation owner done Audited the desktop, shared-package, MCP, and companion-extension inventory; restored Snowflake and Vertica to the public matrix as Preview and attached executable gates to supported claims. Evidence: docs/guide/reference/database-support.md, scripts/docs-check.mjs, and .github/workflows/optional-extension-build.yml. Verified 2026-08-31.
FQ02 P0 XL Subsystem owners in-progress Close state loss, cancellation, reload, metadata invalidation, error recovery, and cleanup gaps before increasing feature breadth in that subsystem. Progress: Edit Data (request-generation race guard, dispose cancellation, save reentrancy + rollback, DDL identifier/type validation, preserve-grid-on-error, in-panel close confirmation), Import Wizard (cancellation delivery, malformed-message error surface, failure rendering, cooperative import abort for shared batch + Netezza, target-catalog metadata invalidation), Migration Wizard (analyzing state, reentrancy guards, malformed-message error surface, temp log cleanup, abort-on-close, source-catalog metadata invalidation, no reset of in-progress migrations). Reload serialization and surfacing messages during import transitions remain open. Evidence: docs/PANEL_STATE_MATRIX.md.
FQ04 P1 XL Dialect owners planned Require the common dialect contract before promoting a database from preview to supported. Document unsupported versions and capability differences explicitly.
FQ05 P2 XL Product/architecture owners planned Defer broad AI, notebook, ETL, ERD, visual-builder, and remote-dialect expansion until their architecture, accessibility, security, and end-to-end gates are defined.

#Delivery sequence

#Phase 0 — Establish truth (delivered 2026-08-31)

  • Publish this roadmap and audited baseline.
  • Correct stale web parity and UX claims.
  • Define metrics, evidence, status, and ownership rules.

Exit: the active backlog has one canonical location, current claims match code, and every P0 item has an owner role and measurable acceptance criteria.

#Phase 1 — P0 foundations

  • Fix test teardown and freeze coverage/warning baselines.
  • Add changed-code, architecture, React, accessibility, and state-contract gates.
  • Version persisted state and type high-traffic protocols.

Exit: full tests terminate naturally, quality cannot regress silently, and high-risk UI/transport changes have enforceable contracts.

#Phase 1A — Quality ratchet (delivered 2026-08-31)

  • Add a versioned quality baseline/report and machine-readable lint/coverage gates.
  • Enforce the initial root coverage floors and changed high-risk coverage in CI.
  • Replace the obsolete branch-only PR checklist with risk, state/failure, and cleanup evidence requirements.
  • Reduce the first Result Panel lint-warning target to 162 warnings and make increases blocking.
  • Remove the known unit-test timeout leak; the complete Jest suite exits naturally.

Exit evidence: npm run test:quality-tools, npm run lint:extended:check, npm run test:validate, npm run docs:check, and npm run check-types:media. The 100-warning milestone was surpassed; the current frozen baseline is 70 and the next cleanup target is zero warnings. Phase 1 continues with React, accessibility, architecture, and state-contract gates.

#Phase 2 — Reliability and decomposition

  • Expand race, persistence, metadata, execution, and security tests.
  • Decompose critical modules without behavior changes.
  • Reduce warning and low-coverage hotspots.

Exit: critical subsystems meet their coverage targets, have no unresolved P0 state/failure cells, and have explicit resource ownership.

#Phase 3 — Quality-gated functionality

  • Deliver verified web and dialect gaps in FQ priority order.
  • Include contracts, integration tests, accessibility, security, and docs in the same change.

Exit: promoted functionality has executable parity evidence and no unsupported capability is advertised as complete.

#Phase 4 — Continuous control

  • Run scheduled live, stress, performance, mutation, and security checks.
  • Review metrics monthly and ratchet warning/coverage thresholds.
  • Smoke-test release artifacts on the supported platform matrix.

Exit: regression trends are visible before release and every release carries a reproducible quality record.

#Interfaces and compatibility policy

Roadmap implementation must keep shared contracts additive. Future interface work is expected in three internal boundaries:

  1. exhaustive host/webview message unions with runtime validation;
  2. a versioned persisted-grid-state envelope with legacy migration;
  3. a versioned quality-report schema consumed by CI.

Removing or retyping an existing public field requires deprecation, consumer migration, and compatibility tests. New platform-neutral behavior must remain free of vscode imports.

#Maintenance rules

  • Update this document when a baseline, priority, dependency, or acceptance criterion changes.
  • Do not mark an item done solely because code was merged; attach passing verification and update affected documentation.
  • Do not lower a threshold to make a regression pass. Record a time-bounded exception with owner, reason, and recovery item instead.
  • Keep live credentials, customer SQL/data, screenshots, and generated reports out of source control.
  • Re-audit the complete roadmap after a major architecture or product-scope change and at least once per release cycle.