• frontend/{index.html,app.js,style.css}: no build step, no npm, vanilla JS
    hash router (05 §5.7). Real page content is PH3 (U-022+, starting from
    docs/wireframes/); this is only the empty shell + working navigation the
    Done criterion asks for.
    
    backend_server.py serves the 3 files via an exact-path whitelist (not a
    generic static-file/directory server) -- no path-traversal surface to
    reason about for 3 fixed files.
    
    Verified in an actual browser this session (navigated to localhost, clicked
    all 3 nav links, screenshotted each) rather than only trusting stdlib
    tests -- a Python-only test can't exercise real hashchange/DOM behavior
    without a JS engine. Nav highlighting and content swap both confirmed
    working, no page reload, no build step.
    
    7 new stdlib unittest cases covering what the server is actually
    responsible for (static files served with correct content-type, 404 on
    unknown GET path). 66 total across U-001-008, all passing.
    
    This closes out PH0 (U-001~U-008) -- all three Phase-acceptance criteria
    now hold for real: target-project directory scaffold, 15-table schema with
    constraint tests, and a real claude --agent round-trip.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    bboonnee authored
     
    Browse Dir »