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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
note: >
Plan 0006 M1-HOST-INVENTORY. Everything the control-plane container (deploy/control-plane-container/
Dockerfile, stages tools, controlplane and k8s), the bidder's firecracker runner image
(ts/hono-compute-provider/hono-firecracker-standalone/Dockerfile) and the code's exec call sites supplied,
each with exactly one fate on a bare Linux host. Call sites scanned: exec.Command, exec.CommandContext,
exec.LookPath and syscall.Exec in non-test Go of this repo, and new Deno.Command in non-test TypeScript of
this repo: socialweb-computer-k8s and every vendored repository under ts/. A computed first
argument is listed under indirect with every executable it resolves to.
The runner image, its Dockerfile, the container's nodeimage stage, cmd/socialweb-nodeboot,
cmd/socialweb-nodeimage and cmd/socialweb-nodeinit are deleted (0006 M3-FOLD); a "from" naming one of
them records where the executable used to come from.
Fates that name a
decision not yet in a plan item say so in why ("decided by Claude, user may veto").
fates:
linked: compiled into the socialweb-computer core binary as a package or verb (go:embed for data files); nothing separate ships
embedded-server: an embedded per-GOOS_GOARCH asset (M1-ASSETS) run as its own long-running unit or HostProcess; driven_by names the CRD, or the core's local state, that starts it
embedded-child: an embedded asset run as a child of the core unit (deno and the TypeScript closure it runs)
embedded-tool: an embedded asset run to completion by the core or a unit's start stage
replaced-by-go: the job moves into Go in the core binary; the executable is never needed
download-asset: fetched and sha256-verified, never installed from a package manager (served by the door, or a guest image pinned in versions.json and built by scripts/build-guest-image.sh)
host-file: written by `socialweb-computer install` (root, once), never by hand
host-prerequisite: the host must supply it and check-host probes it by name; the only fate that comes from the host
build-host: needed only on a build or development host (guest image build, market network tooling), never on a gateway, bidder or requester runtime host
removed-legacy: deleted by design or legacy that is not ported; no runtime host needs it
entries:
- name: socialweb-gateway
kind: executable
fate: linked
owner: 0006 M1-CLI, M3-SERVE-GATEWAY-KCP
why: the gateway becomes `socialweb-computer serve gateway`
from:
- "image k8s COPY"
- name: socialweb-clusterprovider
kind: executable
fate: linked
owner: 0006 M1-CLI, M3-SERVE-GATEWAY-KCP
why: the cluster provider becomes a verb of the core binary
from:
- "image k8s COPY"
- name: socialweb-cloud-controller-manager
kind: executable
fate: linked
owner: 0006 M1-CLI, M3-CLUSTER-UNITS
why: a core-binary verb run as a member unit of each cluster's slice
from:
- "image k8s COPY"
- "HostProcess member unit argv via clusterstack CloudControllerManagerArgv"
- name: socialweb-vault
kind: executable
fate: linked
owner: 0006 M1-CLI, M2-OPENBAO-SERVER
why: apply-root and prepare-root become core verbs
from:
- "image k8s COPY"
- name: socialweb-tenantcredential
kind: executable
fate: linked
owner: 0006 M1-CLI
why: an internal re-exec verb of the core binary
from:
- "image k8s COPY"
- name: socialweb-computer-kcp-check-host
kind: executable
fate: linked
owner: 0006 M1-CLI, M2-HOST-CONTRACT
why: becomes `socialweb-computer check-host`; its SELinux probe execs its own copy, which is the core binary
from:
- "image controlplane COPY"
- "image nodeimage COPY"
- "check-host checks.go copyPath"
- name: container-entrypoint
kind: executable
fate: linked
owner: 0006 M2-BOOTSTRAP-LAYER, M3-SERVE-GATEWAY-KCP, M5-RETIRE
why: its sequence (root bao, kcp, apply-root, bootstrap applies, gateway, clusterprovider, socat, door) becomes the core's bootstrap layer and kcp-reconciled units; the shell script is deleted with the container path
from:
- "image k8s COPY of deploy/container-entrypoint.sh"
- name: kcp
kind: executable
fate: embedded-server
driven_by: the core, from local state (alternating blue/green slot units behind the core's own L4 front)
owner: 0006 M2-KCP-SLOTS, M1-ASSETS
why: the unpatched release v0.33.0 as a zstd asset, out of process (user decision 2026-10-12, kcp-spike.md route B)
from:
- "image controlplane COPY"
- "check-host checks.go path"
- name: kine
kind: executable
fate: embedded-server
driven_by: Cluster (a member unit of each cluster's slice); the core for kcp's own store
owner: 0006 M3-CLUSTER-UNITS, M2-KCP-STORE, M1-ASSETS
why: each cluster's store is kine over its own postgres; kcp's store is kine over a dedicated postgres unit
from:
- "image controlplane COPY"
- "check-host checks.go"
- "HostProcess member unit argv via clusterstack KineArgv"
- name: postgres
kind: executable
fate: embedded-server
driven_by: Postgres CRD (each cluster's postgres); the core for kcp's own postgres unit
owner: 0006 M2-POSTGRES, M2-KCP-STORE, M0-PG-SOURCE, M1-ASSETS
why: a relocatable PostgreSQL 18 set; the build (prebuilt vs from source) is M0-PG-SOURCE's pending choice
from:
- "image controlplane dnf postgresql-server"
- "internal/clusterprovider/postgres.go"
- "check-host postgres.go"
- name: bao
kind: executable
fate: embedded-server
driven_by: OpenBaoServer CRD (root and bidder vaults); Cluster for the per-cluster bao member unit
owner: 0006 M2-OPENBAO-SERVER, M3-CLUSTER-UNITS, M1-ASSETS
why: OpenBao v2.6.2 as an asset
from:
- "image controlplane COPY"
- "HostProcess member unit argv via clusterstack OpenBaoArgv"
- name: k3s
kind: executable
fate: embedded-server
driven_by: Cluster (a member unit of each cluster's slice, blue/green slots behind the per-cluster front)
owner: 0006 M3-CLUSTER-UNITS, M3-CP-SLOTS, M1-ASSETS
why: the tenant control plane
from:
- "image controlplane COPY"
- "image nodeimage COPY"
- "check-host checks.go"
- "socialweb-nodeimage k3sdata.go"
- "HostProcess member unit argv"
- name: external-secrets
kind: executable
fate: embedded-server
driven_by: Cluster (controller and webhook, two member units of each cluster's slice)
owner: 0006 M3-CLUSTER-UNITS, M1-ASSETS
why: the digest-pinned upstream binary, now an asset instead of an image copy
from:
- "image controlplane COPY"
- "HostProcess member unit argv via clusterstack ExternalSecretsArgv"
- name: dumbpipe
kind: executable
fate: embedded-server
driven_by: ClusterLink (member units of each cluster's slice); the requester instance's tunnel HostProcess
owner: 0006 M3-CLUSTER-UNITS, M1-ASSETS, 0008 M4-RUN-REQUEST
why: the iroh transport, the only guest transport kept (user decision 2026-10-12); the requester's `which dumbpipe` lookup goes with the asset
from:
- "image k8s curl download"
- "HostProcess member unit argv via clusterlink.Argv"
- "ts/atproto-market requester-xrpc ensureDumbpipe"
- name: firecracker
kind: executable
fate: embedded-server
driven_by: ComputeVM (the VM unit, launched directly by the service manager)
owner: 0007 M2-VM-RUNTIME, 0006 M1-ASSETS
why: no runner container; the VMM is the VM unit's own process
from:
- "runner image COPY"
- "check-host checks.go"
- "internal/vmruntime firecracker_linux.go VM unit argv (socialweb-vmexec execs it)"
- name: pasta
kind: executable
fate: embedded-server
driven_by: ComputeVM (the VM unit's network stage, in the VM's own user and network namespace)
owner: 0007 M2-VM-RUNTIME, 0006 M1-ASSETS, M1-INSTALL (AppArmor profile)
why: from passt; the constant pasta gateway replaces the network-index allocator
from:
- "runner image dnf passt"
- "check-host checks.go"
- "internal/vmruntime firecracker_linux.go VM unit argv"
- name: deno
kind: executable
fate: embedded-child
owner: 0008 M1-DENO, M1-TS-CLOSURE, 0006 M1-ASSETS
why: deno 2.9.3 run by the core as the DenoPod runtime (door, bidder, requester); internal/denorun builds every argv; cmd/socialweb-tsbundle fills and probes the closure with it at build time
from:
- "image k8s curl download"
- "internal/denorun/denorun.go"
- "internal/tsbundle/tsbuild/build.go"
- name: initdb
kind: executable
fate: embedded-tool
owner: 0006 M2-POSTGRES, M0-PG-SOURCE
why: part of the relocatable postgres set, run once per data dir
from:
- "image controlplane dnf postgresql-server"
- "internal/clusterprovider/postgres.go"
- "check-host postgres.go"
- name: pg_dump
kind: executable
fate: embedded-tool
owner: 0006 M2-KCP-STORE, M3-CP-SLOTS, M0-PG-SOURCE
why: the dump taken before each kcp or k3s upgrade; joins the postgres asset set
from:
- "plan 0006 M2-KCP-STORE"
- name: socialweb-vmexec
kind: executable
fate: embedded-tool
owner: 0007 M2-VM-RUNTIME
why: the VM unit's one-shot stage inside pasta's namespace (tap, bridge, pinned neighbor over netlink) that execs firecracker; no socialweb-computer code stays in the VM's process tree
from:
- "cmd/socialweb-vmexec"
- name: socialweb-computer
kind: executable
fate: linked
owner: 0007 M2-VM-RUNTIME
why: the firecracker provider's vmruntime microvm runs `socialweb-computer internal vm` (one-shot prep, unit start, inspect, stop); the kcp provider's guests are booted by the ComputeVM controller in the core of the bidder's own instance (0007 M2-CONTROLLER)
from:
- "ts/hono-compute-provider microvm-vmruntime"
- name: swc-userns-stage
kind: executable
fate: embedded-tool
owner: 0007 M0-VM-USERNS, M2-VM-RUNTIME
why: first word of each VM unit's ExecStart; creates the per-VM subuid user namespace through newuidmap/newgidmap and execs pasta; static, built reproducibly by scripts/build-userns-stage.sh, pinned in versions.json
from:
- "deploy/swc-userns-stage/stage.c"
- "internal/vmruntime (VM unit ExecStart)"
- name: psql
kind: executable
fate: replaced-by-go
owner: 0006 M2-POSTGRES
why: bootstrap rows and readiness go through pgx
from:
- "image controlplane dnf postgresql"
- "internal/clusterprovider/bootstraprows.go"
- "internal/clusterprovider/postgres.go"
- "check-host postgres.go"
- name: kubectl
kind: executable
fate: replaced-by-go
owner: 0006 M2-APPLY
why: every apply goes through internal/kcpapply (dynamic client, server-side apply)
from:
- "image controlplane COPY"
- "check-host checks.go"
- "deploy/container-entrypoint.sh"
- "deploy/install-provider.sh"
- name: yq
kind: executable
fate: replaced-by-go
owner: 0006 M2-APPLY, M2-TEMPLATE
why: manifest rendering and patching move into kcpapply and the template layer
from:
- "image k8s dnf yq"
- name: socat
kind: executable
fate: replaced-by-go
owner: 0006 M3-SERVE-GATEWAY-KCP
why: the TLS terminator becomes a crypto/tls proxy in the core
from:
- "image k8s dnf socat"
- "deploy/container-entrypoint.sh"
- name: openssl
kind: executable
fate: replaced-by-go
owner: 0006 M3-SERVE-GATEWAY-KCP
why: certificates are minted with crypto/x509
from:
- "image k8s dnf openssl"
- name: ip
kind: executable
fate: replaced-by-go
owner: 0007 M2-VM-RUNTIME
why: netlink in socialweb-vmexec; the identical per-guest address plan needs no host address scan
from:
- "image k8s dnf iproute"
- "runner image dnf iproute"
- "internal/nodevm/namespace.go"
- name: which
kind: executable
fate: replaced-by-go
owner: 0006 M1-ASSETS
why: assets are resolved by their extracted path, never searched on PATH; the requester's which dumbpipe goes
from:
- "image k8s dnf which"
- "ts/atproto-market requester-xrpc ensureDumbpipe"
- name: unzip
kind: executable
fate: replaced-by-go
owner: 0006 M1-ASSETS
why: only unpacked the deno release in the image build; assets are zstd blobs the core extracts
from:
- "image k8s dnf unzip"
- name: curl
kind: executable
fate: replaced-by-go
owner: 0006 M1-ASSETS
why: only fetched deno, dumbpipe and the ESO bundle at image build time; those are embedded assets now
from:
- "image esobundle and k8s RUN curl"
- name: ssh-keygen
kind: executable
fate: replaced-by-go
owner: 0007 M4-HOST-KEYS, 0008 M4-RUN-REQUEST
why: ed25519 keypairs are minted in-process with golang.org/x/crypto/ssh and kept in the application's own OpenBao (every key lives there, user decision 2026-10-12); decided by Claude, user may veto
from:
- "ts/atproto-market requester-xrpc generateKeypair"
- "ts/hono-compute-provider systemctl-shim"
- name: ssh
kind: executable
fate: host-prerequisite
owner: 0008 M4-RUN-REQUEST, M4-RUN-GATEWAY-SSH
why: the person's own OpenSSH client for the interactive session on a requester host (ProxyCommand over dumbpipe); not needed on gateway or bidder hosts
from:
- "ts/atproto-market requester-xrpc"
- "image k8s dnf openssh-clients"
- name: newuidmap
kind: executable
fate: host-prerequisite
owner: 0007 M2-VM-RUNTIME, 0006 M2-HOST-CONTRACT
why: the distro's setuid helper (rootless podman's) maps each VM's subuid range; a setuid helper is never shipped as an asset; bidders only
from:
- "user decision 2026-10-12 per-VM subuid user namespaces"
- name: newgidmap
kind: executable
fate: host-prerequisite
owner: 0007 M2-VM-RUNTIME, 0006 M2-HOST-CONTRACT
why: as newuidmap, for the subgid range; bidders only
from:
- "user decision 2026-10-12 per-VM subuid user namespaces"
- name: useradd
kind: executable
fate: host-prerequisite
owner: 0006 M1-INSTALL
why: the distro's shadow tool creates the one system account (socialweb or swc-bidder); only install, run as root, ever execs it
from:
- "user decision 2026-10-12 accounts are created only by install"
- name: userdel
kind: executable
fate: host-prerequisite
owner: 0006 M1-INSTALL
why: uninstall --purge deletes the account install created, and only that one
from:
- "user decision 2026-10-12 install with uninstall"
- name: gpasswd
kind: executable
fate: host-prerequisite
owner: 0006 M1-INSTALL
why: adds the bidder account to kvm before linger, and uninstall removes the membership install added
from:
- "user decision 2026-10-12 kvm before linger"
- name: apparmor_parser
kind: executable
fate: host-prerequisite
owner: 0006 M1-INSTALL, M2-HOST-CONTRACT
why: loads and unloads the socialweb-pasta profile only where AppArmor restricts unprivileged user namespaces (Ubuntu 24.04+)
from:
- "user decision 2026-10-11 AppArmor profile for the embedded pasta"
- name: unshare
kind: executable
fate: host-prerequisite
owner: 0007 M0-VM-USERNS, 0006 M2-HOST-CONTRACT
why: util-linux unshare >= 2.38, required only if M0-VM-USERNS chooses it for the userns stage; check-host already probes it; cmd/socialweb-tsbundle starts every closure entry under unshare -rn at build time
from:
- "check-host checks.go"
- "internal/tsbundle/tsbuild/build.go"
- "cmd/socialweb-tsbundle/main.go"
- name: systemd
kind: executable
fate: host-prerequisite
owner: 0006 M2-HOST-UNITS, M2-HOST-CONTRACT
why: systemd 253+ (GetUnitByPIDFD) with the user manager of a lingering account, reached over D-Bus; production installs only, the dev backend is proc
from:
- "user decision 2026-10-11 minimum systemd"
- name: netsh
kind: executable
fate: host-prerequisite
owner: 0011 M0-REVISIT
why: a Windows OS component read by internal/hostos portrange_windows.go; compiled only for GOOS=windows, outside this Linux plan
from:
- "internal/hostos/portrange_windows.go"
- name: netstat
kind: executable
fate: host-prerequisite
owner: 0011 M0-REVISIT
why: a Windows OS component read by internal/portscan scan_windows.go; compiled only for GOOS=windows
from:
- "internal/portscan/scan_windows.go"
- name: powershell
kind: executable
fate: host-prerequisite
owner: 0011 M0-REVISIT
why: a Windows OS component read by internal/hostos proc_windows.go; compiled only for GOOS=windows
from:
- "internal/hostos/proc_windows.go"
- name: socialweb-meshd
kind: executable
fate: download-asset
owner: 0006 M1-ASSETS
why: two sha256-pinned builds (x86_64, aarch64) the door serves to market nodes
from:
- "versions.json asset socialweb-computer-k8s-downloads (scripts/build-web-app-downloads.sh)"
- name: socialweb-guest-agent
kind: executable
fate: download-asset
owner: 0034 W2-BIDDER-DOWNLOADS
why: two sha256-pinned builds (x86_64, aarch64), with the opentunnel binaries, that a bidder's GuestControlPlane serves to its guests at /v1/downloads
from:
- "versions.json asset socialweb-guest-downloads (scripts/build-guest-downloads.sh)"
- name: socialweb-nodeinit
kind: executable
fate: removed-legacy
owner: 0006 M3-FOLD, 0007 M1-GUEST-IMAGE
why: the initramfs init of the deleted host-side image build; the pinned guest image boots root=/dev/vda with everything built in and carries no initramfs, so cmd/socialweb-nodeinit is deleted
from:
- "image nodeimage stage"
- name: init
kind: executable
fate: download-asset
owner: 0007 M1-GUEST-IMAGE
why: /sbin/init inside the guest image, started by the guest kernel from root=/dev/vda
from:
- "cmd/socialweb-nodeinit/init.go syscall.Exec"
- name: busybox
kind: executable
fate: removed-legacy
owner: 0006 M3-FOLD, 0007 M1-GUEST-IMAGE
why: the insmod of the deleted initramfs init; the guest kernel has every driver built in
from:
- "cmd/socialweb-nodeinit/init.go"
- name: socialweb-nodeimage
kind: executable
fate: build-host
owner: 0006 M3-FOLD, 0007 M1-GUEST-IMAGE
why: folded into the dev-build verbs `socialweb-computer nodeimage guest-rootfs|guest-manifest` (internal/nodeimagemain, absent from a release build), run only by scripts/build-guest-image.sh on a Linux build host; cmd/socialweb-nodeimage and the bidder's node-image-firecracker exec of it are deleted, bidders fetch the pinned image
from:
- "image nodeimage COPY"
- "ts/hono-compute-provider node-image-firecracker binary"
- "scripts/build-guest-image.sh go run ./cmd/socialweb-computer nodeimage"
- name: go
kind: executable
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: scripts/build-guest-image.sh runs the nodeimage verbs with go run on the build host
from:
- "deploy/control-plane-container/Dockerfile nodeimage stage"
- "scripts/build-guest-image.sh"
- name: sleep
kind: executable
fate: build-host
owner: 0006 M2-HOST-CONFORMANCE
why: a stand-in unit of the hostsvc.Manager contract suite (internal/hostsvc/hostsvctest), run only by go test on a development host
from:
- "internal/hostsvc/hostsvctest/suite_linux.go bin"
- name: sh
kind: executable
fate: build-host
owner: 0006 M2-HOST-CONFORMANCE
why: the stand-in shell of the contract suite's failing, restarting and setsid-descendant units, run only by go test on a development host
from:
- "internal/hostsvc/hostsvctest/suite_linux.go bin"
- name: zstd
kind: executable
fate: removed-legacy
owner: 0006 M3-FOLD
why: used only by the deleted host-side image build (cmd/socialweb-nodeimage); runtime assets are zstd blobs the core decodes in Go
from:
- "cmd/socialweb-nodeimage/build.go"
- "image tools dnf zstd"
- name: xz
kind: executable
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: scripts/build-guest-image.sh decompresses the pinned kernel source and base root tarball
from:
- "cmd/socialweb-nodeimage/build.go"
- "image tools dnf xz"
- "scripts/build-guest-image.sh"
- name: cpio
kind: executable
fate: removed-legacy
owner: 0006 M3-FOLD
why: packed the initramfs of the deleted host-side image build; the guest image has no initramfs
from:
- "cmd/socialweb-nodeimage/build.go"
- "image tools dnf cpio"
- name: du
kind: executable
fate: removed-legacy
owner: 0006 M3-FOLD
why: sized the rootfs of the deleted host-side image build; nodeimage guest-rootfs reports the data size in Go
from:
- "cmd/socialweb-nodeimage/rootfs.go"
- name: chroot
kind: executable
fate: removed-legacy
owner: 0006 M3-FOLD
why: ran the preinstall of the deleted host-side image build; nodeimage guest-rootfs composes the rootfs tar in Go
from:
- "cmd/socialweb-nodeimage/rootfs.go name"
- name: mount
kind: executable
fate: removed-legacy
owner: 0006 M3-FOLD
why: used only by the deleted host-side image build
from:
- "cmd/socialweb-nodeimage/rootfs.go name"
- name: umount
kind: executable
fate: removed-legacy
owner: 0006 M3-FOLD
why: used only by the deleted host-side image build
from:
- "cmd/socialweb-nodeimage/rootfs.go name"
- name: unsquashfs
kind: executable
fate: removed-legacy
owner: 0006 M3-FOLD
why: unpacked the squashfs base of the deleted host-side image build; the pinned base is a root tarball
from:
- "cmd/socialweb-nodeimage/rootfs.go name"
- "image tools dnf squashfs-tools"
- name: cp
kind: executable
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: scripts/build-guest-image.sh copies the kernel config and outputs on the build host
from:
- "cmd/socialweb-nodeimage/rootfs.go name"
- "scripts/build-guest-image.sh"
- name: mkfs.ext4
kind: executable
fate: build-host
owner: 0007 M1-GUEST-IMAGE, M2-VM-RUNTIME
why: mke2fs builds the rootfs image inside the pinned builder container of scripts/build-guest-image.sh; no runtime use, the guest seed is a pure-Go NoCloud cidata drive (user decision 2026-10-12)
from:
- "cmd/socialweb-nodeimage/rootfs.go name"
- "internal/nodevm/disk.go"
- "ts/hono-compute-provider qemu-standalone (removed 2026-10-12)"
- "scripts/build-guest-image.sh mke2fs"
- name: git
kind: executable
fate: build-host
owner: 0008 M1-MARKET-NETWORK-PARALLEL, M1-TS-CLOSURE
why: internal/marketnetwork records the vendored deno-kcp commit of a market network; cmd/socialweb-tsbundle records each staged repo's commit and refuses a dirty one for a release; development and build hosts only
from:
- "internal/marketnetwork/record.go"
- "internal/tsbundle/tsbuild/build.go"
- name: debugfs
kind: executable
fate: removed-legacy
owner: 0007 M2-VM-RUNTIME
why: deleted by design; the guest seed is a separate pure-Go cidata drive (user decision 2026-10-12), internal/guestseed, attached by nodeboot since M1-GUEST-IMAGE
from:
- "cmd/socialweb-nodeboot/main.go"
- name: e2fsck
kind: executable
fate: removed-legacy
owner: 0007 M2-VM-RUNTIME
why: deleted by design; the rootfs is copied as-is and the guest grows its own root (gone from nodeboot since M1-GUEST-IMAGE)
from:
- "cmd/socialweb-nodeboot/main.go"
- name: resize2fs
kind: executable
fate: removed-legacy
owner: 0007 M2-VM-RUNTIME
why: deleted by design; the guest grows its own root (growpart and resizefs in the guest; gone from nodeboot since M1-GUEST-IMAGE)
from:
- "cmd/socialweb-nodeboot/main.go"
- name: socialweb-nodeboot
kind: executable
fate: removed-legacy
owner: 0007 M2-VM-RUNTIME
why: cmd/socialweb-nodeboot is deleted; the VM unit runs socialweb-vmexec, pasta and firecracker directly
from:
- "runner image COPY"
- "ts/hono-compute-provider microvm-firecracker"
- name: entrypoint.sh
kind: executable
fate: removed-legacy
owner: 0007 M2-VM-RUNTIME
why: the runner container's entrypoint (chmod /dev/kvm, runuser nodeboot); no runner container on a bare host
from:
- "runner image COPY"
- name: docker
kind: executable
fate: removed-legacy
owner: 0007 M2-VM-RUNTIME, 0006 M5-RETIRE
why: no container at runtime (user decision 2026-10-07); the firecracker runner container and container-mode backends are not ported
from:
- "ts/hono-compute-provider container-backend-docker"
- name: wsl
kind: executable
fate: removed-legacy
owner: 0011 M0-REVISIT
why: the Windows path of the docker backend, removed with the 2026-10-12 vendoring; Windows bidders use HCS (plan 0011), not WSL docker
from:
- "ts/hono-compute-provider container-backend-docker"
- name: container
kind: executable
fate: removed-legacy
owner: 0012 M0-REVISIT
why: Apple's container CLI is a container-mode backend, not the headless VM backend plan 0012 builds
from:
- "ts/hono-compute-provider container-backend-container (removed 2026-10-12)"
- name: sudo
kind: executable
fate: removed-legacy
owner: 0006 M1-INSTALL
why: nothing escalates at runtime; the one root step is `socialweb-computer install`, run as root by the operator (qemu-standalone's sudo sh/mksquashfs/tar/mount chain and the docker daemon start go with their backends)
from:
- "ts/hono-compute-provider qemu-standalone (removed 2026-10-12)"
- "container-backend-docker"
- name: qemu-system-x86_64
kind: executable
fate: removed-legacy
owner: 0006 M0-XOS-GATE
why: the QEMU substrate was retired (9d85916); check-host's QEMU capability code and hono-qemu-standalone go
from:
- "check-host platform.go"
- "ts/hono-compute-provider qemu-standalone (removed 2026-10-12)"
- name: skopeo
kind: executable
fate: removed-legacy
owner: 0006 M0-XOS-GATE
why: hono-qemu-standalone only
from:
- "ts/hono-compute-provider qemu-standalone (removed 2026-10-12)"
- name: truncate
kind: executable
fate: removed-legacy
owner: 0006 M0-XOS-GATE
why: hono-qemu-standalone only
from:
- "ts/hono-compute-provider qemu-standalone (removed 2026-10-12)"
- name: find
kind: executable
fate: removed-legacy
owner: 0006 M0-XOS-GATE
why: hono-qemu-standalone only
from:
- "ts/hono-compute-provider qemu-standalone (removed 2026-10-12)"
- name: ssh-keyscan
kind: executable
fate: removed-legacy
owner: 0007 M4-HOST-KEYS
why: the host-side scan is deleted; guests report their own host keys as vm.hostKeys
from:
- "ts/hono-compute-provider oidc-issuer-hono getPublicKeyFromSshd"
- name: websocat
kind: executable
fate: removed-legacy
owner: 0008 M1-STRIP-LEGACY-TRANSPORTS
why: every non-iroh guest transport is stripped as legacy, websocat ProxyCommand paths included; removed from the TypeScript (atproto-market b78adc1 is the last commit with ensureWebsocat)
from:
- "ts/atproto-market requester-xrpc ensureWebsocat (removed)"
- name: xdg-open
kind: executable
fate: removed-legacy
owner: 0008 M4-RUN-REQUEST
why: sign-in becomes an identity CRD whose status carries the URL to visit (user decision 2026-10-12, Q2); nothing spawns a browser
from:
- "ts/atproto-market hono-bidder"
- "request-vm-ssh"
- name: open
kind: executable
fate: removed-legacy
owner: 0008 M4-RUN-REQUEST
why: the darwin browser opener; as xdg-open
from:
- "ts/atproto-market hono-bidder"
- "request-vm-ssh"
- name: cmd
kind: executable
fate: removed-legacy
owner: 0008 M4-RUN-REQUEST
why: the windows browser opener; as xdg-open
from:
- "ts/atproto-market hono-bidder"
- name: systemctl
kind: executable
fate: removed-legacy
owner: 0006 M2-HOST-UNITS
why: units are driven over D-Bus (go-systemd), never the systemctl CLI; compute-provider-local's systemctl shim is a container-mode provider that is not ported
from:
- "ts/hono-compute-provider compute-provider-local systemctl-shim"
- name: bash
kind: executable
fate: removed-legacy
owner: 0006 M2-HOST-UNITS
why: compute-provider-local's systemctl shim runs unit ExecStart lines through bash; not ported
from:
- "ts/hono-compute-provider compute-provider-local systemctl-shim"
- name: cloud-init
kind: executable
fate: removed-legacy
owner: 0007 M1-GUEST-IMAGE
why: cloud-init runs only inside guests, from the guest image; compute-provider-local ran it on the host and is not ported
from:
- "ts/hono-compute-provider compute-provider-local systemctl-shim"
- name: tail
kind: executable
fate: removed-legacy
owner: 0006 M2-HOST-UNITS
why: compute-provider-local's log follower; not ported, unit output goes to capped files
from:
- "ts/hono-compute-provider compute-provider-local systemctl-shim"
- name: postgresql-server
kind: package
fate: embedded-server
driven_by: Postgres CRD; the core for kcp's own postgres unit
owner: 0006 M2-POSTGRES, M0-PG-SOURCE
why: replaced by the relocatable postgres asset set (postgres, initdb, pg_dump)
from:
- "image controlplane"
- name: postgresql
kind: package
fate: replaced-by-go
owner: 0006 M2-POSTGRES
why: supplied psql only; pgx replaces it
from:
- "image controlplane"
- name: yq
kind: package
fate: replaced-by-go
owner: 0006 M2-APPLY
why: see the yq executable
from:
- "image k8s"
- name: iproute
kind: package
fate: replaced-by-go
owner: 0007 M2-VM-RUNTIME
why: supplied ip; netlink in socialweb-vmexec replaces it
from:
- "image k8s"
- "runner image"
- name: socat
kind: package
fate: replaced-by-go
owner: 0006 M3-SERVE-GATEWAY-KCP
why: see the socat executable
from:
- "image k8s"
- name: openssl
kind: package
fate: replaced-by-go
owner: 0006 M3-SERVE-GATEWAY-KCP
why: see the openssl executable
from:
- "image k8s"
- name: unzip
kind: package
fate: replaced-by-go
owner: 0006 M1-ASSETS
why: see the unzip executable
from:
- "image k8s"
- name: which
kind: package
fate: replaced-by-go
owner: 0006 M1-ASSETS
why: see the which executable
from:
- "image k8s"
- name: openssh-clients
kind: package
fate: replaced-by-go
owner: 0007 M4-HOST-KEYS, 0008 M4-RUN-REQUEST
why: supplied ssh-keygen (replaced in Go) and ssh (a requester host's own client, inventoried as a host prerequisite executable); gateway and bidder hosts need neither
from:
- "image k8s"
- "runner image"
- name: passt
kind: package
fate: embedded-server
driven_by: ComputeVM (the VM unit's network stage)
owner: 0007 M2-VM-RUNTIME, 0006 M1-ASSETS
why: supplied pasta, now a pinned asset
from:
- "runner image"
- name: util-linux
kind: package
fate: removed-legacy
owner: 0007 M0-VM-USERNS
why: supplied runuser (runner entrypoint) and unshare; unshare is inventoried as a conditional host prerequisite executable, nothing else is used
from:
- "image controlplane"
- "runner image"
- name: procps-ng
kind: package
fate: removed-legacy
owner: 0006 M5-RETIRE
why: no exec site; container base utility
from:
- "image controlplane"
- name: hostname
kind: package
fate: removed-legacy
owner: 0006 M5-RETIRE
why: no exec site; container base utility
from:
- "image controlplane"
- name: coreutils
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: the image build's du and cp; the runtime container's copy goes with the container (no exec site in the core)
from:
- "image tools"
- "image controlplane"
- name: findutils
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: image build only; the runtime container's copy goes with the container
from:
- "image tools"
- "image controlplane"
- name: tar
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: image build only; the runtime container's copy goes with the container
from:
- "image tools"
- "image controlplane"
- name: gzip
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: image build only; the runtime container's copy goes with the container
from:
- "image tools"
- "image controlplane"
- name: squashfs-tools
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: supplied unsquashfs for the image build
from:
- "image tools"
- name: cpio
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: see the cpio executable
from:
- "image tools"
- name: xz
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: see the xz executable
from:
- "image tools"
- name: zstd
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: see the zstd executable
from:
- "image tools"
- name: e2fsprogs
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE, M2-VM-RUNTIME
why: mkfs.ext4 for the rootfs on the build host (scripts/build-guest-image.sh runs mke2fs -d <tar> inside the pinned builder image); its runtime tools (debugfs, e2fsck, resize2fs) are deleted by design
from:
- "image tools"
- "runner image"
- name: busybox
kind: package
fate: build-host
owner: 0007 M1-GUEST-IMAGE
why: copied into the guest image by the build; the guest's busybox is part of the downloaded image
from:
- "image tools"
- name: /etc/rancher/node/password
kind: file
fate: host-file
owner: 0006 M1-INSTALL
why: the k3s invariant (versions.json k3s); install writes it once, dev bind-mounts a per-instance copy in a userns
from:
- "image controlplane RUN"
- name: /etc/subuid
kind: file
fate: host-file
owner: 0006 M1-INSTALL, 0007 M2-VM-RUNTIME
why: install bidder reserves one subuid range for the shared lingering account
from:
- "user decision 2026-10-12 per-VM subuid user namespaces"
- name: /etc/subgid
kind: file
fate: host-file
owner: 0006 M1-INSTALL, 0007 M2-VM-RUNTIME
why: as /etc/subuid, for groups
from:
- "user decision 2026-10-12 per-VM subuid user namespaces"
- name: /etc/apparmor.d/socialweb-computer-pasta
kind: file
fate: host-file
owner: 0006 M1-INSTALL
why: Ubuntu 24.04+ userns restriction; the profile grants userns to the pinned pasta asset path (user decision 2026-10-11)
from:
- "user decision 2026-10-11 AppArmor"
- name: /var/lib/systemd/linger
kind: file
fate: host-file
owner: 0006 M1-INSTALL
why: install enables linger for the one shared account, so its user manager outlives logout
from:
- "user decision 2026-10-11 user manager of a lingering account"
- name: /var/lib/socialweb
kind: file
fate: host-file
owner: 0006 M1-INSTALL, M1-DEV-INSTANCE
why: the state dir (install creates it; dev uses a per-instance dir under the user's state home)
from:
- "image k8s RUN install -d"
- name: /opt/org-root
kind: file
fate: embedded-child
owner: 0008 M1-TS-CLOSURE
why: the socialweb-computer-k8s TypeScript closure (deno.json, deno.lock, ts/, socialweb-computer-k8s/ of this repo), embedded and run by the deno child
from:
- "image k8s COPY --from=k8stree"
- name: /opt/deno-dir
kind: file
fate: embedded-child
owner: 0008 M1-TS-CLOSURE, M1-DENO
why: the deno module cache, populated from the embedded closure
from:
- "image k8s RUN deno cache"
- name: /opt/socialweb/eso/external-secrets.yaml
kind: file
fate: linked
owner: 0006 M1-ASSETS
why: the ESO bundle pinned by bundleSha256, embedded in the core next to its pin; decided by Claude, user may veto
from:
- "image controlplane COPY --from=esobundle"
- name: /opt/socialweb/deploy
kind: file
fate: linked
owner: 0006 M2-MANIFESTS
why: the deploy manifests become the core's embedded manifest sets
from:
- "image k8s COPY deploy/"
- name: /dev/kvm
kind: file
fate: host-prerequisite
owner: 0006 M2-HOST-CONTRACT, M1-INSTALL (kvm group)
why: bidders only, reached through the kvm group, never handed to deno
from:
- "runner image entrypoint chmod"
- name: /dev/net/tun
kind: file
fate: host-prerequisite
owner: 0006 M2-HOST-CONTRACT
why: bidders only, for pasta's tap
from:
- "runner image entrypoint chmod"
- name: /sys/fs/cgroup
kind: file
fate: host-prerequisite
owner: 0006 M2-HOST-CONTRACT
why: a Linux kernel with cgroup v2 and cpu, memory and pids delegated to the user manager
from:
- "user decision 2026-10-11 gateway lifecycle manager"
indirect:
- site: "socialweb-computer-kcp/internal/checkhostmain/checks.go: nodefirecracker.DefaultPasta"
resolves: [pasta]
- site: "socialweb-computer-kcp/internal/checkhostmain/checks.go: path"
resolves: [pasta, kubectl, kine, kcp]
- site: "socialweb-computer-kcp/internal/checkhostmain/checks.go: probe"
resolves: [unshare]
- site: "socialweb-computer-kcp/internal/checkhostmain/checks.go: f.firecracker"
resolves: [firecracker]
- site: "socialweb-computer-kcp/internal/checkhostmain/checks.go: f.k3s"
resolves: [k3s]
- site: "socialweb-computer-kcp/internal/checkhostmain/checks.go: onPath"
resolves: [k3s]
- site: "socialweb-computer-kcp/internal/checkhostmain/checks.go: copyPath"
resolves: [socialweb-computer-kcp-check-host]
- site: "socialweb-computer-kcp/internal/checkhostmain/platform.go: path"
resolves: [qemu-system-x86_64]
- site: "socialweb-computer-kcp/internal/checkhostmain/postgres.go: path"
resolves: [initdb, postgres, psql]
- site: "socialweb-computer-kcp/internal/checkhostmain/postgres.go: binaries[0]"
resolves: [initdb]
- site: "socialweb-computer-kcp/internal/clusterprovider/bootstraprows.go: bin"
resolves: [psql]
- site: "socialweb-computer-kcp/internal/clusterprovider/postgres.go: name"
resolves: [initdb, postgres, psql]
- site: "socialweb-computer-kcp/internal/clusterprovider/postgres.go: initdb"
resolves: [initdb]
- site: "socialweb-computer-kcp/internal/clusterprovider/postgres.go: postgres"
resolves: [postgres]
- site: "socialweb-computer-kcp/internal/clusterprovider/postgres.go: psql"
resolves: [psql]
- site: "socialweb-computer-kcp/internal/kcplibs/impl/execrunner/supervisor.go: entry.binary"
resolves: [deno]
- site: "socialweb-computer-kcp/internal/kcplibs/impl/execrunner/supervisor.go: command[0]"
resolves: [deno]
- site: "socialweb-computer-kcp/internal/kcplibs/internal/livekcp/livekcp.go: Resolve(name)"
resolves: [kcp, kubectl]
- site: "socialweb-computer-kcp/internal/kcplibs/internal/livekcp/livekcp.go: name"
resolves: [kcp, kubectl]
- site: "socialweb-computer-kcp/ts/socialweb-computer-ssh/lib/socialweb-computer-ssh-requester/bridge.ts: argv[0]"
resolves: [dumbpipe]
- site: "socialweb-computer-kcp/ts/hono-compute-provider/lib/container-backend-docker/mod.ts: bin"
resolves: [sudo]
- site: "socialweb-computer-kcp/ts/hono-compute-provider/lib/container-backend-docker/mod.ts: dockerBin"
resolves: [docker]
- site: "socialweb-computer-kcp/ts/hono-compute-provider/lib/microvm-vmruntime/mod.ts: argv[0]"
resolves: [socialweb-computer]
- site: "socialweb-computer-kcp/cmd/socialweb-vmexec/main.go: p.VMM"
resolves: [firecracker]
- site: "socialweb-computer-kcp/ts/deno-worker-sandbox/lib/sandbox-deno/bundler.ts: exe"
resolves: [deno]
- site: "socialweb-computer-kcp/ts/policy-engine/lib/policies/deno-typescript/bundle/build-bundle.ts: Deno.execPath("
resolves: [deno]
- site: "socialweb-computer-kcp/ts/policy-engine/lib/policies/gha-lite/scripts/build-actions.ts: Deno.execPath("
resolves: [deno]
- site: "socialweb-computer-kcp/ts/policy-engine/lib/policy-engine-server-gha-lite/src/workflow.ts: this.denoPath"
resolves: [deno]
- site: "socialweb-computer-kcp/ts/policy-engine/lib/policy-engine-server-gha-lite/src/workflow.ts: args[0]"
resolves: [bash, sh]
- site: "socialweb-computer-kcp/cmd/socialweb-computer/dev.go: path"
resolves: [kcp, kine]
- site: "socialweb-computer-kcp/internal/hostsvc/hostsvctest/suite_linux.go: name"
resolves: [sleep, sh]
- site: "socialweb-computer-kcp/internal/bootstrap/bootstrap.go: argv[0]"
resolves: [initdb, psql]
- site: "socialweb-computer-kcp/internal/devstack/devstack.go: s.Bin"
resolves: [socialweb-computer-kcp-check-host]
- site: "socialweb-computer-kcp/internal/denorun/denorun.go: deno"
resolves: [deno]
- site: "socialweb-computer-kcp/internal/denorun/denorun.go: argv[0]"
resolves: [deno]
- site: "socialweb-computer-kcp/internal/tsbundle/tsbuild/build.go: o.Deno"
resolves: [deno]
- site: "socialweb-computer-kcp/internal/hostcontract/gather_linux.go: e.Path"
resolves: [pasta]
- site: "socialweb-computer-kcp/internal/hostcontract/gather_linux.go: self[0]"
resolves: [socialweb-computer-kcp-check-host]
- site: "socialweb-computer-kcp/internal/hostcontract/gather_linux.go: m.helper"
resolves: [newuidmap, newgidmap]
- site: "socialweb-computer-kcp/internal/install/system_linux.go: binary"
resolves: [socialweb-computer-kcp-check-host]
- site: "socialweb-computer-kcp/internal/install/system_linux.go: exe"
resolves: [socialweb-computer-kcp-check-host]