Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
19 changes: 13 additions & 6 deletions .github/scripts/select-eval-agents-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,11 @@ forge:
- src: env/github/triage.env
dest: /sandbox/workspace/.env.d/triage.env
gitlab:
policy: policies/gitlab/triage.yaml
providers:
- providers/gitlab-rw.yaml
openshell:
profiles:
- profiles/fullsend-gitlab-rw.yaml
skills:
- skills/gitlab-forge
- skills/issue-labels/gitlab
Expand Down Expand Up @@ -101,7 +105,6 @@ forge:
openshell:
profiles:
- profiles/fullsend-github-ro.yaml
policy: policies/github/review.yaml
pre_script: scripts/pre-review.sh
post_script: scripts/post-review.sh
skills:
Expand All @@ -112,7 +115,11 @@ forge:
- src: env/github/review.env
dest: /sandbox/workspace/.env.d/review.env
gitlab:
policy: policies/gitlab/review.yaml
providers:
- providers/gitlab-ro.yaml
openshell:
profiles:
- profiles/fullsend-gitlab-ro.yaml
pre_script: scripts/pre-review.sh
post_script: scripts/post-review.sh
skills:
Expand Down Expand Up @@ -340,11 +347,11 @@ cleanup_fixture "$FIXTURE"

run_test
FIXTURE="$(setup_fixture)"
RESULT=$(echo "policies/gitlab/triage.yaml" | "$SELECT_SCRIPT" --repo-root "$FIXTURE")
RESULT=$(echo "providers/gitlab-rw.yaml" | "$SELECT_SCRIPT" --repo-root "$FIXTURE")
if [[ "$RESULT" == "triage" ]]; then
pass "forge policy change selects agent"
pass "forge provider change selects agent"
else
fail "forge policy change selects agent (got: '$RESULT')"
fail "forge provider change selects agent (got: '$RESULT')"
fi
cleanup_fixture "$FIXTURE"

Expand Down
4 changes: 3 additions & 1 deletion FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,9 @@ agent prompt:
If the new option requires the agent to reach a new external service
from the sandbox:

- [ ] Update `policies/<forge>/<agent>.yaml` to allow the new host/port
- [ ] Add the new host/port to the appropriate profile under `profiles/`
(e.g., `fullsend-gitlab-ro.yaml`, `fullsend-gitlab-code.yaml`) or
create a new provider/profile pair under `providers/` and `profiles/`
- [ ] This is rare — most configuration changes don't need network
changes

Expand Down
4 changes: 2 additions & 2 deletions agents/prioritize.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ name: prioritize
description: Score an issue using the RICE framework (Reach, Impact, Confidence, Effort) and produce structured scores with reasoning.
skills:
- customer-research # extension point: provided by target repos, not built into this repo
# curl: required by GitLab forge. On GitHub, the network policy binary
# allowlist (policies/github/prioritize.yaml) excludes **/curl, preventing
# curl: required by GitLab forge. On GitHub, the profile binary
# allowlist (profiles/fullsend-github-ro.yaml) excludes **/curl, preventing
# it from making network requests even though it is granted here.
tools: Bash(gh,curl,jq), Skill
model: opus
Expand Down
4 changes: 2 additions & 2 deletions agents/triage.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ name: triage
description: Inspect an issue, assess information sufficiency, and produce a structured triage decision.
skills:
- issue-labels
# curl: required by GitLab and Jira forges. On GitHub, the network policy
# binary allowlist (policies/github/triage.yaml) excludes **/curl,
# curl: required by GitLab and Jira forges. On GitHub, the profile binary
# allowlist (profiles/fullsend-github-ro.yaml) excludes **/curl,
# preventing it from making network requests even though it is granted here.
tools: Bash(gh,curl,jq), Skill
model: opus
Expand Down
19 changes: 10 additions & 9 deletions docs/code.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,8 @@ need a custom image.
### Image requirements

A custom image must work within the constraints enforced by the sandbox
policy ([`policies/base.yaml`](../policies/base.yaml)), network
profiles ([`profiles/`](../profiles/)), and forge-specific policy
([`policies/gitlab/code.yaml`](../policies/gitlab/code.yaml) for GitLab):
policy ([`policies/base.yaml`](../policies/base.yaml)) and network
profiles ([`profiles/`](../profiles/)):

