chore(sync): make the manual sync the only sync - #377
Merged
Conversation
The sync is manual by decision. Removes the automation that was designed but never built, and writes down the procedure it was standing in for. Deleted `.sync/PLAN.md` — the dispatcher/porter/on-merge design with its cron, phases and kill-switch — and `.sync/RUNBOOK.md`, an incident playbook whose every row diagnosed one of those three workflows. Neither described anything that exists: no sync workflow was ever merged. Dropped two ledger fields. `sync_enabled` was the dispatcher's kill-switch, and a kill-switch for a dispatcher that will not exist reads as "the sync is off" to whoever finds it — which was already misleading while the procedure in `PORTING.md` ran twelve ports past it. `stats` was Phase-4 telemetry that was never written to: `noop_ratio: 0` against an actual 47 of 226. `PORTING.md` §6 now spells out what the workflows used to imply — parent-order reconstruction (GitHub's compare view is not topological), verbatim diffs, `ci.yml`'s gate order plus `docs:generate` with `deploy.yml`'s env, ledger reconciliation including the last-entry case, and the `behind` rebase. The one runbook row that survives manual work came with it: a cursor SHA lost to an upstream force-push moves to the nearest surviving ancestor with a tracking issue, never skips forward. `dependabot.yml` skips npm updates because this pipeline carries them, and said to revisit if `sync_enabled` stayed off for a month — a condition that just became permanently true and therefore useless. It now watches the only observable signal: `cursor` not advancing while `nuxt/ui@v4` moves. Also corrects `color-map.json`, which mapped `warning` to `air-primary-alert`, the same token as `error` — so the lookup table told a porter the two upstream colors were interchangeable. `air-primary-warning` exists and is used 50 times in `src/theme/`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JS8ypVfQSFzYVZzkTHhURb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The sync is manual by decision. This removes the automation that was designed but never built, and writes down the procedure it had been standing in for.
Removed
.sync/PLAN.md— thesync-dispatcher.yml/sync-porter.yml/sync-on-merge.ymldesign, with its hourly cron, five phases, concurrency gates and kill-switch..sync/RUNBOOK.md— an incident playbook whose every row diagnosed one of those three workflows ("Dispatcher does nothing", "Cursor not advancing after merge", …).Neither described anything that exists: no sync workflow was ever merged to
main.Two ledger fields.
sync_enabledwas the dispatcher's kill-switch — and a kill-switch for a dispatcher that will not exist reads as "the sync is off" to whoever finds it, which was already misleading while the procedure inPORTING.mdran twelve ports past it.statswas Phase-4 telemetry that was never written to:noop_ratio: 0against an actual 47 of 226.Written down instead
PORTING.md§6 now states the procedure the workflows used to imply, so removing them loses nothing operational:curlraw at the commit and its parent, thendiff -u) — rendered/summarised patches drop hunks on large commits, which is how a port was once declared blocked while upstream had shipped the fix alongside;ci.yml's order, plusdocs:generatewhen the commit touchesdocs/— thecigate never builds the docs site — withdeploy.yml's env, since withoutNUXT_PUBLIC_GIT_URLthe footer link collapses to a relative/releasesand the prerender crawler fails on it;mergeable_state: "behind"rebase that branch protection requires.The one runbook row that survives manual work came along: a cursor SHA lost to an upstream force-push moves to the nearest surviving ancestor with a tracking issue, never skips forward — otherwise every commit in between is silently never judged.
Two corrections found on the way
dependabot.ymldeliberately skips npm updates because this pipeline carries them, and said to revisit "ifsync_enabledis off for more than a month". That condition just became permanently true, and a permanently-true alarm is not an alarm. It now watches the only observable signal there is:cursornot advancing whilenuxt/ui@v4moves.color-map.jsonmappedwarning→air-primary-alert— the same token aserror. The lookup table a porter reads was telling them the two upstream colors are interchangeable.air-primary-warningexists and is used 50 times acrosssrc/theme/.Follow-up not taken here
PR #67 (
feat(sync): Phase 1 porter workflow + enriched icon/color maps) should be closed with this — it addssync-porter.yml. But it also carries content that is useful to manual porting and would be lost:PORTING.md§1: b24ui shares nuxt/ui's semantic icon keys (src/runtime/dictionary/icons.ts), soappConfig.ui.icons.<key>ports unchanged andicon-map.jsonis only the fallback for hardcodedi-lucide-*literals;icon-map.jsonentries and 5 corrections (i-lucide-check→CheckLIconnotCheckIcon,chevron-down→ChevronDownLIconnotChevronDownSIcon,minus→Minus30Icon,x→CrossMIcon).Those values were written in June against an older
@bitrix24/b24icons-vueand each one needs checking against the installed package before it can be trusted, so importing them wholesale here would mix verified deletions with unverified additions. Flagged rather than done — say the word and I will verify and land them separately.Verify
lintgreen. No test reads.sync/; the two specs that mention it only cite it in comments. Nothing undersrc/is touched.Generated by Claude Code