Skip to content

Establish Chromium/AppScene visual and geometry regression gates for unchanged Code OSS #259

Description

@wieslawsoltes

Current visual-gate checkpoint — 20 September 2026

Exact merged heads: WebScene a46b62e14eb197603f7e227c1558afb9088633b0; AppScene 97702daeb9ad71341ced7226f0aa966dc77ea53c; unchanged Code OSS 645f29cc3176500b4b5762ba887cf2a7f0ffdf2c; local vscode-demo 123ad63a345dd77ceb0d75aed4c8eda244cf1288 (clean, intentionally unpushed). Open consolidations remain WebScene #76 085bba760fa571c8f08ea866dc5dd1ec27c4d376, AppScene #65 ce66ef6ceb776b3f14e129f853bfc08b5c5e608c, and vscode-demo #1; do not merge them. One-agent mode is active.

#799/#806 is merged for the 52 touch-action declarations across 27 unchanged Code OSS files. Exact visual/geometry qualification must cover contact scrolling and cancellation on tabs, editors, split views, sliders, terminal, and Chat while proving mouse rendering remains unchanged. No exact product visual, package, hardware-contact, accessibility, lifecycle, memory, or performance execution ran.

Parent epic: #227.

Problem

The integration has focused screenshot checks for individual fixes, but it does not yet have one revisioned Chromium/AppScene oracle covering every unchanged Code OSS surface. Without a shared harness, a feature can become functional while geometry, fonts, clipping, focus, or retained-scene output regresses elsewhere.

Investigation first

Before implementation:

  1. inventory every existing screenshot, geometry, DOM-state, scene-counter, and pixel-budget probe in SceneTech/vscode-demo and WebScene;
  2. record exact gaps for editor, Welcome, Explorer, Search, Source Control, Run/Debug, Extensions, Settings, Command Palette, Problems/Output/Terminal, Markdown/webviews, Chat, notifications, menus, dialogs, and multi-panel resize;
  3. define stable upstream state, viewport, DPR, fonts, theme, locale, animation policy, profile, fixture data, and capture readiness for both Chromium and AppScene;
  4. link any reproduced engine defect to its focused issue rather than fixing it in the harness.

Proposed direction

Build a data-driven acceptance manifest that drives the unchanged Code OSS server in Chromium and the same payload in AppScene. Compare semantic DOM state and named-region geometry before bounded perceptual/pixel comparison. Retain compact crops, measurements, hashes, and failure diffs; delete superseded full traces and packages.

Dependencies and boundaries

Acceptance gates

  • Every listed surface has deterministic setup, readiness, semantic assertions, named geometry, and a justified pixel budget.
  • Light/dark, 1x/2x DPR, resize, active/inactive focus, and at least one high-contrast/forced-colors state are represented where applicable.
  • Missing fonts/resources, blank regions, stale frames, clipped controls, unexpected overlays, and wrong selected/focus state fail closed.
  • Baselines name exact VS Code, AppScene, WebScene, SDK, host OS, font, and Chromium revisions.
  • Harness overhead, retained artifacts, run time, and peak disk use have explicit budgets.
  • A final unchanged Code OSS Release passes before promotion.

Proposed PR stack

  1. inventory + manifest schema + deterministic Chromium oracle;
  2. AppScene semantic/geometry capture + readiness checks;
  3. bounded pixel/diff evidence + storage budgets;
  4. full-surface release manifest.

Validate the cumulative top of each dependent group and merge focused WebScene fixes separately from the vscode-demo consolidation PR.

