con never renders — the put branch preempts the con checkclassify tests the /todo/ULOG/ULOG-004 con set only in its NO-STAGED-INTENT arm, so a con row on a path that also carries a put row is unreachable: the row renders ...V (staged change) and counts.con stays 0, while post — which reads wtl.conflicts() directly — refuses the same path. Status and post disagree on one ulog. A conflicting get RE-STAGES an already-staged path, so this masks EVERY conflict on staged work, which is the normal shape of a post that had to merge.
//TODO-005 after a half-failed post: log.conflicts() →
["views/todo/todo.js"], classify buckets that path put, counts.con = 0,
be status prints ...V, be post throws conflict in tracked file views/todo/todo.js.shared/classify.js:456 if (onDisk && conSet.has(path)) sits
AFTER the staged-intent branch (shared/classify.js:443, push({bucket: b ? "put" : "new"}); continue;).put <path> row for a
path that was already staged, THEN the con <path> row — so the mask is automatic.be/test/status/conflict only covers the UNSTAGED path (no put row lands, ...! renders), which is why this passed CI.A live con row outranks staged intent, so the two readers of one ulog cannot disagree.
wtl.conflicts() buckets con and paints the wt char ! whether or not it carries a put row; counts.con tallies it.staged (the quad's own column), only the wt char changes.put/delete row LATER than the con row still resolves it (verified: edit + put + post lands with no --force).wtl.conflicts(), never re-derive a con set, so post's gate and status cannot drift again....V on a staged-and-conflicted path.conflicts() itself — the accessor is right; only its consumer in classify is wrong.conSet test above the staged-intent branch,
keeping the onDisk guard (a con row for a path no longer on disk is not a wt conflict)....! + 1 con and that post's refusal and status agreeshared/classify.jsstaged true on the con row; check quad.js renders both facts...V for this shapebe/test/status/conflict with the staged variant (its unstaged case stays)! char is what routes the row's nav to diff (views/status/status.js:326).