Skip to content

docs(sync): per-commit nuxt/ui → b24ui sync plan + Phase 0 scaffolding#65

Open
IgorShevchik wants to merge 1 commit into
mainfrom
claude/optimistic-maxwell-LRBSh
Open

docs(sync): per-commit nuxt/ui → b24ui sync plan + Phase 0 scaffolding#65
IgorShevchik wants to merge 1 commit into
mainfrom
claude/optimistic-maxwell-LRBSh

Conversation

@IgorShevchik
Copy link
Copy Markdown
Collaborator

Summary

Adds .sync/ — the design and Phase 0 scaffolding for per-commit synchronization of nuxt/ui (v4) into b24ui. Docs/config only; nothing runs automatically (sync_enabled: false).

The goal: review every upstream nuxt/ui commit and accept a corresponding PR in b24ui. Direct cherry-pick is impossible due to systematic divergences (b24ui prop instead of ui, b24-icons, air-* colors, per-component src/theme/*.ts, the Bitrix-only layer), so each commit is semantically ported via Claude, gated, and human-reviewed one PR at a time.

What's included

File Purpose
.sync/PLAN.md Hardened design: gated per-commit flow, 3 workflows (dispatcher / porter / on-merge), no-op batching + pre-filter, kill-switch, metrics, quality gates.
.sync/PORTING.md Trusted port-rules guide: uib24ui, icon/color maps, preserved invariants (jsDoc, types, a11y), examples, reviewer workflow.
.sync/icon-map.json Seed iconify → b24-icons map (verified against current sources).
.sync/color-map.json Seed color token → air-* map.
.sync/nuxt-ui.json Ledger skeleton (cursor, processed, stats) with kill-switch sync_enabled: false.
.sync/RUNBOOK.md Incident playbook.

Review process behind this PR

The plan was reviewed from multiple angles before this PR (documentation, engineering, QA, security, tech-director, plus a diff pass). All P1/P2 findings are folded into the docs above, notably:

  • Correct gate names/order matching ci.yml (pnpm run lint / typecheck / test run / build).
  • Concurrency lock to prevent parallel dispatchers; idempotency via processed[sha].
  • Prompt-injection mitigation: trusted system prompt vs. untrusted upstream diff passed separately; src/-only scope guard.
  • Minimal permissions:, secret masking, SHA validation, v-html security gate.
  • No-op batching + pre-filter without Claude to control queue growth and cost.
  • jsDoc/TS preservation + snapshot/prop-coverage requirements so green gates can't hide an incomplete port.

Out of scope (tracked separately)

Next step

This PR is for reviewing the plan. The actual workflows (sync-*.yml, Phase 1+) are intentionally not included — they come after the plan is approved and #62 lands.

https://claude.ai/code/session_01Qz7EXMncvEGiCj4WbmYgJo


Generated by Claude Code

Adds .sync/ with the per-commit synchronization design and the artifacts it
depends on, incorporating multi-angle review feedback (docs, engineering, QA,
security, tech-director):

- PLAN.md: gated per-commit flow with corrected gate names/order, concurrency
  lock, prompt-injection mitigations, minimal permissions, v-html security
  gate, no-op batching + pre-filter, kill-switch, metrics, jsDoc/TS and
  snapshot/test requirements, SHA validation and idempotency.
- PORTING.md: trusted port-rules guide (ui→b24ui, b24-icons, air-* colors),
  preserved invariants, examples, map-update and reviewer workflow.
- icon-map.json / color-map.json: seed maps verified against current sources.
- nuxt-ui.json: ledger skeleton with kill-switch and stats (sync_enabled=false).
- RUNBOOK.md: incident playbook.
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.

2 participants