Skip to content

CI: hardening — PSScriptAnalyzer coverage, SHA-pinned actions, Go config-input coverage #692

Description

@mlorentedev

Severity: Med · Proposed priority: P2 · Audit IDs: C24, C31, C32

CI has coverage and supply-chain gaps that let whole classes of bug ship green.

C24 — PSScriptAnalyzer covers 4 of ~12 production .ps1. .github/workflows/ci.yml:57 lints only setup-windows.ps1, knowledge-crystallize.ps1, obs-cli.ps1, profile.ps1. No analyzer anywhere for scripts/utils.ps1 (the Set-StrictMode library every .ps1 dot-sources), dotfiles-sync.ps1, install-dotf.ps1, vault-maintenance-weekly.ps1, windows/*.ps1, paths.ps1. The vault's own "ps1 must be ASCII / PSSA fails CI on non-ASCII" rule is therefore unenforced (em dashes already sit in setup-windows.ps1/install-dotf.ps1 comments). Overlaps POLISH-003.

C31 — Go config inputs escape Go CI. cli.yml:5 path-filters to cli/**. A breaking edit to env-contract.json, secrets/registry.yaml, session-start-config.json, harness/manifest.json, or versions.conf — all parsed by Go — does not trigger go test; only a post-merge runtime failure surfaces it. Add those paths to the filter.

C32 — every GitHub Action pinned by moving tag, none by SHA. checkout@v5, github-script@v9, release-please-action@v4, add-to-project@v1.0.2, goreleaser-action@v6, action-shellcheck@2.0.0. A compromised moving tag runs with BITACORA_PAT (repo+project write) or RELEASE_TOKEN (contents+PR write) — full write + release forgery. Pin to SHA (Dependabot keeps them fresh).

Also worth folding in: the lint job shellchecks only ./scripts + setup-linux.sh, so git-hooks/*.sh and git-hooks/lib/*.sh (the GUARD-001 guard scripts) are never linted; and there is no actionlint on the workflows.

Source: docs/audits/codebase-audit-2026-07-06.md (C24, C31, C32).

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciCI workflows / runners

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions