Outcome
Upgrade the committed root Firebase CLI from 13.7.0 to the reviewed 15.24.0 release and migrate every repository-owned emulator gate from Java 17 to Java 21. Remove the two critical audit groups carried by the current CLI graph while preserving fail-closed demo-project isolation and exact-commit release validation.
Atomic P0 child of #105 and the SUPPLY-001 delivery sequence. Follows #453.
Invariants
- Every local and hosted Auth/Firestore/Functions emulator command remains bound to an explicit
demo-* project and may not acquire cloud or provider authority.
- CI and release validation use the Firebase CLI committed in
package-lock.json; no global or floating install is allowed.
- Java 21 is explicit in both emulator jobs and current engineering guidance; Java 17 must fail the new compatibility proof.
- No application, Rules, Functions domain behavior, Firebase configuration, provider setting, or production data changes.
- A dependency version bump alone is not completion: the exact lock graph, critical-advisory removal, emulator behavior, and workflow guards must be demonstrated.
Why now
Exact main at 8a5b0cc513bf72ff87d88d7956714184319a1be6 has 64 full-root audit findings, including two critical groups in the direct firebase-tools@13.7.0 development/CI/release chain:
protobufjs under firebase-tools -> @google-cloud/pubsub -> google-gax;
tar in the CLI/tooling extraction chain.
The root production-only audit is separately 2 high and 1 low; those lint/compiler findings remain for later atomic slices. Firebase CLI 15 requires Node 20+, already used by the repository, and drops emulator support for Java below 21. See the official Firebase CLI 15.0.0 release notes.
Scope
- Pin
firebase-tools exactly to 15.24.0 and regenerate only the necessary root lock graph with Node 20/npm 10 and lifecycle scripts disabled.
- Add a dependency-free RED test for the exact reviewed CLI identity, supported Node engine, patched critical paths, and Java-21-only workflow contract.
- Update the two hosted emulator jobs to Java 21 and strengthen static workflow/release tests so a downgrade or floating CLI fails.
- Update current engineering/operations/version evidence and the supply-chain slice record.
- Run clean-install, dependency-tree, full/production audit, Rules emulator, commerce emulator, frontend, Functions, SPA, workflow, release, artifact-safety, lint, YAML, and diagnostic-build checks.
- Compare clean baseline and upgraded build output; investigate every changed non-map artifact.
Acceptance criteria
Out of scope
- Firebase Admin/Functions SDK upgrades, CRA migration, remaining Babel/minimatch/brace-expansion findings, automated audit policy/SBOM, IAM/OIDC, branch protection, staging, deployment, provider configuration, or production testing.
npm audit fix --force, package overrides without a separately reviewed compatibility reason, real Firebase projects, real member/payment data, or provider credentials.
Dependencies and failure cases
Officer impact: None — this changes developer and hosted CI tooling only; no officer task or live surface changes.
Officer documentation: docs/officers/PUBLISH_AND_CHECK.md — records the internal CLI/Java boundary and confirms officers never install or run either tool.
Deployment evidence: Source and synthetic local/hosted checks only. No website publication, Firebase deployment, provider configuration, production data access, or live behavior is authorized by this issue.
Outcome
Upgrade the committed root Firebase CLI from 13.7.0 to the reviewed 15.24.0 release and migrate every repository-owned emulator gate from Java 17 to Java 21. Remove the two critical audit groups carried by the current CLI graph while preserving fail-closed demo-project isolation and exact-commit release validation.
Atomic P0 child of #105 and the SUPPLY-001 delivery sequence. Follows #453.
Invariants
demo-*project and may not acquire cloud or provider authority.package-lock.json; no global or floating install is allowed.Why now
Exact
mainat8a5b0cc513bf72ff87d88d7956714184319a1be6has 64 full-root audit findings, including two critical groups in the directfirebase-tools@13.7.0development/CI/release chain:protobufjsunderfirebase-tools -> @google-cloud/pubsub -> google-gax;tarin the CLI/tooling extraction chain.The root production-only audit is separately 2 high and 1 low; those lint/compiler findings remain for later atomic slices. Firebase CLI 15 requires Node 20+, already used by the repository, and drops emulator support for Java below 21. See the official Firebase CLI 15.0.0 release notes.
Scope
firebase-toolsexactly to 15.24.0 and regenerate only the necessary root lock graph with Node 20/npm 10 and lifecycle scripts disabled.Acceptance criteria
package.jsonresolves exactlyfirebase-tools@15.24.0;package-lock.jsonhas one reviewed direct CLI identity from the public npm registry.protobufjsortargroup fromfirebase-tools; critical count falls from 2 to 0 with no new critical/high production finding.Out of scope
npm audit fix --force, package overrides without a separately reviewed compatibility reason, real Firebase projects, real member/payment data, or provider credentials.Dependencies and failure cases
Officer impact: None — this changes developer and hosted CI tooling only; no officer task or live surface changes.
Officer documentation: docs/officers/PUBLISH_AND_CHECK.md — records the internal CLI/Java boundary and confirms officers never install or run either tool.
Deployment evidence: Source and synthetic local/hosted checks only. No website publication, Firebase deployment, provider configuration, production data access, or live behavior is authorized by this issue.