authz.lock: full-stack-fastapi-template@cb740b6: pr-mut-mass-assign-owner.v0

Verdict: FAIL · 2 new invariant violations · 3 widened cells · 3 changed cells

probes603
probe time (s)65.2
coverage20/22 operations
never green (unprobed)POST /password-recovery-html-content/{email}, POST /reset-password/
harnessvalid
appfull-stack-fastapi-template@cb740b6
expectedFAIL
whatPOST /items/: client may set owner_id (added to ItemCreate, honoured if sent)
regression testproven (JUnit: passes on base, AssertionError on head)
proof LLM cost$0.0314 (12 calls, 2 prove runs in Nebius Sandboxes, 89.6 s)

Invariant violations introduced by this PR

rulecell (op | identity | target | variant)detail
I3 write-isolationPOST /items/ | user_a | - | hostileuser_a created a item row owned by user_b
I3 write-isolationPOST /items/ | user_b | - | hostileuser_b created a item row owned by user_a

Access widened (lockfile diff)

cellbasehead
POST /items/ | superuser | - | hostileALLOW 200 leaks=['self'] db=['insert:item:self'] count=NoneALLOW 200 leaks=- db=['insert:item:user_b'] count=None
POST /items/ | user_a | - | hostileALLOW 200 leaks=['self'] db=['insert:item:self'] count=NoneALLOW 200 leaks=- db=['insert:item:user_b'] count=None
POST /items/ | user_b | - | hostileALLOW 200 leaks=['self'] db=['insert:item:self'] count=NoneALLOW 200 leaks=- db=['insert:item:user_a'] count=None

Identity × operation

PASS = no invariant violation in any probe of that pair; FAIL = at least one new violation; CHANGED = widened vs base without a violation. Letters: A=ALLOW D=DENY I=INCONCLUSIVE probe counts. Expand a cell for per-probe evidence (status, leaked canary owners, DB row changes with owner attribution); request/response bodies are not stored in the lock, and tokens/passwords are redacted.

