Version: v0.1
Status: Ready
Owners: Cortex / Foundation Python
Last Updated: 2026-03-26
Change Type: additive
Migration Required: yes
Depends On: foundation-v2-fmie-integration-audit-2026-03-26.md, Gateway spec, Media Passport spec, Partner-Fit spec
Supersedes: none
Superseded By: none
This handoff gives Cortex the exact Python-owned FMIE integration work required to bring Foundation-V2 in line with current FMIE 0.42.7.
Per house rules: - Codex session owns C++ / FMIE-native work - Cortex owns Python module and service changes - Triton Front-end owns Swift work
Target files:
- services/haystack-pipeline/src/haystack_pipeline/ingest.py
- services/scout-fleet/src/scout_fleet/fmie_access.py
- any other direct libfmie_c.so.0.42.2 references
Required outcome:
- resolve FMIE_LIB_PATH from env first
- default to unversioned libfmie_c.so or a shared resolver
- stop hardcoding 0.42.2
Target file:
- services/cognition-gateway/src/cognition_gateway/receipt.py
Required outcome: - use full 64-char SHA-256 digests for request and response commitments - keep receipts append-only - update any tests and readers that assumed 16-char truncation
Target files:
- services/cognition-gateway/src/cognition_gateway/passport.py
- services/cognition-gateway/src/cognition_gateway/app.py
- services/cognition-gateway/src/cognition_gateway/midnight.py
Required outcome:
- when an FMIE passport exists, anchor using:
- artifact_root_sha256
- midnight_anchor_payload_sha256
- transform_manifest_sha256
- source_uri_sha256
- stop anchoring only synthetic session hashes where real FMIE proof material exists
Target files:
- packages/answerer-py/src/answerer/__init__.py
- services/haystack-pipeline/src/haystack_pipeline/ingest.py
- any remaining direct Anthropic call sites for internal content
Required outcome: - all sensitive outbound model calls go through Cognition Gateway - no direct summary-generation or synthesis path should bypass receipts, policy, and surrogate logic
Target files:
- services/scout-fleet/src/scout_fleet/runtime.py
- services/haystack-pipeline/src/haystack_pipeline/ingest.py
Use these FMIE artifacts directly:
- summary.meeting_need_vectors.json
- summary.partner_fit_inputs.json
- summary.passport.json.partner_fit
Required outcome:
- Scout scoring and ingest enrichment consume normalized FMIE helper contracts
- stop relying only on raw meeting_signals, tables, charts, and evidence
Target files:
- services/haystack-pipeline/src/haystack_pipeline/document_regions.py
- services/haystack-pipeline/src/haystack_pipeline/ingest.py
Required outcome: - page / region / table / chart structures contribute to payload metadata and downstream retrieval
Target integrations:
- fmie_get_runtime_status_json()
- fmie_get_health_status_json()
- /tmp/FMIE.log breadcrumb ingestion
Required outcome: - Cortex can see FMIE readiness, model/cache state, contract discovery, and crash breadcrumbs
Target file:
- services/haystack-pipeline/src/haystack_pipeline/entity_matcher.py
Required outcome: - consume face and voice vectors already emitted by FMIE - use matcher-index queries for cross-asset continuity instead of leaving them dormant
Target file:
- services/cognition-gateway/src/cognition_gateway/passport.py
Required outcome:
- stop treating native FMIE result strings as unmanaged c_char_p
- add proper fmie_free_string handling if needed
Current duplication exists across: - ingest - scout wrapper - passport validation - clip extraction - matcher loading
Goal: - one shared Python package for FMIE resolution and helper artifact access
This handoff is complete when:
- no live Foundation path depends on libfmie_c.so.0.42.2
- no sensitive frontier-model call bypasses the Gateway
- real FMIE passport proof material is what Midnight anchors
- Scout and Haystack consume partner-fit helper artifacts directly
- Cortex can observe FMIE runtime and health as a first-class system