Sprint 1: project skeleton, type system, and all architecture specs

- src/types.hpp: complete UCWM type system in C++20 — 19 enums, 11 facet
  data types, all core structs (CanonicalObject, Constraint, Facet,
  GateSignal, WorldState, etc.) with full JSON round-trip serialization
- src/main.cpp: smoke test — constructs apple-problem WorldState by hand,
  serializes to JSON
- tests/test_types.cpp: 19 tests, 123 assertions, all passing
- CMakeLists.txt: CMake + CPM build with nlohmann/json, spdlog, Catch2
- schemas/: JSON Schema contracts for all UCWM data types
- gates/, specialists/, resolver/, synthesis/: language-agnostic interface
  contracts and domain specs for all pipeline layers
- docs/: architecture, vocabulary, decision matrices, roadmap (6 phases,
  28 sprints), sprint_001, implementation_constraints

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-01 16:09:55 -07:00
commit b758d7ea60
35 changed files with 6344 additions and 0 deletions

98
schemas/world_state.json Normal file
View File

@@ -0,0 +1,98 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "ucwm/schemas/world_state.json",
"title": "WorldState",
"description": "The active UCWM state at a given processing stage. Passed between pipeline stages. The resolver stabilizes it; synthesis reads from it.",
"type": "object",
"required": ["state_id", "stage", "objects", "facets", "constraints"],
"additionalProperties": false,
"properties": {
"state_id": {
"type": "string",
"description": "Unique ID for this state snapshot."
},
"stage": {
"type": "string",
"enum": [
"post_gate",
"post_proposal",
"post_routing",
"post_specialist",
"post_resolver",
"resolved",
"synthesized"
],
"description": "Which pipeline stage produced this state snapshot."
},
"input_text": {
"type": "string",
"description": "Original user input text."
},
"objects": {
"type": "object",
"description": "Map of object_id to CanonicalObject.",
"additionalProperties": { "$ref": "objects.json" }
},
"facets": {
"type": "object",
"description": "Map of facet_id to Facet.",
"additionalProperties": { "$ref": "facets.json" }
},
"constraints": {
"type": "object",
"description": "Map of constraint_id to Constraint.",
"additionalProperties": { "$ref": "constraints.json" }
},
"provenance": {
"type": "object",
"description": "Map of provenance_id to Provenance record.",
"additionalProperties": { "$ref": "provenance.json" }
},
"routing_decision": {
"$ref": "routing.json#/$defs/RoutingDecision"
},
"gate_signals": {
"type": "array",
"items": { "$ref": "routing.json#/$defs/GateSignal" }
},
"resolution_log": {
"type": "array",
"items": {
"type": "object",
"properties": {
"operation": { "type": "string" },
"affected_refs": { "type": "array", "items": { "type": "string" } },
"result": { "type": "string" },
"note": { "type": "string" }
}
},
"description": "Ordered log of resolver operations applied to reach this state."
},
"open_contradictions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"constraint_refs": { "type": "array", "items": { "type": "string" } },
"description": { "type": "string" }
}
},
"description": "Contradictions that the resolver could not resolve. Synthesis must account for these."
},
"synthesis_answer": {
"type": "string",
"description": "Final synthesized answer. Populated only at stage=synthesized."
},
"synthesis_confidence": {
"type": "number",
"minimum": 0.0,
"maximum": 1.0,
"description": "Confidence in the synthesis answer."
},
"derivation_trace": {
"type": "array",
"items": { "type": "string" },
"description": "Ordered list of constraint_ids and resolver operations used to derive the synthesis answer."
}
}
}