Monorepo Reorg (rylobasic)
Linear: RYR-232 — werkzeug CVE bump (hardening #9) (2026-07-23 vault→Linear audit) Verification correction (2026-07-24): Hardening #9 (werkzeug CVE) is DONE — all 6 pos-* services already pin
werkzeug==3.0.6(verified 2026-07-24). (RYR-232 canceled)One-line description. The 5 split repos (platform, CCPJ, content, capri, systems) are now one monorepo at
~/rylobasic/, organized by deliverable instead of by tech layer.
Why
The work used to live in 5 repos split by tech layer. Infra in one. Source in another. Content, brand, and personal tooling each in their own. That split solved the wrong problem. It broke every real system into pieces and scattered them across repos with no single owner.
The setter program was the clearest example. Its code, schema, skills, and runtime sat in 5 different places. One system. Five homes. No owner. The fix is one monorepo organized by the thing you actually ship. Each system owns one folder with all its parts: code, schema, skills, runtime, docs, and project history. Context travels with the work.
Current state
The migration itself is done. ~/rylobasic/ is the only live repo. All 5 source repos are GitLab-archived and held locally read-only at ~/_archived-*-2026-05-15 for a 30-day cold-storage window. The 24h prod watch closed 2026-05-16 after two waves of leftover path landmines were found and fixed.
The active work is the post-cutover hardening campaign. The 2026-05-17 Drift-Reconciled audit verified every claim-bearing doc against the live repo/GCP and the GitLab monorepo-hardening issues drive the rest. Shipped: the full doc-drift batch (every DRIFT-REPORT row merged, ONBOARDING de-CCPJ rewrite, GitLab #7 closed), the view-apply bridge + A5 baseline + v_function_health dead-man's-switch (built and live), and the GitLab #6 canary (the named silent-no-ship handler fixed, deployed, proven live). The reliability half remains: close #2/#3 on an observed natural run, then #1/#4/#5.
Update 2026-06-13 — Terraform CI governance shipped (tf-automation, phases 1–5). Every Terraform root (the 11 pos-* plus the orphans shared, hiring-foundation, bq-bulletproof-dataform, gitlab-runner) is now governed from one filesystem-derived source (infra/terraform/lib/tf-roots.sh): terraform plan renders on every MR; in-place-update plans auto-apply on merge while create/destroy plans gate to a manual-approval job; and a daily drift report auto-heals in-place drift (a stray label or console edit reconciles itself) while filing create/destroy or failed-apply drift into one GitLab issue. This closes the earlier "non-tfvars changes need manual apply" gap (supersedes MR !517). The self-hosted CI runner also now sleeps 11:30pm–6:30am CT (cost decision 2026-06-11) with auto-retry on spot-VM preemption — overnight pipelines queue until wake by design.
- Status: done (migration complete; the post-cutover hardening campaign is tracked in the Trustworthy Monorepo umbrella plan)
- Last update: 2026-06-13 — Terraform CI governance (tf-automation, all roots) + CI runner nightly sleep schedule shipped (see Update above). Prior: 2026-05-20 hardening consolidation into the umbrella plan.
- Working plan: the hardening campaign was consolidated 2026-05-20 into Trustworthy Monorepo (umbrella plan). This hub stays for portfolio-level context; the day-to-day worklist lives in the umbrella.
- Closed today (2026-05-20): GitLab #1 (self-test CI gates via MR !160), #4 (eliminated by monorepo consolidation). Plus MRs !157/!158/!159/!161 ship cron de-stagger, B4 trigger widening, dead-
action_completionsremoval + canary-pattern extension to coaching/dashboard. - Blocked on: #2/#3 close is gated on a clean natural
pos-monitoring-function-healthrun. Two recent open orphans (coaching_dashboard5/19 12:00Z;mentor_block_sync5/20 17:30Z) still in window. Earliest realistic clean run: 2026-05-22 12:00Z or 5/23 12:00Z depending on whether mentor_block_sync recurs.
Next 3 actions
(See umbrella plan for the full done-when table.)
- Wrap up Fix 4 (SIGTERM-aware wrapper) —
infra/shared-libs/lib/execution_logger.pyenhancement + hermetic test. Independent of observation gate; can ship in parallel. - Observation gate closure for hardening #2 + #3 on the first natural
{failed:0}run. - Start hardening #6 fleet sweep (51 silent-no-ship overlay files remaining after today's coaching/dashboard addition).
Decisions log
- Portfolio organization framework — every project ties to the 4/26 framework.
- 8 migration decisions locked 2026-05-13 (monorepo at
~/rylobasic/,git subtreeper repo for history, invert all 7 CR services into thin wrappers, 7 separate TF state prefixes, MCPs colocate with their data-platform, handlers own env reads per ADR-0002, Dataform consolidates BQ DDL per ADR-0003). Full text in the plan and the memory file.
Open issues
The migration + post-cutover prod watch are closed:
- Wave-1 residual landmines — MR !66 (ntreis, memo-scanner, 28 stale CLAUDE.md banners, de-vacuumed the CI path gate)
- Wave-2 runtime-assembled landmines — MR !67 (auto-runner restored, watchdog phantom-dir bug, gate hardened to catch
Path.home()/"CCPJ"style assembly) - Passive: 30-day cold-storage hold on
~/_archived-*-2026-05-15(no action — just elapse)
Hardening punch list: glab issue list --label monorepo-hardening (work-items API: glab api 'projects/82206074/issues?state=opened&labels=monorepo-hardening')
- #7 — master-data CLAUDE.md drift — closed via !89
- #2 — Define "migration done" as observed behavior — switch built+live; close on the 2026-05-20 natural run
- #3 — Dead-man's-switch on critical jobs — built+live (
v_function_health+function_healthhandler +pos-monitoring-function-healthjob); closes with #2 - #6 — Fleet silent-no-ship overlays — canary PROVEN (pos-dashboards
agent_hub_refresh); 53-gap fleet + CI guard HELD by decision - #1 — Self-test every CI safety gate (canary or it fails itself) — closed 2026-05-20 via MR !160 (5 gates instrumented; canaries visible on pipeline #313; bonus real-catch proof from pipeline #308)
- #4 — bq-bulletproof Dataform mirror-sync: automate or alarm — closed 2026-05-20 won't-fix-because-eliminated (the manual-sync problem was killed by the 2026-05-15 monorepo consolidation, not by automation; canonical Dataform source IS the GitLab repo
gitlab.com/rylobasic/bq-bulletproof-dataform— no monorepo subtree exists, nothing to sync). bq-bulletproof Phase 2 also closed in the same campaign (MRs !148/!150/!151). - #5 — Converge bridge-applied SQL views into Dataform — pending
- #8 — CI runner stale auth-token: permanent rotation/automation — mitigated operationally, permanent fix owed
- #9 — werkzeug==3.0.4 CVE bump across 6 pos-* services — filed, not yet scheduled
- #10 — Migration-completeness: build targets editable only in frozen
_source/. Sweep done + reconciled. handbook/setter-workbook-site resolved by !108; the 3 user-priority orphans now MIGRATED: apex rycolston.com →domains/rycolston-com/(!110), customer-journey →domains/customer-journey-rycolston-com/(!111), setter-workbook-system →domains/handbook-rycolston-com/docs/setter-workbook-system/(!112). All merged, sites verified live (200), registry updated. Residual: lower-stakes Cat-B_source/content/authoring deliverables (Breakthrough-Session, Listing-Launch-Playbook, templates/, scripts/, projects/{Case-Study-Templates,publishing-calendar,shorts,workshops}) — FROZEN-ONLY, no deadline (permanent_source/), same plain-copy pattern when prioritized. Category C 7 systems all COMPLETE.
References
- Reorg plan: Monorepo reorg plan
- Hardening audit: 2026-05-17 drift-reconciled system map + deliverables in
Roadmap/plans/2026-05-17-audit/(DRIFT-REPORT, SYSTEM-MAP, ledgers L1–L6, issue6-map) - Post-mortem:
~/rylobasic/docs/post-mortems/2026-05-16-monorepo-cutover-residual-landmines.md(blameless; names the single systemic cause; drives #1/#2/#3) - Memory:
~/.claude/projects/-Users-rycolston/memory/project_monorepo_rylobasic.md(authoritative post-cutover record + "Post-cutover prod watch" evidence) - Code home:
~/rylobasic/— gitlab.com/rylobasic/rylobasic - Repo orientation:
~/rylobasic/CLAUDE.mdand~/rylobasic/README.md - Engineering standards:
~/rylobasic/docs/ENGINEERING-STANDARDS.md