docs(qa): qualify Phase 9 regression and acceptance

This commit is contained in:
cesnimda
2026-10-23 07:31:27 +02:00
parent 0fb108bd67
commit 8e7e3f6387
63 changed files with 64728 additions and 6835 deletions
+34 -5
View File
@@ -31,8 +31,29 @@ def main():
volume = read('p9-05/volume-cases.json')
assert len(cases) == 362 and len(diagnostics) == 18 and len(volume) == 3
assert len({(row['id'], row['project']) for row in cases}) == 362
assert all(row['status'] == 'expected' and len(row['results']) == 1 and row['results'][0]['status'] == 'passed' for row in cases + diagnostics + volume)
validation = read('validation.json')['lanes']
contracts = [case for lane in ['ai', 'auth', 'rate', 'ingress', 'pdf', 'preferences'] for case in read(f'p9-06/{lane}-cases.json')]
assert len(contracts) == 23
assert all(row['status'] == 'expected' and len(row['results']) == 1
and row['results'][0]['status'] == 'passed'
and row['results'][0]['retry'] == 0 and not row['results'][0]['errors']
for row in cases + diagnostics + volume + contracts)
validation_record = read('validation.json')
validation = validation_record['lanes']
offline_commands = {
'python scripts/test-supply-chain.py', 'python scripts/test-ollama-evaluation.py',
'python scripts/test-browser-runtime-retry.py', 'python scripts/test-ingress.py',
'python scripts/supply-chain.py scan-secrets', 'python scripts/supply-chain.py generate-sbom',
'node --test audit-dependencies.test.mjs localSMTPfixture.test.mjs',
'node --test browser-extension/tests/capture-url.test.mjs',
}
assert len(validation_record['offline']) == len(offline_commands)
assert {row['command'] for row in validation_record['offline']} == offline_commands
assert all(row['exitCode'] == 0 for row in validation_record['offline'])
documents = validation_record['nativeDocuments']
assert len(documents['commands']) == 2 and all(row['exitCode'] == 0 for row in documents['commands'])
assert '.artifacts/phase9/ordinary-cta-shard-1.json' in documents['inputs']
assert '.artifacts/phase9/ordinary-cta-shard-1-exit.json' in documents['inputs']
assert len(documents['outputs']) == 2
assert validation['ordinary']['membershipMatchesDiscovery']
for lane in ['ordinary', 'phase9', 'volume', 'ai', 'auth', 'rate', 'ingress', 'pdf', 'preferences']:
record = validation[lane]
@@ -41,16 +62,24 @@ def main():
assert record['stats']['expected'] == record['cases']
assert sum(validation[lane]['cases'] for lane in ['ai', 'auth', 'rate', 'ingress', 'pdf', 'preferences']) == 23
assert validation['backend']['passed'] == '1084' and validation['backend']['failed'] == '0'
assert validation['backend']['total'] == validation['backend']['executed'] == '1084'
assert validation['backend']['notExecuted'] == '0'
assert validation['frontend']['success'] and validation['frontend']['numPassedTests'] == 919
assert validation['frontend']['numFailedTests'] == validation['frontend']['numPendingTests'] == 0
assert validation['frontend']['numTodoTests'] == validation['frontend']['numFailedTestSuites'] == 0
assert validation['frontend']['numPassedTestSuites'] == 104
assert validation['sidecar']['tests'] == '56' and validation['sidecar']['failures'] == validation['sidecar']['errors'] == '0'
assert validation['sidecar']['skipped'] == '0'
for lane in [*[f'ordinary-shard-{number}' for number in range(1, 5)], 'phase9-frozen', 'volume-qualified', 'ai', 'auth', 'rate', 'ingress', 'pdf', 'preferences', 'backend', 'frontend', 'sidecar', 'build']:
for lane in [*[f'ordinary-cta-shard-{number}' for number in range(1, 5)], 'admin-grid-green', 'landing-cta-green', 'phase9-cta', 'volume-complete', *[lane + '-cta' for lane in ['ai', 'auth', 'rate', 'ingress', 'pdf', 'preferences']], 'backend', 'frontend-cta', 'sidecar', 'build-cta']:
assert validation[lane + 'Process']['exitCode'] == 0
for name, count, pages in [('fidelity-results.json', 16, 36), ('settings-fidelity-results.json', 8, 24)]:
corpus = read('p9-05/evidence/' + name)
assert corpus['passed'] == corpus['total'] == count
assert all(row['pass'] and not row['failures'] for row in corpus['fixtures'])
assert sum(row['pdfPages'] for row in corpus['fixtures']) == pages
rows = read('p9-02/route-results.json')
assert len(rows) == 396 and {row['pattern'] for row in rows} == set(inventory['routes'])
header = '# Phase 9 preservation reconciliation\n\nAll57 groups retain **56 PARTIAL / C11 DEFERRED**. Zero groups are promoted to PASS. These statuses retain mandatory human/provider/output obligations and are not57 defect findings. Phase9 adds finite executed evidence and two bounded UI fixes; it does not erase previous acceptance records. [Phase7](../phase-7/PRESERVATION.md) supplies the later residual obligations, superseding stale Phase2 gap descriptions (notably repaired P2-D01 and CV revision safety).\n\n'
header = '# Phase 9 preservation reconciliation\n\nAll57 groups retain **56 PARTIAL / C11 DEFERRED**. Zero groups are promoted to PASS. These statuses retain mandatory human/provider/output obligations and are not57 defect findings. Phase9 adds finite executed evidence and repairs in two existing UI owners; it does not erase previous acceptance records. [Phase7](../phase-7/PRESERVATION.md) supplies the later residual obligations, superseding stale Phase2 gap descriptions (notably repaired P2-D01 and CV revision safety).\n\n'
header += 'Exact executed browser cases are in [ordinary-cases](p9-01/ordinary-cases.json); complete backend case results and frontend suite totals are linked from [validation](validation.json). The matches below use explicit IDs in test titles only; zero explicit matches means no direct title mapping, not absent unit/API coverage. A case may cover several groups; do not sum counts as independent tests.\n\n'
lines = [header, '| Group / owners | Entry → Phase9 | Direct native title matches | Current residual / closure |', '|---|---|---|---|']
portable = []
@@ -64,7 +93,7 @@ def main():
if identifier == 'PRES-C11':
delta = 'P5-13 remains withheld; real model/semantic qualification not executed.'
if identifier == 'PRES-E01':
delta += ' P9-V01 wrapped heading fix and16-vector native geometry proof.'
delta += ' P9-V01/P9-V02 proportional heading and CTA fixes; two native cases retain16-vector geometry proof.'
if identifier in ['PRES-A01', 'PRES-E08']:
delta += ' P9-L01 installed vendor locale and2new Jest cases.'
if identifier == 'PRES-S02':