Skip to content

Record the supported Rust API and SemVer gate - #108

Merged
plx merged 1 commit into
mainfrom
agent/issue-30-rust-api-gate
Jul 26, 2026
Merged

Record the supported Rust API and SemVer gate#108
plx merged 1 commit into
mainfrom
agent/issue-30-rust-api-gate

Conversation

@plx

@plx plx commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Closes #30

Scope

Record the aggregate supported-product, Rust API, and SemVer gate after all four native children landed. The evidence proves that the v0.2 product is CLI-only and binary-only, that the complete approved 132-row current-source disposition inventory is realized, that the distinct 128-row published-0.1.4 migration baseline is retained, and that the deliberate 0.2.0 breaking boundary and future compatibility policy are documented and machine-recorded.

This PR adds only the dated gate audit and its navigation-guide index entry. It changes no runtime behavior and performs no crate publication, tag creation, GitHub Release creation, or yank.

Stack

  • Immediate predecessor: none
  • Earlier included PRs: none
  • Required merge order: this PR only
  • Branch point: d0e03017f188bbd6364d2489877bb332db81d109

Red-before-fix evidence

A new failing commit is not applicable to this record-only aggregate gate. The underlying child work retains exact red-before commands, revisions or overlays, exit codes, and observations in the linked audits:

The durable aggregate record is audits/2026-07-26-issue-30-supported-rust-api-gate.md.

Validation

  • Focused Make NavigationGuide::get_full_path correct or remove it from the supported API #52/Resolve the incomplete public symlink model end to end #53/Narrow and stabilize the supported Rust surface for v0.2 #54 filters — 1, 1, and 2 passed
  • Binary-only workspace/package proof — 1 passed
  • Release-identity package/install proof — 2 passed
  • Binding all-owner contract — 44 passed
  • Release-identity mutation suite — 14 passed
  • Full workspace/all-target/all-feature suite — 332 passed, 2 intentional manual-benchmark ignores
  • cargo clippy --workspace --all-targets --all-features --locked -- -D warnings — passed
  • warning-denied Rust documentation, Rust formatting, and all-target/all-feature checking — passed
  • guide check/verify and just --fmt --check — passed
  • production-readiness selector suite — 61 passed
  • actionlint and audit markdownlint — passed
  • lychee — 17/17 links passed
  • cargo package --locked — passed from a clean detached worktree at exact head 2d6b891f324bec32e256852e091ea508a680ef30; 119 files packaged and verified; worktree remained clean
  • Three independent read-only reviews — clean, no remaining blocker

Acceptance criteria

  • The sole supported v0.2 product and every CLI compatibility surface are explicit, with 0.3.0 required for a supported Rust library or another accepted breaking contract change.
  • No Rust library behavior is retained: workspace and package metadata expose exactly one product binary and zero linkable targets; src/lib.rs is absent; whole-source visibility scans and the non-vacuous 132-row disposition assertion reject a hidden facade.
  • Unsupported implementation modules and types are private or crate-private, with workspace and unpacked-package regressions covering target shape and visibility.
  • Extensible public Rust data has a deliberate absence strategy; any future library requires a separately approved contract, package consumers, baseline, and breaking release line.
  • Release notes and pinned SemVer evidence distinguish the 132-row decision ledger from the complete 128-row published migration baseline and record the no-shim transition.

Residual risks

This component gate does not certify the final release candidate or the entire CLI as production-ready. Hermetic testing, effectiveness thresholds, final package allowlisting and negative consumption, trusted publishing, maintained package documentation, the combined support contract, historical specification disposition, and the independent final candidate audit remain separately owned by #58, #59, #62, #63, #66, #67, #68, and #72.

@claude

claude Bot commented Jul 26, 2026

Copy link
Copy Markdown

Review: #108 — Record the supported Rust API and SemVer gate

Overview

This PR adds exactly two things: a new audit record (audits/2026-07-26-issue-30-supported-rust-api-gate.md) and a one-line index entry for it in AGENTIC_NAVIGATION_GUIDE.md. No source, test, or CI files are touched, which matches the stated scope ("no runtime behavior change, no publication"). This fits the repo's established convention of durable, dated audit records under audits/ (e.g. the existing issue-52/53/54/64 gates).

Verification performed

Since this PR's content is entirely made of externally-checkable claims, I re-derived as many as I could against the current repo state rather than just reading prose:

Everything I could independently re-derive checked out. I could not reproduce the cargo-semver-checks 0.49.0 run (196 checks / 4 major failures) or the full validation list (332 workspace tests, clippy, cargo package, etc.) without executing the build — those are asserted, not re-run, but the PR body lists concrete commands and exit codes, and the pattern matches the already-verified sibling audits.

Minor observations (non-blocking)

  • AGENTIC_NAVIGATION_GUIDE.md's audits/ section doesn't list every file actually present in that directory (e.g. 2026-07-26-issue-27-*.md, -50-*, -51-*, -52-*, -53-*, -54-* exist on disk but aren't indexed — only -25-*, -30-* (added here), and -64-* are). This predates this PR and isn't something Record the supported Rust API and SemVer gate #108 needs to fix, but since verify doesn't enforce exhaustive directory coverage it can silently drift further — worth a follow-up cleanup pass at some point.
  • The audit correctly avoids embedding its own commit hash (calling that out explicitly as self-referential) — good attention to detail, consistent with the "no publication" framing.

Code quality / correctness / security / test coverage

Not applicable in the usual sense — this is a documentation-only, record-keeping change with no executable code, no new tests, and no security surface. Its "correctness" is the claims-vs-repo-state consistency checked above, which held up under spot-checking.

Overall: Accurate, well-cross-referenced, and scoped exactly as described. No blockers.

@plx
plx marked this pull request as ready for review July 26, 2026 22:44
@plx
plx merged commit 213b9bf into main Jul 26, 2026
11 checks passed
@plx
plx deleted the agent/issue-30-rust-api-gate branch July 26, 2026 22:45

@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: 2d6b891f32

ℹ️ 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 on lines +147 to +149
checks every workspace and packaged Rust source file, rejects unrestricted
public definitions, and rejects `lib`, `rlib`, `dylib`, `cdylib`, `staticlib`,
and `proc-macro` in both Cargo `kind` and `crate_types`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Inspect every reported linkable crate type

This overstates the package regression: metadata_failures in tests/issue_54_binary_only_package.rs searches only for exact singleton JSON fragments such as "kind":["rlib"]. A target declared with [lib] crate-type = ["rlib", "cdylib"] is reported by Cargo with both values in each array, so none of those fragments matches and the regression can pass despite a Rust-linkable target. Parse the metadata arrays and check every element before citing this as a future-proof binary-only gate.

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.

[Epic] Supported Rust library API and SemVer surface

1 participant