test(settings): qualify privacy read and rejected save recovery
@@ -1,5 +1,7 @@
|
||||
# A3-IM10 Cross-application qualification
|
||||
|
||||
Settings privacy recovery passed 36 configurations and 180 states on unchanged runtime `e8e7d839`. Loading, unavailable, retry, rejected save and discard were exercised with fixture responses. [Settings recovery review](visual-correction/SETTINGS_RECOVERY_REVIEW.md)
|
||||
|
||||
Audit timestamp successor `2dc8fe4c` preserves date and time readability without inflating the table row. Nine native cases, types, lint, build and 36 focused rendered states passed. See [Audit date review](visual-correction/AUDIT_DATE_REVIEW.md).
|
||||
|
||||
Correspondence recovery passed 36 controlled configurations and 144 captured states on unchanged runtime `c7e8627c`. Review error/retry/empty/suggestion and draft 409 recovery were exercised without sending mail. [Mail recovery review](visual-correction/MAIL_RECOVERY_REVIEW.md)
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
],
|
||||
"visualStatus": "OPEN_SECTIONS_QUICK_CAPTURE_AND_SHARED_FEEDBACK_SCOPED_REVIEW",
|
||||
"afterStatus": "PASSED:36 configurations /252 Settings states; five sections, focused AI and bookmarklet/click feedback; zero writes/proposals. Error/conflict/native/live qualification remains open",
|
||||
"evidence": "SETTINGS_REVIEW.md; evidence/settings-flat/BROWSER.json",
|
||||
"evidence": "SETTINGS_RECOVERY_REVIEW.md; earlier SETTINGS_REVIEW.md and evidence/settings-flat/BROWSER.json",
|
||||
"functionalCriteria": "Original preservation register retained; no capability acceptance promotion"
|
||||
},
|
||||
{
|
||||
@@ -371,7 +371,7 @@
|
||||
"Import failure/processing/empty states and all template previews"
|
||||
],
|
||||
"/settings": [
|
||||
"Error/loading/conflict and other transient feedback states",
|
||||
"Other transient feedback states beyond qualified AI privacy loading/retry/rejected save/discard",
|
||||
"Granular per-user Ghosted pause persisted contract",
|
||||
"Real bookmark-bar/device and final owner/native-language checks"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Settings privacy read and save recovery
|
||||
|
||||
Reused runtime `e8e7d83958587e8b5a4b93d03d3e736896df5a48`. No application source changed. The existing privacy form shows a loading state and no switches while its first read is held. A fixture 503 shows an unavailable message. Keyboard retry restores the named control group and its saved value.
|
||||
|
||||
The user switches off AI and presses Save. The intercepted preference update carries only the two current preference fields and receives a fixture 409. The form shows the error and preserves the unsaved draft. Keyboard discard restores the loaded setting and clears the warning, without another request.
|
||||
|
||||
Passed 36 configurations at nine widths across EN/NB and both themes. The 180 captured states had zero axe violations, page exceptions, unexpected writes or proposals. Each configuration made exactly one intercepted rejected write. There were 36 unavailable company reads and one intentional initial privacy 503 per configuration. The pilot overlaps the full matrix and is not added to its totals.
|
||||
|
||||
This fixture qualifies presentation of a rejected save. It does not establish a server-side optimistic concurrency contract. No setting was saved, no entitlement changed and no model ran. Other Settings transient, backup/export and native checks remain separate.
|
||||
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"screens": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-loading",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-unavailable",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-retry",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-save-conflict",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-discard",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-loading",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-unavailable",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-retry",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-save-conflict",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "ai-discard",
|
||||
"violations": []
|
||||
}
|
||||
],
|
||||
"journeys": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"initialReadRetry": "PASS",
|
||||
"rejectedSavePreservedDraft": "PASS",
|
||||
"discardRestoredFixturePreference": "PASS",
|
||||
"aiGeneration": "NOT RUN"
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"initialReadRetry": "PASS",
|
||||
"rejectedSavePreservedDraft": "PASS",
|
||||
"discardRestoredFixturePreference": "PASS",
|
||||
"aiGeneration": "NOT RUN"
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"unexpectedWrites": [],
|
||||
"writes": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"action": "aiPreferenceConflict"
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"action": "aiPreferenceConflict"
|
||||
}
|
||||
],
|
||||
"proposals": [],
|
||||
"unavailableReads": [
|
||||
"/api/companies",
|
||||
"/api/companies"
|
||||
],
|
||||
"blockedExternal": [
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com"
|
||||
],
|
||||
"limits": [
|
||||
"All API, AI and preview results are synthetic fixtures. No model activation, semantic translation quality, backend end-to-end or physical PDF qualification.",
|
||||
"No native device, screen reader, provider, integrated security, deployment or release acceptance."
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 103 KiB |