1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//! The **bedrock** JSON record (§9) — the single machine shape every read
//! verb's `--json` emits, and (since bl-e614) the shape `bl import` ingests
//! back. Lifted to a sibling of [`super`] so the machine contract has one
//! file-sized home.
use ;
use crateTask;
/// One ball as the **bedrock** JSON record — the single shape every read verb's
/// `--json` emits (§9). It is the lossless mirror of the stored `tasks/<id>.md`
/// FILE ONLY: every stored field — the frontmatter AND the markdown `body` —
/// round-trips back to the file, and NOTHING derived appears — no `status`
/// ladder, no ISO dates (timestamps stay the literal stored i64), no
/// inverse-derived `children`, no tree nesting. The derived columns live on the
/// orthogonal HUMAN render alone (§3, bl-d074). `id` is the filename identity
/// (the round-trip key), not a frontmatter field. The record is total — `bl
/// import` writes it back verbatim (bl-e614), so what `show --json` reads out
/// must be the whole ball.
///
/// Preserved `extra` keys (§3 seam — a team's `state:` field) ride through too:
/// lossless means EVERY stored key. And ONLY stored keys: a plugin-computed
/// value (the delivery worktree path, §11) is never here — `--json` never
/// dispatches a read-op plugin (§6), it mirrors the file alone. Extras are
/// UNKNOWN keys, so none can collide with the canonical fields layered over
/// them; the canonical set is always present (a cleared scalar emits `null`,
/// an empty body `""`), unlike the file's skip-if-absent frontmatter.
pub
/// Serialise a JSON value to a trailing-newline string — the one place every
/// `--json` branch renders, so the machine contract is byte-identical.
pub