Skip to content

feat: add brownfield change continuity flow#89

Open
PatrickSys wants to merge 4 commits intomainfrom
feat/brownfield-change-continuity
Open

feat: add brownfield change continuity flow#89
PatrickSys wants to merge 4 commits intomainfrom
feat/brownfield-change-continuity

Conversation

@PatrickSys
Copy link
Copy Markdown
Owner

No description provided.

@PatrickSys
Copy link
Copy Markdown
Owner Author

@codex

Copy link
Copy Markdown

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

Adds a “brownfield change continuity” lane centered on .planning/brownfield-change/CHANGE.md (plus HANDOFF.md / VERIFICATION.md), including deterministic precedence rules between checkpoints vs. the brownfield anchor and explicit widen-only escalation into milestone workflows.

Changes:

  • Introduces brownfield continuity parsing + mismatch detection and exposes it via provenance/lifecycle helpers.
  • Updates core workflow surfaces (resume/progress/quick/map-codebase/new-project/new-milestone/plan) to treat CHANGE.md as the operational anchor, gate on material mismatches, and keep /gsdd-new-project as widen-only when continuity is already concrete.
  • Expands guard/scenario/unit tests and updates distilled design/evidence indices to lock the new contracts.

Reviewed changes

Copilot reviewed 17 out of 21 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/phase.test.cjs Adds unit coverage for brownfield precedence + brownfield mismatch acknowledgement gating.
tests/gsdd.scenarios.test.cjs Extends scenario assertions to ensure generated skills preserve brownfield continuity/widen-only messaging.
tests/gsdd.guards.test.cjs Adds new guard suites for brownfield artifact/continuity/growth contracts and plan anti-drift gates.
post-draft.md Present in PR file list; currently empty.
package.json Removes a keyword entry.
docs/RUNTIME-SUPPORT.md Refines runtime support wording.
distilled/workflows/resume.md Adds brownfield-change detection, strict-match checkpoint precedence, and acknowledgement gating for material mismatches.
distilled/workflows/quick.md Reads brownfield continuity first when present; reframes /gsdd-new-project as widen-only when continuity is concrete.
distilled/workflows/progress.md Reports active brownfield continuity read-only; applies strict-match rule before checkpoint routing.
distilled/workflows/plan.md Adds roadmap phase contract gate + expanded anti-drift plan schema/checker dimensions.
distilled/workflows/new-project.md Treats existing CHANGE.md continuity as widen-only; reuses brownfield artifacts as widening inputs.
distilled/workflows/new-milestone.md Adds explicit brownfield widening inputs + context-preserving guidance for phase design.
distilled/workflows/map-codebase.md Makes /gsdd-new-project recommendation explicitly widen-only.
distilled/README.md Updates “Current Status” header/date label.
distilled/EVIDENCE-INDEX.md Indexes new design decisions and associated evidence locations.
distilled/DESIGN.md Adds D53–D57 decision sections and updates TOC.
bin/lib/provenance.mjs Implements brownfield mismatch classification and strict-match checkpoint precedence; extends provenance snapshot.
bin/lib/lifecycle-state.mjs Adds brownfield-change state extraction + non-phase lifecycle classification.
bin/lib/init-runtime.mjs Updates help text positioning.
README.md Refines qualified-support wording.
CHANGELOG.md Adjusts a milestone “framework state” line wording.

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

Comment on lines 37 to +40
1. **No `.planning/` directory** — route user to run `gsdd init`. Stop.
2. **No `.planning/SPEC.md` or no `.planning/ROADMAP.md`** — `.planning/` exists but the project is not fully initialized (partial init). Route user to run the `/gsdd-new-project` workflow. Stop.
3. **Both exist** — proceed to load state.
2. **If `.planning/brownfield-change/CHANGE.md` exists** — this repo has an active medium-scope brownfield change. Proceed to load brownfield continuity state even if there is no active roadmap.
3. **No `.planning/SPEC.md` or no `.planning/ROADMAP.md`** — `.planning/` exists but the project is not fully initialized (partial init). Route user to run the `/gsdd-new-project` workflow. Stop.
4. **Both exist** — proceed to load state.
});
});

describe('G47 - Brownfield Growth And Milestone Handoff', () => {
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: a708627dc2

ℹ️ 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 distilled/DESIGN.md
Comment on lines +66 to +70
53. [Fail-Closed Milestone And Phase Contracts](#d53---fail-closed-milestone-and-phase-contracts)
54. [Bounded Brownfield Change Folder Contract](#d54---bounded-brownfield-change-folder-contract)
55. [Brownfield Continuity Anchor And Mismatch Split](#d55---brownfield-continuity-anchor-and-mismatch-split)
56. [Executable Brownfield Routing And Widen-Only Escalation](#d56---executable-brownfield-routing-and-widen-only-escalation)
57. [Bounded Brownfield Growth And Context-Preserving Milestone Handoff](#d57---bounded-brownfield-growth-and-context-preserving-milestone-handoff)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Keep public decision counts in sync with DESIGN registry

This commit adds decisions 53–57 to the DESIGN registry, which increases the documented total to 57, but the public docs still claim 52 decisions (e.g., README.md and distilled/README.md), so the documentation invariants now fail and release-facing metadata is inconsistent. Please update the published decision-count claims in the README surfaces whenever new decision sections are added here.

Useful? React with 👍 / 👎.

Comment thread bin/lib/provenance.mjs
Comment on lines +160 to +162
: status.files
.map((file) => file.path)
.filter((filePath) => !ownedPaths.some((ownedPath) => matchesOwnedPath(filePath, ownedPath)));
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Normalize rename paths before brownfield scope checks

The scope mismatch check compares raw status.files[].path values directly against owned-path hints, but for renames git status --short emits paths like old.txt -> new.txt; that combined string will not match exact owned entries (such as new.txt), so in-scope renames are incorrectly flagged as brownfield_scope_mismatch and escalated to acknowledgement-required. Parse rename entries into the destination path (or both sides) before this filter so rename-only changes in owned files don’t trigger false material mismatches.

Useful? React with 👍 / 👎.

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.

2 participants