feat(site): the AI-assistant page, and the evidence stack + MCP on the home cards - #125
Merged
Conversation
…e home cards (#118 #119) #118 — keel's answer to JesseGPT-style hosted assistants is "point your own assistant at your own keel": the engine's read-only MCP server (keel mcp, 8 tools, stdio), exposed locally. New trilingual page /{en,ar,fr}/assistant/ (component + i18n dict + rev markers, nav after Docs): what an MCP server is in one sentence, the engine's own run command and mcpServers config quoted verbatim from docs/mcp-server.md (single-sourced in RUN_COMMAND and CLIENT_CONFIG so no locale can drift), the honest boundary (keel hosts nothing, sees nothing, relays nothing; no account, nothing to log into — and the stated caveat that the assistant's own provider is the user's arrangement), the cannot-do list naming the query_only enforcement (tests/mcp/test_readonly.py committed before the server existed; PRAGMA query_only = ON makes row writes impossible at the engine level — by construction, not policy), and the honest fit mirroring keel#579: the assistant proposes, the gate decides. The full server reference is synced, not duplicated: docs/mcp-server.md joins engine-docs.manifest.json and renders under Docs at the pinned release tag (v0.12.2), the fetch-engine-docs.mjs pattern the issue asked for. Every claim on the page carries a verify link into the repo at that tag (#91). #119 — the home cards said nothing about the evidence stack or the MCP server. Now five cards across all three locales, each with a verify pointer: screening, rails, gates (existing, now with verify links) + the evidence stack (hash- chained trials ledger with keel trials verify; significance, PBO/CSCV, Deflated Sharpe + MinBTL, Monte Carlo + candle bootstrap, walk-forward — all report-only under the Strathern rail: a score may report, and may gate, but may never be a ranking key) + the read-only MCP server, which links to the assistant page as its front door. The honest result stays above the fold where it was. Closes #118 Closes #119
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



What
Two halves, one PR — the second is the front door for the first.
#118 —
/{en,ar,fr}/assistant/— keel's answer to JesseGPT-style hosted assistants: point your own assistant at your own keel. The engine already ships a read-only MCP server (keel mcp, 8 tools, stdio); the page documents the better version of what Jesse charges for, for free:serverInfo=keel-read-only.uv run keel --db keel.db --config config.yaml mcpand themcpServersJSON block — single-sourced asRUN_COMMAND/CLIENT_CONFIGconstants so no locale can drift from the engine's words. Per the issue, no per-client configs written from memory: the engine's instruction is "point any stdio MCP client at the command", and the page says where each client keeps its config is the client's own documentation.PRAGMA query_only = ON, by construction rather than by policy, plustests/mcp/test_readonly.py(committed beforekeel/mcp/existed) and the six walls from the engine's own page. The boundary is named as the feature: an assistant that could author and promote a rule would route around the ladder and the gates in a single sentence.Content sync, not duplication (issue's done-when):
docs/mcp-server.mdjoinsengine-docs.manifest.json, so the full server reference is fetched at build time and renders at/en/docs/mcp-server/(reference section, all three docs editions) — thefetch-engine-docs.mjspattern. If the doc moves upstream, the build fails; the site never renders it stale.#119 — the home capability cards went from three claims to five, ×3 locales, each with the Features-page verify pointer (repo path pinned to the release the build resolved — v0.12.2 today):
keel trials verifywalks the chain and reports any break), and around it the research modules — significance against break-even priced at the fee actually paid, PBO/CSCV, Deflated Sharpe + Minimum Backtest Length, Monte Carlo + candle bootstrap, rolling-origin walk-forward — all report-only under the Strathern rail: a score may report, and may gate, but may never be a ranking key.query_onlyat the engine level — and the card links to/assistant/as its front door (the pairing the issue asked for).The honest finding stays above the fold, untouched. No feature-card sprawl: five claims, all checkable.
Verify links — all against the pinned tag v0.12.2
curl -sI→ 200 on every engine URL emitted by the six pages:check-engine-refspasses — no branch-pinned engine URLs anywhere.Checked
npm run check— 0 errors, 0 warnings (5 pre-existing hints in untouched files).npm run build— clean; build resolved docs refv0.12.2.dist/{en,ar,fr}/assistant/index.htmlpresent; all three insitemap-0.xml; hreflang alternates + canonical per page; rev markers2026-08-28.1on ar/fr with no stale banner (translations current).dist/en/docs/mcp-server/index.htmlrendered from the fetched doc./en|ar|fr/assistant/and/en|ar|fr/— the only element off-canvas is the skip link, by design and identical on every pre-existing page.Decisions worth reviewing
/assistant/, not/en/ai— the issue body says/en/ai; this branch ships/assistant/(reviewer's call when handing this off). Slugs stay identical across locales per FR-2; renaming later is a config + dict change./en/comparewas left alone — the issue defers it until this lands.Closes #118
Closes #119