Improve Open Actions compatibility reviews and implementation guidance - #1627
Open
kelos-bot[bot] wants to merge 12 commits into
Open
kelos-bot[bot] wants to merge 12 commits into
kelos-bot[bot] wants to merge 12 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
Collaborator
|
/kelos squash-commits |
Contributor
Author
|
🤖 Kelos Task Status Task |
kelos-bot
Bot
force-pushed
the
open-actions-config-update-latest
branch
from
September 4, 2026 00:05
e4bd217 to
a1b6016
Compare
Contributor
Author
|
Squash complete.\n\nRebased onto origin/main and squashed to a single commit. |
kelos-bot
Bot
force-pushed
the
open-actions-config-update-latest
branch
from
September 4, 2026 18:12
a1b6016 to
46e1db3
Compare
…aths Open Actions PR reviews found that a new CLI dispatch path accepted any YAML file in the repository, while webhook and schedule discovery accept only direct children of the Project's workflow directory. The Console dispatch path has the same gap, and the default-branch dispatch rule is enforced by only some creation paths. GitHub loads workflows only from the workflows directory and requires manually dispatched workflows to be on the default branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kelos-bot
Bot
force-pushed
the
open-actions-config-update-latest
branch
from
September 24, 2026 18:08
51bca9d to
282252a
Compare
Open Actions reviews of #183 and #187 found the same defect in the Console Run workflow form opened from an existing run: the form presented or submitted the source run's workflow snapshot while the new run executed at the latest commit on the ref. Extend the shared Console form guidance to require input handling and default captions from the revision that runs, with tests where the snapshot and ref head differ. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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:
Keeps Open Actions agents aligned with full documented GitHub Actions compatibility and incorporates recurring implementation lessons from PR reviews. Shared implementation guidance lives in
agentconfig.yaml; the two reviewer configurations carry the corresponding review checks. The final diff touches only those three files underself-development/open-actions/, and shared skills remain inself-development/base-agent.yaml.Keep intentional compatibility regressions eligible for review. The implementation review of Open Actions #159 and its API review identified lost trigger reporting, Checks-tab visibility, GitHub rerun controls, and collapsed execution identities. A later #159 review stopped raising the remaining reporting/rerun gaps because they were intentional, documented, and tracked. The #163 API review repeated that reasoning for the narrower newest-execution reporting contract. The merged diffs retain the narrower reporting model. Code-review criteria now allow documented compatibility findings despite author intent or preference, and both reviewer prompts explicitly check trigger coverage, separate workflow/job reporting, Checks visibility, and GitHub UI/CLI reruns. Shared guidance clarifies that rejection, an alternative, or a tracking issue does not close a gap. Verified against GitHub's current workflow reporting model, Checks versus commit statuses, multiple-event behavior, and rerun contract. Existing compatibility text in the planner, triage, user, strategist, and configuration-update prompts is preserved.
Filter controller watch events to avoid redundant reconciles while preserving execution changes. The #159 review identified an unfiltered WorkflowRun watch that issued an uncached list and enqueued peers on every update. The #173 review found the same overhead on the reporter's WorkflowJob watch, including a self-trigger from its own reporting acknowledgement. The #173 resolution applied the event filter and added coverage for completion combined with an acknowledgement; the merged diff wires the predicate into the reporter, WorkflowRun, and Runner controllers. The existing shared performance rule now covers filtering by changes relevant to each controller and testing that mixed acknowledgement/execution updates still reconcile.
Test Console forms and polling through requests derived from the rendered page. The #172 review found that dispatch tests bypassed the rendered
loaded-selectionfield, leaving the source-run form contract untested. The #176 review found that manually constructed POST requests used LF-only values and missed browser textarea CRLF conversion. The #179 review found a related page/handler mismatch: polling the newest 100 runs discarded durations for rows still displayed after new runs arrived. Both independent review paths agreed. These reviews expose the same testing gap: isolated handler requests can bypass state retained by the rendered page. The shared Console testing instruction requires rendered hidden-field values, browser form encoding, and persisted-result assertions; for polling, it also requires requests derived from the rendered page, new resources arriving before refresh, and updates for still-visible resources through completion. The merged Update license from BSL 1.1 to Apache 2.0 #179 headdff2257selects the displayed run identities and addsTestConsoleWorkflowRunListPollsDisplayedRuns, confirming the finding and fix. The #172 response and #176 response, together with the merged tests, confirm the fixes. Checked GitHub's current dispatch input contract and variable limits; the browser encoding detail comes from the HTML form submission specification. GitHub's current workflow run documentation describes observing run progress and completion. The polling instruction addresses Open Actions' browser/handler contract; it does not prescribe GitHub's polling mechanism or cadence.Verify that positive test fixtures can occur in production and pass the downstream eligibility checks. The #178 code review found that a
push+TriggerInvalidfixture claimed to prove a reporting path that could never occur: the condition producer handles onlyworkflow_dispatch,workflow_call, andschedule, while the reporter excludes those events. The merged diff removes that reporting branch and usesWorkflowInvalidfor the no-Console-URL case, retaining meaningful positive coverage. This repeats the fixture-fidelity problem in the #172 review and #176 review, where hand-built requests bypassed rendered form state or browser encoding. One sentence extends the existing shared production-path testing instruction to require reachable inputs and states. GitHub's current workflow run documentation requires failed runs for invalid workflow files on new commits; a fabricated internal trigger-error state does not establish that observable behavior. This testing clarification adds no exception to the full-compatibility requirement.Apply GitHub's workflow eligibility rules on every path that creates WorkflowRuns. The #182 code review and API review independently found (P2) that
open-actions run create WORKFLOWvalidates only the path's shape (cmd/open-actions/run_create.go:144at4145506). As a result, any.yaml/.ymlfile in the repository that declaresworkflow_dispatchcan be dispatched, while webhook and schedule discovery list only direct children ofProject.spec.workflowDirectory. Both reviews note that the Console dispatch path already has the same gap, so two separately built creation paths have now missed the rule. The API review also found that only the CLI enforces the default-branch dispatch rule; the Console and direct creation do not. A new shared rule requires every WorkflowRun creation path, including the Console and CLI, to accept only direct children of the workflow directory and to require manually dispatched workflows to be on the default branch. It also requires tests showing that files outside the directory or in its subdirectories are rejected. GitHub's current docs require workflow files to be stored in.github/workflows, state that subdirectories of the workflows directory are not supported, and require the workflow to be on the default branch forworkflow_dispatch. The unchecked path was confirmed in the CLI UX: Missing client-side validation for enum flags (--type, --credential-type) #182 diff (validateRunCreate), and the non-recursive listings were confirmed ininternal/webhook/delivery.go(workflowFilesAtRevision,git ls-treewithout-r) andinternal/controller/schedule_controller.go(discoverScheduledWorkflows) on Open Actionsmain. CLI UX: Missing client-side validation for enum flags (--type, --credential-type) #182's current head9208a6a(September 27) adds the direct-child check torun create, andTestRunCreateWorkflowDirectoryConformancerejects root, elsewhere-in-repository, nested, and similar-prefix paths, confirming the finding for the CLI. The Console dispatch handler on Open Actionsmain(61e073d, which includes the merged CLI UX: 'axon run' should provide next-step guidance after task creation #183) still checks only the path's shape and reads the workflow at the selected revision, so the rule still applies there.Build Console forms opened from an existing run from the workflow revision the new run will use. The #183 review (P3) found that a form started from an existing run counted the source run's workflow snapshot as loaded. Optional inputs the source run omitted were submitted with the snapshot's defaults, and inputs added at the latest commit stayed hidden, while the new run executed at the ref's latest commit. The #187 review (P2, head
e679d01) found the same mismatch in the new default captions: the form showed the snapshot'sDefault:values, which the run would not receive when the ref head declared different defaults. Both findings concern the same source-run prefill path, and both authors fixed them. CLI UX: 'axon run' should provide next-step guidance after task creation #183's merged head281e010submits only the inputs the source run supplied. Wait for terminating resources before server-side apply #187's merged head07d5810asks users to load the workflow before it shows defaults and addsTestConsoleDispatchLoadsCurrentDefaultsForSnapshotInputs, which covers defaults changed, added, or removed since the source run. The shared Console form instruction now requires source-run forms to present and submit inputs according to the revision that runs. They must submit only the inputs the source run supplied and show declarations or defaults only after reading them at that revision. Tests must cover snapshots whose inputs or defaults differ from the ref head. GitHub's current docs setGITHUB_SHAforworkflow_dispatchto the last commit on the dispatched branch or tag, and they apply the defaults defined in the workflow file when inputs are omitted, as does the REST dispatch contract. A form that shows or submits an older snapshot's defaults therefore misstates the documented dispatch result.The shared implementation guidance retains these review-backed lessons:
helm upgrade --reuse-values; the tests loaded only updated defaults. This repeats the omitted-setting upgrade failure class identified in Introduce user CRD #105. Helm’s implementation replaces incoming chart defaults with the previous release’s coalesced values on that path. The author’s response and merged diff confirm optional schema validation, absence-as-disabled rendering, and missing-key coverage.float64values and reloadedjson.Numbervalues, rejecting selective reruns even though YAML-literal tests pass. The shared rule requires consistent, value-preserving identity normalization and separate coverage of YAML literals andfromJSONnumeric matrices through planning, persistence/restart, and selective reruns, including large integers and small fractions. GitHub documents numeric expressions andfromJSON, matrices from job outputs, and selective reruns; the internal representation mismatch is therefore a compatibility gap. Related earlier review: #93.Which issue(s) this PR is related to:
N/A
Special notes for your reviewer:
Validation passed:
make verify(generated artifacts, formatting, module metadata, YAML, shell formatting, Console frontend build, andgo vet),go test ./internal/examples/...(self-development manifest checks),git diff --check, a file-scope check, and a PR-template check.The final branch changes only three configuration files under
self-development/open-actions/:agentconfig.yaml,open-actions-reviewer.yaml, andopen-actions-api-reviewer.yaml. The branch is rebased ontomain, which removed the Claude reviewer spawners. That removal left their earlier copies of the review checks in this PR with nothing to modify, and the surviving reviewers carry the checks unchanged. The workflow-eligibility guidance is a new bullet next to the existing creation-path rule inagentconfig.yaml, and the source-run form guidance extends the existing Console form bullet; shared skills remain in the base configuration.Reviewed both requested recent-PR lists and collected diffs, formal reviews, inline comments, and conversations for the five PRs active September 12–19, 2026: #174 and #176–#179. None currently carries
generated-by-kelos. Substantive reviews are sticky issue comments bykelos-bot; the formal-review and inline-comment endpoints returned no entries. #177 has no review comments. Rechecked #172 as supporting evidence for the recurring Console page/handler testing gap. The #179 review describes revision7e057a8; the merged headdff2257fixes the polling selection and adds coverage for new runs arriving and displayed runs completing. The #178 review describes revisionee6c545; the merged head8044600removes the unreachable reporting branch and corrects its documentation and test fixture.Also reviewed activity from September 19–24, 2026: open PRs #181 and #182 and issue #180. #181 and #180 have no reviews or comments. #182's substantive reviews are
kelos-botsticky issue comments at4145506; the formal-review and inline-comment endpoints returned no entries. Neither PR carriesgenerated-by-kelos. The comments and timelines of earlier PRs have no new activity since the last update.Existing guidance already covers #171's documentation and installed precedence coverage, #172/#176's Console form testing, #173's watch filtering and cancellation/deletion documentation, and #174's omitted Helm setting. The namespace-scoping and invalid-ConfigMap filtering suggestions in #176 were declined by the author, and flag deprecation feedback conflicts with the stated maintainer direction; none motivates a new rule. #177's screenshot instruction has no review evidence, so it is not duplicated here. #178's naming, required-check warning, and exact invalid-file activity scope are isolated suggestions or fit existing guidance; no separate rules are added for them. #182's other findings fit existing guidance:
--workflow-run-ttl-seconds-after-finisheddefault. The existing creation-path rule already requires comparing omitted and operator-configured behavior.--nameare not idempotent. The existing retry-safe creation and documentation-alignment rules cover this.--namehelp assertion also matches--namespace. The code reviewer's existing vacuous-substring check caught it.The #174 code review excludes a documented authorization difference because it is intentional. Existing guidance already keeps such gaps eligible for review: GitHub requires repository write access for manual dispatch and reruns. Documenting an opt-in exception or tracking it does not establish compatibility, so no exception is added to this configuration.
Also reviewed activity from September 24–27, 2026: merged PR #183, the updated head of #182, and issues #180 and #168. Neither PR carries
generated-by-kelos, and the formal-review and inline-comment endpoints returned no entries. #182 received no new reviews. Its new head9208a6aalso resolves the other September 24 findings that existing guidance covers: named retries now reuse a matching run, the docs name Kubernetes RBAC as the authorization boundary, and the docs state that the operator TTL default does not apply to CLI-created runs. The #183 review raised two P3 findings, and the merged head281e010addresses both:Issue #168's update refreshes a strategist assessment, and #180 contains only a
/kelos pick-upcommand. Neither contains review feedback.Also reviewed activity from September 27–29, 2026: merged PR #186, open PRs #184, #185, and #187, and issue #168. None of the PRs carries
generated-by-kelos. Substantive reviews arekelos-botsticky issue comments; the formal-review and inline-comment endpoints returned no entries. #184 has no reviews or comments, #181 and #182 have no new activity, and #168's update refreshes a strategist assessment without review feedback. Apart from the #187 finding above, no finding motivates a new rule:fd51bebaddresses all three. The individual-job rerun path returned Kubernetes API failures as409 Conflictwith raw error text, unlike the sibling failed-jobs path. The existing rule to classify dependency and API failures consistently covers this, and the merged head sends these failures through the Console's logged generic error response. The chart README's outdated description of anonymous rerun scope falls under the existing documentation-alignment rule. The untested lineage-break guard falls under the existing production-path testing rules, and the merged head adds a mismatched previous-run UID case.Also reviewed activity from September 29–30, 2026. #185 and #187 merged, and there are no new reviews, review comments, or formal-review or inline-comment entries. #187 merged at
07d5810, the post-review head cited above, which confirms the source-run form fix. #185 merged atc91e007, rebased onto #186 after the review of02055d9; its live step counters still use the viewer's clock. No review of #167 or #179 raised client-clock skew, so this remains a one-off. #181, #182, and #184 have no new activity. Issues #76 and #168 received only title and body refreshes from the fake-user and strategist agents, with no review feedback. The configuration files are unchanged in this pass.Does this PR introduce a user-facing change?
🤖 Generated with Claude Code