Skip to content

Harden setup JavaScript input and I/O boundaries - #54691

Merged
pelikhan merged 13 commits into
mainfrom
copilot/eslint-monster-input-parsing-validation
Aug 22, 2026
Merged

Harden setup JavaScript input and I/O boundaries#54691
pelikhan merged 13 commits into
mainfrom
copilot/eslint-monster-input-parsing-validation

Conversation

Copilot AI commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Malformed numeric, date, JSON, and URL inputs could silently propagate, while network and filesystem failures could escape without actionable context.

  • Input validation
    • Reject invalid numeric configuration and endpoint values.
    • Guard parsed dates before comparison.
    • Report malformed JSON and URLs with preserved causes.
  • Request boundaries
    • Wrap fetch and response-body failures with operation context.
    • Add timeouts to workload identity requests.
  • Filesystem boundaries
    • Wrap temporary-directory creation and synchronous file operations with contextual errors.
    • Preserve existing behavior for valid inputs and check runs with missing timestamps.
try {
  payload = await response.json();
} catch (error) {
  throw new Error("Failed to parse token exchange response", {
    cause: error,
  });
}

Run: https://github.com/github/gh-aw/actions/runs/32552086004> Generated by 👨‍🍳 PR Sous Chef · gpt54 · 28.1 AIC · ⌖ 8.19 AIC · ⊞ 9.5K ·

Comment /souschef to run again


pr-sous-chef run: https://github.com/github/gh-aw/actions/runs/32552825826> Generated by 👨‍🍳 PR Sous Chef · gpt54 · 24.2 AIC · ⌖ 8.28 AIC · ⊞ 9.5K ·

Comment /souschef to run again


Generated by 👨‍🍳 PR Sous Chef · gpt54 · 33 AIC · ⌖ 8.29 AIC · ⊞ 9.5K ·
Comment /souschef to run again

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix input parsing and boundary validation in setup/js Harden setup JavaScript input and I/O boundaries Aug 22, 2026
Copilot AI requested a review from pelikhan August 22, 2026 02:48
@pelikhan
pelikhan marked this pull request as ready for review August 22, 2026 02:49
Copilot AI balanced review requested due to automatic review settings August 22, 2026 02:49
@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer

@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Test Quality Sentinel completed test quality analysis.

No test files were added or modified in this PR. Test Quality Sentinel skipped.

🧪 Test quality analysis by Test Quality Sentinel

@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Ponytail Reviewer completed successfully!

Generated by Ponytail Reviewer for #54691

@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

PR Code Quality Reviewer completed the code quality review.

🔎 Code quality review by PR Code Quality Reviewer

@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Design Decision Gate 🏗️ completed the design decision gate check.

No ADR enforcement needed: PR #54691 does not have the 'implementation' label and has 0 new lines of code in business logic directories (threshold: 100).

🏗️ ADR gate enforced by Design Decision Gate 🏗️

@github-actions

Copy link
Copy Markdown
Contributor

Comment Memory

reviewed_at: 2026-08-22T00:00:00Z
review_event: REQUEST_CHANGES
top_themes:
  - stale check selection when existing started_at is invalid
files_reviewed:
  - actions/setup/js/add_reaction_and_edit_comment.cjs
  - actions/setup/js/add_workflow_run_comment.cjs
  - actions/setup/js/artifact_client.cjs
  - actions/setup/js/awf_reflect.cjs
  - actions/setup/js/check_daily_aic_workflow_guardrail.cjs
  - actions/setup/js/check_rate_limit.cjs
  - actions/setup/js/check_runs_helpers.cjs
  - actions/setup/js/create_prompt.cjs
  - actions/setup/js/data_schema_normalizer.cjs
  - actions/setup/js/evaluate_outcomes.cjs
  - actions/setup/js/exchange_otlp_workload_identity.cjs
  - actions/setup/js/fuzz_template_substitution_harness.cjs
  - actions/setup/js/generate_usage_activity_summary.cjs
  - actions/setup/js/handle_noop_message.cjs
  - actions/setup/js/memory_custom_validation.cjs
  - actions/setup/js/notify_comment_error.cjs
  - actions/setup/js/push_repo_memory.cjs
  - actions/setup/js/safe-outputs-mcp-server.cjs
