# Depo Package Manifest — Spec v1.0 (DRAFT) One tag = one releasable business. The manifest is the contract between the authoring machine and any target that pulls the package. ## File `manifest.json` at package root. ## Schema ```json { "schema_version": "1.0", "package_id": "hitridge-business-o1", "display_name": "O1 — Consignment Refurbished Electronics", "version": "0.1.0", "license": "proprietary", "requires": { "odoo": ">=18.0", "agent_runtime": ">=1.0" }, "layers": { "odoo_modules": ["aura_business_core", "hitridge_venture_o1"], "agents": ["o1-sellers-recruiter", "o1-test-operator", "o1-closer", "o1-compliance"], "docs": ["docs/playbook.md", "docs/agreement-template.odt", "docs/test-checklist.md"], "config": ["config/channels.json", "config/pricing-rules.json"] }, "install": { "order": ["odoo_modules", "config", "agents", "docs"], "verify": [ "all odoo_modules installed", "all agents registered in runtime", "venture menu visible", "no secrets in package (secrets_scan)" ] }, "rollback": { "strategy": "install previous tag; reverse install order" } } ``` ## Rules 1. **Versioning** — semver. Every change to any layer bumps the version. A tag in the depot repo = the release. 2. **Signing** — manifest is hashed (SHA-256) and signed (ed25519). Targets verify the signature before anything is applied. No signature = refuse. 3. **Idempotency** — installing the same version twice is a no-op; upgrading follows the module version-bump path. 4. **Never ships in a package**: - env secrets / credentials / API keys (env vars injected at target only) - live data (rows are generated by the target, never imported from authoring) - learned memories (brain capabilities ship; memories are empty seeds) - anything target-specific (URLs, IDs, absolute paths) 5. **Fresh-target assumption** — target must be the Aura tower Odoo (or the manifest declares the base modules it needs). 6. **Rollback is designed in** — reverse install order; each layer must be undoable atomically. ## Install sequence (target side, pull model) 1. Fetch package (from depot git tag or registry). 2. Verify signature + hash. 3. Run `install.order` in sequence, each step verified before the next. 4. Run `install.verify` checklist. Any failure = abort + rollback, target reports state, never silently continues. ## Local mirror (authoring side) `depot-state.json` (SQLite or JSON): which package version is deployed to which target, when, by whom, verification result. This is what enables diff, upgrade, and rollback decisions. It never deploys anything itself.