Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
f58a6e3
fix(acs-ci): use absolute gcloud path
robbycochran Sep 17, 2026
235a584
fix(acs-ci): pass provider token to gcloud
robbycochran Sep 17, 2026
78b76ab
fix(acs-ci): avoid workflow interpolation in token check
robbycochran Sep 17, 2026
5cc6dc4
docs(acs-ci): describe bounded GCS discovery
robbycochran Sep 17, 2026
0d494ef
feat(acs-ci): configure triage lookback window
robbycochran Sep 17, 2026
5bc1a4f
test(acs-ci): probe nightly GCS objects in preflight
robbycochran Sep 17, 2026
7fb8943
fix(acs-ci): avoid workflow interpolation in probe
robbycochran Sep 17, 2026
4e03525
test(acs-ci): probe GCS objects with JSON API
robbycochran Sep 17, 2026
90482c4
fix(acs-ci): read nightly build results from GCS
robbycochran Sep 17, 2026
627bbdb
fix(acs-ci): use direct GCS object endpoint
robbycochran Sep 17, 2026
0afa08e
cleanup(acs-ci): remove temporary object probe
robbycochran Sep 17, 2026
ec68895
fix(acs-ci): remove obsolete write permission
robbycochran Sep 17, 2026
54d0593
fix(acs-ci): configure gcloud storage auth once
robbycochran Sep 17, 2026
373442e
chore(acs-ci): keep default triage window
robbycochran Sep 17, 2026
1b8efb6
docs(acs-ci): use gcloud for nightly discovery
robbycochran Sep 17, 2026
09fd43b
docs(acs-ci): document bounded job discovery
robbycochran Sep 17, 2026
e3ea815
fix(acs-ci): add trusted gsutil compatibility wrapper
robbycochran Sep 17, 2026
e6de088
fix(acs-ci): export gsutil shim to agent shells
robbycochran Sep 17, 2026
c9621f8
fix(acs-ci): resolve latest build in GCS wrapper
robbycochran Sep 17, 2026
6838280
fix(acs-ci): precompute authoritative failure manifest
robbycochran Sep 18, 2026
a814c38
fix(acs-ci): avoid payload variable interpolation
robbycochran Sep 18, 2026
14af438
fix(acs-ci): handle first GCS listing page
robbycochran Sep 18, 2026
4d62c9b
fix(acs-ci): build manifest from public GCS API
robbycochran Sep 18, 2026
18c19a5
chore(acs-ci): capture manifest diagnostics
robbycochran Sep 18, 2026
9ce1bd6
fix(acs-ci): stage manifest diagnostics under sandbox
robbycochran Sep 18, 2026
09d8405
fix(acs-ci): select latest completed build
robbycochran Sep 18, 2026
56a997d
fix(acs-ci): use anonymous access for public GCS manifest
robbycochran Sep 18, 2026
c76497d
debug(acs-ci): record GCS list response shape
robbycochran Sep 18, 2026
b7abece
debug(acs-ci): inspect nested GCS listings
robbycochran Sep 18, 2026
778f1f8
fix(acs-ci): use GCS media download endpoint
robbycochran Sep 18, 2026
305bc28
fix(acs-ci): read GCS results from public object URLs
robbycochran Sep 18, 2026
340b128
fix(acs-ci): read results with gcloud storage
robbycochran Sep 18, 2026
0caa1c9
debug(acs-ci): bound GCS result reads
robbycochran Sep 18, 2026
bd166d7
fix(acs-ci): mark manifest rows as failures
robbycochran Sep 18, 2026
a900cf1
chore(acs-ci): remove temporary manifest diagnostics
robbycochran Sep 18, 2026
738941d
fix(acs-ci): read GCS artifacts through public API
robbycochran Sep 18, 2026
6e06f9c
fix(acs-ci): harden GCS compatibility reads
robbycochran Sep 18, 2026
c9c7ee1
fix(acs-ci): avoid workflow interpolation in preflight check
robbycochran Sep 18, 2026
0e06c99
fix(acs-ci): validate GCS wrapper paths
robbycochran Sep 18, 2026
e9f5abf
chore(acs-ci): remove preflight workflow
robbycochran Sep 18, 2026
996837b
fix(acs-ci): harden wrapper path validation
robbycochran Sep 18, 2026
6e225a2
Merge remote-tracking branch 'origin/main' into codex/acs-gcloud-abso…
robbycochran Sep 18, 2026
1c34e8f
refactor(acs-ci): keep GCS collection in ACS repo
robbycochran Sep 18, 2026
8f6c077
feat(acs-ci): run canonical triage flow in sandbox
robbycochran Sep 18, 2026
cb1e518
fix(acs-ci): avoid reserved OpenShell environment prefix
robbycochran Sep 18, 2026
6afa804
refactor(acs-ci): remove redundant task marker
robbycochran Sep 18, 2026
d8d0d5b
Merge remote-tracking branch 'origin/main' into codex/acs-collector-i…
robbycochran Sep 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 15 additions & 14 deletions tasks/acs-ci-nightly/README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
# ACS CI nightly

