Skip to content

[MAIN-HEALTH-SEC-002] Restore dependency security gates - #3673

Draft
ootakazuhiko wants to merge 15 commits into
mainfrom
security/main-high-audit-recovery-20260730
Draft

[MAIN-HEALTH-SEC-002] Restore dependency security gates#3673
ootakazuhiko wants to merge 15 commits into
mainfrom
security/main-high-audit-recovery-20260730

Conversation

@ootakazuhiko

@ootakazuhiko ootakazuhiko commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements #3671 under parent program #3655.

Restores the dependency-security gates that currently block #3658 by removing every high/critical advisory reported by the repository-pinned pnpm 10.0.0 audit paths. Related historical remediation: #3591 and #2472.

Source / Scope

Audit counts

Audit path Initial Current local
pnpm audit --audit-level=moderate --json low=10, moderate=29, high=19, critical=0 low=10, moderate=18, high=0, critical=0
pnpm audit --prod --json low=3, moderate=15, high=12, critical=0 low=3, moderate=7, high=0, critical=0

The initial full audit contained 14 high advisory objects (7 direct / 7 transitive). Twelve reached a production dependency path; two were test/development-only advisory surfaces. pnpm metadata counted 19 full-tree and 12 production-tree high vulnerability occurrences.

High advisory inventory and remediation

Advisory Package / installed baseline Exposure Remediation
GHSA-45rx-2jwx-cxfr @opentelemetry/propagator-jaeger@2.8.0 production, transitive coordinated OTel 0.220.0 / 2.9.0 family update
GHSA-3jxr-9vmj-r5cp brace-expansion@1.1.12, 2.0.2 production + test/tooling, transitive brace-expansion@5.0.8 plus reviewed minimatch 3/5/9 export adapters
GHSA-mh99-v99m-4gvg brace-expansion@1.1.12, 2.0.2, 5.0.7 production + test/tooling, transitive same bounded-output v5 override and compatibility tests
GHSA-v2hh-gcrm-f6hx fast-uri@3.1.3 production, transitive compatible 3.1.4 override
GHSA-c96f-x56v-gq3h find-my-way@9.6.0 production, transitive Fastify 5.10.0 + compatible find-my-way@9.7.0 override
GHSA-52cp-r559-cp3m js-yaml@4.1.1, 3.14.2 production + test/tooling, direct/transitive direct 4.3.0; major-scoped overrides 3.15.0 / 4.3.0
GHSA-m99w-x7hq-7vfj next@15.5.18 production, direct patch update 15.5.21
GHSA-89xv-2m56-2m9x next@15.5.18 production, direct patch update 15.5.21
GHSA-p9j2-gv94-2wf4 next@15.5.18 production, direct patch update 15.5.21
GHSA-6g55-p6wh-862q postcss@8.4.31, 8.5.6 web production + build/test tooling, direct/transitive direct range update + package-wide 8.5.25 override
GHSA-r28c-9q8g-f849 postcss@8.4.31, 8.5.6 web production + build/test tooling, direct/transitive same 8.5.25 remediation
GHSA-f88m-g3jw-g9cj sharp@0.32.6, 0.34.5 Next production + Storybook tooling, transitive package-wide 0.35.3 override; web and Storybook builds exercised

The two js-yaml and three Next advisory IDs share package-level remediation rows above. No high/critical advisory is waived or filtered.

Historical comparison: the external dependency versions were not reintroduced by a reviewed dependency change after #3591 completion. The current high set is dominated by advisories published on 2026-07-20 through 2026-07-27 against versions that had remained in the lockfile.

Dependency changes

Compatible direct updates

  • Next / eslint-config-next 15.5.18 -> 15.5.21
  • Fastify ^5.9.0 -> ^5.10.0
  • js-yaml ^4.1.1 -> ^4.3.0 in root and spec compiler
  • PostCSS direct ranges ^8.4.35 -> ^8.5.18
  • OpenTelemetry direct family 0.219/2.8 -> 0.220/2.9

