@intentius/behold 0.8.0 → 0.9.1

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.
Files changed (56) hide show
  1. package/AGENTS.md +85 -0
  2. package/README.md +124 -2
  3. package/demos.json +17 -1
  4. package/dist/cli.js +2553 -315
  5. package/example-argo-estate/README.md +43 -18
  6. package/example-argo-estate/app-a/chant.config.ts +10 -2
  7. package/example-argo-estate/app-a/package.json +2 -2
  8. package/example-argo-estate/app-b/chant.config.ts +11 -2
  9. package/example-argo-estate/app-b/package.json +2 -2
  10. package/example-argo-estate/control-plane/chant.config.ts +20 -5
  11. package/example-argo-estate/control-plane/package.json +2 -2
  12. package/example-argo-estate/package-lock.json +20 -20
  13. package/example-carve/README.md +221 -0
  14. package/example-carve/app/chant.config.ts +6 -0
  15. package/example-carve/app/package-lock.json +1075 -0
  16. package/example-carve/app/package.json +13 -0
  17. package/example-carve/app/src/carved.ts +30 -0
  18. package/example-carve/app/tsconfig.json +1 -0
  19. package/example-carve/carve-report.json +962 -0
  20. package/example-carve/legacy-tf/cdn.tf +23 -0
  21. package/example-carve/legacy-tf/compute.tf +63 -0
  22. package/example-carve/legacy-tf/floci-override.tf.disabled +61 -0
  23. package/example-carve/legacy-tf/modules/cdn/main.tf +72 -0
  24. package/example-carve/legacy-tf/naming.tf +10 -0
  25. package/example-carve/legacy-tf/network.tf +119 -0
  26. package/example-carve/legacy-tf/observability.tf +18 -0
  27. package/example-carve/legacy-tf/outputs.tf +21 -0
  28. package/example-carve/legacy-tf/storage.tf +33 -0
  29. package/example-carve/legacy-tf/terraform.tfstate +602 -0
  30. package/example-carve/legacy-tf/versions.tf +40 -0
  31. package/example-flux-estate/README.md +9 -4
  32. package/example-flux-estate/app-a/package.json +2 -2
  33. package/example-flux-estate/app-a/src/app.ts +2 -1
  34. package/example-flux-estate/app-b/chant.config.ts +4 -3
  35. package/example-flux-estate/app-b/package.json +2 -2
  36. package/example-flux-estate/app-b/src/app.ts +5 -3
  37. package/example-flux-estate/control-plane/package.json +2 -2
  38. package/example-flux-estate/control-plane/src/flux.ts +4 -2
  39. package/example-flux-estate/package-lock.json +20 -20
  40. package/example-k8s/package-lock.json +21 -21
  41. package/example-k8s/package.json +3 -3
  42. package/example-writes/package-lock.json +14 -14
  43. package/example-writes/package.json +3 -3
  44. package/package.json +8 -6
  45. package/web/app.js +714 -57
  46. package/web/carve-steps.js +621 -0
  47. package/web/carve-steps.test.js +248 -0
  48. package/web/demos.js +71 -0
  49. package/web/demos.test.js +83 -0
  50. package/web/index.html +93 -1
  51. package/web/json-view.js +334 -0
  52. package/web/json-view.test.js +218 -0
  53. package/web/layout-store.js +164 -4
  54. package/web/layout-store.test.js +226 -1
  55. package/web/panel.js +28 -0
  56. package/web/theme.js +57 -1
