Replace document navigation with native Streamlit state transitions, preserve dashboard contracts, and add regression plus authenticated browser evidence for Issue #9.
Issue #9 authenticated browser evidence
This directory binds the dashboard menu-transition acceptance evidence to the exact 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/style frames at 50 ms intervals
- Viewport: 1280 × 720
- Browser: Headless Chrome 154 on Linux x86_64
- Fixture host: Linux aarch64, Python 3.13.5, Streamlit 1.58.0, Uvicorn 0.49.0
Verified browser observations
All eight manifest checks are true:
- the HTML document marker stayed identical;
- the sidebar marker stayed identical;
- the page background stayed identical;
- no post-click full-document
loadevent occurred; - the target loading state was observed;
- the previous
요약body was absent in every loading frame; - the unrelated
fixture=preservedquery key survived; - final URL, selected menu, target body, and cleared loading state agreed.
browser-observations.json contains every sampled frame, body hashes, URL state, history events, document/sidebar markers, computed background, runtime metadata, and explicit limitations. final-state.jpg is the final visible browser state; it contains no credential or secret.
Recheck
Run the exact validator recorded in manifest.json. The captured result was:
exit code: 0
PASS source_hashes=5 artifact_hashes=2 checks=8/8 frames=35 full_document_loads=0
The browser action was executed through mcp__playwright__browser_run_code_unsafe. That API reports success/error rather than a numeric process exit code; this boundary is explicit in the manifest instead of being represented as a fabricated exit status.
Evidence boundaries
- This is synthetic-fixture browser evidence, not operating-ledger evidence.
- A fixture-only external wrapper delayed the rules renderer by two seconds so the loading interval could be sampled. It did not alter repository source.
- A temporary HTTPS ingress adapter supplied trusted proxy scheme/Host metadata. Repository authentication and same-origin enforcement remained active.
- The tunnel URL is intentionally ephemeral and is retained in the frame record only for provenance.
- The screenshot supplements, but does not replace, the machine-readable continuous-frame observations.