mirror of
https://github.com/garrytan/gstack.git
synced 2026-10-31 22:14:25 +01:00
* fix(restamp): quoted since: rows and stale base-version mentions on branch-added lines when VERSION equals the base (gbrain #7640) A PR that stamped X, lost its slot and merged a base that had reached X on its own had no branch stamp, and the mention scanner could not pass the opening quote of a quoted row, so gstack-restamp --next left the PR's { since: 'X' } rows at X while the release shipped as X+1. - tentativeMentions and rewriteStamps accept since: 'X' / since: "X" / (was 'X') / (was "X") and keep the quote style; the scanner also reads the policy's stamp_patterns templates. - With no branch stamp and no --was, a stamp-form mention of the base version on a line the branch added moves; the same version on a base line stays. The stamp_paths stage detail names both counts per file. - test/restamp-mentions.test.ts (pure forms + the reporter's state rebuilt with the real bin), stamp-templates pin updated, docs/ship-policy.md, --was help line, CHANGELOG [Unreleased]. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(restamp): review pass 1 — closing quotes, positional provenance, retry after a partial apply - since: 'X' and (was 'X') require the quote to close right after X in the scanner and the rewrite table, so a quoted prerelease or a mismatched pair is never a stamp (the tree receipt shares the table). - branchAddedLines records positions from the unified=0 hunk headers; the stamp_paths stage rewrites by position, so a base line with the same text stays and a CRLF checkout still finds the branch's row. - Journal recovery restores the equal-base provenance (no branch stamp) so a stamp interrupted after VERSION was written retries as a stamp, not noop. - Skipped detail names the explicit version it searched for; --was help line names the CHANGELOG re-heading; docs and CHANGELOG state the boundaries, the fork-point attribution and the rule's false-positive class. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(restamp): review pass 2 — positions counted through joined-hunk context parseUnifiedDiff records each added line's new-side position (addedAt), counting context lines a hunk carries, and branchAddedLines pins --inter-hunk-context=0, so a diff.interHunkContext setting that joins two hunks around a base row no longer shifts the branch's second row onto the base row. Test with interHunkContext=1 (red on the pass-1 tree). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(restamp): correct the red-case count, the --was sentence and the help default Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>