Context
scheduling-kit is public and should be a clean reusable package consumer of the shared JS/Bazel workflow. Current package metadata is consistent at 0.7.2, and CI publishes Bazel output from ./bazel-bin/pkg, but the devshell and release hardening are not yet enterprise-grade.
Gaps
flake.nix is present but no committed flake.lock was found in the audit clone.
- devshell does not clearly include Bazel/Bazelisk alongside the pinned Node/pnpm path.
- Bazel config is local-cache only; no documented remote-cache contract for contributors or CI canaries.
- workflows inherit secrets broadly and do not visibly declare least-privilege permissions, provenance, SBOM, or release concurrency.
Exit criteria
- committed lockfile or an explicit decision documenting why this public package does not lock the devshell
- documented
nix develop validation command for contributors
- Bazel cache config documents local fallback and CI remote-cache behavior without private topology
- publish workflow uses explicit permissions, release concurrency, npm provenance where supported, and package/SBOM attestation or a documented deferral
- public docs remain free of private runner topology
Context
scheduling-kitis public and should be a clean reusable package consumer of the shared JS/Bazel workflow. Current package metadata is consistent at0.7.2, and CI publishes Bazel output from./bazel-bin/pkg, but the devshell and release hardening are not yet enterprise-grade.Gaps
flake.nixis present but no committedflake.lockwas found in the audit clone.Exit criteria
nix developvalidation command for contributors