Skip to content

Remove Request.Changes and -Changes parameter (breaking change)#220

Merged
blindzero merged 5 commits intomainfrom
copilot/remove-changes-request-parameter
Feb 22, 2026
Merged

Remove Request.Changes and -Changes parameter (breaking change)#220
blindzero merged 5 commits intomainfrom
copilot/remove-changes-request-parameter

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 22, 2026

Request.Changes introduced ambiguous third-input semantics alongside Intent and Context. Delta-like instructions belong explicitly in Request.Intent; there is no deprecation window.

Core

  • IdleLifecycleRequest – removed $Changes property, constructor parameter, and validation
  • New-IdleRequestObject / New-IdleRequest – removed -Changes parameter and all associated ScriptBlock validation and cloning
  • New-IdlePlanObject – removed Changes from request snapshot
  • Resolve-IdleTemplateString – removed Request.Changes from $allowedRoots and from the backslash-escape lookahead pattern
  • ConvertTo-IdlePlanExportObject – removed changes field from plan export mapping

Tests

  • Removed all Changes-related test cases; no blacklist assertions added
  • Removed $Changes from New-IdleTestRequest helper; removed "changes": null from plan-export fixture

Docs

  • New-IdleRequest.md – removed -Changes from SYNTAX and parameter table
  • workflows.md – removed Request.Changes.* from allowed-roots table
  • extensibility.md – removed Changes from optional fields list
  • plan-export.md – removed changes from spec example and field rules
Original prompt

This section details on the original issue you should resolve

<issue_title>Remove Request.Changes and -Changes request parameter (use Request.Intent + Request.Context only)</issue_title>
<issue_description>## Problem Statement

IdLE currently supports an optional request parameter/property named Changes (e.g., New-IdleRequest -Changes ...) which is intended to carry precomputed deltas.

In practice, Changes introduces ambiguity and duplicated semantics with the primary workflow input model:

  • With the adoption of Request.Intent and Request.Context, Changes becomes a third top-level input concept that is easy to misunderstand (“is it input, delta, state, or audit info?”).
  • The Changes operational mode is not fully documented and is not consistently implemented as a first-class execution mode across steps/providers.
  • Changes increases the request surface area and complicates validation, security, and documentation.

To preserve consistency and reduce ambiguity, IdLE should have a single canonical request input model:

  • Request.Intent (what to do)
  • Request.Context (what is known; read-only)

Any delta-like instructions can be modeled explicitly within Request.Intent where needed, rather than as a separate top-level Changes block.

Proposed Solution

Remove Changes completely and immediately as a breaking change:

  • Remove -Changes parameter from public request creation cmdlets (e.g., New-IdleRequest, New-IdleRequestObject).
  • Remove the Changes property from the request/domain model (e.g., IdleLifecycleRequest).
  • Remove Request.Changes.* as an allowed root for template/value path resolution (if currently supported).
  • Remove Changes from plan request snapshots / plan export.
  • Update all docs/examples/tests to no longer mention or use Changes.

No deprecation window is introduced: the feature is removed consistently and comprehensively.

Alternatives Considered

  1. Keep Changes as an optional “advanced mode”
  • Maintains ambiguity and doubles request semantics; increases long-term maintenance.
  1. Deprecate first, remove later
  • Adds transitional complexity and prolongs inconsistent behavior; not aligned with IdLE’s consistency-first approach for breaking changes.

Impact

  • Breaking change for any host/workflow that currently supplies Changes.
  • Template strings/conditions referencing Request.Changes.* will fail and must be updated.
  • Plan exports will no longer contain a Changes block.

The benefit is a simpler, clearer request model and reduced maintenance surface.

Dependencies

  • Recommended alignment with the request schema separation issue (Request.Intent / Request.Context).
  • This issue can be implemented before or together with the schema split, but the end state must have no Changes.

Definition of Done (Step-0-Ready / Agent-Safe)

Design / Contracts

  • Document that IdLE request inputs are limited to Request.Intent and Request.Context (no Changes).
  • Document replacement guidance:
    • if callers used Changes as “delta”, model such instructions explicitly under Request.Intent (host responsibility).

Implementation

  • Remove -Changes from New-IdleRequest and any related public API cmdlets.
  • Remove Changes from the request/domain model.
  • Remove any internal handling/serialization of Changes (including plan snapshot/export).
  • Remove Request.Changes.* from template/value-path resolution allow-lists.
  • Ensure validation fails fast if a request payload contains a Changes property.

