Phase 2 and 3 of the platform rework.
- Neutral request/response contract: external_id, metadata, X-AI-Key,
run_id in the response; client-specific fields removed.
- AI profile is a revision table: saving creates an inactive revision,
activation is separate, try-run does not store a run. One
chat-completions gateway serves AIHub and OpenAI-compatible profiles.
- Add between and in rule operators.
- Contracts moved to contracts/lead-scoring/ with a score-response fixture.
- Admin Web updated for revisions, runs and the neutral fixture.
- Consolidate tests; remove rewrite_architect.md and the stale handoff doc;
rewrite spec, CONTEXT and ARCHITECTURE for the current design.
Not verified: live AIHub/OpenAI behavior, Omni/EMS integration.
Resolve the shared backend port once for make dev and reuse it in the child make. Keep pure configuration tests independent of local credentials and URLs without altering integration database settings.
Run backend and web with a shared configurable port, add local webhook and secret-generation helpers with tests, and document current app-auth and fixture workflows.