@@ -0,0 +1,602 @@
1
+ {
2
+ "version": 4,
3
+ "terraform_version": "1.9.8",
4
+ "serial": 17,
5
+ "lineage": "00000000-0000-4000-8000-000000000000",
6
+ "outputs": {
7
+ "_fixture_note": {
8
+ "value": "SYNTHETIC. Hand-written for behold's carve demo estate (#254) — never produced by a real terraform apply. The account id is 000000000000 and every ARN, id and hostname in this file is fake. `chant carve advise --state` and `chant carve emit --state` read it as plain JSON, so no terraform binary and no cloud call is involved. The --live tier of the walkthrough replaces it with a state terraform really wrote, by applying legacy-tf into a scratch Floci (see floci-override.tf.disabled).",
9
+ "type": "string"
10
+ },
11
+ "api_function_name": {
12
+ "value": "acme-platform-api",
13
+ "type": "string"
14
+ },
15
+ "vpc_id": {
16
+ "value": "vpc-0a1b2c3d4e5f60718",
17
+ "type": "string"
18
+ },
19
+ "private_subnet_ids": {
20
+ "value": ["subnet-0a1b2c3d4e5f60719", "subnet-0a1b2c3d4e5f6071a"],
21
+ "type": ["list", "string"]
22
+ }
23
+ },
24
+ "resources": [
25
+ {
26
+ "mode": "data",
27
+ "type": "aws_availability_zones",
28
+ "name": "available",
29
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
30
+ "instances": [
31
+ {
32
+ "schema_version": 0,
33
+ "attributes": {
34
+ "id": "us-east-2",
35
+ "names": ["us-east-2a", "us-east-2b", "us-east-2c"],
36
+ "state": "available",
37
+ "zone_ids": ["use2-az1", "use2-az2", "use2-az3"]
38
+ }
39
+ }
40
+ ]
41
+ },
42
+ {
43
+ "mode": "data",
44
+ "type": "aws_prefix_list",
45
+ "name": "s3",
46
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
47
+ "instances": [
48
+ {
49
+ "schema_version": 0,
50
+ "attributes": {
51
+ "cidr_blocks": ["52.219.0.0/16"],
52
+ "id": "pl-0000000000000000a",
53
+ "name": "com.amazonaws.us-east-2.s3"
54
+ }
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "mode": "data",
60
+ "type": "aws_ssm_parameter",
61
+ "name": "assets_cdn_domain",
62
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
63
+ "instances": [
64
+ {
65
+ "schema_version": 0,
66
+ "attributes": {
67
+ "arn": "arn:aws:ssm:us-east-2:000000000000:parameter/acme/platform/prod/assets-cdn-domain",
68
+ "id": "/acme/platform/prod/assets-cdn-domain",
69
+ "name": "/acme/platform/prod/assets-cdn-domain",
70
+ "type": "String",
71
+ "value": "cdn.acme-platform.example.com",
72
+ "with_decryption": true
73
+ }
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ "mode": "managed",
79
+ "type": "aws_cloudwatch_log_group",
80
+ "name": "worker",
81
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
82
+ "instances": [
83
+ {
84
+ "schema_version": 0,
85
+ "attributes": {
86
+ "arn": "arn:aws:logs:us-east-2:000000000000:log-group:/acme/platform/worker",
87
+ "id": "/acme/platform/worker",
88
+ "kms_key_id": "",
89
+ "log_group_class": "STANDARD",
90
+ "name": "/acme/platform/worker",
91
+ "name_prefix": "",
92
+ "retention_in_days": 30,
93
+ "skip_destroy": false,
94
+ "tags": {
95
+ "Component": "worker",
96
+ "Name": "acme-platform-worker"
97
+ },
98
+ "tags_all": {
99
+ "Component": "worker",
100
+ "Environment": "prod",
101
+ "ManagedBy": "terraform",
102
+ "Name": "acme-platform-worker",
103
+ "Team": "platform"
104
+ }
105
+ }
106
+ }
107
+ ]
108
+ },
109
+ {
110
+ "mode": "managed",
111
+ "type": "aws_iam_role",
112
+ "name": "api",
113
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
114
+ "dependencies": ["random_pet.suffix"],
115
+ "instances": [
116
+ {
117
+ "schema_version": 0,
118
+ "attributes": {
119
+ "arn": "arn:aws:iam::000000000000:role/acme-platform-api-gently-mutt",
120
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"}}],\"Version\":\"2012-10-17\"}",
121
+ "create_date": "2026-06-14T09:12:44Z",
122
+ "description": "",
123
+ "force_detach_policies": false,
124
+ "id": "acme-platform-api-gently-mutt",
125
+ "managed_policy_arns": [
126
+ "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
127
+ "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
128
+ ],
129
+ "max_session_duration": 3600,
130
+ "name": "acme-platform-api-gently-mutt",
131
+ "name_prefix": "",
132
+ "path": "/",
133
+ "tags": {
134
+ "Component": "api"
135
+ },
136
+ "tags_all": {
137
+ "Component": "api",
138
+ "Environment": "prod",
139
+ "ManagedBy": "terraform",
140
+ "Team": "platform"
141
+ },
142
+ "unique_id": "AROA00000000000000001"
143
+ }
144
+ }
145
+ ]
146
+ },
147
+ {
148
+ "mode": "managed",
149
+ "type": "aws_lambda_function",
150
+ "name": "api",
151
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
152
+ "dependencies": [
153
+ "aws_iam_role.api",
154
+ "aws_s3_bucket.assets",
155
+ "aws_security_group.lambda",
156
+ "aws_subnet.private_a",
157
+ "aws_subnet.private_b",
158
+ "aws_vpc.main",
159
+ "random_pet.suffix"
160
+ ],
161
+ "instances": [
162
+ {
163
+ "schema_version": 0,
164
+ "attributes": {
165
+ "architectures": ["x86_64"],
166
+ "arn": "arn:aws:lambda:us-east-2:000000000000:function:acme-platform-api",
167
+ "environment": [
168
+ {
169
+ "variables": {
170
+ "ASSETS_BUCKET": "acme-platform-assets-prod",
171
+ "LOG_LEVEL": "info"
172
+ }
173
+ }
174
+ ],
175
+ "filename": "build/api.zip",
176
+ "function_name": "acme-platform-api",
177
+ "handler": "index.handler",
178
+ "id": "acme-platform-api",
179
+ "last_modified": "2026-06-14T09:13:02.184+0000",
180
+ "memory_size": 512,
181
+ "package_type": "Zip",
182
+ "publish": false,
183
+ "role": "arn:aws:iam::000000000000:role/acme-platform-api-gently-mutt",
184
+ "runtime": "nodejs22.x",
185
+ "source_code_size": 1048576,
186
+ "tags": {
187
+ "Component": "api"
188
+ },
189
+ "tags_all": {
190
+ "Component": "api",
191
+ "Environment": "prod",
192
+ "ManagedBy": "terraform",
193
+ "Team": "platform"
194
+ },
195
+ "timeout": 15,
196
+ "version": "$LATEST",
197
+ "vpc_config": [
198
+ {
199
+ "ipv6_allowed_for_dual_stack": false,
200
+ "security_group_ids": ["sg-0a1b2c3d4e5f6071b"],
201
+ "subnet_ids": ["subnet-0a1b2c3d4e5f60719", "subnet-0a1b2c3d4e5f6071a"],
202
+ "vpc_id": "vpc-0a1b2c3d4e5f60718"
203
+ }
204
+ ]
205
+ }
206
+ }
207
+ ]
208
+ },
209
+ {
210
+ "mode": "managed",
211
+ "type": "aws_network_acl",
212
+ "name": "private",
213
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
214
+ "dependencies": ["aws_subnet.private_a", "aws_subnet.private_b", "aws_vpc.main"],
215
+ "instances": [
216
+ {
217
+ "schema_version": 1,
218
+ "attributes": {
219
+ "arn": "arn:aws:ec2:us-east-2:000000000000:network-acl/acl-0a1b2c3d4e5f6071c",
220
+ "egress": [
221
+ {
222
+ "action": "allow",
223
+ "cidr_block": "0.0.0.0/0",
224
+ "from_port": 0,
225
+ "protocol": "-1",
226
+ "rule_no": 100,
227
+ "to_port": 0
228
+ }
229
+ ],
230
+ "id": "acl-0a1b2c3d4e5f6071c",
231
+ "ingress": [
232
+ {
233
+ "action": "allow",
234
+ "cidr_block": "10.42.0.0/16",
235
+ "from_port": 0,
236
+ "protocol": "tcp",
237
+ "rule_no": 100,
238
+ "to_port": 65535
239
+ }
240
+ ],
241
+ "owner_id": "000000000000",
242
+ "subnet_ids": ["subnet-0a1b2c3d4e5f60719", "subnet-0a1b2c3d4e5f6071a"],
243
+ "tags": {
244
+ "Name": "acme-platform-private"
245
+ },
246
+ "tags_all": {
247
+ "Environment": "prod",
248
+ "ManagedBy": "terraform",
249
+ "Name": "acme-platform-private",
250
+ "Team": "platform"
251
+ },
252
+ "vpc_id": "vpc-0a1b2c3d4e5f60718"
253
+ }
254
+ }
255
+ ]
256
+ },
257
+ {
258
+ "mode": "managed",
259
+ "type": "aws_s3_bucket",
260
+ "name": "assets",
261
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
262
+ "instances": [
263
+ {
264
+ "schema_version": 0,
265
+ "attributes": {
266
+ "acceleration_status": "",
267
+ "arn": "arn:aws:s3:::acme-platform-assets-prod",
268
+ "bucket": "acme-platform-assets-prod",
269
+ "bucket_domain_name": "acme-platform-assets-prod.s3.amazonaws.com",
270
+ "bucket_prefix": "",
271
+ "bucket_regional_domain_name": "acme-platform-assets-prod.s3.us-east-2.amazonaws.com",
272
+ "cors_rule": [],
273
+ "force_destroy": false,
274
+ "hosted_zone_id": "Z2O1EMRO9K5GLX",
275
+ "id": "acme-platform-assets-prod",
276
+ "object_lock_enabled": false,
277
+ "region": "us-east-2",
278
+ "request_payer": "BucketOwner",
279
+ "server_side_encryption_configuration": [
280
+ {
281
+ "rule": [
282
+ {
283
+ "apply_server_side_encryption_by_default": [
284
+ {
285
+ "kms_master_key_id": "",
286
+ "sse_algorithm": "AES256"
287
+ }
288
+ ],
289
+ "bucket_key_enabled": false
290
+ }
291
+ ]
292
+ }
293
+ ],
294
+ "tags": {
295
+ "Name": "acme-platform-assets",
296
+ "Purpose": "static-assets"
297
+ },
298
+ "tags_all": {
299
+ "Environment": "prod",
300
+ "ManagedBy": "terraform",
301
+ "Name": "acme-platform-assets",
302
+ "Purpose": "static-assets",
303
+ "Team": "platform"
304
+ },
305
+ "versioning": [
306
+ {
307
+ "enabled": true,
308
+ "mfa_delete": false
309
+ }
310
+ ],
311
+ "website": []
312
+ }
313
+ }
314
+ ]
315
+ },
316
+ {
317
+ "mode": "managed",
318
+ "type": "aws_s3_bucket_public_access_block",
319
+ "name": "assets",
320
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
321
+ "dependencies": ["aws_s3_bucket.assets"],
322
+ "instances": [
323
+ {
324
+ "schema_version": 0,
325
+ "attributes": {
326
+ "block_public_acls": true,
327
+ "block_public_policy": true,
328
+ "bucket": "acme-platform-assets-prod",
329
+ "id": "acme-platform-assets-prod",
330
+ "ignore_public_acls": true,
331
+ "restrict_public_buckets": true
332
+ }
333
+ }
334
+ ]
335
+ },
336
+ {
337
+ "mode": "managed",
338
+ "type": "aws_s3_bucket_versioning",
339
+ "name": "assets",
340
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
341
+ "dependencies": ["aws_s3_bucket.assets"],
342
+ "instances": [
343
+ {
344
+ "schema_version": 0,
345
+ "attributes": {
346
+ "bucket": "acme-platform-assets-prod",
347
+ "expected_bucket_owner": "",
348
+ "id": "acme-platform-assets-prod",
349
+ "mfa": null,
350
+ "versioning_configuration": [
351
+ {
352
+ "mfa_delete": "",
353
+ "status": "Enabled"
354
+ }
355
+ ]
356
+ }
357
+ }
358
+ ]
359
+ },
360
+ {
361
+ "mode": "managed",
362
+ "type": "aws_security_group",
363
+ "name": "lambda",
364
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
365
+ "dependencies": ["aws_vpc.main", "random_pet.suffix"],
366
+ "instances": [
367
+ {
368
+ "schema_version": 1,
369
+ "attributes": {
370
+ "arn": "arn:aws:ec2:us-east-2:000000000000:security-group/sg-0a1b2c3d4e5f6071b",
371
+ "description": "Egress-only group for the acme-platform API lambda",
372
+ "egress": [
373
+ {
374
+ "cidr_blocks": [],
375
+ "description": "S3 via the regional gateway prefix list",
376
+ "from_port": 443,
377
+ "prefix_list_ids": ["pl-0000000000000000a"],
378
+ "protocol": "tcp",
379
+ "security_groups": [],
380
+ "self": false,
381
+ "to_port": 443
382
+ },
383
+ {
384
+ "cidr_blocks": ["10.42.0.0/16"],
385
+ "description": "SSM interface endpoint, inside the VPC",
386
+ "from_port": 443,
387
+ "prefix_list_ids": [],
388
+ "protocol": "tcp",
389
+ "security_groups": [],
390
+ "self": false,
391
+ "to_port": 443
392
+ }
393
+ ],
394
+ "id": "sg-0a1b2c3d4e5f6071b",
395
+ "ingress": [],
396
+ "name": "acme-platform-lambda-gently-mutt",
397
+ "name_prefix": "",
398
+ "owner_id": "000000000000",
399
+ "revoke_rules_on_delete": false,
400
+ "tags": {
401
+ "Name": "acme-platform-lambda"
402
+ },
403
+ "tags_all": {
404
+ "Environment": "prod",
405
+ "ManagedBy": "terraform",
406
+ "Name": "acme-platform-lambda",
407
+ "Team": "platform"
408
+ },
409
+ "vpc_id": "vpc-0a1b2c3d4e5f60718"
410
+ }
411
+ }
412
+ ]
413
+ },
414
+ {
415
+ "mode": "managed",
416
+ "type": "aws_subnet",
417
+ "name": "private_a",
418
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
419
+ "dependencies": ["aws_vpc.main", "random_pet.suffix"],
420
+ "instances": [
421
+ {
422
+ "schema_version": 1,
423
+ "attributes": {
424
+ "arn": "arn:aws:ec2:us-east-2:000000000000:subnet/subnet-0a1b2c3d4e5f60719",
425
+ "assign_ipv6_address_on_creation": false,
426
+ "availability_zone": "us-east-2a",
427
+ "availability_zone_id": "use2-az1",
428
+ "cidr_block": "10.42.1.0/24",
429
+ "id": "subnet-0a1b2c3d4e5f60719",
430
+ "map_public_ip_on_launch": false,
431
+ "owner_id": "000000000000",
432
+ "tags": {
433
+ "Name": "acme-platform-private-a-gently-mutt",
434
+ "Tier": "private"
435
+ },
436
+ "tags_all": {
437
+ "Environment": "prod",
438
+ "ManagedBy": "terraform",
439
+ "Name": "acme-platform-private-a-gently-mutt",
440
+ "Team": "platform",
441
+ "Tier": "private"
442
+ },
443
+ "vpc_id": "vpc-0a1b2c3d4e5f60718"
444
+ }
445
+ }
446
+ ]
447
+ },
448
+ {
449
+ "mode": "managed",
450
+ "type": "aws_subnet",
451
+ "name": "private_b",
452
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
453
+ "dependencies": ["aws_vpc.main", "random_pet.suffix"],
454
+ "instances": [
455
+ {
456
+ "schema_version": 1,
457
+ "attributes": {
458
+ "arn": "arn:aws:ec2:us-east-2:000000000000:subnet/subnet-0a1b2c3d4e5f6071a",
459
+ "assign_ipv6_address_on_creation": false,
460
+ "availability_zone": "us-east-2b",
461
+ "availability_zone_id": "use2-az2",
462
+ "cidr_block": "10.42.2.0/24",
463
+ "id": "subnet-0a1b2c3d4e5f6071a",
464
+ "map_public_ip_on_launch": false,
465
+ "owner_id": "000000000000",
466
+ "tags": {
467
+ "Name": "acme-platform-private-b-gently-mutt",
468
+ "Tier": "private"
469
+ },
470
+ "tags_all": {
471
+ "Environment": "prod",
472
+ "ManagedBy": "terraform",
473
+ "Name": "acme-platform-private-b-gently-mutt",
474
+ "Team": "platform",
475
+ "Tier": "private"
476
+ },
477
+ "vpc_id": "vpc-0a1b2c3d4e5f60718"
478
+ }
479
+ }
480
+ ]
481
+ },
482
+ {
483
+ "mode": "managed",
484
+ "type": "aws_vpc",
485
+ "name": "main",
486
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
487
+ "dependencies": ["random_pet.suffix"],
488
+ "instances": [
489
+ {
490
+ "schema_version": 1,
491
+ "attributes": {
492
+ "arn": "arn:aws:ec2:us-east-2:000000000000:vpc/vpc-0a1b2c3d4e5f60718",
493
+ "cidr_block": "10.42.0.0/16",
494
+ "default_network_acl_id": "acl-0a1b2c3d4e5f6071d",
495
+ "default_route_table_id": "rtb-0a1b2c3d4e5f6071e",
496
+ "default_security_group_id": "sg-0a1b2c3d4e5f6071f",
497
+ "dhcp_options_id": "dopt-0a1b2c3d4e5f60720",
498
+ "enable_dns_hostnames": true,
499
+ "enable_dns_support": true,
500
+ "id": "vpc-0a1b2c3d4e5f60718",
501
+ "instance_tenancy": "default",
502
+ "main_route_table_id": "rtb-0a1b2c3d4e5f6071e",
503
+ "owner_id": "000000000000",
504
+ "tags": {
505
+ "Name": "acme-platform-gently-mutt"
506
+ },
507
+ "tags_all": {
508
+ "Environment": "prod",
509
+ "ManagedBy": "terraform",
510
+ "Name": "acme-platform-gently-mutt",
511
+ "Team": "platform"
512
+ }
513
+ }
514
+ }
515
+ ]
516
+ },
517
+ {
518
+ "mode": "managed",
519
+ "type": "aws_vpc_endpoint",
520
+ "name": "ssm",
521
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
522
+ "dependencies": [
523
+ "aws_security_group.lambda",
524
+ "aws_subnet.private_a",
525
+ "aws_subnet.private_b",
526
+ "aws_vpc.main",
527
+ "random_pet.suffix"
528
+ ],
529
+ "instances": [
530
+ {
531
+ "schema_version": 1,
532
+ "attributes": {
533
+ "arn": "arn:aws:ec2:us-east-2:000000000000:vpc-endpoint/vpce-0a1b2c3d4e5f60721",
534
+ "id": "vpce-0a1b2c3d4e5f60721",
535
+ "ip_address_type": "ipv4",
536
+ "owner_id": "000000000000",
537
+ "private_dns_enabled": true,
538
+ "requester_managed": false,
539
+ "route_table_ids": [],
540
+ "security_group_ids": ["sg-0a1b2c3d4e5f6071b"],
541
+ "service_name": "com.amazonaws.us-east-2.ssm",
542
+ "state": "available",
543
+ "subnet_ids": ["subnet-0a1b2c3d4e5f60719", "subnet-0a1b2c3d4e5f6071a"],
544
+ "tags": {
545
+ "Name": "acme-platform-ssm"
546
+ },
547
+ "tags_all": {
548
+ "Environment": "prod",
549
+ "ManagedBy": "terraform",
550
+ "Name": "acme-platform-ssm",
551
+ "Team": "platform"
552
+ },
553
+ "vpc_endpoint_type": "Interface",
554
+ "vpc_id": "vpc-0a1b2c3d4e5f60718"
555
+ }
556
+ }
557
+ ]
558
+ },
559
+ {
560
+ "mode": "managed",
561
+ "type": "random_pet",
562
+ "name": "suffix",
563
+ "provider": "provider[\"registry.terraform.io/hashicorp/random\"]",
564
+ "instances": [
565
+ {
566
+ "schema_version": 0,
567
+ "attributes": {
568
+ "id": "gently-mutt",
569
+ "keepers": null,
570
+ "length": 2,
571
+ "prefix": null,
572
+ "separator": "-"
573
+ }
574
+ }
575
+ ]
576
+ },
577
+ {
578
+ "module": "module.cdn",
579
+ "mode": "managed",
580
+ "type": "aws_cloudfront_distribution",
581
+ "name": "this",
582
+ "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
583
+ "instances": [
584
+ {
585
+ "schema_version": 1,
586
+ "attributes": {
587
+ "aliases": ["cdn.acme-platform.example.com"],
588
+ "arn": "arn:aws:cloudfront::000000000000:distribution/E00000000000AA",
589
+ "comment": "acme-platform-assets-gently-mutt",
590
+ "domain_name": "d000000000000a.cloudfront.net",
591
+ "enabled": true,
592
+ "hosted_zone_id": "Z2FDTNDATAQYW2",
593
+ "id": "E00000000000AA",
594
+ "price_class": "PriceClass_100",
595
+ "status": "Deployed"
596
+ }
597
+ }
598
+ ]
599
+ }
600
+ ],
601
+ "check_results": null
602
+ }
@@ -0,0 +1,40 @@
1
+ # The Terraform half of behold's carve demo estate (#254).
2
+ #
3
+ # Everything in this directory is still Terraform-owned. The chant half lives in
4
+ # ../app — the log group and the SSM parameter that came out of here last month.
5
+ #
6
+ # Nothing here has ever been applied to a real AWS account. The committed
7
+ # terraform.tfstate is synthetic (see its `_fixture_note` output and README.md),
8
+ # the account id in it is 000000000000, and every ARN is fake. Values are
9
+ # boring-realistic on purpose: the walkthrough video pauses on the inspect pane.
10
+ #
11
+ # `chant carve advise` parses these files with @cdktf/hcl2json — no terraform
12
+ # binary, no provider download, no network. See ../README.md for the scores this
13
+ # estate is tuned to produce and why each one lands where it does.
14
+
15
+ terraform {
16
+ required_version = ">= 1.6"
17
+
18
+ required_providers {
19
+ aws = {
20
+ source = "hashicorp/aws"
21
+ version = "~> 5.0"
22
+ }
23
+ random = {
24
+ source = "hashicorp/random"
25
+ version = "~> 3.6"
26
+ }
27
+ }
28
+ }
29
+
30
+ provider "aws" {
31
+ region = "us-east-2"
32
+
33
+ default_tags {
34
+ tags = {
35
+ Environment = "prod"
36
+ ManagedBy = "terraform"
37
+ Team = "platform"
38
+ }
39
+ }
40
+ }
@@ -10,9 +10,12 @@ Three chant projects served as one composed estate:
10
10
  every object: the fully-resolved half.
11
11
  - **app-b/** — the same workload with **no** namespace anywhere: the control
12
12
  plane's `targetNamespace` stamps it at apply time. Idiomatic Flux, and the
13
- deliberate exhibit of behold's namespace-mismatch note (behold#192) a
14
- plain live read scopes to `default`, finds nothing, and behold explains the
15
- all-pending paint instead of letting it read as "not deployed".
13
+ deliberate exhibit of the estate namespace join (behold#221). Served alone,
14
+ app-b's live read scopes to `default`, finds nothing, and behold explains
15
+ the all-pending paint with the namespace-mismatch note (behold#192) instead
16
+ of letting it read as "not deployed". Served composed, the estate reads the
17
+ binding off the control plane's own `Kustomization` and scopes app-b's read
18
+ to `app-b` — the answer neither project holds by itself.
16
19
 
17
20
  ```sh
18
21
  npx @intentius/behold demo flux-estate
@@ -27,7 +30,9 @@ this repo, and serves the three projects composed. What to look at:
27
30
  Kustomization → GitRepository across stacks, and the `dependsOn` edge from
28
31
  app-b's Kustomization to app-a's — the estate's reconcile ordering.
29
32
  - The **overlay** (env `local`): app-a green, the control plane's CRs green,
30
- app-b pending **with the note explaining why**.
33
+ and app-b green too — read in the namespace the control plane binds it to,
34
+ with a note naming where it looked. Serve `app-b` on its own to see the
35
+ same objects go pending, which is what the join is worth.
31
36
  - The **runtime tier** (zoom: runtime), on the estate itself since behold#224:
32
37
  the workloads Flux deployed, attributed back to the declaring Kustomization
33
38
  via its labels (chant#1549) and boxed under it.
@@ -7,7 +7,7 @@
7
7
  "build": "chant build src -o manifests/app.yaml --format yaml"
8
8
  },
9
9
  "dependencies": {
10
- "@intentius/chant": "^0.44.3",
11
- "@intentius/chant-lexicon-k8s": "^0.44.3"
10
+ "@intentius/chant": "^0.44.7",
11
+ "@intentius/chant-lexicon-k8s": "^0.44.7"
12
12
  }
13
13
  }