| Requirement | Detail |
|-------------|--------|
Expand Down Expand Up @@ -180,16 +179,18 @@ setup:
- **`ISSUE_URL`** replaces `GITHUB_ISSUE_URL` in scripts. The
per-forge env file (`env/github/code.env` or `env/gitlab/code.env`)
maps the platform-specific variable to `ISSUE_URL`.
- **Policy** is per-forge: `policies/base.yaml` (GitHub) or
`policies/gitlab/code.yaml` (GitLab). Custom harnesses using `base:`
composition should override at the forge level if needed.
- **Policy** is `policies/base.yaml` for all forges. Network access is
provided by profiles (`fullsend-gitlab-code` for GitLab). Custom
harnesses using `base:` composition should override at the forge level
if needed.
- **GitLab uses `curl`** instead of `gh` for API access. The GitLab
sandbox policy allows `curl` for `gitlab_api` endpoints only.
profile (`fullsend-gitlab-code`) allows `curl` for GitLab API
endpoints only.
- **GitLab host validation** — `forge_validate_issue_url` validates
the host against `CI_SERVER_HOST`, a GitLab CI predefined variable
set automatically by the runner. Validation fails closed when
`CI_SERVER_HOST` is not set. The network policy in
`policies/gitlab/code.yaml` must also be updated.
`CI_SERVER_HOST` is not set. The GitLab profile in
`profiles/fullsend-gitlab-code.yaml` must also be updated.

## Custom network policy

Expand Down
6 changes: 3 additions & 3 deletions docs/fix.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,9 @@ forge-specific skills provide the appropriate CLI recipes.

`gitlab-fix-ops.lib.sh` validates `GITLAB_HOST` against `CI_SERVER_HOST`,
a GitLab CI predefined variable set automatically by the runner. Validation
fails closed when `CI_SERVER_HOST` is not set. The network policy in
`policies/gitlab/fix.yaml` must also be updated to allow connections to
the host.
fails closed when `CI_SERVER_HOST` is not set. The GitLab profile in
`profiles/fullsend-gitlab-code.yaml` must also be updated to allow
connections to the host.

## Custom network policy

Expand Down
3 changes: 2 additions & 1 deletion docs/network-policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ defaults. If multiple agents need the same custom hosts, create a
separate override for each one. For example, the
[code](code.md) and [fix](fix.md) agents both use
[`policies/base.yaml`](../policies/base.yaml)
(both agents also have GitLab equivalents under `policies/gitlab/`).
(GitLab network access is provided by forge-level profiles such as
`fullsend-gitlab-code` and `fullsend-gitlab-ro`).

## Troubleshooting

Expand Down
2 changes: 1 addition & 1 deletion docs/prioritize.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ If you use `base:` composition to override `harness/prioritize.yaml`:
The GitLab forge operations validate `GITLAB_HOST` against
`CI_SERVER_HOST`, a GitLab CI predefined variable set automatically by
the runner. Validation fails closed when `CI_SERVER_HOST` is not set.
The network policy in `policies/gitlab/prioritize.yaml` must also be
The GitLab profile in `profiles/fullsend-gitlab-ro.yaml` must also be
updated to allow connections to the host.

## Custom network policy
Expand Down
11 changes: 6 additions & 5 deletions docs/retro.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,16 @@ setup:

- **`FULLSEND_FORGE`** is required. Set automatically by the harness
`forge.<platform>.env` section (`"github"` or `"gitlab"`).
- **Policy** is per-forge: `policies/base.yaml` (GitHub) or
`policies/gitlab/retro.yaml` (GitLab).
- **Policy** is `policies/base.yaml` for all forges. Network access is
provided by profiles (`fullsend-gitlab-ro` for GitLab).
- **GitLab uses `curl`** instead of `gh` for API access. The GitLab
sandbox policy allows `curl` for `gitlab_api` endpoints only.
profile (`fullsend-gitlab-ro`) allows `curl` for GitLab API
endpoints only.
- **GitLab host validation** — `forge_validate_originating_url`
validates the host against `CI_SERVER_HOST`, a GitLab CI predefined
variable set automatically by the runner. Validation fails closed
when `CI_SERVER_HOST` is not set. The network policy in
`policies/gitlab/retro.yaml` must also be updated.
when `CI_SERVER_HOST` is not set. The GitLab profile in
`profiles/fullsend-gitlab-ro.yaml` must also be updated.

## How the agent works

Expand Down
6 changes: 5 additions & 1 deletion harness/code.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,11 @@ forge:
GH_TOKEN: "${GH_TOKEN}"
FULLSEND_FORGE: github
gitlab:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[Critical] The forge-specific policy: line was removed but no replacement was added. This leaves the gitlab forge for the code agent with no sandbox policy (no filesystem, landlock, or process restrictions). A shared policies/base.yaml needs to be created with the common blocks and referenced here.

policy: policies/gitlab/code.yaml
providers:
Comment thread
maruiz93 marked this conversation as resolved.
- providers/gitlab-code.yaml
openshell:
profiles:
- profiles/fullsend-gitlab-code.yaml
skills:
- skills/gitlab-forge
host_files:
Expand Down
6 changes: 5 additions & 1 deletion harness/fix.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,11 @@ forge:
GH_TOKEN: "${GH_TOKEN}"
FULLSEND_FORGE: github
gitlab:
policy: policies/gitlab/fix.yaml
providers:
- providers/gitlab-code.yaml
openshell:
profiles:
- profiles/fullsend-gitlab-code.yaml
skills:
- skills/gitlab-forge
- skills/fix-review/gitlab
Expand Down
7 changes: 5 additions & 2 deletions harness/prioritize.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ timeout_minutes: 10

forge:
github:
policy: policies/github/prioritize.yaml
providers:
- providers/github-ro.yaml
openshell:
Expand All @@ -66,7 +65,11 @@ forge:
GH_TOKEN: "${GH_TOKEN}"
FULLSEND_FORGE: github
gitlab:
policy: policies/gitlab/prioritize.yaml
providers:
- providers/gitlab-ro.yaml
openshell:
profiles:
- profiles/fullsend-gitlab-ro.yaml
skills:
- skills/gitlab-forge
host_files:
Expand Down
6 changes: 5 additions & 1 deletion harness/retro.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,11 @@ forge:
GH_TOKEN: "${GH_TOKEN}"
FULLSEND_FORGE: github
gitlab:
policy: policies/gitlab/retro.yaml
providers:
- providers/gitlab-ro.yaml
openshell:
profiles:
- profiles/fullsend-gitlab-ro.yaml
skills:
- skills/gitlab-forge
- skills/retro-analysis/gitlab
Expand Down
7 changes: 5 additions & 2 deletions harness/review.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ forge:
openshell:
profiles:
- profiles/fullsend-github-ro.yaml
policy: policies/github/review.yaml
skills:
- skills/github-forge
- skills/issue-labels/github
Expand All @@ -99,7 +98,11 @@ forge:
FULLSEND_FORGE: github
REVIEW_RISK_ASSESSMENT_ENABLED: "true"
gitlab:
policy: policies/gitlab/review.yaml
providers:
- providers/gitlab-ro.yaml
openshell:
profiles:
- profiles/fullsend-gitlab-ro.yaml
skills:
- skills/gitlab-forge
- skills/issue-labels/gitlab
Expand Down
12 changes: 10 additions & 2 deletions harness/triage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,11 @@ forge:
GH_TOKEN: "${GH_TOKEN}"
FULLSEND_FORGE: github
gitlab:
policy: policies/gitlab/triage.yaml
providers:
- providers/gitlab-rw.yaml
openshell:
profiles:
- profiles/fullsend-gitlab-rw.yaml
skills:
- skills/gitlab-forge
- skills/issue-labels/gitlab
Expand All @@ -87,7 +91,11 @@ forge:
GITLAB_TOKEN: "${GITLAB_TOKEN}"
FULLSEND_FORGE: gitlab
jira:
policy: policies/jira/triage.yaml
providers:
- providers/jira-ro.yaml
openshell:
profiles:
- profiles/fullsend-jira-ro.yaml
skills:
- skills/jira-forge
- skills/issue-labels/jira
Expand Down
65 changes: 0 additions & 65 deletions policies/github/prioritize.yaml

This file was deleted.

Loading
Loading