48 lines
2.6 KiB
Markdown
48 lines
2.6 KiB
Markdown
# Issue #9 authenticated browser evidence
|
||
|
||
This directory binds the dashboard menu-transition acceptance evidence to the exact Git head and working-tree files listed in `manifest.json`.
|
||
|
||
## Captured transition
|
||
|
||
- **Path:** `요약` → `분류 규칙`
|
||
- **Input:** native Streamlit menu click in an authenticated HTTPS browser session
|
||
- **Fixture:** generated synthetic SQLite database only
|
||
- **Sampling:** 35 DOM/computed-style frames at 50 ms intervals
|
||
- **Viewport:** 1280 × 720
|
||
- **Browser:** Headless Chrome 154; Client Hints architecture `arm`, bitness `64`
|
||
- **Fixture host:** Linux aarch64, Python 3.13.5, Streamlit 1.58.0, Uvicorn 0.49.0
|
||
|
||
## Verified browser observations
|
||
|
||
All twelve manifest checks are true:
|
||
|
||
- the HTML document and sidebar markers stayed identical;
|
||
- `[data-testid="stAppViewContainer"]` retained a non-`none` computed `backgroundImage` and remained visible/rendered in every frame;
|
||
- `[data-testid="stSidebar"]` retained a non-`none` computed `backgroundImage` and remained visible/rendered in every frame;
|
||
- computed `backgroundImage`, `backgroundColor`, `visibility`, `display`, `opacity`, and rendered geometry were captured for both surfaces in every frame;
|
||
- the click and all 35 frames completed inside one uninterrupted Playwright evaluation context, so no full-document navigation occurred;
|
||
- the target loading state was observed in two frames;
|
||
- the previous `요약` body was absent in every loading frame;
|
||
- the unrelated `source=evidence` query key survived;
|
||
- final URL, selected menu, target body, and cleared loading state agreed.
|
||
|
||
`browser-observations.json` contains every frame, body hashes, URL state, markers, computed surface styles, runtime metadata, and explicit limitations. `final-state.jpg` is the final visible browser state and contains no credential or secret.
|
||
|
||
## Recheck
|
||
|
||
Run the exact validator recorded in `manifest.json`. The captured result was:
|
||
|
||
```text
|
||
exit code: 0
|
||
PASS source_hashes=5 artifact_hashes=2 checks=12/12 frames=35 full_document_loads=0 surfaces=2
|
||
```
|
||
|
||
The browser actions used Playwright MCP. That API reports success/error rather than a numeric process exit code; the manifest records this boundary instead of fabricating an exit status.
|
||
|
||
## Evidence boundaries
|
||
|
||
- This is synthetic-fixture browser evidence, not operating-ledger evidence.
|
||
- A temporary HTTPS ingress adapter normalized the request scheme. Repository authentication and same-origin enforcement remained active.
|
||
- The tunnel URL is intentionally ephemeral and retained only as provenance.
|
||
- The screenshot supplements, but does not replace, the machine-readable continuous-frame observations.
|