SIGN IN SIGN UP

fix(functions): defer secret access granting to release phase to prevent SA 404 race condition (#10983)

* fix(functions): defer secret access granting to release phase to prevent SA 404 race condition

### Description
Refactors secret access permission granting during Cloud Functions deployment:
- Refactors ensure.secretAccess into ensure.secretsAccessDelta (to calculate secret-to-service-account mappings), ensure.checkSecretAccess (for dry-run output), and ensure.grantSecretAccess (to grant IAM permissions per secret).
- Attaches secretAccessPlan to CodebasePlan in planner.ts.
- In prepare.ts, computes secretsAccessDelta and runs checkSecretAccess only during --dry-run. Added explicit comments noting that actual grants take place in release.
- In fabricator.ts, enqueues grantSecretAccess execution after grantNewRoles() runs (ensuring service accounts are created first) with retryPredicates: [isTransientError, isServiceAccount404] to gracefully handle GCP IAM propagation delays.

### Scenarios Tested
- Ran unit test suite covering executor.spec.ts, ensure.spec.ts, planner.spec.ts, fabricator.spec.ts, and lifecycle.spec.ts (182 passing).
- Verified npm run lint:changed-files and npm run build.

### Sample Commands
- firebase deploy --only functions
- firebase deploy --only functions --dry-run

* refactor(functions): remove obsolete ensure.secretAccess wrapper function

* fix(functions): cleanup unused variables and format files

* refactor(functions): convert secret access functions to options object parameters
T
Thomas Bouldin committed
c5e739bade803ecaf58c7446b62a395309c1961b
Parent: f8db4bc
Committed by GitHub <noreply@github.com> on 8/26/2026, 5:08:04 AM