You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two follow-ups to the substrate-complete state.
Site: add a "Bring Your Own Data" section between Query+Policy and
Capabilities. The differentiator story now reads coherently from
the homepage: structural baseline -> queryable through Rayfall ->
extensible through CSV import + vector primitives -> enforceable
through .rfl policy packs. Four feature cards explain external
signals as tables, vector search as policy, the shared sym-table
join semantics, and the live progress on stderr. Code block shows
the canonical "join coverage.csv with temporal_hotspots" recipe with
inline highlight spans matching the rest of the site palette.
Section alternation rebalanced: BYOD slots in as section-alt, with
capabilities flipping to plain and languages flipping to alt to
keep the pattern.
llms.txt mirrors the new content for crawlers: a "Bring your own
data" section covering CSV import + cos-dist / knn / hnsw-build /
ann, plus a "Live progress" section noting the stderr-only
throttled feedback channel for long Rayfall queries.
Skills: the four phase-scoped skills (bootstrap / impact / verify /
audit) predate Lanes A/G/H so an agent reading any of them today
gets no signal that baseline_query / policy_check / import_csv even
exist. Add a "See also" section to each with the cross-references
relevant to that phase:
bootstrap -> raysense-query, policy_check, import_csv
(everything the bootstrap baseline now unlocks)
impact -> Datalog reaches, .graph.shortest-path, ad-hoc
joins for author-weighted blast radius
verify -> policy_check (alongside check_rules)
audit -> .graph.pagerank / louvain / betweenness for
centrality audits, import_csv for external audit
data
Each cross-reference is one short paragraph -- enough to plant the
seed for the SkillRouter, not enough to bloat the host skill. No
behavior changes; pure documentation surface.
Copy file name to clipboardExpand all lines: site/index.html
+44-2Lines changed: 44 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -313,7 +313,49 @@ <h3>Composable across history</h3>
313
313
</div>
314
314
</section>
315
315
316
-
<sectionclass="section section-alt">
316
+
<sectionid="byod" class="section section-alt">
317
+
<divclass="container">
318
+
<divclass="section-eyebrow">BRING YOUR OWN DATA</div>
319
+
<h2>Coverage. Lint counts. Embeddings. Same query language.</h2>
320
+
<pclass="section-lead">
321
+
Drop a CSV; it joins the baseline. First row is headers, column types are inferred, and the shared symbol table means cross-table predicates like <code>(in path (at coverage 'path))</code> work without ETL. Vector primitives - <code>cos-dist</code>, <code>l2-dist</code>, <code>knn</code>, <code>hnsw-build</code>, <code>ann</code> - are built into Rayfall, so embeddings imported alongside the structural baseline serve semantic similarity from the same query expression that drives policy gates.
322
+
</p>
323
+
324
+
<divclass="code-block code-block-wide">
325
+
<divclass="code-block-head">join coverage.csv with raysense's own temporal hotspots</div>
<p>Coverage, lint counts, error budgets, runtime traces, ownership-from-elsewhere - any CSV becomes addressable from <code>baseline query</code>, <code>policy check</code>, and the MCP tools. Subsequent re-imports overwrite cleanly; the schema-version stamp keeps stale baselines from silently mis-rendering.</p>
341
+
</div>
342
+
<divclass="feature-card">
343
+
<h3>Vector search as policy</h3>
344
+
<p>Pair CSV import with embeddings: <code>cos-dist</code> for direct similarity, <code>knn</code> for brute-force scans on small sets, <code>hnsw-build</code> + <code>ann</code> for sub-linear queries on >10k vectors. An <code>.rfl</code> policy that flags near-duplicate functions is six lines.</p>
345
+
</div>
346
+
<divclass="feature-card">
347
+
<h3>One sym table, one schema</h3>
348
+
<p>Imported tables share the baseline's interned-string space, so <code>path</code> in <code>coverage</code> and <code>path</code> in <code>files</code> point to the same sym ID. Joins are predicate equality, not ETL plumbing - and the schema-version stamp catches imports against an out-of-date baseline directory.</p>
349
+
</div>
350
+
<divclass="feature-card">
351
+
<h3>Live progress on stderr</h3>
352
+
<p>Long Rayfall queries print throttled progress lines to stderr - <code>op_name</code>, <code>phase</code>, <code>rows_done / rows_total</code>, elapsed seconds, memory used. JSON callers stay byte-clean; humans on a TTY get the live signal. Quick queries (under 200ms) stay silent by design.</p>
353
+
</div>
354
+
</div>
355
+
</div>
356
+
</section>
357
+
358
+
<sectionclass="section">
317
359
<divclass="container">
318
360
<divclass="section-eyebrow">CAPABILITIES</div>
319
361
<h2>Beyond the score.</h2>
@@ -359,7 +401,7 @@ <h3>69 languages out of the box</h3>
Copy file name to clipboardExpand all lines: site/llms.txt
+15Lines changed: 15 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -57,6 +57,21 @@ Every saved baseline is a queryable columnar database. Two surfaces share one su
57
57
58
58
A policy is just a Rayfall expression that returns a table with columns severity, code, path, message. Empty result table = policy passed.
59
59
60
+
## Bring your own data
61
+
62
+
Drop a CSV; it joins the baseline. `raysense baseline import-csv <name> <path>` (CLI) or `raysense_baseline_import_csv` (MCP) reads the CSV with first-row headers, infers column types, and writes it as a splayed table alongside the built-in ones. Subsequent queries can join across imported and built-in tables because they share the baseline's interned-string sym table - `path` in an imported coverage CSV points to the same sym ID as `path` in the structural `files` table.
63
+
64
+
Vector primitives are built into Rayfall:
65
+
- `cos-dist` / `l2-dist` / `inner-prod` / `norm` for direct similarity.
66
+
- `knn` for brute-force nearest-neighbor over a list of candidate vectors; returns a (_rowid, _dist) table sorted ascending.
67
+
- `hnsw-build` / `ann` / `hnsw-save` / `hnsw-load` / `hnsw-info` for sub-linear approximate-nearest-neighbor on >10k vector spaces.
68
+
69
+
Pair the two: import an embeddings CSV (file_id + e0..eN columns), build an HNSW index, and ship a `.rfl` policy that flags near-duplicate functions or finds the most-similar files to a target. Vector search becomes a CI gate without a separate service.
70
+
71
+
## Live progress
72
+
73
+
Long Rayfall queries (group-by aggregations, pivots) emit throttled progress lines on stderr from the CLI surfaces - `[rayfall] op / phase rows_done / rows_total elapsed=Xs mem=YMB`. JSON callers (--json, MCP, pipes) stay byte-clean. Quick queries under 200ms emit nothing.
74
+
60
75
## Capabilities beyond the score
61
76
62
77
- Live treemap dashboard. Every file, every metric, every cycle, refreshed on save.
0 commit comments