comment_count: 1

Note

This comment is managed by comment memory.

It stores persistent context for this thread in the code block at the top of this comment.
Edit only the text inside the backtick fences; workflow metadata and the footer are regenerated automatically.

Learn more about comment memory

🔎 Code quality review by PR Code Quality Reviewer · gpt54 · 6.03 AIC · ⌖ 8.93 AIC · ⊞ 4.6K ·
Comment /review to run again

@github-actions github-actions Bot left a comment

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.

Requesting changes

This patch is mostly defensive hardening, but one change in the check-run selection helper regresses behavior: a previously selected run with an invalid started_at now blocks any later valid run with the same name from replacing it, which can surface the wrong check as the “latest” result.

Blocking theme
  • actions/setup/js/check_runs_helpers.cjs: invalid existing timestamps now pin stale entries in latestByName instead of letting a valid newer run take over.

I did not find other changed lines here that clearly rise to blocking severity beyond that regression.

🔎 Code quality review by PR Code Quality Reviewer · gpt54 · 6.03 AIC · ⌖ 8.93 AIC · ⊞ 4.6K
Comment /review to run again

if (!Number.isFinite(runStartedAt)) {
continue;
}
if (!Number.isFinite(existingStartedAt)) {

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.

Replacing the old comparison with an unconditional continue when existing.started_at is invalid changes behavior in a bad way: once a malformed older run is already stored, every newer valid run with the same name is ignored forever, so this helper can report a stale check instead of the actual latest result.

💡 Why this matters and how to fix it

The previous code still allowed a valid newer run to replace an entry whose timestamp parsed badly because new Date(invalid) > new Date(valid) simply evaluated false for the bad candidate, not for the already-selected one. The new branch at line 52 turns that into a hard stop.

A safer fallback is to treat an invalid existing.started_at as older than any valid candidate:

if (!Number.isFinite(runStartedAt)) {
  continue;
}
if (!Number.isFinite(existingStartedAt) || runStartedAt > existingStartedAt) {
  latestByName.set(run.name, run);
}

That preserves the goal of skipping malformed incoming runs without pinning the map to a bad existing entry.

@github-actions github-actions Bot mentioned this pull request Aug 22, 2026

@github-actions github-actions Bot left a comment

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.

Skills-Based Review 🧠

Applied /diagnosing-bugs, /codebase-design, and /tdd — requesting changes on a correctness regression and missing test coverage.

📋 Key Themes & Highlights

Key Issues

  • Behavior regression (check_runs_helpers.cjs line 52): when existingStartedAt is NaN, the new code keeps existing unconditionally — the original code fell back to epoch, letting any valid new run win. This silently changes which check run is selected as "latest".
  • Inconsistent error surface (push_repo_memory.cjs): validation uses core.setFailed() + return while every other guard in this PR throws. Downstream callers get undefined and outer try/catch blocks miss it.
  • Duplicated helpers: six fs-wrapper functions in memory_custom_validation.cjs duplicate the pattern from artifact_client.cjs; extracting to a shared module would prevent divergence.
  • No test coverage: numeric-range guards are entirely untested.

Positive Highlights

  • ✅ Comprehensive fetch-wrapping with cause chaining across exchange_otlp_workload_identity.cjs and artifact_client.cjs
  • ✅ Hardened date parsing throughout: Date.parse + Number.isFinite is the right idiom
  • ✅ Regex escaping fix in fuzz_template_substitution_harness.cjs addresses a real injection risk
  • ✅ Timeout added to workload identity requests — good defense against hung OIDC flows

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · sonnet46 · 67.2 AIC · ⌖ 10.3 AIC · ⊞ 7.6K
Comment /matt to run again

Comments that could not be inline-anchored

actions/setup/js/check_runs_helpers.cjs:52

[/diagnosing-bugs] Behavior regression: when existingStartedAt is NaN, the code silently continues, keeping existing even when the incoming run has a valid timestamp. The original code used new Date(existing.started_at ?? 0) which fell back to epoch, so a valid new run would always win.

<details>
<summary>💡 Suggested fix</summary>

if (!Number.isFinite(existingStartedAt)) {
  // existing has no valid timestamp; let the new run replace it
  latestByName.set(run.name, run)

</details>

<details><summary>actions/setup/js/push_repo_memory.cjs:67</summary>

**[/codebase-design]** Inconsistent error surface: every other validation guard in this PR throws an `Error`, but this block calls `core.setFailed()` + `return`. Downstream callers get `undefined` instead of an exception, and an outer `try/catch` won&#39;t capture it.

&lt;details&gt;
&lt;summary&gt;💡 Suggested fix&lt;/summary&gt;

```js
throw new Error(`${ERR_VALIDATION}: Memory size, count, patch size, and validation timeout limits must be positive integers`);

Pick one pattern for the file. Throwing is consi…

actions/setup/js/memory_custom_validation.cjs:452

[/codebase-design] Duplicated fs-wrapper pattern: this file defines six private helpers (removePath, makeDirectory, writeFile, readFile, readDirectory, makeTempDirectory) that mirror makeTempDir, readResponseText, and readResponseJSON added in artifact_client.cjs in the same PR. Two independent abstractions for the same concern will diverge in error formatting over time.

<details>
<summary>💡 Suggested approach</summary>

Extract into a shared fs_helpers.cjs (or `io_h…

actions/setup/js/exchange_otlp_workload_identity.cjs:329

[/codebase-design] The 30-second fetch timeout is hardcoded with no operator override. In high-latency or throttled environments there is no recourse without patching the source.

<details>
<summary>💡 Suggested fix</summary>

const timeoutMs = parseInt(process.env.GH_AW_OTLP_WIF_TIMEOUT_MS || &quot;30000&quot;, 10);
// ...
signal: AbortSignal.timeout(Number.isFinite(timeoutMs) &amp;&amp; timeoutMs &gt; 0 ? timeoutMs : 30_000),

Apply the same env var to both the STS and impersonation fetch calls for …

actions/setup/js/data_schema_normalizer.cjs:275

[/diagnosing-bugs] The error message drops the original parse failure text. Operators debugging a malformed schema will only see the path, not what the JSON parser rejected.

<details>
<summary>💡 Suggested fix</summary>

throw new Error(`${path}: invalid JSON schema: ${getErrorMessage(error)}`, { cause: error });

cause is already preserved — adding getErrorMessage(error) to the message string makes it readable in logs without requiring callers to unwrap the cause chain.

</d…

actions/setup/js/push_repo_memory.cjs:67

[/tdd] None of the new numeric-validation guards (push_repo_memory, check_rate_limit, notify_comment_error, safe-outputs-mcp-server) are covered by tests. A miswired env var name or wrong default could silently pass CI.

<details>
<summary>💡 What to test</summary>

For each validation block, add unit tests that:

  1. Pass an invalid value (&quot;abc&quot;, &quot;-1&quot;, &quot;0&quot;) and assert the expected error / setFailed call.
  2. Pass the boundary value (e.g., &quot;1&quot;) and assert normal execution con…

@github-actions github-actions Bot left a comment

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.

Ponytail review: mostly clean error-handling/validation hardening, wrapped in appropriately small try/catches. Two spots split single boolean checks into multiple ifs unnecessarily.

net: -5 lines possible.

Generated by ✂️ Ponytail Reviewer for #54691 · auto · 32.6 AIC · ⌖ 4.07 AIC · ⊞ 7.3K
Comment /ponytail to run again

if (!Number.isFinite(existingStartedAt)) {
continue;
}
if (runStartedAt > existingStartedAt) {

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.

L49-55: shrink: two separate if (!Number.isFinite(...)) blocks. if (!Number.isFinite(runStartedAt) || !Number.isFinite(existingStartedAt)) continue;, then if (runStartedAt > existingStartedAt) ..., 2 lines saved.

if (!Number.isFinite(b)) {
return false;
}
return a >= b;

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.

L1225-1231: shrink: split into two ifs from a single combined check. if (!Number.isFinite(a) || !Number.isFinite(b)) return false;, 3 lines saved.

@github-actions github-actions Bot left a comment

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.

Good hardening sweep — wrapping raw I/O calls, adding AbortSignal.timeout, propagating { cause: error }, and validating integer env-vars before use are all solid improvements.

Two issues to address:

  1. check_runs_helpers.cjs — logic inversion (blocking): when the stored entry has an invalid date but the incoming run has a valid one, the new guard discards the valid run instead of upgrading to it. See inline comment.

  2. check_rate_limit.cjs — unreachable guard (non-blocking): the Number.isNaN(thresholdTime.getTime()) check can never fire after the upstream positive-integer validation. Remove or document it. See inline comment.

🧵 Reviewed using Impeccable skills by Impeccable Skills Reviewer · sonnet46 · 42.1 AIC · ⌖ 9.2 AIC · ⊞ 6.2K

const existingStartedAt = Date.parse(existing.started_at ?? "");
if (!Number.isFinite(runStartedAt)) {
continue;
}

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.

Bug: valid-timestamp run is silently dropped when existing entry has an invalid date

When existingStartedAt is NaN (the stored entry has a malformed started_at) but runStartedAt is a valid timestamp, the current guard:

if (!Number.isFinite(existingStartedAt)) {
  continue; // ← keeps the invalid entry, discards the valid one
}

silently discards the valid incoming run and retains the entry with the unusable date. The correct behaviour is to prefer the valid-date run:

if (!Number.isFinite(runStartedAt)) {
  continue; // incoming date is bad — keep existing regardless
}
if (!Number.isFinite(existingStartedAt)) {
  latestByName.set(run.name, run); // upgrade: incoming is valid, existing is not
  continue;
}
if (runStartedAt > existingStartedAt) {
  latestByName.set(run.name, run);
}

@copilot please address this.

Comment thread actions/setup/js/check_rate_limit.cjs Outdated
// Calculate time threshold
const windowMs = windowMinutes * 60 * 1000;
const thresholdTime = new Date(Date.now() - windowMs);
if (Number.isNaN(thresholdTime.getTime())) {

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.

Dead code: Number.isNaN(thresholdTime.getTime()) guard is unreachable

After the new validation at line ~178:

if (!Number.isFinite(maxRuns) || maxRuns <= 0 || !Number.isFinite(windowMinutes) || windowMinutes <= 0) {
  throw new Error("Rate limit maximum and window must be positive integers");
}

windowMinutes is guaranteed to be a finite, positive number. Therefore windowMs = windowMinutes * 60 * 1000 is always a finite, positive number and new Date(Date.now() - windowMs) always produces a valid Date. The Number.isNaN(thresholdTime.getTime()) check added a few lines later can never be true and adds maintenance noise. Remove it, or add a comment explaining what scenario it guards against.

@copilot please address this.

Copilot AI left a comment

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.

Pull request overview

Hardens setup JavaScript input parsing and I/O error reporting for #54636.

Changes:

  • Validates numeric, date, JSON, URL, and template inputs.
  • Adds contextual filesystem and response-body errors.
  • Adds workload identity request timeouts and fetch error handling.
Show a summary per file
File Description
actions/setup/js/safe-outputs-mcp-server.cjs Validates the server port.
actions/setup/js/push_repo_memory.cjs Validates memory limits and timeout.
actions/setup/js/notify_comment_error.cjs Validates assignment error counts.
actions/setup/js/memory_custom_validation.cjs Wraps synchronous filesystem operations.
actions/setup/js/handle_noop_message.cjs Normalizes the no-op item limit.
actions/setup/js/generate_usage_activity_summary.cjs Adds manifest read context.
actions/setup/js/fuzz_template_substitution_harness.cjs Escapes variable names and wraps temp-directory creation.
actions/setup/js/exchange_otlp_workload_identity.cjs Adds request timeouts and contextual failures.
actions/setup/js/evaluate_outcomes.cjs Explicitly guards invalid dates.
actions/setup/js/data_schema_normalizer.cjs Wraps malformed schema JSON errors.
actions/setup/js/create_prompt.cjs Preserves causes for prompt file failures.
actions/setup/js/check_runs_helpers.cjs Guards check-run timestamp comparisons.
actions/setup/js/check_rate_limit.cjs Validates limits and run timestamps.
actions/setup/js/check_daily_aic_workflow_guardrail.cjs Adds parsing diagnostics and temp-directory context.
actions/setup/js/awf_reflect.cjs Wraps invalid model URLs.
actions/setup/js/artifact_client.cjs Wraps response parsing and temp-directory failures.
actions/setup/js/add_workflow_run_comment.cjs Validates discussion endpoints.
actions/setup/js/add_reaction_and_edit_comment.cjs Validates discussion endpoint numbers.

Review details

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Suppressed comments (1)

actions/setup/js/add_workflow_run_comment.cjs:437

  • The discussion_comment format is not actually validated: a missing/invalid comment ID, extra segments, a partial discussion number, or a non-positive number passes this finite check. Match the complete documented shape and require a positive safe discussion number.
    const discussionNumber = parseInt(endpoint.split(":")[1], 10);
    if (!Number.isFinite(discussionNumber)) {
      throw new Error(`${ERR_VALIDATION}: Invalid discussion endpoint: ${endpoint}`);
    }
  • Files reviewed: 18/18 changed files
  • Comments generated: 8
  • Review effort level: Balanced

Comment thread actions/setup/js/push_repo_memory.cjs Outdated
Comment on lines 50 to 54
@@ -54,6 +54,19 @@ async function main() {
const formatJSON = process.env.FORMAT_JSON === "true";
Comment on lines +30 to +33
const port = parseInt(process.env.GH_AW_SAFE_OUTPUTS_PORT || "3001", 10);
if (!Number.isFinite(port) || port <= 0 || port > 65535) {
throw new Error("GH_AW_SAFE_OUTPUTS_PORT must be a valid port number");
}
Comment on lines +120 to +123
const assignToAgentErrorCount = parseInt(process.env.GH_AW_ASSIGNMENT_ERROR_COUNT || "0", 10);
if (!Number.isFinite(assignToAgentErrorCount) || assignToAgentErrorCount < 0) {
throw new Error(`${ERR_VALIDATION}: GH_AW_ASSIGNMENT_ERROR_COUNT must be a non-negative integer`);
}
Comment on lines +175 to +178
const maxCount = parseInt(process.env.GH_AW_NOOP_MAX || "0", 10);
const limitedMaxCount = Number.isFinite(maxCount) && maxCount > 0 ? maxCount : 0;
const allNoopItems = (result.items || []).filter(/** @param {any} item */ item => item.type === "noop");
const noopItems = maxCount > 0 ? allNoopItems.slice(0, maxCount) : allNoopItems;
const noopItems = limitedMaxCount > 0 ? allNoopItems.slice(0, limitedMaxCount) : allNoopItems;
Comment thread actions/setup/js/check_rate_limit.cjs Outdated
Comment on lines +46 to +50
const maxRuns = parseInt(process.env.GH_AW_RATE_LIMIT_MAX?.trim() || "5", 10);
const windowMinutes = parseInt(process.env.GH_AW_RATE_LIMIT_WINDOW?.trim() || "60", 10);
if (!Number.isFinite(maxRuns) || maxRuns <= 0 || !Number.isFinite(windowMinutes) || windowMinutes <= 0) {
throw new Error("Rate limit maximum and window must be positive integers");
}
Comment on lines +422 to +425
const discussionNumber = parseInt(endpoint.split(":")[1], 10);
if (!Number.isFinite(discussionNumber)) {
throw new Error(`${ERR_VALIDATION}: Invalid discussion endpoint: ${endpoint}`);
}
Comment on lines +267 to +270
const discussionNumber = parseInt(endpoint.split(":")[1], 10);
if (!Number.isFinite(discussionNumber)) {
throw new Error(`${ERR_VALIDATION}: Invalid discussion endpoint: ${endpoint}`);
}
Comment on lines +47 to 57
const runStartedAt = Date.parse(run.started_at ?? "");
const existingStartedAt = Date.parse(existing.started_at ?? "");
if (!Number.isFinite(runStartedAt)) {
continue;
}
if (!Number.isFinite(existingStartedAt)) {
continue;
}
if (runStartedAt > existingStartedAt) {
latestByName.set(run.name, run);
}
@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot this PR still needs forward progress before maintainer review.

  • Blocking review feedback is still pointing at actions/setup/js/check_runs_helpers.cjs selecting a stale run when the existing timestamp is invalid.
  • Please fix that regression, rerun the targeted JS validations for the touched files, and leave a concise maintainer handoff with exact commands and outcomes.
  • Refresh the branch if possible and run the pr-finisher skill before handing back.

Failed checks:

Run: https://github.com/github/gh-aw/actions/runs/32552825826

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 24.2 AIC · ⌖ 8.28 AIC · ⊞ 9.5K ·
Comment /souschef to run again

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>

Copilot AI commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

@copilot this PR still needs forward progress before maintainer review.

  • Blocking review feedback is still pointing at actions/setup/js/check_runs_helpers.cjs selecting a stale run when the existi...

Addressed in 486f53c5d9. Valid valid-timestamp runs now replace an earlier same-name run with an invalid timestamp; added regression coverage. Also fixed the prior JS shard failure (core is not defined for malformed dispatch context). Passed: cd /home/runner/work/gh-aw/gh-aw/actions/setup/js && npm run test:js -- check_runs_helpers.test.cjs check_daily_aic_workflow_guardrail.test.cjs --no-file-parallelism (57 tests) and npm run lint:cjs -- --ignore-path ../../../.prettierignore. make agent-report-progress ran impacted JS tests successfully but its lint subprocess is blocked in this sandbox by pre-existing TypeScript config/tooling drift (moduleResolution=node10 removed; missing Node type definitions). CI on this pushed HEAD is stale and needs a maintainer re-trigger.

@pelikhan

Copy link
Copy Markdown
Collaborator

@copilot resolve the merge conflicts on this branch.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot this PR is merge-conflicted and still needs forward progress before maintainer review.

  • Please run make merge-main to rebase/resolve the branch against the latest main and push the conflict resolution.
  • After resolving conflicts, address any remaining blocking review feedback, rerun the relevant validations, and finish with the pr-finisher skill.
  • Leave a concise maintainer handoff with exact commands and outcomes.

Run: https://github.com/github/gh-aw/actions/runs/32573431024

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 9.09 AIC · ⌖ 8.39 AIC · ⊞ 9.5K ·
Comment /souschef to run again

…r-input-parsing-validation

# Conflicts:
#	actions/setup/js/check_daily_aic_workflow_guardrail.cjs

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

Copilot AI commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

@copilot resolve the merge conflicts on this branch.

Resolved and pushed in merge commit 87c3eaa. The branch now includes current origin/main; the sole conflict in actions/setup/js/check_daily_aic_workflow_guardrail.cjs was resolved by retaining main’s malformed-context behavior. Focused tests passed: npm run test:js -- check_daily_aic_workflow_guardrail.test.cjs check_runs_helpers.test.cjs --no-file-parallelism (57 tests), plus npm run lint:cjs -- --ignore-path ../../../.prettierignore.

Copilot AI and others added 2 commits August 22, 2026 12:55
…r-input-parsing-validation

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>

Copilot AI commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

@copilot this PR is merge-conflicted and still needs forward progress before maintainer review.

  • Please run make merge-main to rebase/resolve the branch against the latest main and push the confli...

Resolved and pushed in 7d97ae2 (including merge c54fb47 from current main). make merge-main, make fmt, make lint, make recompile, make agent-report-progress, focused JS tests (254 tests), and go test ./pkg/workflow -run TestExchangeOTLPWorkloadIdentityScriptInSync -count=1 passed. make test now passes the workload-identity sync check but has unrelated completion integration failures (write |1: file already closed). CI on this agent-pushed HEAD is stale and needs a maintainer re-trigger.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot this PR still needs forward progress before maintainer review.

Failed checks to address:

There is also open review feedback from copilot-pull-request-reviewer. Please resolve the remaining review items, refresh the branch if needed, and run the pr-finisher skill before pushing the next revision.

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 33 AIC · ⌖ 8.29 AIC · ⊞ 9.5K ·
Comment /souschef to run again

Copilot AI and others added 3 commits August 22, 2026 13:50
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
…r-input-parsing-validation

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>

Copilot AI commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

@copilot this PR still needs forward progress before maintainer review.

Failed checks to address:...

Addressed in c06c59786e after refreshing through origin/main (f9d5d7b5de). Passed: make test-impacted-js BASE_REF=origin/main, the exact CI custom-linter command, focused npm run test:js -- check_rate_limit.test.cjs check_runs_helpers.test.cjs --no-file-parallelism (49 tests), make agent-report-progress, make fmt, and make lint. The prior impacted CI failures were stale at 7d97ae2 and root-caused to unavailable merge-base history; current main's test-selection logic resolves it. make test-unit passed; make test remains blocked by an unrelated current-main Cobra concurrent map writes failure in pkg/cli.TestCommandProviderInterface. CI on this agent-pushed HEAD needs a maintainer re-trigger.

@github-actions

Copy link
Copy Markdown
Contributor

🛠️ Agentic Maintenance updated this pull request branch.

View workflow run

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot this PR still needs forward progress before maintainer review.

There is still open review feedback to resolve, and the branch was just refreshed by maintenance. Please address the remaining blocking review items, confirm the branch is up to date, rerun the relevant validations, and finish with the pr-finisher skill.

Run: https://github.com/github/gh-aw/actions/runs/32578113366

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 20.3 AIC · ⌖ 8.22 AIC · ⊞ 9.5K ·
Comment /souschef to run again

Copilot AI and others added 2 commits August 22, 2026 14:24
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
…r-input-parsing-validation

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>

Copilot AI commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

@copilot this PR still needs forward progress before maintainer review.

There is still open review feedback to resolve, and the branch was just refreshed by maintenance. Please address the remaining ...

Refreshed through current main in d08ebd2665; the timestamp regression is already fixed and covered by check_runs_helpers.test.cjs. Passed make fmt, make lint, focused helper tests (18), make test-unit, make agent-report-progress (115 impacted JS tests), and make recompile. make test still has the existing unrelated completion integration failures (write |1: file already closed in pkg/cli). CI on this agent-pushed HEAD needs a maintainer re-trigger.

@pelikhan
pelikhan merged commit 3d92993 into main Aug 22, 2026
41 checks passed
@pelikhan
pelikhan deleted the copilot/eslint-monster-input-parsing-validation branch August 22, 2026 15:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[eslint-monster] actions/setup/js input parsing and boundary validation lint slice

4 participants