docs(qa): qualify Phase 9 regression and acceptance
This commit is contained in:
@@ -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':
|
||||
|
||||
Reference in New Issue
Block a user