Skip to content

Qualify the Markdown local and external image resource matrix #388

Description

@wieslawsoltes

Parent: #266

Remaining proven acceptance gap

Exact main d4dc4fc10d98edd2a8a45a2901692c614d084652 now passes the unchanged Code OSS v6 streamed script, stylesheet, SVG/CSS image, range, validator, admission, localhost, and cache replacement gates. The #266 acceptance matrix still lacks direct unchanged-worker/native evidence for the remaining Markdown image cases: an admitted binary PNG, an admitted SVG, an external HTTPS image that falls through without acquiring local-file authority, a missing local image (404), and an out-of-root local image (401).

Chrome 153 passes the pinned Markdown broker fixture. Running that complete fixture in the native document runner reaches history.replaceState first and is blocked by the same-window navigation scope owned by #267, before any resource request. This child therefore qualifies only the resource plane through the existing exact-worker companion gate and Chrome fixture; it does not alter or duplicate navigation.

Focused scope

  • Exercise local PNG and SVG byte streams through unchanged Code v6 and verify intrinsic dimensions/load completion.
  • Verify external HTTPS image fallback uses the ordinary host loader and cannot be mistaken for an admitted local resource.
  • Verify missing and out-of-root local images report error, open no response body, and never fall through to ambient host loading.
  • Preserve existing CSP/origin, localResourceRoots, status/range/validator, 32-body/64-MiB, timeout/cancellation, cache, filesystem, and network authority.
  • Add browser and native correctness plus latency, heap/RSS, and 100-cycle teardown evidence using the existing resource harnesses.

Owned paths and collisions

Owned paths are the unchanged Markdown resource fixture/Chrome oracle and native_v8_runtime_stream_fetch_tests.inc with its existing focused CTest. Runtime changes are allowed only if this exact matrix proves a generic resource defect.

This child excludes #267 navigation, #268 interaction, #382 File System/IndexedDB, #386 CSSOM layer work, #76 consolidation, AppScene, CSS implementation, and vscode-demo.

Acceptance

  • Chrome and native agree on load/error outcomes and image dimensions for all five cases.
  • Denied/missing local images stream zero bytes and never bypass the unchanged worker broker; the external image reaches only the ordinary host path.
  • 100 mixed image cycles stay <=100 ms p95, <=8 MiB V8 heap growth, <=64 MiB retained RSS, and leave no live worker fetch/body/image tasks after unregister and engine destruction.

Refs #264
Refs #227

Activity

  1. wieslawsoltes commented on Sep 18, 2026

    @wieslawsoltes
    CollaboratorAuthor

    Owned from exact main d4dc4fc10d98edd2a8a45a2901692c614d084652 on feature/webview-resource-acceptance-266.

    The full pinned Markdown fixture cannot yet run natively because its first history.replaceState same-window navigation is rejected before resources; #267 owns that dependency. #388 stays below navigation and owns only the remaining unchanged-worker image evidence: admitted PNG/SVG, external HTTPS fallback, missing 404, and out-of-root 401, including zero-byte/fail-closed checks and mixed 100-cycle lifetime bounds.

    Owned paths are tests/WebPlatformSubset/contracts/fixtures/vscode-markdown-preview-645f29c/index.html, the Chrome contract server only if an external image endpoint is required, and experiments/WebScene.NativeEngine.Probe/tests/native_v8_runtime_stream_fetch_tests.inc. Runtime files will change only if the exact matrix proves a generic defect.

    Collision audit: #267/#268 own navigation/interaction; #382 owns File System/IndexedDB; #386 owns CSSOM layer paths; #76 owns docs. This slice excludes all of them, AppScene, CSS implementation, and vscode-demo.

  2. wieslawsoltes commented on Sep 18, 2026

    @wieslawsoltes
    CollaboratorAuthor

    Merged via #391 as 1f61af570cb73f27991c2881c129854b29e3a9b7.

    This test-only qualification closes the remaining admitted image resource matrix without changing runtime authority:

    • real binary PNG and SVG decode through the native Markdown resource broker;
    • external HTTPS images stay on the ordinary host loader and never reach the broker;
    • missing admitted resources fail with 404;
    • out-of-root resources fail closed with 401 and deliver no bytes;
    • 100 alternating PNG/SVG element cycles retain existing teardown, heap, and RSS bounds.

    Exact-head evidence on 687d437e1958311edb537bde829dfbd078d8affc:

    • Chrome 153 pinned Markdown fixture: 8/8 pass; 100 CSS image cycles p95 19.1 ms.
    • Native exact worker: 100 image cycles p95 0.406 ms; admitted 64 KiB delivery p95 0.995 ms; heap flat at 1,350,680 bytes; RSS and teardown bounds pass.
    • Focused CTest webscene_native_service_worker_markdown_resources passes with resource/security/performance/lifecycle labels.
    • Linux X64, macOS ARM64, NativeAOT Avalonia 11/12, and portable V8 exact-head checks pass.

    Native-document CI was not selected because the change touched only web-platform/native probe tests. NuGet packaging was intentionally canceled. Postmerge CI and NuGet tails were canceled after the directly affected exact-head gates passed.

    No #267/#268 navigation, FileSystem, CSS, AppScene, docs, consolidation #76, or vscode-demo paths changed.

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