# Feature Specification: Inventory Program (Meta)

**Feature Branch**: `feat/039-inventory-program`  
**Created**: 2026-01-07  
**Status**: Draft  

## Purpose

This is an epic/program-level specification that anchors vision, scope, principles, and a roadmap for an Inventory-first approach across TenantPilot.

This document is intentionally non-implementation and does not require immediate code changes.

## Program Goals

- Establish Inventory as the primary substrate for analysis, reporting, monitoring, and UI navigation (Inventory is “last observed”, not absolute Intune truth).
- Maintain immutable snapshots/backups as explicit actions (manual/scheduled), separate from inventory sync.
- Provide a config-driven coverage/support matrix across policy types (backup/restore/risk/support).
- Build toward dependency visibility, cross-tenant comparison/promotion, and drift detection.

## Key Definitions

- **Inventory**: TenantPilot’s last observed catalog of Intune objects (mutable; updated by sync runs).
- **Snapshot/Backup**: Immutable capture of an object’s payload for versioning/restore (explicit action).
- **Coverage/Support Matrix**: Derived view describing support level (backup/restore/risk) per policy type.

## Data Domains

- Inventory Items
- Sync Runs (observability)
- Support/Capabilities derived from contracts/config
- Dependencies (links between inventory items and foundation objects)
- Cross-tenant context (explicit and access-checked)

## Principles (Program-level)

- Inventory-first, snapshots-second
- Read/write separation by default (preview + confirmation + audit + tests for writes)
- Single contract path to Graph
- Deterministic capabilities
- Tenant isolation is non-negotiable
- Automation is idempotent & observable (locks, run records, stable error codes)
- Data minimization & safe logging

## Roadmap / Decomposition

- **Spec 040 — Inventory Core**: inventory items + sync runs + deterministic selection + missing semantics
- **Spec 041 — Inventory UI**: inventory lists, coverage matrix, sync runs UI, policy viewer
- **Spec 042 — Dependencies Graph**: inventory_links and dependency views (assignments/scope tags/filters first)
- **Spec 043 — Cross-tenant Compare & Promotion**: read-only compare first; gated promotion later
- **Spec 044 — Drift MVP**: drift findings based on inventory/run metadata and optional hashes

## Non-Goals

- This meta spec does not define concrete schemas or endpoints.
- This meta spec does not introduce new write paths (promotion/remediation) without dedicated feature specs.
