Skip to content

modules: assert real viewer text in constrained diagram font-floor proof #2241

Closed

Description

@schlessera

Part of #2079. Found while implementing #2097; separate test-proof repair.

Context and reproduction

At ee77b5c13, packages/ui-react/tests/browser/diagrams-renderer.layout.tsx test actual constrained containers select authored layout or semantic fallback, never shrink below9 selects [aria-label="Diagram viewer"] svg. The first SVG is a viewer action icon, containing zero text elements. fontFloor loops over the selected SVG texts without requiring any, so the dedicated viewer assertion is vacuous.

Confirmed in the pinned Chromium browser harness: add an assertion that this selected SVG has zero texts, set all actual [aria-label="Diagram viewer"] svg.bk-diagram text font sizes to 1px, then retain the original fontFloor(drawing) call. All nine renderer tests still pass, including the named constrained-container test. Mutation was restored. The separate offscreen linked-target test already finds its real diagram through the node; preserve that coverage.

Scope

Repair the existing constrained-container viewer proof and audit equivalent broad first-SVG queries in diagram browser tests. No product behavior change is required by this observed test gap.

Acceptance criteria

  • Select the actual viewer svg.bk-diagram and assert a nonzero expected text population before testing its displayed font floor.
  • A mutation lowering actual viewer diagram text below 9px fails the named constrained-container test on the displayed font assertion.
  • Restore the mutation and pass the focused renderer suite in Chromium and WebKit.

Verification

Run the pinned diagrams browser projects and retain the failing/restored mutation receipts.

Contract impact

No contract or package behavior change; test-only proof correction.

Candidate verification correction (2026-10-18)

Implementation and original failing/restored mutation evidence remain in #2368. Run 39076106490 / attempt 1 passed all 15 selected jobs on checkout 4ddb50304731334a39843cb4494763f74a80fba3, tree 016597e9a95d37768b4394916a513dec994446c5, parents 498270fbdc4ef2788fdd3babb259b647d77f6c77 / b7a2100d1bf68d01fd96a927a25ae70c6df28b76. Its aggregate alone failed candidate freshness after main advanced; that workflow remains failed.

Refreshed only #2368 by merging verified main 82a64a13a08c44f2daef425d1a9df2c10840ea8e without conflicts. New head 113fb0f6ebdf25b3e7ee3016d3140d00c6231b67, synthetic merge f7fb8918849d4e4575bd2b42da9e8e52f95bd936, tree 6d1115e1ed52c89b35c30dadb083eb90ebd841d8; REST base, independently queried live main and actual fetched merge parents agreed before ready. Native containment fixture changes from #2371 do not alter the diagram caller/producer/font closure. The same three-file patch is preserved; no product or guard changes. Required preflight passed 956 fast tests / 6,328 assertions plus 170 import-graph tests / 1,512 assertions.

Run 39077819979 / attempt 1 completed with all 15 selected execution jobs successful, but aggregate 117532265496 failed actual candidate freshness after main advanced. The workflow remains failed. Planning job 117528538186 recorded the exact requested base/head, checkout/tree/parents and empty retention ledger; those identities remain historical.

Second stale aggregate and scoped refresh (2026-10-18)

Run 39077819979 / attempt 1 passed all 15 selected execution jobs on synthetic checkout f7fb8918849d4e4575bd2b42da9e8e52f95bd936, tree 6d1115e1ed52c89b35c30dadb083eb90ebd841d8, parents 82a64a13a08c44f2daef425d1a9df2c10840ea8e / 113fb0f6ebdf25b3e7ee3016d3140d00c6231b67. Aggregate job 117532265496 alone failed the actual validateCandidate freshness assertion after main advanced. This workflow remains failed, alongside run 39076106490 / aggregate 117527007992; neither proves the refreshed combined tree. The previous pending description is superseded by these completed results.

Read the complete new main commit 63fde3c8fe76e754aa4524f95b23f9786f4447fe (#2379): only scripts/browser-shard-costs.json changes. It refreshes measured timing provenance and 309 weights (306 old entries, 365 new entries); existing layout weights are unchanged. Diagram source, caller/producer/font closure, native hashes, guards, dependencies and workflows are unchanged. The cost table is nevertheless an explicit immutable harness input to both reusable domains and drives their partitions, so existing input-equivalence policy requires fresh browser/layout proof. No additional local renderer mutation/runtime repeat is justified by this weight-only base change; original behavioral and binding receipts above retain their identities.

Retention was inspected against the actual findRetained / validateSource policy and immutable source logs. Both full workflows are excluded because the source workflow conclusion must be success. The source lookup before this refresh returned two successful workflows on this branch (39077488104 and 39075445660) contain cheap gates and skipped browser/layout jobs, so they cannot supply complete two-shard execution receipts. The four successful browser/layout source jobs in run 39077819979 independently confirm their old checkout and resource receipts, but cannot override the whole-workflow-success or changed-harness requirements. No manual retention or proof waiver is applied; native/Git-dependent and unknown domains also stay fresh.

Coordination #2111 was inspected: its controller remains in unmerged draft #2197, and no reservation controller exists on this main. No reservation, lease or shared coordination authority is claimed or acquired. Existing exact-candidate requirements remain intact.

Kept #2368 draft while merging the verified live base without conflicts. New head 05c2893d921daf1bef93ba39c9bf1cf78197b23d, tree 31459df336a94f582ff11692d0d04bd1690e99f6; its parents are old head 113fb0f6ebdf25b3e7ee3016d3140d00c6231b67 and base 63fde3c8fe76e754aa4524f95b23f9786f4447fe. The complete three-file issue patch is byte-identical before/after integration. No product, CI or guard edit is added by this refresh.

Required bun run check:pr --base origin/main passed on the new head/base: lint/leakage/metadata, 956 fast tests / 6,328 assertions and 170 import-graph tests / 1,512 assertions. No separate repeat of unchanged behavioral mutations or renderer runtime proof is claimed.

Before ready, REST base.sha and independently queried live main both equal 63fde3c8fe76e754aa4524f95b23f9786f4447fe; REST head equals 05c2893d921daf1bef93ba39c9bf1cf78197b23d. Fetched synthetic merge 29771589a228b95b07f14a480b00a25ab509de3c and immutable GitHub commit API agree on those exact base/head parents and tree 31459df336a94f582ff11692d0d04bd1690e99f6.

New ready-candidate confirmation 39079718669 / attempt 1 was requested by the explicit draft-to-ready transition. Its immutable run metadata records the verified new head and base. Planning job 117534015264 is in progress at handoff; its actual checkout, requested BASE_SHA, cadence and emitted retention ledger remain to be inspected by the parent. Source-policy assessment admits no retained domains; an empty ledger is expected, not yet claimed as an observed output. Draft runs 39079354076 and 39079492858 are cheap feedback, not full candidate proof. Complete hosted selected proof and its independent freshness aggregate remain required; no current hosted-green or merge claim is made. Both issue and PR retain milestone 0.44.0. Parent campaign retains watches and final merge; no acceptance scope is deferred.

Activity

  1. added this to the 0.44.0 milestone on Oct 16, 2026
  2. added
    type: testCoverage, harness or proof work with no behaviour change.
    area: modulesFirst-party content modules and the module seam.
    priority: p2Wanted, not scheduled. Pulled in when a milestone has room.
    agent-readyContext and acceptance criteria are complete enough for an agent to take this unattended.
    on Oct 16, 2026
  3. removed this from the 0.44.0 milestone on Oct 16, 2026
  4. added
    priority: p1Scheduled into the current or next milestone.
    and removed
    priority: p2Wanted, not scheduled. Pulled in when a milestone has room.
    on Oct 17, 2026
  5. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    2026-10-17 priority reconciliation: raised to priority: p1 as a required open child of P1 epic brain-kit#2079. This applies the maintainer's blocker-priority ruling recorded in AGENTS.md and the request to align P1 epic subissues. Required unfinished children block their epic's outcome. Existing ownership, scope, readiness, dependencies and release commitments remain unchanged.

  6. self-assigned this
    on Oct 17, 2026
  7. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Claiming #2241 for the scoped real-viewer font-floor proof repair. Claim token: 2241-v5n8-20261017. Intended branch: test/2241-viewer-font-proof-v5n8. I will retain the linked-target coverage, audit equivalent selectors, and run the failing/restored actual-text mutation in pinned Chromium and WebKit. Geometry changes remain outside this task.

  8. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Resuming the existing campaign claim 2241-v5n8-20261017 on test/2241-viewer-font-proof-v5n8. The prior implementation worker was cancelled; custody of its preserved work and claim has been explicitly transferred to this replacement worker. Fresh issue comments and PR search show no later competing ownership. I will restore the unfinished text-size mutation, retain the proof repair, and complete the named failing/restored Chromium and WebKit checks.

  9. added this to the 0.44.0 milestone on Oct 17, 2026
  10. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Implementation and local proof are preserved in #2368, head f881869c43a98bdeef9fa1a27aad49d56d86a688 on base 0d780605fe1ea9a281cce947b1f0074f3f3e7acc. Both actual viewer-text mutations failed their named displayed-font assertions in Chromium and WebKit; after restoration all 52 renderer/axis cases passed. Required local preflight passed, including54 affected tests. The axis selector audit is included; offscreen linked-target coverage is preserved. Both issue and PR have milestone0.44.0.

    Hosted candidate CI39074059629/attempt1 is in progress, not green. The synthetic candidate inspected before handoff is 81d0a75e795b44a522c18d4f52cf61711272fa32, with parents matching the recorded base/head and tree 9e136b8f079978d14909f6740e8a11486ef69fd1; actual selected-job checkout proof remains to be inspected.

    This implementation subagent cannot register asynchronous PR monitoring: the orchestration service requires the parent thread to own the watch and instructed this worker to report back. Returning custody to the parent campaign for monitoring and completion; releasing this worker’s uncontested assignment. This is an orchestration handoff, not a completed issue or a cancelled implementation. Scope/readiness labels remain valid.

    Remaining action: the parent watches #2368, diagnoses any current-head failure, verifies every selected hosted job and candidate identities against live main, then performs matching-head squash and verifies actual main ancestry/tree, issue closure and release milestones. Reassess later base changes, including the separately owned scene-bounds and application work. No merge or hosted-green claim is made.

  11. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Resuming #2241 and #2368 under explicit campaign custody transfer. Claim token 2241-binding-r1-20261018; branch test/2241-viewer-font-proof-v5n8. Fresh issue assignment/comments and PR review show no competing ownership. This correction addresses the actual hosted reviewed-document pin refusal caused by the scoped renderer/axis proof edits, retaining exact-source drift refusal and all replay/native guards. Hosted confirmation will be requested again after correction and current-base assessment; the earlier failed run remains failed.

  12. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Scoped hosted-failure correction is pushed in #2368. Correction commit 61c2299dc129c3fbce2c97393a14af85ce648435 re-audits only the changed renderer/axis caller pins; no replay/native guard or product behavior changed. The original four binding failures reproduced locally (9 pass / 4 fail), then the correction passed 13 binding tests with meaningful sink/drift/extra-caller refusal controls. All five caller suites passed 166 pinned Chromium/WebKit cases. Required refreshed preflight passed 956 fast tests / 6,328 assertions and 170 import-graph tests / 1,512 assertions. Original actual 1px mutation receipts remain attributed in the PR.

    Current head b7a2100d1bf68d01fd96a927a25ae70c6df28b76 incorporates main 498270fbdc4ef2788fdd3babb259b647d77f6c77. That base advance changes native maintenance/server code, leaving diagram/browser/font/binding inputs unchanged. Before ready, REST base and independently queried live main agreed; synthetic merge 4ddb50304731334a39843cb4494763f74a80fba3 had those exact base/head parents and tree 016597e9a95d37768b4394916a513dec994446c5.

    Fresh ready-candidate CI run 39076106490 / attempt 1 is pending, not green. Run39074059629 remains failed; new-head synchronize run39076090553 is fast feedback. Both issue and PR retain milestone0.44.0. Returning custody to the parent campaign for its existing watch and eventual merge; releasing uncontested claim 2241-binding-r1-20261018. The issue remains open and its acceptance scope/readiness is unchanged.

    Remaining: inspect the fresh request metadata and every selected job’s actual checkout/parents/tree against live main; diagnose any new failure, qualify all selected proof, then matching-head squash and verify actual main ancestry/tree, issue closure and milestones. The separately owned #2369 geometry head changes six capture-pinned producers and raster flatten.ts; later integration needs its own exact-source audit and runtime proof. No changes were made to that branch. No hosted-green or merge claim is made.

  13. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Resuming only #2241 / #2368 for candidate base freshness under explicit campaign custody transfer. Claim token 2241-freshness-r2-20261018-a33d83e0; branch test/2241-viewer-font-proof-v5n8. Earlier claim was released and fresh issue comments, assignment and PR state show no competing worker. The previous selected execution jobs remain attributed to their actual checkout; the stale aggregate requires a verified base refresh and a new full ready-candidate request. Parent campaign retains watch and final merge custody.

  14. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Candidate freshness correction (2026-10-18)

    Run 39076106490 / attempt 1 completed with all 15 selected jobs successful: changeset, pack, verify, units 1–4, browsers 1–2, layouts 1–2, captures, endurance, runtime and runtime_host. Independently read every selected job checkout log and matching check-run receipt. All checked out 4ddb50304731334a39843cb4494763f74a80fba3, tree 016597e9a95d37768b4394916a513dec994446c5, parents 498270fbdc4ef2788fdd3babb259b647d77f6c77 / b7a2100d1bf68d01fd96a927a25ae70c6df28b76; immutable GitHub and fetched Git identities agree. Aggregate job 117527007992 alone failed: Candidate became stale: the live PR head, readiness or base changed; request confirmation again. This workflow remains failed; its successful executions do not prove a newer combined tree.

    Live main advanced to 82a64a13a08c44f2daef425d1a9df2c10840ea8e through #2371. Read the complete five-file diff: it moves native containment/egress fixture listeners below worker ephemeral ports and asserts that premise. No diagram source, browser caller, binding producer, font, dependency or workflow changed. Native/Git-dependent and unknown proof remains fresh. The old failed workflow is ineligible for browser/layout retention under the existing whole-workflow-success validator; no source receipts are relabelled or manually admitted.

    Converted this PR to draft and merged the verified live main without conflicts. New head 113fb0f6ebdf25b3e7ee3016d3140d00c6231b67, tree 6d1115e1ed52c89b35c30dadb083eb90ebd841d8; merge commit parents are old head b7a2100d1bf68d01fd96a927a25ae70c6df28b76 and live main 82a64a13a08c44f2daef425d1a9df2c10840ea8e. The PR retains exactly the original two test files and reviewed two-caller binding correction. No additional producer pins, native qualification or product behavior were changed.

    Fresh bun run check:pr --base origin/main passed on that exact head/base: lint/leakage/metadata, 956 fast tests / 6,328 assertions, and 170 import-graph tests / 1,512 assertions. Original 1px behavioral mutations, restored 52-case proof, 13 binding controls and 166-case caller runtime proof remain attributed above; they are not renamed as executions on this new candidate.

    Before marking ready, independently queried live main and REST base.sha both equalled 82a64a13a08c44f2daef425d1a9df2c10840ea8e; REST head equalled 113fb0f6ebdf25b3e7ee3016d3140d00c6231b67. Fetched synthetic merge f7fb8918849d4e4575bd2b42da9e8e52f95bd936 and the immutable GitHub commit API agreed on exactly those base/head parents and tree 6d1115e1ed52c89b35c30dadb083eb90ebd841d8.

    Fresh full ready-candidate confirmation is requested in CI run 39077819979 / attempt 1. Its immutable run metadata names the verified new head and base. The push/draft run 39077804747 was cancelled by this confirmation request; it is not candidate proof. Selected execution and the final freshness aggregate remain pending. Parent campaign owns monitoring and final merge; this correction requests proof and does not claim hosted green.

    Planning job 117528538186 passed. Its actual checkout log confirms f7fb8918849d4e4575bd2b42da9e8e52f95bd936, requested BASE_SHA=82a64a13a08c44f2daef425d1a9df2c10840ea8e, HEAD_SHA=113fb0f6ebdf25b3e7ee3016d3140d00c6231b67, PR_DRAFT=false and cadence confirmation. The emitted retention ledger records the same exact checkout/tree/parents, retained: {}, and 14.67 seconds lookup. Complete selected proof is executing fresh; final selected-job checkout inspection and the independent aggregate remain the parent campaign’s next action.

    Returning watch and final merge custody to the parent campaign; releasing uncontested claim 2241-freshness-r2-20261018-a33d83e0. The issue remains open and its scope/readiness and milestone 0.44.0 are unchanged. Parent must inspect every selected execution checkout and final aggregate against the live base, diagnose any failure, then perform matching-head merge and verify actual squash parent/tree, automatic main proof, issue closure and milestones. No hosted-green or merge claim is made.

  15. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Resuming only #2241 / #2368 under explicit campaign custody transfer. Claim token 2241-freshness-r3-20261018; branch test/2241-viewer-font-proof-v5n8. Fresh assignment, comments and PR checks show the previous claim released and no competing owner. This continuation assesses the new base and supported retention, refreshes the exact candidate and requests confirmation. Parent campaign retains watches and final merge.

  16. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Second stale aggregate and scoped refresh (2026-10-18)

    Run 39077819979 / attempt 1 passed all 15 selected execution jobs on synthetic checkout f7fb8918849d4e4575bd2b42da9e8e52f95bd936, tree 6d1115e1ed52c89b35c30dadb083eb90ebd841d8, parents 82a64a13a08c44f2daef425d1a9df2c10840ea8e / 113fb0f6ebdf25b3e7ee3016d3140d00c6231b67. Aggregate job 117532265496 alone failed the actual validateCandidate freshness assertion after main advanced. This workflow remains failed, alongside run 39076106490 / aggregate 117527007992; neither proves the refreshed combined tree. The previous pending description is superseded by these completed results.

    Read the complete new main commit 63fde3c8fe76e754aa4524f95b23f9786f4447fe (#2379): only scripts/browser-shard-costs.json changes. It refreshes measured timing provenance and 309 weights (306 old entries, 365 new entries); existing layout weights are unchanged. Diagram source, caller/producer/font closure, native hashes, guards, dependencies and workflows are unchanged. The cost table is nevertheless an explicit immutable harness input to both reusable domains and drives their partitions, so existing input-equivalence policy requires fresh browser/layout proof. No additional local renderer mutation/runtime repeat is justified by this weight-only base change; original behavioral and binding receipts above retain their identities.

    Retention was inspected against the actual findRetained / validateSource policy and immutable source logs. Both full workflows are excluded because the source workflow conclusion must be success. The source lookup before this refresh returned two successful workflows on this branch (39077488104 and 39075445660) contain cheap gates and skipped browser/layout jobs, so they cannot supply complete two-shard execution receipts. The four successful browser/layout source jobs in run 39077819979 independently confirm their old checkout and resource receipts, but cannot override the whole-workflow-success or changed-harness requirements. No manual retention or proof waiver is applied; native/Git-dependent and unknown domains also stay fresh.

    Coordination #2111 was inspected: its controller remains in unmerged draft #2197, and no reservation controller exists on this main. No reservation, lease or shared coordination authority is claimed or acquired. Existing exact-candidate requirements remain intact.

    Kept #2368 draft while merging the verified live base without conflicts. New head 05c2893d921daf1bef93ba39c9bf1cf78197b23d, tree 31459df336a94f582ff11692d0d04bd1690e99f6; its parents are old head 113fb0f6ebdf25b3e7ee3016d3140d00c6231b67 and base 63fde3c8fe76e754aa4524f95b23f9786f4447fe. The complete three-file issue patch is byte-identical before/after integration. No product, CI or guard edit is added by this refresh.

    Required preflight passed on this exact refreshed head/base: 956 fast tests / 6,328 assertions, 170 affected import-graph tests / 1,512 assertions, and lint/leakage/metadata gates. The original 1px mutation, restored 52-case runtime, 13 binding controls and 166-case caller proofs retain their original identities.

    Before ready, REST base and independently queried live main both matched 63fde3c8fe76e754aa4524f95b23f9786f4447fe. Local fetched and immutable API synthetic merge 29771589a228b95b07f14a480b00a25ab509de3c agree on exact base/head parents and tree 31459df336a94f582ff11692d0d04bd1690e99f6.

    New ready-candidate confirmation 39079718669 / attempt 1 was requested by the explicit draft-to-ready transition. Its immutable run metadata records the verified new head and base. Planning job 117534015264 is in progress at handoff; its actual checkout, requested BASE_SHA, cadence and emitted retention ledger remain to be inspected by the parent. Source-policy assessment admits no retained domains; an empty ledger is expected, not yet claimed as an observed output. Draft runs 39079354076 and 39079492858 are cheap feedback, not full candidate proof.

    Returning watch and final merge custody to the parent campaign; releasing uncontested continuation claim 2241-freshness-r3-20261018. Both issue and PR retain milestone 0.44.0. The issue remains open, with scope and readiness unchanged. Parent must inspect the planning job's requested base/cadence/actual checkout/ledger, every selected execution job and the final aggregate against live main, then perform matching-head merge and verify actual squash parent/tree, automatic main proof, issue closure and milestones. No hosted-green or merge claim is made. No other worker's branch or ownership was changed.

  17. removed their assignment
    on Oct 17, 2026
  18. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Delivered by PR #2368, squash b7a0885181445125d576e02f61c562d704c81099, verified on remote main. The actual squash parent is 63fde3c8fe76e754aa4524f95b23f9786f4447fe; its tree 31459df336a94f582ff11692d0d04bd1690e99f6 exactly matches qualified checkout 29771589a228b95b07f14a480b00a25ab509de3c. Ready CI 39079718669, attempt 1, passed all 15 selected execution jobs and aggregate; each job checkout was inspected. Original intended font-floor mutations and restored Chromium/WebKit controls remain recorded in the PR. Issue closure and both 0.44.0 milestones were read back after merge. Automatic main-push CI 39081078557 has started and remains separate pending proof. No push to the merged branch follows.

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

    agent-readyContext and acceptance criteria are complete enough for an agent to take this unattended.area: modulesFirst-party content modules and the module seam.priority: p1Scheduled into the current or next milestone.type: testCoverage, harness or proof work with no behaviour change.

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions