Carol — back to Apps ← Apps

Carolopedia

A friendly guide to Carol, her ecosystem, and the agents who built her.

📖 CarolopediaServicesBuild InitiativesAll activitiesINI-1000111
📋

CAROL-INI-0214-00: Designs↔Registry integrity — schema + orphan cleanup (bypass companion to design-coverage initiative)

Initiative
Open in Initiatives →

📖About

Mechanical companion to the planner-driven design-coverage initiative. Three jobs: (a) reclassify the 7 generic-template app_design rows (42-48: App Backend / Database / Frontend / API / Startup / Authentication / Owner Visibility) to design_type=pattern — they describe cross-cutting patterns, not specific apps. (b) Remap the 2 app_design app_ref values that loosely refer to a real app (40 Cost Monitoring Alert System -> carol-cost-tracker, 41 Org Chart Recursive Tree -> carols-org). (c) Add a CHECK constraint that app_design rows must have non-empty app_ref + a design-app POST validator that rejects app_ref values not present in registry.apps.id. Excludes induction app (CAROL-INI-029, in flight).

⚖️Decisions

  • Generic-template app_design rows (42-48) reclassify to design_type=pattern — they describe cross-cutting patterns, not specific apps. — They have no app_ref and apply across apps. Keeping them as app_design pollutes Archon catalog with non-app entries. (Ninad)
  • app_design.app_ref must reference a registry app id; design app rejects POST/PUT with unknown app_ref. — Free-text app_ref breaks the link to running apps. Foreign-key-by-validator since SQLite cant FK across DBs. (Ninad)
  • Induction app (session-induction / INI-029) is excluded from the cleanup until INI-029 closes. — Ninad explicit exception. INI-029 in flight; touching its design row mid-flight is risky. (Ninad)
  • requester rewritten ninad -> orion per CAROL-INI-744: orion is the only human-CLI requester — Backfill of historical rows after INI744 added API-level refusal of requester=ninad. Orion is Ninads CLI agent; all human-originated initiatives are filed with requester=orion. (orion)

Success criteria

  • sqlite SELECT COUNT(*) FROM designs WHERE design_type=app_design AND (app_ref="" OR app_ref NOT IN (SELECT id FROM registry.apps)) returns 0 (excluding INI-029 row 177) (must_have)
  • design app POST with bad app_ref returns 4xx (must_have)
  • rows 42-48 all have design_type=pattern (must_have)