QuantLink AI · Research Platform

Eight registries in, one sealed catalog out.

Operator Catalog turns eight separate analytics and ML operator registries into one generated, hash-sealed library of 1,139 operators: an Excel-style function catalog where every operator has typed parameter controls and resolves to runnable notebook code. Users can also generate private operators from any Python library installed in their own kernel.

Operator Catalog page for scipy.stats zscore with typed parameter controls, column inputs, and the run output from a notebook kernel
Resolve & Run: a generated scipy.stats operator with typed controls, executed in the user's own kernel on a test dataset.
Generate from library drawer over the catalog rail, listing 1,139 operators across 8 registries and 3,206 generated kernel operators
Generate from library: introspects any installed module into private operators, alongside the 1,139-operator shared catalog.
Install package drawer offering one exact wheel-only version with sha256-checked files
Install package: exact pins, wheels only, every file sha256-checked and kept in a receipt.

One catalog: projected, not re-authored.

Rather than invent a new authoring format, the catalog is a deterministic projection over the eight authoritative registries (one adapter each), so every source stays the single owner of its operators.

  • 1,139 operator records spanning stats and time series, data transforms, SQL, visual-pipeline nodes, AutoML preprocessing, and ML estimators; 959 are directly callable, the rest labelled via-API or unavailable with a stated reason.
  • Regenerating an unchanged tree is byte-identical; 22 JSON Schemas (draft 2020-12) under 24 versioned schema IDs pin every shape, with the contract iterated v1→v5 in two days.
  • A CI conformance harness runs every callable operator on a test dataset in a fresh interpreter under pinned dependencies and commits the verdicts, so the catalog says what actually runs, not what should.

Typed forms in, runnable code out. Safely.

Each operator page is a typed form (symbol, enum, multi-enum, date, date range, boolean, number, text, and JSON controls with column pickers) that resolves to a frozen plan, a notebook cell, and a receipt.

  • Nothing runs until an explicit Run in the user's own scratch kernel; changed parameters mark output stale, observed output is checked against the receipt, and a badge flags library-version drift.
  • Kernel operators are generated by introspecting any installed module (scipy.stats or the user's own code) in an isolated child interpreter with a scrubbed environment; deduplicating shared signatures cut the scipy.stats walk from 4.52 MB to 1.70 MB.
  • Supply-chain-hardened installs (exact pins, wheels only, sha256-verified, .pth and sitecustomize shadowing refused, replayable receipts); values reach code only through literal renderers and kernel output is treated as untrusted, leaving no injection path.

Tamper-evident by construction.

The catalog ships as content-addressed, write-once objects behind a read-only edge worker, and the app verifies every byte against a pinned manifest hash before trusting it.

  • No "latest" pointer: rollback is a re-pin, and any mismatch fails closed. Canonical JSON number encoding keeps hashes stable across languages, including integers beyond 253.
  • One resolver held identical across three implementations (a Python reference, a TypeScript port, and a stdlib-only kernel copy) by a generated-corpus parity test.
  • Four codebases from kickoff to all core changes merged in about four days, including a one-day re-architecture after a platform direction change; 25 design decisions recorded. Delivered to staging.