Several issues found while reviewing the skill — most stemming from
the incremental-diff model that the first cut used. The fix is a
shift to cumulative diffs (always from the last release tag) plus
explicit reconciliation handling.
Changes:
- Cumulative diff window for BOTH modes. Nightly was using
yesterday's SHA as the diff base; now it uses base_release_tag
like release mode does. This makes reverts auto-cancel in the
manifest (they're net-zero across the cumulative window) instead
of needing message-regex filtering.
- Remove skip_patterns from anchor-map.json. They were dangerous:
filtering ^revert by message would HIDE the undo signal when a
previously-processed commit got reverted. The proper filter is
surface impact via watcher path globs + cumulative-diff cancellation.
- Add Phase 3.5 (Reconciliation) to the SKILL. Catches the remaining
case: a doc edit was committed in a prior run for a feature that
has since been reverted. The manifest_hash + last_applied_manifest_hash
comparison surfaces "disappeared" entries as ⚠ Reconcile flags for
manual review — the skill never auto-undoes prose edits.
- auto_merge_safety: add explicit forbid_kinds: [removed, renamed].
A 1-line rename is still a breaking change and was previously
guarded only by SKILL prose.
- Rename state fields for clarity. synced_to/synced_sha were
ambiguous between branches. New schema: branch_mode,
base_release_tag, base_release_sha, last_seen_parent_sha,
last_applied_manifest_hash. base_release_tag is the diff base
and only bumps on a successful release merge — the invariant
that makes cumulative diffs stable.
- Release mode is now self-sufficient (doesn't require nightly
drafts to exist). Fixes the chicken-and-egg for the first run
catching up multiple releases.
- PENDING.md is regenerated each run, not appended, so it never
carries stale entries from reverted commits.
- New special-cases entries for parent renames, nightly-with-open-PRs
at release time, and quarantine race conditions.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Scaffolds the data layer for the /sync-docs skill:
- scripts/sync/anchor-map.json — declares which parent-repo paths each
watcher tracks, where they route in our docs, and whether changes
are auto-merge (mechanical, schema-bound) or PR tier (judgment calls).
- scripts/sync/state.example.json — template for .sync-state.json.
- .sync-state.json — per-branch sync state, seeded for an initial
release-mode run from v2026.318.0.
- docs/user-guides/screenshots/registry.json — screenshot dependency
tracking so the skill can flag stale captures.
The skill itself follows in the next commit.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>