forked from sagnik/Project_Velocity
458 lines
10 KiB
Markdown
458 lines
10 KiB
Markdown
# Mission Contracts and JSON Schemas Blueprint
|
|
|
|
**Date:** 2026-04-14
|
|
**Status:** Draft implementation artifact
|
|
**Purpose:** Define the concrete contract model, JSON payload shapes, schema boundaries, versioning rules, and validation plan for the colony orchestration layer.
|
|
|
|
## 1. Purpose
|
|
|
|
This document converts the colony architecture into explicit contracts. The system must not rely on informal prompt chaining between stages. Every stage must read and write a typed artifact.
|
|
|
|
## 2. Contract Design Rules
|
|
|
|
### 2.1 Version Every Artifact
|
|
|
|
Every artifact must carry:
|
|
|
|
- `schema_name`
|
|
- `schema_version`
|
|
|
|
This is mandatory from day one so prompt package evolution and mission replay do not become brittle later.
|
|
|
|
### 2.2 Keep Root Metadata on Every Artifact
|
|
|
|
Every artifact should include:
|
|
|
|
- `mission_id`
|
|
- `tenant_id`
|
|
- `actor_id`
|
|
- `created_at`
|
|
- `producer`
|
|
|
|
This prevents orphan artifacts and makes debugging much easier.
|
|
|
|
### 2.3 Store Canonical Payloads as JSON
|
|
|
|
Root PostgreSQL persistence should store the canonical artifact payload in `jsonb`, even if some fields are also denormalized for indexing.
|
|
|
|
### 2.4 Prefer Small Composable Artifacts
|
|
|
|
Do not use one giant colony state blob. The correct design is multiple artifacts with explicit linkage.
|
|
|
|
## 3. Core Artifact Set
|
|
|
|
Phase 1 artifact set:
|
|
|
|
- `mission_envelope`
|
|
- `mission_task_graph`
|
|
- `prompt_package`
|
|
- `research_artifact`
|
|
- `librarian_pass`
|
|
- `worker_result`
|
|
- `aggregation_packet`
|
|
- `review_packet`
|
|
- `policy_decision`
|
|
- `writeback_proposal`
|
|
|
|
## 4. Mission Envelope Schema
|
|
|
|
### 4.1 Purpose
|
|
|
|
Defines the normalized mission before decomposition.
|
|
|
|
### 4.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "mission_envelope",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"mission_type": "oracle_advisory",
|
|
"origin_surface": "oracle",
|
|
"tenant_id": "tenant_velocity",
|
|
"actor_id": "oracle_operator",
|
|
"actor_role": "sales_director",
|
|
"user_goal": "Summarize the highest intent waterfront prospects and recommend next actions.",
|
|
"normalized_goal": "Produce a prioritized lead intelligence brief for waterfront prospects with actions.",
|
|
"risk_level": "medium",
|
|
"sensitivity_class": "internal_business",
|
|
"time_budget_ms": 45000,
|
|
"token_budget": 180000,
|
|
"requested_outputs": [
|
|
"reviewed_summary",
|
|
"writeback_proposal"
|
|
],
|
|
"context_refs": {
|
|
"lead_ids": ["lead_123"],
|
|
"page_id": null,
|
|
"campaign_ids": []
|
|
},
|
|
"created_at": "2026-04-14T12:00:00Z",
|
|
"producer": "python_root_gateway"
|
|
}
|
|
```
|
|
|
|
### 4.3 Required Fields
|
|
|
|
Required:
|
|
|
|
- `schema_name`
|
|
- `schema_version`
|
|
- `mission_id`
|
|
- `mission_type`
|
|
- `origin_surface`
|
|
- `tenant_id`
|
|
- `actor_id`
|
|
- `user_goal`
|
|
- `normalized_goal`
|
|
- `risk_level`
|
|
- `sensitivity_class`
|
|
- `created_at`
|
|
- `producer`
|
|
|
|
## 5. Mission Task Graph Schema
|
|
|
|
### 5.1 Purpose
|
|
|
|
Defines the DAG produced by the planner.
|
|
|
|
### 5.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "mission_task_graph",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"tasks": [
|
|
{
|
|
"task_id": "task_plan_01",
|
|
"role_type": "prompt_master",
|
|
"objective": "Prepare role-specific prompt packages for all execution tasks.",
|
|
"depends_on": [],
|
|
"required_capabilities": ["prompt_templates", "task_prompting"],
|
|
"allowed_tools": [],
|
|
"required_data_scopes": ["mission_metadata"],
|
|
"success_criteria": [
|
|
"prompt packages exist for all downstream tasks"
|
|
]
|
|
}
|
|
],
|
|
"created_at": "2026-04-14T12:00:02Z",
|
|
"producer": "planner_agent"
|
|
}
|
|
```
|
|
|
|
### 5.3 Required Rules
|
|
|
|
- every `task_id` must be unique within mission
|
|
- `depends_on` must only reference existing task IDs
|
|
- role types must be from an allowed enum in Phase 1
|
|
|
|
Phase 1 allowed role types:
|
|
|
|
- `planner`
|
|
- `prompt_master`
|
|
- `researcher`
|
|
- `librarian`
|
|
- `worker`
|
|
- `aggregator`
|
|
- `reviewer`
|
|
|
|
## 6. Prompt Package Schema
|
|
|
|
### 6.1 Purpose
|
|
|
|
Defines the exact worker-facing prompt instruction package.
|
|
|
|
### 6.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "prompt_package",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"task_id": "task_worker_01",
|
|
"package_id": "pkg_001",
|
|
"role_type": "worker",
|
|
"template_id": "crm_lead_intelligence_worker",
|
|
"template_version": "v1",
|
|
"examples_used": [
|
|
"crm_worker_example_01"
|
|
],
|
|
"system_prompt": "You are a lead intelligence specialist...",
|
|
"task_prompt": "Analyze the provided lead context...",
|
|
"constraints": {
|
|
"must_cite_sources": true,
|
|
"must_not_writeback_directly": true
|
|
},
|
|
"tool_scope": [
|
|
"crm_search",
|
|
"local_property_rag",
|
|
"external_search"
|
|
],
|
|
"model_route": "tier_high_reasoning",
|
|
"created_at": "2026-04-14T12:00:05Z",
|
|
"producer": "prompt_master_agent"
|
|
}
|
|
```
|
|
|
|
## 7. Research Artifact Schema
|
|
|
|
### 7.1 Purpose
|
|
|
|
Represents external evidence.
|
|
|
|
### 7.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "research_artifact",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"task_id": "task_research_01",
|
|
"artifact_id": "res_001",
|
|
"provider": "brave",
|
|
"query": "Dubai waterfront premium real estate 2026 demand",
|
|
"results": [
|
|
{
|
|
"title": "Market report title",
|
|
"url": "https://example.com/report",
|
|
"snippet": "Short snippet",
|
|
"source_type": "web",
|
|
"retrieved_at": "2026-04-14T12:01:00Z",
|
|
"confidence": 0.82
|
|
}
|
|
],
|
|
"created_at": "2026-04-14T12:01:01Z",
|
|
"producer": "researcher_agent"
|
|
}
|
|
```
|
|
|
|
## 8. Librarian Pass Schema
|
|
|
|
### 8.1 Purpose
|
|
|
|
Represents scoped internal routing instructions for workers.
|
|
|
|
### 8.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "librarian_pass",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"task_id": "task_worker_01",
|
|
"pass_id": "pass_001",
|
|
"allowed_resource_families": [
|
|
"crm.leads",
|
|
"crm.chat_logs"
|
|
],
|
|
"recommended_queries": [
|
|
{
|
|
"tool": "crm_search",
|
|
"query": "waterfront whale prospects"
|
|
}
|
|
],
|
|
"cached_previews": [
|
|
{
|
|
"label": "Lead summary",
|
|
"entity_type": "lead",
|
|
"entity_id": "lead_123",
|
|
"preview": "Whale prospect interested in marina-facing unit"
|
|
}
|
|
],
|
|
"expires_at": "2026-04-14T13:00:00Z",
|
|
"created_at": "2026-04-14T12:00:08Z",
|
|
"producer": "librarian_agent"
|
|
}
|
|
```
|
|
|
|
## 9. Worker Result Schema
|
|
|
|
### 9.1 Purpose
|
|
|
|
Represents normalized output from one worker.
|
|
|
|
### 9.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "worker_result",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"task_id": "task_worker_01",
|
|
"result_id": "wrk_001",
|
|
"output_text": "Lead 123 has the highest close probability...",
|
|
"structured_output": {
|
|
"priority": "high",
|
|
"recommended_action": "schedule executive follow-up"
|
|
},
|
|
"citations": [
|
|
{
|
|
"kind": "internal",
|
|
"ref": "lead_123"
|
|
}
|
|
],
|
|
"confidence": 0.79,
|
|
"tool_trace_refs": [
|
|
"toolcall_001",
|
|
"toolcall_002"
|
|
],
|
|
"created_at": "2026-04-14T12:02:10Z",
|
|
"producer": "worker_agent"
|
|
}
|
|
```
|
|
|
|
## 10. Aggregation Packet Schema
|
|
|
|
### 10.1 Purpose
|
|
|
|
Represents the synthesized draft before review.
|
|
|
|
### 10.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "aggregation_packet",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"packet_id": "agg_001",
|
|
"summary": "Top waterfront leads are concentrated in two whale segments...",
|
|
"evidence_matrix": [
|
|
{
|
|
"claim": "Lead 123 is high priority",
|
|
"support_refs": ["wrk_001", "lead_123"]
|
|
}
|
|
],
|
|
"contradictions": [],
|
|
"coverage_gaps": [],
|
|
"recommended_output": {
|
|
"format": "structured_brief"
|
|
},
|
|
"created_at": "2026-04-14T12:03:00Z",
|
|
"producer": "aggregator_agent"
|
|
}
|
|
```
|
|
|
|
## 11. Review Packet Schema
|
|
|
|
### 11.1 Purpose
|
|
|
|
Represents the one-pass review outcome.
|
|
|
|
### 11.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "review_packet",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"packet_id": "rev_001",
|
|
"review_status": "approved_with_edits",
|
|
"issues": [
|
|
{
|
|
"severity": "medium",
|
|
"message": "One recommendation needs clearer business justification."
|
|
}
|
|
],
|
|
"required_edits": [
|
|
"add one sentence linking lead score to action priority"
|
|
],
|
|
"approved_output": {
|
|
"summary": "Reviewed final answer here"
|
|
},
|
|
"created_at": "2026-04-14T12:03:20Z",
|
|
"producer": "reviewer_agent"
|
|
}
|
|
```
|
|
|
|
## 12. Policy Decision Schema
|
|
|
|
### 12.1 Purpose
|
|
|
|
Represents an explicit allow or deny decision from the guard plane.
|
|
|
|
### 12.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "policy_decision",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"decision_id": "pol_001",
|
|
"decision_type": "tool_scope",
|
|
"subject": "external_search",
|
|
"decision": "allow",
|
|
"reason": "mission sensitivity permits public web search",
|
|
"created_at": "2026-04-14T12:00:03Z",
|
|
"producer": "colony_policy_bridge"
|
|
}
|
|
```
|
|
|
|
## 13. Writeback Proposal Schema
|
|
|
|
### 13.1 Purpose
|
|
|
|
Represents a proposed root mutation. This is a proposal only, never a direct execution artifact.
|
|
|
|
### 13.2 Suggested JSON Shape
|
|
|
|
```json
|
|
{
|
|
"schema_name": "writeback_proposal",
|
|
"schema_version": "v1",
|
|
"mission_id": "uuid",
|
|
"proposal_id": "wb_001",
|
|
"target_entity_type": "lead",
|
|
"target_entity_id": "lead_123",
|
|
"action_type": "lead_stage_update",
|
|
"payload": {
|
|
"kanban_status": "Negotiation"
|
|
},
|
|
"requires_approval": true,
|
|
"created_at": "2026-04-14T12:03:25Z",
|
|
"producer": "reviewer_agent"
|
|
}
|
|
```
|
|
|
|
## 14. Root Table Mapping
|
|
|
|
Recommended root table to artifact mapping:
|
|
|
|
- `colony_missions` -> mission envelope
|
|
- `colony_tasks` -> task graph task records
|
|
- `colony_prompt_packages` -> prompt package
|
|
- `colony_research_artifacts` -> research artifact
|
|
- `colony_librarian_passes` -> librarian pass
|
|
- `colony_worker_results` -> worker result
|
|
- `colony_aggregation_packets` -> aggregation packet
|
|
- `colony_review_packets` -> review packet
|
|
- `colony_policy_decisions` -> policy decision
|
|
|
|
## 15. Validation Strategy
|
|
|
|
Validation should occur in three layers:
|
|
|
|
1. TypeScript runtime validation in colony service
|
|
2. Python root payload validation before persistence
|
|
3. database-level required column and foreign key validation
|
|
|
|
## 16. Immediate Implementation Order
|
|
|
|
Implement schemas in this order:
|
|
|
|
1. mission envelope
|
|
2. task graph
|
|
3. prompt package
|
|
4. worker result
|
|
5. review packet
|
|
6. policy decision
|
|
7. librarian pass
|
|
8. research artifact
|
|
9. aggregation packet
|
|
10. writeback proposal
|
|
|
|
## 17. Bottom Line
|
|
|
|
The colony will only be dependable if every stage is contract-first. This document defines the contract spine that allows the rest of the implementation to stay disciplined.
|