docs: record TechLog migration evidence
This commit is contained in:
@@ -2,30 +2,40 @@
|
|||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
`DONE_WITH_CONCERNS`. The migrated UI, committed browser evidence, source-to-target
|
`DONE_WITH_CONCERNS`. The production serving correction, 130-case
|
||||||
comparison, sample-removal gate, focused suites, static gates, and production
|
source-to-target comparison, full recursive product-tree evidence, direct HTTP
|
||||||
build pass. The only concern is the repository's pre-existing restricted-runner
|
contract, target visuals, focused browser suites, and static gates pass. The
|
||||||
`test:all` baseline: child-process-heavy tests cannot spawn in the managed
|
automated Chromium accessibility suite passes 29/29, but the 27 signed human
|
||||||
sandbox, and 19 provider-environment cases remain red even when isolated with
|
keyboard/focus/screen-reader records remain `PENDING`; `FE-GATE-009` is not
|
||||||
the required process scope. The isolation and exact counts below prove that no
|
claimed as passing. The other concern is the repository's pre-existing
|
||||||
TechLog test is among those failures.
|
restricted-runner `test:all` baseline: 19 provider-environment cases remain
|
||||||
|
red. The isolation and exact counts below prove that no TechLog test is among
|
||||||
|
those failures.
|
||||||
|
|
||||||
The work remains on `feature/techlog-ui-migration`. It was not merged, pushed,
|
The work remains on `feature/techlog-ui-migration`. It was not merged, pushed,
|
||||||
finished with GitFlow, or deleted. Task 14 is committed by this report's commit,
|
finished with GitFlow, or deleted. The immutable code candidate is
|
||||||
`test: prove TechLog UI migration parity`.
|
`3a7c5deca06679fb9b8710da2cce87bbca07ce8a`
|
||||||
|
(`fix: complete TechLog migration evidence`). This report and the durable
|
||||||
|
parity JSON are deliberately recorded afterward in
|
||||||
|
`docs: record TechLog migration evidence`, so the evidence can name the exact
|
||||||
|
candidate it verifies.
|
||||||
|
|
||||||
## Evidence files
|
## Evidence files
|
||||||
|
|
||||||
Added or replaced product evidence:
|
Added or replaced product evidence:
|
||||||
|
|
||||||
- `tests/visual/tech-log.visual.spec.ts` and 111 target-only PNG snapshots. The
|
- `tests/visual/tech-log.visual.spec.ts` and 129 target-only PNG snapshots. The
|
||||||
suite has 112 cases because canonical and state coverage for the 1440-pixel
|
suite has 130 cases because canonical and state coverage for the 1440-pixel
|
||||||
`/studio/publications` screen deliberately share the same reviewed image.
|
`/studio/publications` screen deliberately share the same reviewed image.
|
||||||
|
- `scripts/lib/tech-log-production-server.ts`, the generated self-contained
|
||||||
|
`dist/server.mjs` build artifact, its serving contract/generator, and 39-case
|
||||||
|
direct HTTP regression coverage.
|
||||||
- `tests/e2e/tech-log-public-discovery.spec.ts`,
|
- `tests/e2e/tech-log-public-discovery.spec.ts`,
|
||||||
`tests/e2e/tech-log-accessibility.spec.ts`, and
|
`tests/e2e/tech-log-accessibility.spec.ts`, and
|
||||||
`tests/e2e/tech-log-responsive.spec.ts`.
|
`tests/e2e/tech-log-responsive.spec.ts`.
|
||||||
- `tests/support/browser/tech-log-fixtures.ts` and the external, manually run
|
- `tests/support/browser/tech-log-fixtures.ts`, the checked Node 24 parity
|
||||||
`tests/support/browser/verify-tech-log-source-parity.ts` evidence harness.
|
runner, and durable
|
||||||
|
`docs/operations/evidence/tech-log-source-parity.json` evidence.
|
||||||
- Focused regressions in `tests/unit/vite-route-chunks.test.ts`,
|
- Focused regressions in `tests/unit/vite-route-chunks.test.ts`,
|
||||||
`tests/unit/design-system-source.test.ts`, the bounded-body reader tests, the
|
`tests/unit/design-system-source.test.ts`, the bounded-body reader tests, the
|
||||||
router component suite, and TechLog feature suites.
|
router component suite, and TechLog feature suites.
|
||||||
@@ -50,8 +60,9 @@ left referenced.
|
|||||||
The supplied source at `/home/donghyeon/workspace/techlog-studio-frontend` was
|
The supplied source at `/home/donghyeon/workspace/techlog-studio-frontend` was
|
||||||
never written. It was copied to `/tmp/techlog-source-parity.I0CBK7`; build and
|
never written. It was copied to `/tmp/techlog-source-parity.I0CBK7`; build and
|
||||||
Vinext runtime caches were created only in that temporary copy. The source
|
Vinext runtime caches were created only in that temporary copy. The source
|
||||||
production server and target Vite preview were opened by one Playwright Chromium
|
production server on `4375` and target `dist/server.mjs` production artifact on
|
||||||
instance with two fresh contexts and the following identical controls:
|
`4174` were opened by one Playwright Chromium instance with two fresh contexts
|
||||||
|
and the following identical controls:
|
||||||
|
|
||||||
- device scale factor 1, light color scheme, `ko-KR`, `Asia/Seoul`, reduced
|
- device scale factor 1, light color scheme, `ko-KR`, `Asia/Seoul`, reduced
|
||||||
motion, service workers blocked, 1000-pixel viewport height, and full-page
|
motion, service workers blocked, 1000-pixel viewport height, and full-page
|
||||||
@@ -59,22 +70,41 @@ instance with two fresh contexts and the following identical controls:
|
|||||||
- fixed clock `2026-08-14T01:00:00.000Z`, deterministic in-memory data,
|
- fixed clock `2026-08-14T01:00:00.000Z`, deterministic in-memory data,
|
||||||
`document.fonts.ready`, matching Pretendard/IBM Plex Mono font-face state,
|
`document.fonts.ready`, matching Pretendard/IBM Plex Mono font-face state,
|
||||||
and zero-duration animation, transition, and caret styles;
|
and zero-duration animation, transition, and caret styles;
|
||||||
- no masks and no tolerance: exact RGBA pixel comparison, product-subtree
|
- no masks and no tolerance: exact RGBA pixel comparison, normalized recursive
|
||||||
tag/class/text/ARIA projection, layout diagnostics, and console/page/request
|
product-subtree tags, ordered child nodes, complete classes, attributes,
|
||||||
failure collection.
|
text and ARIA relationships, layout diagnostics, response metadata, boot
|
||||||
|
lifecycle, and console/page/request failure collection.
|
||||||
|
|
||||||
|
The only attributes normalized by name are diagnostics-confirmed framework
|
||||||
|
outputs: React Router `data-discover`; Next Image `data-nimg`, `decoding`, and
|
||||||
|
`srcset`; and Next SSR `selected` for a controlled select. Generated React IDs
|
||||||
|
and CSS-module hashes are normalized by value; there is no broad attribute
|
||||||
|
omission.
|
||||||
|
|
||||||
The final external comparison command was:
|
The final external comparison command was:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
TECH_LOG_SOURCE_URL=http://127.0.0.1:4275 TECH_LOG_TARGET_URL=http://127.0.0.1:4274 corepack pnpm exec tsx tests/support/browser/verify-tech-log-source-parity.ts
|
TZ=Asia/Seoul corepack pnpm verify:tech-log-source-parity
|
||||||
```
|
```
|
||||||
|
|
||||||
Result: **112/112 passed**, 0 failed, `totalDifferentPixels=0`, every DOM/class/
|
Result: **130/130 passed**, 0 failed, `totalDifferentPixels=0`, every recursive
|
||||||
text/ARIA projection equal, and 0 unexplained source/target errors. Source
|
DOM/class/attribute/text/ARIA tree equal, all HTTP metadata equal, and 0
|
||||||
|
unexplained source/target errors. Source
|
||||||
screenshots were temporary comparison inputs; none was copied into target
|
screenshots were temporary comparison inputs; none was copied into target
|
||||||
snapshots. The no-update target visual run also passed 112/112 with
|
snapshots. The no-update target visual run also passed 130/130 with
|
||||||
`maxDiffPixels=0` and `maxDiffPixelRatio=0`.
|
`maxDiffPixels=0` and `maxDiffPixelRatio=0`.
|
||||||
|
|
||||||
|
The durable evidence identifies source-tree digest
|
||||||
|
`6724c2f898eefc62d2fc0ee695bccc3ae61a69c5153ed43c69f2cf99ee45bca5`,
|
||||||
|
candidate `3a7c5deca06679fb9b8710da2cce87bbca07ce8a`, build-manifest digest
|
||||||
|
`3579650faa482f566553c00d8b4a05a05b4f7a1ab93b83e48676289bbcf02984`,
|
||||||
|
Vite-manifest digest
|
||||||
|
`cfd583ed7b6c27dce7f47389447608636b6b9df3e28df00c6416674da2c7c46d`,
|
||||||
|
case-inventory digest
|
||||||
|
`5689bcdb5d5637205cdeb92b7c57f72d99f0b039818b8f90afdde526bbafe0ac`,
|
||||||
|
and evidence-payload digest
|
||||||
|
`f046047beded19ce468be607dcf99c6b74d4e07323457ec7145c56d2f67d2c79`.
|
||||||
|
|
||||||
The comparison found and corrected actual integration defects rather than
|
The comparison found and corrected actual integration defects rather than
|
||||||
accepting drift: the TechLog Tailwind bootstrap is loaded exactly once in the
|
accepting drift: the TechLog Tailwind bootstrap is loaded exactly once in the
|
||||||
same cascade order as source; the starter theme import is removed; CSS-module
|
same cascade order as source; the starter theme import is removed; CSS-module
|
||||||
@@ -84,10 +114,12 @@ source/target CSS pairs pass `cmp -s`; their hashes are recorded in the
|
|||||||
operations baseline.
|
operations baseline.
|
||||||
|
|
||||||
Source production returns missing dynamic slugs and an unmatched Public path as
|
Source production returns missing dynamic slugs and an unmatched Public path as
|
||||||
HTTP 404, `text/plain`, with the exact nine-byte body `Not Found`. Curl and
|
HTTP 404, `text/plain;charset=UTF-8`, with the exact nine-byte body `Not Found`.
|
||||||
Chromium regression evidence therefore fixes the target to that shell-free
|
The target production boundary now returns that exact shell-free response;
|
||||||
response. This is an observed source-production contract and satisfies the
|
known Public paths and all known Studio paths remain SPA-served, while an
|
||||||
planned prohibition on a generic runtime error; it is not a redesign.
|
unknown Studio path preserves the source's HTML Studio shell with HTTP 404.
|
||||||
|
This is an observed source-production contract and satisfies the planned
|
||||||
|
prohibition on a generic runtime error; it is not a redesign.
|
||||||
|
|
||||||
## Route, viewport, and state inventory
|
## Route, viewport, and state inventory
|
||||||
|
|
||||||
@@ -105,9 +137,10 @@ All known Public fixtures were exercised: two cases, two references, two open
|
|||||||
questions, three topics, both projects and all three nested views, and release
|
questions, three topics, both projects and all three nested views, and release
|
||||||
`0.1.0`. Ten unknown Public dynamic shapes were also compared at both widths.
|
`0.1.0`. Ten unknown Public dynamic shapes were also compared at both widths.
|
||||||
|
|
||||||
The 112-case matrix is 54 canonical-route captures, 12 home breakpoints (1180,
|
The 130-case matrix is 54 canonical-route captures, 18 additional known Public
|
||||||
1179, 1050, 1024, 980, 900, 820, 768, 767, 420, 390, and 375), 19 Studio
|
fixture captures, 12 home breakpoints (1180, 1179, 1050, 1024, 980, 900, 820,
|
||||||
states, 20 unknown-Public captures, and 7 interactions. Studio states cover the
|
768, 767, 420, 390, and 375), 19 Studio states, 20 unknown-Public captures, and
|
||||||
|
7 interactions. Studio states cover the
|
||||||
dashboard, list/new, Case/Reference/Question/conflict editors, valid/invalid
|
dashboard, list/new, Case/Reference/Question/conflict editors, valid/invalid
|
||||||
validation, current/missing/expired previews, ready/blocked publish,
|
validation, current/missing/expired previews, ready/blocked publish,
|
||||||
publications/snapshot, missing document/publication, and unknown Studio route.
|
publications/snapshot, missing document/publication, and unknown Studio route.
|
||||||
@@ -120,8 +153,14 @@ warning acknowledgement through publish-ready state.
|
|||||||
- Required four-spec Chromium command: **48/48 passed**. It covers Public
|
- Required four-spec Chromium command: **48/48 passed**. It covers Public
|
||||||
discovery, the full Studio workflow, responsive behavior, and accessibility.
|
discovery, the full Studio workflow, responsive behavior, and accessibility.
|
||||||
- Responsive plus accessibility focused command: **26/26 passed**.
|
- Responsive plus accessibility focused command: **26/26 passed**.
|
||||||
- Exact target visual command: **112/112 passed** in 2.5 minutes with no masks
|
- Direct production HTTP contract: **39/39 passed**, including exact raw Public
|
||||||
|
404s, the in-shell Studio 404, known SPA routes, and boot documents.
|
||||||
|
- Exact target visual command: **130/130 passed** in 2.5 minutes with no masks
|
||||||
and zero pixel tolerance.
|
and zero pixel tolerance.
|
||||||
|
- Automated Chromium `@a11y`: **29/29 passed**. The 27 human review records are
|
||||||
|
intentionally pending, so `corepack pnpm review:a11y-manual` exits 1 and
|
||||||
|
lists missing status, candidate release ID, reviewer/signature/attestation,
|
||||||
|
reviewed time, M1-M7, and screen-reader evidence for every route.
|
||||||
- Keyboard/focus checks cover Public search dismissal/restoration, Studio mobile
|
- Keyboard/focus checks cover Public search dismissal/restoration, Studio mobile
|
||||||
navigation, dirty-leave and unpublish dialogs, labels, heading/landmark order,
|
navigation, dirty-leave and unpublish dialogs, labels, heading/landmark order,
|
||||||
and focus-visible behavior. Axe reports no violations in the required route
|
and focus-visible behavior. Axe reports no violations in the required route
|
||||||
@@ -133,6 +172,8 @@ Commands:
|
|||||||
```bash
|
```bash
|
||||||
corepack pnpm exec playwright test tests/e2e/tech-log-public-discovery.spec.ts tests/e2e/tech-log-studio-workflow.spec.ts tests/e2e/tech-log-responsive.spec.ts tests/e2e/tech-log-accessibility.spec.ts --project=chromium
|
corepack pnpm exec playwright test tests/e2e/tech-log-public-discovery.spec.ts tests/e2e/tech-log-studio-workflow.spec.ts tests/e2e/tech-log-responsive.spec.ts tests/e2e/tech-log-accessibility.spec.ts --project=chromium
|
||||||
corepack pnpm exec playwright test tests/e2e/tech-log-responsive.spec.ts tests/e2e/tech-log-accessibility.spec.ts --project=chromium
|
corepack pnpm exec playwright test tests/e2e/tech-log-responsive.spec.ts tests/e2e/tech-log-accessibility.spec.ts --project=chromium
|
||||||
|
corepack pnpm exec playwright test tests/e2e/tech-log-http-contract.spec.ts --project=chromium
|
||||||
|
corepack pnpm exec playwright test tests/e2e/accessibility.spec.ts --project=chromium --grep @a11y
|
||||||
corepack pnpm exec playwright test tests/visual/tech-log.visual.spec.ts --config=playwright.visual.config.ts --project=chromium
|
corepack pnpm exec playwright test tests/visual/tech-log.visual.spec.ts --config=playwright.visual.config.ts --project=chromium
|
||||||
corepack pnpm test:visual
|
corepack pnpm test:visual
|
||||||
```
|
```
|
||||||
@@ -181,12 +222,12 @@ corepack pnpm test:sample-removal
|
|||||||
```
|
```
|
||||||
|
|
||||||
Result: **PASS (13 checks, no fixture IDs)**. Its internal evidence included
|
Result: **PASS (13 checks, no fixture IDs)**. Its internal evidence included
|
||||||
types; reduced architecture (383 modules/1,173 dependencies, 12 graph checks,
|
types; reduced architecture (382 modules/1,170 dependencies, 12 graph checks,
|
||||||
9 forbidden fixtures); 11 registry checks; runtime schema 3 files/40 tests;
|
9 forbidden fixtures); 11 registry checks; runtime schema 3 files/40 tests;
|
||||||
unit 115/1,247; component 18/124; integration 8/74; recipes 2/17; coverage 164
|
unit 118/1,250; component 18/124; integration 8/74; recipes 2/17; coverage at
|
||||||
files/1,653 tests at 77.41% statements, 73.26% branches, 83.89% functions, and
|
77.40% statements, 73.26% branches, 83.88% functions, and 80.02% lines; risk
|
||||||
80.03% lines; risk coverage 382/382 with 76 thresholds; source evidence 198
|
coverage 381/381 with 76 thresholds; source evidence 202 files/129 baselines;
|
||||||
files/111 baselines; artifact/CI checks; router smoke 9/9; and production build.
|
artifact/CI checks; router smoke 9/9; and production build.
|
||||||
|
|
||||||
Fresh completion commands and results:
|
Fresh completion commands and results:
|
||||||
|
|
||||||
@@ -194,34 +235,41 @@ Fresh completion commands and results:
|
|||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `corepack pnpm exec vitest run tests/features/tech-log` | 21 files, 170 tests passed |
|
| `corepack pnpm exec vitest run tests/features/tech-log` | 21 files, 170 tests passed |
|
||||||
| required four-spec Chromium command above | 48 tests passed |
|
| required four-spec Chromium command above | 48 tests passed |
|
||||||
| `corepack pnpm test:visual` | 112 tests passed |
|
| `corepack pnpm exec playwright test tests/e2e/tech-log-http-contract.spec.ts --project=chromium` | 39 tests passed |
|
||||||
|
| Chromium `@a11y` command above | 29 tests passed |
|
||||||
|
| `corepack pnpm test:visual` | 130 tests passed |
|
||||||
| `corepack pnpm check:types` | app/node/test/recipes/web-worker/service-worker passed |
|
| `corepack pnpm check:types` | app/node/test/recipes/web-worker/service-worker passed |
|
||||||
| `corepack pnpm lint` | passed with 0 warnings |
|
| `corepack pnpm lint` | passed with 0 warnings |
|
||||||
| `corepack pnpm check:architecture` | 392 modules, 1,215 dependencies, 12 graph checks, 9 forbidden fixtures passed |
|
| `corepack pnpm check:architecture` | 391 modules, 1,212 dependencies, 12 graph checks, 9 forbidden fixtures passed |
|
||||||
| `corepack pnpm check:design-system` | 48 tokens and vendor boundaries passed |
|
| `corepack pnpm check:design-system` | 48 tokens and vendor boundaries passed |
|
||||||
| `corepack pnpm check:i18n` | 194 keys across 4 locales passed |
|
| `corepack pnpm check:i18n` | 194 keys across 4 locales passed |
|
||||||
| `corepack pnpm check:registries` | 11 registries passed; compatibility `none` |
|
| `corepack pnpm check:registries` | 11 registries passed; compatibility `none` |
|
||||||
| `corepack pnpm check:browser-security` | injection rejected; Public source maps absent |
|
| `corepack pnpm check:browser-security` | injection rejected; Public source maps absent |
|
||||||
| `corepack pnpm build` | 2,352 modules transformed; build and manifest completed |
|
| `corepack pnpm build` | 2,351 modules transformed; build and manifest completed |
|
||||||
| `git diff --check` | passed |
|
| `git diff --check` | passed |
|
||||||
|
|
||||||
The exact managed-workspace `corepack pnpm test:all` passed runtime schema 3/40,
|
The fresh staged-candidate `corepack pnpm test:all` passed runtime schema 3/40,
|
||||||
then its unit phase passed 117 files/1,738 tests and failed 50 tests in only
|
then its unit phase passed 122 files/1,773 tests and failed 19 tests in only
|
||||||
three child-process-heavy files due to `spawnSync ... EPERM`: 39
|
`ci-artifact-contract`. The failures are the documented provider/cgroup,
|
||||||
`ci-artifact-contract`, 2 `ci-workflow-generation`, and 9
|
RLIMIT/EMFILE, restrictive-umask, `/tmp`, timing, and identity environment
|
||||||
`http-scenario-evidence`. No TechLog test failed. The exact isolated command:
|
cases; no TechLog test failed. A pre-staging run had also exposed 39
|
||||||
|
release-inventory `APP_HOME` failures because the new serving files were not
|
||||||
|
yet visible to `git ls-files`; staging the complete candidate corrected that
|
||||||
|
test precondition, and all 39 disappeared. Its one aggregate guardian timeout
|
||||||
|
passed 1/1 in isolation and 21/21 in the fresh staged aggregate.
|
||||||
|
|
||||||
|
The earlier exact baseline-isolation command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
corepack pnpm exec vitest run tests/unit/ci-artifact-contract.test.ts tests/unit/ci-workflow-generation.test.ts tests/unit/http-scenario-evidence.test.ts
|
corepack pnpm exec vitest run tests/unit/ci-artifact-contract.test.ts tests/unit/ci-workflow-generation.test.ts tests/unit/http-scenario-evidence.test.ts
|
||||||
```
|
```
|
||||||
|
|
||||||
ran 3 files/529 tests: 510 passed; all 407 CI-workflow and all 14 HTTP-scenario
|
ran 3 files/529 tests: 510 passed; all 407 CI-workflow and all 14 HTTP-scenario
|
||||||
tests passed; the remaining 19 pre-existing CI-artifact provider/cgroup,
|
tests passed, leaving the same 19 environment-only CI-artifact cases. Direct
|
||||||
RLIMIT/EMFILE, umask, `/tmp`, timing, and identity cases failed. Direct runs of
|
runs of the aggregate's remaining phases passed: component 18/124, integration
|
||||||
the aggregate's remaining phases passed: component 18/124, integration 11/82
|
11/82 under the required child-process scope, reference feature 4/13, and
|
||||||
under the required child-process scope, reference feature 4/13, and recipes
|
recipes 2/17. This environment-only baseline is also recorded in the
|
||||||
2/17. This environment-only baseline is also recorded in the operations
|
operations baseline.
|
||||||
baseline.
|
|
||||||
|
|
||||||
## Fixes, branch audit, and handoff
|
## Fixes, branch audit, and handoff
|
||||||
|
|
||||||
@@ -235,9 +283,28 @@ presentation import of adapters, Next.js, Vinext, or Cloudflare. The 27 route
|
|||||||
chunks are present in the release manifest and derive from actual Vite output,
|
chunks are present in the release manifest and derive from actual Vite output,
|
||||||
not hard-coded generated filenames.
|
not hard-coded generated filenames.
|
||||||
|
|
||||||
Before the Task 14 commit, the full migration range contains the 21 prior
|
The immutable code candidate
|
||||||
commits from baseline establishment through `c5c8b94` and changes 352 files
|
`3a7c5deca06679fb9b8710da2cce87bbca07ce8a` contains the production 404
|
||||||
(26,025 insertions, 3,467 deletions). This report's commit adds the integrated
|
boundary, parity runner, tests, snapshots, and 27 pending human-review records.
|
||||||
parity evidence and fixes with the exact message
|
Only after that commit existed was the target rebuilt cleanly and the final
|
||||||
`test: prove TechLog UI migration parity`. Final status and range are checked
|
130-case parity, visual, HTTP, accessibility, and static verification rerun.
|
||||||
again after the commit; integration remains explicitly deferred.
|
This report and its JSON are committed separately as
|
||||||
|
`docs: record TechLog migration evidence`; later human accessibility evidence
|
||||||
|
must cite the candidate SHA, not the evidence-only commit.
|
||||||
|
|
||||||
|
The independent `final-review.md` remains the immutable review input with its
|
||||||
|
historical `CHANGES_REQUESTED` verdict. This candidate addresses its production
|
||||||
|
404 issue with a real build artifact and 39 direct HTTP tests; expands the
|
||||||
|
source matrix from 112 to 130 and makes recursive tree equality part of pass;
|
||||||
|
and replaces the missing `tsx` invocation with a checked Node runner and
|
||||||
|
durable provenance. Its accessibility inventory issue is structurally fixed
|
||||||
|
and automated Chromium coverage is green, but the reviewer-dependent 27 human
|
||||||
|
records deliberately remain pending. No review verdict was rewritten or
|
||||||
|
self-approved.
|
||||||
|
|
||||||
|
Manual completion requires a human to check out candidate
|
||||||
|
`3a7c5deca06679fb9b8710da2cce87bbca07ce8a`, review every route according to
|
||||||
|
`docs/accessibility/manual-checklist.md`, fill each record's exact candidate
|
||||||
|
Release ID, reviewer, signature, attestation, reviewed time, M1-M7, and screen
|
||||||
|
reader result, commit that evidence separately, then rerun
|
||||||
|
`corepack pnpm review:a11y-manual`. Until then `FE-GATE-009` remains pending.
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -96,39 +96,82 @@ the resulting browser comparison is pixel-identical.
|
|||||||
The source was copied to `/tmp/techlog-source-parity.I0CBK7` before build and
|
The source was copied to `/tmp/techlog-source-parity.I0CBK7` before build and
|
||||||
runtime caches were created. The supplied source directory was used only for
|
runtime caches were created. The supplied source directory was used only for
|
||||||
read-only file comparison; it was not edited. The temp-copy Vinext production
|
read-only file comparison; it was not edited. The temp-copy Vinext production
|
||||||
server and the target Vite preview were captured by one Playwright Chromium
|
server on `4375` and the target `dist/server.mjs` production artifact on `4174`
|
||||||
instance with two fresh contexts under identical conditions:
|
were captured by one Playwright Chromium instance with two fresh contexts
|
||||||
|
under identical conditions:
|
||||||
|
|
||||||
- `ko-KR`, `Asia/Seoul`, light color scheme, reduced motion, device scale 1,
|
- `ko-KR`, `Asia/Seoul`, light color scheme, reduced motion, device scale 1,
|
||||||
service workers blocked, and a fixed `2026-08-14T01:00:00.000Z` clock;
|
service workers blocked, and a fixed `2026-08-14T01:00:00.000Z` clock;
|
||||||
- 1000-pixel viewport height, full-page screenshots, `document.fonts.ready`,
|
- 1000-pixel viewport height, full-page screenshots, `document.fonts.ready`,
|
||||||
Pretendard/IBM Plex font checks, zero-duration animation/transition/caret;
|
Pretendard/IBM Plex font checks, zero-duration animation/transition/caret;
|
||||||
- no screenshot masks; exact RGBA pixel comparison plus product-subtree
|
- no screenshot masks; exact RGBA pixel comparison plus normalized recursive
|
||||||
tag/class/text/ARIA projection and console/request failure comparison.
|
product-subtree tags, ordered children, complete classes, relevant
|
||||||
|
attributes, text/ARIA relationships, response metadata, boot lifecycle, and
|
||||||
|
console/request failure comparison.
|
||||||
|
|
||||||
|
The only attributes omitted by name after concrete diagnostics are React
|
||||||
|
Router `data-discover`, Next Image `data-nimg`/`decoding`/`srcset`, and Next SSR
|
||||||
|
`selected`; generated React IDs and CSS-module hashes are normalized by value.
|
||||||
|
No broad attribute class is omitted.
|
||||||
|
|
||||||
| Evidence group | Cases |
|
| Evidence group | Cases |
|
||||||
| --- | ---: |
|
| --- | ---: |
|
||||||
| 27 canonical routes at 360 and 1440 pixels | 54 |
|
| 27 canonical routes at 360 and 1440 pixels | 54 |
|
||||||
|
| Every additional known Public fixture slug/version | 18 |
|
||||||
| Public home breakpoint transitions | 12 |
|
| Public home breakpoint transitions | 12 |
|
||||||
| Studio screen/state fixtures | 19 |
|
| Studio screen/state fixtures | 19 |
|
||||||
| Ten unknown Public dynamic shapes at 360 and 1440 pixels | 20 |
|
| Ten unknown Public dynamic shapes at 360 and 1440 pixels | 20 |
|
||||||
| Search/menu/preview/dialog/publication interactions | 7 |
|
| Search/menu/preview/dialog/publication interactions | 7 |
|
||||||
| **Total** | **112** |
|
| **Total** | **130** |
|
||||||
|
|
||||||
Result: 112/112 passed, zero failed, zero different pixels, all DOM/class/text/
|
Result: 130/130 passed, zero failed, zero different pixels, all recursive
|
||||||
ARIA projections equal, and zero unexplained source or target console/request
|
DOM/class/attribute/text/ARIA trees and HTTP response metadata equal, and zero
|
||||||
errors. The target-only visual regression suite exercises the same 112 cases
|
unexplained source or target console/request errors. The target-only visual
|
||||||
against 111 committed PNGs; the canonical and Studio-state 1440-pixel
|
regression suite exercises the same 130 cases against 129 committed PNGs; the
|
||||||
|
canonical and Studio-state 1440-pixel
|
||||||
`/studio/publications` cases intentionally share one identical snapshot.
|
`/studio/publications` cases intentionally share one identical snapshot.
|
||||||
Source screenshots were temporary comparison inputs and were not copied into
|
Source screenshots were temporary comparison inputs and were not copied into
|
||||||
the target snapshot directory.
|
the target snapshot directory.
|
||||||
|
|
||||||
|
The checked clean-checkout command is
|
||||||
|
`TZ=Asia/Seoul corepack pnpm verify:tech-log-source-parity`; it runs directly
|
||||||
|
under the installed Node 24 runtime and has no `tsx` dependency. Durable
|
||||||
|
evidence is committed at
|
||||||
|
`docs/operations/evidence/tech-log-source-parity.json`. It records 178 source
|
||||||
|
checksums with tree digest
|
||||||
|
`6724c2f898eefc62d2fc0ee695bccc3ae61a69c5153ed43c69f2cf99ee45bca5`,
|
||||||
|
target candidate `3a7c5deca06679fb9b8710da2cce87bbca07ce8a`, build-manifest digest
|
||||||
|
`3579650faa482f566553c00d8b4a05a05b4f7a1ab93b83e48676289bbcf02984`,
|
||||||
|
Vite-manifest digest
|
||||||
|
`cfd583ed7b6c27dce7f47389447608636b6b9df3e28df00c6416674da2c7c46d`,
|
||||||
|
case inventory digest
|
||||||
|
`5689bcdb5d5637205cdeb92b7c57f72d99f0b039818b8f90afdde526bbafe0ac`,
|
||||||
|
and evidence payload digest
|
||||||
|
`f046047beded19ce468be607dcf99c6b74d4e07323457ec7145c56d2f67d2c79`.
|
||||||
|
|
||||||
The production source responds to both a missing dynamic slug such as
|
The production source responds to both a missing dynamic slug such as
|
||||||
`/projects/missing-project` and an unmatched path such as
|
`/projects/missing-project` and an unmatched path such as
|
||||||
`/definitely-not-a-product-route` with HTTP 404, `text/plain`, and the exact
|
`/definitely-not-a-product-route` with HTTP 404,
|
||||||
nine-byte body `Not Found`. The target intentionally removes the Public shell
|
`text/plain;charset=UTF-8`, and the exact nine-byte body `Not Found`. The
|
||||||
for those paths and matches that response in curl and Chromium regressions;
|
target production server intentionally removes the Public shell for those
|
||||||
this is the observed production source contract, not a generic runtime error.
|
paths and matches that response in direct HTTP and Chromium regressions. Known
|
||||||
|
Public routes and all known Studio routes remain SPA-served; `/studio/*`
|
||||||
|
unknown paths preserve the source's in-shell HTML with HTTP 404. This is the
|
||||||
|
observed production source contract, not a generic runtime error.
|
||||||
|
|
||||||
|
## Accessibility review boundary
|
||||||
|
|
||||||
|
Automated Chromium `@a11y` coverage passes 29/29. The source-controlled manual
|
||||||
|
inventory contains exactly the 27 installed route IDs and removes the obsolete
|
||||||
|
starter records. Every human record remains `pending-manual-review` until one
|
||||||
|
reviewer evaluates keyboard, focus, modal/error behavior, color, reduced
|
||||||
|
motion, and screen-reader output against immutable candidate
|
||||||
|
`3a7c5deca06679fb9b8710da2cce87bbca07ce8a`. Therefore
|
||||||
|
`corepack pnpm review:a11y-manual` intentionally exits nonzero with 27
|
||||||
|
incomplete records and `release IDs do not match`; neither the manual gate nor
|
||||||
|
`FE-GATE-009` is represented as passing. The exact completion format is in
|
||||||
|
`docs/accessibility/manual-checklist.md`, and signed evidence must be committed
|
||||||
|
separately after it cites the candidate SHA.
|
||||||
|
|
||||||
## Governed route migration
|
## Governed route migration
|
||||||
|
|
||||||
@@ -148,11 +191,15 @@ The exact repository aggregate command was run in the managed workspace:
|
|||||||
corepack pnpm test:all
|
corepack pnpm test:all
|
||||||
```
|
```
|
||||||
|
|
||||||
Its runtime-schema phase passed 3 files/40 tests. The unit phase passed 117
|
Its fresh staged-candidate runtime-schema phase passed 3 files/40 tests. The
|
||||||
files/1,738 tests and reported 50 failures in three child-process-heavy files:
|
unit phase passed 122 files/1,773 tests and reported 19 failures, all in the
|
||||||
39 `ci-artifact-contract`, 2 `ci-workflow-generation`, and 9
|
pre-existing `ci-artifact-contract` provider/cgroup, RLIMIT/EMFILE,
|
||||||
`http-scenario-evidence`. Every failure was rooted in `spawnSync ... EPERM` in
|
restrictive-umask, `/tmp`, timing, and identity environment cases. No
|
||||||
the restricted process sandbox; no `tests/features/tech-log` test failed.
|
`tests/features/tech-log` test failed. A pre-staging diagnostic run also found
|
||||||
|
39 `APP_HOME` release-inventory failures because new serving files were not yet
|
||||||
|
visible to `git ls-files`; staging the complete candidate fixed that test
|
||||||
|
precondition, and all 39 disappeared. The same run's one guardian aggregate
|
||||||
|
timeout passed 1/1 in isolation and 21/21 in the fresh staged aggregate.
|
||||||
|
|
||||||
The failing files were then reproduced in isolation outside that child-process
|
The failing files were then reproduced in isolation outside that child-process
|
||||||
restriction:
|
restriction:
|
||||||
@@ -161,14 +208,13 @@ restriction:
|
|||||||
corepack pnpm exec vitest run tests/unit/ci-artifact-contract.test.ts tests/unit/ci-workflow-generation.test.ts tests/unit/http-scenario-evidence.test.ts
|
corepack pnpm exec vitest run tests/unit/ci-artifact-contract.test.ts tests/unit/ci-workflow-generation.test.ts tests/unit/http-scenario-evidence.test.ts
|
||||||
```
|
```
|
||||||
|
|
||||||
Result: 3 files/529 tests, 510 passed and the pre-existing 19 environment-only
|
Result: 3 files/529 tests, 510 passed and the same 19 environment-only
|
||||||
`ci-artifact-contract` cases failed. The 407 `ci-workflow-generation` and 14
|
`ci-artifact-contract` cases failed. The 407 `ci-workflow-generation` and 14
|
||||||
`http-scenario-evidence` tests all passed. The remaining exact 19 are the
|
`http-scenario-evidence` tests all passed. These 19 contain no TechLog code or
|
||||||
documented provider lifecycle/cgroup, RLIMIT/EMFILE, restrictive-umask, and
|
test. The aggregate phases after unit were also run directly: component 18
|
||||||
`/tmp` timing/identity cases; they contain no TechLog code or test. The
|
files/124 tests, integration 11 files/82 tests under the required child-process
|
||||||
aggregate phases after unit were also run directly: component 18 files/124
|
scope, reference feature 4 files/13 tests, and recipes 2 files/17 tests all
|
||||||
tests, integration 11 files/82 tests under the required child-process scope,
|
passed.
|
||||||
reference feature 4 files/13 tests, and recipes 2 files/17 tests all passed.
|
|
||||||
|
|
||||||
The inventories in this document are human review baselines. Automated
|
The inventories in this document are human review baselines. Automated
|
||||||
coverage is intentionally limited to the two SVG byte contracts, evidence
|
coverage is intentionally limited to the two SVG byte contracts, evidence
|
||||||
|
|||||||
Reference in New Issue
Block a user