Skip to content

Complete semantic review publication workflows - #8

Merged
NagisaVon merged 20 commits into
mainfrom
codex/semantic-review-integration
Aug 31, 2026
Merged

Complete semantic review publication workflows#8
NagisaVon merged 20 commits into
mainfrom
codex/semantic-review-integration

Conversation

@NagisaVon

Copy link
Copy Markdown
Owner

Summary

  • Complete deterministic attribution reconciliation, hardened projection/ref handling, and the full selector and batch-assignment surface.
  • Complete Draft PR publication, marker recovery, same-PR rename, remove, archive, lifecycle notes, and typed GitHub failure handling.
  • Add the full CLI facade for slice CRUD, focus, full previews, batch assignment, publishing, and archive.
  • Keep human-authored PR narrative empty by default and preserve it byte-for-byte outside machine-managed regions.
  • Use the canonical branch as the integration PR title and configurable session-level slice title prefixes through --slice-prefix, defaulting to slice.
  • Add the agent workflow guide, human README, executable documentation smoke, and a twelve-property behavioral traceability suite.

Compatibility

  • Public machine contracts remain version 0 and the persisted session schema remains version 1.
  • New archived, defaulted-atom, and slice-prefix fields are additive and have defaults; legacy payload/session parsing is regression-tested.
  • Existing backend methods remain intact; new state and error distinctions make stale mapping and merged-state handling explicit.

Validation

  • 198 pytest tests passed.
  • Ruff lint and format checks passed.
  • Strict mypy passed.
  • Git diff check passed.
  • The strict documented CLI smoke passed, including batch assignment, focus, CRUD, publish/no-op publish, custom title prefixes, and archive.
  • A private retained GitHub scratch repository validated initial publication, no-op behavior, stable PR identity, metadata recovery, inline-comment survival, slice removal, generated-ref cleanup, integration merge, and final archive. The live run exposed merged-state handling that was fixed with a dedicated regression before the archive retry passed.

Resolve the stored integration pull request before synchronizing projection refs. If GitHub reports that pull request as merged, stop publication with guidance to archive the review session instead of treating the merged pull request as missing.

This preserves the authoritative merged pull request number, prevents creation of a replacement Draft integration pull request, and keeps the normal archive path usable. Add an integration regression that verifies no replacement is created, the stored mapping is unchanged, and archive still succeeds against the original merged pull request.
Resolve existing slice pull requests before projection preparation so publication can distinguish a brand-new empty slice from one that previously had review content.

Keep the existing pull request open, but rebuild and synchronize its generated base and head refs as a deterministic zero-diff projection. This makes the Files changed view agree with the currently-empty body note while preserving the pull request number and discussion history. Brand-new empty slices continue to skip pull request and ref creation.

Extend the integration regression to prove that a previously non-empty remote diff is replaced, both backing refs remain available for the open pull request, and their resulting visible diff is empty.
Update both maintainer-facing smoke commands in the README and the published agent skill to invoke the script through uv with synchronization disabled.

The repository setup creates an isolated project environment but does not make the system python3 inherit its dependencies. Reusing uv's existing environment keeps the commands copy-paste runnable after the documented locked sync, avoids unnecessary dependency resolution, and ensures the child CLI has Click and Pydantic available. Verify both the normal and strict smoke workflows with the revised commands.
Only active slice pull requests receive the final archive lifecycle note. Removed slices retain the note explaining why their review was closed, while archive still validates pull request state and deletes generated refs for every slice.

Add a behavioral regression covering remove, republish, integration merge, and archive so later lifecycle updates cannot overwrite removal history.
Remove the unavailable-hook exception, dynamic getattr lookup, callable casts, and assign signature inspection now that the public API exposes every command operation.

Keep the typed CLI protocol as the replaceable command seam and update the dispatch test to verify that the force flag is forwarded explicitly.
Drop the behavioral loop that only checked whether pull request golden files were non-empty because unit tests already compare every file byte for byte.

Remove the narrow legacy session default test because the contract compatibility suite validates the same payload and default while also covering the other additive report fields.
Require IntegrationSliceLink values at the integration body rendering boundary and remove the tuple normalization branch that no production caller used.

Update unit tests to construct the same typed records as the publication workflow so tests exercise the supported interface instead of preserving a test-only compatibility path.
Correct the narrative policy so the managed slice region lists only the metadata it actually owns. Removal and archive notes are now described as content of the distinct lifecycle region used by the renderer.
Rewrite the four edited docstrings so they describe the current selector, publication, and PR-body contracts without preserving obsolete wording.

Normalize README and skill list capitalization, punctuation, sentence counts, and emphasis. Rephrase the behavioral suite introduction to remove the flagged stock construction while preserving its traceability contract.
@NagisaVon
NagisaVon merged commit d2bab7c into main Aug 31, 2026
5 checks passed
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