Skip to content

Avoid hidden item rendering during overview zoom - #236

Merged
mvalancy merged 3 commits into
devfrom
fix/overview-render-budget-20261029
Oct 29, 2026
Merged

mvalancy merged 3 commits into
devfrom
fix/overview-render-budget-20261029

Conversation

@mvalancy

@mvalancy mvalancy commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

The actual dev 2,000-item / 5,000-edge journey exceeded the five-second overview zoom guard (5,119.1 ms) in run 40812241527. Zoom completion rebuilt original item graphics and routes while overview hid those groups. This change coalesces terminal presentation work, skips hidden source culling/opacity/routes, and refreshes current cards and relationships before paint when automatic or manual Items returns.

Closes #235. Follows #231 and #193; placement work #233/#234 remains separate.

Source simulation, camera and canonical selection ownership remain unchanged. The five-second zoom, 45-second load, snapshot, no-write and error guards remain unchanged. An explicit Items return invalidates cached presentation so hidden updates cannot leave stale cards. Detached frames are canceled and stale simulation renderers are rejected.

Validation at cc7bcb9e1fe4aff660004fcbe0472f14d6d744d2:

  • 16 focused serial unit/component tests passed in 4.63 s; web types passed; scoped lint has zero errors and 302 existing-style warnings.
  • Negative controls for unconditional hidden rendering and omitted Items refresh each fail two tests; corrected source passes. The mode-selector control includes the actual SemanticGraphOverview component.
  • Existing desktop/phone 301-item and 2k/5k journeys now assert real SVG refresh and presentation work counts. No cases or timing guards were removed or relaxed. Discovery finds all three existing cases; no local browser was run.
  • The review-found arrow-order defect is corrected: current routes are established before opacity. Existing 301-item cases record/assert paint after a hidden priority change and manual Items return.
  • Final CI 40815851023 and Comprehensive 40815851019 passed. Author artifact audit: 13 strict reports / 117 passing cases / 140 valid attachments, unchanged clean exact-source composition. Final independent source and artifact review is clear for this exact head. The corrected review thread is resolved.
  • Real 2k/5k load: 24.291 s. Browser zooms: 4.244 / 4.137 / 3.802 s, with zero hidden terminal item passes and a fresh Items return. Final snapshot, no-write and error guards passed. These are measurements from this run, not a controlled cross-run benchmark.
  • Actual desktop/phone arrow PNGs and current geometry pass. Dense local placement remains Organize graphs around their topology with readable card and wire clearances #233/LOD-WIRE-2: carry clean ports and buses into detailed item wiring #220 scope.

Original failure and resume commands are retained in .agents/inbox/2026-10-29-hidden-items-must-not-delay-overview.md and issue #235. Keep #231 open until actual post-integration browser acceptance succeeds.

@github-actions

Copy link
Copy Markdown

🧪 Comprehensive Test Suite

  • Unit suites (Node 22.18.0 & 24.x) — core, web, server, mcp-server: ✅ passed
  • Installer & deploy config: ✅ passed

Full-stack smoke gate runs in the CI workflow.

@github-actions

Copy link
Copy Markdown

🧪 Comprehensive Test Suite

  • Unit suites (Node 22.18.0 & 24.x) — core, web, server, mcp-server: ✅ passed
  • Installer & deploy config: ✅ passed

Full-stack smoke gate runs in the CI workflow.

@mvalancy mvalancy left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent review of 968e95697514e005739a8d741239cf20dcf6e2d8 against dev 17acc25dc98978c64f87a5b0d6fb36b1833cdfa7: one verified blocking return-visibility finding is posted inline. Current Items restoration applies opacity before route/priority visibility, which can leave a newly revealed arrow fully transparent. My scratch D3 control reproduces opacity0 with the current callback order and opacity1 when routing precedes opacity.

I read issue #235, the complete changed source/tests and retained failure lesson. Independently reran all16 focused hook/component/bus tests (4.83s, one worker) and web type checking successfully. The scheduler’s coalescing, cancellation, current-simulation check and before-paint ownership handoff are covered by those small controls; source simulation/camera ownership is not replaced by this change. Existing initial low-zoom source truncation is a known base issue handled in the separate #234 composition, not a new regression attributed here.

The new 301 and 2k assertions retain the existing timing/data guards and add presentation evidence, but their current path/text existence checks alone do not demonstrate arrow visibility. No local browser or heavy matrix was run. The actual performance improvement and complete2k snapshot/no-write/error acceptance remain pending the hosted final-source artifacts; green unit tests or a completed early CI step cannot establish that. Please correct the ordering and obtain fresh exact-source browser evidence before merge consideration.

