m5 follow-up: close F-18 + F-19; README polish for v0.1.0#11
Merged
Conversation
Closes the two formally-deferred ledger rows from M5 PR #10: F-18 — `go install github.com/geomyidia/cascade/cmd/cascade@78cc7ae` via proxy.golang.org succeeded; resolves to pseudo-version v0.0.0-20260507180335-78cc7ae2dac9. Installed binary's --version + --help output captured (3.8MB darwin/arm64). Pseudo-version-extraction logic from M1.5 threads the commit SHA + build date through ReadBuildInfo into --version output. F-19 — Cascade-against-cascade real-codebase sanity check (M2 F-18 lineage; the gta-target codebase from M2 is private, this is the public-PR-safe substitute). Six cases: - golist root change → 5 packages affected (sorted) - changeset mid → 3 packages - cmd/cascade leaf → 1 package - internal/cli mid → 2 packages - empty stdin → empty output, exit 0 - real --base/--head git diff → 134ms wall-clock end-to-end Every observed affected-set matches the hand-derived prediction. Updated closure: M5 ledger reaches 22/22 done. Zero deferred at final close; zero no-ops; zero open. The two-deferral pattern (merge-prerequisite verification rows with explicit re-entry conditions) worked exactly as LEDGER_DISCIPLINE.md documents. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…signature
Five small fixes for v0.1.0-quality README:
1. Fix the broken sentence on the second Why paragraph ("Do the the
Go language's tendency to swap out libraries for changes in
tooling..."). Rewrote to clearly state the design rationale: Go's
helper libraries (especially golang.org/x/tools/go/packages)
evolve faster than the `go` command, so cascade depends on the
CLI tool as the more stable API.
2. Drop the "as of this writing" hedge from the Install section's
Go-version policy line. CI policy is "floor + latest major,
matrix advances with each Go release" — same factual claim, no
timestamp to decay.
3. Update --version flag description to show the actual output
format (`cascade <Version> (build <Branch>@<Commit>, <BuildDate>)`)
instead of just listing the field names. Mentions the empty-Branch
case for proxy-installed binaries.
4. Update the Library section's changeset.Resolve example to use the
M4 v1.1 functional-option signature (changeset.WithModuleRoot).
The previous variadic-empty call still compiled and worked, but
relied on the os.Getwd fallback at runtime — not the recommended
library usage.
5. Clarify "have no io between them" claim to acknowledge the two
real io edges: golist.Run's `go list` invocation and changeset's
optional os.Getwd fallback. The pure-package compositional
property still holds; the wording is now precise about where the
io actually lives.
F-20 verify (grep -c 'exit code' README.md) still returns 1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
What
Two pieces of post-merge work for M5, bundled in one small PR:
mainto verify; that prerequisite is now satisfied (M5 merged at78cc7ae).--versionoutput format, clarify the I/O-edges claim.Where
docs/dev/0012-implementation-retrospective-m5-cli-main-wiring.md— gains a §"F-18 / F-19 post-merge follow-up evidence" section with the closing evidence + an updated closure summary (22/22 done).README.md— five small fixes (described below);StatusandMilestonessections were also removed (separate commits) since the v0.1.0 work is done.F-18 evidence (proxy install)
proxy.golang.orgindexed the merge SHA cleanly; pseudo-version-extraction logic from M1.5 thread the commit + build date through into--versionoutput (Branch is empty for proxy installs — proxy doesn't carry branch metadata, same as M1's F-12).F-19 evidence (cascade-against-cascade real-codebase smoke)
Six cases against the merged-to-
maincascade repo; every observed affected-set matched the hand-derived prediction:pkg/golist/golist.go(root)pkg/changeset/changeset.go(mid)cmd/cascade/main.go(leaf)internal/cli/cli.go(mid)--base/--headgit diffThe 134ms case 6 number measures the full pipeline (git diff subprocess + go list subprocess + depgraph + changeset + RevDepClosure) on the cascade repo's small package set. Generic-framing note in the retro: cascade-against-cascade is the public-PR-safe substitute for the M2 F-18 private-codebase scale evidence.
M5 ledger now sits at 22/22 done.
README polish (5 fixes)
Do the the Go language's tendency to swap out libraries for changes in tooling, treating the tool as "the API" is often the safer, more stable approach.Typo + awkward parsing. Now:Go's helper libraries — especially golang.org/x/tools/go/packages — evolve faster than the go command itself; depending on the CLI tool is the more stable bet.Same intent, clearer prose.CI tests against the floor and the latest currently-supported Go major; the matrix advances with each Go release.No timestamp to decay.--versionflag description shows actual output format. Was a list of injected fields; nowcascade <Version> (build <Branch>@<Commit>, <BuildDate>)with note about empty-Branch on proxy installs.changeset.Resolve(changedFiles, pkgs)(variadic-empty; relied on os.Getwd fallback); nowchangeset.Resolve(changedFiles, pkgs, changeset.WithModuleRoot(repoRoot))with a comment about typical caller usage.golist.Run'sgo listinvocation;changeset.Resolve's optionalos.Getwdfallback) so the prose matches the actual io-edge inventory. Subsequent commit also normalised "io" → "I/O" capitalisation throughout.F-20 verify (
grep -c 'exit code' README.md) still returns 1; no other dev-status hedges or development-status framings remain in the README.How to verify
Checklist
make checkpasses locally (no code changes; doc-only PR)grep -c 'exit code' README.md) returns 1 (preserved through edits)LEDGER_DISCIPLINE.mdBreaking change?
No. Doc-only PR; no code changes; CLI behaviour and library API unchanged.
🤖 Generated with Claude Code