feat(list): --process-templates and --process-functions flags; fix list instances --upload auth @aknysh (#2363)
## what- Added
--process-templatesand--process-functionsCLI flags (andATMOS_PROCESS_TEMPLATES/ATMOS_PROCESS_FUNCTIONSenv vars) to everyatmos listsubcommand that processes stack manifests:list instances,list components,list metadata,list sources,list stacks. Defaults aretrue, matchingatmos describe affected/atmos describe stacks/atmos describe component. - Clarified the flag descriptions that used to conflate YAML functions with Go template functions.
--process-templatestoggles Go templates (includingatmos.Component(...));--process-functionstoggles YAML functions (!terraform.state,!terraform.output,!store,!aws.*, …). - Fixed the underlying
atmos list instances --uploadhang in CI: per-component auth resolution ininternal/exec/describe_stacks_component_processor.gowas gated onprocessYamlFunctionsonly, so the template-only path (atmos.Component(...)inside Go templates) ranterraform initwith an emptyAuthContextagainst remote backends and failed withNo valid credential sources found. Guard now fires when either templates or YAML functions will run. - Refactored the per-component auth resolver for testability: extracted
shouldResolvePerComponentAuth(...)predicate,resolveComponentAuthManager(...)method, and an injectablecomponentAuthManagerResolverfield ondescribeStacksProcessorso the decision can be exercised without running real OIDC/STS. - Threaded the two flags through
InstancesCommandOptions/MetadataOptionsinpkg/list/and through both the matrix-format and tree-format branches oflist_instances.go, so every output path of the same invocation honors the same flag values. - Added three layers of regression coverage for each command that just got the flags (parser wiring, options struct, flag propagation to
ExecuteDescribeStacks) plus a dedicated auth-guard regression suite (TestShouldResolvePerComponentAuth,TestResolveComponentAuthManager6-row table,TestResolveComponentAuthManager_ResolverErrorFallsBackToParent). - Documented the two flags on every affected
atmos listcommand page, added a blog post announcing the feature, and added a shipped milestone to the Discoverability & List Commands roadmap initiative. - Bumped Go modules to latest where compatible (aws-sdk-go-v2/service/s3 → 1.100.0, smithy-go → 1.25.1, anthropic-sdk-go → 1.38.0, hashicorp/terraform-exec → 0.25.1, posthog-go → 1.12.1, k8s.io/client-go → 0.36.0, plus many transitive indirects). Three transitive pins remain, now documented inline in
go.mod:sentry-go v0.45.1(cockroachdb/errors v1.12.0 still references the removedExtrafield),gocloud.dev v0.41.0(gomplate/v3 s3blob uses removedConfigProvider),hairyhenderson/go-fsimpl v0.3.1(transitive via the gocloud.dev pin).
why
atmos list instances --uploadwas broken in CI for any repo whose component sections callatmos.Component(...)inside Go templates with a stack-level default identity — the exact shape used by the Atmos Pro release workflow. Users reported the command failing withNo valid credential sources foundwhileatmos describe affected --uploadin the same workflow succeeded.- Root cause:
atmos.Component(...)is a Go template function, not a YAML function. The processor's per-component auth resolver assumed YAML functions were the only consumer ofinfo.AuthContextand gated itself onprocessYamlFunctions. The template path reads the sameAuthContextand shells out toterraform init+terraform output, so disabling per-component auth broke template-only invocations. - Users expected
atmos listflags to line up withatmos describeflags. They didn't: onlylist affected,list settings, andlist valueshad the two knobs. A user workflow actually relied on--process-functionsonlist instances(where it didn't exist), which produced anunknown flagerror and a confusing escape hatch. Adding the two flags everywhere the command processes stacks closes that gap. - The flag rollout intentionally defaults both flags to
truefor parity. Users who runatmos listlocally withouttofu/terraformon$PATHcan opt out with--process-functions=falseorATMOS_PROCESS_FUNCTIONS=false; the auth-guard fix above ensures thetrue, truedefault works end-to-end in CI. - Module update was due. The three remaining pins are annotated so the next
go get -u ./...pass doesn't trip over them blindly.
references
- Fix design doc: `docs/fixes/2026-04-24-list-instances-per-component-auth.md`
- Blog post: `website/blog/2026-04-24-list-process-flags.mdx`
- Roadmap milestone: `website/src/data/roadmap.js` (Discoverability & List Commands initiative)
- Previous related fix: `docs/fixes/2026-04-08-atmos-auth-identity-resolution-fixes.md` (Category A vs B caller split that this change builds on)
Summary by CodeRabbit
-
New Features
- Added --process-templates and --process-functions flags to list subcommands to control Go template vs YAML function processing (both default to enabled).
-
Bug Fixes
- Restored per-component authentication resolution when templates are processed, fixing upload failures in CI.
-
Documentation
- Updated CLI docs, added a blog post and roadmap entry describing the new flags and examples.
-
Tests
- Extensive new and updated unit/integration tests covering flag parsing, behavior permutations, and regressions.
-
Chores
- Updated NOTICE/license references, added missing license entries, bumped dependencies and example default version to 1.217.0.
Document CI statuses configuration options @goruha (#2362)
## what * Document CI statuses configuration optionswhy
- Improve documentation
Summary by CodeRabbit
- Documentation
- Added docs and example configuration for new CI post-commit status summary options: component, add, change, and destroy (flags default to true in the example).
- Clarified required permissions to enable these status checks (GitHub checks: write or a commit-status-scoped API token for GitLab).
🚀 Enhancements
test: increase test coverage in pkg/flags, pkg/filesystem, pkg/http, and pkg/function @[copilot-swe-agent[bot]](https://github.com/apps/copilot-swe-agent) (#2173)
- [x] Explore all affected files - [x] internal/exec/stack_processor_utils_test.go: Convert hardcoded path strings to filepath.Join (both test functions) - [x] pkg/filesystem/export_test.go: Add trailing period to inline comment on line 35 - [x] Build & test verification💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.
Summary by CodeRabbit
- New Features
- Bounded, configurable glob-pattern cache (TTL, max entries, empty-result toggle) with runtime metrics exposed via /debug/vars
- Safer GitHub auth handling with host allowlisting and Authorization stripping on cross-host redirects
- Bug Fixes
- Consistent non-nil empty-slice result for glob no-matches and improved cache correctness
- Documentation
- Added changelog and minimum Go toolchain guidance (go.mod → Go 1.26+)
- Tests
- Large suite of new tests across globbing, atomic writes, flags, and HTTP client
- Chores
- New test-race Makefile target (race detector + shuffled execution)