# Research, versions, and what was actually verified

Two different kinds of statement appear here and they are labelled differently:

- **Measured** — reproduced on this machine in this build, with the command to reproduce it.
- **Consulted** — a cited external source; reachable, and used as design guidance only.

Nothing in this file claims that a feature works because documentation says it should.

## Pinned local versions (measured 17 Oct 2026)

| Component | Version | How to confirm |
|---|---|---|
| Node.js | v24.21.0 | `node -v` |
| pnpm | 11.25.0 | `pnpm -v` (`packageManager: pnpm@11.25.0`) |
| TypeScript | 5.9.3 | `pnpm -s typecheck` |
| SurrealDB server | 3.2.3+20260721.40522d1 (macOS/aarch64) | `/opt/homebrew/bin/surreal version` |
| `@surrealdb/node` SDK | 3.1.0 | lockfile / `.pnpm` manifests |
| `surrealdb` (JS, secondary) | 2.1.1 | lockfile / `.pnpm` manifests |
| Fastify | 5.12.7 | lockfile |
| React / React DOM | 19.3.1 | lockfile |
| three.js | 0.186.1 | lockfile |
| @react-three/fiber / drei | 9.8.2 / 10.7.9 | lockfile |
| d3-force-3d | 3.0.6 | lockfile |
| Vite / Tailwind | 8.3.4 / 4.3.3 (+ `@vitejs/plugin-react` 6.1.2) | lockfile |
| puppeteer-core | 25.14.0 | `devDependencies` |
| Google Chrome (test driver) | 155.0.8059.82 | `"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --version` |
| macOS / hardware | 27.0.1 on MacBook Pro (Mac17,6), Apple M5 Max, 18-core (6P+12E), 128 GB | `sw_vers`, `sysctl -n machdep.cpu.brand_string` |
| oMLX | user-managed, external; reachable at `http://127.0.0.1:8000/v1` | `pnpm -s probe:ai` (never started or restarted by this app) |

The SDK/server pair is pinned deliberately: `@surrealdb/node` 3.1.0 against SurrealDB 3.2.3, and the
schema is applied by numbered migrations rather than assumed to match a documentation snapshot.

## Measured on this installation (these changed the design)

| Finding | Evidence | Consequence |
|---|---|---|
| `SHOW CHANGES FOR TABLE entity SINCE 0` returns an empty list even immediately after a write; `INFO FOR TABLE entity` reports no changefeed | probed against the running 3.2.3 instance; recorded in `apps/api/src/db.ts:216` | `CHANGEFEED` is **not** used for out-of-band detection. A version-set watcher reconciles instead (`apps/api/src/runtime.ts`), and `changesSince()` returning `[]` must never be read as "nothing changed" |
| `LIVE SELECT` works, but a dropped subscription must not be trusted to self-heal silently | exercised through the API and browser journeys | The stream carries invalidations, not patches; the browser also polls `/api/events?after=cursor` every 12 s and resumes by durable cursor |
| Transactions are single-request `BEGIN … COMMIT` over HTTP | `apps/api/src/db.ts`, journaled writes in `mutations.ts` | Journal row and mutated rows commit atomically; rollback burns no sequence number |
| Relations are stored as real record links and answer a traversal | integration check 2 (`tests/integration/live-state.test.mjs`) | Native graph modelling is sufficient for the POC; no adjacency tables, no edge-array-only fakes |
| R3F `frameloop="demand"` draws no frames once the layout settles | measured: rAF deltas during an emulated camera drag return `p50 59.9 fps`, while an idle settled scene reports zero frames | The UI must not render a bare `0` as if the GPU stalled; it says "idle, no frames since settle" |
| Headless Chrome here uses the real GPU: `ANGLE (Apple, ANGLE Metal Renderer: Apple M5 Max)` | `WEBGL_debug_renderer_info` inside the test browser | FPS samples in this report are GPU-backed, not software-raster artefacts — still not a benchmark |
| oMLX first-call latency is seconds, not milliseconds | local status panel reported 4.4–6.0 s; a copilot answer in journey 19 took ~44–49 s | Copilot requests are async with an explicit pending state; nothing in the graph path waits on the model |
| Bundled web bundle is 1,315.98 kB (gzip 358.71) | `pnpm -s build` output | Acceptable on localhost; code-splitting is listed as a known limitation, not done |

## Consulted sources (re-checked 17 Oct 2026 — all returned HTTP 200 today)

These informed the design. They are guidance, not evidence about ATLAS.

| Source | URL | What was taken from it |
|---|---|---|
| Palantir Foundry — Ontology overview | https://www.palantir.com/docs/foundry/ontology/overview | Objects, links, actions, functions as one operational surface; the idea that views share one semantic contract |
| Palantir Foundry — Action types | https://www.palantir.com/docs/foundry/action-types/overview | Governed actions as the only way operational objects change: parameters, validation, side effects |
| SurrealDB — LIVE SELECT | https://surrealdb.com/docs/reference/query-language/statements/live-select | Subscriptions per table/relation; caveats about ordering and connection handling |
| SurrealDB — DEFINE TABLE | https://surrealdb.com/docs/reference/query-language/statements/define/table | `SCHEMAFULL` typing, relations, constraints |
| SurrealDB — Transactions | https://surrealdb.com/docs/reference/query-language/language-primitives/transactions | Atomic multi-statement mutation |
| SurrealDB — SHOW CHANGES / changefeeds | https://surrealdb.com/docs/reference/query-language/statements/show | The retained-change idea that was then **measured as not observable here** (see above) |
| Neo4j — Graph DB concepts | https://neo4j.com/docs/getting-started/appendix/graphdb-concepts/ | Vocabulary for labels, directed typed relationships; used to keep the deferred projection honest about what it would copy |
| Neo4j — CDC | https://neo4j.com/docs/cdc/current/ | Edition/feature boundary; deliberately **not** a default dependency |
| React Three Fiber — Scaling performance | https://r3f.docs.pmnd.rs/advanced/scaling-performance | On-demand rendering, instancing, resource reuse |
| d3-force-3d | https://github.com/vasturiano/d3-force-3d | 3D layout, pinning; worker-based layout for large scopes |
| oMLX (jundot/omlx) | https://github.com/jundot/omlx | Local OpenAI-compatible endpoints; the requirement to probe the actual running provider rather than assume a model list |
| W3C PROV-O | https://www.w3.org/TR/prov-o/ | `entity` / `activity` / `agent` and derivation as the evidence model |

**Not re-verified in this session:** the current text of each external page beyond reachability, and
any SurrealDB behaviour newer than 3.2.3. Where a documented feature could not be reproduced on the
pinned server, the implementation uses the measured fallback and says so.

## Dependency licences (measured from installed manifests)

440 `package.json` licence fields were read out of the installed dependency tree:
MIT 344, Apache-2.0 36, ISC 30, BSD-3-Clause 17, MPL-2.0 8 (lightningcss plus its darwin-arm64
binary), 0BSD 3 (tslib), and **UNKNOWN 2** — two `webgl-constants` files carry no licence field, so
they are reported as unknown rather than assumed permissive. No copyleft dependency is linked into
the shipped web bundle.

No edition-limited feature was selected: SurrealDB runs as the local OSS server, and Neo4j (a
different licence) is not a dependency at all.

## Naming

"SPECTRA" and "ATLAS" are working names used by this project's own documents. Nothing here claims the
name is unique, trademark-cleared, or a pre-existing commercial database.
