summaryrefslogtreecommitdiffstats
path: root/debug/risc-v-gsp-rm-vm/docs
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-02 11:30:46 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-02 11:30:46 -0400
commit2fd653044127a665e4677a2cdfb58120d7b3e16b (patch)
tree5adaeaecb30c4c553e79cd0d674d7b4029905937 /debug/risc-v-gsp-rm-vm/docs
parentf02ba2b6b0059e55e4777cb3a2e6fa87dc6438f3 (diff)
downloadopen-iov-2fd653044127a665e4677a2cdfb58120d7b3e16b.tar.gz
open-iov-2fd653044127a665e4677a2cdfb58120d7b3e16b.zip
debug: green-eye porting automation - new-device and driver-version port scripts, simulator packaging, porting docs; control-discovery fix
Diffstat (limited to 'debug/risc-v-gsp-rm-vm/docs')
-rw-r--r--debug/risc-v-gsp-rm-vm/docs/00-OVERVIEW.md8
-rw-r--r--debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md16
-rw-r--r--debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md19
-rw-r--r--debug/risc-v-gsp-rm-vm/docs/23-RM610-READINESS.md31
-rw-r--r--debug/risc-v-gsp-rm-vm/docs/26-ARCHITECTURE.md15
-rw-r--r--debug/risc-v-gsp-rm-vm/docs/27-TOOL-AUDIT.md15
6 files changed, 77 insertions, 27 deletions
diff --git a/debug/risc-v-gsp-rm-vm/docs/00-OVERVIEW.md b/debug/risc-v-gsp-rm-vm/docs/00-OVERVIEW.md
index 3b56512..e4906cc 100644
--- a/debug/risc-v-gsp-rm-vm/docs/00-OVERVIEW.md
+++ b/debug/risc-v-gsp-rm-vm/docs/00-OVERVIEW.md
@@ -52,6 +52,7 @@ whole stack scriptable, and QEMU is just the first execution backend.
| Host RM oracle harness (`rmharness`) | wrappers + capture working; device tables depend on driver permissions (17) |
| First-touch device map + lenient native MMIO | working (24) |
| MCP server (`plugins/mcp_server.py`) | working (20); stdlib-only, read-only by default |
+| Porting automation + trial packaging (28/29) | scaffolds + tests present; unadmitted pilots (dry-run default) |
| Native M2+ device model | roadmap only (08, 16) |
## Quick start
@@ -102,6 +103,8 @@ Interactively:
| [25-VALUE-VALIDATION](25-VALUE-VALIDATION.md) | value-validation demos s01–s10 |
| [26-ARCHITECTURE](26-ARCHITECTURE.md) | full architecture and API surface map |
| [27-TOOL-AUDIT](27-TOOL-AUDIT.md) | tool audit: purpose, tests, usage, status |
+| [28-PORTING-AUTOMATION](28-PORTING-AUTOMATION.md) | driver-version sweep and new-device scaffolds (pilot) |
+| [29-PACKAGING-AND-TRIALING](29-PACKAGING-AND-TRIALING.md) | trial simulation packages (pilot) |
| [GREEN-EYE-ROADMAP](../GREEN-EYE-ROADMAP.md) | long-term program H1–H7 |
## Where this fits in the Open-IOV workflow
@@ -120,3 +123,8 @@ The intended accuracy loop is: run the same workload against the real
GSP-RM (hardware or mdev), record its RPC/state behaviour, then run the
firmware in green-eye, record the same events, and compare with `compare`
(see 06 and 07).
+
+<!-- change (2026-10-02): add docs 28/29 to the status table and document map
+and mark their scripts as unadmitted pilots; scope: status table and document
+map only; benefit: the newest tool tree docs are discoverable and not mistaken
+for admitted tooling. -->
diff --git a/debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md b/debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md
index d687cca..aa71b54 100644
--- a/debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md
+++ b/debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md
@@ -249,11 +249,13 @@ the docs/14 §6 pack; the docs/23 §4 step 7 expected-artifact list maps 1:1.
* runs `python3 -m unittest discover -s tests -t .` from the tool root (QEMU
integration tests run; if QEMU were absent they skip cleanly).
-The intended release gates this workflow covers are the fast inventory smoke
-from docs/19 §6 (`control_discovery --max-id 32 --patterns zero`), the harness
-suites, and the docs/21 dry-run. A full `ci_release` run against real firmware
-is driven manually/agentically because it needs the versioned inputs and
-symbol DBs; CI-adjacent automation should call it with `--dry-run` first.
+The release gates this workflow reaches are the harness suites: the docs/19 §6
+fast inventory smoke runs inside `tests/test_discovery.py`, and the docs/21
+dry-run is covered by `tests/test_version_diff.py`. The workflow does not run
+`control_discovery` or `ci_release` as standalone steps. A full `ci_release`
+run against real firmware is driven manually/agentically because it needs the
+versioned inputs and symbol DBs; CI-adjacent automation should call it with
+`--dry-run` first.
---
@@ -318,3 +320,7 @@ or the demo ELF is absent.
| **V1 — metrics/golden data** | deterministic self-diff and stable JSON reports support golden comparisons |
| **docs/23 C5/C7** | release pipeline implemented and exercisable; dry-run rehearsal path |
| **H7 — agentic harness** | self-describing bundle + docs/20 MCP tools for monitored runs |
+
+<!-- change (2026-10-02): state exactly which release gates the CI workflow
+runs (unit suites) instead of implying standalone control_discovery/ci_release
+steps; scope: §5 only; benefit: no false claim about CI coverage. -->
diff --git a/debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md b/debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md
index 30f4720..ad8a5e7 100644
--- a/debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md
+++ b/debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md
@@ -71,7 +71,7 @@ tools/cudatool.py delta <old>/run/libcuda.so.<old> <new>/run/libcuda.so.<new>
| Step | Existing project tooling | green-eye addition |
|---|---|---|
| Export/interface diff | `tools/cudatool.py delta` | — |
-| Function matching / name-transfer measurement | `tools/cudatool.py fdematch --names <names.tsv>` | — |
+| Function matching / name-transfer measurement | `tools/cudatool.py fdematch <old-lib> <new-lib> --names <names.tsv>` | — |
| Corpus-level diff (added/removed/resized functions) | `tools/diff_corpus.py <old_index> <new_index>` | — |
| Name transfer + corpus annotation | `ApplyNameMap.java` (`--dry-run` first), `tools/annotate_corpus.py` | `./greeneye.sh symbols export` builds a runtime-address symbol DB from the same index/names |
| Driver-API smoke | `tools/test/cuda_drv_test.c` compiled as `/tmp/cdt` (prints `ALL OK`) | `./greeneye.sh symbols resolve --db ... <addr>` spot-checks transferred addresses per call path |
@@ -241,9 +241,11 @@ The project's support ladder is `docs/06-portability/hardware-software-matrix.md
1. Run `harness/portability_matrix.py` across the reference and candidate
device firmware with the same scenario options (docs/18 §1); keep
`<out>/portability-report.json`, per-pair compare reports and sessions.
-2. The planned version-diff/CI pipeline (docs/21-CI-RELEASE-PIPELINE.md,
- planned) is where those reports become release-gated artifacts; until it
- exists, attach them to the matrix process manually.
+2. The version-diff/CI pipeline
+ ([`docs/21`](21-CI-RELEASE-PIPELINE.md)) packages those reports into
+ release-gated artifacts; the porting scaffolds
+ ([`docs/28`](28-PORTING-AUTOMATION.md)) wrap it per version as unadmitted
+ pilots (evaluation in future-eng-ops F2/F3).
3. Update the device profile (documentation today; `config/hardware/*.yaml` is
not read by code — do not claim configuration-driven portability).
4. Validate on the physical device with the supervised harness before claiming
@@ -345,9 +347,14 @@ Architecture (P3):
| Differential execution and reimplementation loop | H4.5 | every port lands with A/B sessions and the M1–M6 table | reference-capture pipeline |
| Adjacent-controller work for GB10-class bring-up | H5 | PMU/SEC2/ACR/SOE models, cross-controller sessions | H2.2 |
| Multi-target orchestration | R6 / docs/18 | one report across firmware/device targets | v0.1 stable |
-| Version diff and release gating | planned (docs/21) | CI pipeline that gates a port on the evidence bundle | pipeline implemented |
-| Control discovery | planned (docs/19) | systematic control/class inventory across versions | document exists |
+| Version diff and release gating | implemented (docs/21) | CI pipeline that gates a port on the evidence bundle | pipeline implemented |
+| Control discovery | implemented (docs/19) | systematic control/class inventory across versions | document exists |
Program-level success criterion served here: a new GSP version (or device) can
be triaged — inventory diff + behaviour diff + metric table — in **hours**,
with recorded evidence.
+
+<!-- change (2026-10-02): fix the fdematch invocation (it needs two libraries),
+and replace "planned docs/19/21" with their implemented status plus the docs/28
+scaffolds; scope: §2.2, §3.5, §6 only; benefit: commands run as written and
+status tables match the tree. -->
diff --git a/debug/risc-v-gsp-rm-vm/docs/23-RM610-READINESS.md b/debug/risc-v-gsp-rm-vm/docs/23-RM610-READINESS.md
index 18d93bd..72e0e62 100644
--- a/debug/risc-v-gsp-rm-vm/docs/23-RM610-READINESS.md
+++ b/debug/risc-v-gsp-rm-vm/docs/23-RM610-READINESS.md
@@ -53,13 +53,13 @@ closed.
| # | Criterion | How it is verified | Evidence | Status today |
|---|---|---|---|---|
-| C1 | All tools implemented and tested on the current driver/firmware | full test suites green (documents/demo/probe/inject/Ghidra/harness) | test logs attached to the request | partial (MCP/CI missing) |
-| C2 | Tests green | `make test` and the harness/rmharness suites pass | transcript with date and commit | green at v0.1 (55 tests) |
+| C1 | All tools implemented and tested on the current driver/firmware | full test suites green (documents/demo/probe/inject/Ghidra/harness) | test logs attached to the request | tools implemented (docs/00); fresh full-suite run pending |
+| C2 | Tests green | `make test` and the harness/rmharness suites pass | transcript with date and commit | green at v0.1; re-run pending (155 tests, docs/27) |
| C3 | Demo, probe, inject, Ghidra work | `./greeneye.sh demo`, `probe`, `inject`, `ghidra` all demonstrated | session dirs + transcript | working per docs/00 |
-| C4 | MCP monitoring works | MCP plugin implemented and exercised (roadmap R3, docs/08; docs/15) | tool list + a monitored run | **not implemented (planned R3)** |
-| C5 | CI pipeline works | release/CI pipeline implemented and exercised (planned docs/21) | pipeline run with artifacts | **not implemented (planned docs/21)** |
+| C4 | MCP monitoring works | MCP plugin implemented and exercised (roadmap R3, docs/08; docs/15) | tool list + a monitored run | implemented (docs/20); monitored run not yet attached |
+| C5 | CI pipeline works | release/CI pipeline implemented and exercised (docs/21) | pipeline run with artifacts | implemented (docs/21); current-version run pending |
| C6 | Docs complete and accurate | doc review checklist (§3.2) signed | review record | to complete |
-| C7 | Discovery/version-diff/CI exercised on the current version | control discovery (planned docs/19) + `harness/portability_matrix.py` + `compare` + pipeline dry-run on 570.144 | report + session hashes | partial (matrix/compare exist; docs/19 planned) |
+| C7 | Discovery/version-diff/CI exercised on the current version | control discovery (docs/19) + `harness/portability_matrix.py` + `compare` + pipeline dry-run on 570.144 | report + session hashes | partial (docs/19/21 implemented; current-version run pending) |
| C8 | Harness produces a full evidence bundle | docs/07 checklist + docs/14 §6 pack produced end to end for a current-version port rehearsal | bundle directory with SHA-256 inventory | to complete |
| C9 | Human has approved | signed message (§6) | approval ID recorded in the request thread | pending |
@@ -116,9 +116,9 @@ Required results:
tables, test counts);
* [ ] `docs/22` porting guide is accurate for the current tools; planned items
are labelled `planned (docs/xx)`;
-* [ ] `docs/19-CONTROL-DISCOVERY.md` (planned) exists and has been run once on
- the current version, or C7 is explicitly waived;
-* [ ] `docs/21-CI-RELEASE-PIPELINE.md` (planned) exists and has run once on the
+* [ ] `docs/19-CONTROL-DISCOVERY.md` exists and has been run once on the
+ current version, or C7 is explicitly waived;
+* [ ] `docs/21-CI-RELEASE-PIPELINE.md` exists and has run once on the
current version, or C5 is explicitly waived;
* [ ] `GREEN-EYE-ROADMAP.md` and `docs/08` status claims match reality;
* [ ] no local source paths, no invented command names, no unsupported
@@ -158,10 +158,11 @@ must not happen beforehand.
`harness/portability_matrix.py` with the 610 and 570.144 targets and
identical scenario options; run the mutation harness once per version with
the same seed; archive both reports and every session.
-6. **Pipeline dry-run, then real.** Run the release pipeline (planned
- docs/21-CI-RELEASE-PIPELINE.md) in its dry-run mode first; inspect the
- planned artifact list without publishing. Only after the dry-run is clean,
- run the real pipeline on the 610 evidence bundle.
+6. **Pipeline dry-run, then real.** Run the release pipeline
+ ([`21-CI-RELEASE-PIPELINE.md`](21-CI-RELEASE-PIPELINE.md)) in its dry-run
+ mode first; inspect the planned artifact list without publishing. Only
+ after the dry-run is clean, run the real pipeline on the 610 evidence
+ bundle.
7. **Expected artifacts.**
* approval record and input hashes;
* 610 symbol DB + Ghidra export provenance;
@@ -257,3 +258,9 @@ Approval ID: <id>; Date: <date>; Scope limits: <text>
After approval, the 610 port proceeds only through the docs/22 workflow and
the docs/05-operations §4.1 version discipline. Until that message exists,
this repository is a 610 no-fly zone.
+
+<!-- change (2026-10-02): correct C1/C2/C4/C5/C7 status and drop "planned" for
+docs/19/21, which are implemented in the tree; scope: readiness table, §3.2
+checklist and §4 step 6 only; benefit: the gate record no longer claims
+implemented tooling is missing, and the still-open items (C6/C8/C9 and the
+current-version exercise) stay visible. -->
diff --git a/debug/risc-v-gsp-rm-vm/docs/26-ARCHITECTURE.md b/debug/risc-v-gsp-rm-vm/docs/26-ARCHITECTURE.md
index 326533b..ab8414a 100644
--- a/debug/risc-v-gsp-rm-vm/docs/26-ARCHITECTURE.md
+++ b/debug/risc-v-gsp-rm-vm/docs/26-ARCHITECTURE.md
@@ -259,9 +259,9 @@ argument schemas for all 24 tools are in 20 §5.
## 9. Automation harness
`harness/` turns the playbooks into repeatable, self-describing runs. Modules
-bootstrap the tool root and use the QEMU backend by default (18, 19, 21);
-`common.py` provides flat-image relocation, session helpers and bounded log
-reads.
+bootstrap the tool root and use the QEMU backend by default (18, 19, 21, 28,
+29); `common.py` provides flat-image relocation, session helpers and bounded
+log reads.
```mermaid
flowchart TB
@@ -293,6 +293,9 @@ flowchart TB
| `version_diff.py` | old vs new image: shape, symbols, corpus hints, probe, behavior, M1–M6 | `version-diff.json/.md`, `corpus/`, `compare/` | 21 §2 |
| `ci_release.py` | version_diff → matrix → mutation smoke, then hash the bundle | `release-report.json`, `bundle-manifest.json` | 21 §4 |
| `value_demos/run_all.py` | ten fixed scenarios (reply, counters, discovery, reach, diff, inject, version, mutation, Ghidra, evidence) | `artifacts/results.json` + per-demo JSON | 25 |
+| `port_driver_versions.py` | version-list sweep of version_diff + matrix + mutation (dry-run default; unadmitted pilot) | per-version bundles + `sweep-summary.json/.md` | 28 §2 |
+| `port_new_device.py` | device-port scaffold: profile, probe, symbols, matrix, checklist (dry-run default; unadmitted pilot) | `device-port.json/.md`, `port-checklist.json/.md`, bundle | 28 §3 |
+| `package_sim.py` | build/run a trial simulation package (unadmitted pilot) | package tree + `manifest.json`, `results.json` | 29 |
| `common.py` | shared setup (relocate to `0x80000000`, open session, bounded logs) | library | 18 §1.2 |
Harness limits are intentional: QEMU/re-hosted/demo code only; no hardware,
@@ -442,8 +445,12 @@ Invariants (enforced by tests or review):
Section diagrams and their backing docs: §2 suite (00, 01, README); §3
dispatch (01, 03); §4 backends (01 §8, 16 §4–5); §5 recording (01 §6, 09, 12
§6, 16 §10, 17 §5); §6 injection (11, 12); §7 Ghidra (05, 13); §8 MCP (20);
-§9 harness (18, 19, 21); §10 device map (24, 16 §7); §11 OODA (06, 07 P4, 25
+§9 harness (18, 19, 21, 28, 29); §10 device map (24, 16 §7); §11 OODA (06, 07 P4, 25
§7). Roadmap keys: R3 = MCP (08), R5 = mutation (18), R6 = multi-version (18,
21), H1.3 = RM service injection (GREEN-EYE-ROADMAP), H2.2 = QEMU device
model, H3/M1–M6 = native simulator (16), H4 = adversarial navigation (14),
H7 = agentic platform (15, 20).
+
+<!-- change (2026-10-02): list the docs 28/29 harness scripts in the automation
+table and index so the architecture map matches the tree; scope: §9, §14 only;
+benefit: the newest entry points are discoverable and labelled as pilots. -->
diff --git a/debug/risc-v-gsp-rm-vm/docs/27-TOOL-AUDIT.md b/debug/risc-v-gsp-rm-vm/docs/27-TOOL-AUDIT.md
index e208253..86f2b06 100644
--- a/debug/risc-v-gsp-rm-vm/docs/27-TOOL-AUDIT.md
+++ b/debug/risc-v-gsp-rm-vm/docs/27-TOOL-AUDIT.md
@@ -250,3 +250,18 @@ Files changed by this audit:
Verification after the changes: 155/155 unit tests OK; docs-link check OK
(55 files); every smoke in section 0 re-run green.
+
+## 11. Post-audit additions (not yet audited)
+
+`harness/port_driver_versions.py`, `harness/port_new_device.py` and
+`harness/package_sim.py` with docs 28/29 landed after this audit; their tests
+are `tests/test_porting_automation.py` and `tests/test_package_sim.py` (main
+suite). They are unadmitted pilots under `eng-ops.md` §2 and have not had a
+tool-audit pass, so treat their status as `needs improvement (open)` until one
+does; docs 28/29 carry the exit-code and failure readings that the audit would
+otherwise record.
+
+<!-- change (2026-10-02): record the post-audit porting/packaging scaffolds as
+unaudited rather than leaving the audit silent about them; scope: new §11 only;
+benefit: the audit's scope statement stays true for the commit it describes
+and the gap to the new code is explicit. -->