Improve Open Actions agent implementation guidance - #1627
Open
kelos-bot[bot] wants to merge 16 commits into
Open
Improve Open Actions agent implementation guidance#1627kelos-bot[bot] wants to merge 16 commits into
kelos-bot[bot] wants to merge 16 commits into
Conversation
kelos-bot
Bot
force-pushed
the
open-actions-config-update-latest
branch
from
August 12, 2026 18:12
e8eb38d to
de4a652
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What type of PR is this?
/kind cleanup
What this PR does / why we need it:
Improves the shared Open Actions agent configuration using recurring findings from Open Actions reviews:
Treat persisted and versioned cross-component data as upgrade contracts, preserving in-flight and pre-upgrade data and positively testing current and fallback paths. An API review of the Kelos-generated Open Actions PR #45 found that its version-2 runner rejected queued version-1 plans. Reviews of the Kelos-generated Open Actions PR #47 found that a queued-delivery format change stranded in-flight data, and a later review found its legacy decode still silently lost pull-request runs. Open Actions PR #49 omitted a positive test for its documented pre-upgrade fallback. Reviews of Open Actions PR #55 found its next runner-result version upgrade constraint undocumented and its old-controller compatibility branch untested.
Require workflow parsing to reject unsupported or ambiguous input instead of silently ignoring it or applying last-value-wins behavior. Open Actions PR #1 accepted an unsupported event action, silently ignored
with:on arun:step, and silently replaced duplicate YAML mapping keys.Keep durable repository documentation aligned with observable behavior, supported syntax, enforced limits, and operational prerequisites. Two reviews of Open Actions PR #3 found that package pull visibility and Actions publish permission were conflated and that the required write grant remained absent from durable repository documentation; Open Actions PR #13 then omitted newly observable timeout and terminal-failure behavior from its webhook documentation. Two reviews of Open Actions PR #54 and its implementation review independently caught the same omitted 100-axis matrix limit, and Open Actions PR #62 omitted its new ANSI rendering support from the Console reference.
Preserve retryable dependency failures consistently across reconciliation phases and test their observable retry state. Independent API and implementation reviews of Open Actions PR #64 and its updated head found that the same transient Project-variable lookup error retried during planning but permanently failed jobs during condition evaluation.
Keep request, reconcile, and retry hot paths bounded by capping or paginating list-backed responses, placing no-op checks before expensive reads, and persisting completed sub-work. A review of Open Actions PR #52 found that the Console front door listed and rendered every retained WorkflowRun without a cap or pagination. A review of the Kelos-generated Open Actions PR #47 found that every merge-ref retry repeated completed GitHub workflow discovery, while Open Actions PR #70 added an uncached WorkflowRun list before an existing steady-state digest short-circuit.
Exercise integration-dependent behavior through the installed Kind path and test security boundaries through their real enforcement layer. A review of Open Actions PR #53 found that its advertised Docker execution path was never exercised end to end and that subset-only mount assertions did not pin Secret isolation. A review of Open Actions PR #55 found that the real kubelet termination-message transport remained untested. A review of Open Actions PR #73 found that FakeRecorder unit tests missed the
events.k8s.ioRBAC required by the installed feature. The review of Open Actions PR #74 also found missing rejection tests for thehashFilesworkspace boundary and unavailable job-output context.Bound repository-controlled parsing and expression evaluation at every stage: source size, AST depth and node count, incremental evaluation output, and post-interpolation field and aggregate budgets. The first review of the Kelos-generated Open Actions PR #45 found unbounded AST recursion, conditions bypassing aggregate budgets, and evaluated values bypassing field limits; its follow-up review then found that nested
format()calls could allocate exponentially growing strings before post-evaluation caps ran.Require expression functions to reject invalid argument types rather than silently degrading. The review of Open Actions PR #74 found that
endsWithreturned false for non-scalars whilejoinsilently replaced an invalid separator with its default.Preserve GitHub API file-type semantics and validate network-sensitive Git behavior with realistic remotes. The implementation review of Open Actions PR #77 found that local-path fixtures hid both symlink handling that diverged from the GitHub directory API and a shallow checkout that fetched full history; the merged head addressed both findings.
Retain positive authorization coverage for every supported credential path and keep deployed credential wiring covered end to end. The review of Open Actions PR #78 found that the browser session-cookie acceptance path and the chart-to-Console administrator-token path had both lost coverage; the merged head restored unit and Kind coverage.
Version every controller-to-runner interface, including job plans, CLI arguments, environment variables, mounted files, and credentials, and test both skew directions. The API and implementation reviews of Open Actions PR #79 and its updated review found that a new required action-token environment contract stayed outside the job-plan version and exposed the broad credential to old runners; Open Actions PR #93 repeated the compatibility failure by adding a required runner CLI argument without a version transition.
Bound combinatorial traversal independently of accepted output so filters cannot hide unbounded work. Open Actions PR #95 removed the matrix product pre-check and limited only combinations surviving
exclude, allowing repository-controlled input to traverse an exponential candidate space while retaining no results; this repeats the resource-exhaustion class already found in Open Actions PR #45.Keep PR descriptions and release notes as accurate as repository documentation, including changed defaults, upgrade requirements, and access boundaries. The implementation review of Open Actions PR #79 found that its release note omitted both an upgrade constraint and a GHES-affecting default change. Independent API and implementation reviews of Open Actions PR #94 and its implementation review found that its PR description and release note claimed authentication for an unauthenticated Console endpoint.
Preserve positive coverage for each distinct production path when repurposing tests or fixtures. Open Actions PR #78 deleted the only positive tests of the session-cookie path and deployed administrator-token wiring, and Open Actions PR #91 moved a fixture value from step-level to plan-level environment and inadvertently removed the only action-step environment propagation coverage.
Make create-and-follow-up workflows retry-safe across stale caches, concurrent reconciles, and partial failures. The review of Open Actions PR #108 found that generated child names plus a stale informer count could over-create Runners. The review of Open Actions PR #93 found that an existing-rerun retry path skipped the ownership side effect left incomplete by a prior attempt, while Open Actions PR #92 compared mutable fields when deciding whether an existing WorkflowRun represented the same request.
Compare omitted and operator-configured behavior across every resource-creation path before adding optional API or configuration fields. Independent API and implementation reviews of Open Actions PR #105 and its implementation review found that omission silently shortened the existing Pod cleanup window through Kubernetes defaulting. Open Actions PR #92 initially omitted the configured WorkflowRun retention default from its new Console creation path, and reviews of Open Actions PR #96 and its implementation found mismatched omitted-field documentation and missing legacy-fallback coverage.
Preserve scalar meaning across workflow YAML, webhook JSON, and persisted intermediate data. Open Actions PR #95 converted large YAML integers to scientific notation after a persisted JSON round trip; Open Actions PR #93 exposed the same
float64formatting problem for integer-valued GitHub event properties.Define concurrency order independently of reconcile arrival and intermediate status presence, and test adversarial arrival sequences. Open Actions PR #102 used a status field written before gate registration as a progress marker, allowing an older run to cancel a newer one. The follow-up design in Open Actions PR #104 still released multiple waiters in reconcile order and reproduced the newest-wins inversion.
Treat condition-reason tables and supported expression/result lists as exhaustive documentation contracts. The API review of Open Actions PR #104 found
ConcurrencyCancelledmissing from applicable condition rows, Open Actions PR #107 omittedGitHubTokenPermissionsRejected, and Open Actions PR #100 left the general supported step outcome/conclusion values undocumented.Handle permanently missing referenced state according to its lifecycle. The review of Open Actions PR #89 found that a surviving rerun page returned 404 after its original run was TTL-deleted. The review of Open Actions PR #94 found that a rerun retried forever when its original was deleted before identity reconciliation, while Open Actions PR #95 found the same non-terminal retry behavior after a persisted matrix plan was deleted. The shared configuration now tells agents to use retained state or degrade optional views when possible, make irrecoverable state loss observably terminal, and test deletion across lifecycle boundaries.
Treat the current GitHub Actions documentation as the normative workflow specification and classify every missing or different documented behavior as a compatibility gap. Open Actions PR #120 established that project-wide requirement after the review of Open Actions PR #103 described a documented
env-context mismatch as optional, and the review of Open Actions PR #121 found further mismatches in fork-event and approval behavior. The shared developer guidance, planner, triage, user, strategist, and two code-review prompts now use the current GitHub Actions docs as the source of truth, require conformance tests, and no longer describe Open Actions as a supported subset. The configuration-improvement prompt now preserves this review criterion for future runs.Preserve independent workflow candidates represented by one webhook. The review of Open Actions PR #121 found that fork-controlled validation failures could suppress a separately documented
pull_request_targetworkflow and that the disabled-fork-policy test did not drive the reconciliation entry point. The shared guidance now requires candidate-local validation and state commits plus reconciliation-level coverage for invalid and disabled sibling paths.Classify GitHub rate-limit responses precisely and preserve unrelated aggregated failures. The review of Open Actions PR #122 found that an unknown installation could create a global cooldown, an ordinary 404 carrying exhausted-quota headers could be misclassified as rate-limited, and a mixed joined error could be silently converted into a retry. The shared dependency-error guidance now covers status/signal validation, cooldown scope, and mixed-error preservation.
Preserve the causal meaning of terminal and non-running job states instead of treating status presence or a coarse terminal, cancelled, or skipped predicate as proof of success, reuse, or lifecycle progress. The review of Open Actions PR #127 found that fail-fast-cancelled matrix siblings were treated as reusable terminal work, producing a false-green failed-job rerun. GitHub documents failed-job reruns as including dependent jobs and matrix fail-fast as cancelling queued and in-progress siblings. This continues earlier state-semantics mistakes found in Open Actions PR #100, PR #102, and PR #104. The shared guidance now requires cause-aware state handling, aggregate and dependency recomputation across retries and reruns, and mixed-result matrix tests.
Exercise every independent validation constraint through the real enforcement layer, including numeric bounds and Kubernetes structural list or map semantics. The review of Open Actions PR #130 found that the
imagePullSecretsschema test covered its name pattern but not its 32-item bound or uniqueness semantics, repeating the missing rejection coverage found in Open Actions PR #74. The shared validation-test guidance now requires a rejection case for each independent constraint.Exercise shared behavior through every materially distinct production caller and cover path-specific lifecycle and backing-store assumptions. The review of Open Actions PR #133 found that workflow-cache reuse covered the GitHub Contents API path but not the synthesized pull-request merge checkout path. This continues positive path-coverage gaps found in Open Actions PR #91 and Open Actions PR #78. The shared guidance now requires real-caller coverage for each materially distinct path.
Shared developer guidance remains in
self-development/open-actions/agentconfig.yaml; specialized prompts that do not consume that config contain only their task-specific compatibility checks. Shared skills remain only inself-development/base-agent.yaml.Which issue(s) this PR is related to:
N/A
Special notes for your reviewer:
make verifypasses.env -u CODEX_AUTH_JSON make testpasses; the task container sets that credential variable, which intentionally changes the Codex entrypoint fixture when it is left inherited. The final diff is limited to eight configuration files underself-development/open-actions/.Does this PR introduce a user-facing change?