No description
Det viktigste funnet: kommentaren i 002_roles_and_grants.sql om at bootstrap trenger "en privilegert sti" stemte ikke. Den selvrefererende triksen fungerte på første forsøk: generer org-ens uuid i Python før innsetting, sett app.current_org til nøyaktig den via den allerede eksisterende org_connection(), sett så inn raden med samme id — org_selfs implisitte WITH CHECK blir da trivielt sann. teecup_app (NOSUPERUSER/NOBYPASSRLS) trengte ingen egen privilegert tilkobling. Alle 5 tester fra planen bestått, inkludert den viktigste — en negativ kontroll som beviser mekanismen er presis og ikke et RLS-hull: forsøk på å sette inn en organisasjon med en mismatchende id ble avvist med insufficient_privilege. I tillegg: ny org fungerer normalt med eksisterende endepunkter, dukker riktig opp i /auth/me, og full kryss-org-isolasjon holder mellom to uavhengig opprettede organisasjoner. CLAUDE.md og FEATURE_BACKLOG.md er oppdatert. |
||
|---|---|---|
| .claude | ||
| __pycache__ | ||
| app | ||
| .gitignore | ||
| 001_initial_schema.sql | ||
| 002_roles_and_grants.sql | ||
| 003_scoring_and_blinddraw.sql | ||
| 004_auth.sql | ||
| 005_rls_null_guard.sql | ||
| ARCHITECTURE_DECISIONS.md | ||
| CLAUDE.md | ||
| FEATURE_BACKLOG.md | ||
| handicap_engine.py | ||
| test_handicap_engine.py | ||
| test_isolation.sql | ||