docs: wiki staleness sweep (Fable-orchestrated Opus audit)

Audited all 40 docs/ against the live codebase; fixed factual staleness in 23,
14 were clean. Highlights (all verified against code):
- equipment -> machines (ADR-011 rename) in INSTALL/DEPLOY-WINDOWS-IIS,
  PLUGIN-GUIDE, GE-ENFORCE, ROADMAP.
- Versions refreshed: contract 0.10.0 -> 0.13.0, product 0.5.0 -> 0.7.0, plus
  plugin example core_version pins.
- Bundled set corrected to the current 13 (PLUGINS.md 7 -> 13 rows; DEPLOY
  eleven -> thirteen).
- Per-plugin Alembic chain workflow (ADR-008) replacing stale core-chain steps
  in PLUGIN-QUICKSTART / BACKUP-RESTORE; deploy adds plugin upgrade-all.
- Frontend plugin staging (ADR-010) replacing 'no frontend plugin system yet'
  in PLUGIN-GUIDE; view/route paths repointed to plugins/<name>/frontend/.
- Corrected file paths (MapView.vue, manifest_schema.json), CLI (shelf-list),
  API gating (GET /api/plugins is optional-jwt), WJF 15 -> 16 stages, and
  retired Collector/PC-Types settings pages (ADR-012).
- ge-enforce proposal marked ACCEPTED/built.
This commit is contained in:
cproudlock
2026-07-19 12:54:53 -04:00
parent 49a0206b9f
commit e005d1846a
26 changed files with 145 additions and 84 deletions

View File

@@ -21,7 +21,8 @@ decision records: `docs/proposals/printedparts-plugin.md`.
Know before you start
- BUNDLED plugin: frontend files live in core `frontend/src/`, and three core
- BUNDLED plugin: frontend files live in `plugins/printedparts/frontend/`
(staged into the Vite tree by `scripts/stage-frontend.mjs`), and three core
files get small edits (api client, sidebar icon map, PLUGIN_TABLE_OWNERS).
Normal for every bundled plugin.
- Ground rules: import core ONLY via `shopdb.api` (+ `shopdb.plugins.base`);
@@ -92,7 +93,7 @@ the edit (imports/meta boilerplate unchanged from the scaffold):
"description": "3D-printed parts inventory + kiosk checkout",
"display_name": "3D Printed Parts",
"dependencies": ["employees"],
"core_version": ">=0.13.0,<1.0.0",
"core_version": ">=0.12.0,<1.0.0",
"api_prefix": "/api/printedparts",
"default_enabled": false
}
@@ -371,8 +372,8 @@ export const printedpartsApi = {
```
2. Rename the scaffold views to `PrintedItemsList/PrintedItemDetail/
PrintedItemForm.vue` and repoint `frontend/src/router/routes/printedparts.js`
(auto-discovered by the router; list/detail carry `meta.plugin`, new/edit add
PrintedItemForm.vue` and repoint `plugins/printedparts/frontend/routes.js`
(aggregated into the router via `routes.gen.js`; list/detail carry `meta.plugin`, new/edit add
`requiresAuth`).
3. The list page, core of `PrintedItemsList.vue` (master template:
@@ -885,10 +886,12 @@ defineEmits(['digit', 'clear', 'backspace'])
(Terminal-style CSS - fixed 3-column grid, big targets, press feedback - at
the tag.)
### The kiosk view - `frontend/src/views/printedparts/PartsKiosk.vue`
### The kiosk view - `plugins/printedparts/frontend/views/PartsKiosk.vue`
Full-screen, no auth, registered TOP-LEVEL beside `/shopfloor` in
`frontend/src/router/index.js` (outside AppLayout, `meta.plugin` only):
Full-screen, no auth, exported as a `toplevel` route in
`plugins/printedparts/frontend/routes.js` and aggregated into
`frontend/src/router/index.js` via `routes.gen.js` (outside AppLayout,
`meta.plugin` only):
```javascript
{
@@ -961,7 +964,7 @@ Commit + tag `lab-stage-07`.
A plugin OWNS its label page (the USB precedent) - parts are not assets, so
they do not join the shared asset-label TYPE_CONFIG. New public route beside
`/print/usb-labels`, view `frontend/src/views/print/PrintedPartsLabels.vue`.
`/print/usb-labels`, view `plugins/printedparts/frontend/views/PrintedPartsLabels.vue`.
The pieces that matter:
```javascript
@@ -1184,7 +1187,7 @@ for a contributor:
| Blueprint style, pagination, authz | `plugins/measuringtools/api/routes.py` |
| Image upload/serve/delete | `shopdb/core/api/models.py` |
| Open kiosk endpoints precedent | `plugins/employees/api/routes.py`, `plugins/notifications/api/routes.py` |
| Plugin-owned label print view | `frontend/src/views/print/USBLabelBatch.vue` |
| Plugin-owned label print view | `plugins/usb/frontend/views/USBLabelBatch.vue` |
| Barcode/QR rendering | JsBarcode in `AssetLabel.vue`, `qrLogo.js` |
| Kiosk route posture | `/shopfloor` in `frontend/src/router/index.js` |
| List/Detail master templates | `PrintersList.vue`, `PrinterDetail.vue` |