chore: publish readiness — license, tag-derived version, honest spot-checks - #71
Merged
Merged
Conversation
…checks Prep for taking the repo public (plan: ~/.claude/plans/testgraph-public-release.md). Five changes, no behavior change to selection. Suspend the `append` spot-check instead of letting it lie. Its floor (min_caller_edges: 5) passes today on 7 edges that codegraph's Python resolver fabricates (#66) — none from a real caller — so it asserts an integrity guarantee the index cannot keep, and a commit breaking `ledger.append` (the sole write path for J1 and J5) would sail past it. The registry note already described this in prose; nothing machine-readable acted on it. `integrity.check` now honors an optional `suspended: "<reason>"` on a spot-check spec: skip the floor, emit a warning naming the symbol and why. Chosen over deleting the check, which would have taken the reason with it. Re-verified live in codegraph 1.5.0 AND 1.6.0 on 2026-09-03 with a 4-file repro; the fix exists on a fork branch and has never been PR'd upstream. Two tests pin it: a suspended check warns rather than passing silently, and a blank/whitespace reason does NOT disarm it — otherwise a stray key quietly disables the one check `codegraph sync` cannot clear. Add pyproject.toml with hatch-vcs, making the git tag the single source of version truth. Replaces `__version__ = "0.1.0-spike"`, written during the Phase 1 spike and never updated since, with the generated file falling back to importlib.metadata then `0+unknown` — never a stale number. `dependencies = []` asserts the stdlib-only claim where a resolver checks it. The wheel ships `testgraph/` alone; harness/, hooks/ and skills/ are repo artifacts with no import contract. Deliberately no [project.scripts]: every CLI is documented and journey-registered as `python3 -m testgraph.<module>`, and a second interface whose drift nothing checks should be a decision, not a packaging side effect. Verified: tag v0.1.0 -> uv build -> testgraph-0.1.0-py3-none-any.whl, and the release workflow's version assert passes on it. Fix .gitignore `.codegraph/` -> `.codegraph`. A trailing slash matches directories only, so the claudew worktree's `.codegraph` SYMLINK was never ignored and left the tree permanently dirty — which blocks `repo-publish` (it refuses an unclean tree) on any worktree of any codegraph-indexed repo. Add LICENSE (MIT), matching the rest of the portfolio.
inth3shadows
deleted the
claude-publish-readiness-license-tag-derived
branch
September 4, 2026 01:56
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.
Prep for taking the repo public. Plan:
~/.claude/plans/testgraph-public-release.md.No behavior change to selection.
Ran 264 tests, OK.Suspend the
appendspot-check instead of letting it lieIts floor (
min_caller_edges: 5) passes today on 7 edges that codegraph's Pythonresolver fabricates (#66) — not one from a real caller. So it asserts an integrity
guarantee the index cannot keep, and a commit breaking
ledger.append(the sole writepath for J1 and J5) would sail straight past it.
The registry
notealready described this in prose; nothing machine-readable acted onit.
integrity.checknow honors an optionalsuspended: "<reason>"on a spot-checkspec — skip the floor, emit a warning naming the symbol and why. Chosen over deleting
the check, which would have taken the reason with it.
Re-verified against a 4-file repro on 2026-09-03: the bug is live in codegraph 1.5.0
and in 1.6.0, the current npm latest. The fix exists on a fork branch
(
fix/python-module-member-builtin-collision,7ecf6dc) and has never been PR'dupstream — so #66 stays open, and the disclosure ships with the artifact.
Two tests pin it: a suspended check warns rather than passing silently, and a
blank/whitespace reason does not disarm it — otherwise a stray key quietly disables
the one check
codegraph synccannot clear.pyproject.toml+ hatch-vcs — the git tag becomes the versionReplaces
__version__ = "0.1.0-spike", written during the Phase 1 spike and neverupdated since, with the generated file falling back to
importlib.metadata, then0+unknown— never a stale number.dependencies = []asserts the stdlib-only claimwhere a resolver checks it. The wheel ships
testgraph/alone;harness/,hooks/andskills/are repo artifacts with no import contract.Deliberately no
[project.scripts]. Every CLI is documented and journey-registeredas
python3 -m testgraph.<module>(J1–J5); a second interface whose drift nothing checksshould be a decision, not a packaging side effect.
Verified end to end: tag
v0.1.0→uv build→testgraph-0.1.0-py3-none-any.whl, andthe release workflow's version assert passes on it.
.gitignore:.codegraph/→.codegraphA trailing slash matches directories only, so the claudew worktree's
.codegraphsymlink was never ignored and left the tree permanently dirty. That blocks
repo-publish(it refuses an unclean tree) on any worktree of any codegraph-indexedrepo — not just this one.
LICENSE
MIT, matching the rest of the portfolio.
Next: the
repo-publishscaffold PR (release workflow), then--finalize v0.1.0.