From 77a9492fad38590d1d159a8aff42fe23206ec52f Mon Sep 17 00:00:00 2001 From: LucaP Date: Sat, 5 Sep 2026 01:38:53 +0300 Subject: [PATCH] docs: record content and media acceptance --- docs/accessibility/wcag-2.2-aa-checklist.md | 37 ++++++++++++------- docs/content-approval-checklist.md | 23 ++++++++++++ docs/reviews/audience-validation.md | 20 +++++++++- docs/reviews/visual-qa.md | 41 +++++++++++++++++++-- 4 files changed, 102 insertions(+), 19 deletions(-) diff --git a/docs/accessibility/wcag-2.2-aa-checklist.md b/docs/accessibility/wcag-2.2-aa-checklist.md index addcf97..e2d13ca 100644 --- a/docs/accessibility/wcag-2.2-aa-checklist.md +++ b/docs/accessibility/wcag-2.2-aa-checklist.md @@ -1,9 +1,10 @@ # WCAG 2.2 A/AA release checklist This is a release checkpoint for the portfolio, not a claim that automated -testing can certify accessibility. Automated checks are complete for the -current preview build. The named physical screen-reader runs and final visual -review remain **pending release evidence**, not code failures. +testing can certify accessibility. Automated checks and the current-Chromium +compiled-preview visual review are complete for the current build. The named +physical screen-reader and non-Chromium platform runs remain **pending release +evidence**, not code failures. ## Evidence status @@ -19,8 +20,8 @@ review remain **pending release evidence**, not code failures. | NVDA + Firefox on Windows | **PENDING PHYSICAL RUN** — use `screen-reader-scripts.md`; record versions and results below | Before public release and after material semantic changes | | VoiceOver + Safari on macOS | **PENDING PHYSICAL RUN** — use `screen-reader-scripts.md`; record versions and results below | Before public release and after material semantic changes | | VoiceOver + Safari on iOS | **PENDING PHYSICAL RUN** — use `screen-reader-scripts.md`; record versions and results below | Before public release and after material semantic/touch changes | -| Final visual focus/overflow review | **PENDING RELEASE REVIEW** — automated geometry is necessary but not sufficient | Before public release | -| Final encoded-media flash/caption review | **PENDING ASSET APPROVAL** — current public preview has no cleared project media | When any approved video/chart/image derivative is added | +| Final visual focus/overflow review | **PASS in current Chromium (2026-09-05)** — desktop, 320 CSS px, zoom-equivalent, Static, reduced-motion, keyboard, no-JavaScript, and print-relevant views inspected | Before public release on the named physical platforms | +| Final encoded-media flash/caption review | **PASS for current still-image surface** — approved screenshots/charts have authored captions and descriptions; no video is published | When any video or replacement derivative is added | Focused command: @@ -34,6 +35,14 @@ profile, and the desktop 400% zoom-equivalent case runs only in the desktop profile. No axe violation is suppressed. No false-positive exception is currently recorded. +The 2026-09-05 final content/media acceptance matrix ran the semantic, +keyboard, no-JavaScript, reduced-motion, forced-colors, reflow, responsive, +media-policy/failure, and visual-regression files in desktop and mobile +Chromium. It passed 94 checks with 26 intentional project/capability skips and +no failures. The no-JavaScript oracle includes visible captions, chart +descriptions, and exact-value table text. A clean-context reduced-motion +capture showed the same complete identity hierarchy as Static/default. + ## Criterion checklist Status meanings: @@ -46,10 +55,10 @@ Status meanings: | WCAG 2.2 criterion | Status | Current evidence / release action | | ----------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 1.1.1 Non-text Content | Automated PASS; manual pending | Decorative world/canvas/poster are hidden or empty-alt; one concise scene description is semantic. Approved project media must keep authored alt/description. | +| 1.1.1 Non-text Content | Automated + current visual PASS; platform pending | Decorative world/canvas/poster are hidden or empty-alt; one concise scene description is semantic. Approved screenshots/charts have authored captions and descriptions. | | 1.2.1 Audio-only and Video-only (Prerecorded) | N/A current surface | Generated ambience is interactive, not prerecorded speech. Reopen for approved prerecorded media. | -| 1.2.2 Captions (Prerecorded) | N/A current surface | No cleared public video. Reopen and verify captions when a video derivative is approved. | -| 1.2.3 Audio Description or Media Alternative | N/A current surface | Video component supports an adjacent structured description; verify the final approved clip manually. | +| 1.2.2 Captions (Prerecorded) | N/A current surface | No public video. Reopen and verify captions when a video derivative is approved. | +| 1.2.3 Audio Description or Media Alternative | N/A current surface | No public video; the component supports an adjacent structured description if one is later approved. | | 1.2.4 Captions (Live) | N/A current surface | No live media. | | 1.2.5 Audio Description (Prerecorded) | N/A current surface | Reopen for approved prerecorded video. | | 1.3.1 Info and Relationships | Automated PASS; manual pending | Native landmarks, headings, lists, figures, captions, definition lists, and tables; confirm screen-reader output. | @@ -57,13 +66,13 @@ Status meanings: | 1.3.3 Sensory Characteristics | Automated PASS | Instructions and state do not depend only on location, shape, or color. | | 1.3.4 Orientation | Automated PASS | Responsive checks do not lock orientation. | | 1.3.5 Identify Input Purpose | N/A current surface | No personal-data form inputs. | -| 1.4.1 Use of Color | Automated PASS; visual pending | State controls use visible text and native state, not color alone. | +| 1.4.1 Use of Color | Automated + current visual PASS; platform pending | State controls use visible text and native state, not color alone. | | 1.4.2 Audio Control | Automated PASS; manual pending | Sound starts only after explicit activation and immediately exposes Mute and Sound volume. | -| 1.4.3 Contrast (Minimum) | Automated PASS; visual pending | Axe reports no contrast violation in all named states; final visual review is required. | +| 1.4.3 Contrast (Minimum) | Automated + current visual PASS; platform pending | Axe reports no contrast violation in all named states; current-Chromium review found the information layer readable over the scene. | | 1.4.4 Resize Text | Automated PASS | Desktop Chromium effective 320 CSS px gate represents the 400% zoom boundary. | | 1.4.5 Images of Text | Automated PASS | Information is text/semantic HTML; project screenshots do not replace portfolio copy. | | 1.4.10 Reflow | Automated PASS | No horizontal loss at 320 CSS px mobile or desktop zoom-equivalent width. | -| 1.4.11 Non-text Contrast | Automated PASS; visual pending | Control/focus/border visibility survives forced colors; final visual review remains. | +| 1.4.11 Non-text Contrast | Automated + current visual PASS; platform pending | Control/focus/border visibility survives forced colors and the current-Chromium visual review. | | 1.4.12 Text Spacing | Automated PASS | WCAG spacing override preserves all checked content and Contact. | | 1.4.13 Content on Hover or Focus | N/A current surface | No hover/focus-triggered disclosure or tooltip. | | 2.1.1 Keyboard | Automated PASS; manual pending | Native links/buttons/select/range and section navigation are operable by keyboard. | @@ -71,15 +80,15 @@ Status meanings: | 2.1.4 Character Key Shortcuts | N/A current surface | No single-character shortcuts. | | 2.2.1 Timing Adjustable | N/A current surface | No session or content timeout. | | 2.2.2 Pause, Stop, Hide | Automated PASS; manual pending | Pause/Resume/Static controls stop decorative motion; authored video controls are required when media ships. | -| 2.3.1 Three Flashes or Below Threshold | Manual pending | Final live scene and any encoded media need release visual/flash review. No flashing project media ships currently. | +| 2.3.1 Three Flashes or Below Threshold | Automated + current visual PASS; platform pending | The live-scene flash sequence and reviewed states pass; only still project media ships. | | 2.4.1 Bypass Blocks | Automated PASS; manual pending | First focusable control is the visible Skip to portfolio content link. | | 2.4.2 Page Titled | Automated PASS | Generated document title names Luca and the hybrid role. | | 2.4.3 Focus Order | Automated PASS; manual pending | Skip, ordered section navigation, content actions, Contact, then drive controls. | | 2.4.4 Link Purpose (In Context) | Automated PASS; manual pending | Visible labels identify section, email, and profile destinations. | | 2.4.5 Multiple Ways | Automated PASS | Persistent section navigation and native document scrolling provide two ways to reach content. | | 2.4.6 Headings and Labels | Automated PASS; manual pending | Ordered headings and explicit control labels; confirm announcements. | -| 2.4.7 Focus Visible | Automated PASS; visual pending | At least 2px visible indicator or an inset main-content indicator; forced-colors gate passes. | -| 2.4.11 Focus Not Obscured (Minimum) | Automated PASS; visual pending | Focus bounds have zero intersection with unrelated fixed HUD/controls; short viewports move controls into document flow. | +| 2.4.7 Focus Visible | Automated + current visual PASS; platform pending | At least 2px visible indicator or an inset main-content indicator; keyboard and forced-colors review passes. | +| 2.4.11 Focus Not Obscured (Minimum) | Automated + current visual PASS; platform pending | Focus bounds have zero intersection with unrelated fixed HUD/controls; short viewports move controls into document flow. | | 2.5.1 Pointer Gestures | N/A current surface | No multipoint or path-based gesture. | | 2.5.2 Pointer Cancellation | Automated PASS | Native click activation occurs on release; no custom down-only action. | | 2.5.3 Label in Name | Automated PASS | Visible button/link labels are their accessible names. | diff --git a/docs/content-approval-checklist.md b/docs/content-approval-checklist.md index 02884f4..bdae660 100644 --- a/docs/content-approval-checklist.md +++ b/docs/content-approval-checklist.md @@ -2,6 +2,8 @@ This checklist records the Phase 1 public projection. Every item is either included as approved public content or omitted from this projection. +Evidence refreshed: 2026-09-05 compiled-preview acceptance. + | Area | Public item | Status | | --- | --- | --- | | Identity | Luca Pîslaru | approved | @@ -58,3 +60,24 @@ This checklist records the Phase 1 public projection. Every item is either inclu | Assets | Exact public project and social asset records | approved | | Assets | Unapproved or rights-unconfirmed media | omit | | Assets | Toolkit asset references | omit | + +## 2026-09-05 acceptance evidence + +- The compiled page contains exactly eight locked sections in the approved + order and keeps the identity wording “System Administrator & Full-Stack + Developer” unchanged. +- The evidence hierarchy gives systems and software equal primary weight: + Nextcloud migration/recovery is the main operations proof, while the private + medication tracker and its three approved screenshots are the main developer + proof. +- Trupa lui Răzuș remains accurately labeled as a collaborator role. Footy + Tracker states collaboration, Luca's contribution, measured detector + results, and limitations while its rights-unconfirmed frame remains omitted. + Opinion Dynamics remains a supporting project. +- The public asset manifest, prepared publication tree, content references, and + compiled output close exactly at 15 records/files. Metadata, barcode/QR, + binary denylist, and image-text privacy checks passed without exposing the + private inputs used by those checks. +- Page title/description, canonical and social metadata, `rel="me"` profile + links, and both email actions were verified. No downloadable CV or other + unapproved document is published. diff --git a/docs/reviews/audience-validation.md b/docs/reviews/audience-validation.md index 5cd3a37..1f2e3a0 100644 --- a/docs/reviews/audience-validation.md +++ b/docs/reviews/audience-validation.md @@ -1,6 +1,8 @@ # Evidence-first audience validation -Status: **PENDING — no independent reviewer session has been run.** +Status: **PENDING — the 2026-09-05 compiled-preview acceptance review passed its +single-reviewer five-second identity check, but no independent three-person +session has been run.** This is a release checkpoint, not an automated substitute for people. It must use at least three independent reviewers representing hiring-screening and technical-interview perspectives. Reviewers use Static or reduced motion first so the information hierarchy is judged without relying on the scene. @@ -29,6 +31,22 @@ This is a release checkpoint, not an automated substitute for people. It must us Any threshold failure requires content or hierarchy revision. It is not a reason to add visual effects. +## 2026-09-05 acceptance observation + +One uncoached compiled-preview review was performed at desktop, 320×568, +200%-zoom-equivalent, Static, reduced-motion, keyboard-only, no-JavaScript, and +print-relevant states. At the initial view, the reviewer could identify Luca +Pîslaru, the equal “System Administrator & Full-Stack Developer” positioning, +and the email action. The first scan also exposed Nextcloud migration/recovery +as the principal operations proof and the private medication tracker as the +principal developer proof. The evidence hierarchy remained readable over the +night-drive scene, and the final Contact section again presented email as the +dominant action. + +This observation is technical release evidence only. It is one review, not +three independent hiring/technical participants, so it does not satisfy or +replace the threshold below. + ## Evidence form | Reviewer | Perspective | Mode/browser/viewport | 30 s identity/role/contact | 60 s systems proof | 60 s software proof | Professional/readable (1–5) | Balance (1–5) | Notes | diff --git a/docs/reviews/visual-qa.md b/docs/reviews/visual-qa.md index 34334cd..526ff3c 100644 --- a/docs/reviews/visual-qa.md +++ b/docs/reviews/visual-qa.md @@ -1,6 +1,6 @@ # Portfolio visual QA -Status date: 2026-09-03 +Status date: 2026-09-05 ## Automated capture contract @@ -28,7 +28,8 @@ Each default viewport asserts: - dark professional composition with restrained chromatic accent coverage; - no panel background imagery, filters, glowing text, or content scanlines; - intentional widths for each desktop layout family, including 68% diagram/toolkit corridors and a 46% destination capped at 42rem, plus readable mobile single-column widths; -- zero public project image/video elements while the approval-bound manifest is empty. +- only approval-bound project image elements, with authored captions and text + alternatives; no project video is published in the current manifest. Static receives a two-capture perceptual-stability assertion. Contact arrival must resolve the Contact heading, route HUD, `ARRIVED` state, identity, and visible email action together. @@ -53,6 +54,35 @@ npm run test:browser -- tests/browser/visual-regression.spec.ts The final 2026-09-02 complete browser run passed 167 checks with 43 deliberate project/capability skips. Two desktop heading-focus geometry checks reached the correct target but timed out under the four-worker run; both files then passed 9/9 unchanged with one worker, including the two affected checks. The 16 visual checks ran once in the available current Chromium project; the duplicate mobile-project visual cases were skipped intentionally. +## Content, SEO, and media acceptance — 2026-09-05 + +The final focused desktop/mobile Chromium matrix passed 94 checks with 26 +intentional project/capability skips and no failures. It covered semantics, +keyboard operation, no-JavaScript output, reduced motion, forced colors, +reflow, responsive layout, approved-media policy and failure behavior, and the +visual-regression oracle. The compiled preview retained all eight locked +sections in order. + +One broad compiled-preview review covered 1440×900 desktop, 320×568 mobile, +200%-zoom-equivalent layout, Static, reduced motion, keyboard-only, +no-JavaScript, and print-relevant views. The opening view communicated Luca's +name and equal systems/software role immediately. Infrastructure preserved a +readable request-flow diagram and made the Nextcloud migration the primary +operations proof. The private medication tracker remained the primary +developer visual through its three approved screenshots and captions. Footy +Tracker clearly described collaboration, Luca's contribution, measured +results, and limitations without publishing the rights-unconfirmed broadcast +frame. Opinion Dynamics remained a supporting project with two explained +charts and an exact-values table. Contact kept email as the dominant action. + +No high-impact visual or content defect was found. On the shortest 320×568 and +200%-zoom-equivalent opening views, the fixed drive controls occupy the lower +viewport edge and can sit beside the end of the opening action row. The row and +all following content remain scroll-reachable, keyboard-reachable, and clear +of focus obscuration; the reflow and target-geometry gates passed. This is +recorded as a non-blocking compact-height tradeoff rather than a reason for a +preference-driven layout iteration. + The compact 320×568 capture initially revealed that the fixed drive controls occupied 43.5% of the viewport and obscured the opening content. The mobile-only control grid reduced that surface to 24.0%; a regression guard now caps it at 34%. After the trace-driven fixed section navigation landed, the captures exposed the decorative HUD intersecting the navigation at phone widths and the controls at 768×1024. A shared exact navigation-height variable now keeps the fixed navigation and visible compact HUD edge-adjacent, reserves their space in the header, and leaves the controls independent. The final measured bounds were 0–93px navigation and 93–125px HUD at 320×568, and 0–45px navigation and 45–77px HUD at 768×1024. Fixed-navigation focus now uses an inward standards outline so the indicator remains visible inside the viewport. Passive-section coverage now positions the target safely beyond the actual 35% activation line rather than relying on a relative `offsetTop` or exact fractional equality. A one-sampled-pixel accent floor was relaxed from 0.001 to 0.0005 after the capture remained visibly intentional and the original value missed by only 0.00002; the dark and maximum-accent limits remain unchanged. @@ -185,7 +215,9 @@ Tall navigator signs had also retained the 390px phone pose throughout the entir - [x] The infrastructure flow exposes a visible legend and a complete text equivalent. - [x] The GPU budget accounts for composer and bloom render targets without changing ownership or disposal. - [x] Contact remains a clear destination with email as the primary action. -- [x] No unapproved project derivative is published; the manifest remains empty. +- [x] Only approved project/social derivatives are published; the manifest and + compiled asset closure match exactly, and rights-unconfirmed media remains + omitted. The checked items above describe code/invariant inspection, not unsupported human audience approval. @@ -196,7 +228,8 @@ The checked items above describe code/invariant inspection, not unsupported huma - [ ] Repeat the named current/previous-stable browser matrix available to release CI. - [ ] Inspect portrait and landscape on the physical iPhone 13 and Pixel 6, including browser chrome and safe areas. - [ ] Execute NVDA+Firefox and VoiceOver+Safari scripts recorded in the accessibility documents. -- [ ] Bind and inspect final project derivatives only after Luca approves exact hashes and confirms rights. +- [x] Bind and inspect the approved project/social derivatives against their + exact manifest records, captions, and text alternatives. - [ ] Complete the three-person audience record in `docs/reviews/audience-validation.md`. No unavailable platform or human checkpoint is silently converted into a pass.