Files
pikasTech-HWLAB/docs/dev-evidence-blocker-aggregator.md
T
2026-05-22 11:52:11 +00:00

135 lines
6.1 KiB
Markdown

# DEV Evidence / Blocker Aggregator
This is the lightweight report-only entry point for `pikasTech/HWLAB#41` and
the M5 DEV gate aggregator v2 for `pikasTech/HWLAB#58`. It helps a commander
decide whether the DEV acceptance path is green, blocked, or ready for another
repair round across `#33-#39`, `#46`, `#7`, and the MVP DoD in `#9`.
Run from the repository root:
```sh
node scripts/dev-evidence-blocker-aggregator.mjs --pretty
```
For a short validation response:
```sh
node scripts/dev-evidence-blocker-aggregator.mjs --check
```
To refresh the committed v2 machine and human reports:
```sh
node scripts/dev-evidence-blocker-aggregator.mjs --write-report
```
The generated files are:
- `reports/dev-gate/dev-m5-gate-aggregator-v2.json`
- `reports/dev-gate/dev-m5-gate-aggregator-v2.md`
## Source Levels
The aggregator keeps evidence levels separate so fixture output cannot be
promoted to live DEV evidence:
| Level | Meaning |
| --- | --- |
| `SOURCE` | Repository contracts, schemas, docs, manifests, or examples. |
| `LOCAL` | Localhost or in-process smoke results only. |
| `DRY-RUN` | Fixture-backed or no-mutation dry-run readiness evidence. |
| `DEV-LIVE` | Read-only evidence observed from the real DEV route; this may prove entrypoint reachability without proving downstream DB, M3, M4, or M5 acceptance. |
| `BLOCKED` | Missing issue reads, missing DEV evidence, missing artifacts, or other open blockers. |
## Current DEV Layering
The v2 report exposes `currentDevLayering` so the public route can be green
without promoting the full gate:
| Layer | Meaning |
| --- | --- |
| `Frontend DEV revision` | Latest accepted Cloud Workbench frontend revision on the active `http://74.48.78.17:16666/` browser endpoint. Frontend revision evidence is browser-only and cannot green DB, M3, M4, or M5. |
| `EDGE/ROUTE live` | `16666` browser and `16667` health route evidence from read-only probes. |
| `DB live/degraded` | Cloud API DB readiness from redacted health evidence; route success does not imply DB live. |
| `M3 hardware trusted loop` | Real DEV `res_boxsimu_1:DO1 -> hwlab-patch-panel -> res_boxsimu_2:DI1` plus operation, trace, audit, and evidence identifiers. |
| `M4 agent loop` | Agent loop live preflight and scheduling/evidence closure, gated by DB and runtime readiness. |
| `artifact/desired-state source` | Artifact source coverage for the current target ref plus desired-state dry-run/apply status. |
The report also emits `activeEndpoints` and `deprecatedEndpoints`. Active
acceptance endpoints are:
- frontend/browser: `http://74.48.78.17:16666/`
- API/live: `http://74.48.78.17:16667/health/live`
Legacy public `http://74.48.78.17:6666` and
`http://74.48.78.17:6667` are historical/deprecated only and are not active
green evidence.
`latestFrontendDevFact` records the current #99/#108 frontend fact: revision
`1e8805664970839b72be40c34636b08f6d18b131` is accepted on DEV, with
`promotesM3M4M5=false`.
## Current Contract Map
| Milestone | Current visible level | Contract entry |
| --- | --- | --- |
| M0 | `SOURCE` | `docs/m0-contract-audit.md`, protocol schemas, evidence chain examples, M0 validator. |
| M1 | `LOCAL` | `docs/m1-local-smoke.md`, `fixtures/mvp/runtime.json`, `scripts/m1-contract-smoke.mjs`. |
| M2 | `DEV-LIVE` for frontend/route only | DEV deploy smoke fixture plus active read-only `16666`/`16667` endpoint smoke and accepted frontend revision. |
| M3 | `BLOCKED` | Hardware trusted loop topology fixture and local patch-panel smoke exist, but DEV-LIVE operation/trace/audit/evidence IDs are missing. |
| M4 | `BLOCKED` | Agent automation loop fixture and local smoke exist, but live preflight is blocked at DB live readiness. |
| M5 | `BLOCKED` | MVP e2e dry-run plan is green, but bounded DEV-LIVE acceptance is blocked by DB/M3/M4 and source/artifact coverage. |
`milestoneLevelClassification` is the compact M0-M5 answer for command
handoff. `milestoneBlockerClassification` gives the M3/M4/M5 blocker class,
dependency, and required next proof.
## Blocker Posture
The v2 report reads committed report fixtures only:
- `reports/dev-gate/dev-preflight-report.json`
- `reports/dev-gate/dev-deploy-report.json`
- `reports/dev-gate/dev-artifacts.json`
- `reports/dev-gate/dev-edge-health.json`
- `reports/dev-gate/dev-m2-deploy-smoke-active.json`
- `reports/dev-gate/dev-m3-hardware-loop.json`
- `reports/dev-gate/dev-m4-agent-loop.json`
- `reports/dev-gate/dev-mvp-gate-report.json`
- `reports/d601-k3s-readonly-observability.json`
The report remains blocked until real DEV-LIVE evidence is attached for the
required downstream HWLAB runtime services. Public route evidence on
`16666/16667` is necessary but not sufficient: DB live readiness, M3 trusted
loop evidence, M4 agent-loop evidence, and artifact/desired-state source
coverage stay separate.
The legacy base-image blocker is not current when the committed reports show an
approved Node 20 builder base. Artifact/current remains stricter: a target ref
can still keep `artifact-source-commit` or `dev-artifact-publish` open when it
changes artifact build inputs after the publish source commit, even if the
older DEV artifact report contains 13/13 published service digests. Registry
manifest reachability remains separate and belongs to the #66
process/Docker/k3s access dimensions.
## Next-Round Order
The JSON output groups recommended next actions in dependency order:
1. `d601-k3s`, `kubectl`, kubeconfig/maintenance bridge: restore read-only
hwlab-dev cluster observability without printing Secrets.
2. `cloud-api-db`: prove DEV cloud-api DB env and health readiness with
redacted values only.
3. `dev-edge`, `dev-edge-health`, `dev-ingress-health`: repair
`:16667`/frp/edge/router reachability, then rerun read-only DEV edge health
before M3/M4/M5 live loops.
4. `registry-manifest-read`: resolve #66 registry reachability without
treating it as a missing publish digest or rerunning heavy publish.
## Boundaries
The aggregator does not deploy, call DEV, call PROD, run browser tests, run
heavy e2e, read secrets, restart services, or replace HWLAB runtime services
with UniDesk services. It is a local report generator and static contract
checker only.