New `larry tools cl-format-migrate <dir>`: fixes the "' before prologue start" errors on
Windows-authored tables/xlates whose CRLF line endings choke the Linux Cloverleaf parser
(and Cloverleaf's own hcitblconvert/hcixltconvert). Root cause field-confirmed by Bryan:
`file` shows broken=CRLF/working=LF, both version:6.0 (no format bump) — the stray CR is
read as a bogus char before the prologue keyword.
- Default: strip ONLY trailing CR (sed 's/\r$//'), backup-first via journal.sh, idempotent
(SKIP already-LF), per-file verify (no trailing CRLF remains + prologue block intact),
summary report. Bryan proved a CR-stripped table loads clean.
- Opt-in --run-native-convert: chains hcitblconvert/hcixltconvert after a successful strip
(Cloverleaf's real format bump), resolving the bare name against <site>/Tables|Xlate then
$HCIROOT/Tables|Xlate, one name per call; separate journal checkpoint so a native-step
failure auto-rolls-back to the CR-stripped-safe state. Orphan file -> NATIVE_SKIPPED (never
guesses a site). Default stays strip-only pending Bryan's hcitblconvert-post-strip confirm.
- Unified tbl+xlt (both choke on CRLF identically).
- QoL REPL: cdr->$HCIROOT, cds->$HCIROOT/$HCISITE, cdd->$HCIROOT/$HCISITE/data; bare site name
-> setsite+cd, first-match-wins ordering so it never shadows an existing command.
Vera CODE-PASS (re-gate after fixing a Major verify defect: _count_cr matched any CR byte ->
false FAILED_VERIFY loop on files with a legitimate mid-line CR; now _count_trailing_cr on
\r$, matching the strip). Own-fixture verified: convert/preserve-mid-line-CR/converge-to-SKIP,
full regression + --run-native-convert mocked suite, bash -n 3.2.57, manifest --check clean.
Live-acceptance: Bryan (Gundersen box; dry-run -> single-file --confirm pilot -> batch).
- hl7-diff-set: compare a whole set of Windows-vs-Linux regression outputs in one
command — takes two prefixes (+ optional --dir), auto-discovers routes by glob,
runs hl7-diff per pair (--framing auto --ignore MSH.7, overridable), reports
per-route PASS/DIFF/MISSING/EXTRA + summary, exit 0 iff all clean (MISSING and
EXTRA both count as regressions). No more hand-written for-loop with hardcoded names.
- F-8: hl7-diff --format text now shows SEG.FIELD left='...' right='...' with visible
(empty)/<absent> tokens so a dropped component (e.g. Linux MSH.9.3 absent vs Windows
ADT_A02) is obvious without opening the message files; --------- message N header now
uses the real message index (was a stale counter). tsv/count formats unchanged.
Consolidated by Clover; Vera CODE-PASS (Deliverables/2026-07-23-cloverleaf-larry-v0910-hl7-diff-set.md) — own-fixture verification of all route classifications + the absent-token render + F-7 no-hang. Live-acceptance = Bryan's regression run.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Hands-on ergonomics for Bryan's Gundersen testing. All three changes are
backward-compatible — every old name still works.
1. `help` is now the canonical reference command (live, never-drifts table
from bin/ + each tool's help block). `cheat` kept as a thin alias.
2. Prefix-free short commands: nc-table→table, nc-parse→parse, nc-msgs→msgs,
nc-status→status, nc-engine→engine, nc-xlate→xlate, nc-inbound→inbound, plus
the write tools (create-thread, set-field, insert-protocol, make-jump,
provision-jumps, tclgen, document, revisions, diff-interface, smat-diff,
regression). COLLISION GUARD: nc-find→`nfind` (NOT `find` — would shadow the
system find on PATH); nc-paths keeps `paths`. Every nc-* name retained as a
backward-compat alias. Tab-completion + the help/cheat table updated.
3. HCISITEDIR auto-init in the shared preflight (bin/_nc_common.sh): HCIROOT +
HCISITE still required, but $HCIROOT/$HCISITE is created if missing rather
than erroring. Conservative + idempotent; respects an operator-set HCISITEDIR.
VERSION→0.9.6, MANIFEST regenerated (--check clean), bash -n clean.
Co-Authored-By: Clover (Claude Opus 4.8) <noreply@anthropic.com>
- bin/cheat: one-screen reference for ALL short commands, generated live from
the bin/ wrapper set + each tool's help block (description from the wrapper
header / backing lib line 1; ONE real example from the wrapper's example
block / lib Usage form). cheat <filter> + cheat -h. LC_ALL=C em-dash slicing.
- Wired into install-larry.sh symlink loop + MANIFEST (auto-synced on update).
- Proved the update path: simulated v0.9.0 install with populated config/auth/
site-data -> re-ran installer against v0.9.5 origin -> reached v0.9.5 with
bin/cheat on PATH + completion wired + fixtures present, ALL 8 state files
byte-identical (sha256), tbn adt + completion working after. Idempotent re-run
(no duplicate rc line). NO uninstall needed for an update.
- VERSION + LARRY_VERSION -> 0.9.5; MANIFEST regenerated (--check clean, 95
entries); bash -n clean. Deliverables: cheatsheet + update-procedure (myPKA).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Make the toolkit usable BY HAND without the `larry tools <name>` prefix.
- bin/ of thin wrappers (tbn/tbp/tbh/tbpr/where/paths/route_test + a full-name
passthrough per operator tool). Installer symlinks them into LARRY_BIN_DIR so
`tbn adt` runs directly. Each resolves lib/ via bin/_nc_common.sh
(LARRY_LIB_DIR -> ../lib -> $LARRY_HOME/lib) and execs the matching tool.
- -h/--help on every wrapper.
- bin/nc-completion.bash: dynamic bash completion, 3 levels (command / SITE /
THREAD) enumerated LIVE from the NetConfig tree under $HCIROOT via the same
lib/nc-parse.sh the tools use; cached per (HCIROOT, newest-NetConfig-mtime).
Installer appends a guarded source line to the user's bash rc.
- fixtures/integrator: durable 3-site demo (epic->ancout->codamx) with cross-
site fan-out + fan-in and a multi-route inbound. RESOLVES the v0.9.3 fixture
conflict: cross-site destination blocks are XS_*-prefixed so they never
collide with a local protocol name (a collision makes nc-paths
_xsite_down_targets suppress the cross-site hop, lib/nc-paths.sh:378).
- DEFERRED: fetch-token.sh broker wiring (broker contract still finalizing).
VERSION+LARRY_VERSION -> 0.9.4; MANIFEST regenerated (--check clean); bash -n
clean; verified live on .135 (short commands off PATH + all 3 completion levels).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>