Repository navigation
docs: prepare 2.0.0 (changelog, upgrade guide, quickstart check) - #361
Merged
Merged
Conversation
stackbilt-admin
pushed a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
stackbilt-admin
force-pushed
the
docs/release-2.0-prep
branch
from
October 17, 2026 10:00
7aca621 to
59e087e
Compare
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.
Docs-only prep for 2.0.0. No version bump, tag, publish or release.
Changelog restructuring
## [Unreleased]keeps its heading and is now organized as a Breaking: lead, then### Added,### Changedand### Fixed. Each user-visible change has one bullet, with nested sub-bullets where it needs them. The section goes from about 6,560 words to about 4,990.--mode compiled). The duplicate### Changedheading is gone.npx @stackbilt/cli@1.9.3: 1.9.3 refused pointers and converted them only with--force. The real break is that--forceno longer converts a pointer, and--target all --writenow skips pointers with exit 0 (1.9.3 exited 1). The lead also coversbootstrap --forceand the hook reinstall, and links the upgrade guide.git log v1.9.3..HEADbut missing from the changelog: bug: emit AGENTS.md (uppercase) — lowercase agents.md is not the convention and breaks on case-sensitive filesystems #297/fix(bootstrap): emit AGENTS.md instead of lowercase agents.md #301 (bootstrap writesAGENTS.md), bug(bootstrap): commits local telemetry and writes a machine-absolute path into .mcp.json #298/fix(bootstrap): gitignore telemetry and drop absolute path from .mcp.json #304 (telemetry gitignore and relative--ai-dirin.mcp.json), and chore(deps): patch advisories failing supply-chain:check #337 (supply-chain pins).refused-retainedandretained-divergentnever shipped in a release. They are now noted once as interim values from unreleased builds.Claim checklist
Before rewriting, I extracted every distinct user-visible claim into a checklist (175 entries) and ticked each one against the rewrite:
removeManifestBullet,POINTER_MARKERS/CHARTER_OWNED_MARKERS,completePhase.vendor status" (doctor reports them now), and bootstrap --force fans out to several destructive operations and is advised as a routine remedy #305's "the flag itself is unchanged" (adf: no repo records whether vendor files are compiled or pointers, so compile --check and tidy disagree forever #318 changedbootstrap --force).A check of 112 key tokens (statuses, flags, JSON fields, message text, numbers) against the new section found all of them. Status values and message strings were checked against
adf-compile.ts,adf-tidy.ts,adf-vendor.ts,doctor.tsandhook.ts. For example,(replaced charter pointer stub)andgit checkout --are no longer in the code, so the final wording uses(mode: pointer -> compiled)andadf vendor restore.Upgrade guide
New
docs/upgrading-to-2.0.md, linked from the CHANGELOG Breaking lead and both READMEs. It covers:--mode compiledandadf vendor set <file> compiled;adf vendor initandadf vendor status;rename-legacy;retained-unfenced/retained-ambiguousreports;bootstrap --force;Other doc fixes:
adf vendor statusand the upgrade guide.packages/cli/README.mdanddocs/cli-reference.md: the migrate file list now saysAGENTS.md(or legacyagents.md) instead of onlyagents.md.Quickstart and upgrade-path results
I ran everything in throwaway repos under the session scratchpad, using the built binary in place of
npx.score,bootstrap --yes,compile --target all --write --mode compiled): all steps exit 0. Four files reportWritten … (mode: pointer -> compiled), andcompile --target all --checkexits 0.doctor --cireports WARN (gate enforcement) until bootstrap's printed next steps (hook install --pre-commit,--commit-msg) are run. After that it reports PASS, and a commit with a trailer goes through both hooks.compile --target all --writeandadf vendor status): same results. Modes are recordedcompiled,--checkexits 0, and doctor reports PASS after the hooks.npx -y @stackbilt/cli@1.9.3 bootstrap --yesand committed with the 1.9.3 hooks in two variants. In the pointer variant, CLAUDE.md is a pointer with a hand-added## Environment. In the compiled variant, the files were converted with 1.9.3'scompile --write --forceand## Environmentwas appended. Then I followed the guide with the new build, packed and installed as the devDependency.pre-commit hook,telemetry tracking,adf vendor modeinferred, andlegacy-tracked.[stale] … outside the retained blockonce. One--writefixed it (kept ## Environment).doctor --ciPASS, andcompile --checkexit 0.git add .ai/manifest.adf, and that leftAGENTS.md(title rewritten byrename-legacy), the re-compiledCLAUDE.mdandpackage.jsonuncommitted. The guide now says to start from a clean tree, untrack telemetry, and rungit add -u. I re-ran both variants from scratch with the corrected guide.Code issues found
verify:adfscript.pnpmby name.charter --helplistscharter doctor [--adf-only]only, without--ci,--format,--stagedor--tidy-skipped.charter adf --help'stidyline shows[--print-paths]but does not describe it.Review follow-up (7aca621)
An adversarial review asked for changes. Applied in 7aca621:
--ai-dirin.mcp.json;.mcp.jsonthat pins an absolute--ai-dir.compile --checkchange for pointers (exit 1 in 1.9.3,pointer-okexit 0 now). The two new-flag usage errors are moved out of that list.adf vendor modeas a new check.rename-legacyfollow-upgit addis conditional.@stackbilt/gittrailer-parser change (trailers: parseTrailersFromMessage accepts a whitespace-only trailer value #340) is noted in the CHANGELOG and the guide.I re-ran the guide's code block literally on two fresh 1.9.3 repos (pointer and compiled). Both end with a clean tree, a commit,
doctor --ciPASS,--checkexit 0,.mcp.jsonusing.ai, and no tracked telemetry.Final hook wording after #365 (59e087e)
This branch is rebased onto main @ 1e2268e. The CHANGELOG hook bullet, the upgrade guide's hook section and
packages/cli/README.mdnow describe #365:charter doctor --stagedgate runs first in every repo.verify:adf, run with pnpm, yarn or npm according to the lockfile and what is installed, oradf evidencewhen there is no such script.verify:adf's doctor reports bloat as INFO (adf vendor bloat (checked by pre-commit hook)). Run by hand or in CI, it checks every vendor file.CHARTER_HOOK_SCOPED_DOCTORtoken and the notice the hook prints when it cannot write the token file.pre-commit hookINFO rows now cover hooks from the first hook: doctor gate blocks commits on bloat in files that aren't part of the commit #357 fix.pnpm run verify:adf-only wording is left in current docs. The remaining mentions describe old hooks or old releases.Tests
pnpm buildandpnpm run verify:adfpass.pnpm test(after the rebase) gives 1446 passed and 3 failed, exactly the known Windows-only failures (bootstrap #307 fixture, context-refresh "captures git signals", serve-context "returns existing snapshot").Release steps left for the operator
packages/*/package.json).## [Unreleased]to## [2.0.0] - <date>.v2.0.0.🤖 Generated with Claude Code