@github-actions

Copy link
Copy Markdown

🧪 Comprehensive Test Suite

  • Unit suites (Node 22.18.0 & 24.x) — core, web, server, mcp-server: ✅ passed
  • Installer & deploy config: ✅ passed

Full-stack smoke gate runs in the CI workflow.

@mvalancy mvalancy left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent correction/provenance checkpoint for cc7bcb9e1fe4aff660004fcbe0472f14d6d744d2.

The blocking route-before-opacity source finding is corrected, independently reproduced from exact Git source and verified in-thread. The three-file correction changes the source ordering, adds painted-arrow evidence to the existing desktop/phone journey, and records the retained negative; it does not relax timing limits or add substitute cases. No further source blocker found in this delta. Prior independent16 focused controls and web types passed; their hook/component source is unchanged by this correction.

I independently checked the available final-source raw runtime contracts, scanner files, build logs and composition metadata. Synthetic 18c558ab782622aa434ca13806b939132cfd674b has exact parents dev17acc25+cc7bcb9 and the source-equal tree b6bf17add278fb1f49f1bf837e868df81ff9525c. All three immutable image IDs match their build logs, initial/replacement contracts and scans. Each has392 installed packages and376 scanned Node entries; secret/API/CAPTCHA/compiled-MCP/independent-Neo4j, native SQLite and replacement recovery contracts pass. API/generic scans have0 findings. Self-host retains162 OS advisories (60LOW/58MEDIUM/43HIGH/1UNKNOWN), with no CRITICAL or fixed HIGH; database timestamp2026-10-29T01:22:22.544155871Z. Same-image replacement is not version-upgrade proof.

Current Node22/24 logs show Core41, server110+26 existing optional skips, MCP211 and web481 passing. Harness205, routing10 and real-Neo4j9 pass; four type checks pass, lint has0errors with existing warning counts4/310/31/785, and production audit reports0 vulnerabilities. Available artifacts are from run40815851023, not obsolete968 evidence.

Final acceptance remains pending: the main browser workflow is still running (currently new-user), and its full strict archive/actual2k timings/arrow PNGs have not yet been audited. A passed2k step alone is not complete artifact acceptance. No local browser, source edits, approval or merge performed.

@mvalancy

Copy link
Copy Markdown
Member Author

Author final-artifact audit for cc7bcb9e1fe4aff660004fcbe0472f14d6d744d2:

CI 40815851023 and Comprehensive 40815851019 passed. The complete strict archive contains 13 reports, 117 passing cases, zero failed/warned/skipped cases, and 140 valid file-backed attachments. All strict reports ran from unchanged clean synthetic 18c558ab782622aa434ca13806b939132cfd674b, fingerprint 9f724b0f59098e65ea4ca500470ddd2e96c0b33237de3648acbf45bc022cebc4; its exact parents are dev17acc25 + cc7bcb9 and tree b6bf17add278fb1f49f1bf837e868df81ff9525c equals source.

The real 2,000-item / 5,000-relationship case completed in 193.913 s (324.592 s including fixture/setup/cleanup). Load was 24,291 ms against the unchanged 45-second guard. Browser zooms to detail / overview / detail took 4,244.3 / 4,137.2 / 3,802.3 ms, all below the unchanged five-second guard; corresponding call wall times were 5,550 / 5,576 / 5,080 ms. The overview transition retained item presentation passes 3 → 3 and the last rendered item scale 1.2; return to Items advanced the pass count to 4. Thus hidden terminal item rendering was actually skipped and current Items refreshed. Final full-data snapshot equality, held-pan reveal, exact original relationship access, and empty write/error receipts all passed.

The prior actual-dev overview failure was 5,119.1 ms. This corrected run is under budget, but cross-run timings are not a controlled benchmark; zero hidden work is the directly measured change. Actual post-integration acceptance is still required before closing #231.

Both 301-item desktop/phone journeys passed. Manual Items at scale 0.5 refreshed 65/35 current cards and 133/82 paths. Hidden priority → manual Items at scale 1.2 produced 18/12 routed arrows, each with computed opacity 1. I inspected both actual PNGs: arrows are painted. The four 2k overview geometry receipts show eight readable cards, no small text or recorded schematic clutter, and honest accounting of all 5,000 relationships. Dense local placement, offscreen endpoints and viewport/control clearance remain #233/#220 scope; these screenshots do not claim that broader work complete.

Full Node 22/24 suites, types, harness205, routing10 and real-Neo4j9 pass. All three final images have matching immutable IDs across build logs, scans and initial/replacement runtime contracts. API/generic scans have zero findings; the self-host image retains the documented 162 OS advisories with no fixed HIGH/CRITICAL. The independent reviewer has accepted the source correction and raw static/runtime provenance and is now independently auditing this complete browser archive. This comment is author evidence, not a substitute for that review.

Resume: download the archive above and inspect test-artifacts/ci-large-symbols/report.json with its three zoom-*-timing.json and two-thousand-node-performance.json attachments, plus both manual-items-priority-arrows JSON/PNG attachments in ci-semantic-lod/report.json. No local browser or heavy matrix was run for this correction.

@mvalancy mvalancy left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent final artifact review of cc7bcb9e1fe4aff660004fcbe0472f14d6d744d2 against dev 17acc25dc98978c64f87a5b0d6fb36b1833cdfa7: no remaining finding blocks this performance correction. The arrow-order finding is corrected and now verified in actual hosted screenshots/receipts, in addition to the independent source-negative/corrected callback probe.

Both CI40815851023 and Comprehensive40815851019 completed successfully. I independently audited the raw 20,163,208-byte main artifact12873578056: 13 strict reports,117 passed cases,140 nonempty contained file-backed attachments, no failed/warned/skipped/timeout/evidence-error result. Every strict report has clean, unchanged synthetic 18c558ab782622aa434ca13806b939132cfd674b and fingerprint 9f724b0f59098e65ea4ca500470ddd2e96c0b33237de3648acbf45bc022cebc4. Its exact parents/source-equal tree and current runtime/install/static evidence were independently checked in review5692837432.

The actual2,000-item/5,000-relationship journey loaded in 24,291ms. Browser-measured detail→overview→detail zooms were 4,244.3 /4,137.2 /3,802.3ms, each below the unchanged5,000ms guard. Driver wall times were5,550/5,576/5,080ms and are not being represented as sub-five-second end-to-end calls. Terminal item-presentation passes changed2→3, stayed3→3 in overview, then refreshed3→4 on return. This is measured evidence for this run, not a universal latency guarantee or proof that every hidden DOM operation is eliminated. The final performance receipt is emitted only after unchanged API snapshot, zero writes and zero errors assertions; those final guards were reached and passed.

I independently checked all73 JSON attachments and their relevant identities/geometry: priority sets4496→4998→5000→4496 preserve4495 connected pairs and restore the original set; overview accounting retains5000 originals. Desktop/phone manual Items return retains65/35 current compact cards and133/82 valid paths; hidden-priority return has18/12 arrows at opacity1 with current transforms. I viewed those actual arrow images, both2k detail images, overview/held-pan images and desktop/phone nested incoming images. Nested Inventory→Payments direction remains correct. Durable layout readback matches the latest drag, both Alt-release gestures preserve coordinates, locked-touch edits persist, and typography controls retain their explicit12px/400 negative plus restored readable values. Other retained agent/inspector/item geometry receipts pass their bounded checks.

Limits remain explicit: the detail/held-pan pictures still contain unrelated wire crossings, and the manual-return pictures retain edge-of-viewport cards under controls. This PR does not solve #220/#234 placement/routing. The old5,119.1ms actual-dev failure remains evidence; this successful pre-integration run does not close #231/#235 by itself. Any composition with #234 needs its own exact-source final gates, and actual post-dev acceptance remains required after authorized integration.

Source and current pre-merge evidence are clear for the repository owner’s integration process. I did not approve, resolve threads, edit, launch a local browser or merge.

@mvalancy
mvalancy marked this pull request as ready for review October 29, 2026 04:56
@mvalancy
mvalancy merged commit 479edf6 into dev Oct 29, 2026
19 checks passed
@mvalancy

Copy link
Copy Markdown
Member Author

Author audit of the actual post-dev revision 479edf61a2e5f964de9034b6b7da26d2ffb4c11f:

CI 40820579099 and Comprehensive 40820579055 passed. The actual-merge strict archive contains 13 reports, 117 passing cases, zero failed/warned/skipped cases, and 140 valid attachments. Every strict report has the clean unchanged actual revision and fingerprint 677d8a2c88211ae2d1bf41ae359f8c4366c7eff5afa6e7bb8cbda871f88e5114. Merge parents and source-equal tree were independently checked against the reviewed source; these are fresh actual-merge artifacts.