operationalg_noneanonymousdeleted_userexpiredforged_siginactivesuperuseruser_auser_b
DELETE /items/{id}
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 401--None
superuserbaseDENY 401--None
user_abaseDENY 401--None
user_bbaseDENY 401--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 404--None
user_abaseDENY 404--None
user_bbaseDENY 404--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 400--None
superuserbaseDENY 400--None
user_abaseDENY 400--None
user_bbaseDENY 400--None
PASS A3 D1
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseALLOW 200-delete:item:selfNone
user_abaseALLOW 200-delete:item:user_aNone
user_bbaseALLOW 200-delete:item:user_bNone
PASS A1 D3
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 403--None
user_abaseALLOW 200-delete:item:selfNone
user_bbaseDENY 403--None
PASS A1 D3
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseALLOW 200-delete:item:selfNone
DELETE /users/me
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-delete:item:self, delete:item:self, delete:item:self, delete:item:self, delete:item:self, delete:item:self, delete:item:self, delete:user:selfNone
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-delete:item:self, delete:item:self, delete:item:self, delete:user:selfNone
DELETE /users/{user_id}
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 401--None
superuserbaseDENY 401--None
user_abaseDENY 401--None
user_bbaseDENY 401--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 404--None
user_abaseDENY 404--None
user_bbaseDENY 404--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 400--None
superuserbaseDENY 400--None
user_abaseDENY 400--None
user_bbaseDENY 400--None
PASS A2 D2
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 403--None
user_abaseALLOW 200-delete:item:user_a, delete:item:user_a, delete:item:user_a, delete:item:user_a, delete:item:user_a, delete:item:user_a, delete:item:user_a, delete:user:user_aNone
user_bbaseALLOW 200-delete:item:user_b, delete:item:user_b, delete:item:user_b, delete:user:user_bNone
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
GET /items/
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200inactive, self, user_a, user_b-14
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200self-7
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200self-3
GET /items/{id}
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 401--None
superuserbaseDENY 401--None
user_abaseDENY 401--None
user_bbaseDENY 401--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 404--None
user_abaseDENY 404--None
user_bbaseDENY 404--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 400--None
superuserbaseDENY 400--None
user_abaseDENY 400--None
user_bbaseDENY 400--None
PASS A3 D1
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseALLOW 200self-None
user_abaseALLOW 200user_a-None
user_bbaseALLOW 200user_b-None
PASS A1 D3
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 403--None
user_abaseALLOW 200self-None
user_bbaseDENY 403--None
PASS A1 D3
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseALLOW 200self-None
GET /users/
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200inactive, self, user_a, user_b-4
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
GET /users/me
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200self-None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200self-None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200self-None
GET /users/{user_id}
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 401--None
superuserbaseDENY 401--None
user_abaseDENY 401--None
user_bbaseDENY 401--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 404--None
user_abaseDENY 404--None
user_bbaseDENY 404--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 400--None
superuserbaseDENY 400--None
user_abaseDENY 400--None
user_bbaseDENY 400--None
PASS A3 D1
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseALLOW 200self-None
user_abaseALLOW 200user_a-None
user_bbaseALLOW 200user_b-None
PASS A1 D3
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseALLOW 200self-None
user_bbaseDENY 403--None
PASS A1 D3
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseALLOW 200self-None
GET /utils/health-check/
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200--None
PATCH /users/me
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
-hostileDENY 401--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
-hostileDENY 404--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200selfupdate:user:selfNone
-hostileALLOW 200selfupdate:user:selfNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200selfupdate:user:selfNone
-hostileALLOW 200selfupdate:user:selfNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200selfupdate:user:selfNone
-hostileALLOW 200selfupdate:user:selfNone
PATCH /users/me/password
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
-hostileDENY 401--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
-hostileDENY 404--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-update:user:selfNone
-hostileALLOW 200-update:user:selfNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-update:user:selfNone
-hostileALLOW 200-update:user:selfNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-update:user:selfNone
-hostileALLOW 200-update:user:selfNone
PATCH /users/{user_id}
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
nonexistenthostileDENY 403--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseDENY 403--None
user_ahostileDENY 403--None
user_bbaseDENY 403--None
user_bhostileDENY 403--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 401--None
nonexistenthostileDENY 401--None
superuserbaseDENY 401--None
superuserhostileDENY 401--None
user_abaseDENY 401--None
user_ahostileDENY 401--None
user_bbaseDENY 401--None
user_bhostileDENY 401--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
nonexistenthostileDENY 404--None
superuserbaseDENY 404--None
superuserhostileDENY 404--None
user_abaseDENY 404--None
user_ahostileDENY 404--None
user_bbaseDENY 404--None
user_bhostileDENY 404--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
nonexistenthostileDENY 403--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseDENY 403--None
user_ahostileDENY 403--None
user_bbaseDENY 403--None
user_bhostileDENY 403--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
nonexistenthostileDENY 403--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseDENY 403--None
user_ahostileDENY 403--None
user_bbaseDENY 403--None
user_bhostileDENY 403--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 400--None
nonexistenthostileDENY 400--None
superuserbaseDENY 400--None
superuserhostileDENY 400--None
user_abaseDENY 400--None
user_ahostileDENY 400--None
user_bbaseDENY 400--None
user_bhostileDENY 400--None
PASS A6 D2
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
nonexistenthostileDENY 404--None
superuserbaseALLOW 200selfupdate:user:selfNone
superuserhostileALLOW 200selfupdate:user:selfNone
user_abaseALLOW 200user_aupdate:user:user_aNone
user_ahostileALLOW 200user_aupdate:user:user_a[priv:is_superuser]None
user_bbaseALLOW 200user_bupdate:user:user_bNone
user_bhostileALLOW 200user_bupdate:user:user_b[priv:is_superuser]None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
nonexistenthostileDENY 403--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseDENY 403--None
user_ahostileDENY 403--None
user_bbaseDENY 403--None
user_bhostileDENY 403--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
nonexistenthostileDENY 403--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseDENY 403--None
user_ahostileDENY 403--None
user_bbaseDENY 403--None
user_bhostileDENY 403--None
POST /items/
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
-hostileDENY 401--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
-hostileDENY 404--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
CHANGED A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200selfinsert:item:selfNone
-hostileALLOW 200-insert:item:user_bNone
FAIL A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200selfinsert:item:selfNone
-hostileALLOW 200-insert:item:user_bNone ⚠ I3 write-isolation: user_a created a item row owned by user_b
FAIL A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200selfinsert:item:selfNone
-hostileALLOW 200-insert:item:user_aNone ⚠ I3 write-isolation: user_b created a item row owned by user_a
POST /login/access-token
PASS A3 D5
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentvalid_credsDENY 400--None
nonexistentwrong_passwordDENY 400--None
superuservalid_credsALLOW 200--None
superuserwrong_passwordDENY 400--None
user_avalid_credsALLOW 200--None
user_awrong_passwordDENY 400--None
user_bvalid_credsALLOW 200--None
user_bwrong_passwordDENY 400--None
PASS A3 D5
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentvalid_credsDENY 400--None
nonexistentwrong_passwordDENY 400--None
superuservalid_credsALLOW 200--None
superuserwrong_passwordDENY 400--None
user_avalid_credsALLOW 200--None
user_awrong_passwordDENY 400--None
user_bvalid_credsALLOW 200--None
user_bwrong_passwordDENY 400--None
PASS A3 D5
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentvalid_credsDENY 400--None
nonexistentwrong_passwordDENY 400--None
superuservalid_credsALLOW 200--None
superuserwrong_passwordDENY 400--None
user_avalid_credsALLOW 200--None
user_awrong_passwordDENY 400--None
user_bvalid_credsALLOW 200--None
user_bwrong_passwordDENY 400--None
PASS A3 D5
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentvalid_credsDENY 400--None
nonexistentwrong_passwordDENY 400--None
superuservalid_credsALLOW 200--None
superuserwrong_passwordDENY 400--None
user_avalid_credsALLOW 200--None
user_awrong_passwordDENY 400--None
user_bvalid_credsALLOW 200--None
user_bwrong_passwordDENY 400--None
PASS A3 D5
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentvalid_credsDENY 400--None
nonexistentwrong_passwordDENY 400--None
superuservalid_credsALLOW 200--None
superuserwrong_passwordDENY 400--None
user_avalid_credsALLOW 200--None
user_awrong_passwordDENY 400--None
user_bvalid_credsALLOW 200--None
user_bwrong_passwordDENY 400--None
PASS A3 D5
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentvalid_credsDENY 400--None
nonexistentwrong_passwordDENY 400--None
superuservalid_credsALLOW 200--None
superuserwrong_passwordDENY 400--None
user_avalid_credsALLOW 200--None
user_awrong_passwordDENY 400--None
user_bvalid_credsALLOW 200--None
user_bwrong_passwordDENY 400--None
PASS A3 D5
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentvalid_credsDENY 400--None
nonexistentwrong_passwordDENY 400--None
superuservalid_credsALLOW 200--None
superuserwrong_passwordDENY 400--None
user_avalid_credsALLOW 200--None
user_awrong_passwordDENY 400--None
user_bvalid_credsALLOW 200--None
user_bwrong_passwordDENY 400--None
PASS A3 D5
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentvalid_credsDENY 400--None
nonexistentwrong_passwordDENY 400--None
superuservalid_credsALLOW 200--None
superuserwrong_passwordDENY 400--None
user_avalid_credsALLOW 200--None
user_awrong_passwordDENY 400--None
user_bvalid_credsALLOW 200--None
user_bwrong_passwordDENY 400--None
PASS A3 D5
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentvalid_credsDENY 400--None
nonexistentwrong_passwordDENY 400--None
superuservalid_credsALLOW 200--None
superuserwrong_passwordDENY 400--None
user_avalid_credsALLOW 200--None
user_awrong_passwordDENY 400--None
user_bvalid_credsALLOW 200--None
user_bwrong_passwordDENY 400--None
POST /login/test-token
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200self-None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200self-None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200self-None
POST /password-recovery-html-content/{email}
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 401--None
superuserbaseDENY 401--None
user_abaseDENY 401--None
user_bbaseDENY 401--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseDENY 404--None
user_abaseDENY 404--None
user_bbaseDENY 404--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 400--None
superuserbaseDENY 400--None
user_abaseDENY 400--None
user_bbaseDENY 400--None
PASS D1 I3
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
superuserbaseINCONCLUSIVE 599--None
user_abaseINCONCLUSIVE 599--None
user_bbaseINCONCLUSIVE 599--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
PASS D4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
superuserbaseDENY 403--None
user_abaseDENY 403--None
user_bbaseDENY 403--None
POST /password-recovery/{email}
PASS A4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseALLOW 200--None
superuserbaseALLOW 200--None
user_abaseALLOW 200--None
user_bbaseALLOW 200--None
PASS A4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseALLOW 200--None
superuserbaseALLOW 200--None
user_abaseALLOW 200--None
user_bbaseALLOW 200--None
PASS A4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseALLOW 200--None
superuserbaseALLOW 200--None
user_abaseALLOW 200--None
user_bbaseALLOW 200--None
PASS A4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseALLOW 200--None
superuserbaseALLOW 200--None
user_abaseALLOW 200--None
user_bbaseALLOW 200--None
PASS A4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseALLOW 200--None
superuserbaseALLOW 200--None
user_abaseALLOW 200--None
user_bbaseALLOW 200--None
PASS A4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseALLOW 200--None
superuserbaseALLOW 200--None
user_abaseALLOW 200--None
user_bbaseALLOW 200--None
PASS A4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseALLOW 200--None
superuserbaseALLOW 200--None
user_abaseALLOW 200--None
user_bbaseALLOW 200--None
PASS A4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseALLOW 200--None
superuserbaseALLOW 200--None
user_abaseALLOW 200--None
user_bbaseALLOW 200--None
PASS A4
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseALLOW 200--None
superuserbaseALLOW 200--None
user_abaseALLOW 200--None
user_bbaseALLOW 200--None
POST /reset-password/
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
POST /users/
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
-hostileDENY 401--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
-hostileDENY 404--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
-hostileDENY 400--None
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:new[privileged]None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
PASS D2
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
-hostileDENY 403--None
POST /users/signup
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:newNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:newNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:newNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:newNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:newNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:newNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:newNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:newNone
PASS A2
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 200-insert:user:newNone
-hostileALLOW 200-insert:user:newNone
POST /utils/test-email/
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 401--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 404--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 400--None
PASS A1
targetvariantdecisionleaked canariesDB changescountviolation
-baseALLOW 201--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PASS D1
targetvariantdecisionleaked canariesDB changescountviolation
-baseDENY 403--None
PUT /items/{id}
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
nonexistenthostileDENY 403--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseDENY 403--None
user_ahostileDENY 403--None
user_bbaseDENY 403--None
user_bhostileDENY 403--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 401--None
nonexistenthostileDENY 401--None
superuserbaseDENY 401--None
superuserhostileDENY 401--None
user_abaseDENY 401--None
user_ahostileDENY 401--None
user_bbaseDENY 401--None
user_bhostileDENY 401--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
nonexistenthostileDENY 404--None
superuserbaseDENY 404--None
superuserhostileDENY 404--None
user_abaseDENY 404--None
user_ahostileDENY 404--None
user_bbaseDENY 404--None
user_bhostileDENY 404--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
nonexistenthostileDENY 403--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseDENY 403--None
user_ahostileDENY 403--None
user_bbaseDENY 403--None
user_bhostileDENY 403--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 403--None
nonexistenthostileDENY 403--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseDENY 403--None
user_ahostileDENY 403--None
user_bbaseDENY 403--None
user_bhostileDENY 403--None
PASS D8
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 400--None
nonexistenthostileDENY 400--None
superuserbaseDENY 400--None
superuserhostileDENY 400--None
user_abaseDENY 400--None
user_ahostileDENY 400--None
user_bbaseDENY 400--None
user_bhostileDENY 400--None
PASS A6 D2
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
nonexistenthostileDENY 404--None
superuserbaseALLOW 200selfupdate:item:selfNone
superuserhostileALLOW 200selfupdate:item:selfNone
user_abaseALLOW 200user_aupdate:item:user_aNone
user_ahostileALLOW 200user_aupdate:item:user_aNone
user_bbaseALLOW 200user_bupdate:item:user_bNone
user_bhostileALLOW 200user_bupdate:item:user_bNone
PASS A2 D6
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
nonexistenthostileDENY 404--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseALLOW 200selfupdate:item:selfNone
user_ahostileALLOW 200selfupdate:item:selfNone
user_bbaseDENY 403--None
user_bhostileDENY 403--None
PASS A2 D6
targetvariantdecisionleaked canariesDB changescountviolation
nonexistentbaseDENY 404--None
nonexistenthostileDENY 404--None
superuserbaseDENY 403--None
superuserhostileDENY 403--None
user_abaseDENY 403--None
user_ahostileDENY 403--None
user_bbaseALLOW 200selfupdate:item:selfNone
user_bhostileALLOW 200selfupdate:item:selfNone

Generated by report.py from the lockfile; the verdict is computed by authzlock.diff (deterministic, no LLM).