This task runs the read-only CI-failure portion of the ACS triage agent. It
queries the StackRox Prow result bucket, analyzes recent nightly
failures, and writes `ci-triage.json` without creating or updating Jira
issues.
This task runs the ACS repository's canonical `scripts/run-triage.sh` inside a
read-only OpenShell sandbox. The ACS repository owns the Prow/GCS lookup and
triage logic; this Harness bundle provides the generic OpenShell task wiring
and provider-backed connections. The task produces the normal triage report
without creating or updating Jira issues or posting to Slack.

The task is intentionally narrower than the full ACS triage workflow. It is a
first consumer contract for `acs-triage-agent`; Jira/community triage and
publication can be added as separate task bundles after this contract is
validated.
The task is intentionally read-only: Jira and community triage may inspect
their sources, while the Jira updater and Slack publication remain disabled.

## Contract

- Trigger: a trusted repository workflow chooses when to run it. The task has
no scheduler or GitHub Actions trigger of its own.
- Trusted inputs: the workflow document, `ACS_TRIAGE_REF`, `TRIAGE_RUN_URL`,
the gateway target, provider names, and the pinned `stackrox-ci` image.
- Untrusted input: the checked-out `stackrox/acs-triage-agent` source and the
Prow result data it reads. Neither is allowed to define providers, policy,
image, or commands.
- Task input: the checked-out `stackrox/acs-triage-agent` source owns the
collector and analysis logic. The source and Prow result data cannot change
the provider identities, policy, image, or workflow wiring defined here.
- External operations: public GitHub clone/fetch and read-only Prow GCS and
Jira queries. The task cannot push source, create or update Jira issues, or
publish to Slack.
- Output: `/sandbox/acs-triage-agent/artifacts/ci-triage.json`, downloaded to
the caller's output directory. The output is optional so partial diagnostics
can still be retained when analysis fails.
- Outputs: the normal ACS artifacts, including `ci-triage.json`,
`triage-report.md`, and `slack-summary.txt`, downloaded to the caller's
output directory. They are optional so partial diagnostics can still be
retained when analysis fails.
- Cleanup: the sandbox and host-side source staging are removed after outputs
are downloaded. Downloaded artifacts and any external reads remain with the
caller.
Expand All @@ -36,6 +36,7 @@ workflow:

- `vertex-claude-triage` and the matching `inference.local` route;
- `atlassian-triage-read`, configured for read-only Jira/Confluence access;
- `github-triage-read`, configured for read-only project and issue queries;
- `prow-gcs-read`, created from OpenShell's built-in `google-cloud` provider
profile and configured with gateway-managed Google service-account JWT
refresh for read-only access to the `test-platform-results-public` bucket.
Expand Down
11 changes: 6 additions & 5 deletions tasks/acs-ci-nightly/openshell/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ The task policy is an overlay for the shared `sandbox-stackrox-ci` image. The
image supplies the runtime tools; this directory supplies task-specific
network permissions and provider-profile metadata.

Import the Atlassian endpointless provider profile through trusted platform
bootstrap, then create matching read-only provider instances. Create
Import the Atlassian and GitHub endpointless provider profiles through trusted
platform bootstrap, then create matching read-only provider instances. Create
`prow-gcs-read` from OpenShell's built-in `google-cloud` profile and configure
its gateway-managed service-account JWT refresh. The Harness CLI only verifies
and attaches those instances; it does not provision or manage their
Expand All @@ -25,6 +25,7 @@ workflow or payload, and gcloud therefore uses the OpenShell-managed
short-lived provider token rather than a local account or service-account key.

The `github_git` policy is intentionally unauthenticated and read-only because
the StackRox repositories used by this task are public. The Atlassian and Prow
GCS provider instances remain gateway-owned; repository source being public
does not make those data sources public.
the StackRox repositories used by this task are public. GitHub project and
issue API calls use the gateway-managed `github-triage-read` provider. The
Atlassian and Prow GCS provider instances remain gateway-owned; repository
source being public does not make those data sources public.
2 changes: 2 additions & 0 deletions tasks/acs-ci-nightly/openshell/policy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ network_policies:
protocol: rest
tls: terminate
enforcement: enforce
credential_binding:
provider: github-triage-read
rules:
- allow:
method: GET
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Endpointless read-only GitHub profile for ACS triage.
# The provider instance is gateway-owned; no token belongs in this repository.
id: github-triage-read
display_name: GitHub ACS triage read-only
description: Gateway-managed GitHub credential for read-only project and issue queries
category: source_control
credentials:
- name: api_token
description: Gateway-managed GitHub token
env_vars: [GITHUB_TOKEN, GH_TOKEN]
required: true
auth_style: bearer
header_name: authorization
discovery:
credentials: [api_token]
binaries:
- /usr/bin/gh
- /usr/bin/curl

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This provider allows both gh and curl to use the GitHub token. While the network policy restricts operations to GET, allowing curl gives more freedom than just gh. If the intention is to only allow gh to use this token for triage, consider removing curl from the list of binaries to reduce the attack surface.

29 changes: 0 additions & 29 deletions tasks/acs-ci-nightly/workflow/CI-NIGHTLY.md

This file was deleted.

218 changes: 0 additions & 218 deletions tasks/acs-ci-nightly/workflow/gsutil

This file was deleted.

Loading
Loading