From d97653f62b1aa5d2abdb4f9032de7a1a458e69c2 Mon Sep 17 00:00:00 2001 From: 0thernet Date: Fri, 4 Sep 2026 19:31:36 -0400 Subject: [PATCH] chore: adopt approval autonomy policy --- AGENTS.md | 3 +++ CLAUDE.md | 1 + 2 files changed, 4 insertions(+) create mode 100644 CLAUDE.md diff --git a/AGENTS.md b/AGENTS.md index 4a7133f..6b4f7c9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -52,6 +52,9 @@ - Follow `docs/publishing.md` for trusted npm publishing. Treat one protected `v*` tag on `main` as the complete release request. Restrict version-tag creation to organization administrators in a dedicated GitHub ruleset, and block tag updates and deletion for everyone in the separate immutable-tag ruleset. Keep checkout, install, build, test, pack, and artifact upload in a read-only job; only its minimal dependent publication job may request OIDC, and that job must rebind the downloaded exact artifact, every remote stable tag, and current `main` before `npm publish`. It must reject a candidate that is no longer the newest remote stable tag. Configure npm to trust only the calling `release.yml` workflow for direct publication and disallow traditional publishing tokens. After publication, let a read-only job compare the source and registry packages by exact extracted path, type, mode, size, and regular-file hashes before the write-scoped publisher creates the GitHub Release. Verify each transport's npm and registry integrity independently because compressed tarball bytes may vary across operating systems. A rerun may accept an existing npm version only when the later canonical comparison proves it matches. Recover a failed post-tag Release through the exact tag rerun or explicit current-`main` workflow dispatch; bind current helpers to reviewed Git blobs and invoke them by absolute path against the checked tagged tree, with tag-owned Bun config and environment loading disabled. Keep `npm pack --ignore-scripts` so recovery never runs a historical `prepack`. Never move a tag or replace an npm version. Finish and verify the npm package and matching non-draft immutable Latest Release before creating another tag. +- Treat the user's request to change this repository as standing authorization for routine task-owned commits, pushes, pull requests, merges, releases, deployments, and production verification after the repository's required validation, review, identity, and rollout gates pass. Do not ask for another confirmation at each delivery step. +- Use the repository's documented delivery workflow and preserve every runtime-enforced approval, branch protection, environment rule, safety policy, and final gate. Ask for user input only when delivery needs a material product decision, missing credentials or authority, an irreversibly destructive action outside task scope, or resolution of a release failure that cannot be handled safely and autonomously. +- Prefer short-lived repository workload identities such as OIDC trusted publishing, GitHub Apps, and scoped service accounts. Do not add long-lived personal tokens, weaken two-factor authentication, or bypass provider controls to eliminate an interactive prompt. Batch unavoidable human-gated production promotions into intentional stable releases while agents publish validated prerelease or beta channels through workload identities when the repository supports them. - Preserve useful reasoning fan-out, but avoid unnecessary checkout fan-out. Prefer subagents in the current task for bounded research, review, diagnosis, and focused checks when they can safely share one working tree; create a separate task or worktree only for independently deliverable divergent edits, an isolated verification tree, or a different execution environment. - Give each expensive focused validation command and external wait one owner. The integration owner reviews that evidence and runs the repository-required aggregate or final gate once after convergence. Reuse evidence only for the exact Git tree, command, lockfiles, toolchain, relevant environment, and validity period, and never to skip a required final integration, merge, release, deployment, or production-verification gate. - On Hraness development machines, use `$hra-local-efficiency` and the installed host scheduler for heavyweight top-level commands when available. Keep ordinary work in the compute lane; give authenticated browser/dev-server/Chromium work one `browser-auth` owner and Mac-only validation one `mac-native` owner. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md