Skip to content

feat: add readable graph overview groups and member navigation - #192

Merged
mvalancy merged 15 commits into
devfrom
feature/dynamic-lod-overview-20261027
Oct 27, 2026
Merged

mvalancy merged 15 commits into
devfrom
feature/dynamic-lod-overview-20261027

Conversation

@mvalancy

@mvalancy mvalancy commented Oct 27, 2026 •

Copy link
Copy Markdown
Member

Dense graphs currently lose readable names when fitted to the viewport. This adds a first semantic overview for graphs with at least 40 loaded items: readable group summaries, typed/directed relationship counts, a complete member browser, and inspection of original items with Back restoring the entry camera and detail mode.

Grouping supports explicit paths, native containment, release lanes/kinds and item types. The display projection stays separate from source positions and the save queue. Summary gestures use the existing SVG camera. CodeGraph informed the techniques; implementations remain independent, with no shared library or copied CodeGraph source.

Delivery plan · Validation record and desktop/phone screenshots · CodeGraph technique map

Validation:

  • Types, lint, build and bundle budget pass; 335/335 web unit tests and 25/25 runner tests pass at runtime/test head 5f11f3bcc97fa3e90ffa1ea31f8e75f97a1ace16.
  • Two headed LOD journeys pass with 301 pinned items / 370 relationships at 1440×900 and 390×900. They cover both zoom directions, readable long titles, wheel/mouse/touch pan and pinch, keyboard focus, forced Overview, A→B→A, zero attempted mutations and exact saved-position readback. Seven existing small-graph drag/edit/resize journeys also pass. Exact tested revisions and retained failures are in the validation record.
  • The LOD suite is enrolled in the blocking new-user acceptance sequence; npm run qc:lod runs it independently.
  • Independent agent review has no outstanding findings at final head 4abce30030e45e1e9d468c67e414302f270d45e9; this is not a GitHub non-author approval. The seven changes after the tested runtime head are reviewed documentation/screenshots only; all other blobs are unchanged.
  • Owned API/web processes, Neo4j container/volumes and SQLite fixtures were removed. The owner's localhost app was not deployed or modified.

Remaining gates and scope:

  • Production audit fails on the unchanged dependency tree: 1 high (Undici 6.28.1) and 5 moderate findings. No dependency upgrade is included.
  • Full remote branch CI and broader integration/image/installer acceptance are not established. This PR remains a draft; no merge, main promotion or deployment is claimed.
  • This slice still loads full snapshots and constructs the full source SVG. Nested spatial cuts, local density budgets, summary-first loading, Cloud parity and measured 1k/10k capacity remain open. Legacy autosave of newly placed/overlapping source nodes is outside this slice.

Repository checklist:

  • Ran all new-user questions and linked a complete release ledger.
  • Ran full npm run qc:new-user and inspected all portrait, landscape and desktop results (focused journeys above only).
  • Hosted D1/staged Pages gate (not applicable to this Core-only draft; hosted parity remains open).
  • Listed unsupported behavior and release blockers; no skipped or untested journey is claimed as passing.

@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.

@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

Copy link
Copy Markdown
Member Author

CI diagnosis and correction: run 40541503856 basic smoke passed 6/6; headed new-user reported 43 pass / 2 fail, consisting of one desktop LOD timeout and the harness's nonzero-exit case. The phone LOD journey passed (55.3s). Trace inspection shows eight API fixture calls taking 5.7–11.6s; desktop navigation/camera assertions completed, but the 120-second whole-test budget interrupted final position readback. This is incomplete evidence, not a passing journey.

The correction separates bounded fixture setup (180s) from the unchanged interaction budget (120s; actions10s; existing assertions; zero retries). Independent review caught that Playwright shares a fixture's setup/teardown timeout slot. Ownership and strict edge→item→graph cleanup therefore use a separate dependency fixture with a60s budget. Two harness negative controls now pass: setup intentionally times out yet cleanup/readback still runs, and a deletion failure fails teardown without proceeding to orphan-prone item deletion.

Local browser validation is in progress against an owned fresh Neo4j/APOC stack. Earlier local startup failures are retained: the first disposable container omitted APOC, and its API could not execute GraphQL validation predicates. That fixture has been corrected; the user's localhost application is untouched. Final remote CI remains required. The independent dependency blocker has focused PR #194, whose fresh security scan is green.

@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.

@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.

@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

Copy link
Copy Markdown
Member Author

