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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
[]
= "tatara-process"
= "Process CRD — K8s clusters, workloads, migrations, tests as Unix processes in the tatara convergence lattice"
= true
= true
= true
= true
# UNFROZEN 2026-08-07. The freeze applied hours earlier in this session stopped
# this crate minting artifacts that could not build for anyone; the underlying
# defect is now fixed, so the freeze is no longer what is protecting consumers.
#
# The defect, for the record: all 26 published versions (0.2.157-0.2.187) failed
# for every consumer with `error[E0432]: unresolved import
# crate::boundary::UnknownConditionKind` and 74 siblings. This crate consumed
# the LOCAL tatara-lisp-derive (which has closed_set) while declaring
# `tatara-lisp-derive = "0.3"`, pointing consumers at pleme-io/tatara-lisp's
# derive, which has no closed_set at all. Path is what you build; version is
# what you ship, and the two had drifted apart completely.
#
# Fixed by taking the closed-set half from the PUBLISHED `tatara-closed-set`
# (Phase 2 step 1's crate, live at 0.3.37) and reaching TataraDomain through
# tatara-lisp's own re-export instead of a direct derive dep. Proven by a FULL
# `cargo package` verify — which compiles the packaged crate against published
# deps and is exactly the gate that would have caught this at any point in the
# last 26 releases.
[]
= { = "../tatara-core" , = "0.2.65" }
# Lisp surface — `#[derive(TataraDomain)]` + `compile_source` live here now.
= { = "../tatara-lisp" , = "0.3" }
# The closed-set half now comes from the PUBLISHED crate, not the frozen local
# derive. This is the whole defect: the local derive has closed_set, the crate
# its `version` pointed at (pleme-io/tatara-lisp's tatara-lisp-derive) does not,
# so every published tatara-process resolved consumers to a derive that cannot
# emit what this crate's #[closed_set(..., generate_unknown)] attributes need.
# tatara-closed-set 0.3.37 is Phase 2 step 1's crate, live on crates.io.
#
# `tatara-lisp` deliberately STAYS on path: this crate uses only compile_named,
# domain and format_diagnostic from it, all three of which exist in the
# published 0.3.27 too, so the path/version pair resolves correctly either way.
# Moving it to the registry is what would fire the two-Sexp diamond —
# tatara-reconciler takes both tatara-process and path tatara-lisp — and that
# is the workspace sweep, which this change deliberately does not require.
= "0.3"
# NO direct tatara-lisp-derive dep. `TataraDomain` is reached through
# tatara-lisp's own re-export (`DeriveTataraDomain`), which BOTH the local
# tatara-lisp and the published 0.3.27 provide identically. A direct dep cannot
# work: published tatara-lisp pins its derive `=0.3.27`, so any caret here
# conflicts at package time ("all possible versions conflict with previously
# selected packages"). Letting tatara-lisp own that edge is also the structural
# fix Phase 3 step 1 asks for — the derive is reached through the crate that
# declares it, never re-crossed independently.
# K8s + CRD derive
= { = "0.99", = ["runtime", "derive", "client"] }
= { = "0.24", = ["latest"] }
= { = "0.8", = ["chrono"] }
# Serialization
= { = "1", = ["derive"] }
= "1"
= "0.9"
# Hashing for content-addressable identity
= "1"
= "0.4"
# Time
= { = "0.4", = ["serde"] }
= "2"
# Errors + logging
= "1"
= "2"
= "0.1"
[[]]
= "tatara-lispc"
= "src/bin/tatara-lispc.rs"