Files
shopdb-flask/docs/PROJECT-MAP.md
cproudlock 96df19702e docs: one manual runbook, and ADR statuses that mean something
DEPLOY-WINDOWS-IIS was a second copy of the manual IIS procedure that had
diverged from the first: a different MySQL version (8.0, which reached end of
life in April), a different port, a different plugin list, and a profile file
that does not exist. Two runbooks for one procedure means a reader follows
whichever they found, and one of them was wrong. INSTALL-WINDOWS-IIS covers
everything it did plus a preflight step and the subpath method, so the one
section it uniquely had - redeploying a hand-built server - is folded in there,
with the plugin-chain step it was missing and a note to back up first, and the
duplicate is gone. Everything that pointed at it now points at the survivor.

Three ADR statuses said something untrue.

ADR-013 said PROPOSED while half of it had shipped and ADR-014 had been accepted
on top of it. A decision that has been implemented and depended upon is not
proposed, and leaving one that way devalues every other status in the index. The
catalog half is still unbuilt, which is the ordinary state of an accepted
decision: accepted means settled, not delivered.

ADR-016 said ACCEPTED for a design where nothing is built - the endpoint and
permissions it describes do not exist, so a reader goes looking for them. The
status stands, because the decision does; the header now says so plainly and
points at where today's credentials actually live.

ADR-003 and ADR-004 were ACCEPTED with their own Decision lines still opening
"**PROPOSED:**", which reads as though the decision was never taken.

And the dashboard proposal carried Status: ACCEPTED, which belongs to a decision
record. A proposal is a proposal; the contract it produced is the ADR.
2026-08-14 16:20:59 -04:00

4.1 KiB

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.9.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)