A studies pass, a true-monorepo correction, and the seed of a Context Vigilance kit
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.
A studies pass, a true-monorepo correction, and the seed of a Context Vigilance kit
Why Care?
Today is a structural day, not a feature day. Three things that had been drifting in the wrong shape got pulled back into the right shape, and one new thing got planted that we expect to outgrow this repo within a few weeks.
The reason to care, even if you do not work in ai-labs directly: the way we organize evidence (studies), products (true monorepos vs. pseudomonorepos), and practice (Context Vigilance) is the substrate every other piece of work sits on. When that substrate is sloppy, every downstream agent session pays for it. When it is clean, the next person — human or model — can pick up where we left off without re-deriving the layout. Today was a substrate day.
If you are reading this from a rolled-up feed, the headline is: Context Vigilance is graduating from a practice into a project, and the first concrete artifact of that graduation — context-vigilance-kit/ — now exists.
What's New?
studies/data-analytics-specifications-and-standardsadded as the third study repo underlossless-group/study-*, alongsideopen-specs-and-standardsandmemory-layers-for-agents. Pinned references for Data Package, Parquet, Arrow, Vega-Lite, Plot, and ggsql — the open, machine-validatable specs across the analytics stack. The study README atstudies/README.mdnow lists all three.open-specs-and-standardsitself got a curation pass — submodule pointer bumped to a state that includes a workingmcp-apireference sitting next to the MCP spec, rather than just the spec text alone.investment-memo-orchestratorremoved as a sibling submodule ofai-labsand folded intomemopop-ai/as a nested submodule. The Python orchestrator is now part of the memopop-ai true monorepo (where the FastAPI sidecar lives next to the desktop client that imports it), instead of pretending to be an independent peer of memopop-ai inside theai-labspseudomonorepo. The.gitmodulesdiff and theD investment-memo-orchestratorline ingit statusare the visible footprint of this correction.memopop-ai gained a
/find-teamFirecrawl command that takes a firm and returns stable team assets and socials — driven by the new explorationmemopop-ai/context-v/explorations/Crawl-for-Better-Team-Structured-Output.mdand the planmemopop-ai/context-v/plans/Team-and-People-Metadata-Ingestion.md. This is the first concrete piece of the brand/team auto-fetch arc that the 2026-05-01 catch-up changelog flagged as the natural next memopop feature.context-vigilance-kit/initialized as a new submodule on thedevelopmentbranch — a collator that walks everycontext-v/directory across the lossless tree (and beyond), buckets files by depth of completion, and prepares them for ingestion into a ChromaDB-backed corpus. v0 is real: 583 files inventoried, splash page rendering 573 of them, smoke-tested end-to-end against Chroma. Detail in the kit's own README.Eight new context-v files at the
ai-labslevel, all driving or scoping the above:explorations/Collate-Context-Files-into-Context-Vigilance-as-Repo-&-Project.md— the parent scoping document for the kit.explorations/ChromaDB-as-Context-Improvement-Across-Everything-Everyone.md— why ChromaDB, why now, why us.explorations/When-Claud-Code-and-When-Pi.md— division-of-labor between the two AI surfaces.plans/Track-and-Ingest-Lossless-Content-into-Chroma.md,plans/Add-Chroma-Local-UI-Interface.md,plans/Write-Custom-Chroma-MCP-Server.md,plans/Context-Vigilance-Splash-Page-Narrative.md— the work-breakdown.reminders/Preferred-Stack.md— keeping the stack choice durable across sessions.
.mcp.jsonat project scope wires the Chroma MCP server into Claude Code so the kit's Chroma collection is queryable from any session opened inside theai-labstree, without per-session re-config.
Studies: Three Pinned Reading Lists
The studies directory now reads:
studies/
├── data-analytics-specifications-and-standards/ ← NEW today
├── memory-layers-for-agents/
└── open-specs-and-standards/Three studies is the threshold where the pattern starts paying for itself. Any one of them is "a folder of submodules"; three of them, named for their domain questions, start to behave like a small library. The discipline — read from the pinned upstream, do not paraphrase from training data — is what the studies/CLAUDE.md file enforces session by session.
The data-analytics study answers a question we have been circling for months: when we eventually ship analytics surfaces (in tidyverse, in content-farm metrics, in any of the splashes), which spec converges across the ecosystem, and which is one project's idiosyncratic choice? Pinning Data Package, Parquet, Arrow, Vega-Lite, Plot, and ggsql side by side lets the answer come from cd studies/data-analytics-specifications-and-standards/<name>/ rather than from a hot take.
The investment-memo-orchestrator correction
This one is the most boring and the most important.
For a stretch, investment-memo-orchestrator lived as its own submodule under ai-labs/, parallel to memopop-ai/. That layout encoded a wrong claim: that the orchestrator was a peer product of the desktop client. It is not. The FastAPI sidecar lives at investment-memo-orchestrator/src/server/, the Tauri shell imports from there, and the two are deployed together. They belong in a true monorepo, not a pseudomonorepo with a handshake between them.
Today the layout caught up to the reality. The submodule got removed from ai-labs/.gitmodules and re-attached as a nested submodule inside memopop-ai/. The git status line D investment-memo-orchestrator is the parent's view of that move; the corresponding M memopop-ai line is the gitlink bump that the parent has not yet been told to take — consistent with the team's "submodule propagation" preference of letting parents be tidied deliberately rather than auto-bumped.
For agent sessions: when working on the FastAPI surface, you are now inside memopop-ai/, not ai-labs/. The auto-memory entry pointing FastAPI to investment-memo-orchestrator/src/server/ still resolves correctly — the path is just one submodule deeper than it used to be.
memopop-ai: a /find-team command
The 2026-05-01 catch-up changelog at memopop-ai/changelog/2026-05-01_01.md named "branded export flow" as a natural next feature, and called out the agent-driven version that auto-fetches colors/fonts/logos from a firm's website URL as the promising shape. /find-team is the first concrete piece of that.
It uses Firecrawl to crawl a firm site for team-page signals and returns structured output suitable for ingestion into the firm's brand config. Two driving documents:
memopop-ai/context-v/explorations/Crawl-for-Better-Team-Structured-Output.md— why a structured-output crawl beats a generic scrape for this task.memopop-ai/context-v/plans/Team-and-People-Metadata-Ingestion.md— how the captured data flows into the firm config and (eventually) into branded export.
The command is operational; the next memopop changelog will narrate end-to-end results once enough firms have been run through it.
context-vigilance-kit: practice → project
The longest-running theme in this tree is Context Vigilance — treating every file handed to an AI collaborator with the same rigor as code. We have practiced it for ~1.5 years across every context-v/ directory in the lossless monorepo. Until today, there was no project that aggregated the practice.
Today there is. context-vigilance-kit/ is registered as a submodule of ai-labs on its development branch, and the v0 corpus is real:
| metric | count |
| total files | 583 |
worked-on (≥500 content lines) | 110 |
idea-started (100–499 content lines) | 263 |
stub (<100 content lines) | 210 |
| without YAML frontmatter | 59 |
context-vigilance-kit/
├── sources.md ← curated source dirs (assembled, then human-curated)
├── corpus-manifest.md ← per-file triage (yaml + content lines, bucketed)
├── skills-manifest.md ← agent skills inventory (tracked separately)
├── scripts/
│ ├── assemble-context-v-sources.py
│ ├── build-corpus-manifest.py
│ ├── build-skills-manifest.py
│ ├── collate.py
│ └── smoke-test-chroma.py
├── corpus/ ← collated output (gitignored)
└── splash/ ← Astro 5 catalog of every collated fileThe boundary that took the longest to get right was location, not flag. corpus/ lives outside context-v/ so the ai-labs splash rollup (which walks context-v/ directories) does not pick up duplicates of files already collated from their original homes. Per-file private: true is the escape hatch for edge cases the location boundary does not cover.
Why this is in ai-labs even though Context Vigilance applies everywhere: ai-labs is the pseudomonorepo for AI experiments graduating into real products. The kit is one of those experiments-becoming-a-product. The collator's reach up into lossless-monorepo/ and across siblings is a feature of what it does, not a constraint on where it sits.
The kit will graduate to its own repo at lossless-group/context-vigilance-kit and re-attach as a single submodule when v0.1 is ready to leave the nest. v0 stays here.
Notes for the Roll-Up
This entry assumes it will be read from three different feeds: this repo's own changelog, the lossless-monorepo parent splash once it surfaces ai-labs, and (eventually) the org-wide Lossless Changelog. The lede is the only handhold in the bigger feeds — it tries to carry the day's structural arc on its own.
The memopop-ai 2026-05-08 changelog (separate, lives at memopop-ai/changelog/) covers the /find-team command and the orchestrator-folds-in move from inside that repo's perspective. This entry is the ai-labs view of the same day.
