# Project map Derived from the code on every regeneration. If something here is wrong, the code changed and the map was not regenerated - fix it by running the generator, never by editing this file. ## Versions | series | value | governed by | |---|---|---| | product `__version__` | `0.10.0` | ADR-007 | | plugin contract `__contract_version__` | `0.19.0` | ADR-002 | They move independently. A contract bump is not a release. ## Alembic chains (ADR-008) Core runs with `flask db upgrade`; every plugin chain runs with `flask plugin upgrade-all`. Both are needed on a deploy. | chain | head | |---|---| | core | `7d32_displayrole_kiosk_vocabulary` | | backups | `backups0003clearlastseen` | | computers | `computers0001anchor` | | employees | `employees0002photo` | | geenforce | `geenforce0004minlib` | | knowledgebase | `knowledgebase0001anchor` | | machines | `machines0002rename` | | measuringtools | `measuringtools0001baseline` | | network | `network0003prefix` | | notifications | `notifications0005boardorder` | | printedparts | `printedparts0004txnrev` | | printers | `printers0002supplyalerts` | | slides | `slides0001anchor` | | usb | `usb0002dropmachineid` | | warranty | `warranty0002proof` | ## Bundled plugins (15) | plugin | version | core_version | owns migrations | |---|---|---|---| | backups | 1.0.0 | >=0.16.0,<1.0.0 | yes | | computers | 1.0.0 | >=0.1.0,<1.0.0 | yes | | employees | 1.0.0 | >=0.1.0,<1.0.0 | yes | | geenforce | 0.1.0 | >=0.18.0,<1.0.0 | yes | | knowledgebase | 1.0.0 | >=0.1.0,<1.0.0 | yes | | machines | 1.0.0 | >=0.1.0,<1.0.0 | yes | | measuringtools | 1.0.0 | >=0.6.0,<1.0.0 | yes | | network | 1.0.0 | >=0.1.0,<1.0.0 | yes | | notifications | 1.0.0 | >=0.1.0,<1.0.0 | yes | | printedparts | 0.1.0 | >=0.16.0,<1.0.0 | yes | | printers | 1.0.0 | >=0.16.0,<1.0.0 | yes | | slides | 2.0.0 | >=0.2.0,<1.0.0 | yes | | tools | 1.0.0 | >=0.16.0,<1.0.0 | no | | usb | 1.0.0 | >=0.1.0,<1.0.0 | yes | | warranty | 1.0.0 | >=0.2.0,<1.0.0 | yes | Manifest-less directories under `plugins/` are core frontend surface and always ship: `applications`. ## Architecture decisions | ADR | title | status | |---|---|---| | ADR-001-asset-as-platform-contract.md | ADR-001: Asset model is the platform contract | ACCEPTED | | ADR-002-plugin-versioning.md | ADR-002: Plugin contract versioning | ACCEPTED | | ADR-003-plugin-distribution.md | ADR-003: Plugin distribution model | ACCEPTED | | ADR-004-deployment-topology.md | ADR-004: Deployment topology (per-site instances) | ACCEPTED | | ADR-005-equipment-vs-measuringtools.md | ADR-005: Equipment plugin scope vs measuringtools plugin | ACCEPTED | | ADR-006-collector-contract.md | ADR-006: Plugin collector contract pattern | ACCEPTED | | ADR-007-product-versioning-and-releases.md | ADR-007: Product versioning and releases | ACCEPTED | | ADR-008-plugin-migration-ownership.md | ADR-008: Plugin migration ownership (per-plugin chains from the cutover) | ACCEPTED | | ADR-009-frontend-plugin-gating.md | ADR-009: Frontend plugin gating | ACCEPTED | | ADR-010-frontend-plugin-hooks.md | ADR-010: Frontend plugin hook contract | ACCEPTED | | ADR-011-machines-rename.md | ADR-011: Rename the equipment domain to machines; retype the models catalog with modeltypes | ACCEPTED | | ADR-012-geenforce-manifest-ownership.md | ADR-012: GE-Enforce manifest ownership in shopdb | ACCEPTED | | ADR-013-plugin-catalog-and-lean-builds.md | ADR-013: Plugin Catalog, Curated Shelf, and Lean Per-Site Builds | ACCEPTED | | ADR-014-schema-lean-per-site.md | ADR-014: Schema-lean per-site builds (retire cross-plugin FKs, lift plugin tables) | ACCEPTED | | ADR-015-site-specific-configuration.md | ADR-015: Where a site's own data is allowed to live | ACCEPTED | | ADR-016-credential-delivery.md | ADR-016: Credential delivery to the fleet | ACCEPTED (decided; NOT yet implemented - | ## Size - test functions defined: **1050** (parametrised cases collect higher) - documented API paths: **265** (`docs/openapi.json`, regenerate with `scripts/gen_openapi.py`)