Skip to content

Commit 4aae8d1

Browse files
docs(release): Audit V2 Phase B (.github/) — 0 findings
23 files audited under .github/ (FUNDING.yml, 4 ISSUE_TEMPLATE files, PULL_REQUEST_TEMPLATE.md, dependabot.yml, 16 workflows). All clean across the 10 lenses. Key checks performed: L3 (credentials): only 3 distinct secrets referenced — SPLUNK_DEV_USERNAME, SPLUNK_DEV_PASSWORD (job-scoped in appinspect-api.yml per Phase 1.4), and built-in GITHUB_TOKEN. No third-party tokens, no secret values embedded. L4 (internal refs): only `main` branch referenced. No fingerprint of internal branch conventions, hosts, indexes, or Slack/Jira refs. L5 (stale): all actions pinned to current major versions (splunk/appinspect-api-action@v3.0.5, ossf/scorecard-action@v2.4.0, sigstore/cosign-installer@v3, etc.). No @main/@master pins. L6 (orphans): every workflow has documented trigger rationale in comments. codeql.yml + scorecard.yml + docs.yml correctly carry private-repo guards (`if: github.event.repository.private == false`) until Phase 3.4 flips public. e2e-full + a11y-audit + zap-baseline correctly schedule-only. L7 (maintainer paths): zero C:\Users\PC\ or /Users/PC/ matches. L8 (TODO/FIXME/XXX/HACK): zero hits across all workflows. release.yml specifically: line 52-58 publishes the customer-facing `cosign verify-blob` command with correct --certificate-identity-regexp for the RelativisticJet/wl_manager workflow identity and correct --certificate-oidc-issuer https://token.actions.githubusercontent.com. Phase 3.2 Sigstore E2E will exercise this exact command. Non-finding observation recorded: action pins are major-version-only (e.g., @v4) rather than 40-char SHA pins. OSSF Scorecard's "Pinned Dependencies" check will flag this post-public-flip. Recommendation to leave as-is for v1.0.0 and revisit if Scorecard score drops below target threshold (maintenance friction vs supply-chain-security trade-off). Cumulative open V2 findings unchanged: HIGH F-C3 + F-H2; MEDIUM F-M1 + F-M2 + F-M3; LOW F-M4 + F-L3. Phase C (Bucket A — ships in .spl) starts next. Doc-drift: passes (31 docs / build 660).
1 parent 8492eb1 commit 4aae8d1

1 file changed

Lines changed: 68 additions & 1 deletion

File tree

docs/PRE_PUBLIC_AUDIT.md

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,74 @@ No CRITICAL findings. The HIGH (F-H2) blocks Phase 3.8 but not
624624
Phase 3.2 or 3.4. The MEDIUM findings should land before Phase 3.2
625625
to keep the rc1 cut clean. The LOW (F-M4) is a release-time task.
626626

627-
#### Phase B — `.github/` (workflows + templates) — pending
627+
#### Phase B — `.github/` (23 tracked files, completed 2026-05-18)
628+
629+
**Files audited**:
630+
631+
- `.github/FUNDING.yml`
632+
- `.github/ISSUE_TEMPLATE/bug_report.md`, `config.yml`,
633+
`feature_request.md`, `question.md`
634+
- `.github/PULL_REQUEST_TEMPLATE.md`
635+
- `.github/dependabot.yml`
636+
- 16 workflows in `.github/workflows/`: `a11y-audit.yml`,
637+
`appinspect-api.yml`, `appinspect.yml`, `ci.yml`, `codeql.yml`,
638+
`docs.yml`, `e2e-full.yml`, `e2e-smoke.yml`, `integration-tests.yml`,
639+
`pip-audit.yml`, `release.yml`, `scorecard.yml`, `secret-scan.yml`,
640+
`semgrep.yml`, `validate-and-package.yml`, `zap-baseline.yml`.
641+
642+
**Verified clean across all 10 lenses**:
643+
644+
- **L3 (credentials)**: only 3 distinct secrets referenced:
645+
`SPLUNK_DEV_USERNAME` + `SPLUNK_DEV_PASSWORD` (in `appinspect-api.yml`,
646+
both job-scoped, both registered per Phase 1.4) and the built-in
647+
`GITHUB_TOKEN` (in `release.yml` for `gh release upload` and
648+
`secret-scan.yml` for gitleaks). No secret VALUES embedded. No
649+
third-party tokens (Slack, Datadog, etc.). All secret names are
650+
generic enough to not fingerprint internal infrastructure.
651+
- **L4 (internal refs)**: only `main` branch referenced. No
652+
fingerprint of internal branch conventions (`dev/`, `feature/`,
653+
`release/`). No internal hostnames or Splunk index names beyond
654+
what's documented in code.
655+
- **L7 (maintainer paths)**: zero `C:\Users\PC\` or `/Users/PC/`
656+
matches across all 23 files.
657+
- **L5 (stale content)**: action versions all pinned to major
658+
versions (no `@main` / `@master`). `splunk/appinspect-api-action@v3.0.5`,
659+
`ossf/scorecard-action@v2.4.0`, `sigstore/cosign-installer@v3`,
660+
`zaproxy/action-baseline@v0.14.0` — all current as of 2026-05.
661+
- **L6 (orphans)**: every workflow has documented trigger rationale
662+
in comments; `codeql.yml`, `scorecard.yml`, `docs.yml` correctly
663+
carry `if: github.event.repository.private == false` job-level
664+
guards until Phase 3.4 flips public.
665+
- **L8 (TODO/FIXME/XXX/HACK)**: zero hits across all workflows.
666+
- **L9 (consistency)**: trigger discipline aligns with
667+
PUBLIC_RELEASE_PLAN expectations — heavy workflows (e2e-full,
668+
a11y-audit, zap-baseline) are schedule-only + workflow_dispatch,
669+
PR-gating workflows (e2e-smoke, ci, integration-tests, semgrep,
670+
appinspect, validate-and-package, docs, secret-scan) trigger on
671+
push:main + pull_request.
672+
- **release.yml specifically** — comment block at line 52-58
673+
publishes the customer-facing `cosign verify-blob` command with
674+
correct `--certificate-identity-regexp` for the
675+
`RelativisticJet/wl_manager` workflow identity and correct
676+
`--certificate-oidc-issuer https://token.actions.githubusercontent.com`.
677+
Sigstore E2E (Phase 3.2) will exercise this exact command.
678+
679+
**Findings: 0 (zero) in Phase B.**
680+
681+
The closest thing to a finding is a minor "future hardening"
682+
observation, not a release-blocker:
683+
684+
> Action pins use major-version-only (`@v4`, `@v5`, `@v2`) rather
685+
> than full 40-char SHA pins. OSSF Scorecard's "Pinned Dependencies"
686+
> check will flag this once we flip public and Scorecard activates
687+
> in `scorecard.yml`. SHA-pinning is more supply-chain-secure but
688+
> adds maintenance friction (Dependabot has to bump SHAs instead of
689+
> tags). Recommend leaving as-is for v1.0.0 and revisiting if
690+
> Scorecard scores drop the project below a target threshold.
691+
692+
**Phase B summary**: 23 pass, 0 findings.
693+
694+
#### Phase C — Bucket A directories (ship in .spl) — pending
628695

629696
#### Phase C — Bucket A directories (ship in .spl) — pending
630697

0 commit comments

Comments
 (0)