docs: Finalize the migration guide and test the AI migration prompt - #200
Open
tablackburn wants to merge 1 commit into
Open
docs: Finalize the migration guide and test the AI migration prompt#200tablackburn wants to merge 1 commit into
tablackburn wants to merge 1 commit into
Conversation
Three deliverables for #159: the guide's completeness pass, the first exercise of the AI migration prompt, and the 1.0.0 changelog summary. ## The prompt had never been run. It has now, four times. Built two sample consumers -- a psake one and an Invoke-Build one, each a realistic 0.8.x repository carrying a removed setting, old dependency pins, and a committed 0.14.x docs tree -- and handed the prompt verbatim to fresh agents on two model families, with no other context. The most serious finding was invisible from reading. Agent web-fetch tools commonly do not return the page; they run a small model over it and return a summary. One run measured the cost: three entries silently absent, the result still reading as complete. The prompt now demands the raw file and gives a structural self-check -- the guide ends with a Related section -- so an agent can tell it has a partial copy. Two more defects, both found by agents doing exactly what the prompt said: - It never told the agent to update the PowerShellBuild version. No entry covers the pin and every step was scoped to entries, so a literal reading migrates settings and leaves the build on 0.8.2 while reporting success. For a psake consumer that pin is the upgrade. - requirements.psd1 was out of scope as written, though the psake, Pester, and PlatyPS floors are only actionable there. Both agents treated it as in scope anyway, against the prompt's own wording. Re-ran the same fixture on the same model after fixing those. All three failures gone: the pin updated, the dependency manifest handled, a full advisory checklist produced, and the baseline test run taken before the pin change rather than after. ## Guide: 12 entries to 17 Four the changelog carried and the guide did not, each able to require action on upgrade: the setting name that never existed (#191), coverage percentages truncated to zero (#138), Invoke-Build coverage reporting (#178), and signing validation that now has an effect (#193). Two the agents proved were missing. The guide speaks in floors while requirements.psd1 takes exact pins, and platyPS is replaced rather than upgraded -- leaving both PlatyPS modules pinned is worse than leaving neither. And a consumer manifest below 5.1 is now an untested claim, because nothing in their pipeline can exercise it. Corrections the second run earned: - Correcting the ScriptAnalysisEnabled name is a behavior change, not a typo fix. With the wrong name analysis has been running all along, so fixing it turns analysis off for real. - "Cannot newly fail your build" was true and misleading. A consumer with a threshold has never seen a real coverage number; 1.0.0 is where they find out. - The docs-conversion entry assumed GenerateMarkdown runs. It skips silently in three common cases, and then converts nothing. - Most entries need no code change, not "roughly half" -- 13 of 16 for one sample consumer. Saying half makes an accurate checklist look padded. Closes #159 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U1Jhu7fgTRJq7LK5MuKteE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #159
Three deliverables: the guide's completeness pass, the first exercise of the AI migration prompt, and the 1.0.0 changelog summary.
The prompt had never been run. It has now, four times.
I built two sample consumers — a psake one and an Invoke-Build one, each a realistic 0.8.x repository with a removed setting, stale dependency pins, a committed 0.14.x docs tree with hand-written prose, and a coverage threshold — then handed the prompt verbatim to fresh agents on two model families with no other context. That is the only honest way to test a prompt aimed at "a consumer's agent."
The finding I could not have got by reading
Agent web-fetch tools commonly do not return the page. They run a small model over it and hand back a summary. This harness's own tool documents it plainly:
One run measured the damage: three entries silently absent —
ParseError, the module landing page, the committed-docs conversion — with the result still reading as complete. It only got the real text viagh api ... | base64 -d.The prompt now demands the raw file and gives a structural self-check the agent can actually run: the guide ends with a
Relatedsection, so a copy without one is partial. Do not proceed on a summary.Two more defects, both found by agents doing exactly what it said
AlphabeticParamsOrder, changes nothing else, and leaves a build still running 0.8.2 while reporting success. For a psake consumer,-FromModule PowerShellBuild -Version '0.8.2'is the upgrade.requirements.psd1was out of scope as written — inputs were "my build file" and "psake or Invoke-Build files it references." But the psake, Pester, and PlatyPS floors are only actionable there. Both agents treated it as in scope anyway, correctly, against the prompt's own wording.The re-test
Same fixture, same model, after fixing the above. All three failures gone: version pin updated, dependency manifest handled, a 13-item advisory checklist produced, and the baseline test run taken before the pin change rather than after — because a correct migration pins a version that cannot be installed yet.
It then found six more, all fixed here. The two that matter:
ScriptAnalysisEnabledname is a behavior change, not a typo fix. With the wrong name, analysis has been running all along. Fixing it turns analysis off for real — and if the CI job the consumer believed was running analysis has quietly gone away, the guide just told them to delete their only coverage. The entry now says to look before deciding.Also: the docs-conversion entry assumed
GenerateMarkdownruns (it skips silently in three common cases, and then converts nothing); and "roughly half" of entries need no code change was wrong in the flattering direction — 13 of 16 for one sample consumer. Saying half makes an accurate checklist look padded.Guide: 12 entries → 17
Four the changelog carried and the guide did not, each able to require action on upgrade — the setting name that never existed (#191), coverage percentages truncated to zero (#138), Invoke-Build coverage reporting (#178), and signing validation that now has an effect (#193).
Two the agents proved were missing. The guide speaks in floors while
requirements.psd1takes exact pins, andplatyPSis replaced rather than upgraded — leaving both PlatyPS modules pinned is worse than leaving neither, since theirYamlDotNetassemblies collide. And a consumer manifest declaring below5.1is now an untested claim, because nothing in their pipeline can exercise it.TOC verified programmatically: 17 headings, 17 links, no dangling anchors, no unlinked entries. Five bare
#nnnreferences made clickable.Changelog
A 1.0.0 summary heading the section: what the release is, the breaks that require action as a table, and the three fixes that mean a setting the consumer configured was doing nothing. Left under
## Unreleasedfor #160 to rename at release.Verification
Analyzeclean.\r\r\n.🤖 Generated with Claude Code
https://claude.ai/code/session_01U1Jhu7fgTRJq7LK5MuKteE