Tests (Pester)

  • Public API test: New-IdleRequest -Changes is no longer accepted (parameter no longer exists).
  • Validation test: request payload containing Changes fails fast with a clear error.
  • Template resolution test: Request.Changes.* is not allowed and produces a clear error.
  • Snapshot/export test: plan request snapshot contains no Changes.

Docs / Examples

  • Remove all documentation references to Changes.
  • Update any examples that used Changes to use Request.Intent instead.
  • Ensure docs and reference pages do not mention -Changes or Request.Changes.

Non-Goals (explicit)

  • No deprecation phase or backward compatibility shims.
  • No automatic migration from Changes to another field by the engine (host must update).</issue_description>

<agent_instructions>No legacy attachments, mappings, remarks, comments, aliases, documentation references or what so ever to removed -Changes, although breaking change. Make all consistent</agent_instructions>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
Copilot AI changed the title [WIP] Remove Request.Changes and -Changes request parameter Remove Request.Changes and -Changes parameter (breaking change) Feb 22, 2026
Copilot AI requested a review from blindzero February 22, 2026 16:10
Comment thread tests/Core/New-IdleRequest.Tests.ps1 Outdated
…dlePlanObject

Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
Comment thread tests/Core/Resolve-IdleWorkflowTemplates.Tests.ps1 Outdated
Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
Copy link
Copy Markdown
Owner

@blindzero blindzero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot why any test to deny changes root? we check against allowed roots anyways. tests against all denied is impossible. so remove this

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Feb 22, 2026

@copilot why any test to deny changes root? we check against allowed roots anyways. tests against all denied is impossible. so remove this

Already done in 57adc96 — the test case and template-changes-root.psd1 fixture were removed then.

@blindzero blindzero marked this pull request as ready for review February 22, 2026 16:45
Copilot AI review requested due to automatic review settings February 22, 2026 16:45
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements a breaking change that removes the Request.Changes property and -Changes parameter from IdLE's request model, simplifying the input semantics to use only Request.Intent and Request.Context. The change addresses ambiguity introduced by having a third top-level input concept, enforcing a cleaner separation where delta-like instructions must be explicitly modeled within Request.Intent.

Changes:

  • Removed Changes property from the IdleLifecycleRequest domain model class, including constructor parameter and validation logic
  • Removed -Changes parameter from public request creation cmdlets (New-IdleRequest and New-IdleRequestObject)
  • Updated template resolution, plan snapshots, and plan exports to remove all Changes references
  • Removed all test cases and fixtures related to Changes
  • Updated documentation to remove all mentions of Request.Changes from cmdlet references, workflow guides, extensibility docs, and plan export specifications

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/IdLE.Core/Private/IdleLifecycleRequest.ps1 Removed Changes property, constructor parameter, and validation from domain model class
src/IdLE.Core/Public/New-IdleRequestObject.ps1 Removed -Changes parameter, ScriptBlock validation, cloning logic, and constructor argument
src/IdLE/Public/New-IdleRequest.ps1 Removed -Changes parameter from public API wrapper
src/IdLE.Core/Public/New-IdlePlanObject.ps1 Removed Changes from request snapshot in plan object
src/IdLE.Core/Private/Resolve-IdleTemplateString.ps1 Removed Request.Changes from allowed template roots and backslash escape pattern
src/IdLE.Core/Private/ConvertTo-IdlePlanExportObject.ps1 Removed Changes and Delta from plan export field mapping
tests/Core/New-IdleRequest.Tests.ps1 Removed all test cases for Changes parameter including validation tests
tests/_testHelpers.ps1 Removed -Changes parameter from test helper function
tests/fixtures/plan-export/expected/plan-export.json Removed "changes": null from expected fixture output
docs/reference/cmdlets/New-IdleRequest.md Removed -Changes from syntax, parameter table, and description
docs/use/workflows.md Removed Request.Changes.* from allowed template roots table
docs/extend/extensibility.md Removed Changes from optional request fields list
docs/reference/specs/plan-export.md Removed changes field from specification examples and field rules

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 57adc96a94

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/IdLE.Core/Public/New-IdlePlanObject.ps1
@github-actions
Copy link
Copy Markdown

Code Coverage Report

Overall Project 72.11% 🍏

There is no coverage information present for the Files changed

@blindzero blindzero merged commit 3b9d08b into main Feb 22, 2026
8 checks passed
@blindzero blindzero deleted the copilot/remove-changes-request-parameter branch February 27, 2026 20:04
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.

Remove Request.Changes and -Changes request parameter (use Request.Intent + Request.Context only)

3 participants