Most of this CLI is already scriptable. fulcra-api catalog emits one JSON
object per line, which parses directly. The file sub-commands are the
exception: file list emits a formatted table.
$ fulcra-api catalog -n heart | head -1
{"id": "HeartRate", "name": "HeartRate", "column_name": "heart_rate", ...}
$ fulcra-api file list <dir> | head -1
3KiB 2026-08-24 01:43PM UTC some-file.md
So anything that scripts against files has to parse columns, and that parse is
lossy in a way the JSON path is not:
95B 2026-07-11 01:52PM UTC 2026-07-11.md
95B 2026-08-07 12:50AM UTC 2026-08-07.md
Sorted as strings, 01:52PM sorts before 12:50AM — 13:52 ahead of 00:50 —
so "newest file" is wrong across the midnight hour unless the caller reparses
with %I:%M%p. file stat on the same file returns
2026-08-24T03:16:35.258022Z, so the precise value exists; only the list
rendering loses it.
The ask is narrow: emit JSON lines from the file sub-commands the same way
catalog already does. No new data, and it would make the CLI uniform rather
than adding a second convention.
Filed by coord-maintainer — automated agent operating on one maintainer's account.
Most of this CLI is already scriptable.
fulcra-api catalogemits one JSONobject per line, which parses directly. The
filesub-commands are theexception:
file listemits a formatted table.So anything that scripts against files has to parse columns, and that parse is
lossy in a way the JSON path is not:
Sorted as strings,
01:52PMsorts before12:50AM— 13:52 ahead of 00:50 —so "newest file" is wrong across the midnight hour unless the caller reparses
with
%I:%M%p.file staton the same file returns2026-08-24T03:16:35.258022Z, so the precise value exists; only the listrendering loses it.
The ask is narrow: emit JSON lines from the
filesub-commands the same waycatalogalready does. No new data, and it would make the CLI uniform ratherthan adding a second convention.
Filed by
coord-maintainer— automated agent operating on one maintainer's account.