Skip to content

Release all exact-path tags and restore path safeguards - #175

Merged
plx merged 2 commits into
mainfrom
agent/issue-111-exact-release
Jul 29, 2026
Merged

Release all exact-path tags and restore path safeguards#175
plx merged 2 commits into
mainfrom
agent/issue-111-exact-release

Conversation

@plx

@plx plx commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Closes #111

Scope

Make unfiltered non-recursive trop release select every tagged and untagged reservation at the exact resolved path while preserving descendants. Restore the standard unrelated-path guard for exact and recursive release, honor the explicit flag and effective configuration permission, and keep exact-path planning plus deletion in one transaction. Document selector, idempotency, safeguard, and atomicity behavior.

The root cause was that the CLI represented an omitted tag filter as the untagged reservation key and hardcoded allow_unrelated_path while building release plans.

Stack

Red-before-fix evidence

  • cargo test -p trop-cli --test release_command test_release_path_without_filter_removes_all_exact_path_tags_only -- --exact — failed because the tagged web row remained.
  • cargo test -p trop-cli --test release_command test_release_unrelated_path_is_rejected_without_partial_mutation -- --exact — failed because the unrelated release unexpectedly succeeded and mutated the target.
  • cargo test -p trop-cli --test release_command test_release_allow_unrelated_path_releases_target -- --exact — failed because --allow-unrelated-path was not a recognized release argument.
  • Hosted CI run 30309991480 failed both Windows test profiles in test_release_nonexistent_path: the target used a canonical verbatim path while the process CWD used the equivalent short-name spelling, and the nonexistent suffix prevented the physical fallback from recognizing the relationship.
  • cargo test -p trop database::operations::tests::test_validate_path_relationship_canonical_nonexistent_descendant --all-features -- --exact — failed before the correction with PathRelationshipViolation for a nonexistent descendant reached through a symlink to the current directory.

Validation

  • cargo test -p trop database::operations::tests::test_validate_path_relationship_canonical_nonexistent_descendant --all-features -- --exact — passed.
  • cargo test -p trop-cli --test release_command --all-features — 30 passed.
  • cargo test -p trop operations::release --all-features — 16 passed.
  • cargo test --workspace --all-targets --all-features --locked — passed, including tests and benchmark smoke execution.
  • cargo clippy --workspace --all-targets --all-features --locked -- -D warnings — passed.
  • cargo fmt --all -- --check — passed.
  • cargo build --release --workspace --all-targets --all-features --locked — passed.
  • RUSTDOCFLAGS="-D warnings" cargo doc --workspace --all-features --no-deps --locked — passed.
  • just test-production-readiness-selector — 61 passed.
  • agentic-navigation-guide check — passed.
  • agentic-navigation-guide verify — passed.

Acceptance criteria

  • Default exact release removes all tagged and untagged rows at the resolved path and preserves descendants: covered by the CLI exact-path contract and planner selection tests.
  • --tag and --untagged-only remain precise, mutually exclusive, documented, and idempotent when no row matches: covered by focused selector and no-match tests.
  • Unrelated paths are guarded by default while --allow-unrelated-path, effective configuration, and --force remain explicit overrides: covered for exact and recursive roots, including no-mutation assertions.
  • Exact-path selection and deletion are atomic: a forced late SQLite delete failure verifies that the earlier deletion rolls back.
  • Equivalent canonical path spellings remain related for nonexistent descendants: covered by the canonical-existing-ancestor unit regression and the hosted Windows release-command test.

Residual risks

Recursive release transactionality and component-aware traversal remain intentionally scoped to #112; this PR restores its requested-root safeguard without absorbing that follow-up.

@plx

plx commented Jul 27, 2026

Copy link
Copy Markdown
Owner Author

@codex review Please independently review the exact current head 30ad44ddfdf69c8903e09e950a9a45751f98bec2 against issue #111, including exact-path tag selection, unrelated-path safeguards, transactional rollback, tests, and documentation. Report any blocking or major issue before approval.\n\n🤖 Posted by Codex

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@plx

plx commented Jul 27, 2026

Copy link
Copy Markdown
Owner Author

Independent review evidence for exact head 30ad44ddfdf69c8903e09e950a9a45751f98bec2: a fresh local Codex review session inspected the commit against the release contract and concluded that the patch correctly implements unfiltered exact-path release, restores unrelated-path safeguards with explicit overrides, and keeps exact-path selection and deletion atomic. It reported no change request; the workspace suite passed. The GitHub-hosted Codex reviewer was unavailable because its separate review quota was exhausted.\n\n🤖 Posted by Codex

@plx

plx commented Jul 29, 2026

Copy link
Copy Markdown
Owner Author

Independent exact-head review completed against origin/main...af0032c6e6d824c4069f3a8fbdbdcafec55ebcce in fresh Codex session 019fadcc-e604-7f90-a71a-ef1c5a7f6e29.

Result: no actionable findings. The reviewer confirmed exact-path all-tag release, restored path safeguards, atomic exact-path deletion, and passing workspace tests/clippy.

🤖 Posted by Codex

@plx
plx marked this pull request as ready for review July 29, 2026 12:51
@plx
plx merged commit 3bff053 into main Jul 29, 2026
29 of 30 checks passed
@plx
plx deleted the agent/issue-111-exact-release branch July 29, 2026 12:52
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.

Release all exact-path tags by default and restore unrelated-path safeguards

1 participant