Files
proxmox/docs/02-architecture/IT_LIVE_COLLECTORS_CONTRACT.md
defiQUG dbd517b279 Sync workspace: config, docs, scripts, CI, operator rules, and submodule pointers.
- Update dbis_core, cross-chain-pmm-lps, explorer-monorepo, metamask-integration, pr-workspace/chains
- Omit embedded publish git dirs and empty placeholders from index

Made-with: Cursor
2026-04-12 06:12:20 -07:00

30 lines
1.6 KiB
Markdown

# IT live collectors — contract
**Canonical machine-readable contract:** [`config/it-operations/live-collectors-contract.json`](../../config/it-operations/live-collectors-contract.json)
**Spec:** [SANKOFA_IT_OPERATIONS_CONTROLLER_SPEC.md](./SANKOFA_IT_OPERATIONS_CONTROLLER_SPEC.md) (section 5.1)
## Per-collector rules
| Collector | Refresh target | On failure |
|-----------|----------------|------------|
| Proxmox guest IPAM | Hourly on LAN (timer or CI dispatch) | `drift.json` notes + `seed_unreachable`; UI stale banner |
| Optional `ip neigh` | 15 min when `IT_COLLECT_IP_NEIGH=1` | Omitted from JSON; no fail |
| Hardware poll | Weekly | Keep last `reports/status/hardware_and_connected_inventory_*.md`; banner if older than policy |
| NPM / UniFi | Phase 2 | Stub endpoint returns `stale: true` until wired |
## Live-only vs declared-only
- **Live-only:** guest `status`, observed `ip`, `mac` (from `net0` / `hwaddr=` when present), `node`, `collected_at` from `pvesh` + guest config.
- **Declared-only:** `ip-addresses.conf` keys not present on any guest (reported in drift as `ip_addresses_conf_ips_not_on_guests` where applicable).
- **Merged:** `drift.json` compares live guests to declared literals and ALL_VMIDS markdown table.
## API exposure
- **GET** `/v1/collector-contract` on the read API serves the JSON above (no auth beyond existing `/v1` API key rule).
## Change process
1. Edit `live-collectors-contract.json` and this doc together.
2. Run `bash scripts/validation/validate-config-files.sh` (py_compile includes IT scripts).
3. If portal or BFF caches intervals, bump `version` in JSON.