Introduce the unified `missions` tier that will replace the current
research_topics + loops split. This slice ships the data model +
backfill + skeleton REST surface; the old wizards keep working in
parallel until Slice 9's big-bang cutover.
Migration 0047 adds:
- missions (top-level workflow: template_kind + team +
schedule + status + config)
- mission_phases (ordered {research|coding|benchmark|
security_scan} phases per mission)
- mission_tasks (typed units of work, e.g. INT-XX cards,
UPSERT-keyed on (phase_id, external_id))
- mission_artifacts (MD/PDF/benchmark/security/diff files with
a pending queue for the PDF renderer worker)
- benchmark_snapshots (before/after pairs per iteration)
Backfill copies existing research_topics + loops rows into the new
tables as one-shot missions with the appropriate template_kind, so
Slice 2's UI can render the full history immediately.
New Rust surface:
- cm_domain: MissionId, MissionPhaseId, MissionTaskId, MissionArtifactId
- cm_db::repo::missions: Mission/MissionPhase/MissionTask/
MissionArtifact structs + insert (txn-wrapped)/get/list/set_status/
phases_for/set_phase_status/upsert_task/tasks_for/register_artifact/
artifacts_for/next_pdf_pending/set_pdf_result
- cm_api::routes::missions: skeleton list/create/get/set_status
routes registered at /api/missions/*
Follow-up slices layer richer behavior (template dispatch, phase
execution, task parsing, artifact rendering) on this foundation.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
27 lines
876 B
Rust
27 lines
876 B
Rust
//! Core domain types for the Clawmates platform (spec §14).
|
|
//!
|
|
//! This crate has no I/O: every other crate depends on it for identifiers,
|
|
//! the session-key codec, role/RBAC vocabulary, agent access policies, and
|
|
//! the fixed set of approval-gated action categories from spec §15.
|
|
|
|
mod access;
|
|
mod chat;
|
|
mod entities;
|
|
mod gated;
|
|
mod ids;
|
|
mod role;
|
|
mod session_key;
|
|
|
|
pub use access::{AccessPolicy, AgentScope, HumanScope};
|
|
pub use chat::{
|
|
shard_of, AgentRun, Message, MessageRole, MessageWithSteps, RunState, Session, Step, StepStatus,
|
|
};
|
|
pub use entities::{Agent, AgentStatus, FileDrive, FileNode, User, Workspace};
|
|
pub use gated::GatedCategory;
|
|
pub use ids::{
|
|
AgentId, MessageId, MissionArtifactId, MissionId, MissionPhaseId, MissionTaskId, NodeId,
|
|
SessionId, UserId, WorkspaceId,
|
|
};
|
|
pub use role::Role;
|
|
pub use session_key::{SessionKey, SessionKeyError};
|