Skip to content

[aw] Design Decision Gate 🏗️ had a request rejected #67459

Description

@github-actions

Workflow Failure

Workflow: Design Decision Gate 🏗️
Branch: copilot/add-yaml-json-schemas
Run: https://github.com/github/gh-aw/actions/runs/38062199361
Pull Request: #67439

Warning

Task Could Not Be Completed: The workflow recorded a report_incomplete signal: the task was not completed or completion could not be confirmed. See the reported reason and diagnostics below.

Error details:
invalid_safe_outputs
Agent finished without emitting a terminal safe output; task completion could not be confirmed.
safeoutputs MCP gateway registered 0 tools during setup; the agent could not emit any safe outputs. This is a gateway infrastructure failure, not a normal no-op. Check the MCP gateway startup logs for ECONNRESET errors or delayed backend registration and re-run the workflow.
codemode: {"content":[{"type":"text","text":"Script failed\nWall time 0.1 seconds\nOutput:\n"},{"type":"text","text":"{\"title\":\"Add declarative JSON schema validation for memory\",\"body\":\"Memory workflows can now declare required inline JSON and JSONL schemas in YAML, without a custom validation script. The schemas are enforced across repo-, cache-, and drive-memory validation and persistence paths.\\n\\n- **Configuration:** Add `validation.json-schemas` entries with an exact relative `file`, `format` (`json` or `jsonl`), and inline `schema`. Compilation rejects invalid paths, duplicate or excluded targets, unknown fields, and unsupported schema keywords.\\n- **Validation:** Reuse the existing runtime validator. JSONL records are checked independently; missing files, malformed content, and schema violations fail with file and field diagnostics.\\n- **Persistence gates:** Schema-only configuration activates validation at agent-time and persistence boundaries. Schemas run before an optional custom script, and the final candidate is revalidated before persistence.\\n\\n```yaml\\nvalidation:\\n  json-schemas:\\n    - file: state.json\\n      format: json\\n      schema:\\n        type: object\\n        required: [version, items]\\n        additionalProperties: false\\n        properties:\\n          version:\\n            enum: [1]\\n          items:\\n            type: array\\n            items:\\n              type: string\\n```(n/redacted)\\nSupported schema keywords remain intentionally limited to `type`, `enum`, `required`, `properties`, `additionalProperties: false`, `items`, and standalone `oneOf` or `anyOf`.\\n\\n\\n\\n- Fixes #67435\",\"labels\":[]}"},{"type":"text","text":"Script error:\nSyntaxError: Expected property name or '}' in JSON at position 48822 (line 117 column 2)\n    at (input):118:1\n    at parse (native)\n    at (anonymous) (codemode.js:7:22)\n\nTool calls made before the failure (they are not undone): read (ok), read (ok)"}],"details":{"calls":[{"id":"toolu_011uwVsnYzB64QnwoPCLh595/1","name":"read","args":"{\"path\":\"/tmp/gh-aw/agent/pr.json\"}","status":"ok","durationMs":3.4853759999996328},{"id":"toolu_011uwVsnYzB64QnwoPCLh595/2","name":"read","args":"{\"path\":\"/tmp/gh-aw/agent/pr-files.json\"}","status":"ok","durationMs":5.623508000000584}]},"isError":true}
bash: cd /home/runner/work/gh-aw/gh-aw && cat <<'EOF' > /tmp/gh-aw/agent/comment.md
### 🏗️ Design Decision Gate — ADR Required

This PR makes significant changes to core business logic (746 new lines across `pkg/workflow/`, `pkg/parser/`, and `actions/setup/js/`) but does not have a linked Architecture Decision Record (ADR).

📄 **Draft ADR committed**: `docs/adr/67439-declarative-json-schema-validation-for-memory.md` — review and complete it before merging.

> 🔒 *This PR cannot merge until an ADR is linked in the PR body.*

<details>
<summary>📋 What to do next</summary>

1. **Review the draft ADR** committed to your branch — it was generated from the PR diff, the PR description, and linked issue #67435
2. **Complete the missing sections** — add context the AI couldn't infer, refine the decision rationale, and list real alternatives you considered
3. **Commit the finalized ADR** to `docs/adr/` on your branch
4. **Reference the ADR in this PR body** by adding a line such as:
   > ADR: [ADR-67439: Declarative Inline JSON Schema Validation for Memory Files](docs/adr/67439-declarative-json-schema-validation-for-memory.md)

Once an ADR is linked in the PR body, this gate will re-run and verify the implementation matches the decision.

</details>

<details>
<summary>🔎 Evidence used</summary>

- No `implementation` label; enforcement triggered by code volume (746 additions in default business-logic directories, threshold 100; no `.design-gate.yml` override).
- No existing ADR for this PR: `docs/adr/` contains ADRs up to `67425-*`, none referencing #67439.
- PR body links `Fixes #67435`; that issue contains a goal and implementation plan but none of the four Nygard sections.
- Decision inferred from: `validation.json-schemas` frontmatter surface (`pkg/workflow/memory_validation_config.go`, `pkg/parser/schemas/main_workflow_schema.json`), the new shared keyword contract (`actions/setup/js/memory_schema_contract.cjs`, replacing the duplicated guard in `ledger_store.cjs`), and the persistence gates in `push_repo_memory.cjs` / `validate_memory_step.cjs`.

</details>

<details>
<summary>❓ Why ADRs Matter</summary>

> *"AI made me procrastinate on key design decisions. Because refactoring was cheap, I could always say 'I'll deal with this later.' Deferring decisions corroded my ability to think clearly."*

ADRs create a searchable, permanent record of **why** the codebase looks the way it does. Future contributors (and your future self) will thank you.

</details>

<details>
<summary>📋 Michael Nygard ADR Format Reference</summary>

An ADR must contain these four sections to be considered complete:

- **Context** — What is the problem? What forces are at play?
- **Decision** — What did you decide? Why?
- **Alternatives Considered** — What else could have been done?
- **Consequences** — What are the trade-offs (positive and negative)?

All ADRs are stored in `docs/adr/` as Markdown files numbered by PR number.

</details>
EOF
safeoutputs push_to_pull_request_branch '{"message":"docs: add draft ADR-67439 for declarative memory JSON schema validation"}': {"content":[{"type":"text","text":"/bin/bash: line 56: safeoutputs: command not found\n\n\nCommand exited with code 127"}],"structuredContent":{"output":"/bin/bash: line 56: safeoutputs: command not found\n","truncated":false,"exit_code":127,"wall_time_seconds":0},"isError":true}
bash: ls /home/runner/work/_temp/gh-aw/mcp-cli/bin /tmp/gh-aw/pi-agent-dir/bin 2>/dev/null: {"content":[{"type":"text","text":"/home/runner/work/_temp/gh-aw/mcp-cli/bin:\n\n\nCommand exited with code 2"}],"structuredContent":{"output":"/home/runner/work/_temp/gh-aw/mcp-cli/bin:\n","truncated":false,"exit_code":2,"wall_time_seconds":0},"isError":true}
bash: cd /home/runner/work/gh-aw/gh-aw && jq -c -n --arg m "docs: add draft ADR-67439 for declarative memory JSON schema validation" '{type:"push_to_pull_request_branch",message:$m}' >> "$GH_AW_SAFE_OUTPUTS" && jq -Rs '{type:"add_comment",body:.}' -c /tmp/gh-aw/agent/comment.md >> "$GH_AW_SAFE_OUTPUTS" && wc -l "$GH_AW_SAFE_OUTPUTS" && cut -c1-80 "$GH_AW_SAFE_OUTPUTS": {"content":[{"type":"text","text":"/bin/bash: line 1: /home/runner/work/_temp/gh-aw/safeoutputs/outputs.jsonl: Read-only file system\n\n\nCommand exited with code 1"}],"structuredContent":{"output":"/bin/bash: line 1: /home/runner/work/_temp/gh-aw/safeoutputs/outputs.jsonl: Read-only file system\n","truncated":false,"exit_code":1,"wall_time_seconds":0},"isError":true}
Driver exit code: 0
Failure classification: request_rejection
Retry attempts observed: 0

This is a structured incompletion signal (report_incomplete), not confirmation of a completed task. Do not treat accompanying safe outputs (e.g., comments) as evidence that the requested review or action was completed.

Action Required

Assign this issue to an agent to debug and fix the issue.

Debug with any coding agent

Use this prompt with any coding agent (GitHub Copilot, Claude, Gemini, etc.):

Debug the agentic workflow failure using https://raw.githubusercontent.com/github/gh-aw/main/debug.md

The failed workflow run is at https://github.com/github/gh-aw/actions/runs/38062199361
Manually invoke the agent

Debug this workflow failure using your favorite Agent CLI and the agentic-workflows prompt.

Tip

Stop reporting this workflow as a failure

To stop a workflow from creating failure issues, set report-failure-as-issue: false in its frontmatter:

safe-outputs:
  report-failure-as-issue: false

Generated from Design Decision Gate 🏗️ · pi · 104.5 AIC · ◷

  • expires on Oct 11, 2026, 3:14 AM UTC

