Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
215 commits
Select commit Hold shift + click to select a range
b981861
test: disable tests flaky under parallel stress (#2611)
SDAChess Aug 4, 2026
0e9a44c
feat(build): add system CA root mode (#2324)
politerealism Aug 4, 2026
4d55265
test(server): close traced handler before span assertion (#2604)
krishicks Aug 4, 2026
d063751
docs: add experimental Bazel build commands to CONTRIBUTING.md (#2600)
rhuss Aug 4, 2026
5378055
feat(sandbox): honor OCI image working directories (#2530)
matthewgrossman Aug 4, 2026
490f66f
docs(cli): recommend providers for secrets (#2603)
krishicks Aug 4, 2026
8c7dd14
perf(net): set TCP_NODELAY on latency-sensitive TCP hops (#2220)
purp Aug 4, 2026
5548405
feat(credentials): add provider credential storage drivers (#2437)
sjenning Aug 5, 2026
f383ee1
feat(mise): run fmt as part of pre-commit (#2621)
krishicks Aug 5, 2026
284da54
docs(readme): add theme-aware banner (#2619)
johnnygreco Aug 5, 2026
c5f8366
feat(sdk/go): add Go SDK foundation, types, and sandbox client (A) (#…
rhuss Aug 5, 2026
85d992f
RFC 0005: Sandbox proxy egress adapter model (#2155)
johntmyers Aug 5, 2026
d2c44b0
fix(supervisor-middleware): configure HTTP/2 keepalive on middleware …
letv1nnn Aug 5, 2026
0c7e59a
fix(deps): bump russh, jsonwebtoken, tar and npm lint deps (#2617)
alangou Aug 6, 2026
d85339d
build(bazel): add credential driver targets (#2649)
SDAChess Aug 7, 2026
8ddd98c
feat(bazel): build vm driver and pull runtime from Github (#2650)
SDAChess Aug 7, 2026
4cb77a9
fix(e2e): separate Podman Machine loopback listeners (#2622)
matthewgrossman Aug 7, 2026
5e2f0d1
fix(policy): prevent implicit authorization inheritance (#2499)
shiju-nv Aug 9, 2026
f48b05e
fix(gateway-interceptors): apply tls-native-roots for HTTPS intercept…
sauagarwa Aug 10, 2026
a8bdebe
fix(sandbox): acknowledge unchanged policy revisions (#2557)
NaveCohenMonday Aug 10, 2026
3ebed4e
fix(gator): allow same-sha state nudges (#2681)
johntmyers Aug 10, 2026
0120535
feat(proxy): bind static credentials to provider endpoints (#2510)
johntmyers Aug 10, 2026
815615f
fix(gateway-interceptors): configure connect timeout and HTTP/2 keepa…
letv1nnn Aug 10, 2026
1709619
chore(ci): disable telemetry in internal test runs (#2648)
matthewgrossman Aug 10, 2026
c825b1f
perf(supervisor-middleware): remove body clones from local dispatch (…
shiju-nv Aug 10, 2026
3e19155
feat(build): add glibc-static supervisor libc variant (#2682)
EmilienM Aug 11, 2026
0310cbe
fix(sbom): detect sha256 hashes in expression-form licenses in needs_…
mesutoezdil Aug 11, 2026
2f96c53
feat(gateway,cli): windows compilation support (#2496)
araza008 Aug 11, 2026
dd2b4e3
feat(cli): warn when --env values look like credentials (#2655)
letv1nnn Aug 11, 2026
d22859c
fix(gator): separate review budget from approval gate (#2704)
johntmyers Aug 12, 2026
f24a5ae
perf(supervisor-network): avoid reparsing native policy input (#2654)
shiju-nv Aug 12, 2026
245fe27
fix(dev): separate Podman Machine loopback listeners (#2725)
krishicks Aug 12, 2026
0f8fad2
feat(sandbox): add stop and start operations (#2653)
sjenning Aug 13, 2026
cd4d905
ci(cargo-deny): add dependency audit with cargo-deny (#2677)
Ygnas Aug 13, 2026
8dc55e2
feat(sdk/go): complete Go SDK with domain clients, auth, and hardenin…
rhuss Aug 13, 2026
403dc75
chore(deps): bump jdx/mise-action from 4.2.0 to 4.2.4 (#2716)
dependabot[bot] Aug 13, 2026
496659c
chore(deps): bump Swatinem/rust-cache from 2.9.1 to 2.9.2 (#2670)
dependabot[bot] Aug 13, 2026
35fb27e
feat(sdk): add TypeScript SDK (@nvidia/openshell-sdk) (#2122)
maxdubrinsky Aug 13, 2026
c549823
docs(telemetry): split reports into one file per period and add Jul 2…
kirit93 Aug 13, 2026
c4b500a
feat(helm): cert-manager external issuer + OpenShift passthrough Rout…
jhjaggars Aug 14, 2026
7547edc
docs(issues): Center reports on user stories (#2615)
krishicks Aug 14, 2026
7a7b3ee
chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 (#2746)
dependabot[bot] Aug 14, 2026
d0c6dc3
feat(kubernetes): support corporate upstream proxy (#2633)
loveRhythm1990 Aug 14, 2026
1074566
chore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 (#2747)
dependabot[bot] Aug 14, 2026
f12f3ef
fix(macos): restore Homebrew sandbox callbacks (#2739)
drew Aug 14, 2026
bdabb54
fix(security): authenticate extension services (#2638)
pimlock Aug 14, 2026
ae40cf6
fix(gateway): respect OPENSHELL_BIND_ADDRESS in dev task (#2756)
krishicks Aug 14, 2026
3581b9e
CODEOWNERS: remove maxamillion and add sjenning (#2755)
sjenning Aug 14, 2026
59479f4
feat(k8s): add namespace-per-workspace support (RFC 0011 Phase 3) (#2…
derekwaynecarr Aug 14, 2026
44bf0df
feat(middleware): inspect WebSocket text messages (#2477)
pimlock Aug 14, 2026
d51a653
feat(driver-podman): add userns config (#2562)
giuseppe Aug 15, 2026
88cf35e
fix(bazel): enable driver extraction in core (#2769)
SDAChess Aug 17, 2026
6ebf10e
fix(build): preserve version prefixes in mise lockfile (#2778)
alangou Aug 17, 2026
5d9b0f0
fix(inference): prepend publisher prefix for Vertex non-Anthropic mod…
politerealism Aug 17, 2026
4dfeff5
docs(rfc): add RFC 0013 native Windows support via MXC (#2071)
shailendra-nv Aug 17, 2026
6340d18
Update docs.yml to remove warning banner (#2687)
kirit93 Aug 17, 2026
877ddba
fix(supervisor-network): canonicalize dot-segments before policy eval…
alangou Aug 17, 2026
2115b0c
fix(driver-podman): compile container spec on macOS (#2789)
elezar Aug 18, 2026
dc374e8
chore(sdk/go): remove coverage.out from tracking (#2774)
rhuss Aug 18, 2026
600bbae
feat(ocsf): emit AI inference events via ai_operation profile on ApiA…
zanetworker Aug 18, 2026
8d67250
fix(providers): keep refresh credential handles stable (#2780)
mrunalp Aug 18, 2026
0d708d6
fix(policy): gate uninspected credentialed endpoints (#2493)
alangou Aug 19, 2026
3a16012
fix(cli): prompt for fresh OIDC login after logout (#2773)
grs Aug 19, 2026
2eb0880
feat(cli): support OIDC device authorization grant for headless login…
jhjaggars Aug 19, 2026
998db04
feat(policy): allow non-root sandbox identities (#2785)
drew Aug 19, 2026
6e90f3d
feat(providers): store refresh credentials in credential drivers (#2801)
mrunalp Aug 19, 2026
b7078dc
chore(gitignore): add Pi agent state (#2813)
krishicks Aug 19, 2026
c90fd64
fix(cli): reuse sandbox provisioning display (#2816)
sjenning Aug 19, 2026
701382d
fix(podman): wait for container stop completion (#2820)
pimlock Aug 20, 2026
7909fb5
refactor(compute): unify gateway restart reconciliation (#2743)
drew Aug 20, 2026
9505ca5
chore: remove Bazel build support (#2840)
SDAChess Aug 20, 2026
4c5fce6
refactor(compute): support external driver parity (#2744)
drew Aug 20, 2026
4d7f402
feat(policy): establish direct TCP egress foundation (#2711)
johntmyers Aug 20, 2026
0c6a344
feat(network): add policy DNS correlation store (#2713)
johntmyers Aug 20, 2026
2c0adf4
feat(podman): export driver traces over OTLP (#2782)
krishicks Aug 20, 2026
b2ea818
feat(network): enable Docker and Podman policy DNS and transparent TC…
johntmyers Aug 20, 2026
9ae3760
refactor(compute): register compiled drivers (#2786)
drew Aug 20, 2026
ef29680
feat(sandbox): add canonical main process (#2726)
drew Aug 20, 2026
6c34a3c
fix(sandbox): stabilize canonical main process tests (#2854)
drew Aug 20, 2026
0300e6d
fix(sandbox): order sidecar provider updates by generation (#2849)
johntmyers Aug 20, 2026
dfb06e6
test(e2e): align detached sandbox assertions (#2856)
drew Aug 21, 2026
40f8229
feat(compute): add standalone first-party drivers (#2822)
drew Aug 21, 2026
82f62fa
docs(rfc): define stable release policy (#2695)
drew Aug 21, 2026
20d2e86
fix(sandbox): reject stale exit during restart (#2857)
drew Aug 21, 2026
3be2cd8
fix(helm): preflight Agent Sandbox APIs (#2867)
elezar Aug 21, 2026
de4c1fe
fix(test-guest): support RPM installs with DNF5 (#2864)
elezar Aug 21, 2026
56c45a9
fix(providers): honor configured profile sources in sandboxes (#2878)
drew Aug 21, 2026
7adc05a
feat(supervisor): expose sandbox name to middleware request context (…
letv1nnn Aug 21, 2026
679fe4c
fix(policy): validate the applicable advisor candidate (#2850)
johntmyers Aug 21, 2026
6c38646
feat(dev): add dedicated gateway:podman task (#2880)
krishicks Aug 21, 2026
2f7fb65
chore(docs): relicense Fern stylesheet under Apache 2.0 (#2882)
drew Aug 21, 2026
e3dc011
fix(provider): isolate unbound static credentials (#2862)
prekshivyas Aug 23, 2026
40d1b48
feat(provider): support for SPIFFE backed token exchange (#1970)
grs Aug 24, 2026
7fc6138
docs(agent): warn on missing workflow labels (#2815)
krishicks Aug 24, 2026
905e99a
feat(build): add Nix-native Linux toolchains (#2875)
SDAChess Aug 24, 2026
e457974
feat(docker): export driver traces over OTLP (#2851)
krishicks Aug 24, 2026
d7e137f
fix(proxy): normalize trailing-dot CONNECT hosts before policy evalua…
letv1nnn Aug 24, 2026
0a1f246
feat(sandbox,podman): trust corporate CA for https:// proxies and int…
feloy Aug 24, 2026
72b9c4a
test(e2e): pin direct podman calls to harness socket on macOS (#2909)
russellb Aug 24, 2026
aa848f1
fix(core): fall back to podman CLI when no API socket is found (#1858)
russellb Aug 25, 2026
4fe5b0f
fix(ci): allow pasta to receive Podman stop signals (#2900)
elezar Aug 25, 2026
4558839
fix(python): remove CLI from wheel (#2321)
SDAChess Aug 25, 2026
e2ca9cb
fix(test-guest): pin HVF runtime dependencies (#2924)
elezar Aug 25, 2026
fb6610d
feat(build): embed auditable Rust dependency metadata (#2734)
alangou Aug 25, 2026
38a9493
fix(gateway): let Ready win over stale Suspended in derive_phase (#2933)
russellb Aug 25, 2026
5206bc5
feat(sdk): add OAuth Client Credentials support to SDKs (#2907)
sjenning Aug 25, 2026
18ce13b
feat(providers): expose actionable OAuth refresh failures (#2887)
mrunalp Aug 25, 2026
74015b9
fix(sandbox): terminate sandbox when proxy accept loop exits unexpect…
politerealism Aug 25, 2026
0e79653
feat(tui): show persisted guidance on rejected policy chunks (#2908)
vyncint Aug 25, 2026
4d16a2a
feat(gator): improve review output and launch compatibility (#2896)
johntmyers Aug 25, 2026
60a9b4d
fix(ssh): add EMFILE backoff and exit notification to SSH accept loop…
politerealism Aug 25, 2026
a715a90
fix(vm): bump gvproxy to v0.8.9 (#2901)
elezar Aug 26, 2026
4e99209
fix(docker): trace standalone driver over OTLP (#2923)
elezar Aug 26, 2026
8be8b62
ci(vouch): close approved request discussions (#2929)
elezar Aug 26, 2026
8d16a59
ci(branch-checks): run Rust checks in Nix shells (#2876)
SDAChess Aug 26, 2026
c399342
feat(dev): unify local Kubernetes gateway workflow (#2914)
krishicks Aug 26, 2026
572843b
docs(agents): clarify user-visible PR review feedback (#2910)
krishicks Aug 26, 2026
d0dfb22
feat(kubernetes): export driver traces over OTLP (#2958)
krishicks Aug 26, 2026
0618ab0
fix(supervisor): log unmatched L7 route denials (#2916)
wtrep Aug 26, 2026
56088d0
fix(supervisor-network): distinguish absent policy binary from filesy…
letv1nnn Aug 26, 2026
bcd517b
feat(driver-mxc): native Windows MXC compute driver + server wiring (…
jamieknvidia Aug 27, 2026
9f88f8f
ci: remove rootless podman e2e lane (#2981)
elezar Aug 27, 2026
5544715
ci(stale): increase stale workflow processing budget (#2979)
elezar Aug 27, 2026
5f90c85
ci(security): add informational security checks (#2930)
alangou Aug 27, 2026
2335177
chore(deps): bump quinn-proto from 0.11.14 to 0.11.17 (#2986)
dependabot[bot] Aug 27, 2026
6e43a8b
chore(deps): bump google.golang.org/grpc in /sdk/go (#2985)
dependabot[bot] Aug 27, 2026
ca61ee3
feat(test-guest): add snap lifecycle reproduction harness (#2865)
elezar Aug 27, 2026
37072ee
feat(build): publish OCI SBOM and provenance attestations (#2836)
alangou Aug 27, 2026
981606d
ci: build release binaries with Nix (#2977)
SDAChess Aug 27, 2026
f68867b
feat(gateway): identify gateways in exported traces (#2647)
krishicks Aug 27, 2026
197b413
fix(dev): harden local cluster and gateway startup (#2993)
krishicks Aug 27, 2026
1e9ee47
fix(server): suppress expected session errors on shutdown (#2994)
krishicks Aug 27, 2026
f795a15
test(network): avoid DNS socket bind race (#2996)
krishicks Aug 27, 2026
7eed8da
chore(deps): bump jdx/mise-action from 4.2.4 to 4.3.0 (#2970)
dependabot[bot] Aug 27, 2026
d1155aa
fix(ci): normalize macOS binary dependencies (#3006)
SDAChess Aug 28, 2026
4c9437b
ci(codeql): run nightly scans on main (#3007)
alangou Aug 28, 2026
65745a0
feat!(ci): remove daily minor release automatic workflow (#3008)
SDAChess Aug 28, 2026
74654ac
fix(kubernetes): recover compute driver watches (#2842)
jhjaggars Aug 28, 2026
57c7f74
fix(cli): include provider identity metadata for interceptors on upda…
slopp Aug 28, 2026
69a05eb
fix(sandbox): complete successful main processes (#2884)
drew Aug 29, 2026
883a1f0
fix(ci): preserve VM runtime embedding inputs (#3040)
SDAChess Aug 31, 2026
eb15e1a
feat(sandbox): add --no-login-shell to skip shell startup files on ex…
letv1nnn Aug 31, 2026
c27a3a3
fix(compute): recover Error-phase sandboxes on gateway startup (#2269)
r3v5 Aug 31, 2026
9b6d904
feat(compute): delegate sandbox authentication to drivers (#2968)
drew Aug 31, 2026
9d449ef
fix(cli): reject out-of-range durations instead of overflowing (#3044)
natedemoss Aug 31, 2026
4eaa105
docs: correct some comments and references (#3059)
krishicks Aug 31, 2026
22073fc
test: backfill coverage for OCSF logging (#3065)
krishicks Aug 31, 2026
5c541e1
fix(kubernetes): prevent stop-start relay race (#3064)
johntmyers Aug 31, 2026
8ffc6c2
fix(policy): compose advisor proposals with provider endpoints (#2935)
johntmyers Sep 1, 2026
8a13bc1
chore(deps): remove legacy rustls webpki path (#3013)
elezar Sep 1, 2026
bb70461
test(e2e): run conformance in gateway lanes (#2925)
elezar Sep 1, 2026
f7180c0
feat(ci): add Codex Security release qualification (#3087)
alangou Sep 1, 2026
e04638d
fix(cli): fail sandbox exec when the relay closes without an exit sta…
rootkiller6788 Sep 1, 2026
b143500
fix(podman): restore rootless workload SIGTERM shutdown (#3036)
elezar Sep 1, 2026
c8f1320
ci(release): publish prerelease artifacts (#3093)
SDAChess Sep 1, 2026
a4f9c76
fix(release): handle prerelease tag builds (#3094)
SDAChess Sep 1, 2026
d5742e0
feat(cli): add structured output to list commands (#3067)
mrunalp Sep 1, 2026
f54a7a6
fix(release): provide conformance binary to e2e (#3097)
SDAChess Sep 1, 2026
7ceea96
fix(policy): ignore advisor provenance during contract inference (#3069)
johntmyers Sep 1, 2026
b960125
fix(gateway): batch SSH session cleanup writes (#3000)
drew Sep 1, 2026
e508c16
fix(helm): honor empty clientCaSecretName for HTTPS-only mode (#2235)
lunarwhite Sep 1, 2026
4ef8423
fix(server): release driver-owned sandbox resources on out-of-band re…
politerealism Sep 1, 2026
a547dc9
fix(sandbox): reconcile early container exits (#3101)
johntmyers Sep 1, 2026
07df822
feat(providers): make profiles authoritative (#2962)
johntmyers Sep 1, 2026
11dd373
fix(cli): size auto-detected interactive exec terminals (#3084)
elezar Sep 1, 2026
07453f2
fix(cli): allow multiple provider profiles to be deleted (#3032)
grs Sep 1, 2026
5b925dd
feat(build): add defaults-without-telemetry feature alias (#2843)
russellb Sep 1, 2026
b4afcd8
fix(cli): suppress ANSI color when stdout is not a terminal (#3026)
mrunalp Sep 1, 2026
9ca19e6
refactor(compute): decouple gateway driver composition (#2823)
drew Sep 1, 2026
7b64c5c
fix(cli): continue multi-item deletes after failures (#3111)
grs Sep 1, 2026
cc4ded2
feat(helm): split gateway and workspace charts (#2643)
dhirajsb Sep 2, 2026
3c30abc
fix(tui): expose workspace switching from providers (#3115)
johntmyers Sep 2, 2026
2aa6a5f
chore(gator): adopt authoritative provider profiles (#3108)
johntmyers Sep 2, 2026
74960eb
feat(server): add sandbox templates (#2833)
grs Sep 2, 2026
fd9fc0a
fix(release): publish prerelease helm charts (#3126)
SDAChess Sep 2, 2026
06f0aa6
test(guest): consolidate rootless Podman provisioning (#3125)
elezar Sep 2, 2026
b92e9bd
ci: add Fedora conformance workflow (#3086)
SDAChess Sep 2, 2026
387aea0
fix(ci): use multi-arch Fedora image for RPM builds (#3130)
SDAChess Sep 2, 2026
857af42
feat(vm): support corporate HTTP forward proxy egress for microVM san…
feloy Sep 2, 2026
03003cd
fix(cli): require ANSI-capable terminal before colorizing (#3121)
mrunalp Sep 2, 2026
5021f23
fix(tui): replace alpha badges with version (#3114)
johntmyers Sep 2, 2026
8bc7955
feat(skills): separate public and contributor workflows (#2899)
johnnygreco Sep 2, 2026
5ab68a1
fix(go-sdk): prevent duplicate credential renewal (#3133)
johntmyers Sep 2, 2026
0f0c94b
fix(cli): preserve provider type on credential updates (#3109)
natedemoss Sep 2, 2026
1e1a8b5
test(e2e): keep lifecycle sandboxes running (#3128)
elezar Sep 2, 2026
3168f34
fix(vm): retry transient registry requests (#3134)
drew Sep 2, 2026
a6b757d
fix(compute): fence stale container exits during start (#3132)
drew Sep 2, 2026
bb090f1
ci: add branch check and test timeouts (#3139)
pimlock Sep 2, 2026
6c3980d
fix(middleware): drain websocket session end streams (#3143)
pimlock Sep 2, 2026
8e73f1d
fix(deps): remediate h2 advisory (#3085)
elezar Sep 2, 2026
172b65e
docs: fix first-network-policy sandbox lifecycle flow (#3140)
russellb Sep 2, 2026
43ca62e
chore(ci): remove obsolete Rust cache seeder (#3148)
pimlock Sep 2, 2026
5457905
fix(sdk-go): update Go IDNA dependencies (#3137)
johntmyers Sep 2, 2026
e64b035
feat(middleware): broaden HTTP header mutation authority (#3072)
pimlock Sep 2, 2026
64a858d
fix(ci): restore Codex Security scan execution (#3124)
alangou Sep 3, 2026
8d7db25
fix(snap): recover gateway after Docker connection (#2866)
elezar Sep 3, 2026
a046458
chore(deps): bump google.golang.org/grpc in /sdk/go (#3119)
dependabot[bot] Sep 3, 2026
487b265
test(conformance): add plan-driven continuity verification (#3107)
elezar Sep 3, 2026
b8903fd
feat(test-guest): allow copy mode overrides (#3091)
elezar Sep 3, 2026
5c0187a
feat(docs): fix Windows bundled-z3 build command in CONTRIBUTING.md (…
pkhodade-NV Sep 3, 2026
17171cd
refactor(otel): unify compute driver tracing (#2995)
krishicks Sep 3, 2026
ab98032
docs: add project maintainers (#3166)
johntmyers Sep 3, 2026
8719874
fix(driver-mxc): implement authenticate_sandbox trait method (#3158)
jeffmaury Sep 3, 2026
52b1d78
refactor(cli): extract provider commands into commands/provider modul…
varshaprasad96 Sep 3, 2026
08eac8c
fix(sandbox): detect an available login shell instead of hardcoding /…
akram Sep 3, 2026
7cc9551
feat(server): support EC and EdDSA keys in OIDC JWKS validation (#2593)
lunarwhite Sep 4, 2026
c93b2fa
docs(gateway-config): fix stale community sandbox image path (#2800)
lunarwhite Sep 4, 2026
b381138
docs(podman): document macOS socket path mismatch and dynamic lookup
gmenher Aug 4, 2026
685eff2
fix(podman): resolve macOS Podman socket dynamically
gmenher Sep 2, 2026
a5b37bf
chore: restore debug skill file
gmenher Sep 2, 2026
63d8f7f
chore: drop legacy debug skill path
gmenher Sep 2, 2026
e47bcf9
fix(podman): trim unrelated e2e changes
gmenher Sep 3, 2026
e1878b1
fix(e2e): harden shell array expansion
gmenher Sep 3, 2026
f841e74
chore: remove unrelated skill note
gmenher Sep 4, 2026
31fc1a4
ci: retrigger checks
gmenher Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
47 changes: 32 additions & 15 deletions .agents/skills/build-from-issue/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
name: build-from-issue
description: Given a GitHub issue number, plan and implement the work described in the issue. Supports direct user requests and unattended queue processing through the `agent:*` workflow labels. Includes tests, documentation updates, and PR creation. Trigger keywords - build from issue, implement issue, work on issue, build issue, start issue.
metadata:
internal: true
---

# Build From Issue
Expand All @@ -25,7 +27,9 @@ A direct request authorizes only what it says. A request to review or plan does

The two request labels remain human-only queue controls. Under **no circumstances** should this skill or any agent apply them, ask to apply them, or suggest automating their application.

Do not refuse a direct user request merely because its request label is absent. If direct work begins on an issue that was not already in the label-driven workflow, do not introduce `agent:in-progress` or `agent:pr-opened` solely for that invocation. If a matching request label is present, preserve the existing label transitions so unattended agents can track the workflow.
In direct mode, issue lifecycle and `agent:*` workflow labels are advisory rather than gates. Inspect the labels and warn the user about each expected label that is missing or any lifecycle label that indicates the normal workflow is incomplete, then continue with the requested phase. Do not ask the user to fix the labels first. A direct request does not change the issue's disposition or make the labels accurate; it only authorizes the requested work.

If direct work begins on an issue that was not already in the label-driven workflow, do not introduce `agent:in-progress` or `agent:pr-opened` solely for that invocation. If a matching request label is present, preserve the existing label transitions so unattended agents can track the workflow.

## Agent Comment Markers

Expand Down Expand Up @@ -59,11 +63,11 @@ Fetch issue + comments
├─ topic:security present?
│ → Route to review-security-issue or fix-security-issue; STOP
├─ Triage incomplete, awaiting information, or awaiting human disposition?
│ → Report the blocking state and STOP
├─ Direct mode + expected lifecycle or agent-workflow labels missing/incomplete?
│ → Warn which labels are missing or incomplete; continue with the requested phase
├─ state:accepted absent?
│ → Human has not accepted the issue; STOP
├─ Queue mode + triage incomplete, awaiting information, or awaiting human disposition?
│ → Report the blocking state and STOP
├─ No plan comment and no direct planning request and agent:plan-requested absent?
│ → No request for agent planning; STOP
Expand Down Expand Up @@ -109,13 +113,15 @@ If the issue is closed, report that and stop.

If `topic:security` is present, stop. General build agents must not plan or implement security issues. Route planning/review to `review-security-issue` and authorized remediation to `fix-security-issue`.

Stop before planning in any of these states:
In queue mode, stop before planning on `state:triage-needed` or `state:needs-info`, and stop on `state:validated` without roadmap placement. Require `state:accepted` or roadmap placement before queue work proceeds. If no plan exists, require `agent:plan-requested`; require `agent:implementation-requested` before queue-mode implementation.

In direct mode, inspect the same expected workflow state but do not stop because a lifecycle or agent-workflow label is absent or incomplete. Before continuing, warn the user with the specific discrepancy, for example:

> "Issue #42 is missing `state:accepted` or roadmap placement and `agent:implementation-requested`. Those labels are expected in the queued workflow, but your direct request authorizes implementation, so I am continuing without changing them."

- `state:triage-needed`: the issue has not been assessed; use `triage-issue`.
- `state:needs-info`: triage is waiting for evidence from the reporter.
- `state:validated`: triage is complete, but a human has not yet decided whether OpenShell should invest in the work.
If `state:triage-needed`, `state:needs-info`, or `state:validated` is present, name that state in the warning and explain what it normally means. Continue unless the issue lacks information that is actually necessary to perform the requested work; in that case, report the concrete missing information rather than treating the label itself as the blocker.

Next, require `state:accepted`. It records the human decision to pursue the work. If no plan exists, require either a direct user request for planning or the human-applied `agent:plan-requested` label before generating one. Record any roadmap association as sequencing context, but do not require one. Never add or remove `state:accepted`, either human request label, or the `roadmap` label.
Never add or remove `state:accepted`, either human request label, or the `roadmap` label.

## Step 2: Fetch and Classify Comments

Expand All @@ -140,7 +146,7 @@ Using the state machine above, determine what to do based on:
1. Whether a plan comment exists
2. Whether there are human comments newer than the last agent comment (plan or conversation)
3. Whether this is direct mode and which phase the user requested
4. Which disposition, roadmap, and agent-workflow labels are present (`state:accepted`, `agent:plan-requested`, `agent:plan-ready`, `agent:implementation-requested`, `agent:in-progress`, `agent:pr-opened`, and the `roadmap` label)
4. Which lifecycle and agent-workflow labels are present (`state:*`, `agent:plan-requested`, `agent:plan-ready`, `agent:implementation-requested`, `agent:in-progress`, and `agent:pr-opened`) and which discrepancies require a direct-mode warning

Follow the appropriate branch below.

Expand All @@ -160,7 +166,7 @@ Task tool with subagent_type="principal-engineer-reviewer"

In the prompt, instruct the reviewer to:

1. Read the issue description thoroughly and identify what needs to change in the codebase.
1. Read the issue's user story and identify what needs to change in the codebase. Treat reporter diagnostics or solution ideas as optional context, not as authoritative or current analysis.
2. Map the requirements to existing code — read the relevant source files.
3. Determine the **issue type** — one of: `feat` (new feature), `fix` (bug fix), `refactor`, `chore`, `perf`, `docs`.
4. Propose the minimal set of changes that satisfies the requirements.
Expand All @@ -174,6 +180,8 @@ In the prompt, instruct the reviewer to:
9. Assess **gateway config documentation impact** — if the change adds, removes, renames, or changes defaults for gateway TOML keys or driver-specific config options, the plan must include an update to `docs/reference/gateway-config.mdx`. If the change is surfaced through Helm or a compute-driver overview, also include `docs/reference/sandbox-compute-drivers.mdx` or the relevant deployment docs.
10. Assess **LSM compatibility** — if the change touches process identity, `/proc` filesystem access, binary execution, or inter-process visibility, flag whether it will behave differently on hosts running SELinux (enforcing) or AppArmor. In particular, tests that fork+exec into system binaries will fail on SELinux-enforcing hosts due to cross-label `/proc/<pid>/exe` access restrictions.

Perform this investigation against the current branch and current product behavior. If the issue contains earlier diagnostics, verify them rather than relying on them.

### A2: Post the Plan Comment

Post the plan as a comment on the issue. This is the **canonical plan comment** that will be edited in place as the plan evolves.
Expand Down Expand Up @@ -679,7 +687,7 @@ If the `agent:in-progress` label is present, the skill was previously started bu
User says: "Plan issue #42"

1. Fetch issue #42 — title: "Add pagination to dataset list endpoint"
2. Confirm `state:accepted` with no blocking triage state; the user's direct request authorizes planning even if `agent:plan-requested` is absent
2. Notice that `state:accepted` and `agent:plan-requested` are absent; warn that the issue does not match the queued workflow, then continue because the user directly requested planning
3. Fetch comments — no `🏗️ build-plan` marker found
4. Pass issue to `principal-engineer-reviewer` for analysis
5. Reviewer produces a plan: feat type, Medium complexity, 3 implementation steps, unit + integration tests needed
Expand Down Expand Up @@ -711,7 +719,7 @@ User says: "Check issue #42"

User says: "Build issue #42"

1. Fetch issue #42 — `state:accepted` is present; the user's direct request authorizes implementation
1. Fetch issue #42 — `state:accepted` is present but `agent:implementation-requested` is absent; warn about the missing queue label and continue because the user directly requested implementation
2. Plan exists (Revision 2), complexity: Medium, confidence: High
3. No conflicting branches or PRs
4. Create branch `feat/42-add-pagination/jmyers`
Expand All @@ -725,6 +733,15 @@ User says: "Build issue #42"
12. No agent-workflow label transition is needed
13. Report PR URL and workflow run status to user

### Run directly on an issue outside the workflow state machine

User says: "Build issue #42"

1. Fetch issue #42 — it has `state:triage-needed`; neither `state:accepted` nor `agent:implementation-requested` is present
2. Warn that triage and acceptance are incomplete and name the missing implementation request label
3. Continue through planning and implementation because the user directly requested the work
4. Do not add, remove, or reinterpret lifecycle or agent-workflow labels

### Run on issue with existing PR

User says: "Build issue #42"
Expand All @@ -737,7 +754,7 @@ User says: "Build issue #42"

User says: "Build issue #99"

1. Fetch issue #99 — `state:accepted` is present; the user's direct request authorizes implementation
1. Fetch issue #99 — warn about any missing expected workflow labels, then continue because the user directly requested implementation
2. Plan exists: complexity High, confidence Low, has open questions
3. Warn user: "Issue #99 is rated High complexity / Low confidence. Proceeding but flagging for your awareness."
4. Continue with build
Loading
Loading