Reviewed overrides and compatibility patches

  • fast-uri=3.1.4, find-my-way=9.7.0, postcss=8.5.25
  • js-yaml@3=3.15.0, js-yaml@4=4.3.0
  • sharp=0.35.3
  • brace-expansion=5.0.8
  • minimatch 3.1.4 / 5.1.8 / 9.0.9 patches adapt legacy default/callable imports to the v5 named expand export without changing matching semantics

Licenses remain within the existing set: MIT, ISC, Apache-2.0, and BSD-3-Clause. Candidate engines cover repository-supported Node 20.11 and Node 22; the packages also declare Node 24-compatible ranges, while the repository itself continues to declare <23 and does not add Node 24 support in this PR.

Reachability limits

  • Jaeger propagation is opt-in, but the vulnerable package is in the production OTel tree and is remediated rather than waived.
  • Next, Fastify/find-my-way, js-yaml, PostCSS, sharp, fast-uri, and glob/brace-expansion have production paths.
  • Storybook, Jest/NYC/LHCI, ESLint, Vitest, and Stryker add development/test paths.
  • No claim that an advisory is unreachable is used to satisfy a gate.

Compatibility and CI hardening

  • The dependency compatibility suite covers brace-expansion/minimatch, Fastify routing, PostCSS processing, and sharp image materialization.
  • Verify Lite runs that suite as a required terminal evidence step and writes explicit success/failure status to its summary before returning a deferred failure.
  • Sparse validation and Docker/Podman build contexts materialize tracked patches before pnpm install.
  • Docker/Podman test images copy both packages/ and apps/ and use --frozen-lockfile; the Podman literal packages/* importer and non-frozen fallback were removed.
  • Spec-verification discovery excludes private .codex-local state and treats only ENOENT races as disappeared entries. Non-ENOENT failures, symlink rejection, and workspace path boundaries remain fail closed.
  • Security Analysis workflow_dispatch runs 30536784184, 30565345179, and 30565640328 exposed a caller/reusable-workflow concurrency collision: both security.yml and the called sbom-generation.yml used ${{ github.workflow }}-${{ github.ref }}. GitHub documents that a called workflow inherits the caller name in github.workflow, so the shared key can cancel the caller before reusable jobs materialize. The SBOM workflow now uses the caller-independent sbom-generation-${{ github.ref }} namespace, guarded by a workflow regression test.
  • Full CI run 30534618009 on prior head 40a2b799 exposed a pre-existing timeout-edge defect: the detector killed each healthy CI-fast observation at 90/120 seconds, and that head crossed the workflow's 10-minute boundary by about ten seconds. The detector now allows four minutes plus a bounded 30-second hard-stop grace, and both the primary and retry steps remain bounded at 15 minutes. Run count, flake threshold, failure classification, and continue-on-error policy are unchanged.

Validation

Completed locally on the final candidate:

  • repository-pinned pnpm 10.0.0 clean frozen install
  • full/prod audits: high=0, critical=0
  • final focused suites: 33/33 (dependency compatibility 14, verify-lite runner 5, summary writer 5, spec-verification profile 6, flake-timeout semantics 3)
  • focused classifier, quality parser, telemetry, Fastify/API suite: 61/61
  • spec compiler build
  • web type check and Next 15.5.21 production build
  • Storybook production build with PostCSS 8.5.25 / sharp 0.35.3
  • full repository test: 875 files passed, 1 skipped; 4091 tests passed, 5 skipped (4096 total)
  • pnpm -s run build, api:check, types:check, check:schemas, check:doc-consistency, verify:lite
  • enhanced quick flake observation: 3/3 completed, stable, 0.00% failures, 200.82 seconds locally
  • caller-safe reusable-workflow concurrency regression: 32/32
  • Context Pack validation, Boundary Map verification, actionlint 1.7.12
  • branch-wide git diff origin/main...HEAD --check

Lock and container reproducibility:

  • pnpm 10.0.0 actual-install regeneration in two independent clean git archive trees and independent stores: byte-identical
  • checked-in lock SHA-256: 3f7e150d399628a1a154a5d198658080ef2864b6433f24118419ef21e8091f36
  • third clean isolated-store frozen install: success
  • local Podman test-base image build: success, 11 workspace projects, frozen lockfile
  • exact-head Lockfile Reproducibility: https://github.com/itdojp/ae-framework/actions/runs/30536741319

The repository has no pnpm check script; its constituent build, type, schema, documentation, lint, test, and verify checks were executed explicitly.

Risk Classification

  • Risk: risk:high
  • Required dependency policy label: run-security
  • Test reproducibility label: enforce-testing
  • enforce-security is referenced by workflows but is not currently present in the repository label catalog; this PR does not create undeclared labels. Strict success is instead demonstrated by zero high/critical findings and the enforced workflow paths available on the exact head.

Rollback

Revert these commits in reverse order:

  1. 05897511 isolate reusable SBOM concurrency from the Security Analysis caller
  2. 30e827c8 let flake detection observe completed suites
  3. 40a2b799 align lock with real reproducibility install
  4. e35e690a tolerate volatile private profile state
  5. 363b6d29 normalize minimatch patch metadata
  6. ec6c544f install complete container test workspace
  7. 585498ce record dependency compatibility evidence
  8. ea13478e preserve verify-lite summary on compatibility failure
  9. c5807f71 package dependency patches in container builds
  10. d112551f enforce dependency compatibility in verify-lite
  11. 777cc03d include dependency patches in sparse validation
  12. b7a0f1c7 stabilize patched lockfile peer snapshots
  13. 5f2bc377 compatibility tests
  14. 4a371592 transitive overrides and minimatch adapters
  15. b4f09b02 direct dependency updates

No schema migration, data migration, or feature flag is involved.

Authority / CI

Remaining advisories and decisions

@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@ootakazuhiko ootakazuhiko added risk:high High risk PR (approval and gate labels required) run-security Run SBOM/Security jobs on PR enforce-testing Make testing DDD scripts strict/blocking run-ci-extended Run CI Extended suites for this PR security Security-related issue dependencies GenAI Repo Auditor label labels Jul 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Verification Summary

  • Traceability: 0 scenarios
    • Tests: 0 (0%)
    • Impl: 0 (0%)
    • Formal: 0 (0%)
Unlinked (top 5)
Linked examples (up to 3)
Hit basis (tests/formal) - Test hits: title=0 id=0 tag=0 - Formal hits: title=0 id=0 tag=0
- Model Check execution report: contract=model-check-report/v1 status=executed ok=true - Model Check (TLC): 5/5 (100%) completed modules ok
Non-OK completed modules (top 5)
- Alloy: 3/3 (100%) completed specs ok
Alloy non-OK completed executions (top 5)
- Contracts: schemas=true conditions=true machine=true - Contracts exec: parseIn=false pre=false post=false parseOut=false

@github-actions

Copy link
Copy Markdown
Contributor

CodeX Artifacts Summary

  • • Contract/E2E templates: 1 files (dir: tests/api/generated)
  • • Tests: PBT files=123, BDD features=0
  • • Formal specs: TLA=1, Alloy=1

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Verification Summary

  • Traceability: 0 scenarios
    • Tests: 0 (0%)
    • Impl: 0 (0%)
    • Formal: 0 (0%)
Unlinked (top 5)
Linked examples (up to 3)
Hit basis (tests/formal) - Test hits: title=0 id=0 tag=0 - Formal hits: title=0 id=0 tag=0
- Model Check execution report: contract=model-check-report/v1 status=executed ok=true - Model Check (TLC): 5/5 (100%) completed modules ok
Non-OK completed modules (top 5)
- Alloy: 3/3 (100%) completed specs ok
Alloy non-OK completed executions (top 5)
- Contracts: schemas=true conditions=true machine=true - Contracts exec: parseIn=false pre=false post=false parseOut=false

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Generate Artifacts Preview

Generated at: 2026-07-31T01:21:32.257Z

  • tests/api/generated: clean
  • artifacts/codex: clean
  • artifacts/spec: clean

@github-actions

Copy link
Copy Markdown
Contributor

KvOnce Trace Validation

  • OTLP: ✅ Success (Issues: 0)
  • NDJSON: ✅ Success (Issues: 0)

@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@github-actions

Copy link
Copy Markdown
Contributor

Cedar Policies (report-only)

Files: 1 (json=0, cedar=0)
Results: ok=0, ng=0
Tool: cedar-validator

Policy: report-only
Docs: docs/quality/cedar-quality-gates.md

@ootakazuhiko
ootakazuhiko requested a review from Copilot July 30, 2026 09:33
@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

AE-Spec Validation Report

Status: ✅ Passed
Timestamp: 2026-07-30 17:29:56 UTC
Branch: refs/pull/3673/merge
Commit: 83a0340

Validation Results

  • Compilation: AE-Spec → AE-IR successful
  • Linting: No critical issues found
  • Structure: All required fields present

AE-IR Summary

  • Version: 1.0.0
  • Entities: 1
  • API Endpoints: 2
  • Use Cases: 1
  • Invariants: 0

BDD Step Lint (non-blocking)

Usecases: 1

Issues: 1

  • Register User: no-validation — Usecase has no validation step

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Verification Summary

  • Traceability: 0 scenarios
    • Tests: 0 (0%)
    • Impl: 0 (0%)
    • Formal: 0 (0%)
Unlinked (top 5)
Linked examples (up to 3)
Hit basis (tests/formal) - Test hits: title=0 id=0 tag=0 - Formal hits: title=0 id=0 tag=0
- Model Check execution report: contract=model-check-report/v1 status=executed ok=true - Model Check (TLC): 5/5 (100%) completed modules ok
Non-OK completed modules (top 5)
- Alloy: 3/3 (100%) completed specs ok
Alloy non-OK completed executions (top 5)
- Contracts: schemas=true conditions=true machine=true - Contracts exec: parseIn=false pre=false post=false parseOut=false

@github-actions

Copy link
Copy Markdown
Contributor

CodeX Artifacts Summary

  • • Contract/E2E templates: 1 files (dir: tests/api/generated)
  • • Tests: PBT files=123, BDD features=0
  • • Formal specs: TLA=1, Alloy=1

@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Verification Summary

  • Traceability: 0 scenarios
    • Tests: 0 (0%)
    • Impl: 0 (0%)
    • Formal: 0 (0%)
Unlinked (top 5)
Linked examples (up to 3)
Hit basis (tests/formal) - Test hits: title=0 id=0 tag=0 - Formal hits: title=0 id=0 tag=0
- Model Check execution report: contract=model-check-report/v1 status=executed ok=true - Model Check (TLC): 5/5 (100%) completed modules ok
Non-OK completed modules (top 5)
- Alloy: 3/3 (100%) completed specs ok
Alloy non-OK completed executions (top 5)
- Contracts: schemas=true conditions=true machine=true - Contracts exec: parseIn=false pre=false post=false parseOut=false

@github-actions

Copy link
Copy Markdown
Contributor

CodeX Artifacts Summary

  • • Contract/E2E templates: 1 files (dir: tests/api/generated)
  • • Tests: PBT files=123, BDD features=0
  • • Formal specs: TLA=1, Alloy=1

@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Verification Summary

  • Traceability: 0 scenarios
    • Tests: 0 (0%)
    • Impl: 0 (0%)
    • Formal: 0 (0%)
Unlinked (top 5)
Linked examples (up to 3)
Hit basis (tests/formal) - Test hits: title=0 id=0 tag=0 - Formal hits: title=0 id=0 tag=0
- Model Check execution report: contract=model-check-report/v1 status=executed ok=true - Model Check (TLC): 5/5 (100%) completed modules ok
Non-OK completed modules (top 5)
- Alloy: 3/3 (100%) completed specs ok
Alloy non-OK completed executions (top 5)
- Contracts: schemas=true conditions=true machine=true - Contracts exec: parseIn=false pre=false post=false parseOut=false

@github-actions

Copy link
Copy Markdown
Contributor

CodeX Artifacts Summary

  • • Contract/E2E templates: 1 files (dir: tests/api/generated)
  • • Tests: PBT files=123, BDD features=0
  • • Formal specs: TLA=1, Alloy=1

@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Verification Summary

  • Traceability: 0 scenarios
    • Tests: 0 (0%)
    • Impl: 0 (0%)
    • Formal: 0 (0%)
Unlinked (top 5)
Linked examples (up to 3)
Hit basis (tests/formal) - Test hits: title=0 id=0 tag=0 - Formal hits: title=0 id=0 tag=0
- Model Check execution report: contract=model-check-report/v1 status=executed ok=true - Model Check (TLC): 5/5 (100%) completed modules ok
Non-OK completed modules (top 5)
- Alloy: 3/3 (100%) completed specs ok
Alloy non-OK completed executions (top 5)
- Contracts: schemas=true conditions=true machine=true - Contracts exec: parseIn=false pre=false post=false parseOut=false

@github-actions

Copy link
Copy Markdown
Contributor

CodeX Artifacts Summary

  • • Contract/E2E templates: 1 files (dir: tests/api/generated)
  • • Tests: PBT files=123, BDD features=0
  • • Formal specs: TLA=1, Alloy=1

@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@github-actions

Copy link
Copy Markdown
Contributor

CodeX Artifacts Summary

  • • Contract/E2E templates: 1 files (dir: tests/api/generated)
  • • Tests: PBT files=123, BDD features=0
  • • Formal specs: TLA=1, Alloy=1

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Verification Summary

  • Traceability: 0 scenarios
    • Tests: 0 (0%)
    • Impl: 0 (0%)
    • Formal: 0 (0%)
Unlinked (top 5)
Linked examples (up to 3)
Hit basis (tests/formal) - Test hits: title=0 id=0 tag=0 - Formal hits: title=0 id=0 tag=0
- Model Check execution report: contract=model-check-report/v1 status=executed ok=true - Model Check (TLC): 5/5 (100%) completed modules ok
Non-OK completed modules (top 5)
- Alloy: 3/3 (100%) completed specs ok
Alloy non-OK completed executions (top 5)
- Contracts: schemas=true conditions=true machine=true - Contracts exec: parseIn=false pre=false post=false parseOut=false

@ootakazuhiko

Copy link
Copy Markdown
Collaborator Author

CI recovery record

  • Occurrence: 2026-07-30 10:27 UTC
  • Source failure: Full CI run 30534618009, Test Suite (flake-detection) job 90845055788 on prior head 40a2b799
  • Root cause: the detector's 90/120-second process limits terminated otherwise healthy CI-fast observations; the third observation then crossed the workflow's 10-minute step boundary. The main baseline exhibited the same premature-kill behavior but happened to finish just below the boundary.
  • Remediation: commit 30e827c8 allows four minutes per observation plus a bounded 30-second hard-stop grace and aligns primary/retry workflow bounds at 15 minutes. Run count, threshold, failure status, and continue-on-error behavior were not weakened.
  • Focused evidence: 3 timeout-semantics tests; local enhanced-quick run completed 3/3 observations as stable, failure rate 0.00%.
  • Recovery: exact-head Full CI 30536741637 succeeded on 30e827c86eb68b4666ec15572c8148ba51dacb15; flake detection completed 3/3 observations as stable, failure rate 0.00%, with no force-kill event.

@github-actions

Copy link
Copy Markdown
Contributor

❓ Code Generation Drift Detection

Status:
Regeneration needed: No


Automated by AE-Framework Codegen

@github-actions

Copy link
Copy Markdown
Contributor

CodeX Artifacts Summary

  • • Contract/E2E templates: 1 files (dir: tests/api/generated)
  • • Tests: PBT files=123, BDD features=0
  • • Formal specs: TLA=1, Alloy=1

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Verification Summary

  • Traceability: 0 scenarios
    • Tests: 0 (0%)
    • Impl: 0 (0%)
    • Formal: 0 (0%)
Unlinked (top 5)
Linked examples (up to 3)
Hit basis (tests/formal) - Test hits: title=0 id=0 tag=0 - Formal hits: title=0 id=0 tag=0
- Model Check execution report: contract=model-check-report/v1 status=executed ok=true - Model Check (TLC): 5/5 (100%) completed modules ok
Non-OK completed modules (top 5)
- Alloy: 3/3 (100%) completed specs ok
Alloy non-OK completed executions (top 5)
- Contracts: schemas=true conditions=true machine=true - Contracts exec: parseIn=false pre=false post=false parseOut=false

@ootakazuhiko

Copy link
Copy Markdown
Collaborator Author

Exact-head Security workflow verification — blocked by #3672

The contradictory workflow result in run 30536784184 was reproduced twice before changing source:

All materialized jobs were success/skipped, while the reusable SBOM jobs were absent and the workflow concluded failure. The root cause was a caller/reusable-workflow concurrency collision: both workflows used the caller-derived github.workflow value in the same concurrency key.

Fix commit: 058975117e87b30c223d0b6c0f9eddd12810319b

  • sbom-generation.yml now uses a caller-independent sbom-generation-<github.ref> key.
  • A regression test rejects github.workflow in this reusable workflow's concurrency namespace.
  • Focused workflow test: 32/32.
  • Full local repository test: 875 files passed, 1 skipped; 4091 tests passed, 5 skipped.
  • Full/prod dependency audits remain high=0, critical=0.
  • Full CI, Quality Gates DoD, Lockfile Reproducibility, PR Security Analysis, and PR SBOM all succeed on the exact fix head.

Post-fix trusted runs prove that reusable SBOM generation and its enforced dependency analysis now execute and succeed:

Both overall runs still conclude failure because Container Security hits crun: unknown version specified before the first Dockerfile RUN command on hosted image ubuntu24/20260726.254.1. This is the exact open scope of #3672 and reproduced independently in eastus2 and eastus.

The current goal prohibits starting #3672. Therefore two workflow-level trusted successes cannot yet be obtained. PR #3673 remains Draft and must not be merged until #3672 is authorized/completed and the trusted Security Analysis path succeeds twice.

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Verification Summary

  • Traceability: 0 scenarios
    • Tests: 0 (0%)
    • Impl: 0 (0%)
    • Formal: 0 (0%)
Unlinked (top 5)
Linked examples (up to 3)
Hit basis (tests/formal) - Test hits: title=0 id=0 tag=0 - Formal hits: title=0 id=0 tag=0
- Model Check execution report: contract=model-check-report/v1 status=executed ok=true - Model Check (TLC): 5/5 (100%) completed modules ok
Non-OK completed modules (top 5)
- Alloy: 3/3 (100%) completed specs ok
Alloy non-OK completed executions (top 5)
- Contracts: schemas=true conditions=true machine=true - Contracts exec: parseIn=false pre=false post=false parseOut=false

@github-actions

Copy link
Copy Markdown
Contributor

CodeX Artifacts Summary

  • • Contract/E2E templates: 1 files (dir: tests/api/generated)
  • • Tests: PBT files=123, BDD features=0
  • • Formal specs: TLA=1, Alloy=1

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 058975117e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

# A reusable workflow inherits the caller name in github.workflow. Keep this
# namespace independent from the caller's workflow-level concurrency key so
# the reusable invocation cannot cancel its own caller.
group: sbom-generation-${{ github.ref }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Separate standalone and reusable SBOM concurrency

When a standalone SBOM run and the reusable SBOM job overlap on the same ref—for example, a main push or /run-security-dispatch while the scheduled/manual security.yml call is running—both now use this identical repository-wide concurrency group. Because cancel-in-progress is enabled, the newer invocation cancels the other; cancelling the reusable invocation also leaves the parent Security Analysis run without its SBOM result. Include the invocation context or run identity in this namespace while keeping it distinct from the caller's own group.

AGENTS.md reference: AGENTS.md:L22-L22

Useful? React with 👍 / 👎.

@ootakazuhiko
ootakazuhiko marked this pull request as draft July 31, 2026 02:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies GenAI Repo Auditor label enforce-testing Make testing DDD scripts strict/blocking risk:high High risk PR (approval and gate labels required) run-ci-extended Run CI Extended suites for this PR run-security Run SBOM/Security jobs on PR security Security-related issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants