Skip to content

SPDD 2026-07-25: strengthen normative specs across ADRs 27479, 27523, 27626, 27639, 27707 - #48041

Merged
pelikhan merged 2 commits into
mainfrom
copilot/spdd-daily-spec-work-plan-2026-07-25
Jul 25, 2026
Merged

SPDD 2026-07-25: strengthen normative specs across ADRs 27479, 27523, 27626, 27639, 27707#48041
pelikhan merged 2 commits into
mainfrom
copilot/spdd-daily-spec-work-plan-2026-07-25

Conversation

Copilot AI commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Five Draft ADRs had weak or missing normative sections in Part 2, and safe-outputs.md didn't document the dual scope of allowed-domains. This batch addresses the P0/P1 spec gaps and promotes all five to Accepted.

ADR-27479 — Comment Memory

  • Added ### Safeguards to Part 2: MUST constraints for the 16 KiB per-file and 48 KiB total caps, with source pinned to actions/setup/js/comment_memory_helpers.cjs
  • Added ### Norms to Part 2: constants, spec, and setup_comment_memory_files.test.cjs MUST stay in sync

ADR-27523 — actionpins helpers

  • Status: Draft → Accepted
  • Added ### Operations to Part 2: initWarnings(ctx) MUST be called before any ctx.Warnings write in all ResolveActionPin code paths; inline nil-guards MUST NOT substitute

ADR-27626 — sandbox.agent.version

  • Status: Draft → Accepted
  • Codemod Migration item 3: added explicit MUST NOT — no version key emitted when migrating false/"disable" forms
  • Added ### Norms: MUST handle all YAML numeric types (int, int8int64, uint, uint8uint64, float32, float64) with string normalization before writing sandbox.agent.version

ADR-27639 — allowed-domains parity

  • Status: Draft → Accepted
  • Updated docs/src/content/docs/reference/safe-outputs.md: safe-outputs.allowed-domains applies to both output sanitization and the sanitized input activation step — previously undocumented dual scope
  • Analysis: TestComputeTextStepIncludesAllowedDomainsEnv confirmed in pkg/workflow/compute_text_lazy_test.go:434, verifying GH_AW_ALLOWED_DOMAINS in the compiled sanitized step

ADR-27707 — tools.github.mode unification

  • Status: Draft → Accepted
  • Added ### Mode × Type Tie-Break: when tools.github.mode is local/remote and tools.github.type is also set, tools.github.type MUST win for transport selection
  • Added ### Entities table enumerating tools.github.mode, tools.github.type, and features.cli-proxy with their value domains and invariants

Copilot AI linked an issue Jul 25, 2026 that may be closed by this pull request
11 tasks
…utputs.md

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Review daily SPDD spec work plan for ADR specifications SPDD 2026-07-25: strengthen normative specs across ADRs 27479, 27523, 27626, 27639, 27707 Jul 25, 2026
Copilot AI requested a review from pelikhan July 25, 2026 16:32
@pelikhan
pelikhan marked this pull request as ready for review July 25, 2026 16:44
Copilot AI review requested due to automatic review settings July 25, 2026 16:44
@pelikhan
pelikhan merged commit a40c161 into main Jul 25, 2026
@pelikhan
pelikhan deleted the copilot/spdd-daily-spec-work-plan-2026-07-25 branch July 25, 2026 16:44

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

Strengthens five ADR specifications, promotes them to Accepted, and documents allowed-domains dual sanitization scope.

Changes:

  • Adds normative safeguards, synchronization, sequencing, migration, and tie-break requirements.
  • Documents formal GitHub access-mode entities and invariants.
  • Clarifies input and output domain sanitization behavior.
Show a summary per file
File Description
docs/adr/27479-...md Adds comment-memory safeguards and synchronization norms.
docs/adr/27523-...md Adds warning-initialization operation requirements.
docs/adr/27626-...md Specifies firewall migration and numeric normalization.
docs/adr/27639-...md Marks allowed-domain parity ADR Accepted.
docs/adr/27707-...md Defines mode/type precedence and entities.
docs/src/content/docs/reference/safe-outputs.md Documents dual sanitization scope.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 6/6 changed files
  • Comments generated: 4
  • Review effort level: Medium

Comment on lines +62 to +65
### Operations

1. `initWarnings(ctx)` **MUST** be called before any write to `ctx.Warnings` within every code path in `ResolveActionPin`, including early-return branches.
2. Every code path in `ResolveActionPin` **MUST NOT** write to `ctx.Warnings` without a prior call to `initWarnings`; inline `if ctx.Warnings == nil` guards **MUST NOT** be used as a substitute.

1. The `normalizeFirewallVersion` helper **MUST** handle all numeric YAML types that a YAML parser may produce for a bare numeric version value, including at minimum: `int` (and its sized variants `int8`, `int16`, `int32`, `int64`), `uint` (and its sized variants `uint8`, `uint16`, `uint32`, `uint64`), `float32`, and `float64`.
2. For each of these numeric types, the helper **MUST** convert the value to its canonical decimal string representation before writing it as `sandbox.agent.version`.
3. Any future addition of YAML numeric sub-types (e.g., `complex128`) **MUST** be handled explicitly rather than falling through to a default that could silently lose precision or produce a malformed version string.
|---|---|---|
| `tools.github.mode` | `"gh-proxy"` \| `"local"` \| `"remote"` | `"gh-proxy"` activates CLI-proxy guidance and suppresses MCP server registration. `"local"` and `"remote"` select MCP transport (superseded by `tools.github.type` when both are set). Absent: fall back to `features.cli-proxy`. |
| `tools.github.type` | `"local"` \| `"remote"` | When present, exclusively determines MCP transport type, overriding the transport-selector meaning of `tools.github.mode`. |
| `features.cli-proxy` | `true` \| `false` (boolean) | Legacy access-mode flag. Evaluated only when `tools.github.mode` is absent. `true` is semantically equivalent to `tools.github.mode: gh-proxy`. |

**Domain Filtering** (`allowed-domains`): Controls which domains are allowed in URLs. URLs from other domains are replaced with `(redacted)`. Accepts specific domain strings or [ecosystem identifiers](/gh-aw/reference/network/#ecosystem-identifiers):

> **Note:** `safe-outputs.allowed-domains` applies to **both** output sanitization (the domains the agent may reference in its outputs) and input sanitization (the `sanitized` activation step that redacts URLs in incoming issue/PR text before passing it to the agent). Domains listed here are therefore permitted in both directions.
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This pull request is included in a new release.

Release: v0.83.4

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[spdd] Daily spec work plan - 2026-07-25

3 participants