Repository navigation
test(ci): guard telemetry OIDC permission drift - #97
imran-siddique merged 1 commit into
Conversation
Preserve current PyPI, npm, release-asset and Scorecard grants as a proposed source-only baseline for .github#54. Run the CLI in CI with hash-pinned test-only PyYAML and paired unittest controls. Signed-off-by: Srinivasa Consultants <78673153+dinakarjs@users.noreply.github.com>
|
🟡 Contributor Check: MEDIUM
Automated check by AgenTrust Contributor Check. |
noah-ing
left a comment
There was a problem hiding this comment.
Reviewed exact head c98d9fdfd0d7f88b49fb45c23ecd69b43ba4e9d1 as a source-only workflow OIDC permission baseline. The 10-workflow inventory preserves the four existing named grants. The focused suite passes 7/7; an independent mutation sweep rejected 54 grant additions/broadenings/removals and accepted 11 benign read-only edits. Python 3.10–3.13, TypeScript, actionlint, CodeQL, and changed-code fuzz checks are green. The single commit carries a DCO sign-off. I found no blocker in this bounded change. Live publishing environments and external trust bindings remain outside this source review.
|
@rajnisht7 routing this bounded source-only change to the recorded primary maintainer. Noah has independently approved exact head |
Later workflow edits can silently expand OIDC authority beyond the existing release and Scorecard jobs. This adds tools/check_workflow_oidc.py, runs it in the existing Python CI matrix, and proposes preserving exactly release.yml/publish-pypi, release.yml/publish-npm, release.yml/release-assets and scorecard.yml/analysis for maintainer review.
The guard inventories all 10 .yml/.yaml workflows. It rejects workflow-wide grants even when jobs shadow them, write-all at either scope (including allowed publishers), added/removed/renamed grants, malformed permission/workflow shapes and an empty inventory. Read-only inheritance remains valid. Existing publishing, attestation and Scorecard grants are unchanged; preserving a grant is not a determination that it is necessary. Release documentation and changelog record the bounded source-only contract.
PyYAML 6.0.3 is an explicit test-only dependency. The universal hash lock was regenerated while preserving every existing locked package/version; the only new lock entry is PyYAML. The guard is mandatory in CI rather than skipped when the parser is absent. No runtime dependencies or SDK/wire semantics change.
Validation from fresh hash-locked environments, with this checkout installed:
The first full local runs inherited an external OTEL_TRACES_SAMPLER=parentbased_traceidratio configuration, producing non-recording spans in existing exporter/propagation tests. Setting OTEL_TRACES_SAMPLER=always_on for the test processes made both complete suites pass without changing repository code. The focused guard tests passed before that adjustment too.
Hosted Python 3.11/3.13, TypeScript/artifact checks, CodeQL and actionlint remain required; no package publishing or live workflow dispatch performed. This continues agentrust-io/.github#54 after proposed WCM #210 and integrations #339 source guards. It does not verify live environment approvals, administrator bypass, deployment refs, trusted-publisher bindings or primary/backup operators, and does not close the parent tracker.
Literature and contribution boundary
These references explain the source-only scope. This merged change does not establish live environment protection, trusted-publisher configuration or backup-operator coverage, and does not close organization issue #54.