The real 2,000-item / 5,000-relationship case passed in 165.101 s (281.009 s including fixture/setup/cleanup). Load was 22,190 ms. Browser zooms to detail / overview / detail were 3,052.5 / 2,975.8 / 3,572.1 ms; corresponding call wall times were 4,197 / 4,042 / 4,990 ms. The unchanged load guard is 45 seconds and the browser zoom guard is five seconds. Actual work counters show overview retaining item passes 4 → 4 and last item scale 1.2, followed by Items refresh to pass 5. Final full-data snapshot equality, held-pan reveal, original relationship access, and empty write/error receipts all passed. These are measurements from this run, not a controlled cross-run benchmark.

Actual desktop/phone manual Items receipts contain 65/35 current compact cards and 133/82 paths. The hidden-priority/manual-return receipts contain 18/12 current arrows, all at opacity 1. I viewed the actual detail/overview and both arrow PNGs: restored arrows are painted, and overview shows eight readable summaries. The known detailed offscreen endpoints, crossings and viewport/control clearance remain separate #233/#220 work; this correction does not claim that broader placement path complete.

Actual Node 22/24 suites, types, harness205, routing10, real-Neo4j9 and installer checks pass. Fresh runtime image IDs match actual build logs, scans and initial/replacement contracts, with native SQLite and replacement recovery passing. API/generic scans have zero findings; the self-host image retains the documented 162 OS advisories with no fixed HIGH/CRITICAL. The direct living-graph suite also passed all three cases.

The separate non-author reviewer has been given this actual-revision archive, raw runtime/static evidence and PNGs for final confirmation. #235 and #231 remain open for the repository owner to close after that acceptance. No source edits, merge operation or issue closure were performed during this audit, and no local browser or heavy matrix was run.

@mvalancy

Copy link
Copy Markdown
Member Author

Independent actual post-dev acceptance is complete for 479edf61a2e5f964de9034b6b7da26d2ffb4c11f. Its exact parents are17acc25+cc7bcb9 and tree b6bf17add278fb1f49f1bf837e868df81ff9525c equals the reviewed source. This audit uses the actual merged revision, not the pre-merge synthetic run.

CI40820579099 and Comprehensive40820579055 succeeded. I independently checked the raw 19,530,307-byte artifact12875723693: 13 strict reports,117 passed cases,140 valid nonempty file-backed attachments, with no failed/warned/skipped/timeout/evidence-error result. Every report starts/finishes clean at actual479edf6 with unchanged fingerprint 677d8a2c88211ae2d1bf41ae359f8c4366c7eff5afa6e7bb8cbda871f88e5114.

Actual2k/5k load was 22,190ms. Browser zooms were 3,052.5 /2,975.8 /3,572.1ms, all below the unchanged5,000ms limit; driver wall times were4,197/4,042/4,990ms. The test case completed165.101s (whole sequence281.009s). Terminal item passes stayed4→4 during overview and advanced to5 on Items return. Final unchanged API snapshot, zero writes and zero page errors guards were reached and passed. Priority projections preserve5000 originals and4495 connected pairs, with4496→4998→5000→4496 represented IDs and exact restoration.

I independently inspected all73 JSON receipts and the actual desktop/phone arrow,2k overview/detail/held-pan, large-bus hover, phone-bus hover and nested incoming PNGs. Manual Items returns retain65/35 current cards and133/82 valid paths;18/12 restored arrows have opacity1 and valid transforms and are visibly painted. The2k hover/inspection retains exactly143 original IDs, both endpoints and a14px/600 tooltip without overflow; both301 cases retain their exact2 originals. The overlapping-target/shared-branch interaction controls retain expected pointer/keyboard ownership and zero requests. Layout reload readback, Alt-release, locked-touch and typography negative/restore receipts also pass.

Fresh actual-dev runtime image IDs match their build logs, contracts and scans: API 2e380e01…, generic c9f8379a…, self-host 381b18c0…. Each records392 installed packages and376 scanned Node entries, with initial/replacement API/secret/CAPTCHA/MCP/independent-Neo4j and SQLite/recovery contracts passing. API/generic scans have0 findings; self-host retains162 known OS advisories with no CRITICAL or fixed HIGH. Node22/24 counts remain Core41, server110+26 existing optional skips, MCP211, web481; harness205, routing10 and real-Neo4j9 pass, four type checks pass, lint has0errors and production audit0 vulnerabilities.

#235 and #231 now satisfy their actual post-dev acceptance requirement and can be closed by the owner. The prior5,119.1ms failure remains retained; this passing actual integration resolves that blocker without relaxing limits. Detailed unrelated-wire crossings and edge-of-viewport/control placement remain #220/#233/#234. These results do not accept the new unmerged dense-item/placement work. I performed no source edits, local browser run, merge or issue closure.

@mvalancy
mvalancy deleted the fix/overview-render-budget-20261029 branch October 29, 2026 05:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant