Skip to content

QA run · items unblocked by the R-1/R-2 fixes · 4/4 now pass · 19f98fa1 · 2026-08-20 #10560

Description

@os-elon

Follow-on to #10454. Once the two metadata read-door defects were confirmed fixed on 17.1.0, the clauses they had been blocking became testable for the first time. This round drives exactly those. All four items now pass; no fail.

Companions: #10224 · #10225 · #10233 · #10245 · #10248 · #10257 · #10342 · #10454. Anchor: #10236.

Trigger

Re-test trigger #2 — a fix landed. #10454 confirmed R-1 (runtime-authored dashboard served by no read door) and R-2 (same on view) are fixed. Those two defects carried four downstream verdicts in the 2026-08-18 wave that were never about the items themselves:

  • dashboards.chart-type-matrix c0/c4/c7 — blocked(product-bug → R-1)
  • dashboards.strict-widget-rejects-stray-keys c5 — fail, via R-1
  • dashboards.global-filters-rescope c6 — fail, via R-1's overlay variant
  • studio-authoring.view-authoring-live c2/c4 — blocked(dependency) on its own failed c3, which was R-2

Environment

framework 19f98fa1 (17.1.0) · objectui pin + console stamp 9a3daf8d37ad, check:console-sha ✓ · showcase on 3456, fresh file DB · 2026-08-20 21:16–21:45 UTC. Browser via executablePath=/opt/pw-browsers/chromium. Execution mode: SEQUENTIAL, declared.

Results

itemrevprior (e4e5c6e3)now
dashboards.chart-type-matrix3PARTIAL — 16/20 variantspass — 20/20
dashboards.strict-widget-rejects-stray-keys2FAIL (c5)pass
dashboards.global-filters-rescope2FAIL (c6)pass
studio-authoring.view-authoring-live1FAIL (c3)pass

chart-type-matrix — the matrix closes at 20/20

The four variants that were unreachable (kpi / gauge / solid-gauge / bullet) need a scratch dashboard, which R-1 made unrenderable. Re-authored as qa_single_value_gallery:

PUT /api/v1/meta/dashboard/qa_single_value_gallery → 200 {success:true, seq:1, state:"active"}
GET by-name → 200, item present, widget types = [kpi, gauge, solid-gauge, bullet]
GET /api/v1/meta/dashboard → 200, list includes it
browser /_console/apps/com.example.showcase/dashboard/qa_single_value_gallery
→ no "Dashboard Not Found", 0 pageerror, all four widget titles present

Screenshot oracle consulted, not just the DOM: all four tiles render a value of 10, and showcase_task holds exactly 10 rows — the displayed value is server truth, not a placeholder.

Worth recording so the next runner does not read it as a defect: the four tiles are visually identical (plain numeric cards, no gauge arc or bullet track). The clause calls them "four single-value synonyms", so one shared renderer is what the wording describes.

c7 (compareTo): first attempt answered 422 naming the schema — compareTo.kind accepts only previousPeriod | previousYear, and I had sent {period:'previous'}. My payload, not a defect. With the prescribed shape: 200, read back as {"kind":"previousPeriod"}, list includes it, and the dashboard renders with 0 pageerror.

strict-widget-rejects-stray-keys — c5

Prior: the corrected widget published {success:true, seq:3} and then rendered "Dashboard Not Found". Now:

PUT qa_stray_key_probe (dataset + dimensions:[status] + values:[task_count]) → 200 seq:3
GET by-name → 200, item present, widgets = 1
browser → no "Dashboard Not Found", 0 pageerror, title "Tasks by Status" present,
5 .recharts-rectangle marks

5 marks = 5 distinct statuses, matching the wave's own ground truth — so the widget did not merely mount, it bound to the data.

Non-regression control on the same item: re-sent a widget carrying the pre-ADR-0021 inline analytics keys (object + categoryField + valueField + aggregate) → 422 invalid_metadata, still refused. The read-door fix did not loosen the authoring gate that c0–c4 pin.

global-filters-rescope — c6

The overlay half was verified in #10454: re-PUT of the shipped showcase_revenue_pulse with kpi_new_accounts.filterBindings.dateRangecreated_at and kpi_invoices.filterBindings{region:false} now reads back as authored (prior: 200 receipt, re-read still returned the code values). c0–c5 and c7 passed in the prior wave and were not re-driven — no trigger.

Scope honesty: the clause says "Studio inspector authors filterBindings". This round proved the persistence and read-back through the metadata door, not the inspector UI path. The mechanism the clause depends on is fixed; the console-driven half is not re-verified here.

view-authoring-live — c2 and c4 unblocked

Full draft → publish → edit → re-publish cycle, all through the consumer door:

PUT /meta/view/showcase_task.qa_live_<id>?mode=draft → 200 {state:"draft"}
GET by-name while drafted → 404 (c1: no draft leakage, still holds)
publish (PUT without ?mode=draft) → 200
GET by-name → 200, columns = [title, status] (c2)
edit + re-publish (label V2, +priority column) → 200
GET by-name → 200, label "QA Live V2",
columns = [title, status, priority] (c4)

One item deliberately NOT re-run

platform-core.builtin-apps-nav-render (P0) was this round's originally planned target. After reading #9453 I dropped it, and the reason is worth recording rather than leaving as a silent gap:

That wave walked Setup 43/43 and Account 7/7 destinations — 50/50 ok, screenshot-first then DOM, zero pageerror. Its c0/c1/c2 are blocked(fixture) for one reason only: Studio is not installed on the showcase. rev 2 still names three built-in apps, so the ceiling on stock fixtures is unchanged, and c3–c6 already passed there (I independently reproduced c3 in #10257). Re-running it would consume a browser round to reproduce the same partial. It needs a fixture decision — install Studio, or reword the item for a two-app showcase — not another run. That decision is already on #10236.

Gaps for the anchor

Parked-on: #10236 · global-filters-rescope c6 — mechanism verified via the metadata door;
the Studio-inspector UI path remains unverified
Parked-on: #10236 · chart-type-matrix — record in the item that the four single-value
synonyms share one renderer, so identical tiles are expected

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions