๐ Management Summary
Riktraโs MVP is feature-complete. The product now does what it set out to do: a company records what it is trying to achieve, what it has decided and who owns what, and any AI assistant an employee already uses picks that up automatically โ including when the direction changes. A person opening Riktra sees a short, scannable brief of what needs them today rather than a dashboard.The central promise is verified by an automated test that runs on every change: an administrator changes the companyโs direction, a colleague opens a completely new AI conversation, and that conversation reasons from the new direction without anyone re-explaining it. Two things a colleague should never see โ another personโs private notes, and anything an AI decided on its own โ are enforced by the database rather than by convention, and are covered by tests that would fail if that ever slipped.Two short configuration steps remain before a real AI client can connect for the first live demo. Both are settings changes, not development work.๐ Technical Summary
Next.js 16 (App Router) on Vercel, Supabase Postgres with row-level security as the tenancy mechanism on both the web and MCP paths, and a hosted Remote MCP server built on the MCP TypeScript SDK v2 withmcp-handler, serving both the current specification and the 2025-era protocol that Claude clients still speak.Thirteen phases across 24 pull requests. 234 tests โ 179 integration tests running against a real Postgres as genuine signed-in users (not a privileged client), plus 55 unit tests. Twelve architecture decisions recorded as ADRs, three of them corrections to the original plan after verifying time-sensitive assumptions against current documentation.Security posture is asserted rather than documented: security_lint() checks RLS coverage, role-scoped policies, search_path pinning on definer functions and PUBLIC grants on internal functions, and is asserted empty in CI. That check found two live gaps during hardening.๐ Detailed Changes
โจ New Features
- Company context: goals, ranked priorities with atomic reordering, decisions with supersession chains, open questions, responsibilities, working principles, context notes, system ownership.
- Today and Me: a scannable daily brief, deterministic attention detection with resolve/dismiss, and private focus and context.
- Governance: a generic proposal pipeline with review inbox, batch actions and near-duplicate detection.
- Meeting ingestion: paste or upload a transcript, get reviewable candidates, with a sensitivity pass that withholds personal material entirely.
- Remote MCP server with twelve tools (seven read, five write) and per-user OAuth.
- Skills: organization-wide AI behaviour, versioned and rollback-able, delivered through four adapters.
- Getting Started, โK Quick Capture with in-product guidance, Morning Focus, full-text search, Debug Context and Debug Skills.
๐ Architecture
- Tenancy and privacy enforced by row-level security; the Context Router does no permission filtering by design, so a bug there returns too little context rather than someone elseโs.
- Shared-truth versioning and revision counters enforced by database triggers, so no write path can forget them.
- Private records versioned separately from shared truth, because the shared trail is organization-readable.
๐ Integrations
- Supabase OAuth 2.1 Server as the MCP authorization server; tokens are Supabase JWTs, so RLS applies to MCP calls automatically.
- Vercel AI SDK for meeting extraction, behind a provider-agnostic interface.
๐ Decisions
- ADR-005 Skills use transport adapters, native extension flag-gated โ no client consumes Skills-over-MCP live.
- ADR-006 MCP serves both wire protocols.
- ADR-007 Supabase OAuth 2.1 Server, with the audience claim deliberately not validated against the MCP URL.
- ADR-011 Versioning by trigger, private tables excluded.
- ADR-012 Protected-resource metadata served path-qualified โ the documented example advertises the origin alone and fails invisibly.
๐ Bug Fixes
- Three instances of Swedish inflection defeating word-boundary patterns; in the sensitivity pass this would have published pay discussion into company context.
- Two live security gaps: a Postgres
PUBLICgrant left the rate limiter callable, and Supabase default privileges exposed a table intended to be internal. - Priority reordering violated a check constraint; version snapshots could not be restored once generated columns existed; skills recorded no initial version.
โ ๏ธ Outstanding
- Supabase OAuth 2.1 Server is disabled โ no AI client can connect until it is enabled with dynamic client registration.
app.riktra.comneeds anArecord pointing at Vercel, DNS-only.