Architecture planning
Published on August 1, 2025 by Dmitri Katz

## [module_architecture] - 2025-08-01

### Updated
- Finalized MVP module selection (blue outline) based on system flow chart
- Marked core (internal) modules with **magenta star** and Docker modules with **Docker icon**
- Deferred post-MVP modules marked with **orange outline**

### MVP Modules (Blue Outline)
- ✅ Core (Magenta Star): `session_manager`, `input_broker`, `confidence_evaluator`, `memory_integrator`,
  `output_expander`, `output_planner`, `partner_ui`, `schema_recorder`
- 🐳 Dockerized: `audio_feed_worker`, `camera_feed_worker`, `speech_transcriber`, `landmark_extractor`,
  `gesture_classifier`, `sound_classifier`, `speech_context_classifier`, `visual_environment_classifier`,
  `model_trainer`, `sound_playback`, `landmark_visualizer`

### Post-MVP (Orange Outline)
- `llm_clarifier`, `feedback_log`, `retraining_scheduler`, `memory_interface`

### Storage Modules
- `model_registry` and `recorded_schemas` to remain internal on Hetzner, accessed via local endpoints



## [a3cp_core] - 2025-07-31

### Added
- Defined canonical `A3CPMessage` schema in `schemas/a3cp_core/a3cp_message.py` based on Section 2 of `SCHEMA_REFERENCE.md`
  - Includes required core metadata fields: `schema_version`, `record_id`, `user_id`, `session_id`, `timestamp`, `modality`, `source`
  - Supports forward-compatible extension via `extra = "allow"`
- Added schema validation utility in `schemas/utils/validate.py`
  - Function `validate_a3cp_message(data: dict)` raises on malformed messages
- Added unit test: `tests/schemas/test_a3cp_message.py`
  - Validates correct messages pass
  - Ensures missing or invalid fields are rejected


### CHANGELOG ENTRY - 2025-07-31


[Schema] Added Section 3.4: Classifier Output Components

- Introduced optional `classifier_output_components` field to support multimodal intent tracing.
- Allows downstream modules to inspect per-modality predictions (e.g., gesture, sound, speech).
- Each entry includes `intent`, `confidence`, and optional `timestamp`.
- Documented structure in Section 3.4 of the A3CPMessage specification.

Reason: Enables transparent, auditable contribution tracking when multiple classifiers inform a single semantic intent.