feat: Galaxy v6 physics engine, graph scene overhaul, and ledger UI improvements - #138
feat: Galaxy v6 physics engine, graph scene overhaul, and ledger UI improvements#138Coding-Dev-Tools wants to merge 214 commits into
Conversation
…mprovements - Galaxy physics: orbital mechanics, leapfrog integration, black hole gravity, solar system hierarchy, evidence-mass sizing, drag velocity preservation - Graph scene: ghost edge sort fix, connected_only+include_history interaction, set-wise visibility refactor, code overlay fallback correction - Ledger UI: graph load caching fix, repo filter in cache key, accessibility improvements, Galaxy controls integration - Store: schema migration, logical digest header zeroing fix, verification scope correction, context_savings workspace coercion - Service: entity visibility filter, workspace N+1 query fix, history mode ghost flags, migration locking - API: graph scene fallback narrowing, whitespace workspace validation - E2E tests: Galaxy slider/half-step/orbital separation coverage - Unit tests: graph engine assets, explorer v2, scene contracts, benchmarks - Scripts: dashboard readiness probe, port conflict differentiation - Docs: changelog, MCP tools reference, skill package update Co-authored-by: review agents (16 parallel reviewers, 4 fix agents)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3f3b1f4993
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Restore schema cookie (offset 40) normalization in _logical_digest: SQLite backup can reset this field, causing digest mismatch and aborting all v3-v16 migrations. Codex P1. - Reserve edge capacity for historical ghost relations: when include_history=True, ghost edges covering historical nodes are selected first before applying the final edge_cap, preventing the time-travel view from losing all historical edges. Codex P2. - Update test_store_class_integrity to validate the corrected digest offsets (24, 40, 92).
- Replace U+2014 em dash with double hyphen in CHANGELOG.md line 73 - Fixes test_public_facing_docs_do_not_use_em_dashes assertion
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e3e2fb6890
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Prevents unbounded URL growth on persistent asset load failures. The retry counter appends to asset URLs as a cache-buster; without a cap, repeated failures produce increasingly long URLs and complicate debugging. Ten retries provides ample recovery attempts before giving up gracefully.
static/index.html (Ledger primary) incorrectly marked the Classic link as active with aria-current=page. Swap so Ledger shows as the active choice on the primary dashboard, matching the classic_assets variant which correctly marks Classic as active. Prevents a brief flash of incorrect state before JS init and fixes the HTML-only fallback.\n\nFrom Review13 medium finding.
- ledger.js: reject scene payloads carrying an error field before the object-fallback, preventing error response objects from being treated as graph data and causing downstream undefined property access. - dashboard_assets/index.html: add aria-labelledby to graph tuning range inputs referencing their label spans so screen readers announce dynamic label text changes in Galaxy mode. From Review08 low findings.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d5dbcdbfcf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
5 fixes for issues flagged by the Codex reviewer: - P1 service.py: historical supports query now filters by memory.workspace_id so a cross-workspace support cannot leak into the include_history scene. - P2 service.py: evidence facets (memory_types, time_from, time_to) are applied in history mode instead of being skipped by the live-only evidence_filter short-circuit. - P2 service.py: entity candidate cap applies after session-scope pruning so private evidence cannot crowd out public entities. - P1 engine.py: secure_erase re-checks successors after the potentially long index.delete and cleans up any new target IDs before calling store.secure_erase_memory. - P2 graph_scene.py: ghost canonical nodes that collide with a live canonical_id are keyed as :ghost so the live node keeps its mass, community, and relations. Co-authored-by: Codex review bot (addressed findings from d5dbcdb)
There was a problem hiding this comment.
💡 Codex Review
engraphis/engraphis/service.py
Lines 7817 to 7819 in 3160ada
When include_history=true is combined with memory_types, time_from, or time_to, a support for a genuinely historical edge has valid_to <= t, so this newly added live-validity predicate rejects it and the ghost relation disappears. Fresh evidence beyond the prior facet comment is that the replacement branch still requires supports to be live at the selected world-time; apply the history-mode validity predicate here instead.
AGENTS.md reference: AGENTS.md:L162-L164
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Move prune_entities assignment before its first reference in the evidence_filter computation. Ruff F821 caught the UnboundLocalError that broke all graph scene operations across every Python version.
9555936 to
0b2f070
Compare
The previous commit introduced a dependency on prune_entities in the evidence_filter assignment that broke live-only evidence filtering when memory_types/time facets were requested without include_history. Restore the original 'not include_history' logic; the prune_entities override for history mode is handled separately below. Fixes test_graph_scene_filters_supporting_memory_type_and_time_window.
Move the entity visibility check from a per-chunk correlated SQL query to a single upfront workspace-wide edge visibility scan. Entity rows are then filtered in Python using set membership, avoiding the extra SQL query that broke test_graph_scene_entity_visibility_single_query. This ensures private entities cannot consume the candidate budget when a workspace has more than 3*MAX_GRAPH_ANALYSIS_ENTITIES rows.
savingsQuery() returned empty string for the 'all' preset, producing URLs like /context-savings? with a dangling query separator. Move the ? prefix into the returned string so the 'all' case produces a clean /context-savings path with no query component. Fixes one of the remaining low-severity review findings.
The 'Ledger deadline includes stalled graph assets' E2E test was flaky on CI runners under load. The 5s default Playwright timeout for the reload+render cycle was too tight. Increase to 15s to match other graph-dependent assertions in the suite.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ad1a5498e4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: aba73b10b7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
engraphis/engraphis/core/store.py
Lines 8352 to 8354 in c5fb9e0
When eligible receipts using the same token counter have different confidence levels—such as an adaptive_context history-retrieval receipt (high) and a packed recall receipt (medium)—the counter bucket is keyed only by the counter and retains whichever confidence was seen first. Its totals therefore combine both classes while by_token_counter[].confidence incorrectly reports a single confidence; track mixed confidence in these buckets rather than preserving the first receipt's value.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5f4fe55131
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
engraphis/engraphis/read_only_api.py
Line 104 in 96ea567
When the packaged scripts/graph_server.py launcher creates this app without an injected service and ENGRAPHIS_WORKSPACES restricts the instance, this factory no longer passes settings.allowed_workspaces to MemoryService.create(). The resulting service has no workspace allow-list, so callers holding the graph-server bearer token can select sibling workspaces through /recall, /graph, receipt endpoints, and other reads; pass the configured binding alongside read_only=True.
AGENTS.md reference: AGENTS.md:L165-L166
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cf4626b5b2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| 1.0, | ||
| ) | ||
| memory_degree[memory_id] += 1 | ||
| ghost = bool(row.get("ghost") or memory_rows_by_id[memory_id].get("ghost")) |
There was a problem hiding this comment.
Mark connectors to invalidated code symbols as ghosts
When a complete history scene includes code and a symbol has crossed its valid_to boundary while its code-memory link and memory remain live, the service marks the symbol row as historical, but this condition considers only the link and memory. The canonical node projection also drops the symbol's ghost flag, so both the invalidated symbol and its connector are emitted as live with nonzero mass and spring strength, allowing obsolete code to affect the current layout. Preserve the symbol's temporal state and include the target endpoint when deriving the connector's ghost status.
AGENTS.md reference: AGENTS.md:L204-L206
Useful? React with 👍 / 👎.
Summary
Galaxy v6 physics, graph-scene projection, and Ledger dashboard overhaul. The PR contains 58 changed files (+17,766 / -1,342) on one branch targeting
main.What changed
0..400; the live solver uses a0.032fixed timestep, physical stellar-surface pressure, and bounded 18-unit global orbit seeding, while oversized static scenes map the full slider range.Review hardening
0..400range.Validation — final head
805cd72ruff check .— passedpyright— passedpython scripts/externalize_dashboard_assets.py— passedpython scripts/check_commercial_manifest.py— passedpython -m pytest -o addopts="" tests -q -rs— 4,026 passed, 35 platform/optional-extra skips, 1 expected duplicate-ZIP warning from the malformed-container security testnpx playwright test --reporter=list— 63 passed