CuratorPlan ACA Runtime
A CuratorPlan represents a long-running, crash-recoverable curriculum ingestion campaign. It is not a ce-specs YAML file — it is a database resource created by the CLI or REST API to orchestrate the Autonomous Curator Agent (ACA) pipeline.
Schema: CuratorPlan
# Logical representation of a CuratorPlan (table: curator_plans)
id : uuid # Auto-generated (UUID v4)
name : string # Human-readable operator name (--name in CLI)
country : string # ISO-3166-1 alpha-2: "US" | "ES" | "MX" | "GB"…
standard : string # Standard key: "LOMLOE" | "AP" | "IB" | "AP_SPANISH"…
status : enum # See status table below
total_items : integer # Total discovered items
processed_items : integer # Items already processed (DONE + FAILED + NEEDS_REVIEW)
failed_items : integer # Items in FAILED state
current_stage : string # Active phase: DISCOVER | FETCH | PARSE | INGEST
config_json : object # Operator configuration (see below)
state_json : object # Execution checkpoint (ACA internal use)
created_by : string # Email / ID of the CLI operator who created the plan
last_heartbeat : timestamp # Last heartbeat from the executePlan() loop
config_json — Common keys
"approval_gates" : [ " after_c0 " , " after_c1 " ],
"confidence_threshold" : 0.75 ,
"router" : " gemini-2.0-flash " ,
"c0_model" : " gemini-2.5-pro "
Plan statuses
Status Description DRAFTCreated, not yet started RUNNINGOrchestrator is actively processing items WAITING_REVIEWPaused at an approval gate — waiting for operator PAUSEDStall detected (no heartbeat > 30 min) or manual pause COMPLETEDAll items processed (DONE + NEEDS_REVIEW + FAILED) FAILEDCancelled or unrecoverable critical error
Schema: CuratorPlanItem
Each discovered source document creates a CuratorPlanItem within a plan.
# Logical representation of a CuratorPlanItem (table: curator_plan_items)
id : uuid # Auto-generated
plan_id : uuid # FK → curator_plans.id
source_url : string # Source document URI: http://, gs://, drive://
spec_type : string # OAS type to produce: C0_STANDARDS | C1_RECIPES | C2_EXERCISES
status : enum # See status table below
confidence_score : float # 0.0–1.0 — score from the Curator's evaluation node
attempts : integer # Number of processing attempts
output_path : string # Path of the generated YAML in the ce-specs repository
error_message : string # Last error message (FAILED items)
original_source_url : string # Original URL before URL Healing (null if not applied)
Item statuses
Status Description PENDINGQueued, not yet processed PROCESSINGCuratorWorkflow actively running DONEAuto-ingested — confidence_score ≥ threshold NEEDS_REVIEWconfidence_score < threshold — human review queue (HITL)FAILEDUnrecoverable error (encrypted PDF, timeout, parse error…)
spec_type — Valid values
Value Description OAS Layer C0_STANDARDSRegulatory rubrics and standards C0 BLOCK_RUBRICAlias for C0 — evaluation rubric C0 C1_RECIPESPedagogical recipes C1 C2_EXERCISESExercises with context C2 INTERACTIVE_LESSONInteractive lesson with slides C2 RESOURCE_LEARNINGAnnotated OER pointer C2
Creation via CLI
# Create and launch a complete ACA plan
./ce-cli.sh --env local \
--name 'AP Spanish US — October 2026 Sprint' \
./ce-cli.sh --env local " aca plan start <planId> "
Creation via REST API
Content-Type : application/json
"name" : " AP Spanish US — October 2026 Sprint " ,
"standard" : " AP_SPANISH " ,
"approval_gates" : [ " after_c0 " ],
"confidence_threshold" : 0.80
Response:
"id" : " 3fa85f64-5717-4562-b3fc-2c963f66afa6 " ,
"createdAt" : " 2026-10-01T09:00:00Z "
Full REST Endpoint Reference
Method Endpoint Description POST/api/v1/aca/plansCreate plan GET/api/v1/aca/plans/{id}Get plan status POST/api/v1/aca/plans/{id}/startStart / resume POST/api/v1/aca/plans/{id}/pauseControlled pause POST/api/v1/aca/plans/{id}/cancelCancel (irreversible) GET/api/v1/aca/plans/{id}/itemsList plan items POST/api/v1/aca/plans/{id}/items/{itemId}/approveApprove NEEDS_REVIEW item POST/api/v1/aca/plans/{id}/gates/{gateId}/approveApprove quality gate
See Also