@intentius/behold 0.10.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,7 +49,8 @@ end of the walkthrough has somewhere to land.
49
49
 
50
50
  ## Bands
51
51
 
52
- Real output, from `chant carve advise` at chant 0.44.7. Reproduce it with:
52
+ Real output, from `chant carve advise` (first cut at chant 0.44.7, verified
53
+ identical at 0.52.1). Reproduce it with:
53
54
 
54
55
  ```sh
55
56
  npm install -D @cdktf/hcl2json # once, anywhere on your PATH resolution
@@ -119,8 +120,8 @@ chant carve advise --from example-carve/legacy-tf \
119
120
 
120
121
  from the repository root, so the `from` field stays a relative path.
121
122
 
122
- `app/` pins chant ^0.44.7 and that floor is load-bearing, not housekeeping, in
123
- two layers. The advisor only publishes a top-level `version: 1` and
123
+ `app/` pins chant ^0.52.1, and the 0.44.7 floor it grew from was load-bearing,
124
+ not housekeeping, in two layers. The advisor only publishes a top-level `version: 1` and
124
125
  per-resource `boundary` edge lists from 0.44.6 (chant#1636) — run the same
125
126
  command on 0.44.4 and every score is identical but no resource carries a
126
127
  `boundary` field at all, so the Pick step falls back to naming inbound/outbound
@@ -131,8 +132,8 @@ bucket scores 84 instead of 88 and the report's `patchOnCarve` list names
131
132
  fold is applied, not just reported (chant#1637), so the emitted bucket actually
132
133
  carries `VersioningConfiguration` and `PublicAccessBlockConfiguration` instead
133
134
  of leaving them in an "unmapped attributes" comment. The committed report above
134
- is byte-identical to what 0.44.7 regenerates, which is why the demo's fallback
135
- path and its fresh-run path show the same picture.
135
+ is byte-identical to what 0.44.7 regenerates — re-verified at 0.52.1 — which is
136
+ why the demo's fallback path and its fresh-run path show the same picture.
136
137
 
137
138
  ## The six beats
138
139
 
@@ -162,6 +163,26 @@ Then the box slides out of the Terraform half and into `app/`, beside the log
162
163
  group and the SSM parameter that made the same trip last month. Around two
163
164
  minutes end to end.
164
165
 
166
+ ## What the copy remembers
167
+
168
+ Every beat above writes to `app/carveout/aws_s3_bucket-assets.carve.json` —
169
+ chant's carve state manifest (chant ≥ 0.52.2). `carve emit` creates it, `carve
170
+ bridge` adds its record, `carve apply` adds the ownership marker, and behold
171
+ reads it back on every request without ever writing to it.
172
+
173
+ That is why the walkthrough survives a reload. After Emit, the bucket's card
174
+ stays in its band but repaints in the in-flight blue and reads `emitted — not
175
+ bridged`; after Bridge, `bridged — apply is yours`. Restart the server and it
176
+ still says so. Run `chant carve apply` yourself in the copy and the card leaves
177
+ the Terraform bands for the `app — chant` box, keeping its Terraform address,
178
+ and the panel counts `carved so far — 1 of 12 carved`.
179
+
180
+ `carve apply` is the one beat that has no button — not in the stepper, not on
181
+ the API. It resolves the marker that makes chant the owner of a live resource,
182
+ which is a decision that stays with the person at the terminal. The Handoff
183
+ step echoes the command beside the two `terraform` ones, for the same reason
184
+ and in the same shape.
185
+
165
186
  ## Two tiers
166
187
 
167
188
  **Offline is the default.** The synthetic `terraform.tfstate` is committed, so
@@ -180,11 +201,13 @@ it the carved bucket is simply gone from Terraform's world — `0 to destroy`.
180
201
  The line the tier exists for is "Terraform forgot it, chant adopted it, and it
181
202
  never blinked."
182
203
 
183
- One beat stays caption rather than footage for now: `chant lifecycle diff
184
- --live` reading the bucket clean while Terraform still owns it. chant's AWS
185
- observe is CFN-stack-scoped by logical id, so a Terraform-owned resource reads
186
- confirmed-missing regardless of its existence — chant#1647 tracks the
187
- physical-identity read path that unlocks it.
204
+ The observe beat is footage now, not caption: after Emit, "▶ watch chant read
205
+ it live" runs `chant lifecycle diff prod --live` in the carveout with the
206
+ endpoint pointed at the scratch Floci, and the bucket reads OBSERVED —
207
+ `EXTERNAL`, ownership `foreign` — while Terraform still owns it. That is
208
+ chant#1647's physical-identity read path (chant ≥ 0.44.12): stack-absent no
209
+ longer means confirmed-absent when the declared `BucketName` names the
210
+ resource precisely.
188
211
 
189
212
  The live tier needs `docker` and `terraform` on PATH, boots its own throwaway
190
213
  Floci and deletes it after, and never touches an existing `floci*` container.