MotorSignal-App/docs/qa-2026-10-01/auth.rules-results.json

1 line
74 KiB
JSON

{"numTotalTestSuites":10,"numPassedTestSuites":10,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":148,"numPassedTests":148,"numFailedTests":0,"numPendingTests":0,"numTodoTests":0,"snapshot":{"added":0,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0,"didUpdate":false},"startTime":1790829759893,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["MotorCloud ride ownership rules"],"fullName":"MotorCloud ride ownership rules a signed-in owner can create and read their own ride","status":"passed","title":"a signed-in owner can create and read their own ride","duration":357.02089999999953,"failureMessages":[],"meta":{}},{"ancestorTitles":["MotorCloud ride ownership rules"],"fullName":"MotorCloud ride ownership rules User A cannot read or update User B ride data","status":"passed","title":"User A cannot read or update User B ride data","duration":177.97890000000007,"failureMessages":[],"meta":{}},{"ancestorTitles":["MotorCloud ride ownership rules"],"fullName":"MotorCloud ride ownership rules a caller cannot create a ride with another ownerId","status":"passed","title":"a caller cannot create a ride with another ownerId","duration":63.03530000000046,"failureMessages":[],"meta":{}},{"ancestorTitles":["MotorCloud ride ownership rules"],"fullName":"MotorCloud ride ownership rules a caller cannot change an existing ride ownerId","status":"passed","title":"a caller cannot change an existing ride ownerId","duration":57.294199999999364,"failureMessages":[],"meta":{}},{"ancestorTitles":["MotorCloud ride ownership rules"],"fullName":"MotorCloud ride ownership rules signed-out callers cannot access user-owned rides","status":"passed","title":"signed-out callers cannot access user-owned rides","duration":76.40929999999935,"failureMessages":[],"meta":{}},{"ancestorTitles":["MotorCloud ride ownership rules"],"fullName":"MotorCloud ride ownership rules an owner can list and delete every account-cleanup path","status":"passed","title":"an owner can list and delete every account-cleanup path","duration":326.7600000000002,"failureMessages":[],"meta":{}},{"ancestorTitles":["MotorCloud ride ownership rules"],"fullName":"MotorCloud ride ownership rules another user cannot list or delete any account-cleanup path","status":"passed","title":"another user cannot list or delete any account-cleanup path","duration":440.72649999999976,"failureMessages":[],"meta":{}},{"ancestorTitles":["MotorCloud ride ownership rules"],"fullName":"MotorCloud ride ownership rules signed-out callers cannot list or delete account-cleanup paths","status":"passed","title":"signed-out callers cannot list or delete account-cleanup paths","duration":371.0607,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules"],"fullName":"Social Architecture Security Rules public profile creation, reading, and privacy protection","status":"passed","title":"public profile creation, reading, and privacy protection","duration":139.65959999999995,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules"],"fullName":"Social Architecture Security Rules handle reservation uniqueness and directory scraping prevention","status":"passed","title":"handle reservation uniqueness and directory scraping prevention","duration":177.57610000000022,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules"],"fullName":"Social Architecture Security Rules friend requests: legitimate vs forged vs blocked vs disabled","status":"passed","title":"friend requests: legitimate vs forged vs blocked vs disabled","duration":112.98469999999998,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules"],"fullName":"Social Architecture Security Rules friendship establishment requires incoming request; unilateral declaration fails","status":"passed","title":"friendship establishment requires incoming request; unilateral declaration fails","duration":182.58520000000044,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules"],"fullName":"Social Architecture Security Rules blocking prevents requests, hides profiles, and blocks cannot be forged","status":"passed","title":"blocking prevents requests, hides profiles, and blocks cannot be forged","duration":195.6347999999998,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Group Rides Security Rules"],"fullName":"Social Architecture Security Rules Group Rides Security Rules organizer can create group ride and initialize organizer participant","status":"passed","title":"organizer can create group ride and initialize organizer participant","duration":222.01639999999952,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Group Rides Security Rules"],"fullName":"Social Architecture Security Rules Group Rides Security Rules ride visibility and mutual block rules","status":"passed","title":"ride visibility and mutual block rules","duration":142.76250000000073,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Group Rides Security Rules"],"fullName":"Social Architecture Security Rules Group Rides Security Rules invitations, acceptance, and capacity modification","status":"passed","title":"invitations, acceptance, and capacity modification","duration":215.73589999999967,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Group Rides Security Rules"],"fullName":"Social Architecture Security Rules Group Rides Security Rules upcoming rides and my rides collection queries enforce accessUids and organizerUid","status":"passed","title":"upcoming rides and my rides collection queries enforce accessUids and organizerUid","duration":315.9599999999991,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Group Rides Security Rules"],"fullName":"Social Architecture Security Rules Group Rides Security Rules status-aware participant authorization and privilege escalation prevention","status":"passed","title":"status-aware participant authorization and privilege escalation prevention","duration":311.46479999999974,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Group Rides Security Rules"],"fullName":"Social Architecture Security Rules Group Rides Security Rules live group presence security rules","status":"passed","title":"live group presence security rules","duration":835.4506000000001,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Group Rides Security Rules"],"fullName":"Social Architecture Security Rules Group Rides Security Rules live presence lifecycle: removal, voluntary leave, completion, and mid-session block","status":"passed","title":"live presence lifecycle: removal, voluntary leave, completion, and mid-session block","duration":1268.245499999999,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Group Rides Security Rules"],"fullName":"Social Architecture Security Rules Group Rides Security Rules quick status security: organizer cannot impersonate or modify another rider status","status":"passed","title":"quick status security: organizer cannot impersonate or modify another rider status","duration":127.80839999999989,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Group Rides Security Rules"],"fullName":"Social Architecture Security Rules Group Rides Security Rules session authority: organizer transitions, participant denials, and terminal states","status":"passed","title":"session authority: organizer transitions, participant denials, and terminal states","duration":279.28139999999985,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules owner can create, read, update, and delete their own route","status":"passed","title":"owner can create, read, update, and delete their own route","duration":147.9346999999998,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules validates route constraints: title length and max stops","status":"passed","title":"validates route constraints: title length and max stops","duration":139.14940000000024,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules private route cannot be read or modified by non-owner","status":"passed","title":"private route cannot be read or modified by non-owner","duration":125.43159999999989,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules public route can be read by any signed-in user, but only modified by owner","status":"passed","title":"public route can be read by any signed-in user, but only modified by owner","duration":97.05789999999979,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules groupOnly route can be read by accepted group members, but not by outsiders","status":"passed","title":"groupOnly route can be read by accepted group members, but not by outsiders","duration":127.79910000000018,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules group ride route attachment authority: only organizer can attach or detach route","status":"passed","title":"group ride route attachment authority: only organizer can attach or detach route","duration":177.3818999999985,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules group-only route read authorization enforces accepted status and mutual block privacy","status":"passed","title":"group-only route read authorization enforces accepted status and mutual block privacy","duration":397.3082000000013,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules group ride route attachment requires organizer to own the route","status":"passed","title":"group ride route attachment requires organizer to own the route","duration":134.34220000000096,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules route schema immutability and visibility whitelisting","status":"passed","title":"route schema immutability and visibility whitelisting","duration":173.5627999999997,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal route planning and sharing rules"],"fullName":"Social Architecture Security Rules MotorSignal route planning and sharing rules route stops validation enforces bounds, types, and required fields","status":"passed","title":"route stops validation enforces bounds, types, and required fields","duration":228.8016000000007,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Authentication boundary: registered users allowed, anonymous and unauthenticated users rejected","status":"passed","title":"Authentication boundary: registered users allowed, anonymous and unauthenticated users rejected","duration":162.40990000000056,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Club creation atomicity: atomic creation of club, owner member, and slug reservation","status":"passed","title":"Club creation atomicity: atomic creation of club, owner member, and slug reservation","duration":168.74119999999857,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Discovery query security: public discovery query allowed, unconstrained collection scan rejected","status":"passed","title":"Discovery query security: public discovery query allowed, unconstrained collection scan rejected","duration":143.78039999999964,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Membership lifecycle: open join, request to join, invitation response, and leave","status":"passed","title":"Membership lifecycle: open join, request to join, invitation response, and leave","duration":307.78770000000077,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Role hierarchy & self-promotion prevention: members cannot promote self or alter roles","status":"passed","title":"Role hierarchy & self-promotion prevention: members cannot promote self or alter roles","duration":275.85329999999885,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Atomic ownership transfer: valid transfer succeeds, partial/unauthorized transfer rejected","status":"passed","title":"Atomic ownership transfer: valid transfer succeeds, partial/unauthorized transfer rejected","duration":219.89279999999962,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Administrative bans: regular members cannot access bans, banned riders cannot join","status":"passed","title":"Administrative bans: regular members cannot access bans, banned riders cannot join","duration":165.08050000000003,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Collection group query: caller can query own memberships/invites, cannot query others","status":"passed","title":"Collection group query: caller can query own memberships/invites, cannot query others","duration":90.01080000000002,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Slug handle creation atomicity: handle reservation strictly requires consistent atomic club and owner creation (Cases A-J)","status":"passed","title":"Slug handle creation atomicity: handle reservation strictly requires consistent atomic club and owner creation (Cases A-J)","duration":511.3740999999991,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Orphan owner membership creation attack: standalone or uncoupled owner creation rejected","status":"passed","title":"Orphan owner membership creation attack: standalone or uncoupled owner creation rejected","duration":77.84250000000065,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Slug handle invariants: deletion and updates strictly prohibited (permanent tombstone)","status":"passed","title":"Slug handle invariants: deletion and updates strictly prohibited (permanent tombstone)","duration":118.0702999999994,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Club root slug immutability: slug cannot be modified by owner, admin, or member","status":"passed","title":"Club root slug immutability: slug cannot be modified by owner, admin, or member","duration":166.40929999999935,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Direct memberCount mutation attacks: standalone or uncoupled mutations strictly rejected","status":"passed","title":"Direct memberCount mutation attacks: standalone or uncoupled mutations strictly rejected","duration":200.66629999999896,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules Ownership transfer and archive invariants: memberCount and slug preserved","status":"passed","title":"Ownership transfer and archive invariants: memberCount and slug preserved","duration":203.3008000000009,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules FP-14.2: Club Settings access authority and boundary isolation (Admin authority & attack matrix)","status":"passed","title":"FP-14.2: Club Settings access authority and boundary isolation (Admin authority & attack matrix)","duration":432.433500000001,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules FP-14.3: Club logo/banner HTTPS URL invariant enforced at the storage layer","status":"passed","title":"FP-14.3: Club logo/banner HTTPS URL invariant enforced at the storage layer","duration":260.1867000000002,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules FP-15: Club Applications membership request approval and decline security matrix","status":"passed","title":"FP-15: Club Applications membership request approval and decline security matrix","duration":330.66030000000137,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case A: left -> active in OPEN club succeeds","status":"passed","title":"Case A: left -> active in OPEN club succeeds","duration":81.62449999999808,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case B: declined -> active in OPEN club succeeds","status":"passed","title":"Case B: declined -> active in OPEN club succeeds","duration":87.27070000000094,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case C: removed -> active in OPEN club succeeds","status":"passed","title":"Case C: removed -> active in OPEN club succeeds","duration":75.19780000000173,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case D: left -> requested in REQUEST club succeeds","status":"passed","title":"Case D: left -> requested in REQUEST club succeeds","duration":86.09909999999945,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case E: declined -> requested in REQUEST club succeeds","status":"passed","title":"Case E: declined -> requested in REQUEST club succeeds","duration":81.51929999999993,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case F: removed -> requested in REQUEST club succeeds","status":"passed","title":"Case F: removed -> requested in REQUEST club succeeds","duration":68.94219999999768,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case G: left -> active in REQUEST club denied","status":"passed","title":"Case G: left -> active in REQUEST club denied","duration":80.33680000000095,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case H: declined -> active in REQUEST club denied","status":"passed","title":"Case H: declined -> active in REQUEST club denied","duration":80.37439999999697,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case I: removed -> active in REQUEST club denied","status":"passed","title":"Case I: removed -> active in REQUEST club denied","duration":90.07339999999749,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case J: left -> requested in OPEN club denied","status":"passed","title":"Case J: left -> requested in OPEN club denied","duration":70.58730000000287,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case K: declined -> requested in OPEN club denied","status":"passed","title":"Case K: declined -> requested in OPEN club denied","duration":85.33669999999984,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case L: removed -> requested in OPEN club denied","status":"passed","title":"Case L: removed -> requested in OPEN club denied","duration":75.60810000000129,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case M: left -> active in INVITE_ONLY club denied","status":"passed","title":"Case M: left -> active in INVITE_ONLY club denied","duration":79.13920000000144,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case N: declined -> active in INVITE_ONLY club denied","status":"passed","title":"Case N: declined -> active in INVITE_ONLY club denied","duration":89.41149999999834,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case O: removed -> active in INVITE_ONLY club denied","status":"passed","title":"Case O: removed -> active in INVITE_ONLY club denied","duration":77.38490000000093,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case P: left -> requested in INVITE_ONLY club denied","status":"passed","title":"Case P: left -> requested in INVITE_ONLY club denied","duration":70.36499999999796,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case Q: declined -> requested in INVITE_ONLY club denied","status":"passed","title":"Case Q: declined -> requested in INVITE_ONLY club denied","duration":67.84810000000289,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case R: removed -> requested in INVITE_ONLY club denied","status":"passed","title":"Case R: removed -> requested in INVITE_ONLY club denied","duration":71.64129999999932,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case S: banned left -> active denied","status":"passed","title":"Case S: banned left -> active denied","duration":93.20479999999952,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case T: banned declined -> active denied","status":"passed","title":"Case T: banned declined -> active denied","duration":76.79650000000038,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case U: banned removed -> active denied","status":"passed","title":"Case U: banned removed -> active denied","duration":92.4497999999985,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case V: banned left -> requested denied","status":"passed","title":"Case V: banned left -> requested denied","duration":72.79449999999997,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case W: banned declined -> requested denied","status":"passed","title":"Case W: banned declined -> requested denied","duration":77.15579999999682,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case X: banned removed -> requested denied","status":"passed","title":"Case X: banned removed -> requested denied","duration":74.00700000000143,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case Y: re-entry cannot self-promote role to admin","status":"passed","title":"Case Y: re-entry cannot self-promote role to admin","duration":88.3344999999972,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case Z: re-entry cannot self-promote role to owner","status":"passed","title":"Case Z: re-entry cannot self-promote role to owner","duration":82.71289999999863,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AA: re-entry cannot inject rankId, displayRank, or invitedByUid","status":"passed","title":"Case AA: re-entry cannot inject rankId, displayRank, or invitedByUid","duration":128.83350000000064,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AB: re-entry cannot alter ownerUid","status":"passed","title":"Case AB: re-entry cannot alter ownerUid","duration":78.64059999999881,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AC: re-entry cannot manipulate memberCount (arbitrary jump or missing increment)","status":"passed","title":"Case AC: re-entry cannot manipulate memberCount (arbitrary jump or missing increment)","duration":106.51529999999912,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AD: re-entry cannot bypass archived Club","status":"passed","title":"Case AD: re-entry cannot bypass archived Club","duration":72.52590000000055,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AE: request -> withdraw -> request again succeeds","status":"passed","title":"Case AE: request -> withdraw -> request again succeeds","duration":83.8744000000006,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AF: join -> leave -> join again succeeds","status":"passed","title":"Case AF: join -> leave -> join again succeeds","duration":98.41259999999966,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AG: arbitrary field injection rejected on re-entry","status":"passed","title":"Case AG: arbitrary field injection rejected on re-entry","duration":107.33269999999902,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AH: non-timestamp type rejected on re-entry","status":"passed","title":"Case AH: non-timestamp type rejected on re-entry","duration":102.6286,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AI: anonymous and unauthenticated callers cannot re-enter","status":"passed","title":"Case AI: anonymous and unauthenticated callers cannot re-enter","duration":121.12930000000051,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AJ: cross-user re-entry rejected","status":"passed","title":"Case AJ: cross-user re-entry rejected","duration":82.23630000000048,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AK: root Club piggyback mutation rejected during re-entry","status":"passed","title":"Case AK: root Club piggyback mutation rejected during re-entry","duration":133.96540000000095,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","MotorSignal Club Foundation and Membership Security Rules","CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF)"],"fullName":"Social Architecture Security Rules MotorSignal Club Foundation and Membership Security Rules CLUB-2C.2: Membership Re-Entry Attack Matrix (Cases A - AF) Case AL: blocking parity: mutually blocked rider rejected on re-entry matching initial join","status":"passed","title":"Case AL: blocking parity: mutually blocked rider rejected on re-entry matching initial join","duration":114.81199999999808,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 1. Legacy GroupRides: create and update without clubId or with explicit null","status":"passed","title":"1. Legacy GroupRides: create and update without clubId or with explicit null","duration":178.5792999999976,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 2. Club affiliation create authorization: owner/admin allowed; members, non-members, archived clubs denied","status":"passed","title":"2. Club affiliation create authorization: owner/admin allowed; members, non-members, archived clubs denied","duration":549.4510000000009,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 3. Club affiliation immutability: cannot add, clear, or change clubId on existing rides","status":"passed","title":"3. Club affiliation immutability: cannot add, clear, or change clubId on existing rides","duration":202.9799000000021,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 4. Club Admin management authority: allowed planned metadata when scheduled; dedicated cancellation; underway/terminal restrictions","status":"passed","title":"4. Club Admin management authority: allowed planned metadata when scheduled; dedicated cancellation; underway/terminal restrictions","duration":381.66219999999885,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 5. Terminal-ride security hardening: completed and canceled parent rides cannot be mutated","status":"passed","title":"5. Terminal-ride security hardening: completed and canceled parent rides cannot be mutated","duration":253.70959999999832,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 6. Live-location privacy: Club membership or admin role NEVER grants live_presence access","status":"passed","title":"6. Live-location privacy: Club membership or admin role NEVER grants live_presence access","duration":337.217099999998,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 7. Point-read authorization and list privacy: active club members can point-read; blocks deny point-read; broad club list query is denied","status":"passed","title":"7. Point-read authorization and list privacy: active club members can point-read; blocks deny point-read; broad club list query is denied","duration":450.04320000000007,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 8. Club Admin and Owner governance listing and point-reading: active admins can point-read peer-admin rides and list their club rides; foreign admin, member, and non-member listing denied","status":"passed","title":"8. Club Admin and Owner governance listing and point-reading: active admins can point-read peer-admin rides and list their club rides; foreign admin, member, and non-member listing denied","duration":420.9550999999992,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J01: Non-member Dave CANNOT request to join club-affiliated ride","status":"passed","title":"SEC-J01: Non-member Dave CANNOT request to join club-affiliated ride","duration":272.48779999999897,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J02: Active Club Member Charlie CAN requestToJoin official club ride (single-doc create, no parent mutation)","status":"passed","title":"SEC-J02: Active Club Member Charlie CAN requestToJoin official club ride (single-doc create, no parent mutation)","duration":267.0529999999999,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J03: Requester Charlie CANNOT self-promote to accepted or inject self into accessUids","status":"passed","title":"SEC-J03: Requester Charlie CANNOT self-promote to accepted or inject self into accessUids","duration":249.1214,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J04: Requester CANNOT request when ride status is underway","status":"passed","title":"SEC-J04: Requester CANNOT request when ride status is underway","duration":203.38530000000173,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J05: Requester CAN create request when ride is currently at capacity (capacity enforced at approval)","status":"passed","title":"SEC-J05: Requester CAN create request when ride is currently at capacity (capacity enforced at approval)","duration":187.59899999999834,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J06: Requester Charlie CANNOT modify parent ride keys","status":"passed","title":"SEC-J06: Requester Charlie CANNOT modify parent ride keys","duration":201.13320000000022,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J07: Blocked rider Frank CANNOT request to join Alice ride","status":"passed","title":"SEC-J07: Blocked rider Frank CANNOT request to join Alice ride","duration":225.71960000000036,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J08: Approval cross-document atomicity (half-transactions fail, atomic batch succeeds)","status":"passed","title":"SEC-J08: Approval cross-document atomicity (half-transactions fail, atomic batch succeeds)","duration":274.869200000001,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J09: Active Club Admin Bob CAN approve pending request on official club ride via atomic batch","status":"passed","title":"SEC-J09: Active Club Admin Bob CAN approve pending request on official club ride via atomic batch","duration":211.27720000000045,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J10: Non-admin club member Charlie CANNOT approve requests","status":"passed","title":"SEC-J10: Non-admin club member Charlie CANNOT approve requests","duration":205.64709999999832,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J11: Approval denied if ride is underway","status":"passed","title":"SEC-J11: Approval denied if ride is underway","duration":187.56300000000192,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J12: Approval denied if ride would exceed capacity","status":"passed","title":"SEC-J12: Approval denied if ride would exceed capacity","duration":238.27030000000013,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J13: Approval denied if requester is no longer an active member (eve_removed)","status":"passed","title":"SEC-J13: Approval denied if requester is no longer an active member (eve_removed)","duration":183.4520999999986,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J14: Approval denied if requester is mutually blocked with organizer (frank)","status":"passed","title":"SEC-J14: Approval denied if requester is mutually blocked with organizer (frank)","duration":236.99789999999848,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J15: Organizer Alice CAN decline pending request (single doc on participant, zero parent writes)","status":"passed","title":"SEC-J15: Organizer Alice CAN decline pending request (single doc on participant, zero parent writes)","duration":177.46459999999934,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J16: Active Club Admin Bob CAN decline pending request on official club ride (single doc, zero parent writes)","status":"passed","title":"SEC-J16: Active Club Admin Bob CAN decline pending request on official club ride (single doc, zero parent writes)","duration":213.77980000000025,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J17: Requester Charlie CAN cancel own pending request (requested -> left) (single doc, zero parent writes)","status":"passed","title":"SEC-J17: Requester Charlie CAN cancel own pending request (requested -> left) (single doc, zero parent writes)","duration":179.306700000001,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J18: Non-organizer participant Charlie leaving accepted ride cross-document atomicity","status":"passed","title":"SEC-J18: Non-organizer participant Charlie leaving accepted ride cross-document atomicity","duration":236.03050000000076,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J19: Organizer Alice CAN remove accepted participant via atomic batch","status":"passed","title":"SEC-J19: Organizer Alice CAN remove accepted participant via atomic batch","duration":224.3161,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J20: Active Club Admin Bob CAN remove accepted participant from official club ride via atomic batch","status":"passed","title":"SEC-J20: Active Club Admin Bob CAN remove accepted participant from official club ride via atomic batch","duration":184.44490000000224,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J21: Moderator CANNOT remove the ride organizer","status":"passed","title":"SEC-J21: Moderator CANNOT remove the ride organizer","duration":228.22450000000026,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J22: Open club ride join enforces active club membership and cross-document binding","status":"passed","title":"SEC-J22: Open club ride join enforces active club membership and cross-document binding","duration":230.2479999999996,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J23: Club Admin Bob CAN point-read pending participant documents","status":"passed","title":"SEC-J23: Club Admin Bob CAN point-read pending participant documents","duration":206.98879999999917,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J24: Ordinary accepted participant Charlie CANNOT point-read pending requester docs of others","status":"passed","title":"SEC-J24: Ordinary accepted participant Charlie CANNOT point-read pending requester docs of others","duration":216.84020000000237,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25)"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 9. Club GroupRide Join Workflow and Moderation Security Rules (SEC-J01 - SEC-J25) SEC-J25: Fail-closed status: Ride with missing or invalid status fails mutations","status":"passed","title":"SEC-J25: Fail-closed status: Ride with missing or invalid status fails mutations","duration":219.2517000000007,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-F01: Request-to-join rejects unexpected fields (isAdmin: true)","status":"passed","title":"SEC-F01: Request-to-join rejects unexpected fields (isAdmin: true)","duration":169.8920999999973,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-F02: Request-to-join rejects unexpected fields (location / telemetry)","status":"passed","title":"SEC-F02: Request-to-join rejects unexpected fields (location / telemetry)","duration":155.42819999999847,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-F03: Open join rejects arbitrary extra fields","status":"passed","title":"SEC-F03: Open join rejects arbitrary extra fields","duration":152.8113000000012,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-F04: Organizer invitation rejects arbitrary extra fields","status":"passed","title":"SEC-F04: Organizer invitation rejects arbitrary extra fields","duration":187.4455999999991,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-F05: Legitimate production-shaped create succeeds with all allowed fields","status":"passed","title":"SEC-F05: Legitimate production-shaped create succeeds with all allowed fields","duration":233.45070000000123,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-U01: Moderator approval rejects userId mutation","status":"passed","title":"SEC-U01: Moderator approval rejects userId mutation","duration":142.78879999999845,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-U02: Moderator approval rejects role mutation","status":"passed","title":"SEC-U02: Moderator approval rejects role mutation","duration":166.16530000000057,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-U03: Moderator approval rejects createdAt mutation","status":"passed","title":"SEC-U03: Moderator approval rejects createdAt mutation","duration":182.32690000000002,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-U04: Moderator approval rejects arbitrary extra fields","status":"passed","title":"SEC-U04: Moderator approval rejects arbitrary extra fields","duration":154.1323999999986,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-U05: Moderator decline rejects arbitrary extra fields","status":"passed","title":"SEC-U05: Moderator decline rejects arbitrary extra fields","duration":172.34579999999914,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-U06: Requested withdrawal rejects role mutation or extra fields","status":"passed","title":"SEC-U06: Requested withdrawal rejects role mutation or extra fields","duration":173.1391999999978,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-U07: Accepted leave rejects userId mutation or extra fields","status":"passed","title":"SEC-U07: Accepted leave rejects userId mutation or extra fields","duration":147.50410000000193,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-U08: Moderator removal rejects arbitrary extra fields","status":"passed","title":"SEC-U08: Moderator removal rejects arbitrary extra fields","duration":157.316899999998,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-U09: Invitee accept rejects arbitrary extra fields","status":"passed","title":"SEC-U09: Invitee accept rejects arbitrary extra fields","duration":150.03340000000026,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-M01: Parent adds rider A (bob) while participant doc accepts rider B (charlie) FAILS","status":"passed","title":"SEC-M01: Parent adds rider A (bob) while participant doc accepts rider B (charlie) FAILS","duration":165.46860000000015,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-M02: Parent adds A (bob) with count +1, but participant A (bob) remains unaccepted and B (charlie) accepted FAILS","status":"passed","title":"SEC-M02: Parent adds A (bob) with count +1, but participant A (bob) remains unaccepted and B (charlie) accepted FAILS","duration":165.77390000000014,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-C01: Approval with count delta 0 (access added but count unchanged) FAILS","status":"passed","title":"SEC-C01: Approval with count delta 0 (access added but count unchanged) FAILS","duration":164.22350000000006,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-C02: Approval with count delta +2 (access added but count +2) FAILS","status":"passed","title":"SEC-C02: Approval with count delta +2 (access added but count +2) FAILS","duration":177.507999999998,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-C03: Accepted leave with count delta 0 (access removed but count unchanged) FAILS","status":"passed","title":"SEC-C03: Accepted leave with count delta 0 (access removed but count unchanged) FAILS","duration":141.18150000000242,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-C04: Accepted leave with count delta -2 (access removed and count -2) FAILS","status":"passed","title":"SEC-C04: Accepted leave with count delta -2 (access removed and count -2) FAILS","duration":160.60659999999916,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-C05: Requested withdrawal attempting parent count decrement FAILS","status":"passed","title":"SEC-C05: Requested withdrawal attempting parent count decrement FAILS","duration":148.0550000000003,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-P01: Active club admin Bob who is not an accepted participant CANNOT read or write live_presence","status":"passed","title":"SEC-P01: Active club admin Bob who is not an accepted participant CANNOT read or write live_presence","duration":197.90730000000258,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-DEL01: Hard-delete of accepted participant is BLOCKED for self and moderator","status":"passed","title":"SEC-DEL01: Hard-delete of accepted participant is BLOCKED for self and moderator","duration":178.97260000000097,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-DEL02: Hard-delete of organizer is BLOCKED for self and all callers","status":"passed","title":"SEC-DEL02: Hard-delete of organizer is BLOCKED for self and all callers","duration":200.9961000000003,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-DEL03: Hard-delete of non-accepted participant (invited/requested/declined/left/removed) is PERMITTED","status":"passed","title":"SEC-DEL03: Hard-delete of non-accepted participant (invited/requested/declined/left/removed) is PERMITTED","duration":232.54420000000027,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-DEC01: Invitee declining invitation with atomic accessUids removal SUCCEEDS","status":"passed","title":"SEC-DEC01: Invitee declining invitation with atomic accessUids removal SUCCEEDS","duration":209.88969999999972,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-DEC02: Decline batch attempting count decrement or extra access mutations FAILS","status":"passed","title":"SEC-DEC02: Decline batch attempting count decrement or extra access mutations FAILS","duration":215.87709999999788,"failureMessages":[],"meta":{}},{"ancestorTitles":["Social Architecture Security Rules","Club GroupRide Security Rules & Attack Matrix","10. Participant Schema Hardening & Adversarial Attacks"],"fullName":"Social Architecture Security Rules Club GroupRide Security Rules & Attack Matrix 10. Participant Schema Hardening & Adversarial Attacks SEC-BLK01: Organizer can decline join request from mutually-blocked user","status":"passed","title":"SEC-BLK01: Organizer can decline join request from mutually-blocked user","duration":233.5477000000028,"failureMessages":[],"meta":{}}],"startTime":1790829764748,"endTime":1790829793213.5476,"status":"passed","message":"","name":"C:/Users/Bill/Desktop/flutter-app/firebase/emulator-tests/firestore.rules.test.js"}]}