AGENTS.md@.github · git:20261005.b9b9eff · 2026-10-05 · sha256 e4a4452b42481840

AGENTS.md@.github git:20261005.b9b9effA

Immutable. This exact content never changes and is served at /api/v1/blob/e4a4452b42481840.

# CI and Release Automation Instructions

These instructions apply to `.github/**` and supplement the repository root `AGENTS.md`.

## Boundary

Workflow and repository-control changes are policy changes. They can affect branch protection,
security posture, dependency trust, release identity, provenance, registries, and public artifacts.

Read these before material changes:

- `docs/REPOSITORY_GOVERNANCE.md`
- `docs/RELEASE_POLICY.md`
- `docs/RELEASE_PROCESS.md`
- `docs/RELEASE_VERIFICATION.md`
- `docs/release-ci-runbook.md`
- `docs/security-architecture.md`

## Required-check integrity

Required status names are repository interfaces.

- Keep the protected `quality (24)` context stable unless branch protection is intentionally
  migrated and verified in the same change.
- Before renaming, deleting, or path-filtering an entire required workflow/job, verify how the live
  `main` ruleset resolves the check.
- Avoid configurations that leave branch protection waiting forever for a required context that no
  longer runs.
- Do not use `continue-on-error`, exclusions, or trigger narrowing to conceal a repository-owned
  test, audit, packaging, security, or release failure.

External telemetry is different from repository-owned validation. The current policy keeps local
Vitest coverage thresholds and report validation merge-critical while Codecov upload telemetry is
non-blocking. Do not reverse that policy accidentally through workflow refactoring.

## Permissions and untrusted input

- Use least-privilege `permissions` at workflow and job scope.
- Keep checkout credentials disabled unless a reviewed mutation requires them.
- Do not expose secrets to untrusted fork code or interpolate untrusted event data into shell
  commands without a safe boundary.
- Preserve separation between untrusted validation and privileged publication.
- Keep GitHub Actions SHA-pinned; do not replace immutable pins with floating tags for convenience.

## Security and dependency automation

Do not weaken:

- CodeQL/Semgrep/static analysis;
- Dependency Review and repository dependency-audit policy;
- secret scanning/hygiene;
- workflow security checks;
- container/image security where configured;
- runtime/dependency pin parity.

An external scanner outage is not evidence that repository security policy should be bypassed.
Record the external failure separately from repository-owned gate results.

## Release and publication

Release workflows are privileged supply-chain code.

Preserve:

- exact source/tag/channel identity;
- stable vs prerelease channel separation;
- immutable version/tag expectations;
- npm provenance/trusted publication requirements;
- SBOM generation and retention;
- GitHub attestation/provenance evidence;
- extension artifact identity;
- GHCR exact/channel tag semantics;
- stable MCP Registry promotion rules;
- post-publication verification and recovery semantics.

Do not replay a previously successful publication mutation merely to repeat verification. Follow the
documented recovery path.

Do not repoint immutable release tags, silently replace released assets, or publish from an
unverified source revision.

## Workflow maintenance

When workflow behavior changes:

- update the corresponding policy/runbook documentation and repository-policy tests when required;
- preserve stable artifact names/evidence contracts consumed by downstream jobs or release tooling;
- keep scheduled/advisory automation distinct from genuinely merge-critical validation;
- prefer reusable workflow/composite-action boundaries only when they clarify ownership rather than
  hiding critical execution flow.

## Validation

For workflow changes, run the repository's local hook/security tooling applicable to GitHub Actions,
then at minimum:

```bash
pnpm format:check
pnpm verify:fast
```

Before handoff or PR creation, run `pnpm verify`.

A YAML parser passing is not enough. Validate GitHub Actions semantics, permissions, required-check
behavior, and any release/security contract affected by the change.

## Definition of done

A CI/release change is complete only when workflow syntax, security linting, required-check behavior,
permissions, evidence/artifact contracts, release identity, and documentation agree.