# Lossless AI-Labs > Lossless AI-Labs Applied AI testbed becoming home to core products. The `lossless-ai-labs` pseudomonorepo houses the AI experiments that have started to graduate into products — `context-vigilance-kit` (the context-vigilance toolkit and corpus collator), `memopop-ai` (the multi-agent investment-memo workspace), and `dididecks-ai` (slide decks as code) — each tracked as a git submodule with its own branches, its own `changelog/`, and its own `context-v/`. This splash is the public face of the workspace. It surfaces 119 changelog entries (every meaningful change across the parent and the three children) and 97 context-v notes (specs, explorations, plans, prompts, and reminders — the durable thinking that lives next to the code), rolled up from 8 peers in the pseudomonorepo. ## Reference - [Full-text search](https://lossless-group.github.io/lossless-ai-labs/search/): Pagefind-indexed across the changelog and context-v notes. Filter by `kind:` (Changelog/Context), `from:`, or `tag:`. - [Full corpus content](https://lossless-group.github.io/lossless-ai-labs/llms-full.txt): every changelog entry and context-v note concatenated as raw markdown — preferred ingest target for LLMs that can handle a single large document. - [Source repository (lossless-ai-labs)](https://github.com/lossless-group/lossless-ai-labs): the pseudomonorepo this splash rolls up. - [Lossless Group](https://lossless.group): the org that maintains this practice. ## Changelog Every meaningful change across the pseudomonorepo, grouped by source peer. Parent-authored entries (structural moves, splash work, submodule promotions) live under `ai-labs`; child entries roll up from each submodule's own changelog. ### ai-labs - [Splash catches up: augment-it, a Studies landing page, nested-pseudomonorepo rollup, and OpenPanel](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-17_01/): ai-labs grew a fourth active child (augment-it) and three of memopop-ai's apps started shipping their own changelogs, but the splash didn't know it. This round teaches the rollup to recurse into pseudomonorepo children's `apps/*`, adds a dedicated `/studies/` landing page that reads each study's `.gitmodules` and README at build time, surfaces augment-it in every count and card on the homepage, and wires OpenPanel analytics the same way the other splash sites do it. - [Shared Auth for Applied AI Labs went from exploration to validated reference in one evening — chroma-decks is the first end-to-end install](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-17_02/): Earlier this month an exploration in this tree argued that every AI product under ai-labs needs its own auth story but none of them is at the scale that justifies Auth0/Clerk pricing. The doc proposed ~800 lines of owned auth, a libSQL-backed session model, OAuth via the small `arctic` library, an opaque cross-app `lossless_id`, and a stub seam for future rollup. It estimated three sessions of work plus a package extraction. Tonight the first real install landed — in chroma-decks, greenfield, with the four 'Session-2 additions' from the spec baked in from day one. The pattern is validated against a real-world app, the cross-app organization-naming convention is locked into the exploration as binding policy for every AI product in this tree, and the next AI product that needs auth (memopop-ai, augment-it) installs from a 6-phase template that took ~3 hours to produce on a greenfield codebase. - [SortControls land on the ai-labs splash — convention closure modulo llms.txt](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-12_01/): The changelog and context-v list pages now carry a Modified / Created / Published / Title chip-group plus a direction toggle, with per-page localStorage persistence and server-pre-sorted defaults so the static HTML reads correctly with JS off. Single follow-up remains for full skill conformance: the /llms.txt + /llms-full.txt endpoints. - [llms.txt + llms-full.txt land on the ai-labs splash — the convention is now fully met](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-12_02/): Two endpoint files, three markdown templates, one small provenance helper, and a `` in BaseLayout — agentic crawlers can now ingest the entire pseudomonorepo (parent + three children, 11 changelog entries, 29 context-v notes) in one fetch instead of crawling 44 HTML pages. - [Messages-format OG card is now the primary unfurl on every page](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-12_03/): Chat-preview is the surface most readers will see the splash through first — iMessage, WhatsApp, Slack, Discord all crop unfurls to a square-ish landscape, and the old 1.78:1 banner crop weirdly. The new 890×760 Messages card (real JPEG, no ImageKit content-negotiation surprise) fits that crop natively and is now what every page emits in its og:image sextet. - [DidiDecks promoted to its own repo, ai-labs gets its first splash](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-11_01/): Two related moves on the same day: the slide-deck work that was mis-parented under astro-knots became a first-class child of ai-labs (new repo, new specs, two client engagements re-attached as nested submodules), and ai-labs itself grew a splash page — three-mode + two-tier tokens, mono-forward bench aesthetic, rolled-up changelog + context-v across all three active children. - [ai-labs splash goes live — Pages workflow wired, base path corrected before first deploy](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-11_02/): Yesterday the splash was scaffolded assuming everything lived under `/ai-labs/`. But the GitHub repo is `lossless-ai-labs`. Without correcting the base path, Pages would have 404'd every internal link, image, sitemap entry, and OG URL on first deploy. This entry fixes that mismatch and adds the `.github/workflows/pages.yml` that bootstraps Pages on push to `master`. - [Pagefind lands on the ai-labs splash — search across the four-repo rollup](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-11_03/): The skill says every splash ships search-by-default and I had quietly demoted it to a follow-up. Caught. Pagefind is now wired: header popover with `/` shortcut, full `/search/` page, three filter facets (kind / from / tag), and the UI tokenized to the splash's three-mode contract. 38 detail pages indexed across ai-labs and its three children. - [A studies pass, a true-monorepo correction, and the seed of a Context Vigilance kit](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-08_01/): One day across ai-labs: a third study repo lands, the investment-memo orchestrator stops pretending to be a sibling and folds into memopop-ai where it has always belonged, memopop gains a /find-team Firecrawl command, and a new context-vigilance-kit submodule starts collating context-v/ files across the whole tree. - [Studies system kickoff — Open Specs & Standards, Memory Layers for Agents](https://lossless-group.github.io/lossless-ai-labs/changelog/2026-05-02_01/) ### augment-it - [Bolt-era Augmenter monolith reaches a working demo — React + Supabase + three LLM providers in one repo](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-01-18_01/): Before there was a federation, there was one big React app: Bolt-vibed, Supabase-backed, three LLM providers wired in, every screen in the workshop already shipping as a component. This is where we found out what the workshop wanted to be. - [First extraction attempt: record-collector as a standalone frontend — turso, then Supabase, then frozen](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-03-03_01/): Two months after the Bolt monolith hit working-demo state, we tried to peel record-collection off into its own frontend repo. Two days, three commits, one DB swap (turso out, Supabase in), then we set it down to think harder. - [Restart augment-it on turbo, rsbuild, and Docker — fresh scaffold, brand assets, monorepo discipline](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-07-25_01/): The bolt.new monolith had served its purpose. We tore the build system down to studs and rebuilt on a turborepo + pnpm + Docker base ready to host federated microfrontends. - [Module-federation starter lands: host shell, two microfrontends, shared UI package](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-07-25_02/): Tanuj brought up a minimal-but-real module-federation scaffold — a host shell that loads two remote microfrontends from the same monorepo, each exposing a Card component, all sharing a single ui package. - [Microfrontends become real submodules: record-collector, prompt-manager, request-reviewer get their own repos](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-07-25_03/): The two placeholder microfrontends got promoted out of the parent repo and into three named, independently-versioned submodules — the first concrete instance of the federation contract. - [Promote RecordCard out of the microfrontends and into shared/ui — one Card, many consumers](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-07-26_01/): The Card component was duplicated across two microfrontends. Tanuj lifted it into packages/ui as RecordCard, the first non-trivial component to live in the shared package — and the proof point for how cross-MFE components will work going forward. - [Comms documentation push — vision spec, architecture explainer, and prompts that travel with the project](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-08-01_01/): A 3,064-line documentation drop that gave augment-it a written voice — the kind of artifacts a new collaborator can read end-to-end before touching code. - [Move five loose specs into a specs/ folder — the start of a real documentation structure](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-08-06_01/): Five planning docs that had been sitting at the repo root got consolidated into specs/. A small move, but it set the precedent for where future specs would land. - [Scope the next phase: five GitHub issues opened across specs, visualization, and the legacy bolt monolith](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-08-10_01/): A morning of issue-triage turned the next month of augment-it work into five named threads — and named the loose ends honestly. - [RecordCollector analysis spec — 479 lines on the first microfrontend's shape, data contract, and integration points](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-08-11_01/): Before writing the next line of code in the record-collector submodule, we wrote down what it actually has to do — input shapes, output contract, edge cases, and where it sits in the broader workshop. - [Add a GitHub Pages splash for augment-it](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2026-05-12_01_Add-Splash-Page/): A small Astro site at splash/ that ships to GitHub Pages on push to main, renders the repo's changelog/ and context-v/ alongside curated copy about the six module-federated microfrontends. - [Augmenter App progress — API editor, response list, user profiles, highlighter, group-by-record](https://lossless-group.github.io/lossless-ai-labs/changelog/augment-it/2025-01-27/): A late-January progress update with embedded GIF demos from the pre-restart Augmenter App: API options and editor, response list, user profiles, highlighter, and grouping by customer. ### context-vigilance-kit - [Sitemap, robots.txt, and an OG card — the rest of the discovery surface](https://lossless-group.github.io/lossless-ai-labs/changelog/context-vigilance-kit/2026-05-11_01/): Saturday the splash started speaking llms.txt to LLMs. Tonight it learned to speak sitemap.xml to search engines, robots.txt to crawlers, and a 1024×1024 JPG to share-preview bots. The three audiences each get a machine-readable handhold pointed at the same corpus. - [Splash gets analytics — OpenPanel wired the same way as the others](https://lossless-group.github.io/lossless-ai-labs/changelog/context-vigilance-kit/2026-05-09_01/): Context Vigilance's splash now phones home to OpenPanel like its siblings — production-only, clientId-from-env, no secrets in the browser. The interesting part wasn't this wiring; it was figuring out why the other three splashes had been silently 401-ing for a day. - [llms.txt + llms-full.txt — give the model the corpus directly](https://lossless-group.github.io/lossless-ai-labs/changelog/context-vigilance-kit/2026-05-09_02/): The splash now serves the llms.txt standard at /llms.txt (a 132 KB link index, grouped by source repo) and /llms-full.txt (the full 5.7 MB corpus concatenated as raw markdown). LLM crawlers and agentic tools that follow the convention can ingest 460 hand-authored context-v documents in one fetch. - [First real splash — four-act narrative, Pagefind, and live deploy](https://lossless-group.github.io/lossless-ai-labs/changelog/context-vigilance-kit/2026-05-08_01/): Context Vigilance gets its public face: a dark-default engineer's-clipboard splash that walks readers through Hook → Practice → Proof → Invitation, opens with a Google-style 'what context do you need?' prompt over the 587-doc corpus, and ships to GitHub Pages on every push. ### dididecks-ai - [In-play classifier ranking lit, audits schema migrated to dual-surface, TOC redesign planned](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-17_01/): A++.2 closed: `/play/[slot].astro` now consumes ``, replacing the inline calmstorm-port chrome bars with the themable `` floating capsule and lighting up the in-play `` via the section-wrap adapter. Phase 1 of the TOC-redesign plan also shipped: the audits storage migrated from one-rating-per-(deck, variant, slot) (schema 1) to up-to-two-ratings-per-row keyed by surface (schema 2 — `{scroll?, play?}`), with an auto-migrating loader, a one-shot CLI migrator, and the chroma audits file rewritten in place against its 18-row backlog. And the workflow-shaped TOC the founder asked for — variants as columns, slots as rows, paired scroll-rating + play-rating chips per cell, per-column shippability rollup, per-row drift indicator — is now a written plan ready for execution. - [Calmstorm-decks auth gate fixed — prerendered Play routes were silently bypassing the middleware](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-17_02/): Mid-afternoon detour from the dididecks TOC redesign: the calmstorm-decks fundraise deck was stuck in an auth loop — submit `staycalm`, land on a page once, then every subsequent navigation bounced back to `/access`. Server logs said `[middleware] /play/variant/v2: no cookie → /access` even though DevTools showed `cs_session` sitting in the browser cookie jar with all the right attributes. The HAR export looked like the browser wasn't sending cookies at all. The real culprit, after three rounds of red herrings: `/play/variant/[variant].astro` and `/play/section/[slot].astro` both had `export const prerender = true`. In Astro 6 with `output: "server"`, prerendered routes serve through a code path where the middleware's request context doesn't surface the inbound `Cookie` header — so the cookie was being set correctly and sent correctly, but the middleware was structurally blind to it. Worse, in production those routes would be static HTML files served directly by the Vercel CDN, **bypassing the auth gate entirely**. Flipping both to `prerender = false` makes every request to a gated route flow through the middleware properly, in dev and prod. The auth hardening done before discovering the prerender issue (explicit `Set-Cookie` headers on manually-constructed redirect Responses in verify / logout / link redemption) stays — it removes ambiguity from a part of the stack that has bitten this codebase before. - [Play-UI gets a calmstorm-style full chrome — , audience-tier intent, single Switch-Variant menu](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-17_03/): After the morning's TOC matrix work and the calmstorm auth detour, the founder pulled up calmstorm-decks' /play surface and named what was missing from the shell side: the rich top-and-bottom border chrome that exposes section title, status rating buttons, variant cycle pill, audit link, keyboard hints, and variant switches. Today's third chunk lands that as `` — a new full-chrome component sitting alongside the existing floating `` capsule. The bigger move tucked inside it: a new orthogonal dimension on top of the shell's existing `surface` axis — `intent: "workflow" | "presentation"` — that gates which affordances render. Workflow chrome is the VC-firm / Lossless-Group authoring view (variant cycle pill, inline status, audit link, variant switches, 1-4 status keyboard). Presentation chrome is the end-user / LP view (exit, section title, counter, clean nav hints — no workflow controls at all). One URL parameter (`?intent=presentation`) swaps the whole thing. Two follow-ups baked in: an Astro scoped-CSS bug that was silently breaking the `C` chrome-toggle key, and a UX iteration that replaced the row of N-1 "Switch to {variant}" buttons with a single "Variant ▾" popover menu navigable by click or arrow keys. - [ iteration — vacuous-Ready bug fixed, rollups merged into one pill, variant filter chips, OPEN button retired, plan revised to keep per-variant TOC alive](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-17_04/): Three in-browser review passes on chroma's index produced four DeckMatrix refinements and one plan revision. The matrix the morning shipped was structurally right but visually noisy and wrong on two specific decisions — the per-surface rollup rendered as five separate count pills wrapping onto two lines per surface (ten pills per column for a 4-variant deck); the column-level OPEN link buried the scroll-vs-play surface distinction into one button that dumped readers into 'the deck' without saying which surface; and a `getStaticPaths`-free variant with zero slots was vacuously satisfying the Ready badge's 'no blockers found' check. Fixing those produced one larger consequence: the per-variant `/toc/[deck]/[variant]/` route, originally slated for deprecation-to-redirect in Phase 6 of the redesign plan, gets to stay alive — the deck-level matrix and the per-variant TOC serve different workflow needs (cross-variant comparison vs. land-in-one-variant), and the variant-name in each column header now links to the latter as the variant's landing surface. - [/data-assets/companies and /data-assets/people shell-injected; DeckStatsPanel lifts the homegrown chroma stats tile into shared shell ground](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-17_05/): Chroma's home page already had a reviewer audit panel — the four-tile row above the matrix counting variants, slide files, people, companies — but the People and Companies tiles pointed at /data/team/ and /data/investors/ which were never actual routes. The audit pages themselves existed in calmstorm-decks (as /data-assets/companies and /data-assets/people) but had never been ported to the shell. This entry closes both gaps. Two new shell-injected routes — /data-assets/companies and /data-assets/people — discover .md files via consumer-root Vite globs that catch both calmstorm's single-firm data layout (data/firms/{firm}/portfolio|team/) and chroma's multi-investor layout (data/investors/{firm}/portfolio/, flat data/team/) without configuration. A new shell component replaces chroma's local AssetsDataPanel, doing its own count math from registries + globs so the figures always match the audit pages. The work also surfaced three Astro-pipeline traps worth documenting: JSDoc terminators inside path strings, esbuild misclassifying inline block comments + slash-heavy regex literals as unterminated regex, and Astro's taking down a 373-row page over one corrupted SVG in the consumer's data tree. - [Themable chrome, DeckOverlay primitives, a living sitemap, and a status-discipline framework — four days of shell hardening](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-16_01/): After Phase A+ shipped `@dididecks/shell` to its first cross-client functional state on 2026-05-12, the next four days were spent giving the shell its bones: a calmstorm-grade themable chrome (with the `--ddd-chrome-*` CSS-custom-property contract), a `` + `/print` PDF-export route, the `` / `` paired-suffix discipline for any UI-mode-specific composition, a `context-v/sitemap/` living map that turns the shell's component+route surface into agent-readable mini-specs, and a status-discipline framework codified at the skill level that swept all nine plans into accurate state-of-record. None of this is shippable code-as-product on its own; together it's the architectural ledger that makes the next iteration tractable. - [Calmstorm-Decks UI + Component Library — patterns ready to seed every future client-site](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-12_01/): A long day inside calmstorm-decks surfaced four patterns that are now ready to migrate up the tree and seed every other client-site: a unified two-axis navigation grammar across Scroll and Play modes, a two-route discipline that splits the design contract from the component catalog, a typed component registry as single source of truth for both stakeholders and the embedded chat-composer, and a `ContentFit + swappable info-display` mechanic that ends the per-slide font-and-margin tuning war. None of these are calmstorm-specific. - [@dididecks/shell ships — the first cross-client capability in the pseudomonorepo](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-12_02/): DidiDecks just gained its first shared frontend module. `@dididecks/shell` — an Astro integration that wraps a client-site with shared chrome — boots inside chroma-decks today, injects a TOC route and a slide-ranking API, and operationalizes the Phase 1 → Phase 2 boundary of the deck-iteration workflow with a one-click `scaffold per-slide file` button. Each client-site stays a standalone repo deploying to its own Vercel project; only the shell travels. Along the way we learned why a workspace dep can't cross a `.npmrc` line that says `ignore-workspace=true` — a lesson the eventual publish solves cleanly. - [@dididecks/shell Phase A+ — global nav, in-scroll rank pill, /play runtime, two seeded slides](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-12_03/): Phase A shipped the integration that proved the architecture works. Phase A+ — landed the same day — closes the three concrete gaps the founder named seconds after first opening the smoke-test build. The shell now ships a global nav that auto-mounts on every shell-injected route, a floating `` that lets a founder rank slots from inside a scroll deck via IntersectionObserver, and a `/play/[deck]/[variant]/[slot]` runtime with keyboard nav (← / → / Space / Home / End / F / C / T / Esc) plus a friendly empty-slot placeholder. Two seed per-slide files in chroma — a faithful cover recreation and a redesigned ask — prove the rank → decompose → recreate loop end-to-end. The whole release moves the shell from `0.0.1` to `0.1.0-rc.0`. Workspace-link mode throughout; Phase A.7 publish still queued. - [Init dididecks-ai — repo scaffold, context-v migration, splash, client-sites re-parented](https://lossless-group.github.io/lossless-ai-labs/changelog/dididecks-ai/2026-05-11_01/): Promoted DidiDecks from `ai-labs/context-v/specs/` folder to a first-class child of the ai-labs pseudomonorepo — its own GitHub repo, its own three-tier branches, its own context-v/ + changelog/, its own splash, and the two driving client engagements re-parented from astro-knots. ### memopop-ai - [MemoPop's splash speaks all three discovery protocols — llms.txt, sitemap.xml, robots.txt](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/2026-05-11_01/): The memopop-site splash now serves the same machine-readable discovery surface that landed in context-vigilance-kit over the past two days, ported with the adaptations memopop needs — two content collections instead of one, provenance via `from` instead of `source_repo_slug`, and no publish gate to mirror. LLM crawlers get `/llms.txt` + `/llms-full.txt`, search engines get `sitemap-index.xml` + `robots.txt`, and the head of every page carries explicit `rel="sitemap"` and `rel="alternate" type="text/markdown"` hints. - [The Story So Far — memopop-ai From Empty Bun Workspace to Live Desktop Client](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/2026-05-01_01/): First changelog at the monorepo level. Catching up the eight days that took memopop-native from `bun create tauri-app` to a fullscreen client driving the orchestrator's HTTP API end-to-end. ### memopop-ai/memopop-native - [Open in Obsidian, Actually — Vault Detection and a Cleaner Deal Header](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-native/2026-05-17_01/): The 'Open in Obsidian' button was silently doing nothing. Turns out `open -a Obsidian /some/folder` is a no-op unless that folder *is* a vault — so we taught the app to walk up to the nearest `.obsidian/` and route through `obsidian://` URIs instead. While we were in there, the deal-workspace header that hosted that button got a long-overdue redesign. - [The Crew Shows Up — Live Character Indicators on the Run Panel](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-native/2026-05-03_01/): Six steam-punk character portraits — Financial-Analyst, Researcher, Writer, Editor, Fact-Checker, Scorecard-Generator — now sit above the JobView's 3-column grid during a memo run. The character whose stage is active glows with a slow breathing border; the rest stay visible but quiet. A live caption under the active character names the work in progress, swapping as the underlying milestones advance. The cast is authored in a single human-editable markdown file (`src/lib/characters.md`) — frontmatter holds names, stage mappings, default captions, and forward-compat agent-precise captions for v2. Mike retunes the wording without touching code. - [Brand Setup Lands — Paste a URL, Get a Populated Config](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-native/2026-05-01_01/): First post-memo onboarding step. Click 'Make this look like your firm →' in the JobView's success banner (or 'Brand setup →' in Settings), paste the firm's website URL, watch Claude tool-use its way through the homepage and a couple of linked pages, then review every field on a confirmation form before anything saves to disk. ~15s wall time, ~$0.05–0.15 per fetch via Haiku 4.5. Brand managers stay happy because every Claude guess — colors, fonts, logos, taglines — is editable with live swatches and logo previews before save. Output merges into io/{firm}/configs/brand-{firm}-config.yaml, deep-merging with the firm-creation scaffold so company.conventional_name is never clobbered. - [memopop-native Bootstrapped — Tauri 2 + Svelte 5 Inside the Bun Workspace](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-native/2026-04-27_01/): Stood up apps/memopop-native — a Tauri 2 desktop shell wrapping the investment-memo-orchestrator's CLIs — inside the existing memopop-ai Bun workspace. Verified prerequisites (Xcode CLI, Rust, Bun), updated Rust to current stable, scaffolded via bun create tauri-app with TypeScript + Svelte, brought the frontend stack to current within two safe waves (minor + coupled-major), added the four Tauri 2 plugins we'll need (shell, dialog, store, fs). Window opens, IPC works, baseline is clean. - [Settings + Firm Picker — First End-to-End Through the Transport Layer](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-native/2026-04-27_02/): First real feature in memopop-native: a Settings screen that picks the orchestrator repo path and the active firm, persisted across launches. Beneath the small UI, this lands the architectural seam — a Transport interface, a LocalTransport implementation backed by a single Rust api_dispatch command, and the first route (GET /firms) wired end-to-end. Every future action and query rides on this same rail; the eventual swap to a hosted Python server is now ~1 day of frontend work, not a rewrite. - [Full Onboarding Journey Lands — Outline Gallery, Firm Creation, Deal Capture](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-native/2026-04-27_03/): Built out the full onboarding user journey end-to-end against the Onboarding spec. Home view stops being Settings — it's now an outline gallery (or, on first launch, a single Browse-for-orchestrator panel). New users see comprehensive sample outlines first (the value), and only get charged onboarding taxes when they click 'Try this on a company →'. Firm creation is a small modal that snake_cases the input, scaffolds io/{slug}/configs/brand-{slug}-config.yaml with company.conventional_name only, and idempotently appends /io/*/ to the orchestrator's .gitignore. Deal capture (URL, optional name, deck, mode) collects inputs and confirms — the actual memo-generation runner is the next spec. New backend routes: GET /outlines, GET /outlines/{id}, POST /actions/create-firm. Auto mode session, no testing run yet. ### memopop-ai/memopop-orchestrator - [The Orchestrator Learns to Find a Team](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-05-08_01/): A new Firecrawl-driven pipeline walks any organization's website, finds the team page, extracts a structured roster, and back-fills missing socials by name. Phase 2 of Team-and-People-Metadata-Ingestion ships. - [Wire memopop-native to the FastAPI Sidecar — Tests, Rust Transport, Frontend SSE](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-05-01_01/): End-to-end integration of the desktop client with the orchestrator's FastAPI sidecar across four phases: pytest coverage on the server, a Rust transport layer with lazy spawn and /healthz poll, a TypeScript Transport implementation with SSE event subscription, and a Generate flow that streams milestones live into the UI. - [Milestones Out of the Logs, Files Into the Firm](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-05-01_02/): The sidecar gains structured milestone events extracted from agent prints, and a missing scaffold step that was sending firm-scoped runs to legacy output/. - [Hardened: Logs Land, Versions Bump, the Sidecar Heals Itself](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-05-01_03/): First contact with the desktop client surfaced four ways the orchestrator-as-a-service could go sideways. All four are closed in this pass. - [The Orchestrator Learns to Read a Website](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-05-01_04/): A new brand_fetch module drives a Claude tool-use loop over a firm's homepage, and two endpoints expose it. The HTTP surface keeps growing; agents stay untouched. - [The Orchestrator Got an HTTP Front Door](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-04-30_01/): The investment memo orchestrator has been a 30-agent Python CLI for months — you type a company name, wait 15 to 45 minutes, and a fully cited 50-file deal memo lands in `output/`. It just works. Now it also speaks HTTP. - [Interactive Terminal Application with Rich Framework](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-24_01/): New guided CLI application that walks users through memo generation, export, and iteration without requiring knowledge of individual commands, flags, or file paths. - [Assure Proper Integration of Table of Contents](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-23_01/): The Table of Contents was consistently missing from final memo output despite the `toc_generator` agent running successfully mid-pipeline. Two separate ordering bugs caused the TOC to either never generate or get destroyed before finalization. - [Assure Consistent Workflow and Codify Docs — Fact-Check Pipeline & Source Catalog](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-23_02/): Introduces a three-step LLM-powered fact-check pipeline (extract → verify → correct) and a per-section comprehensive source catalog. The mechanical-only fact-checker is upgraded to use Perplexity Sonar Pro for independent claim verification and Claude for surgical corrections. - [Assure Disambiguation During Research](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-23_03/): Strengthens entity disambiguation to prevent research agents from conflating similarly-named organizations. Adds both improved prompt language and a mechanical post-synthesis override that forces correct company identity regardless of what the LLM returns. - [Enforce Correct Citation Spacing with Mechanical Agent](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-23_04/): New pipeline agent that mechanically enforces correct markdown citation spacing — no LLM, pure regex. Fixes the recurring problem of clumped, duplicated, and improperly spaced citations that affect Obsidian rendering, HTML/PDF exports, and readability. - [Introducing the One-Pager Generator](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-23_05/): New pipeline agent and standalone CLI tool that distills the full investment memo into a single-page visual summary. Serves as both a standalone deal teaser and a cover sheet for the full memo export. - [Centralize Final Draft Path Logic & Bump Prefix to 7](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-17_01/): Consolidated all final draft file resolution into `src/final_draft.py` and bumped the canonical prefix from `6` to `7`. Previously, three agents each had their own inline glob logic to locate the final draft — now they all call shared utility functions. - [Table Generator CLI Tool](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-17_02/): New standalone CLI for running the table generator agent outside the full pipeline. Scans memo sections and structured state data for tabular data opportunities, generates markdown tables, and inserts them into section files. - [Deck Slide Classification & Placement Overhaul](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-10_01/): Rewrote the deck screenshot classification, naming, and injection system to fix two core problems: (1) Claude Vision was misclassifying slides because it only had 7 vague categories to choose from, and (2) the injection agent was spamming sections with duplicate, poorly-placed im… - [Competitive Landscape Research & Evaluation System (Initial Implementation)](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-03-10_02/): Two new agents that discover, evaluate, and classify competitors using Perplexity Sonar Pro. The system splits competitive analysis into two phases with opposing cognitive biases: the researcher uses **completion bias** to find as many candidates as possible, while the evaluator… - [New Module: Research PDF Scraper](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-01-28_01/): A complete standalone module for parsing market research PDFs (McKinsey, CB Insights, PitchBook, Gartner, etc.) into markdown with properly formatted Obsidian-style citations. - [Citation Pipeline Fixes: Alphanumeric Key Support & Duplicate Section Prevention](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2026-01-27_01/): Fixes to the citation pipeline addressing two critical issues: (1) the writer agent's regex only matched numeric citation keys (`[^1]`) and missed alphanumeric keys (`[^deck]`), causing citation loss during polishing; and (2) the citation enrichment agent was appending duplicate… - [Citation Pipeline Fixes: Definition Preservation & Duplicate Key Handling](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-12-16_01/): Critical fixes to the citation pipeline that were causing citation definitions (the source references at the bottom of files) to be lost during processing. - [Fix: 12Ps Scorecard Section Excuses in Final Draft](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-12-09_01/): This release fixes an issue where the 12Ps Scorecard Summary section (section 08) would contain LLM "excuses" instead of actual scorecard data. - [Refactor: Centralized Final Draft Module & Artifact Renumbering](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-12-09_02/): This release refactors final draft operations into a single centralized module (`src/final_draft.py`) and updates the artifact numbering scheme. - [Fix: Resume Workflow Uses Wrong Paths for Firm-Scoped IO](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-12-09_03/): When resuming a workflow with `cli/resume_from_interruption.py` for firm-scoped deals, the writer agent would use legacy `output/` paths instead of firm-scoped `io/{firm}/deals/{deal}/outputs/` paths. - [Dimension-Grouped Questions for 12Ps Framework](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-12-06_01/): Fixed a critical issue where Perplexity was returning garbage/meta-commentary for non-standard section names like "Opening" and "Organization" in the 12Ps outline. - [Scorecard Integration into Workflow](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-12-06_02/): This release adds automatic 12Ps scorecard integration to the memo workflow. Previously, the scorecard evaluator generated detailed scores in `5-scorecard/12Ps-scorecard. - [Disambiguation Exclusion List: Explicit Wrong-Entity Filtering](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-12-05_01/): This release adds explicit wrong-entity exclusion to the disambiguation system. Deal configurations can now specify a `disambiguation` array of URLs/domains that belong to **different companies** with similar names. - [Firm-Scoped IO System: Complete Implementation](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-12-02_01/): This release completes the firm-scoped IO system, enabling private, firm-specific configurations, inputs, outputs, and exports. The system allows each firm (e.g. - [Summary](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-30_01/): Added a comprehensive scorecard evaluation system that scores completed investment memos against a structured 12-dimension framework (12Ps: Persona, Pain, Proposition, Problem, Possibility, Positioning, People, Process, Product, Potential, Progress, Plan). - [Summary](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-30_02/): Began major refactor to reorganize the flat `data/` and `output/` directories into a hierarchical `io/` directory organized by firm and deal. This enables private git submodules for firm-specific data while keeping the orchestrator open-source. - [Summary](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-30_03/): Completed the firm-scoped IO path resolution system, enabling deals to be stored in `io/{firm}/deals/{deal}/` with automatic fallback to the legacy `data/` and `output/` directories. All agents now pass the `firm` parameter through the workflow. - [CLI Utilities for Fund and Company Memos](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-28_01/): Added a focused set of CLI tools to tighten the memo workflow end-to-end: - [Entity Disambiguation System Implementation](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-28_02/): --- - [Canonical Draft Assembly Tool](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-28_03/): --- - [Standalone CLI Tools for Post-Generation Enrichment & Evaluation](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-28_04/): --- - [Summary](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-28_05/): Added explicit "Venture Capital mindset" framing to all memo-writing agent prompts to ensure generated content focuses on opportunity and upside rather than defaulting to Private Equity-style skepticism. - [Emerging Manager Outline with Proprietary Scorecard Vocabulary](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-27_01/): Created a comprehensive outline for evaluating LP commitments to emerging manager VC funds, integrating Hypernova Capital's proprietary 12-dimension GP evaluation framework directly into the memo generation system. - [Scorecard Agent & CLI Implementation](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-27_02/): Implemented the Scorecard Agent and CLI tool to automatically generate Hypernova Capital's 12-dimension scorecards for emerging manager fund commitment memos. This completes the scorecard system introduced in changelog 2025-11-27_01. - [Dataroom Analyzer Agent System & Export Improvements](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-26_01/): Introduced a new multi-agent dataroom analyzer system for processing investment datarooms, plus improvements to trademark handling and export versioning. - [Competitive Extractor & Separated Artifact System](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-26_02/): Implemented Phase 2 of the Dataroom Analyzer: the Competitive Extractor. This extracts and synthesizes competitive landscape data from battlecard PDFs and outputs structured analysis as separate, numbered artifact files for better manageability. - [Cap Table & Financial Extractors](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-26_03/): Added two new extractors to the Dataroom Analyzer: Cap Table Extractor and Financial Extractor. These complete the core Phase 2 extractors for investment dataroom analysis. - [Traction Extractor](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-26_04/): Added the Traction Extractor to complete Phase 2 extractors (4 of 5). This extractor pulls customer metrics, revenue data, pipeline information, and partnerships from pitch decks and other traction-related documents. - [Team Extractor - Phase 2 Complete!](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-26_05/): Added the Team Extractor, completing all Phase 2 extractors (5/5). The dataroom analyzer now extracts comprehensive structured data from investment datarooms. - [Table of Contents Generator Agent](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-26_06/): Added a new TOC Generator agent that automatically creates a Table of Contents with working anchor links for the final investment memo. The TOC includes main sections (h2) and subsections (h3) that function in both HTML and PDF exports. - [Phase 3: Data Synthesis & Cross-Reference](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-26_07/): Added the Synthesizer module to cross-reference data across all extractors, detect conflicts, identify data gaps, and generate a unified view of company metrics with confidence scores. - [Project Restructuring: CLI, Tools, and Scripts Organization](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-23_01/): Major refactoring to organize 38 scattered Python files and shell scripts into logical directories, improving developer experience and project maintainability. - [Resume Workflow Implementation](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-23_02/): Implemented checkpoint-based resume functionality to recover from workflow interruptions without losing progress or re-running expensive API calls. System now detects completed agents from saved artifacts and resumes execution from the last successful checkpoint. - [PDF Export Quality & Branding Improvements](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-23_03/): Enhanced PDF export quality with proper logo rendering, Unicode symbol support, and GHCP Partners brand configuration. Fixed critical rendering issues that caused logo distortion and citation symbols to display incorrectly in WeasyPrint-generated PDFs. - [Tier 1 Anti-Hallucination System: Prompt Engineering Fixes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-22_01/): Implemented comprehensive prompt engineering fixes to eliminate LLM fabrication of pricing, revenue, traction, and financial metrics in investment memos. - [Perplexity Premium Sources Integration: @Syntax Quality Control](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-22_02/): Integrated Perplexity's `@source` syntax into the research workflow to ensure high-quality data from premium sources like @crunchbase, @pitchbook, @statista, and @cbinsights. - [Tier 2 Anti-Hallucination: Fact-Checker Agent Implementation](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-22_03/): Implemented the fact-checker agent to prevent hallucinated metrics and claims in investment memos. This agent verifies all factual claims against research sources, catching fabricated revenue figures, pricing data, customer counts, and other metrics before final memo assembly. - [Image-Based PDF Support: Batch Processing with Claude Vision API](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-21_01/): Complete implementation of image-based PDF deck analysis using Claude's Vision API with intelligent batch processing. This solves the recurring issue of Docsend-exported decks that contain only images with no extractable text. - [Perplexity Citation Integration: Research-First Architecture](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-21_02/): Complete integration of Perplexity Sonar Pro for section-specific research WITH citations as a core part of the memo generation pipeline. This fundamentally changes the architecture from "write then add citations" to "research with citations then polish. - [Major Architecture Refactor: Section-by-Section Processing](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-20_01/): Complete refactor of the enrichment pipeline to process memo sections individually rather than as a single monolithic document. This eliminates API timeout issues and enables proper citation management with Perplexity Sonar Pro. - [Overview](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-19_01/): Major architectural improvements to prevent API timeouts through section-by-section processing, plus comprehensive brand expansion with MaC VC assets and SVG logo support. - [Overview](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-18_01/): This session focused on building and refining a comprehensive export/conversion system for investment memos, enabling professional PDF generation with Hypernova Capital branding. - [Multi-Brand Export System](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-18_02/): Implemented a comprehensive multi-brand export system that allows managing and exporting memos for multiple VC firm clients from a single installation. - [PDF Edge-to-Edge Backgrounds & Brand Config Reorganization](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-18_03/): Solved a critical PDF rendering issue where page backgrounds didn't extend to all edges and content lacked proper per-page spacing. Discovered WeasyPrint's `@page background-color` property enables edge-to-edge colored backgrounds while maintaining proper content margins on every… - [Obsidian-Style Citation Consolidation for HTML Exports](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-18_04/): Implemented automatic citation consolidation in HTML exports to match Obsidian's footnote behavior. When Perplexity AI cites the same source multiple times using `[^2]` throughout the markdown, Pandoc was incorrectly converting each instance into a separate numbered footnote, res… - [Milestone: Complete Enrichment System + Deck Analyst Agent Implementation](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-17_01/): --- - [Week 1 POC Complete](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-16_01/): Historical entry — Core Multi-Agent System, Templates & Style Guides, CLI Interface. - [Git Commit Message - Week 1 POC Complete](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-16_02/): --- - [Milestone: Artifact Trail System + Citation-Enrichment Agent](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-16_03/): --- - [Milestone: Deck Analysis Agent + Dual-Template/Mode System + Enhanced Citation Enrichment](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/2025-11-16_04/): --- - [memopop-ai/memopop-orchestrator/releases/v0.2.2-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.2.2-release-notes/) - [memopop-ai/memopop-orchestrator/releases/v0.3.0-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.3.0-release-notes/) - [memopop-ai/memopop-orchestrator/releases/v0.3.3-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.3.3-release-notes/) - [memopop-ai/memopop-orchestrator/releases/v0.3.4-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.3.4-release-notes/) - [memopop-ai/memopop-orchestrator/releases/v0.4.1-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.4.1-release-notes/) - [memopop-ai/memopop-orchestrator/releases/v0.4.3-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.4.3-release-notes/) - [memopop-ai/memopop-orchestrator/releases/v0.5.0-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.5.0-release-notes/) - [memopop-ai/memopop-orchestrator/releases/v0.5.1-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.5.1-release-notes/) - [memopop-ai/memopop-orchestrator/releases/v0.5.2-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.5.2-release-notes/) - [memopop-ai/memopop-orchestrator/releases/v0.5.3-release-notes](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-orchestrator/releases/v0.5.3-release-notes/) ### memopop-ai/memopop-site - [Splash upgrade — three-mode theming, peer-walking discovery, context-v archive, and Pagefind](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-site/2026-05-06_01/): memopop-site catches up to the astro-knots/splash conventions that crystallized after this site was originally built. The marketing prose stays; everything underneath gets rebuilt around two-tier tokens, a three-mode (light · dark · vibrant) toggle, a monorepo-aware discovery layer that auto-surfaces new apps, a brand-new /context-v/ archive alongside /changelog/, build-time Pagefind search across both, and a custom MemoMark logo. - [memopop-site Ships — GitHub Pages Live with a Submodule-Powered, Cross-Project Changelog Hub](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-site/2026-05-04_01/): From an empty Astro starter to a deployed splash page in a single session. Dark Lossless redesign, a click-to-expand GUI callout, and — the centerpiece — a permissive content-collection renderer that turns four scattered project-level changelogs into one unified timeline. - [Monorepo Foundation: Scaffold memopop-ai with Astro Site and SvelteKit App](https://lossless-group.github.io/lossless-ai-labs/changelog/memopop-ai/memopop-site/2025-12-27_01/): Established the production-grade memopop-ai monorepo with Bun workspaces, Astro marketing site, SvelteKit web app skeleton, and shared Tailwind configuration. ## Context-V Specs, explorations, plans, prompts, blueprints, and reminders from across the workspace — the durable thinking that lives next to the code. Convention from [`lossless-monorepo/context-v`](https://github.com/lossless-group/lossless-monorepo/tree/main/context-v) and codified in the `context-vigilance` skill. ### ai-labs - [Add a Chroma Local UI Interface](https://lossless-group.github.io/lossless-ai-labs/context-v/plans/Add-Chroma-Local-UI-Interface/): Local Chroma in PersistentClient mode is an embedded SQLite library with no UI of its own. Three paths to a browseable surface — from a 30-line inspect script tonight to a /chroma route in the splash later — laid out in increasing commitment. - [ChromaDB as Context Improvement Across Everything, Everyone](https://lossless-group.github.io/lossless-ai-labs/context-v/explorations/ChromaDB-as-Context-Improvement-Across-Everything-Everyone/): Skeptical of vector databases at our scale until a founding-team demo showed me the product is no longer 'a place to put embeddings' — it is an ingestion layer for agent traces, session transcripts, and ambient developer signal that a small team can bend toward almost anything. - [Collate Context Files into Context Vigilance as Repo & Project](https://lossless-group.github.io/lossless-ai-labs/context-v/explorations/Collate-Context-Files-into-Context-Vigilance-as-Repo-&-Project/): A long-running, everywhere-distributed practice — context-v/ across a tree of pseudomonorepos — finally graduates into a project of its own, with a collator, a splash, and a vector index. - [Context Vigilance Splash Page — Narrative Brief](https://lossless-group.github.io/lossless-ai-labs/context-v/plans/Context-Vigilance-Splash-Page-Narrative/): Designer brief for the Context Vigilance splash. The functional plumbing exists; the structural skills are codified elsewhere. This doc is only about the *story* — the four-act narrative arc and the emotional move each act should produce. - [explorations/When-Claud-Code-and-When-Pi](https://lossless-group.github.io/lossless-ai-labs/context-v/explorations/When-Claud-Code-and-When-Pi/) - [In-App Agent Chat — Core Package Spec](https://lossless-group.github.io/lossless-ai-labs/context-v/specs/In-App-Agent-Chat-Core-Package/): Concretizes the chat-as-agent-surface exploration into a shippable package: capability registry schema, BYOK storage and proxy contract, chat UI component API, transcript schema, and a v1 acceptance scenario for dididecks. One shared package under ai-labs/packages/, per-app capability definitions, three guards that keep the agent inside our methods. - [In-App Agent Chat — Walking Skeleton Plan](https://lossless-group.github.io/lossless-ai-labs/context-v/plans/In-App-Agent-Chat-Walking-Skeleton/): Starter kit for tomorrow's session. Three days of conversation have produced an exploration, a spec, a memory-layers exploration, and a tenancy decision. This plan turns all of it into one session's worth of concrete work: scaffold the package, do the Chroma tenant migration, settle two open questions that block everything downstream, and ship slide.read end-to-end as the proof the abstractions hold. - [In-App Chat as the Agent Surface for Client Apps](https://lossless-group.github.io/lossless-ai-labs/context-v/explorations/In-App-Chat-as-Agent-Surface-for-Client-Apps/): Instead of trying to fit dozens of anticipated client requests — 'redesign this slide', 'run the writer agent on the updated research', 'export in my brand kit' — into navigation, buttons, and command menus across dididecks-ai, memopop-ai, and augment-it, wire up a single chat surface inside each app that calls an LLM with our patterns, skills, and project context already loaded. Paying clients use our keys; lingering post-engagement clients bring their own. The chat is the menu. - [Memory Layers for the In-App Chat Package](https://lossless-group.github.io/lossless-ai-labs/context-v/explorations/Memory-Layers-for-the-In-App-Chat-Package/): The chat surface in dididecks-ai, memopop-ai, and augment-it will only feel 'within our system' if the agent on the other side has fast, cheap, accurate access to our patterns, prior decisions, project state, and what it already learned about this specific client. This explores how the eight memory systems pinned in studies/memory-layers-for-agents map onto roles in the chat package, what we'd pick for v1 given that we already lean on Chroma, and what to defer. - [Preferred Stack — uv over pip, and other defaults](https://lossless-group.github.io/lossless-ai-labs/context-v/reminders/Preferred-Stack/) - [Shared Auth for Applied AI Labs](https://lossless-group.github.io/lossless-ai-labs/context-v/explorations/Shared-Auth-for-Applied-AI-Labs/): We're about to need a real auth story across three sibling apps in ai-labs — memopop-ai, dididecks-ai, and the just-arriving augment-it. None of them is at the scale that justifies Auth0/Clerk pricing or robustness. We want a small, owned auth system that handles OAuth (GitHub + Google Workspace), pre-shared invites delivered by WhatsApp or 1Password, organization-scoped permissions, and a viewer-tier for memos and decks published on client subdomains — with a roll-up seam stubbed from day one so we can wire cross-app dashboards later without rewriting clients. - [Track and Ingest Lossless Content into Chroma (with Change Detection)](https://lossless-group.github.io/lossless-ai-labs/context-v/plans/Track-and-Ingest-Lossless-Content-into-Chroma/): A second ingestion pipeline parallel to the context-v corpus — for the ~5K Lossless content files scattered across the monorepo. Driven by its own sources map, with content-hash-based change detection so re-runs only re-embed what actually changed. - [Write Custom Chroma MCP Server (v0: a session-transcript ingester)](https://lossless-group.github.io/lossless-ai-labs/context-v/plans/Write-Custom-Chroma-MCP-Server/): Defer the community djm81/chroma_mcp_server. Roll our own session-transcript ingester that writes into the same Chroma instance our corpus already lives in — preserving the metadata alignment that lets us cross-query corpus and conversation history together. ### augment-it - [Changelog entries duplicated across augment-it/changelog/ and content/changelog--laerdal/](https://lossless-group.github.io/lossless-ai-labs/context-v/augment-it/issues/Changelog-Duplicated-Across-Splash-And-Laerdal-Collection/): Eleven backfilled augment-it changelog entries currently live in two places. Either location can be the source of truth — but right now both are, and updates have to be made twice. - [context-v for augment-it](https://lossless-group.github.io/lossless-ai-labs/context-v/augment-it/README/): Living documentation for augment-it — specs, habits, prompts, reminders, explorations, issues. ### context-vigilance-kit - [Code-Comment Sections as Context-V Source](https://lossless-group.github.io/lossless-ai-labs/context-v/context-vigilance-kit/explorations/Code-Comments-Sections-as-Context-V/): JSDoc treats code comments as the source of truth for API documentation. The same move might work one level up — treating *certain section-level comment blocks* in a codebase as the source of truth for context-v entries that today live as standalone markdown. The question is which kinds of context belong embedded in source files versus floating beside them. - [Tidy Context Vigilance Files Across All](https://lossless-group.github.io/lossless-ai-labs/context-v/context-vigilance-kit/plans/Tidy-Context-Vigilance-Files-Across-All/): A phased, manifest-driven plan to bring every context-v file in the corpus to a state we are proud of — starting with the most-developed docs, fanning out to idea-started ones, with concurrent duplicate detection and ruthless decisions on merge / kill / relocate as we go. ### dididecks-ai - [/api/slide-decompose — non-destructive stub generator for the Phase 1 → Phase 2 transition](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/routes/api-slide-decompose/): Dev-only API route that writes an empty per-slide stub file at `{slidesComponentsRoot}/{variant}/{slot}-{slug}.astro` in the consumer's working tree. Non-destructive: refuses to overwrite, returns 409 if the file already exists. The stub is a minimal `
` with a generated-by header comment instructing the recreate-do-not-extract discipline (Phase 2 of the deck-iteration-workflow). Static Vercel builds never carry this route; file writes only happen against a local working tree. - [/api/slide-rank — read + write per-slide classifier state into the consumer's audits file](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/routes/api-slide-rank/): Dev-only API route (`prerender = false`) that reads + writes the audit registry at the consumer's `data/audits/slides.json` (default path; configurable via the integration options). GET returns the full ranks map; POST upserts a single `{deckSlug, variantSlug, slot, status}` entry with `rankedAt` ISO timestamp + `rankedBy: 'founder'`. Status `'pending'` is the implicit default — never persisted; a POST with `status === 'pending'` deletes the existing entry. Fails-soft in production static builds (the route doesn't exist there, both GET and POST 404 — SlideRankPill catches and degrades to read-only). - [/dev/icons — recurring design-review workbench](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/routes/dev-icons/): Originally a one-off Phase 4 review surface for the dual-surface icon pair on the TOC redesign. Founder picked Pair B 'Frameless glyphs' on 2026-05-17; rather than delete the route, the pattern was kept: a single /dev/* page per project that renders every candidate for a visual-primitive decision side-by-side at multiple sizes, on multiple backgrounds, inside the real composed context (chip-next-to-icon, drift case, missing-file dimmed case). Alternates live one directory deeper at `apps/deck-shell/src/components/icons/alternates/` and remain importable so the design history stays legible. Future icon families, chip variants, badge styles, button states extend this route with additional sections rather than spawning a new /dev/* route per decision. - [/play/[deckSlug]/[variantSlug]/ — variant-index redirect to slot 01](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/routes/play-index/): Enumerates every (deck, variant) pair from the consumer's deck registry and 302s to /play/{deck}/{variant}/01/. Today the redirect is unconditional; A++.1 will gate it on `SLOTS[variantSlug]?.length` and render a friendly 'no slots yet' panel for variants without entries (currently chroma's proto, enhanced-v1, enhanced-v2 — all return 404s after the redirect because `[slot]` only emits paths from SLOTS). - [/play/[deckSlug]/[variantSlug]/[slot]/ — single-slot Play-UI renderer with keyboard nav](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/routes/play-slot/): Static route emitted for every slot in `SLOTS[variantSlug]`. Resolves the slot's `slug` from the registry, then dynamic-imports the per-slide component at `/src/components/slides/{variant}/{slot}-{slug}.astro` via `import.meta.glob` and renders it inside SlideCanvas; falls back to DecomposeFirstPlaceholder if the file doesn't exist. Today the route directly composes DididecksNav + DeckChrome + SlideCanvas inline; the target shape composes them via `DeckOverlay--Play-UI`, which also wraps the slide in `
` so SlideRankPill mounts work (closes A++.2 structurally). - [/toc/[deckSlug]/[variantSlug]/ — bird's-eye-view audit dashboard with rank pills + scaffold buttons](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/routes/toc/): Static table-of-contents route emitted for every (deck, variant) pair in the consumer's `DECKS` registry. Renders one row per slot from `SLOTS[variantSlug]`, each row showing the slot number, title, five rank pills (mirroring SlideRankPill's enum), a scaffold button that POSTs to /api/slide-decompose, and — when the per-slide file exists — a `[view →]` link to `/play/{deck}/{variant}/{slot}/`. The TOC is the read-only-on-deploy / read-write-in-dev audit surface; it complements (does not replace) the in-place SlideRankPill on scroll-deck routes. - [Chroma Brand & Deck Notes (pre-scaffold)](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/explorations/Chroma-Brand-and-Deck-Notes/): Source-of-truth design tokens, typography, and content-source notes for the upcoming `chroma-decks` client-site. Extracted directly from trychroma.com's production CSS bundle and the Alpha Partners investment memo. Lives in dididecks-ai/context-v/explorations/ until Phase 2 of [[../plans/Init-Chroma-Decks-Client-Site]] scaffolds the chroma-decks repo — at which point this file's substance is promoted into `chroma-decks/DESIGN.md` (Stitch-spec format). - [Chroma-Decks Parity with Calmstorm-Decks, and the Path to a Shared Deck UI Module](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/explorations/Chroma-Parity-and-the-Path-to-a-Shared-Deck-UI-Module/): Calmstorm-decks carries roughly forty UI feature-surfaces that chroma-decks does not yet have. Initial framing weighed three paths (verbatim port, abstract-while-porting, full monorepo split); dialog landed on a fourth and lighter shape — the wrapping UI becomes `@dididecks/shell`, an Astro integration published to a private pnpm-scoped npm registry, consumed by each client-site's `astro.config.mjs`. Each client-site stays a standalone repo with its own Vercel deploy; content stays put; only the chrome travels. Phase A is the TOC + slide-ranking UI inside the shell, which doubles as the Phase 1 → Phase 2 tooling from the `deck-iteration-workflow` skill. - [ChromaDB · Deck Outline · Enhanced-v1](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/narratives/ChromaDB_Deck-Outline__Enhanced-v1/): The first enhanced variant of Chroma's Series A pitch — diverging from Proto by integrating founder call notes (2026-04-29), live-checked primary sources (2026-05-12), and a tightly-screened layer of analyst-cited category framing. Adds three substantive new slides (Market, Backed by, Capital Efficiency) plus a reframed Use of Funds; locks in the funding picture, the syndicate, the enterprise ASP, and the Q4 2026 revenue milestone. Authored as one coherent through-line so design improvisation can reason about the deck holistically. Management (Jeff Huber) screens before send. - [ChromaDB · Deck Outline · Proto](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/narratives/ChromaDB_Deck-Outline__Proto/): The faithful-recreation baseline of Chroma's live Series A pitch — 13 slides ported from the management-supplied PDF (2026-05-11_Chroma-Series-A_MS-Resort.pdf) into the chroma-decks codebase. This is the substrate every subsequent whole-deck variant (Enhanced-v1, etc.) diverges from. - [Componentize Slides and Establish Component Library](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Componentize-Slides-and-Establish-Component-Library/): Walk the calmstorm-decks slide deck page-by-page, extracting raw inline HTML+CSS into a properly-taxonomized Astro component library while simultaneously building the design system that backs it. The end state: every slide variant composes from named, reusable parts; `components/basics/` stops being a dumping ground; and the work doubles as the first concrete proof of the sibling Visual-and-Diagram-Component-Library spec. - [DeckChrome — themable floating navigation capsule for Play-UI (and eventually Scroll-UI variant cycling)](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/components/DeckChrome/): Floating bottom-right capsule with paginator, ← / → slot nav, TOC link, optional ↑ ↓ variant cycling, and the full keyboard contract (← → Space PageUp/Down Home End F C T Esc). Replaces v0.1's heavy dark PlayChrome bar. Structure / behavior / styling are separated by discipline: structure is the Astro template, behavior is the inline keyboard script and `ddd:section-*` event dispatch, styling reads only `--ddd-chrome-*` CSS custom properties (neutral defaults inline; consumer overrides at any wrapping element). Lives inside `DeckOverlay--Play-UI` as the default `nav` slot today; will also serve as the variant-cycling element of `DeckOverlay--Scroll-UI` under Phase 2. - [DeckOverlay--Play-UI — the floating overlay layer for Play-mode decks](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/components/DeckOverlay--Play-UI/): Single mount point for /play/[deck]/[variant]/[slot]/ that composes DeckChrome (paginator + slot-step nav + keyboard contract) and SlideRankPill (classifier) above the active slide, plus named slots for Phase 3 presenter notes and Phase D telemetry. Wraps the slide in a `
` so SlideRankPill's existing IntersectionObserver finds exactly one section — the play-mode adapter is the section-wrap itself, no special play-mode prop required. Sets `data-play-root` + `data-chrome-hidden` so DeckChrome's `C` keypress fades the whole overlay together. - [DeckOverlay--Scroll-UI — the floating overlay layer for Scroll-mode decks](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/components/DeckOverlay--Scroll-UI/): Single mount point that composes the persistent overlay affordances riding over a Scroll-UI deck: the classifier pill (today), variant-cycling nav + counter (Phase 2 via PageAsDeckWrapper), presenter notes (Phase 3), and engagement telemetry (Phase D). Each is a named slot so consumers can rearrange or omit. The overlay element itself is layout-neutral (`display: contents`) — its children own their own fixed/absolute positioning. The Scroll-UI variant of this paired family; see DeckOverlay--Play-UI for the slot-per-route sibling. - [DecomposeFirstPlaceholder — empty-slot fallback rendered when a per-slide file doesn't exist yet](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/components/DecomposeFirstPlaceholder/): Rendered by `/play/[deck]/[variant]/[slot]` when the resolved per-slide file at `{slidesComponentsRoot}/{variant}/{slot}-{slug}.astro` does not exist. Communicates the next action — open the TOC at `?focus={slot}`, rank as redo-worthy, click scaffold to create the stub — without sounding like an error state. The instructive-helpful tone is deliberate: this is the framework's invitation to begin the rank → decompose → recreate loop, not an Astro 404. - [Dididecks-AI: Business Model Exploration](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/explorations/Dididecks-AI-Business-Model/): Build in public, copyleft where we can, copyright where it matters, hosted + Forward Deployed humans as the real growth engine. This is the option-space; sign-off on a model is downstream of usage signal. - [Dididecks-AI: DD-Ready Citation and Source-Access System](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/specs/Dididecks-AI-DD-Ready-Citation-and-Source-Access/): Every claim in a Due Diligence deck must be backable — by an academic-grade citation, a sourceable artifact, and a downloadable trail that a receiving decision-maker can pull on without asking the sender for permission. - [Dididecks-AI: Slide Decks as Code](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/specs/Dididecks-AI-Slide-Decks-as-Code/): A code-first paradigm for slide deck generation, iteration, and management — where AI coding assistants treat slides as components, decks as repositories, and presentations as living, versioned software rather than artifacts trapped in proprietary binary formats. - [Dididecks-AI: Visual and Diagram Component Library](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/specs/Dididecks-AI-Visual-and-Diagram-Component-Library/): DD-grade decks lean on a wide universe of recurring visual primitives — concept diagrams, mental models, classification schemes, frameworks. A reusable, AI-composable library of these primitives is what lets each new deck reach 'wow' without re-drawing from scratch. - [DididecksNav — shell-injected global header linking Scroll · TOC · Play · Changelog](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/components/DididecksNav/): Top-of-page nav auto-mounted on every shell-injected route (/toc/*, /play/*) and importable into consumer-owned routes (homepage, scroll-deck variants). Links derive from the consumer's deck registry — Scroll → first deck slug, TOC and Play → first deck + first variant. Brand slot lets each client deck drop in its own wordmark; default is a text wordmark sourced from the integration's `client` option. Reads `Astro.url.pathname` to flag the active link with `aria-current="page"`. - [Init Chroma Decks Client-Site](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Init-Chroma-Decks-Client-Site/): Stand up `client-sites/chroma-decks` for an early-growth-stage portfolio company raising a round — radically improve the founder's existing materials, marry them with MemoPop-generated investment memos and market research, and use the engagement to harden the calmstorm-decks template into a reusable client-site baseline. - [Init DidiDecks as Core Submodule of AI-Labs](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Init-DidiDecks-as-core-Submodule-of-AI-Labs/): Carve out dididecks-ai as its own repo and re-attach it to ai-labs as a git submodule, following Lossless pseudomonorepo discipline — branch-aligned tiers, rollup-friendly context-v, splash-page on day one, and the parent's gitlink as the single point of truth. - [Phase A+ — In-Deck Ranking, Shared Nav Chrome, and a Working /play Runtime](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Phase-A-Plus-In-Deck-Ranking-Shared-Nav-and-Play-Runtime/): After Phase A landed `@dididecks/shell` with a working TOC + slide-ranking API + decomposition-stub generator, three concrete gaps surfaced on first founder smoke-test: no global navigation chrome connecting Scroll · TOC · Play, no way to rank a slide *from within* the scroll deck (you have to leave for a separate route), and nothing to verify the /play runtime works because the shell injects no /play route yet and chroma has no per-slide files for one to render. Phase A+ closes all three together — shell-injected global nav, a shell-exported `` floating overlay the founder drops into the scroll deck via data-attrs, a minimum-viable `/play/[deckSlug]/[variantSlug]/[slot]?` route with ← / → keyboard nav, and two seeded per-slide files in chroma so the whole loop (rank → decompose → recreate → present) is provable end-to-end. All in workspace-link mode; Phase A.7's publish step is orthogonal. - [Phase A++ — Play Fidelity, In-Play Ranking, and Variant URL Safety](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Phase-A-Plus-Plus-Play-Fidelity-In-Play-Ranking-and-Variant-URL-Safety/): Phase A+ shipped the global nav, the floating in-scroll rank pill, a working `/play` runtime, two seeded per-slide files, and the TOC `[view →]` link — all the surfaces the founder asked for. Day-of smoke-test surfaced three concrete gaps: `/play/pitch/proto/` 404s because the proto variant has no `SLOTS[]` entry yet (the index-redirect was unconditional), the Play runtime doesn't yet have the elegant UI of calmstorm-decks (chrome feels like a dev tool, not a presentation surface), and the `` is mounted in `/scroll` but not in `/play` even though the founder is reading-and-judging slides there too. Phase A++ closes all three without touching Phase A.7's still-blocked publish step, and seeds the calmstorm-primitive lift the larger Phase B will continue. - [Plans Inventory 2026-05-16 — Post-DeckOverlay, Post-/play-Chooser-Fix, Post-Status-Sweep](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/explorations/Plans-Inventory-2026-05-16/): Snapshot of `dididecks-ai/context-v/plans/` as of 2026-05-16, four days after Phase A+ shipped and two days after the Restore-Calmstorm-Nav-Elegance partial landed. Supersedes `Plans-Inventory-and-Phase-A-Outcome.md` (which froze at 2026-05-12 and predates the Scroll-UI/Play-UI framing correction). Designed for a cold-start future-session land: what shipped, what's running, what's actively partial, what's deferred, and three reasonable directions for the next iteration. - [Plans Inventory and Phase A Outcome — What Shipped, What Remains, and the Three Gaps the Founder Surfaced on First Smoke-Test](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/explorations/Plans-Inventory-and-Phase-A-Outcome/): Four plans live in `dididecks-ai/context-v/plans/`. Two have been fully executed (the dididecks-ai monorepo init and the chroma-decks scaffold). One is partly executed (Phase A of `@dididecks/shell` — A.1 through A.6 working in workspace-link mode; A.7 publish is administratively blocked). One is fully deferred (the slide componentization sweep, which now retargets into the shell). After landing the shell today, the founder smoke-tested the running surface and named three concrete gaps: no global navigation chrome, no in-scroll-deck slide-rank UI (a feature neither calmstorm nor chroma has today), and no per-slide static HTML files to feed a `/play` runtime. The next plan — Phase A+ — closes those three in a single coherent slice. - [Port Enhanced-v2 Scroll Slides to Static 16:9 Play Slides for PDF Export](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Port-Enhanced-v2-Scroll-Slides-to-Static-16x9-Play-Slides-for-PDF-Export/): The scroll deck for chroma's pitch/enhanced-v2 is shippable by the founder's design eye, but its sections live in a scroll-flow context — `min-h-screen` heights, brand-orb gradients that bleed across section boundaries, the customer marquee animation — that won't export cleanly to PDF. This plan ports each of the 16 v2 sections, non-destructively, into static 16:9 per-slide files under `src/components/slides/enhanced-v2/{slot}-{slug}.astro` so the existing /play/[deck]/[variant]/[slot]/ runtime renders them at a predictable aspect ratio. Then a one-shot print route stacks all 16 vertically, ⌘P saves as PDF, deck ships to founder tonight. Tomorrow's Phase A++ (calmstorm-grade /play chrome + SlideCanvas/ContentFit lift) is orthogonal and not blocked by this. - [Redesign TOC as a Deck-Level Dual-Surface Review Matrix](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Redesign-TOC-as-Deck-Level-Dual-Surface-Review-Matrix/): Today's `/toc/[deck]/[variant]/` answers a build-system question ('which slot has a Play-UI file?') when the deck-iteration-workflow centers on a workflow question ('where am I in the review cycle, and which variant is closest to shippable?'). The calmstorm-decks `/index` shows the right shape: variants as columns, slides as rows, a review-status chip per cell. We go one step further than calmstorm: each cell carries TWO chips, one per surface — scroll-review and play-review — because the workflow reviews each slide twice (once during scroll-iteration, once after porting to Play-UI). The goal the matrix should make obvious at a glance: find a single column where every slide is ≥ passable on both surfaces, with as many ★s as possible. Drift between scroll-rating and play-rating is itself a workflow signal (the port may have lost fidelity). This redesign migrates the audits schema from one rating per (slot, variant) to two ratings, makes the SlideRankPill surface-aware, builds a new `/toc/[deck]/` deck-level matrix route, and keeps the per-variant `/toc/[deck]/[variant]/` route alive as the variant landing/index — distinct purpose from the matrix. [Original lede said "folds the per-variant TOC into a redirect"; revised 2026-05-17 in-flight when in-browser review made clear the two surfaces serve different workflow needs.] - [Refactor scroll-ported slides into true static play-format slides (per-client, repeat for every deck)](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Refactor-Scroll-Ported-Slides-to-Static-Play-Format/): Operational plan, reusable across every dididecks client engagement, for converting per-slide files that were COPIED from scroll-deck sections (and therefore still carry scroll-mode idioms — vw/vh/clamp viewport units, IntersectionObserver-driven reveals, marquees, transitions, breakpoint media queries) into the static-only HTML/CSS/Tailwind form @dididecks/shell's /play and /print routes require. The calmstorm-decks `src/slides/by-title/` fileset is the reference implementation; this plan extracts its discipline so any client deck (chroma-decks today, future engagements tomorrow) can be ported the same way. Includes the rationale, the checklist, the per-slide procedure, the verification loop, and the anti-patterns to flag during code review. - [Restore Calmstorm's nav-chrome elegance as themable shell primitives (separate structure/behavior from styling)](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Restore-Calmstorm-Nav-Elegance-as-Themable-Shell-Primitives/): @dididecks/shell v0.1's PlayChrome solved the navigation contract but discarded calmstorm-decks' deliberately elegant chrome — floating bottom-right capsule, glassy white/grey/black, fade-on-idle, two-axis nav (variant cycling + section walking), custom tooltips, tabular-num counter — and replaced it with a heavy dark bottom bar that always claims viewport real-estate. This plan lifts the calmstorm chrome forward as package-level primitives in apps/deck-shell/, with structure and behavior cleanly separated from visual styling via a CSS-custom-property theming contract. Consumers (chroma-decks today; future client sites tomorrow) inherit a sensible neutral default (calmstorm's plain white/grey/black) when client-specific tokens aren't supplied, and override with their own design system when they are. Hybrid of port-and-replace + re-skin: port the bones, ship the calmstorm look as the universal fallback, then let chroma-decks (and others) light them up with their own brand. - [Sitemap — Living Map of the DidiDecks Universal-Frontend-over-Client-Decks Architecture](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/README/): A living mini-spec per artifact (route, component, per-slide component) across the dididecks-ai shell and its client-site consumers. Splits across two levels: this directory describes the *universal* shell artifacts inherited by every client deck; per-client overrides and consumer-authored artifacts live in each `client-sites//context-v/sitemap/`. Each entry is short, kept up-to-date with the running code, and cross-linked so an agent reading any one file can trace composition, theming inheritance, and the plan-of-record that produced it. - [SlideCanvas — pure-CSS 16:9 wrapper that scales a 1920×1080 stage to fit any canvas](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/components/SlideCanvas/): Per @dididecks/shell contract, rendered play decks must be static HTML + CSS — no JS in the scaling pipeline. SlideCanvas uses CSS container queries (`container-type: size`) to compute a unitless scale ratio from canvas size to the design size (1920×1080 by default), then applies `transform: scale()` to a `position: absolute` stage. `min(100cqw/designW, 100cqh/designH)` picks whichever axis is the binding constraint so the slide letterboxes correctly when canvas aspect ≠ 16:9. The route's `[slot].astro` is responsible for sizing the canvas; this component just translates that size into a scaled stage. - [SlideRankPill — floating five-button classifier for the active slot (rename pending → SlideClassifierPill)](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/sitemap/components/SlideRankPill/): Bottom-right floating pill that shows the active slot's number + title and exposes five enum buttons — Urgent / Could-be-better / Passable / Perfect / Pending. In Scroll-UI it discovers the active slot via IntersectionObserver over `section[data-slot][data-variant]` tags; in Play-UI the DeckOverlay--Play-UI wraps the slide in such a section so exactly one is in view. Hydrates ranks from `GET /api/slide-rank` on mount, posts optimistically on click, fails-soft in production builds. Rename to `SlideClassifierPill` is queued — 'classify' matches the cognitive act more accurately than 'rank' (the enum is a finite tag set, not an ordering). - [Stand Up @dididecks/shell and Ship the Chroma TOC + Slide-Ranking UI](https://lossless-group.github.io/lossless-ai-labs/context-v/dididecks-ai/plans/Stand-Up-Dididecks-Shell-and-Ship-Chroma-TOC-Ranking/): Phase A of the exploration that landed on `@dididecks/shell` as the path to chroma-↔-calmstorm parity. Scaffold `apps/deck-shell/` inside the dididecks-ai monorepo as an Astro integration; ship two seed routes (TOC + slide-ranking pills) and one decomposition-stub generator that bridges the deck-iteration-workflow Phase 1 → Phase 2 transition; install in `client-sites/chroma-decks/` first via local link, then via a v0.1.0 publish to a private pnpm-scoped npm registry. Each client-site stays a standalone repo on its own Vercel project; the shell is the only thing that travels. ### memopop-ai - [Add People Crawl Command to MemoPop Native](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/plans/Add-People-Crawl-Command-to-Memopop-Native/): Wire the orchestrator's `extract_team_roster` command into the MemoPop Native UI as a per-investor button — and as a batch action that runs it 5–20 times per memo, once for each co-investor in the round. - [An Onboarding User Journey for memopop-native](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/specs/An-Onboarding-User-Journey-for-Memopop-Native/): Experiences win on Onboarding. This spec outlines a user journey for onboarding users to memopop-native. - [Character Cast for Live Agent Indication](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/specs/Character-Cast-for-Live-Agent-Indication/): Personify the orchestrator's agents as a cast of named, faced characters. A row of portraits sits above the run panel; the ones currently doing work glow, with a live caption underneath describing what each is up to right now. - [Crawl for Better Team Structured Output](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/explorations/Crawl-for-Better-Team-Structured-Output/): Building a team slide takes analysts 1–2 hours of clicking. The orchestrator already writes prose about teams; what it doesn't do is hand back the structured roster — names, titles, durable photo URLs, professional socials — that the MemoPop app needs to render cards. Here's the option space for closing that gap. - [Curating Only Valid Sources Across Runs](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/explorations/Curating-only-valid-Sources-across-Runs/): The memo pipeline ran ChromaDB seven times and emitted seven source catalogs. Merging them produced 392 'unique' entries that were mostly the same dozen URLs recycled across sections, half of them dead pages returning HTTP 200. Here's what's broken and how curation has to handle it. - [MemoPop AI — Ideogram OG Image Brief](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/MemoPop-Creative-Brief/): Creative brief for generating OpenGraph and changelog hero images via Ideogram. A house-style prefix and suffix that any per-image scene description plugs into so the family stays coherent across the splash page, changelog entries, and context-v notes. - [memopop-ai/plans/Generate-DD-Questions-&-Checklist](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/plans/Generate-DD-Questions-&-Checklist/) - [memopop-ai/plans/Include-Validation-Analysis-as-Action-Items](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/plans/Include-Validation-Analysis-as-Action-Items/) - [memopop-ai/Preferred-Format-for-Changelog](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/Preferred-Format-for-Changelog/) - [memopop-ai/Tasks](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/Tasks/) - [memopop-ai/Up-and-Running-with-Tmux](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/Up-and-Running-with-Tmux/) - [Moving an Agent Orchestrator to an API](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/explorations/Moving-an-Agent-Orchestrator-to-an-API/): The orchestrator is a Python CLI today. To plug it into memopop-native, we need an HTTP-shaped surface. Three options, ranked by effort and time-to-value. - [Separating Retrieval from Generation in Agent Pipelines](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/explorations/Separating-Retrieval-from-Generation-in-Agent-Pipelines/): When the same LLM agent both searches the web and writes the prose that cites those searches, it can't help fabricating URLs. This is not a bug — it's the predictable failure mode of asking one cognitive process to do two different jobs. Here's the agent topology that makes citation hallucination structurally impossible. - [Team and People Metadata Ingestion](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/plans/Team-and-People-Metadata-Ingestion/): Six phases to take any company URL → structured TeamRoster JSON the MemoPop app can render as cards. Each phase ships independently and is verifiable on its own. - [Upgrade the MemoPop AI splash with three-mode theming, context-v rollup, peer-aware discovery, and Pagefind](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/plans/Upgrade-Memopop-Splash-with-Themes-Context-V-and-Pagefind/): The current memopop-site shipped fast but pre-dates the conventions astro-knots/splash settled into a few days later. This plan brings memopop-site up to that bar — three-mode toggle on a two-tier token system, a context-v archive alongside the existing changelog, peer-directory rollup that walks the monorepo (apps/* and packages/*) instead of children, and Pagefind across both archives — without touching the design language. Implementation is free to invent its own visual identity; this plan only locks down the mechanics. - [Where Investor-Firm Rosters Live](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/explorations/Where-Investor-Firm-Rosters-Live/): When a deal artifact bundle includes the investor's team roster, where does that roster live? Inside the deal folder it duplicates on every co-investor; in a global firms index it loses deal context. Stub for a real exploration. ### memopop-ai/memopop-native - [memopop-ai/memopop-native/Issues-after-First-Run](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-native/Issues-after-First-Run/) ### memopop-ai/memopop-orchestrator - [Dataroom Analyzer Agent System Plan](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/specs/Dataroom-Analyzer-Agent/): A comprehensive plan for implementing a multi-agent dataroom analysis system that intelligently recognizes, categorizes, and extracts information from diverse document types in investment datarooms. - [Deck Analyzer Agent](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/specs/Deck-Analyzer-Agent/): A specialized agent for extracting structured data and visual screenshots from pitch decks (PDF and PowerPoint) to bootstrap investment memo generation. - [Format Memo According to Outline Input](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/reminders/Format-Memo-According-to-Template-Input/): Refactor the investment memo system to use YAML-based content outlines that agents can reference for structure, guiding questions, and vocabulary. - [Generate Investment Memo for Portfolio Company](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/reminders/Generate-Investment-Memo-for-Portfolio-Company/): Create investment opportunity briefs that match Hypernova's analytical voice, format, and depth using AI-assisted generation with structured inputs and validation. - [Generic competitor analysis enhancement, post-hoc and re-runnable](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/plans/Generic-Competitor-Analysis-Enhancement/): Move competitor research/evaluation from a one-shot pipeline step into a re-runnable, configurable enhancement — driven by `.md` + frontmatter schemas, applicable to any version of any memo, surfaced in memopop-native. - [Generic scorecard generation across firms and outlines](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/plans/Generic-Scorecard-Generation/): Refactor the scorecard agent + CLI from hardcoded Hypernova/fund-only to a generic renderer driven by `.md` + frontmatter scorecards, then surface it in memopop-native on the deal page. - [Git Submodules for Private Data and Exports](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/blueprints/Git-Submodules-for-Private-Data-and-Exports/): Configure git submodules to enable private GitHub repositories for sensitive company data inputs and branded memo exports, while keeping the main orchestrator repo public/shareable. - [Improve Investment Memo Output](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/issue-resolution/Improving-Memo-Output/): Improve the quality and depth of investment memos generated by the Investment Memo Orchestrator. - [Interactive Terminal Application — Easy Interface for Casual Users](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/specs/Interactive-Terminal-Application-Easy-Interface-for-Casual-Users/): A guided CLI application that walks users through memo generation, export, and iteration without requiring knowledge of individual commands, flags, or file paths. - [Introducing a Competitive Landscape Research and Evaluation System](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/specs/Introducing-a-Competitive-Landscape-Research-and-Evaluation-System/): Two coordinated agents—a Competitive Landscape Researcher and a Competitive Landscape Evaluator—that produce accurate, validated competitor analysis by combining multi-query web research with structured relevance screening. - [Introducing a Content Density Mode System](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/Introducing-a-Content-Density-Mode-System/): A system-level content mode toggle (redundant vs concise) that alters the behavior of the writer, table generator, and quality agents to match different firm preferences for information density and repetition. - [Introducing a Diagram Generator Agent](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/specs/Introducing-a-Diagram-Generator-Agent/): Add a diagram_generator.py agent that identifies opportunities to create visual diagrams explaining complex business concepts, starting with TAM/SAM/SOM market sizing and expanding to common finance and consulting visuals. - [Introducing a Legal Doc Comparator](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/Introducing-a-Legal-Doc-Comparator/): An agent that compares deal-specific legal documents (SAFEs, convertible notes, term sheets, incorporation docs) against firm-maintained standard templates, surfacing deviations and flagging common legal risks using a shared reference document. - [Introducing a One-Pager Cover Sheet and Export](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/specs/Introducing-a-One-Pager-Cover-Sheet-and-Export/): A post-pipeline agent and CLI tool that distills the full investment memo into a single-page visual summary, usable as both a standalone deliverable and a cover sheet prepended to the full memo export. - [Introducing a Table Generator Agent](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/specs/Introducing-a-Table-Generator-Agent/): A post-writer enrichment agent that identifies tabular data opportunities in memo sections and generates markdown tables with overflow anchor linking, configurable column schemas, and firm-specific customization. - [Introducing an Augment Research Writer Agent](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/Introducing-an-Augment-Research-Writer-Agent/): A two-phase post-hoc enrichment system that first enhances research files with authoritative third-party citations via Perplexity Sonar Pro, then runs an augmentation writer that weaves those new citations into existing section prose without rewriting content. - [Introducing an Enrich Visualizations Agent](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/Introducing-an-Enrich-with-Visualizations-Search-Agent/): An enrichment agent that discovers and embeds publicly accessible charts, graphs, diagrams, and infographics from web sources to visually reinforce key claims in investment memos — the automated equivalent of grabbing charts from Google Image search. - [Introducing Investigate Capital Syndicate with Detailed Artifacts](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/specs/Introducing-Investigate-Capital-Syndicate-with-Detailed-Artifacts/): A research agent that investigates every investor, fund, family office, and financial institution on a company's cap table and in the current round — producing detailed profiles, pattern analysis, and signal extraction for investment decision-making. - [memopop-ai/memopop-orchestrator/blueprints/Ideal-Information-Hierarchy-Applied-to-Markdown-Headings](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/blueprints/Ideal-Information-Hierarchy-Applied-to-Markdown-Headings/) - [memopop-ai/memopop-orchestrator/Getting-Started-with-Tauri](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/Getting-Started-with-Tauri/) - [memopop-ai/memopop-orchestrator/prompts/Integrate-an-AI-Provider](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/prompts/Integrate-an-AI-Provider/) - [memopop-ai/memopop-orchestrator/reminders/The-Voice-and-Purpose-of-Changelogs](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/reminders/The-Voice-and-Purpose-of-Changelogs/) - [Migrate `studies/open-specs-and-standards/` into its own pseudo-monorepo](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/plans/Migrating-Study-to-its-own-Pseudomonrepo/) - [Model Scorecard Agent and Template System](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/blueprints/Model-Scorecard-Agent-and-Template-System/): Add proprietary investment scoring frameworks to memo generation, enabling VC firms to systematically evaluate and communicate their differentiated investment thesis. - [Multi-Agent Orchestration for Investment Memo Generation](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/Multi-Agent-Orchestration-for-Investment-Memo-Generation/): An exploration into using AI supervisors and specialized agents to generate high-quality content and documents. - [PDF Parser Agent Specification](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/specs/Introducing-a-PDF-Parser-Agent/): A small specification for an agent and script to parse PDFs and convert them to markdown with properly formatted citations. - [Portfolio Listing Agent and Current Portfolio Section](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/Portfolio-Listing-Agent-and-Current-Portfolio-Section/): Design notes for the portfolio_listing_agent that builds a Current Portfolio subsection and structured JSON for LP-commit emerging manager fund memos. - [Trustworthy Citations: Source Harvester Rollout](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/plans/Trustworthy-Citations-Source-Harvester-Rollout/): Where we are after the ChromaDB curation post-mortem, why the existing anti-hallucination work hasn't held, and the concrete six-phase plan to make fabricated URLs structurally impossible — starting with cheap fixes that block the bleeding and ending with a Source Harvester / Section Writer split. - [Wire memopop-native to the FastAPI sidecar](https://lossless-group.github.io/lossless-ai-labs/context-v/memopop-ai/memopop-orchestrator/plans/Wire-Memopop-Native-To-The-FastAPI-Sidecar/): End-to-end plan for closing the loop from Tauri click to live log stream — Rust dispatcher forwards JSON, browser EventSource handles SSE, sidecar spawns lazily.