Activity

  1. wieslawsoltes commented on Sep 17, 2026

    @wieslawsoltes
    CollaboratorAuthor

    CSS ownership/dependency audit against #235:

    Missing cross-cutting gate to carry in the manifest: where a focused owner exposes retained-scene/resource checksums, store and compare those alongside DOM, geometry, focus/accessibility, and pixels. Report explicit pass/fail/skipped/unavailable/total denominators and exact source/browser/font/platform revisions; a missing required mark or baseline fails closed.

  2. wieslawsoltes commented on Sep 17, 2026

    @wieslawsoltes
    CollaboratorAuthor

    Wave 0 manifest foundation committed locally

    vscode-demo local commit c367693 adds the fail-closed release inventory required by this issue without changing VS Code OSS:

    • config/visual-scenarios.json declares 16 deterministic states across editor, navigation, workspace, panels, webviews, Chat, and dialogs;
    • every state names its owning AppScene/WebScene issues, capture state, acceptance state, theme/DPR/focus variants, and semantic/geometry/pixel/focus/accessibility/performance/lifecycle evidence;
    • the manifest is pinned to the exact VS Code revision in config/upstream.lock.json and rejects stale provenance;
    • scripts/visual_scenario_manifest.py rejects missing/duplicate evidence dimensions, silent skips, invalid issue ownership, missing or mismatched active contracts, undeclared group membership, invalid paths, and oversized reports;
    • the machine report exposes explicit scenario denominators (1 passing / 4 partial / 6 blocked / 5 pending / 16 total) and evidence denominators (11 gate / 101 planned / 0 not-applicable / 112 total);
    • existing editor, Command Palette, and Settings gates can now select their active contract with visual-parity.py --scenario ...; selecting a planned state such as Markdown fails instead of pretending a capture exists;
    • per-run/report/retained-run artifact budgets are versioned in the manifest.

    Validation on exact local inputs:

    • Python repository suite: 141/141 passed;
    • Node repository suite under required Node 24.18.1: 65/65 passed;
    • focused manifest + visual tests: 22/22 passed;
    • generated report: 3,539 bytes, inside its 1 MiB budget.

    The system /usr/local/bin/node is Node 16 and predictably cannot run this repository's modern Node tests; the pinned Node 24.18.1 result is the valid gate. The commit remains local/unpushed under the consolidation policy. Next #259 work is implementing deterministic readiness/capture contracts for the planned scenarios rather than loosening existing baselines.

  3. wieslawsoltes commented on Sep 17, 2026

    @wieslawsoltes
    CollaboratorAuthor

    Welcome scenario capture contract implemented locally

    vscode-demo local commit ec6f0b2 advances the #259 manifest from three to four implemented capture scenarios without modifying the pinned VS Code OSS source.

    The new code-oss-welcome-parity-v1 lane:

    • waits for the real code/didLoadExtensions workbench mark before opening the upstream Welcome editor;
    • requires three stable semantic samples with Code - OSS, Editing evolved, New File..., at least two start actions, at least one walkthrough, and the exact startup checkbox label;
    • compares named geometry for the Welcome container, header, left/right columns, start list, walkthrough list, and footer;
    • evaluates pixel drift only inside the measured Welcome container;
    • binds the capture to the existing transient-profile, exact-payload, clean AppScene/WebScene provenance, artifact-hash, and disk-budget audit;
    • marks Welcome capture as implemented while leaving acceptance pending until a fresh current-head Chromium/AppScene package run passes.

    Current manifest denominators are 1 passing / 4 partial / 6 blocked / 5 pending / 16 total and 14 gate / 98 planned / 0 not-applicable / 112 total evidence obligations.

    Validation:

    • complete Python suite: 158/158 passed;
    • complete Node suite on exact packaged Node 24.18.1: 66/66 passed;
    • focused visual/manifest/packaging Python suite: 56/56 passed;
    • Welcome-aware browser/overlay Node suite: 20/20 passed;
    • overlay applied to pinned unchanged VS Code OSS 645f29cc, full TypeScript no-emit compile passed, and the overlay reverted to a clean submodule;
    • git diff --check passed.

    The commit remains local and unpushed under the consolidation policy. The next #259 step is a fresh package after the active upstream stacks merge, followed by retained Chromium/native Welcome evidence and the remaining focus/accessibility/performance/lifecycle obligations.

  4. wieslawsoltes commented on Sep 17, 2026

    @wieslawsoltes
    CollaboratorAuthor

    Local vscode-demo commit 9721499 adds a deterministic Chromium/AppScene visual lane for the reported malformed document-tab background. It remains intentionally unpushed on integration/appscene-webscene-code-oss until the next consolidated update.

    The query-gated unchanged-Code state now:

    • closes the startup editor and creates three real dirty untitled Monaco editors;
    • requires the exact ordered labels Untitled-1, Untitled-2, Untitled-3, with the third active, all three dirty, and three stable samples;
    • records named geometry for the complete tab strip, each tab, the active tab, and surrounding workbench surfaces;
    • restricts pixel metrics to the measured editor tab strip, so the path-like SVG/background artifact cannot disappear into a whole-window tolerance;
    • adds a fail-closed code-oss-editor-tabs-parity-v1 contract and package marker.

    The visual inventory now contains 17 scenarios and 119 evidence obligations; six captures are implemented. Focused and complete validation passes: Python 164/164, exact Node 24.18.1 68/68, manifest audit, and the applied pinned VS Code TypeScript no-emit build. The VS Code submodule was reverted byte-exactly and is clean.

    Acceptance remains partial until a fresh current-head Chromium/native capture supplies semantic, geometry, and pixel evidence. Focus, accessibility, dynamic performance, and lifecycle remain owned by their existing #258/#260/#262 lanes.

  5. wieslawsoltes commented on Sep 17, 2026

    @wieslawsoltes
    CollaboratorAuthor

    #246 changes the product acceptance target based on direct Chromium inspection. The visible active-tab and Explorer artwork is generated Seti icon-font content, not an SVG background. A diagnostic post-#251/#128 capture still shows both shapes while the old whole-window contract passes at MAE 0.005242, RMSE 0.048151, and changed-pixel ratio 0.010378.

    Keep code-oss-editor-tabs-parity-v1 as the tab acceptance lane, but require the active tab icon slot as named geometry/pixel evidence. Add a separate deterministic Explorer selected-row/icon region: the current three-tab region ends at the tab strip and cannot qualify the cyan Explorer glyph. Run both only from a fresh exact current-main AppScene/WebScene package after the WebScene pseudo font-family fix and its product-neutral native/WPT gates pass. Full primitive, source-path, revision, and hash evidence is on #246.

  6. wieslawsoltes commented on Sep 17, 2026

    @wieslawsoltes
    CollaboratorAuthor

    Issue #246's underlying generated-icon defect now has local WebScene candidate 6e6d5568. Exact main fails the dedicated PUA native reftest by 21,796 pixels while Chromium passes at zero; the candidate passes native and Chromium with exact per-renderer test/reference hashes. After focused review/integration, schedule one exact-package run for code-oss-editor-tabs-parity-v1 and a separate deterministic Explorer selected-row/icon region. Keep #246 open until both product regions pass; no AppScene or VS Code stylesheet change is needed.

  7. wieslawsoltes commented on Sep 18, 2026

    @wieslawsoltes
    CollaboratorAuthor

    The generic fix for the fresh Explorer path-like artifact is merged through #418 at eb3cfe38f13dfe1243404ed87af39bf77eaf902a (child #417 of #246).

    Root cause: the pre-fix WebScene package retained Code OSS's pseudo font-size:150% as 150px instead of resolving it from the 13px originating label to 19.5px. The Explorer row's 22px clip made the oversized icon glyph look like a row-spanning path. This was not a row background/clip defect.

    The reduced browser oracle is pixel exact and the native scene gate now asserts 19.5px with the existing 4,096-icon mutation/performance/lifecycle coverage. Please use a WebScene build at/after eb3cfe38 for the next unchanged-Code-OSS Explorer and editor-tab package capture. The pinned pre-fix vscode-demo checkout was left unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    vscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integration

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions