# The vendored-canon drift manifest — the single source of truth for how far
# each vendored copy is allowed to have drifted from its canon.
#
# House rule 6 says the vendored layer is byte-identical across the rooms line
# and the CLJS line "modulo the namespace rename". That claim was only ever
# checked by hand and by memory. This file turns it into a number, and
# bin/canon-drift asserts the number is EXACT — an unpropagated canon fix fails
# loudly, and a sanctioned delta cannot silently grow.
#
# delta = the count of changed diff lines after applying s/<from>/<to>/g to the
# canon file. 0 means byte-identical modulo the rename. A non-zero entry MUST
# carry a reason: it is a divergence someone chose, not one that happened.
#
# Paths are workspace-relative (house rule 9 — never a local filesystem path).
# Re-baseline deliberately with `canon-drift --update`, never casually: the
# whole value of this gate is that changing a number is a reviewed act.
#
# NOTE it compares WORKING TREES, not committed state, so it is branch-sensitive
# by design: run it on a feature branch and it reports that branch's drift. That
# is what you want while propagating a canon change, and it means a re-baseline
# belongs in the commit that MERGES the divergence, never in the branch that
# introduces it — otherwise the gate goes red the moment you return to main.
#
# canon_path copy_path from to delta reason
chat/client/src/sueta/lib/selftest.cljs board/client/src/board/lib/selftest.cljs sueta. board. 0 -
rooms-kit/src/ardegazu/rooms/lib/protocol.cljs board/client/src/board/lib/protocol.cljs ardegazu.rooms. board. 92 bespoke op union: board has add/edit/del/sealed plus a mode/cert/jreq/approve/deny/remove control plane and no legacy op. Documentation only in both — each file is one (ns) form once comments are stripped — and nothing in the kit's shared set requires a lib.protocol, so the divergence reroutes no code
chat/client/src/sueta/lib/mailbox.cljs board/client/src/board/lib/mailbox.cljs sueta. board. 1136 SHAPE lag, not policy drift: chat's ladder rewrite (p/let + named steps, the commit after the v24 paren fixes) is not yet propagated — board still speaks the js-await shape and propagating means vendoring fx.cljs/wire.cljs + promesa and re-recording its mailbox harness, a deliberate follow-up. The POLICY is propagated and identical on both sides: the outgoing queue is uncapped (the old drop-oldest and board's per-instance queueCap option are retired), a failed queue persist surfaces through onNotice, SENT-CAP stays as a dedup ring. The old sanctioned delta (QUEUE-CAP 500 to 2000 + queueCap option) is gone with the cap itself
chat/client/src/sueta/lib/mailbox.cljs banca/client/src/banca/lib/mailbox.cljs sueta. banca. 0 -
chat/client/src/sueta/lib/mailbox.cljs bursa/client/src/bursa/lib/mailbox.cljs sueta. bursa. 0 -
chat/client/src/sueta/lib/mailbox.cljs portofel/client/src/portofel/lib/mailbox.cljs sueta. portofel. 0 -
chat/client/src/sueta/lib/selftest.cljs portofel/client/src/portofel/lib/selftest.cljs sueta. portofel. 0 -
chat/client/.clj-kondo/hooks/defclass.clj board/client/.clj-kondo/hooks/defclass.clj - - 0 the clj-kondo defclass hook: plain Clojure, same ns in every repo, so no rename — byte-identical or it is drift
chat/client/.clj-kondo/hooks/defclass.clj rooms-kit/.clj-kondo/hooks/defclass.clj - - 0 the clj-kondo defclass hook: plain Clojure, same ns in every repo, so no rename — byte-identical or it is drift
game1/client/src/game1/i18n/runtime.cljs chat/client/src/sueta/i18n/runtime.cljs game1. sueta. 0 -
game1/client/src/game1/i18n/runtime.cljs board/client/src/board/i18n/runtime.cljs game1. board. 0 -
game1/client/src/game1/i18n/runtime.cljs portofel/client/src/portofel/i18n/runtime.cljs game1. portofel. 0 -