Current exact head: 9709196ed3c6eb69b63c5bf3d5b3d382ca61f04a, incorporating live dev 32149ee61ea5436831d95d76e4c4b6dc2db619a3 and its separately reviewed Undici fix. Independent final-head review has no outstanding findings.

The previous CI failure was a real camera race: after the fixture-budget correction, both LOD cases requested scale 0.5 but initial auto-fit overwrote it with 0.1379447032 / 0.0720887246. Explicit minimap pan/zoom, overview inspection and native camera gestures now stop pending automatic framing for the current graph. Automatic fit/restore remains distinguishable.

The warm local negative control initially passed, so the regression now controls the initial-fit timer: after the first fit, request zoom and advance six 250ms intervals while checking it remains at 0.5. Against the original component it fails with exactly the CI scale; with the fix it passes. Initial-fit and manually zoomed font/bounds/overlap checks both remain in the test, and real time resumes for later mouse/touch, navigation and persistence checks. No timeout or retry relaxation.

Final owned-stack browser run: 9/9 passed, zero retries, 5.4 minutes: 301-item desktop/phone LOD plus motion, resize and details. Clean composed install, all builds, types, lint and 166 harness cases passed; the subsequent change only restores the browser geometry check and documents review. Exact-head CI is running. No shared app/database was modified, and this does not claim full multilevel/10k/hosted completion.

@mvalancy

Copy link
Copy Markdown
Member Author

Integration preflight: exact head 9709196ed3c6eb69b63c5bf3d5b3d382ca61f04a, live dev 32149ee61ea5436831d95d76e4c4b6dc2db619a3 rechecked by remote ref. Independent final-head review has no outstanding findings; it is not a GitHub non-author approval.

Final CI40574012064 and Node matrix/installer40574012082 passed. Actual smoke-job logs show6 smoke,44 new-user,27 mobile,3 living-graph and3 performance cases passed. All applicable unit/build/types/lint/security/real-Neo4j/showcase gates passed. The production-main/nightly job is intentionally inapplicable to this dev PR.

Local clean composed install, build, types/lint and166 harness cases passed; the final source's9 owned-stack LOD/motion/resize/detail browser cases passed with zero retries. Failure evidence and corrections for cold fixture budgets, cleanup races and overwritten camera intent are retained in the PR/lessons. Owned graph fixtures were deleted and read back by the strict fixture; the disposable service stack is retained for the continuing feature work. The original localhost app/data were untouched.

Proceeding with the standing owner-authorized dev-only administrative merge, matching this head and leaving protection settings unchanged. Verify remote parents/tree and resulting branch CI afterward. This integrates the readable overview/member-navigation slice; it does not close the documented multilevel, progressive-loading,1k/10k or hosted completion work, and it is not main promotion or deployment.

@mvalancy
mvalancy marked this pull request as ready for review October 27, 2026 20:30
@mvalancy
mvalancy merged commit 8712389 into dev Oct 27, 2026
16 checks passed
@mvalancy

Copy link
Copy Markdown
Member Author

The first LOD slice is integrated into dev by the owner-authorized admin merge (not a non-author GitHub approval).

  • PR head: 9709196ed3c6eb69b63c5bf3d5b3d382ca61f04a.
  • Resulting dev: 8712389e24f567f5b3e6ed132c1ac5d4dafb21fa, parents exactly prior dev 32149ee61ea5436831d95d76e4c4b6dc2db619a3 and that reviewed head.
  • Complete resulting tree 3c689976eb3bf9c8454e98230b1330bad5e20031 equals the reviewed/tested source tree.
  • Post-merge CI40578747176 and Comprehensive40578747297 are green. Actual gates: smoke6, headed new-user44, mobile27, effects3, performance3; no failed/flaky/skipped required browser cases. Node22.18/24, installer, units, build/types/lint/security and real Neo4j pass. The main/nightly-only production job and push-only reporting skip are inapplicable.

Owned LOD graphs were deleted with read-back verification; earlier failed evidence is retained. The disposable localhost service fixture remains in use for the related open issues. The user’s localhost8540 app was not changed. No protection setting, main merge, release or deployment was performed.

This closes this PR’s integration, not the entire dynamic LOD feature path. Multilevel group navigation, topology fallback, progressive loading and the1k/10k completion gates remain in docs/architecture/dynamic-graph-lod.md and tracker #193. CodeGraph techniques remain ideas adapted separately, with no shared library.

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