@bongos/core 1.24.68 → 1.24.70

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 (36) hide show
  1. package/.bongos-core.json +58 -38
  2. package/clients/bongos-client/index.d.ts +1 -1
  3. package/docs/adr/0029-status-page-outage-resilience.md +2 -2
  4. package/docs/api/openapi.json +4 -2
  5. package/docs/copy-inventory.md +36 -32
  6. package/docs/copy-registry.json +86 -50
  7. package/docs/module-api-changelog.md +2 -0
  8. package/docs/page-readings.json +7 -7
  9. package/docs/recipes/core-release-pipeline.md +3 -3
  10. package/modules/hall-ui/public/settings.js +49 -5
  11. package/modules/lifecycle/merge-reach.js +15 -8
  12. package/package-lock.json +2 -2
  13. package/package.json +1 -1
  14. package/release-notes.json +34 -0
  15. package/scripts/bongos/claim.js +16 -5
  16. package/scripts/bongos/deploy-divergence.js +5 -3
  17. package/scripts/bongos/docs-entropy.js +4 -1
  18. package/scripts/bongos/fitness-lib.js +19 -1
  19. package/scripts/bongos/paste-token.js +75 -4
  20. package/scripts/bongos/ship-check.js +11 -3
  21. package/src/bongos/device-flow-blocker.js +56 -0
  22. package/src/bongos/routes/auth.js +5 -0
  23. package/src/instance-config.js +7 -10
  24. package/src/module-api.js +1 -1
  25. package/tests/agent_standing_rules.mjs +14 -0
  26. package/tests/bongos_cli.mjs +2 -1
  27. package/tests/claim_finish_hint.mjs +50 -0
  28. package/tests/cli_token_reissue.mjs +4 -2
  29. package/tests/deploy_divergence_line.mjs +5 -1
  30. package/tests/hall_onboarding_bongos_setup.mjs +3 -1
  31. package/tests/hall_settings_world.mjs +2 -2
  32. package/tests/instance_config.mjs +32 -1
  33. package/tests/paste_token_windows.mjs +165 -0
  34. package/tests/shell_hooks.mjs +7 -0
  35. package/tests/status_mirror_sync.mjs +22 -1
  36. package/tests/vendored_work_root.mjs +72 -0
package/.bongos-core.json CHANGED
@@ -2,22 +2,22 @@
2
2
  "artifact": "bongos-core",
3
3
  "manifest_schema": 1,
4
4
  "generator": "scripts/bongos/package-core.js",
5
- "core_version": "1.24.68",
6
- "core_contract": "1.24.68",
7
- "source_commit": "11d18a24f88e4a0dc0348653d46f1436332533b7",
5
+ "core_version": "1.24.70",
6
+ "core_contract": "1.24.70",
7
+ "source_commit": "a350b334d96df595a8aa73fb65c596295bd6cfb7",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-11-09T20:26:36.856Z",
9
+ "built_at": "2026-11-09T21:11:38.880Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 638,
13
13
  "agent_docs_stubbed": 32,
14
- "functional_verbatim": 3904,
14
+ "functional_verbatim": 3908,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 4575,
20
- "tree_sha256": "55f8f3d3ffc2f4ed3ccf4c3dfbc91607b1a72f70d465e1930d322a45ed7438dd",
19
+ "file_count": 4579,
20
+ "tree_sha256": "3dabfd3600f3905906abbcb8d0156b813445a0a8dbfd20939c189c6e5d3b238a",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -352,7 +352,7 @@
352
352
  {
353
353
  "path": "clients/bongos-client/index.d.ts",
354
354
  "mode": "0000644",
355
- "sha256": "77166efc6944d67f1ffe5b2bc9202ab72ae8331acdf341dffebe4cb034abe56d"
355
+ "sha256": "6d1fb838c88cc18ecc3d707920d38bff0a3b0390bd45499ed438f91658efc92c"
356
356
  },
