Per DIS-080: with fence markers retired, post's POST-017 byte pre-scan (hasConflictMarker over tracked adds, post.js:884-895) is replaced by a row-based gate: refuse committing tracked paths that are live conflicts per the ULOG-004 accessor (con rows since the last get/post), --force overrides as before. A successful post IS the resolution — the new post row becomes the barrier that expires the con rows; nothing is deleted.
--force or after reviewing the yellow diff and editing).patch still exits non-zero on conflict, so unattended patch && post never reaches this gate.conflict in tracked file <path> (--force overrides); all-or-nothing before any store write (POST-017 semantics kept).#msg yes; bare advance / ?br / wire push?) — align with ULOG-004's barrier definition, one rule both sides.test/post/conflict regolds from marker text to row text.new Set(wtl.conflicts()) ∩ the add decisions (post.js:882-891); the add filter is POST-017's, kept — a keep/unlink commits no wt bytes.conflicts() owns it (get/post row with a full sha + non-wt-relative path); post just reads it.conflict in tracked file <path> (--force overrides), same refuse() 64-char ladder as before ([errors-in-plain-words]).shared/conflict.js require dropped from post.js — post no longer scans bytes at all; readAddBytes stays, fold-commit still uses it.conflicts() backward scan now keeps an acked set — a put/delete <path> row shadows OLDER con rows for that path, a NEWER con row re-registers. Barrier rule untouched.put ?feat acks nothing; a directory put src/ does not cover its children (path-granular rows, DIS-080 constraint).///be/#38f6e3ac.get ran its own PRE-GET-056b jsrc — the old kind === "f" gate clobbered the exec test/post/conflict/run.sh (third bite of that bug; every wt based before ///be/#5c0d5c21 bites once on its first update). Restored byte-exact from gritzko's /tmp/POST-035 pre-get copy, cross-checked against the worker-transcript replay. post.js/wtlog.js/wtlog_con.js/CMakeLists.txt survived.verbs/post/post.js row-based pre-flight + test/post/conflict/run.sh rewritten: 5 legs (refuse / put-ack then plain post / --force / conflicts() empty after / marker bytes post fine).shared/wtlog.js is NO LONGER a pure ULOG-004 import — conflicts() carries the §4 put/delete ack on top; test/wtlog_con.js grew legs J-N (put-after-con, delete-after-con, put-before-con, con→put→con, put ?feat). Its CMake registration line still rides along from ULOG-004.///be/#38f6e3ac + //test#c184c5eb); staged: shared/wtlog.js, verbs/post/post.js (parent), test/post/conflict/run.sh, test/post/patch-absorb/run.sh, test/wtlog_con.js (test sub).POST-035: row-based conflict gate in post