Skip to content

Release boundver 0.10.0 - #10

Merged
yzm1 merged 1 commit into
mainfrom
codex/remediate-release-0.10.0
Aug 12, 2026
Merged

Release boundver 0.10.0#10
yzm1 merged 1 commit into
mainfrom
codex/remediate-release-0.10.0

Conversation

@yzm1

@yzm1 yzm1 commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • replace ambiguous v1 fingerprint framing with domain-separated, length-prefixed v2 hashing and deterministic boundary-lock/v2 lockfiles
  • fail closed across Git/source selection, malformed input, partial updates, provider metadata, configured paths, versions, symlinks, and custom provider loading
  • add facet gates, behavior drift, consumers, glob contracts, severity exit codes, verify --update, changed-path reporting, and atomic writes
  • publish one hardened composite Action with structured inputs and add verified tag/PyPI/GitHub-release sequencing
  • rewrite onboarding/CI/examples, improve PyPI metadata and community files, and record every finding in docs/PROJECT_REVIEW.md

Breaking change

v1 fingerprints cannot be safely migrated because their framing was ambiguous. Users must regenerate locks with boundver 0.10.0.

Verification

  • 834/834 unit and integration tests passed locally in four balanced shards
  • all root/example v2 lockfiles reproduced from the exact candidate and passed all four facets
  • exact Git tree published remotely matches local tree 61ad127e6ef93787fd59ead25b6a32ff77beefa6
  • wheel/sdist built from the exact candidate; runtime schema, type marker, specs, policies, tests, and audit record were present
  • extracted wheel passed python -m boundver, validation, generation, verification, and status in an unrelated Git repository
  • final bounded security and release-candidate audits returned PASS

Release gate

Keep this PR draft until the complete Python 3.9–3.14 Linux/Windows matrix, package smoke job, and public Action contract job are green. After merge, tag v0.10.0; the publish workflow verifies and publishes the same artifacts, creates the GitHub Release, and advances stable tag v0.

Harden fingerprinting, Git/source handling, config and lock validation, providers, CLI gates, Action inputs, packaging, documentation, and release automation. Add focused regression coverage, deterministic v2 lockfiles, and release-candidate verification evidence.
@yzm1
yzm1 marked this pull request as ready for review August 12, 2026 11:59
@yzm1
yzm1 merged commit 08baed6 into main Aug 12, 2026
14 checks passed
@yzm1
yzm1 deleted the codex/remediate-release-0.10.0 branch August 12, 2026 11:59

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

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: 8fca224ee7

ℹ️ 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 src/boundver/_config.py
Comment on lines +498 to +500
elif source == "working-tree" and not (repo_root / vendored_path).exists():
errors.append(
f"Component '{name}' vendored copy not found: {vendored_path}"

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 Reject vendored copies absent from the selected snapshot

When using --source head or index, this existence check is skipped entirely; in working-tree mode it accepts an on-disk but untracked copy even though hashing enumerates tracked files only. In either case _content_only_digest() returns None, generation succeeds and writes that null into vendored_digests, but the newly generated lockfile is immediately rejected by _lockfile_structure_issues() and the v2 schema, which require string digest values. Validate the copy against the selected Git snapshot or treat a missing digest as a generation error.

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.

1 participant