357
357
  {
358
358
  "path": "clients/bongos-client/index.mjs",
@@ -557,7 +557,7 @@
557
557
  {
558
558
  "path": "docs/adr/0029-status-page-outage-resilience.md",
559
559
  "mode": "0000644",
560
- "sha256": "ec0298ea8652e72c00f90546a57a08a1aca9d0208593bb56bde0a7254aa1e851"
560
+ "sha256": "199fc3e775f32f46a658294bbbe83783a7455cff2b554f8680f4235b1ae0ece1"
561
561
  },
562
562
  {
563
563
  "path": "docs/adr/0030-builders-hall-live-updates.md",
@@ -2467,7 +2467,7 @@
2467
2467
  {
2468
2468
  "path": "docs/api/openapi.json",
2469
2469
  "mode": "0000644",
2470
- "sha256": "eef94b4f6e03a937b12238548480a9a9b86d4703e43c9488c58dda8deb3b0fe7"
2470
+ "sha256": "c9a5331ff4b4473ff3176e3221fbe36e815376be79d6b7eb24851780ddc6843c"
2471
2471
  },
2472
2472
  {
2473
2473
  "path": "docs/architecture.md",
@@ -2492,12 +2492,12 @@
2492
2492
  {
2493
2493
  "path": "docs/copy-inventory.md",
2494
2494
  "mode": "0000644",
2495
- "sha256": "bd5ef906397529dae368125b3ffc2a315b60816912d19e255d350b4751f8486b"
2495
+ "sha256": "73c9d6e7637bed0c5451c3127a67f65210665d9fc430a8e34290faecb39a15c8"
2496
2496
  },
2497
2497
  {
2498
2498
  "path": "docs/copy-registry.json",
2499
2499
  "mode": "0000644",
2500
- "sha256": "8163fd272d96d4401673aa30b150c42f5caca342ab4a3f79ed5662f88d0caf73"
2500
+ "sha256": "d6ead2b50a53579c4537279c5e950509d19e819fb9d92dcd641a012c2bba2af8"
2501
2501
  },
2502
2502
  {
2503
2503
  "path": "docs/design/apex-pass-2-direction.md",
@@ -3007,7 +3007,7 @@
3007
3007
  {
3008
3008
  "path": "docs/module-api-changelog.md",
3009
3009
  "mode": "0000644",
3010
- "sha256": "15027e86a94259e4ea08d9d2b47234bd92e4ee8b205677ee27ef20b6579e30a2"
3010
+ "sha256": "851492664b3fffc2ca8ac33748272b99487c48eb021924b50d9e6530f20c69ee"
3011
3011
  },
3012
3012
  {
3013
3013
  "path": "docs/modules-contract.md",
@@ -3097,7 +3097,7 @@
3097
3097
  {
3098
3098
  "path": "docs/page-readings.json",
3099
3099
  "mode": "0000644",
3100
- "sha256": "f6ed00806ce3b4e851fdd0ef1099760f94f4aeb5e44f4f539f99fb1d404997d1"
3100
+ "sha256": "b6adc8c75a1f4650bebe3be30eb8da5966870c435e8baf192136ffad738c755d"
3101
3101
  },
3102
3102
  {
3103
3103
  "path": "docs/project-context.template.md",
@@ -3127,7 +3127,7 @@
3127
3127
  {
3128
3128
  "path": "docs/recipes/core-release-pipeline.md",
3129
3129
  "mode": "0000644",
3130
- "sha256": "c5840a0cae12bde4eef54a5b2785046fe3bfbb750bb7be7bc3808e4eb3491d0d"
3130
+ "sha256": "09cb01eeb9aa79bca4380b11498c05dd30e4985358e8cb8fdec7497b2a9581b6"
3131
3131
  },
3132
3132
  {
3133
3133
  "path": "docs/recipes/failed-ship-recovery-proof.md",
@@ -7027,7 +7027,7 @@
7027
7027
  {
7028
7028
  "path": "modules/hall-ui/public/settings.js",
7029
7029
  "mode": "0000644",
7030
- "sha256": "72431e5ee67272477e653ac0401b2898c3ec88a0f4ad58187697e2b79df8c56c"
7030
+ "sha256": "c5fa5af5142ceab44d0589323a70cbc581a5367dd2846894e9f6c6d8f5b9e55c"
7031
7031
  },
7032
7032
  {
7033
7033
  "path": "modules/hall-ui/public/settings.states.json",
@@ -8157,7 +8157,7 @@
8157
8157
  {
8158
8158
  "path": "modules/lifecycle/merge-reach.js",
8159
8159
  "mode": "0000644",
8160
- "sha256": "77ee8eb1615feb977701f8f50f14a080b9ebb0cda07dbc5ce0a5061ab2063fb8"
8160
+ "sha256": "422b941660edc139d0353cccb110c8d130827c02200511da372d23456f133e51"
8161
8161
  },
8162
8162
  {
8163
8163
  "path": "modules/lifecycle/migrations/lifecycle_001_goal_first_leads.sql",
@@ -11902,12 +11902,12 @@
11902
11902
  {
11903
11903
  "path": "package-lock.json",
11904
11904
  "mode": "0000644",
11905
- "sha256": "ae81a9706d5fb007fa6ab9d3fa6783616f3adb642fd256c5478bf30a211026f6"
11905
+ "sha256": "7c4c05af121a62f8295aba963f5311e96710d500228c7ee10f37104ee682801e"
11906
11906
  },
11907
11907
  {
11908
11908
  "path": "package.json",
11909
11909
  "mode": "0000644",
11910
- "sha256": "cd129832a4eea52b6613553aa6da6fb2ce7f853bff8d1032d5adfd233e53710c"
11910
+ "sha256": "bc8dfa759d28726c17917ec87eaa4b53aece326d188dd188d9ed610a0d57ed1c"
11911
11911
  },
11912
11912
  {
11913
11913
  "path": "public-docs/index.html",
@@ -11927,7 +11927,7 @@
11927
11927
  {
11928
11928
  "path": "release-notes.json",
11929
11929
  "mode": "0000644",
11930
- "sha256": "24f4dda6011cf1e1c255226457e1647e80821260e443a11b76e858193073b8eb"
11930
+ "sha256": "443fde562e11006c7aa2d82437d1101fa561c9b2451fa659cc81a2939a9aee2d"
11931
11931
  },
11932
11932
  {
11933
11933
  "path": "scripts/bongos/CLAUDE.md",
@@ -12182,7 +12182,7 @@
12182
12182
  {
12183
12183
  "path": "scripts/bongos/claim.js",
12184
12184
  "mode": "0000644",
12185
- "sha256": "bb8b7a0104622d725c7057f04aea6b82f0586f6323a761302afdb3942fb65ae2"
12185
+ "sha256": "377cd8c4aa3bff219bf2d071cdfe0f918a3ceb30b775d8c881f329f36173f1e0"
12186
12186
  },
12187
12187
  {
12188
12188
  "path": "scripts/bongos/claude-materialize.js",
@@ -12292,7 +12292,7 @@
12292
12292
  {
12293
12293
  "path": "scripts/bongos/deploy-divergence.js",
12294
12294
  "mode": "0000644",
12295
- "sha256": "bf18a79242d650a5974b40607dbedcf2d40c9c65d86ddc61cdf19e242cc4f2cb"
12295
+ "sha256": "82b9f7657d6fcd5ed8bd79e4e7104e3b960b649eaf122d6ab871f48b86494ad9"
12296
12296
  },
12297
12297
  {
12298
12298
  "path": "scripts/bongos/deploy-main-audit-gate.sh",
@@ -12372,7 +12372,7 @@
12372
12372
  {
12373
12373
  "path": "scripts/bongos/docs-entropy.js",
12374
12374
  "mode": "0000644",
12375
- "sha256": "a5892548ea37b1722554869334e1baa1dcc800740f582e3cb0492e3164ffe36b"
12375
+ "sha256": "cd5fd3f0987de9b6e5af0efdf9dcdd2f8b4589e6754732e869eafd85086bea78"
12376
12376
  },
12377
12377
  {
12378
12378
  "path": "scripts/bongos/doctor.js",
@@ -12452,7 +12452,7 @@
12452
12452
  {
12453
12453
  "path": "scripts/bongos/fitness-lib.js",
12454
12454
  "mode": "0000644",
12455
- "sha256": "826ae1aef8e287ec92b0f4ba0e5da8ddf8a50b26eb4c9711fb3b667bde4461d0"
12455
+ "sha256": "d8d931588338aae3f29b60b6746b946a7a67e42d7e9ba35f6eaaa36ae62c9697"
12456
12456
  },
12457
12457
  {
12458
12458
  "path": "scripts/bongos/fitness-migration-contraction.js",
@@ -12902,7 +12902,7 @@
12902
12902
  {
12903
12903
  "path": "scripts/bongos/paste-token.js",
12904
12904
  "mode": "0000644",
12905
- "sha256": "77f3d0fa9173c133695f4bb352d529a9c6a7a54dc05c0170a9a88d368636f80d"
12905
+ "sha256": "723d12775c925192d3a088470abbb59563a529d8d36cec56c4851f4159c07dea"
12906
12906
  },
12907
12907
  {
12908
12908
  "path": "scripts/bongos/plain-cards.js",
@@ -13287,7 +13287,7 @@
13287
13287
  {
13288
13288
  "path": "scripts/bongos/ship-check.js",
13289
13289
  "mode": "0000644",
13290
- "sha256": "e81fc260cceef6c8ccaf90aaa09aa189183d89d8696bcc20aca2f3ea9610b2d7"
13290
+ "sha256": "26d22c6dbd372974911e0ab096844ab37491e882da2fb972ec5e40e2df0275d1"
13291
13291
  },
13292
13292
  {
13293
13293
  "path": "scripts/bongos/ship-deploy-target.js",
@@ -15444,6 +15444,11 @@
15444
15444
  "mode": "0000644",
15445
15445
  "sha256": "cc2d0e61bde18cbaabe4fe850f70b3052ae8815686133c05691397faa90d91e3"
15446
15446
  },
15447
+ {
15448
+ "path": "src/bongos/device-flow-blocker.js",
15449
+ "mode": "0000644",
15450
+ "sha256": "f34153ac5fd891904dd6ef06e2c4b3c1f860f487a2b11c9a41c1109369ac570f"
15451
+ },
15447
15452
  {
15448
15453
  "path": "src/bongos/github-repos.js",
15449
15454
  "mode": "0000644",
@@ -15677,7 +15682,7 @@
15677
15682
  {
15678
15683
  "path": "src/bongos/routes/auth.js",
15679
15684
  "mode": "0000644",
15680
- "sha256": "6348ee00e6e60d899f3e98bc55a75e6b3f88562fcda7a1655a4d4df1c2273393"
15685
+ "sha256": "5dac69f518fb0933f111d3df4dfc400e1573ffd2849abe7599ed16bd0ab63d58"
15681
15686
  },
15682
15687
  {
15683
15688
  "path": "src/bongos/routes/backup.js",
@@ -15867,7 +15872,7 @@
15867
15872
  {
15868
15873
  "path": "src/instance-config.js",
15869
15874
  "mode": "0000644",
15870
- "sha256": "17daf4a38c2e208130fbfe5afe56f548d9bc3bfa9fd57a2ab2dbe459748da811"
15875
+ "sha256": "b123541932f206894a652aebf64a13ed0794a4b44e68936a11d65bf49c7a2fc9"
15871
15876
  },
15872
15877
  {
15873
15878
  "path": "src/link-preview.js",
@@ -15877,7 +15882,7 @@
15877
15882
  {
15878
15883
  "path": "src/module-api.js",
15879
15884
  "mode": "0000644",
15880
- "sha256": "c1a27021e0c321c2125b4cac14ae9441f74250c88c3b9fb8fe2d7b562d06924c"
15885
+ "sha256": "d00b511fa641d743ac90571e844a8d150e15010b0e69302e2b237e9c3eeb1c1e"
15881
15886
  },
15882
15887
  {
15883
15888
  "path": "src/module-loader/catalog.js",
@@ -16087,7 +16092,7 @@
16087
16092
  {
16088
16093
  "path": "tests/agent_standing_rules.mjs",
16089
16094
  "mode": "0000644",
16090
- "sha256": "f296357646d9eb778a5334b75742ef1172ff87e10b26a5e7eaffe0e8fe983120"
16095
+ "sha256": "08edffc3a673b01249586330d7cb0fbb4f31d7dfaaadc80864191899fedb5545"
16091
16096
  },
16092
16097
  {
16093
16098
  "path": "tests/agents_authoring.mjs",
@@ -16647,7 +16652,7 @@
16647
16652
  {
16648
16653
  "path": "tests/bongos_cli.mjs",
16649
16654
  "mode": "0000644",
16650
- "sha256": "b9bfebce2f0e2a806ce02271ca0a6f45ce2b8cd3dd487ca4cccc91f7fb10a8c5"
16655
+ "sha256": "9592802bf6c47ac1e11acdc8ca99a30c6d101c5fa45669d359cf3f7c7fdb098a"
16651
16656
  },
16652
16657
  {
16653
16658
  "path": "tests/bongos_dispatch.mjs",
@@ -16814,6 +16819,11 @@
16814
16819
  "mode": "0000644",
16815
16820
  "sha256": "8b937f463b8f03dba8c67047d8aca9be84a00839f4821e00ee5d31a96a6bead9"
16816
16821
  },
16822
+ {
16823
+ "path": "tests/claim_finish_hint.mjs",
16824
+ "mode": "0000644",
16825
+ "sha256": "a8c2e33617c23d9f6584f2901a7ad9f77f0ed5588b2dd219ba79b3c4c805b4b0"
16826
+ },
16817
16827
  {
16818
16828
  "path": "tests/claim_from_task_and_home.mjs",
16819
16829
  "mode": "0000644",
@@ -16912,7 +16922,7 @@
16912
16922
  {
16913
16923
  "path": "tests/cli_token_reissue.mjs",
16914
16924
  "mode": "0000644",
16915
- "sha256": "498bd487692f41f2fd2670d83341d1711be4cea7a137aff3c6792a833eca91fc"
16925
+ "sha256": "ac72b4d3a76f5f81709d97f4a2102b6d1beb45928571c7b7241a3cfa70da80cd"
16916
16926
  },
16917
16927
  {
16918
16928
  "path": "tests/client_baseurl_guard.mjs",
@@ -17397,7 +17407,7 @@
17397
17407
  {
17398
17408
  "path": "tests/deploy_divergence_line.mjs",
17399
17409
  "mode": "0000644",
17400
- "sha256": "fcf4e6ca24b37e8872ffc1830aafa2dbeb8e28131bec0bebba622114001d3182"
17410
+ "sha256": "b4067239ab71d3aaf3fa7e05fd4a1aaee3938a975970265f3f1679eeab838062"
17401
17411
  },
17402
17412
  {
17403
17413
  "path": "tests/deploy_handoff.mjs",
@@ -18877,7 +18887,7 @@
18877
18887
  {
18878
18888
  "path": "tests/hall_onboarding_bongos_setup.mjs",
18879
18889
  "mode": "0000644",
18880
- "sha256": "b9252bea41a77f2d101c5133c00947345d9f81ae63d1f40d7a4e6574f116c914"
18890
+ "sha256": "9546e6b737e9689cdf76209debf14930ad5b4058b7b39cb388d471a0d292033c"
18881
18891
  },
18882
18892
  {
18883
18893
  "path": "tests/hall_oversight_tabs.mjs",
@@ -18967,7 +18977,7 @@
18967
18977
  {
18968
18978
  "path": "tests/hall_settings_world.mjs",
18969
18979
  "mode": "0000644",
18970
- "sha256": "cf50e4a03eb7a0ad0e2452550ead68e3afc781b93b222177d9c1545514876ee5"
18980
+ "sha256": "f9285528215ebf8a5be2d030de76094c51965c15ad4233819adc95cd2101bac3"
18971
18981
  },
18972
18982
  {
18973
18983
  "path": "tests/hall_signout.mjs",
@@ -19517,7 +19527,7 @@
19517
19527
  {
19518
19528
  "path": "tests/instance_config.mjs",
19519
19529
  "mode": "0000644",
19520
- "sha256": "ba3404f1fd37d33dac3e64ac17a0c71fd8d73a56f7fcef362f5ffd1423136e55"
19530
+ "sha256": "355349970d4a6f903a55bebacdde11eaca4283b22c8ee8266b346a9ecdd8a8ca"
19521
19531
  },
19522
19532
  {
19523
19533
  "path": "tests/instance_db_migrated_on_code_move.mjs",
@@ -20564,6 +20574,11 @@
20564
20574
  "mode": "0000644",
20565
20575
  "sha256": "d4c5b74926721f9449190f262e4aade893095197796f79ac8ab9e71c43a3b566"
20566
20576
  },
20577
+ {
20578
+ "path": "tests/paste_token_windows.mjs",
20579
+ "mode": "0000644",
20580
+ "sha256": "7a29edcbbad11dd2038bc1937905c2bae3c02970494149e88106939eb0741fff"
20581
+ },
20567
20582
  {
20568
20583
  "path": "tests/patch_gate_ordering.mjs",
20569
20584
  "mode": "0000644",
@@ -21862,7 +21877,7 @@
21862
21877
  {
21863
21878
  "path": "tests/shell_hooks.mjs",
21864
21879
  "mode": "0000644",
21865
- "sha256": "3105a2a2c7a911e1993efd83af537fb2294b332cd5262ab83b41cc720e98a3da"
21880
+ "sha256": "efafe5abb508560bae1287e6e811f9efb907280b1c032e5bb07e6027f6b17add"
21866
21881
  },
21867
21882
  {
21868
21883
  "path": "tests/shell_stat_portability.mjs",
@@ -22267,7 +22282,7 @@
22267
22282
  {
22268
22283
  "path": "tests/status_mirror_sync.mjs",
22269
22284
  "mode": "0000644",
22270
- "sha256": "78d32bb02f7e40885d3c1a0a23209f92531d3eaabe212728d1993af0b7cccaea"
22285
+ "sha256": "9112bd164ed3eaf73826677a646e37819d8400c2f857cb2ff668ae9a8173d5d7"
22271
22286
  },
22272
22287
  {
22273
22288
  "path": "tests/status_page_chrome.mjs",
@@ -22679,6 +22694,11 @@
22679
22694
  "mode": "0000644",
22680
22695
  "sha256": "6b816f0428dc3212f68b565fa14c3e8ee71900ea5cd5b0df64fc5217f3d61384"
22681
22696
  },
22697
+ {
22698
+ "path": "tests/vendored_work_root.mjs",
22699
+ "mode": "0000644",
22700
+ "sha256": "f69c0eed68cde524593aedfd1e80955eda1a1fe66d4185d1946268248f8168b5"
22701
+ },
22682
22702
  {
22683
22703
  "path": "tests/verify_task_guard.mjs",
22684
22704
  "mode": "0000644",
@@ -315,7 +315,7 @@ export interface PostAiStudioUploadsRequest { content_type: string; data: string
315
315
  export interface PostAiStudioUploadsResponse { file: unknown }
316
316
  export interface PostAuthBackchannelLogoutRequest { logout_token: string }
317
317
  export interface PostAuthBackchannelLogoutResponse { ok: boolean }
318
- export interface PostAuthCliTokenIssueResponse { ok: boolean; token: unknown; expires_at: unknown; builder_login: unknown; api_base: unknown; paste_command: unknown }
318
+ export interface PostAuthCliTokenIssueResponse { ok: boolean; token: unknown; expires_at: unknown; builder_login: unknown; api_base: unknown; paste_command: unknown; paste_command_windows: unknown }
319
319
  export interface PostAuthDeviceApproveRequest { user_code: string; decision: "approve" | "deny" }
320
320
  export interface PostAuthDeviceExchangeRequest { assertion: string }
321
321
  export interface PostAuthDeviceExchangeResponse { token: unknown; builder: unknown }
@@ -1,6 +1,6 @@
1
1
  # 0029 — Status-page outage resilience: measure from outside, host off-box, prevent at the source
2
2
 
3
- - **Status:** Accepted. **Slice 1 (external prober) built this session** under task **[#565](https://example.com/builders#/task/565)**: `.github/workflows/status-probe.yml` + `scripts/status-probe.mjs` + this ADR. **Follow-up B (page off-box) has since SHIPPED** — `status.example.com` is served off the droplet from GitHub Pages (repo `example-owner/example-status`), synced by `.github/workflows/sync-status-mirror.yml`. Incident-backfill (follow-up C) is **not yet built**. **Since removed (task 1004858, 2026-10-25):** the in-process `uptime-poller.js` (nothing started it), the `status-probe.mjs` prober (its workflow was already gone) and the `/public/uptime` feed — the file references below are history.
3
+ - **Status:** Accepted. **Slice 1 (external prober) built this session** under task **[#565](https://example.com/builders#/task/565)**: `.github/workflows/status-probe.yml` + `scripts/status-probe.mjs` + this ADR. **Follow-up B (page off-box) has since SHIPPED** — `status.example.com` is served off the droplet from GitHub Pages (repo `example-owner/example-status`). **No workflow syncs it** (task 1005131): `sync-status-mirror.yml` is not in this repo, so the page updates only when someone runs `node scripts/status-mirror-sync.js --repo-dir <mirror-checkout> --push` by hand. Incident-backfill (follow-up C) is **not yet built**. **Since removed (task 1004858, 2026-10-25):** the in-process `uptime-poller.js` (nothing started it), the `status-probe.mjs` prober (its workflow was already gone) and the `/public/uptime` feed — the file references below are history.
4
4
  - **Date:** 2026-06-03
5
5
  - **Deciders:** Lars Kristensen (Archon), Claude
6
6
  - **Track:** `internal` (the status dashboard / The Watch)
@@ -29,7 +29,7 @@ An **external prober runs on GitHub-hosted runners** — off our DigitalOcean in
29
29
  - `.github/workflows/status-probe.yml` — `*/5` cron + `workflow_dispatch`; publishes the result to an **orphan `status-data` branch** (off-box, web-readable, survives a droplet outage); **fails the job when the site is confirmed down**, which emails the repo owner — the alert.
30
30
 
31
31
  ### 2. Host the page off-box (follow-up B — SHIPPED)
32
- `status.example.com` is now served off the droplet from **GitHub Pages** (repo `example-owner/example-status`), synced by [`.github/workflows/sync-status-mirror.yml`](../../.github/workflows/sync-status-mirror.yml); the page no longer shares fate with the product. Original plan, for the record:
32
+ `status.example.com` is now served off the droplet from **GitHub Pages** (repo `example-owner/example-status`), published by hand with `scripts/status-mirror-sync.js` (no workflow runs it — task 1005131); the page no longer shares fate with the product. Original plan, for the record:
33
33
  Move `public-status/` to free static hosting **separate from the droplet** (Cloudflare Pages or GitHub Pages). The page shell + the **uptime/incident section** are served off-box and read the `status-data` source, so they stay truthful during an outage. The rich GDS panels (treasury, grades, progress) keep loading client-side from `example.com/api/gds/public/*` and **degrade gracefully** to "origin unreachable" when the droplet is down (requires adding CORS to those public routes). Then repoint `status.example.com` DNS at the off-box host.
34
34
 
35
35
  ### 3. Prevent at the source + alert (blocker [#6](https://example.com/builders#/blocker/6))
@@ -36061,7 +36061,8 @@
36061
36061
  "expires_at": {},
36062
36062
  "builder_login": {},
36063
36063
  "api_base": {},
36064
- "paste_command": {}
36064
+ "paste_command": {},
36065
+ "paste_command_windows": {}
36065
36066
  },
36066
36067
  "required": [
36067
36068
  "ok",
@@ -36069,7 +36070,8 @@
36069
36070
  "expires_at",
36070
36071
  "builder_login",
36071
36072
  "api_base",
36072
- "paste_command"
36073
+ "paste_command",
36074
+ "paste_command_windows"
36073
36075
  ]
36074
36076
  },
36075
36077
  "PostAuthDeviceApproveRequest": {