Skip to content

feat(platform): add read-only inventory collection contracts - #673

Draft
wax911 wants to merge 2 commits into
docs/platform-roadmap-2026-10-24from
docs/platform-inventory-653
Draft

wax911 wants to merge 2 commits into
docs/platform-roadmap-2026-10-24from
docs/platform-inventory-653

Conversation

@wax911

@wax911 wax911 commented Oct 27, 2026 •

Copy link
Copy Markdown
Member

Refs #652 and #653

Problem

The P0 inventory collector existed only in a local draft. Publishing it makes the remaining inventory and migration handoff reproducible without depending on one workstation. Live ownership, target configuration and recovery evidence are still incomplete.

What changed

  • Add read-only platform-inventory and platform-inventory-validate commands, normalized Docker/Compose metadata, and strict inventory/environment schemas.
  • Require confirmed current production inputs, approved context binding, resolved ownership and complete matched/unmatched container reconciliation before an operator-supplied G0 pass can validate. Confirmed health/database records require evidence, versions/topology and data paths.
  • Preserve real Docker numeric-string volume reference counts and normalize systemd integer-microsecond timestamps without float precision loss. Explicitly label timers as collector-host observations, not Docker-engine-host proof.
  • Keep normalized artifacts private under ignored directories (0700) and JSON files (0600); omit environment values and raw command output from public reporting.
  • Publish the dated sanitized source-host-candidate snapshot with limitations and separate later lab verification results.
  • Add a contents: read CI job running all inventory tests without cloud credentials or runtime mutation.

Verification

  • /tmp/omp-platform-lab-654-testenv/bin/python -m pytest -q tests/platform: 30 passed.
  • The new reconciliation/normalization regression file, loaded against the published pre-repair a094dbf collector in a throwaway fixture, produced 23 failures and one passing semantic control. All cases pass after repair.
  • make platform-inventory ENV=lab DOCKER_CONTEXT=default PYTHON=/tmp/omp-platform-lab-654-testenv/bin/python: repaired read-only collection succeeded, run 20261027T192226Z-bf4b5c69, schema=valid reconciliation=blocked.
  • make platform-inventory-validate ENV=lab INVENTORY_FILE=.artifacts/platform/20261027T192226Z-bf4b5c69/inventory.json PYTHON=/tmp/omp-platform-lab-654-testenv/bin/python: schema=valid gate=blocked.
  • /tmp/omp-platform-lab-654-testenv/bin/python -m py_compile tools/platform/inventory.py: passed.
  • CI YAML parsed locally; inventory-job permissions are contents: read.
  • Staged whitespace check passed. Only explicit source, schema, tests, workflow and sanitized documentation paths were staged, not private artifacts/caches.

Boundaries and remaining acceptance

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant