eef028e2
docs: record forwarding landing validation
a73x 2026-09-08 17:49
Commit message
docs/superpowers/plans/2026-09-07-native-port-forwarding-slice-1.md
| Old | New | ||
|---|---|---|---|
| @@ -202,3 +202,79 @@ no production-file changes. Protocol/platform coverage is Linux x86-64 only: | |||
| 202 | SSH stdio and direct IPv4 QUIC were exercised; macOS was not exercised. No | 202 | SSH stdio and direct IPv4 QUIC were exercised; macOS was not exercised. No |
| 203 | general build or gate was rerun because this delivery changes only the Python | 203 | general build or gate was rerun because this delivery changes only the Python |
| 204 | harness and validation record. | 204 | harness and validation record. |
| 205 | |||
| 206 | ### Final clean landing candidate (2026-09-08) | ||
| 207 | |||
| 208 | This section is final-candidate evidence; the preceding sections are historical | ||
| 209 | records and are intentionally not erased. A new clean worktree was created | ||
| 210 | from original `input-refactor` `22fa3b7f878204a1d785b8293c53d04dd810fb58` and | ||
| 211 | rebased with `GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash 03661841`. | ||
| 212 | The production snapshot is the resulting one-commit candidate | ||
| 213 | `8d4f4e41213548711d29ed7d26c8c4f41c367f97` (parent | ||
| 214 | `03661841b1ef0853f43317067d4894ebe355a937`), tree | ||
| 215 | `181377d85715a59355d0ce2d349376e8cc085f65`. The pre-squash tree was the same | ||
| 216 | value, so tree equality passed; the eight original range commits became one | ||
| 217 | production commit without changing tracked content. The base-to-candidate binary-diff SHA-256 is | ||
| 218 | `c476c4b065e5de246e660561a3f6ae599ac12d38f45425ec2b336992aed22d3c`. | ||
| 219 | No complete-index-manifest hash is asserted here: the originally recorded | ||
| 220 | value did not have a reproducible manifest artifact. | ||
| 221 | |||
| 222 | All commands below ran serially from that clean candidate through | ||
| 223 | `tools/run-logged.sh`, with wrapper-preserved status **0**. Full ignored logs, | ||
| 224 | status files, source-index snapshot, platform/toolchain record, dependency | ||
| 225 | symlink provenance, and release-binary records are retained outside Git at | ||
| 226 | `dist/native-forward-validation/final-candidate/`; this document retains the | ||
| 227 | assertions rather than making the ignored logs the only evidence. The host was | ||
| 228 | Linux x86-64; Make resolved mise Zig 0.15.2. No macOS result is claimed. | ||
| 229 | |||
| 230 | | Command | Status | Final assertion/result | | ||
| 231 | | --- | ---: | --- | | ||
| 232 | | `make daemon-test client-test native-core-test` | 0 | Focused daemon, client, and native-core suites passed. | | ||
| 233 | | `make native` | 0 | Native build and native test passed. | | ||
| 234 | | `make check` (before this documentation edit) | 0 | Required lint, format, unit, shell, ABI, reference, and source-rule gate passed. | | ||
| 235 | | `make ci` | 0 | CI, e2e, agent, and throughput gates passed. | | ||
| 236 | | `make check` (post-review documentation correction) | 0 | Re-ran after the wording correction; log and wrapper status are `dist/native-forward-validation/final-candidate/post-review-doc-check.log` and `post-review-doc-check.status`. | | ||
| 237 | | `make native-e2e` | 0 | Native journey passed all 33 checkpoints. | | ||
| 238 | | `make install BINDIR=ABSOLUTE_CANDIDATE_PATH INSTDIR=ABSOLUTE_CANDIDATE_PATH` | 0 | Built fresh ReleaseSafe `mux`/`muxg` only under the candidate; no user bin was used. | | ||
| 239 | | `python3 -B test/native_forward.py ABSOLUTE_CANDIDATE_MUX ABSOLUTE_CANDIDATE_MUXG` | 0 | Socket, stdio, and QUIC routes passed HTTP 200 with unique-token containment; each route ran three concurrent roughly 256 KiB streams (without half-close), then a separate 1 MiB+17-byte half-closed stream. Lifetime/refusal and whole-daemon recovery checks also passed (4 checkpoints). | | ||
| 240 | | `MUX_FORWARD_REMOTE_ENABLE=1 MUX_FORWARD_REMOTE=ubuntu@192.168.0.107 python3 -B test/native_forward_remote.py ABSOLUTE_CANDIDATE_MUX ABSOLUTE_CANDIDATE_MUXG` | 0 | Authorized disposable-VM SSH-stdio and direct IPv4 QUIC routes passed exact HTTP, three concurrent >1 MiB half-close streams, listener reservation, restart recovery, and OS-oracle daemon/socket/UDP-release cleanup assertions. | | ||
| 241 | |||
| 242 | The fresh candidate ReleaseSafe binaries had SHA-256 `mux` | ||
| 243 | `f58e53bd63e2bef7cac995ca3b1b82ae8ab14d65fb690d013dfa69b7baa3b544` and | ||
| 244 | `muxg` `f76e39c72e5c8fefed450915fe801745f2d0f94bc5ad3f71d52bc12214c3eb40`. | ||
| 245 | Final source SHA-256 values were `src/client/forward.zig` | ||
| 246 | `4d81ce5b896c3d734372f2f1017fffb661e63cf413205ed0b4dd177131665f30`, | ||
| 247 | `src/server/server_forward.zig` | ||
| 248 | `90d0b41d6f6035659ea1294cc257ad46eda87035e68d1b7ab3330aa903437e61`, | ||
| 249 | `test/native_forward.py` | ||
| 250 | `b9e4e96d2cd1c83063d74a8957c48542f374d1bdac904ecbef3d3943d654796e`, and | ||
| 251 | `test/native_forward_remote.py` | ||
| 252 | `c40eb5ab7067b0c86b238ea8437fcab913844f66d18bbd20dda673eabbcf2cc4`. | ||
| 253 | |||
| 254 | The latest independent review was clear. Historical remote-harness blockers | ||
| 255 | are resolved by fixture-owned private paths/key and OS-oracle cleanup; the | ||
| 256 | remote result above is the replacement evidence. Its local and remote claims | ||
| 257 | are intentionally distinct: only the remote SSH-stdio and direct-QUIC run | ||
| 258 | asserted exact HTTP response bodies, three concurrent >1 MiB half-closed | ||
| 259 | streams, and exact bidirectional bytes. The earlier assessment that | ||
| 260 | TUI handling was redundant was wrong: forwarding protocol messages must be | ||
| 261 | explicitly skipped by the TUI router because it has no reply of its own and | ||
| 262 | those frames belong to another client conversation. The committed exhaustive | ||
| 263 | router test covers every forwarding message. The historical local-HTTP | ||
| 264 | readiness failure was also fixed: startup retries now apply only to the typed | ||
| 265 | pre-response connection/reset/EOF condition; the parser API returns | ||
| 266 | `(status, body)`, requires one bounded `Content-Length`, rejects malformed, | ||
| 267 | duplicate, chunked, truncated, and surplus responses, and regression tests | ||
| 268 | prove parser failures and non-200/wrong-body responses are not swallowed. | ||
| 269 | |||
| 270 | Before this documentation-only change, the candidate source tree was clean and | ||
| 271 | had the production snapshot above. After the documentation commit, the exact | ||
| 272 | tracked diff must be this single plan file only. Read-only recomputation | ||
| 273 | against production commit `8d4f4e41` (commands and output at | ||
| 274 | `dist/native-forward-validation/final-candidate/recomputed-production-hashes.txt`) | ||
| 275 | confirms the tree equality, binary-diff hash, and listed source-file hashes. | ||
| 276 | The independent-review record is | ||
| 277 | `dist/native-forward-validation/final-candidate/independent-review.txt`. | ||
| 278 | There is no captured historical local invocation manifest; it is not claimed | ||
| 279 | as run evidence. `make check` is rerun after the edit and records the final | ||
| 280 | documentation gate. | ||