platform · proposed implementation
Pinned inclusion, reversible by design.
The platform consumes an immutable release of this contract and introduces a distinct feed type without changing existing import behaviour.
Selected inclusion mechanism
Publish a private GitHub release containing the schema, catalogues, examples, CLI and `SHA256SUMS`. Platform CI downloads the exact semantic tag with a read-only fine-grained token, verifies checksums, and vendors it under a release-specific immutable directory. The active contract pointer changes only during platform release activation.
Platform change set
- Register feed type and admin label independently.
- Store credentials through existing secret configuration, never the contract repo.
- Fetch to disk with bounded streaming and immutable run fingerprint.
- Run XSD and semantic validation before persistence.
- Map into a versioned canonical import DTO, not a new `Property` conditional branch.
- Add provider/feed + listing ID unique constraint and idempotent upserts.
- Queue images only after snapshot validation; deduplicate by stable ID/checksum.
- Apply missing-listing thresholds, first-run protection and operator-visible reports.
- Add retries, backoff, memory/time limits, metrics, structured logs and Sentry context.
- Cover happy path, malformed feeds, stale IDs, hierarchy errors, large feeds and rollback in PHPUnit.
Rollback
- Disable scheduling
Stop new `zentra_xml_v1` runs without disabling other feed types.
- Restore pointer
Point the platform manifest back to the prior verified contract artifact.
- Revert importer release
Activate the previous application release; migrations remain additive until confidence is established.
- Preserve evidence
Retain failed run reports and fingerprints, but never raw customer XML in public logs.
- Reconcile safely
No missing-listing archive runs during rollback; resume only after a validated complete snapshot.