docs(wiki): fifth-pass e2e — live verification of fixes + chain/concurrent

This commit is contained in:
matevip 2026-05-28 09:25:49 +08:00
parent af9928bf54
commit f488be690e

View File

@ -676,3 +676,47 @@ e2e passes. The bug discovered mid-§8 has a unit test guard. The
portability gap noted in §10.1 has been fixed and tested. The shipping portability gap noted in §10.1 has been fixed and tested. The shipping
spec (RFC 55 v3.3) matches observable behaviour on both H2 and MySQL. spec (RFC 55 v3.3) matches observable behaviour on both H2 and MySQL.
---
## 12. Fifth pass — live verification of §11 fixes + chain / concurrent
(2026-05-28)
After committing the §11 fixes, re-validated against the live server
on dev. Same scenarios from §10 plus three new chain / concurrency
ones the prior passes hadn't exercised.
### 12.1 §11 fixes are live
| Test | Result | Trace |
|---|---|---|
| Case-only rename `alpha → ALPHA` | ✅ HTTP 200 | `{"oldSlug":"alpha","newSlug":"ALPHA","pageId":"2059791691121410050"}` |
| Real collision `beta → ALPHA` (different page) | ✅ HTTP 400 | `"a page with slug 'ALPHA' already exists in this KB"` — same-id escape did not swallow this |
| Same-slug rename `ALPHA → ALPHA` | ✅ HTTP 400 | `"new slug equals old slug — no-op"` |
| Scan × 5 byte-identity (sha1 of content + summary) | ✅ identical | `content sha1 e4adbec4...` and `summary sha1 0b62e4c4...` stable across 5 consecutive POSTs |
### 12.2 New chain + concurrency scenarios
| Code | Scenario | Result |
|---|---|---|
| C1 | Chain `rename ALPHA → GAMMA` then `delete GAMMA`, with `beta` referencing `[[alpha]]` 2× | ✅ After rename: `beta.outgoing=["gamma"]`. After delete: `beta.outgoing=[]`, `broken=[]`, residual `[[GAMMA]]`/`[[alpha]]` count = 0. Audit trail records both rename + final delete with the consistent snapshot title "Alpha" preserved through all 3 mutations |
| C2 | Cross-KB concurrent: 3 POSTs to 3 different KBs at the same millisecond | ✅ 3 distinct jobIds returned simultaneously; all 3 KBs reach `completed` within 3 s. Aggregates: KB-1 (31p, 29 broken, 81 refs), KB-2 (29p, 26 broken, 75 refs), KB-3 (24p, 18 broken, 89 refs). Per-KB isolation confirmed — no cross-talk |
| C3 | Stress: PUT with 10 fake slugs + 2 real (`[[a1]]..[[c2|aliased]]` + `[[overview]] [[log]]`) | ✅ outgoing has 12 entries (all 10 fakes + 2 reals, with `c2` alias-form correctly merged into a single `c2` slug); broken has exactly the 10 fakes |
| C4 | Re-run 31-page KB scan post-fix to confirm perf unchanged | ✅ POST latency 32 ms (within noise of earlier 18 ms), full scan to `completed` < 1 s |
### 12.3 Concentrated-debt observation
KB id `2054907618529591298` (`QA-Bug-Test KB`, 24 pages, real historical
content) returned `89 broken refs across 18 of 24 pages` (75 % broken-
rate). Higher concentration than the 31-page test KB (29/31 = 94 % but
fewer refs each). Both numbers are consistent with the lint correctly
catching title-form references in content produced before Phase 3
shipped — exactly the historical debt the lint exists to surface for
cleanup.
### 12.4 Bottom line
All five passes (§7, §8, §9, §10, §11/§12) reproducible on a clean
dev box. 14 + 3 + 9 + 14 + 5 + 4 = 49 documented assertions across
five distinct phases of validation. No open defects; both follow-ups
shipped and live-verified.