PERF-ONT-002 — Serve a bounded object graph
| Field | Value |
|---|---|
| Status | Open finding; source-verified; scale test pending |
| Severity | High |
| Components | sparqd/oqullus, sparqd/ontology, sparqd/bff-api |
| Associated issues | Not opened pending finding review |
Concrete observed case
Oqullus reads the first object-summary page and then one detail per object. Relationships resolve by target name only inside that fetched set. A target at position 51 is silently missing; a failed detail becomes a blank isolated card. The browser builds every node and edge, runs two Dagre layouts plus collision passes, searches, and renders on the main thread.
Expected condition
A graph-specific endpoint returns stable IDs, minimal nodes, edges, project and branch revision, total counts, and explicit completeness/truncation in bounded calls. Large projects open a neighborhood or progressively expanded subgraph.
Why it matters
The current canvas can show a false topology. Raising the list limit fixes one omission only by increasing request fan-out, layout latency, and browser memory.
Existing controls and workarounds
Direct object pages can show a known relationship. They do not establish that the overall graph is complete.
Alternatives considered
- Recommended: bounded server graph projection with neighborhood expansion.
- Server-side complete graph export for offline analysis, separate from the interactive canvas.
- Fetch all definitions into the browser — simple but unbounded and unsuitable as the default interaction.
Component involvement
- Ontology backend provides authorized node/edge projection and revision.
- BFF preserves graph paging and completeness metadata.
- Oqullus virtualizes/progressively renders and warns on partial data.
Reproduction and verification
Follow ONT-S015.
Resolution conditions
Close when targets beyond 50 remain visible, dependency failures are explicit, and supported node/edge limits meet recorded API and browser budgets.
Validation and blockers
The data path is source-confirmed. A representative large connected model and browser performance trace are pending.