Activity

  1. github-actions commented on Oct 10, 2026

    @github-actions
    ContributorAuthor

    Agent job 38073742197 failed.

    Warning

    Task Could Not Be Completed: The workflow recorded a report_incomplete signal: the task was not completed or completion could not be confirmed. See the reported reason and diagnostics below.

    Error details:
    invalid_safe_outputs
    Agent finished without emitting a terminal safe output; task completion could not be confirmed.
    safeoutputs MCP gateway registered 0 tools during setup; the agent could not emit any safe outputs. This is a gateway infrastructure failure, not a normal no-op. Check the MCP gateway startup logs for ECONNRESET errors or delayed backend registration and re-run the workflow.
    bash: cd /home/runner/work/gh-aw/gh-aw && safeoutputs push_to_pull_request_branch '{"message":"docs: add draft ADR-67481 for unchecked deferred close linter"}': {"content":[{"type":"text","text":"/bin/bash: line 1: safeoutputs: command not found\n\n\nCommand exited with code 127"}],"structuredContent":{"output":"/bin/bash: line 1: safeoutputs: command not found\n","truncated":false,"exit_code":127,"wall_time_seconds":0},"isError":true}
    bash: ls /home/runner/work/_temp/gh-aw/mcp-cli/bin/ /tmp/gh-aw/pi-agent-dir/bin/ 2>/dev/null: {"content":[{"type":"text","text":"/home/runner/work/_temp/gh-aw/mcp-cli/bin/:\n\n\nCommand exited with code 2"}],"structuredContent":{"output":"/home/runner/work/_temp/gh-aw/mcp-cli/bin/:\n","truncated":false,"exit_code":2,"wall_time_seconds":0},"isError":true}
    bash: cd /home/runner/work/gh-aw/gh-aw && node -e '
    const fs=require("fs");
    const out=process.env.GH_AW_SAFE_OUTPUTS;
    const body=fs.readFileSync("/tmp/gh-aw/agent/comment.md","utf8");
    const entries=[
     {type:"push_to_pull_request_branch",branch:"linter-miner/unchecked-deferred-close-d23cdf3b8bd27b8e",message:"docs: add draft ADR-67481 for unchecked deferred close linter"},
     {type:"add_comment",item_number:67481,body}
    ];
    fs.mkdirSync(require("path").dirname(out),{recursive:true});
    for(const e of entries) fs.appendFileSync(out, JSON.stringify(e)+"\n");
    console.log("wrote",out);
    ' && wc -l "$GH_AW_SAFE_OUTPUTS": {"content":[{"type":"text","text":"node:fs:2482\n    return binding.writeFileUtf8(\n                   ^\n\nError: EROFS: read-only file system, open '/home/runner/work/_temp/gh-aw/safeoutputs/outputs.jsonl'\n    at Object.writeFileSync (node:fs:2482:20)\n    at Object.appendFileSync (node:fs:2564:6)\n    at [eval]:10:28\n    at runScriptInThisContext (node:internal/vm:219:10)\n    at node:internal/process/execution:451:12\n    at [eval]-wrapper:6:24\n    at runScriptInContext (node:internal/process/execution:449:60)\n    at evalFunction (node:internal/process/execution:283:30)\n    at evalTypeScript (node:internal/process/execution:295:3)\n    at node:internal/main/eval_string:71:3 {\n  errno: -30,\n  code: 'EROFS',\n  syscall: 'open',\n  path: '/home/runner/work/_temp/gh-aw/safeoutputs/outputs.jsonl'\n}\n\nNode.js v24.21.0\n\n\nCommand exited with code 1"}],"structuredContent":{"output":"node:fs:2482\n    return binding.writeFileUtf8(\n                   ^\n\nError: EROFS: read-only file system, open '/home/runner/work/_temp/gh-aw/safeoutputs/outputs.jsonl'\n    at Object.writeFileSync (node:fs:2482:20)\n    at Object.appendFileSync (node:fs:2564:6)\n    at [eval]:10:28\n    at runScriptInThisContext (node:internal/vm:219:10)\n    at node:internal/process/execution:451:12\n    at [eval]-wrapper:6:24\n    at runScriptInContext (node:internal/process/execution:449:60)\n    at evalFunction (node:internal/process/execution:283:30)\n    at evalTypeScript (node:internal/process/execution:295:3)\n    at node:internal/main/eval_string:71:3 {\n  errno: -30,\n  code: 'EROFS',\n  syscall: 'open',\n  path: '/home/runner/work/_temp/gh-aw/safeoutputs/outputs.jsonl'\n}\n\nNode.js v24.21.0\n","truncated":false,"exit_code":1,"wall_time_seconds":0},"isError":true}
    Driver exit code: 0
    Failure classification: request_rejection
    Retry attempts observed: 0
    

    This is a structured incompletion signal (report_incomplete), not confirmation of a completed task. Do not treat accompanying safe outputs (e.g., comments) as evidence that the requested review or action was completed.

    Generated from Design Decision Gate 🏗️ · pi · 90.5 AIC · ◷

  2. github-actions commented on Oct 10, 2026

    @github-actions
    ContributorAuthor

    Agent job 38078122711 failed.

    Warning

    Task Could Not Be Completed: The workflow recorded a report_incomplete signal: the task was not completed or completion could not be confirmed. See the reported reason and diagnostics below.

    Error details:
    invalid_safe_outputs
    Agent finished without emitting a terminal safe output; task completion could not be confirmed.
    safeoutputs MCP gateway registered 0 tools during setup; the agent could not emit any safe outputs. This is a gateway infrastructure failure, not a normal no-op. Check the MCP gateway startup logs for ECONNRESET errors or delayed backend registration and re-run the workflow.
    codemode: {"content":[{"type":"text","text":"Script failed\nWall time 0.1 seconds\nOutput:\n"},{"type":"text","text":"{\"title\":\"Select Copilot wire APIs from AWF metadata and surface model mismatches\",\"body\":\"Name-based wire API selection could pair Copilot models with incompatible endpoints, causing mid-run failures that the harness retried. This change uses AWF endpoint metadata and reports mismatches as model misconfiguration.\\n\\n- **Endpoint selection**\\n  - Prefer complete AWF `supported_endpoints`; retain catalog/name fallback when metadata is unavailable.\\n  - Preserve existing preferences when both APIs are supported.\\n  - Reject incompatible overrides or models with no CLI-compatible endpoint before spawn.\\n  - Warn when declared custom-agent models conflict with the session endpoint.\\n\\n- **Retry handling**\\n  - Classify all four mismatch signatures as non-retryable, including failures after `--continue`.\\n  - Capture available model and endpoint details.\\n\\n- **Diagnostics**\\n  - Persist startup and runtime failures as `model_endpoint.mismatch` unified-session events.\\n  - Surface cause, endpoints, and remediation in step summaries, grouped failure reports, and audit.\\n  - Update event types, schema, and specification; redact diagnostic content.\\n\\n\\n\\n- Fixes #67485\",\"labels\":[]}"},{"type":"text","text":"Script error:\nSyntaxError: Expected property name or '}' in JSON at position 48029 (line 93 column 2)\n    at (input):94:1\n    at parse (native)\n    at (anonymous) (codemode.js:7:22)\n\nTool calls made before the failure (they are not undone): read (ok), read (ok)"}],"details":{"calls":[{"id":"toolu_016NJvPdMvFjyZiA4vWzkFqR/1","name":"read","args":"{\"path\":\"/tmp/gh-aw/agent/pr.json\"}","status":"ok","durationMs":5.801316999999472},{"id":"toolu_016NJvPdMvFjyZiA4vWzkFqR/2","name":"read","args":"{\"path\":\"/tmp/gh-aw/agent/pr-files.json\"}","status":"ok","durationMs":7.04830899999979}]},"isError":true}
    bash: cd /home/runner/work/gh-aw/gh-aw && safeoutputs push_to_pull_request_branch '{"message":"docs(adr): add draft ADR-67487 for Copilot wire API selection"}': {"content":[{"type":"text","text":"/bin/bash: line 1: safeoutputs: command not found\n\n\nCommand exited with code 127"}],"structuredContent":{"output":"/bin/bash: line 1: safeoutputs: command not found\n","truncated":false,"exit_code":127,"wall_time_seconds":0},"isError":true}
    bash: ls /home/runner/work/_temp/gh-aw/mcp-cli/bin /tmp/gh-aw/pi-agent-dir/bin 2>/dev/null: {"content":[{"type":"text","text":"/home/runner/work/_temp/gh-aw/mcp-cli/bin:\n\n\nCommand exited with code 2"}],"structuredContent":{"output":"/home/runner/work/_temp/gh-aw/mcp-cli/bin:\n","truncated":false,"exit_code":2,"wall_time_seconds":0},"isError":true}
    Driver exit code: 0
    Failure classification: request_rejection
    Retry attempts observed: 0
    

    This is a structured incompletion signal (report_incomplete), not confirmation of a completed task. Do not treat accompanying safe outputs (e.g., comments) as evidence that the requested review or action was completed.

    Generated from Design Decision Gate 🏗️ · pi · 57.3 AIC · ◷

  3. github-actions commented on Oct 11, 2026

    @github-actions
    ContributorAuthor

    This issue was automatically closed because it expired on 2026-10-11T03:14:21.391Z.

    Closed by Workflow

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions