commit: — human-format author/committer dates + one-click F ticket codes in the message
The JS commit: view (be/views/commit/commit.js) prints author/committer dates as the RAW git <unix-epoch> <tz> and leaves an issue key (ABC-123) in the message as plain text. Two fixes: (1) present the date in human format — the lib's short date ron.date, as log: already uses; (2) make an issue key in the subject/body a ONE-CLICK link to its ABC-123.{mkd,md,txt} ticket file — the commit:-view twin of BRO-012's log:-view producer splice, REUSING BRO-012's already-shipped resolver (shared/ticket.js scanKeys/ticketUri + core/discover.js todoRoot()). Method: Issues.
be/views/commit/commit.js buildHunk emits each header value VERBATIM
(PROJ.c byte-parity): the author/committer value ends … <epoch> <tz> (git object bytes), so jab commit: shows Name <e> 1719330000 +0300, not a date a human reads. log: already renders ron.date (log.js:359, the 7-col short date via dag.commitTs); view/render.js dateCol wraps the same call.
TAG_N (subject) / TAG_W (body) span (commit.js:245), so an ABC-123 is flat text with no F tag and no hidden U — a pager click is dead.
F
token for a key, and BRO-012 ALREADY SHIPPED the shared resolver — scanKeys (the F grammar) + ticketUri(key) in shared/ticket.js, and todoRoot() in core/discover.js (be.todoRoot). REUSE them — do NOT re-invent (the stale main-tree checkout lacked them; the store tip has them).
U machinery: buildHunk builds
parts[{text,tag,uri}] and the color/tlv body splices a hidden U after any part that carries a uri (commit.js:272-281, the tree/parent sha links). So a ticket link is just a message part tagged F with uri = ticketUri(key).
author/committer (and a tag object's tagger) render a HUMAN date via the
lib (ron.date, the short form the user approved), KEEPING Name <email>; the raw <epoch> <tz> tail is replaced, not shown.
ABC-123, grammar [A-Z][A-Z0-9]*-[0-9]+ = the tokenizer's
uc ucnum* "-" dgt+) in the subject or body becomes an F-tagged token with a hidden U opening its ticket file; a click/Enter opens ABC-123.{mkd,md,txt}.
shared/ticket.js + be.todoRoot()); no
re-invention. The commit view is a PRODUCER (splices its own hidden U), so no pager change is needed — BRO-012 still owns the pager body-token path.
F tag the tokenizers already emit (F = tok index 5),
the existing parts→hidden-U splice in buildHunk, and BRO-005 _uriAt (no pager change — the commit view is a PRODUCER of U, like log:).
be.navCwd/todoRoot — neverhand-compose a path or regex-parse a URI (work §"Things NOT TO DO"); detect the key with the SHARED tokenizer grammar, not a drifting fresh regex.
todoRoot() roots tried IN ORDER (BRO-012): TODO_ROOT env, current wt root,
launch/open wt root; first <root>/todo/<TOPIC>/<KEY>.<ext> hit wins (TOPIC = chars before -), a total miss → plain text (quiet no-op, no U).
U-free (the empty-toks plain path, COMMIT-003); only
color/tlv carry the F+U. Preserve COMMIT-003/004/005/006 + BRO-006 links.
be commit: (raw epoch) — a DELIBERATE
SPEC divergence (user ask), noted like JAB-006. Native be LAGS jab, so the jab-vs-native byte-parity in commit/{render,links,resolve,diff} tests a STALE oracle: DE-NATIVIFY those four here (user leave 2026-07-05) — drop the native cmp, assert jab intrinsically (structure + human date + U/F), seed via jab; the umbrella for the OTHER native-oracle cases is TEST-003.
buildHunk, when a header is author/committer/tagger, split the
value into <ident> <epoch> <tz> and re-emit <ident> <ron.date>; convert the git unix-EPOCH-seconds into ron.date's input domain correctly (cross-check render.dateCol / log.js commitTs). Keep the ident (Name <email>) span.
sub-parts — the key part gets tag = F and uri = ticketUri(key) (falsy → left plain), the rest keeps TAG_N (subject) / TAG_W (body). The existing parts→U loop then splices the hidden target; nothing else changes.
todoRoot() to core/discover.js (mirror srcRoot(): ordered
roots) and ticketUri(key) (probe each root for todo/<TOPIC>/<KEY>.{mkd,md, txt}, compose a cat-verb word-URI spell via the URI class + be.navCwd(root) to the first hit, else null). Placed EXACTLY where BRO-012's TODOs name them.
test/commit/ticket/ (run.sh + check.js):
fixture commit cites ABC-123, TODO_ROOT fixture ticket — RED before (raw epoch, F=0), GREEN after (human date, ABC-123 F + hidden U).
todoRoot()/ticketUri() — MOOT: BRO-012 already shipped them
(shared/ticket.js + be.todoRoot()); REUSED, no discover.js/ticket.js edit.
buildHunk: humanIdent() — human date on author/committer/tagger via
ron.date(ron.of(secs*1000)) (verified ron.of wants ms); keep the ident.
buildHunk: emitTicketLine() splits each message line at scanKeys spans
→ F part + ticketUri U; unresolved key stays plain; plain body U-free.
commit/{render,links,resolve,diff} (user leave 2026-07-05):
dropped the native cmp, assert jab intrinsically (structure + resolved sha + human date + U/F + first-parent diff marker); native SEED kept. All five commit tests (incl. ticket) GREEN. Umbrella for the rest: TEST-003.
todoRoot()/ticketUri() land HERE); BRO-012 keeps
the pager body-token path (cat/blob F with no producer U) + the log: splice. Link both ways so neither re-invents the resolver.
gate as BRO-005/BRO-012) — the worktree fix + tests can still be proven green.
be-js-commit-render byte-parity (C prints raw epoch);amendment needs the user's leave — do NOT touch the test in the fix.
ae6ac86f ("COMMIT-007 and assorted fixes"), be/ trunk. Verified
in-tree 2026-07-07 (ticket audit): humanIdent() (commit.js:80, applied to author/committer/tagger at :261-263) + emitTicketLine() (commit.js:214, message emit :286-288), REUSING shared/ticket.js scanKeys/ticketUri + core/discover.js todoRoot() (:198); be/ wt clean.
divergence from C (user ask + user leave 2026-07-05, recorded above) — the board's "date-parity ruling pending" note was stale.
test/commit/ticket/ in tree; `commit/{render,links,resolve,
diff} de-nativified (TEST-003 markers in run.sh); TEST-003's remaining 7 dirs finished under d80bdb5c. The [SUBS-035] landing gate is resolved (1b7c9934` "staged and posted by jab" precedes the landing).
test/commit/ticket/ (JAB-only, staged) GREEN: --tlv shows the
ABC-123 F + hidden U = cat://…/todo/ABC/ABC-123.mkd (via _uriAt) and a human date; RED before the fix. BRO-012 sibling bro/ticket still GREEN.
native cmp (native be LAGS jab), assert jab intrinsically; native SEED kept. ALL five commit/* tests GREEN. The other native-oracle stragglers were TEST-003's (since done, d80bdb5c). The SUBS-035 gate cleared; merged to be/ trunk as ae6ac86f.
ctest (139 cases) = 7 failures, ALL PRE-EXISTING (reproduced identicallyon a PRISTINE worktree, zero COMMIT-007 changes): bro-ticket (BRO-012 TODO_ROOT env-precedence), get-be/get-git (stale goldens), wire-head-bare, regex-regex/ spot-search (ctest-env only), unit-wirepush (flaky). None touch commit.js.