@bongos/core 1.19.725 → 1.19.727

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 (229) hide show
  1. package/.bongos-core.json +179 -494
  2. package/.devcontainer/Dockerfile +1 -1
  3. package/.devcontainer/devcontainer.json +2 -2
  4. package/.devcontainer/healthcheck.sh +1 -1
  5. package/.devcontainer/init-firewall.sh +1 -1
  6. package/.devcontainer/post-create.sh +2 -2
  7. package/.env.local.example +1 -1
  8. package/Dockerfile +1 -1
  9. package/docs/copy-inventory.md +1 -1
  10. package/docs/copy-registry.json +9 -9
  11. package/docs/module-api-changelog.md +4 -0
  12. package/docs/recipes/devbox-app-release.md +4 -4
  13. package/modules/dev-box/app/scripts/dmgbuild-settings.py +5 -5
  14. package/modules/dev-box/app/scripts/gen-brand.js +1 -1
  15. package/modules/dev-box/app/src/brand.js +1 -1
  16. package/modules/dev-box/app/test/unit.mjs +16 -16
  17. package/modules/dev-box/box-access.js +1 -1
  18. package/modules/dev-box/routes/box.js +1 -1
  19. package/modules/discord/discord-approvals.js +1 -1
  20. package/modules/grading/grader-model.js +1 -1
  21. package/modules/grading/grader-prompt.js +1 -1
  22. package/modules/grading/grader-workers/quality.js +1 -1
  23. package/modules/hall-ui/module.json +1 -1
  24. package/modules/hall-ui/public/brand-apply.js +1 -1
  25. package/modules/hall-ui/public/shell.js +1 -1
  26. package/modules/hall-ui/public/work.js +1 -1
  27. package/modules/lifecycle/conflict-resolve.js +1 -1
  28. package/modules/lifecycle/db-analytics.js +1 -1
  29. package/modules/lifecycle/routes/analytics.js +1 -1
  30. package/modules/onboarding/approval-broadcast.js +1 -1
  31. package/modules/onboarding/onboarding.js +1 -1
  32. package/modules/provisioning/tests/liveness.mjs +1 -1
  33. package/modules/public-landing/public/index.html +1 -1
  34. package/modules/public-landing/public/projects-floor.states.json +2 -2
  35. package/modules/public-landing/public/projects.probes.json +4 -4
  36. package/modules/public-landing/public/projects.states.json +2 -2
  37. package/modules/status-ui/module.json +1 -1
  38. package/modules/status-ui/public/status.js +4 -4
  39. package/modules/status-ui/public/style.css +1 -1
  40. package/modules/ui-design/kit/fixtures/cost-summary.json +1 -1
  41. package/modules/ui-design/kit/fixtures/featured-hub.json +1 -1
  42. package/modules/ui-design/kit/fixtures/featured.json +1 -1
  43. package/modules/ui-design/kit/fixtures/leaderboard.json +1 -1
  44. package/modules/ui-design/kit/fixtures/my-projects.json +1 -1
  45. package/modules/ui-design/kit/fixtures/progress.json +1 -1
  46. package/modules/ui-design/kit/fixtures/recent-shipped.json +1 -1
  47. package/package-lock.json +2 -2
  48. package/package.json +1 -1
  49. package/scripts/cron/style_guide_audit.sh +1 -1
  50. package/scripts/discord/lib.js +1 -1
  51. package/scripts/discord/post.js +1 -1
  52. package/scripts/gds/audit-authorship.sh +1 -1
  53. package/scripts/gds/audit-replay.sh +29 -2
  54. package/scripts/gds/audit-ships.js +1 -1
  55. package/scripts/gds/backfill-sessions.js +2 -2
  56. package/scripts/gds/cf-tunnel.js +4 -4
  57. package/scripts/gds/claude-materialize.js +2 -2
  58. package/scripts/gds/cli-lib.js +6 -6
  59. package/scripts/gds/cutover-codemod.js +1 -1
  60. package/scripts/gds/dev-lib.js +2 -2
  61. package/scripts/gds/diagnose-achievements.js +2 -2
  62. package/scripts/gds/fitness-checks-identity.js +6 -4
  63. package/scripts/gds/gate-review.js +14 -6
  64. package/scripts/gds/gen-diagrams.js +1 -1
  65. package/scripts/gds/leak-scan-allowlist.js +293 -0
  66. package/scripts/gds/learning-capture.js +1 -1
  67. package/scripts/gds/linkify-refs.js +2 -2
  68. package/scripts/gds/local-preview-lib.js +1 -1
  69. package/scripts/gds/mirror-lineage-check.js +1 -1
  70. package/scripts/gds/mirror-redact.js +17 -2
  71. package/scripts/gds/newcomer-floor.templates.json +1 -1
  72. package/scripts/gds/package-core.js +18 -1
  73. package/scripts/gds/paste-token.js +1 -1
  74. package/scripts/gds/provision-units.js +2 -2
  75. package/scripts/gds/publish-manifest.js +15 -0
  76. package/scripts/gds/repo-metrics.js +1 -1
  77. package/scripts/gds/sandbox-stage.js +1 -1
  78. package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +1 -1
  79. package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +1 -1
  80. package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +1 -1
  81. package/scripts/gds/seed-bongos-tasks.js +2 -2
  82. package/scripts/gds/seed-gds-v4-tasks.js +1 -1
  83. package/scripts/gds/seed-medusa-tasks.js +10 -10
  84. package/scripts/gds/seed-module-upstreaming.js +1 -1
  85. package/scripts/gds/seed-productization-tasks.js +6 -6
  86. package/scripts/gds/seed-provisioning-tasks.js +2 -2
  87. package/scripts/gds/seed-staging.sh +19 -6
  88. package/scripts/gds/ship-deploy-target.js +1 -1
  89. package/scripts/gds/ship-flow.js +1 -1
  90. package/scripts/gds/smoke-gds.js +1 -1
  91. package/scripts/status-probe.mjs +2 -2
  92. package/src/bongos/auth-discord.js +2 -2
  93. package/src/bongos/live-channel.js +1 -1
  94. package/src/bongos/permission-path-check.js +80 -3
  95. package/src/bongos/pool.js +1 -1
  96. package/src/bongos/routes/auth.js +11 -11
  97. package/src/bongos/routes/security.js +1 -1
  98. package/src/bongos/routes.js +1 -1
  99. package/src/branding.js +1 -1
  100. package/src/devbox-downloads.js +1 -1
  101. package/src/instance-config.js +2 -2
  102. package/src/module-api.js +1 -1
  103. package/src/module-loader/provenance.js +2 -2
  104. package/tests/art_stage.mjs +2 -2
  105. package/tests/auth_anthropic_identity.mjs +1 -1
  106. package/tests/auth_duplicate_cookie.mjs +1 -1
  107. package/tests/auth_error_brand.mjs +1 -1
  108. package/tests/auth_inactive_builder.mjs +1 -1
  109. package/tests/backup_cli.mjs +4 -4
  110. package/tests/bongos_box_connect.mjs +2 -2
  111. package/tests/bongos_downloads.mjs +2 -2
  112. package/tests/bongos_login.mjs +5 -5
  113. package/tests/box_connect_e2e.mjs +2 -2
  114. package/tests/box_dns_repoint.mjs +10 -10
  115. package/tests/box_host_keys.mjs +1 -1
  116. package/tests/box_onboard.mjs +9 -9
  117. package/tests/box_scope_session.mjs +1 -1
  118. package/tests/box_terminal_ssrf.mjs +7 -7
  119. package/tests/boxes.mjs +9 -9
  120. package/tests/branding.mjs +2 -2
  121. package/tests/bump_version.mjs +2 -2
  122. package/tests/cf_tunnel.mjs +40 -40
  123. package/tests/cli_token_reissue.mjs +7 -7
  124. package/tests/cloud_bongos_pack.mjs +1 -1
  125. package/tests/currency_label.mjs +8 -8
  126. package/tests/dev_lib.mjs +4 -4
  127. package/tests/devbox_dmg_backdrop.mjs +1 -1
  128. package/tests/devbox_downloads.mjs +2 -2
  129. package/tests/devbox_icons.mjs +1 -1
  130. package/tests/discord_approvals.mjs +1 -1
  131. package/tests/discord_oauth.mjs +2 -2
  132. package/tests/executed_closure.mjs +6 -1
  133. package/tests/first_admin_bootstrap.mjs +1 -1
  134. package/tests/gate_approvals.mjs +5 -5
  135. package/tests/government_protected_surfaces.mjs +137 -0
  136. package/tests/grade_aggregates_unavailable.mjs +1 -1
  137. package/tests/hook_user_agents.mjs +2 -2
  138. package/tests/init.mjs +6 -6
  139. package/tests/instance_config.mjs +1 -1
  140. package/tests/instance_manifest.mjs +5 -5
  141. package/tests/instance_mismatch_guard.mjs +13 -13
  142. package/tests/leak_scan_allowlist.mjs +94 -0
  143. package/tests/migrate_root_resolution.mjs +4 -4
  144. package/tests/mirror_redact.mjs +28 -4
  145. package/tests/module_catalog.mjs +5 -5
  146. package/tests/module_submissions.mjs +3 -3
  147. package/tests/package_core.mjs +1 -1
  148. package/tests/parallel-load.mjs +6 -6
  149. package/tests/projects_hub.mjs +2 -2
  150. package/tests/provision.mjs +50 -50
  151. package/tests/provisioning_github_app_routes.mjs +1 -1
  152. package/tests/provisioning_onboard_mode.mjs +2 -2
  153. package/tests/publish_reconciler.mjs +4 -4
  154. package/tests/sandbox_stage.mjs +1 -1
  155. package/tests/scrubber_corpus.mjs +3 -3
  156. package/tests/search_isolation.mjs +1 -1
  157. package/tests/session_records.mjs +1 -1
  158. package/tests/ship_card.mjs +6 -6
  159. package/tests/ship_ci_deploy.mjs +1 -1
  160. package/tests/single_host_hall.mjs +9 -9
  161. package/tests/smoke_preflight.mjs +1 -1
  162. package/tests/smoke_target.mjs +1 -1
  163. package/tests/status-probe.mjs +1 -1
  164. package/tests/status_mirror_sync.mjs +1 -1
  165. package/docs/adr/0004-amazonprimea-name-and-trademark-acceptance.md +0 -45
  166. package/docs/design/mocks/_schemes.css +0 -604
  167. package/docs/design/mocks/component-sheet.html +0 -428
  168. package/docs/design/mocks/hall/_tokens.css +0 -370
  169. package/docs/design/mocks/hall/board/v1.html +0 -846
  170. package/docs/design/mocks/hall/board/v2.html +0 -858
  171. package/docs/design/mocks/hall/board/v3.html +0 -884
  172. package/docs/design/mocks/hall/goals/v1.html +0 -1212
  173. package/docs/design/mocks/hall/goals/v2.html +0 -1192
  174. package/docs/design/mocks/hall/goals/v3.html +0 -1205
  175. package/docs/design/mocks/hall/hall-sheet.html +0 -244
  176. package/docs/design/mocks/hall/reading/v1.html +0 -1125
  177. package/docs/design/mocks/hall/reading/v2.html +0 -1177
  178. package/docs/design/mocks/hall/reading/v3.html +0 -1150
  179. package/docs/design/mocks/hall/settings/v1.html +0 -1238
  180. package/docs/design/mocks/hall/settings/v2.html +0 -1235
  181. package/docs/design/mocks/hall/settings/v3.html +0 -1299
  182. package/docs/design/mocks/hall/task/v1.html +0 -633
  183. package/docs/design/mocks/hall/task/v2.html +0 -646
  184. package/docs/design/mocks/hall/task/v3.html +0 -647
  185. package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg +0 -0
  186. package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg.json +0 -13
  187. package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg +0 -0
  188. package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg.json +0 -13
  189. package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg +0 -0
  190. package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg.json +0 -13
  191. package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg +0 -0
  192. package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg.json +0 -13
  193. package/docs/design/mocks/hub/hub-sheet.html +0 -192
  194. package/docs/design/mocks/hub/mine.html +0 -465
  195. package/docs/design/mocks/hub/picker.html +0 -421
  196. package/docs/design/mocks/hub/planets.html +0 -356
  197. package/docs/design/mocks/hub/v1.html +0 -1209
  198. package/docs/design/mocks/hub/v2.html +0 -1257
  199. package/docs/design/mocks/hub/v3.html +0 -1496
  200. package/docs/design/mocks/hub/wizard.html +0 -421
  201. package/docs/design/mocks/landing/landing-sheet.html +0 -131
  202. package/docs/design/mocks/landing/v1.html +0 -956
  203. package/docs/design/mocks/landing/v2.html +0 -708
  204. package/docs/design/mocks/landing/v3.html +0 -911
  205. package/docs/design/mocks/landing-page-mock.html +0 -687
  206. package/docs/design/mocks/landing-palettes.html +0 -103
  207. package/docs/design/mocks/projects-hub-mock.html +0 -991
  208. package/docs/design/mocks/projects-hub-variants.html +0 -146
  209. package/docs/design/mocks/projects-page-mock.html +0 -167
  210. package/docs/design/mocks/world/blue-hud/_tokens.css +0 -246
  211. package/docs/design/mocks/world/blue-hud/hall.html +0 -595
  212. package/docs/design/mocks/world/blue-hud/landing.html +0 -424
  213. package/docs/design/mocks/world/blue-hud/status.html +0 -410
  214. package/docs/design/mocks/world/chrome-blobs/_tokens.css +0 -479
  215. package/docs/design/mocks/world/chrome-blobs/hall.html +0 -553
  216. package/docs/design/mocks/world/chrome-blobs/landing-b.html +0 -581
  217. package/docs/design/mocks/world/chrome-blobs/landing.html +0 -328
  218. package/docs/design/mocks/world/chrome-blobs/status.html +0 -416
  219. package/docs/design/mocks/world/natgeo-editorial/_tokens.css +0 -377
  220. package/docs/design/mocks/world/natgeo-editorial/hall.html +0 -649
  221. package/docs/design/mocks/world/natgeo-editorial/landing-b.html +0 -743
  222. package/docs/design/mocks/world/natgeo-editorial/landing.html +0 -475
  223. package/docs/design/mocks/world/natgeo-editorial/status.html +0 -437
  224. package/docs/design/mocks/world/organic-cards/_tokens.css +0 -462
  225. package/docs/design/mocks/world/organic-cards/hall.html +0 -625
  226. package/docs/design/mocks/world/organic-cards/landing-b.html +0 -736
  227. package/docs/design/mocks/world/organic-cards/landing.html +0 -420
  228. package/docs/design/mocks/world/organic-cards/status.html +0 -458
  229. package/docs/design/mocks/world/world-sheet.html +0 -156
@@ -1,458 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <script>
6
- (function(){try{var q=new URLSearchParams(location.search).get('mode');var m=(q==='light'||q==='dark')?q:localStorage.getItem('cb-color-mode');if(m==='light'||m==='dark')document.documentElement.setAttribute('data-mode',m);}catch(e){}})();
7
- </script>
8
- <meta name="viewport" content="width=device-width, initial-scale=1">
9
- <title>Cloud Bongos, the public ledger</title>
10
- <link rel="preconnect" href="https://fonts.googleapis.com">
11
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12
- <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Nunito:wght@400;600;800&display=swap" rel="stylesheet">
13
- <link rel="stylesheet" href="_tokens.css">
14
- <style>
15
- *,*::before,*::after{box-sizing:border-box}
16
- html{font-size:calc(16px * var(--zoom))}
17
- html,body{margin:0;padding:0}
18
- body{
19
- position:relative;min-height:100vh;background:var(--bg);color:var(--ink);
20
- font-family:var(--font-body);font-size:1rem;line-height:1.55;
21
- -webkit-font-smoothing:antialiased;
22
- }
23
- body::before{content:"";position:absolute;inset:0;z-index:0;background-image:var(--ripple),var(--ground-glow)}
24
- body::after{
25
- content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
26
- background-image:var(--grain);
27
- opacity:var(--grain-op);mix-blend-mode:overlay;
28
- }
29
- body > *{position:relative;z-index:1}
30
- ::selection{background:var(--accent);color:var(--on-accent)}
31
- :focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:8px}
32
- svg{display:block}
33
- .vh{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
34
- .wrap{width:min(1180px,100% - clamp(28px,6vw,88px));margin-inline:auto}
35
-
36
- /* ---------------- header band ---------------- */
37
- .head{position:relative;overflow:hidden;background:var(--head-band);border-bottom:var(--line) solid var(--rule-soft)}
38
- .head-plate{
39
- position:absolute;inset:0;pointer-events:none;
40
- background-image:var(--plate-hero);background-size:auto 260%;background-position:right center;
41
- background-repeat:no-repeat;
42
- -webkit-mask-image:linear-gradient(270deg,#000 0 18%,rgba(0,0,0,.5) 40%,transparent 66%);
43
- mask-image:linear-gradient(270deg,#000 0 18%,rgba(0,0,0,.5) 40%,transparent 66%);
44
- }
45
- .head-in{position:relative;display:flex;align-items:flex-start;gap:20px;padding:clamp(24px,4vw,40px) 0 clamp(20px,3vw,32px)}
46
- h1{
47
- margin:0;font-family:var(--font-display);font-weight:800;
48
- font-size:clamp(2.3rem,4.4vw,3.5rem);line-height:1.02;letter-spacing:-.03em;color:var(--ink);
49
- }
50
- .sub{margin:.35rem 0 0;font-weight:700;font-size:clamp(1.05rem,1.5vw,1.3rem);color:var(--ink)}
51
- .upd{margin:.2rem 0 0;font-size:.92rem;color:var(--ink-soft)}
52
- .head-tools{margin-left:auto;display:flex;align-items:center;gap:10px;flex:none}
53
- .zoom{display:inline-flex;align-items:center;gap:6px;padding:4px;border-radius:var(--radius-pill);background:var(--toggle-bg);border:var(--line) solid var(--toggle-bd)}
54
- .zoom button{
55
- width:30px;height:26px;cursor:pointer;font:inherit;font-weight:800;font-size:.82rem;
56
- color:var(--ink);background:transparent;border:0;border-radius:var(--radius-pill);
57
- }
58
- .zoom button:hover{background:var(--nav-hover)}
59
- .mode-toggle{
60
- width:54px;height:30px;flex:none;padding:0;cursor:pointer;
61
- border-radius:var(--radius-pill);border:var(--line) solid var(--toggle-bd);
62
- background:var(--toggle-bg);color:var(--ink);
63
- display:inline-flex;align-items:center;justify-content:center;
64
- }
65
- .mode-toggle:hover{border-color:var(--accent)}
66
- .mt-ico{position:relative;width:18px;height:18px}
67
- .mt-ico svg{position:absolute;inset:0;width:18px;height:18px}
68
- .i-moon{opacity:var(--moon-o)}
69
- .i-sun{opacity:var(--sun-o)}
70
-
71
- /* ---------------- section rail ---------------- */
72
- .rail{padding:22px 0 4px}
73
- .rail ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
74
- .rail a{
75
- display:inline-block;text-decoration:none;padding:7px 17px;border-radius:var(--radius-pill);
76
- background:var(--field-brown);color:var(--on-brown);
77
- font-weight:700;font-size:.86rem;box-shadow:var(--shadow-card);
78
- transition:transform .18s cubic-bezier(.16,1,.3,1),background .18s ease;
79
- }
80
- .rail a:hover{transform:translateY(-2px);background:var(--accent-deep)}
81
-
82
- /* ---------------- cards, the world's one container ---------------- */
83
- main{padding-bottom:56px}
84
- .card{
85
- border-radius:var(--radius);padding:18px 20px;
86
- background-image:linear-gradient(158deg,rgba(255,255,255,.13),rgba(0,0,0,.07));
87
- box-shadow:var(--shadow-card);border:var(--line) solid var(--tile-edge);
88
- }
89
- .f-green{background-color:var(--field-green);color:var(--on-green)}
90
- .f-brown{background-color:var(--field-brown);color:var(--on-brown)}
91
- .f-tan{background-color:var(--field-tan);color:var(--on-tan)}
92
- .f-deep{background-color:var(--field-deep);color:var(--on-deep)}
93
- .f-mute{background-color:var(--field-mute);color:var(--on-mute)}
94
- .f-green .soft{color:var(--on-green-soft)}
95
- .f-brown .soft{color:var(--on-brown-soft)}
96
- .f-tan .soft{color:var(--on-tan-soft)}
97
- .f-deep .soft{color:var(--on-deep-soft)}
98
-
99
- .badge{
100
- width:52px;height:52px;border-radius:50%;display:grid;place-items:center;flex:none;
101
- background:var(--accent);color:var(--on-accent);
102
- box-shadow:8px 10px 18px -10px rgba(12,30,22,.6),inset 0 1px 0 rgba(255,255,255,.38);
103
- }
104
- .badge svg{width:24px;height:24px}
105
- .badge--mute{background:var(--field-mute);color:var(--on-mute);box-shadow:inset 0 1px 0 rgba(255,255,255,.10)}
106
- .f-tan .badge{background:var(--accent-deep);color:var(--cream)}
107
-
108
- /* headline row: the template's wide four-column slab, faceted and hairline-divided */
109
- .stats{
110
- position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
111
- margin:16px 0 26px;border-radius:var(--radius);overflow:hidden;
112
- background-color:var(--sea);color:var(--on-sea);
113
- border:var(--line) solid var(--sea-rule);box-shadow:var(--shadow-card);
114
- }
115
- .stats::before{
116
- content:"";position:absolute;inset:0;pointer-events:none;
117
- background-image:
118
- radial-gradient(112% 150% at 10% -28%, rgba(255,255,255,.10), transparent 58%),
119
- radial-gradient(112% 150% at 36% 128%, rgba(255,255,255,.07), transparent 56%),
120
- radial-gradient(112% 150% at 62% -28%, rgba(255,255,255,.085), transparent 56%),
121
- radial-gradient(112% 150% at 88% 128%, rgba(255,255,255,.055), transparent 56%);
122
- }
123
- .stat{position:relative;padding:20px 22px 22px}
124
- .stat + .stat{border-left:var(--line) solid var(--sea-rule)}
125
- .stat .soft{color:var(--on-sea-soft)}
126
- .stat .bar{background:var(--sea-track)}
127
- .stat-l{
128
- margin:0;font-family:var(--label-font);font-weight:var(--label-weight);font-size:.74rem;
129
- letter-spacing:var(--label-ls);text-transform:uppercase;
130
- }
131
- .stat-v{
132
- margin:.15rem 0 0;font-family:var(--font-display);font-weight:800;
133
- font-size:clamp(1.8rem,2.6vw,2.5rem);line-height:1.1;letter-spacing:-.028em;
134
- font-variant-numeric:tabular-nums;
135
- }
136
- .stat-c{margin:.35rem 0 0;font-size:.84rem;line-height:1.4}
137
-
138
- .bar{height:16px;border-radius:var(--radius-pill);background:var(--bar-track);overflow:hidden;box-shadow:inset 0 1px 3px rgba(0,0,0,.22)}
139
- .bar i{display:block;height:100%;border-radius:var(--radius-pill);background:var(--bar-fill);box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
140
-
141
- /* section scaffolding */
142
- h2{
143
- margin:0 0 .2rem;font-family:var(--font-display);font-weight:800;
144
- font-size:1.45rem;letter-spacing:-.022em;color:var(--ink);
145
- }
146
- .lede{margin:0 0 14px;color:var(--ink-soft);font-size:.92rem;max-width:62ch}
147
- .grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:start}
148
- .grid > section{margin-bottom:0}
149
- section{margin-bottom:24px}
150
-
151
- /* the watch */
152
- .watch{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
153
- .pillar{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:18px 10px}
154
- .pillar b{font-size:1rem;font-weight:800}
155
- .pillar span{font-size:.8rem;font-variant-numeric:tabular-nums}
156
-
157
- /* works in progress */
158
- .wip-row + .wip-row{margin-top:15px;padding-top:15px;border-top:var(--line) solid rgba(0,0,0,.13)}
159
- .wip-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}
160
- .wip-head b{font-size:.98rem;font-weight:800}
161
- .wip-head span{font-size:.83rem;font-variant-numeric:tabular-nums}
162
- .wip-pct{margin-left:auto;font-weight:800;font-variant-numeric:tabular-nums}
163
- .steps{display:flex;gap:8px;margin-top:10px;list-style:none;padding:0}
164
- .steps li{
165
- width:13px;height:13px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);
166
- border:1.6px solid currentColor;opacity:.5;
167
- }
168
- .steps li.met{background:var(--accent);border-color:var(--accent);opacity:1}
169
-
170
- /* architects */
171
- .arch{list-style:none;margin:0;padding:0}
172
- .arch li{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:var(--line) solid rgba(0,0,0,.14)}
173
- .arch li:last-child{border-bottom:0}
174
- .arch .n{width:1.5rem;font-variant-numeric:tabular-nums;font-weight:700;opacity:.8}
175
- .arch .who{font-weight:700}
176
- .arch .role{
177
- margin-left:6px;padding:2px 10px;border-radius:var(--radius-pill);
178
- font-family:var(--label-font);font-weight:var(--label-weight);font-size:.66rem;
179
- letter-spacing:var(--label-ls);text-transform:uppercase;
180
- background:rgba(255,255,255,.16);border:var(--line) solid rgba(255,255,255,.16);
181
- }
182
- .arch .cr{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:700}
183
-
184
- /* the world tile */
185
- .world-tile{
186
- height:290px;border-radius:var(--radius);overflow:hidden;
187
- background-image:var(--plate-hero);background-size:cover;background-position:center;
188
- box-shadow:var(--shadow-card);border:var(--line) solid var(--tile-edge);
189
- }
190
- figure{margin:0}
191
- figcaption{margin-top:9px;color:var(--ink-soft);font-size:.85rem}
192
-
193
- /* the foundry */
194
- .strip{display:flex;align-items:flex-end;gap:10px;height:130px;margin-top:6px}
195
- .strip i{flex:1;border-radius:8px 8px 3px 3px;background:var(--bar-fill);box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
196
-
197
- /* treasury */
198
- .money{display:flex;flex-wrap:wrap;gap:26px;margin-bottom:14px}
199
- .money div{min-width:170px}
200
- .money b{display:block;font-family:var(--font-display);font-weight:800;font-size:1.75rem;letter-spacing:-.026em;font-variant-numeric:tabular-nums}
201
- .money span{font-size:.83rem}
202
- .cats{list-style:none;margin:0;padding:0;display:grid;gap:8px}
203
- .cats li{display:flex;align-items:center;gap:12px;font-size:.9rem}
204
- .cats .k{width:82px;font-family:var(--label-font);font-weight:var(--label-weight);font-size:.72rem;letter-spacing:var(--label-ls);text-transform:uppercase}
205
- .cats .t{flex:1;height:10px;border-radius:var(--radius-pill);background:var(--bar-track);overflow:hidden}
206
- .cats .t i{display:block;height:100%;border-radius:var(--radius-pill);background:var(--bar-fill)}
207
- .cats .v{width:82px;text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
208
-
209
- /* lately */
210
- .lately{list-style:none;margin:0;padding:0}
211
- .lately li{display:flex;align-items:center;gap:14px;padding:11px 0;border-bottom:var(--line) solid rgba(0,0,0,.14)}
212
- .lately li:last-child{border-bottom:0}
213
- .lately .id{font-family:var(--font-mono);font-size:.82rem;font-variant-numeric:tabular-nums}
214
- .lately .t{flex:1;font-weight:600;min-width:0}
215
- .lately .s{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;white-space:nowrap}
216
- .lately .s i{width:10px;height:10px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--accent)}
217
- .lately .w{width:76px;text-align:right;font-size:.82rem;white-space:nowrap}
218
-
219
- footer{border-top:var(--line) solid var(--rule-soft);background:var(--bg-deep);padding:24px 0}
220
- footer p{margin:0;color:var(--ink-soft);font-size:.94rem}
221
-
222
- @media (max-width:900px){
223
- .head-in{flex-direction:column;gap:14px}
224
- .head-tools{margin-left:0}
225
- .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
226
- .stat:nth-child(odd){border-left:0}
227
- .stat:nth-child(n+3){border-top:var(--line) solid var(--sea-rule)}
228
- .grid{grid-template-columns:minmax(0,1fr)}
229
- .watch{grid-template-columns:repeat(2,minmax(0,1fr))}
230
- .money{gap:16px}
231
- .cats .k{width:66px}
232
- .cats .v{width:66px}
233
- .world-tile{height:200px}
234
- }
235
- </style>
236
- </head>
237
- <body>
238
-
239
- <header class="head">
240
- <div class="head-plate" aria-hidden="true"></div>
241
- <div class="head-in wrap">
242
- <div>
243
- <h1>Cloud Bongos</h1>
244
- <p class="sub">the public ledger</p>
245
- <p class="upd">updated 2 minutes ago</p>
246
- </div>
247
- <div class="head-tools">
248
- <div class="zoom" id="ledger-zoom">
249
- <button type="button" id="zoom-out" aria-label="Smaller text">A-</button>
250
- <button type="button" id="zoom-in" aria-label="Larger text">A+</button>
251
- </div>
252
- <button class="mode-toggle" id="mode" type="button" aria-label="Toggle light or dark">
253
- <span class="mt-ico">
254
- <svg class="i-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.4A8.4 8.4 0 0 1 9.6 4 8.4 8.4 0 1 0 20 14.4Z"/></svg>
255
- <svg class="i-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4.2"/><path d="M12 2.6v2.2M12 19.2v2.2M2.6 12h2.2M19.2 12h2.2M5.4 5.4l1.6 1.6M17 17l1.6 1.6M18.6 5.4 17 7M7 17l-1.6 1.6"/></svg>
256
- </span>
257
- </button>
258
- </div>
259
- </div>
260
- </header>
261
-
262
- <nav class="rail wrap" aria-label="Sections">
263
- <ul>
264
- <li><a href="#watch">The Watch</a></li>
265
- <li><a href="#architects">Architects</a></li>
266
- <li><a href="#foundry">The Foundry</a></li>
267
- <li><a href="#wip">Works in Progress</a></li>
268
- <li><a href="#treasury">The Treasury</a></li>
269
- <li><a href="#lately">Lately Inscribed</a></li>
270
- <li><a href="#world">The World</a></li>
271
- </ul>
272
- </nav>
273
-
274
- <main class="wrap">
275
-
276
- <section id="headline-tablet">
277
- <h2 class="vh">The City At A Glance</h2>
278
- <div class="stats">
279
- <div class="stat">
280
- <p class="stat-l">Standing</p>
281
- <p class="stat-v">holds</p>
282
- <p class="stat-c soft">3 of 3 pillars answering</p>
283
- </div>
284
- <div class="stat">
285
- <p class="stat-l">Shipped</p>
286
- <p class="stat-v">1,107</p>
287
- <p class="stat-c soft">works shipped on V1 of 1,561</p>
288
- </div>
289
- <div class="stat">
290
- <p class="stat-l">Treasury</p>
291
- <p class="stat-v">74%</p><!-- sample -->
292
- <p class="stat-c soft">of the year's purse spent</p>
293
- <div class="bar" style="margin-top:10px" role="img" aria-label="74 percent of the year's purse spent"><i style="width:74%"></i></div><!-- sample -->
294
- </div>
295
- <div class="stat">
296
- <p class="stat-l">Grade</p>
297
- <p class="stat-v">A</p><!-- sample -->
298
- <p class="stat-c soft">mean grade, last 90 days</p>
299
- </div>
300
- </div>
301
- </section>
302
-
303
- <div class="grid">
304
-
305
- <section id="watch">
306
- <h2>The Watch</h2>
307
- <p class="lede">The standing of each pillar, whether it holds or has fallen.</p>
308
- <div class="watch">
309
- <div class="card f-tan pillar">
310
- <span class="badge"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="8.3"/><path d="M3.8 12h16.4"/><path d="M12 3.7a13 13 0 0 1 0 16.6 13 13 0 0 1 0-16.6z"/></svg></span>
311
- <b>Site</b>
312
- <span class="soft">99.9% <!-- sample --> holds</span>
313
- </div>
314
- <div class="card f-tan pillar">
315
- <span class="badge"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3.4 9.6 12 4.2l8.6 5.4"/><path d="M5.6 10.4v8.4M10 10.4v8.4M14 10.4v8.4M18.4 10.4v8.4"/><path d="M3.4 19.8h17.2"/></svg></span>
316
- <b>Hall</b>
317
- <span class="soft">99.9% <!-- sample --> holds</span>
318
- </div>
319
- <div class="card f-tan pillar">
320
- <span class="badge"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 5.4 4.6 12 9 18.6M15 5.4 19.4 12 15 18.6"/></svg></span>
321
- <b>API</b>
322
- <span class="soft">99.9% <!-- sample --> holds</span>
323
- </div>
324
- <div class="card f-deep pillar">
325
- <span class="badge badge--mute"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><ellipse cx="12" cy="6.2" rx="7.4" ry="2.8"/><path d="M4.6 6.2v11.6c0 1.5 3.3 2.8 7.4 2.8s7.4-1.3 7.4-2.8V6.2"/><path d="M4.6 12c0 1.5 3.3 2.8 7.4 2.8s7.4-1.3 7.4-2.8"/></svg></span>
326
- <b>Database</b>
327
- <span class="soft">unknown</span>
328
- </div>
329
- </div>
330
- </section>
331
-
332
- <section id="wip">
333
- <h2>Works in Progress</h2>
334
- <p class="lede">The endeavours now underway in the city.</p>
335
- <div class="card f-green">
336
- <div class="wip-row">
337
- <div class="wip-head">
338
- <b>Cloud Bongos, platform (V1)</b>
339
- <span class="soft">building, 1,107 of 1,561 shipped</span>
340
- <span class="wip-pct">71%</span>
341
- </div>
342
- <div class="bar" role="img" aria-label="71 percent shipped"><i style="width:71%"></i></div>
343
- <ul class="steps" aria-label="3 of 5 criteria met"><!-- sample -->
344
- <li class="met"></li><li class="met"></li><li class="met"></li><li></li><li></li>
345
- </ul>
346
- </div>
347
- <div class="wip-row">
348
- <div class="wip-head">
349
- <b>Cloud Bongos, Customer-0 dogfood</b>
350
- <span class="soft">building, 58 of 88 shipped</span>
351
- <span class="wip-pct">66%</span>
352
- </div>
353
- <div class="bar" role="img" aria-label="66 percent shipped"><i style="width:66%"></i></div>
354
- <ul class="steps" aria-label="2 of 5 criteria met"><!-- sample -->
355
- <li class="met"></li><li class="met"></li><li></li><li></li><li></li>
356
- </ul>
357
- </div>
358
- </div>
359
- </section>
360
-
361
- <section id="architects">
362
- <h2>Architects of Cloud Bongos</h2>
363
- <p class="lede">Citizens who have set the most stone.</p>
364
- <ol class="card f-brown arch">
365
- <li><span class="n">1</span><span class="who">lars589</span><span class="role">Owner</span><span class="cr">44,562</span></li>
366
- <li><span class="n">2</span><span class="who">Percy Jackson</span><span class="role">Owner</span><span class="cr">13,358</span></li>
367
- <li><span class="n">3</span><span class="who">IAMMASTERQUA</span><span class="role">Owner</span><span class="cr">3,316</span></li>
368
- <li><span class="n">4</span><span class="who">scootermack</span><span class="role">Owner</span><span class="cr">2,440</span></li>
369
- <li><span class="n">5</span><span class="who">LarsCode</span><span class="role">Newcomer</span><span class="cr">44</span></li>
370
- <li><span class="n">6</span><span class="who">kingaonline</span><span class="role">Contributor</span><span class="cr">36</span></li>
371
- </ol>
372
- </section>
373
-
374
- <section id="world">
375
- <h2>The World</h2>
376
- <p class="lede">A portrait of Cloud Bongos as she stands today.</p>
377
- <figure>
378
- <div class="world-tile" role="img" aria-label="Leaves layered over green and brown paper, the city's own materials"></div>
379
- <figcaption>rendered from the city's own stones</figcaption>
380
- </figure>
381
- </section>
382
-
383
- <section id="foundry" style="grid-column:1 / -1">
384
- <h2>The Foundry</h2>
385
- <p class="lede">How the city's craft is changing, works shipped and time per work over the last ninety days.</p>
386
- <div class="card f-deep">
387
- <div class="strip" role="img" aria-label="Works shipped per week over thirteen weeks"><!-- sample -->
388
- <i style="height:38%"></i><i style="height:52%"></i><i style="height:44%"></i><i style="height:66%"></i>
389
- <i style="height:58%"></i><i style="height:74%"></i><i style="height:62%"></i><i style="height:86%"></i>
390
- <i style="height:70%"></i><i style="height:92%"></i><i style="height:78%"></i><i style="height:100%"></i>
391
- <i style="height:84%"></i>
392
- </div>
393
- <p class="stat-c soft" style="margin-top:12px">sample data</p>
394
- </div>
395
- </section>
396
-
397
- <section id="treasury">
398
- <h2>The Treasury</h2>
399
- <p class="lede">Credits spent, against the value wrought.</p>
400
- <div class="card f-tan">
401
- <div class="money">
402
- <div><b>$48,244</b><span class="soft">spent</span></div>
403
- <div><b>69,751</b><span class="soft">credits of value</span></div>
404
- </div>
405
- <ul class="cats">
406
- <li><span class="k">api</span><span class="t"><i style="width:100%"></i></span><span class="v">$47,880</span></li>
407
- <li><span class="k">infra</span><span class="t"><i style="width:11%"></i></span><span class="v">$261</span></li>
408
- <li><span class="k">compute</span><span class="t"><i style="width:6%"></i></span><span class="v">$84</span></li>
409
- <li><span class="k">domain</span><span class="t"><i style="width:3%"></i></span><span class="v">$11</span></li>
410
- <li><span class="k">art</span><span class="t"><i style="width:2%"></i></span><span class="v">$8</span></li>
411
- </ul>
412
- </div>
413
- </section>
414
-
415
- <section id="lately">
416
- <h2>Lately Inscribed</h2>
417
- <p class="lede">Newest entries set down upon the ledger.</p>
418
- <ul class="card f-green lately">
419
- <li><span class="id">1002792</span><span class="t">A task's title can now be corrected after it's created</span><span class="s"><i></i>shipped</span><span class="w">today</span></li>
420
- <li><span class="id">1003239</span><span class="t">A same-tab GitHub return stays put</span><span class="s"><i></i>shipped</span><span class="w">today</span></li>
421
- <li><span class="id">1002889</span><span class="t">The wizard remembers a half-finished project</span><span class="s"><i></i>shipped</span><span class="w">yesterday</span></li>
422
- <li><span class="id">1003245</span><span class="t">The copy desk lands</span><span class="s"><i></i>shipped</span><span class="w">yesterday</span></li>
423
- </ul>
424
- </section>
425
-
426
- </div>
427
- </main>
428
-
429
- <footer>
430
- <div class="wrap"><p>Built by agents, on Cloud Bongos.</p></div>
431
- </footer>
432
-
433
- <script>
434
- (function () {
435
- var root = document.documentElement;
436
- function isDark() {
437
- var m = root.getAttribute('data-mode');
438
- if (m === 'dark') return true;
439
- if (m === 'light') return false;
440
- return window.matchMedia('(prefers-color-scheme: dark)').matches;
441
- }
442
- document.getElementById('mode').addEventListener('click', function () {
443
- var next = isDark() ? 'light' : 'dark';
444
- root.setAttribute('data-mode', next);
445
- try { localStorage.setItem('cb-color-mode', next); } catch (e) {}
446
- });
447
-
448
- var zoom = 1;
449
- function setZoom(next) {
450
- zoom = Math.min(1.35, Math.max(0.85, Math.round(next * 100) / 100));
451
- root.style.setProperty('--zoom', String(zoom));
452
- }
453
- document.getElementById('zoom-in').addEventListener('click', function () { setZoom(zoom + 0.1); });
454
- document.getElementById('zoom-out').addEventListener('click', function () { setZoom(zoom - 0.1); });
455
- })();
456
- </script>
457
- </body>
458
- </html>
@@ -1,156 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>World round, round 2: three candidates, two compositions each (task 1003296)</title>
7
- <style>
8
- :root{--ink:#14151a;--soft:#585c6b;--faint:#8a8fa0;--line:#d9dce5;--bg:#f3f4f8;--card:#ffffff;--kick:#0b5fff;}
9
- :root[data-mode="dark"]{--ink:#f1f2f7;--soft:#a9aec0;--faint:#737890;--line:#2a2e3b;--bg:#0c0e14;--card:#151822;--kick:#7aa2ff;}
10
- @media (prefers-color-scheme:dark){:root:not([data-mode="light"]){--ink:#f1f2f7;--soft:#a9aec0;--faint:#737890;--line:#2a2e3b;--bg:#0c0e14;--card:#151822;--kick:#7aa2ff;}}
11
- *{box-sizing:border-box;margin:0;padding:0}
12
- body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;padding:clamp(18px,3vw,40px);-webkit-font-smoothing:antialiased;line-height:1.5}
13
- h1{font-size:clamp(22px,3vw,32px);letter-spacing:-.4px;margin-bottom:6px}
14
- .sub{color:var(--soft);max-width:96ch;font-size:14.5px;margin-bottom:8px}
15
- .sub b{color:var(--ink)}
16
- .read{border-left:3px solid var(--kick);padding:10px 14px;margin:14px 0 18px;font-size:14px;max-width:104ch;background:color-mix(in srgb,var(--kick) 7%,transparent);border-radius:0 8px 8px 0}
17
- .read code{font-family:ui-monospace,Consolas,monospace;font-size:12.5px}
18
- .bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0 22px;position:sticky;top:0;background:var(--bg);padding:10px 0;z-index:5;border-bottom:1px solid var(--line)}
19
- .bar span{font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);margin-left:10px}
20
- .bar span:first-child{margin-left:0}
21
- .bar button{cursor:pointer;font:inherit;font-weight:600;font-size:13px;padding:6px 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);color:var(--ink)}
22
- .bar button[aria-pressed="true"]{background:var(--ink);color:var(--card);border-color:var(--ink)}
23
- .cand{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:16px 18px 18px;margin-bottom:22px}
24
- .kick{font-size:11px;letter-spacing:.9px;text-transform:uppercase;color:var(--kick);font-weight:700}
25
- .cand h2{font-size:20px;margin:2px 0 4px;letter-spacing:-.2px}
26
- .meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px 22px;font-size:13.5px;color:var(--soft);margin:6px 0 12px}
27
- .meta b{color:var(--ink);font-weight:600}
28
- .tiles{display:grid;grid-template-columns:2.2fr 2.2fr 2.2fr 0.8fr 0.8fr;gap:12px;align-items:start}
29
- .tiles.three{grid-template-columns:2.2fr 2.2fr 2.2fr}
30
- @media (max-width:1100px){.tiles,.tiles.three{grid-template-columns:1fr 1fr}}
31
- @media (max-width:640px){.tiles,.tiles.three{grid-template-columns:1fr}}
32
- .tile{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg)}
33
- .tileHead{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;color:var(--soft);border-bottom:1px solid var(--line)}
34
- .tileHead a{color:var(--kick);font-weight:600;text-decoration:none}
35
- .frame{position:relative;width:100%;aspect-ratio:1440/900;overflow:hidden}
36
- .frame iframe{position:absolute;top:0;left:0;width:1440px;height:900px;border:0;transform-origin:0 0}
37
- .frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top}
38
- .phone .frame{aspect-ratio:390/844}
39
- .phone .frame iframe{width:390px;height:844px}
40
- .tmpl{display:flex;gap:10px;align-items:center;margin:0 0 10px;font-size:12.5px;color:var(--soft)}
41
- .tmpl img{height:56px;border-radius:6px;border:1px solid var(--line)}
42
- .exit{opacity:.85}
43
- details.record{margin-bottom:22px}
44
- details.record summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--soft);padding:10px 0}
45
- .thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;margin-top:8px}
46
- .thumbs figure{font-size:11.5px;color:var(--faint)}
47
- .thumbs img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:6px;border:1px solid var(--line);display:block;margin-bottom:3px}
48
- footer{color:var(--faint);font-size:12.5px;margin-top:28px}
49
- </style>
50
- <script>
51
- (function(){try{var q=new URLSearchParams(location.search).get('mode');var m=(q==='light'||q==='dark')?q:'dark';document.documentElement.setAttribute('data-mode',m);}catch(e){}})();
52
- </script>
53
- </head>
54
- <body>
55
-
56
- <h1>One world for the apex and the hall: three candidates, refined, two landing compositions each</h1>
57
- <p class="sub">Round 2 of the world round (task 1003296, goal 1000080). After round 1 the owner kept <b>chrome-blobs</b> (the lean), <b>natgeo-editorial</b> and <b>organic-cards</b>, dropped <b>blue-hud</b>, and took the status index out of the round. Each survivor was refined against its own template (fidelity plus the raises: the planet limb and lamp yellow, the leader-line callouts with real numbers, the joined pill doors) with new Higgsfield hero plates (rendered bongo pairs, chrome blobs, a planet limb, leaves). <b>Landing A</b> is the impeccable-led refinement; <b>Landing B</b> is a second composition of the same template built with the taste skill, for comparison. The hall is one per candidate (dark = glass over the forest, light = the mono-label console). The two small tiles are the landings at 390. Mocks are judged <b>dark first</b>; flip to light to check the tested light mode. <b>Template</b> swaps each tile for the owner's reference image it was built against. <b>Owner's pick (2026-08-27): chrome-blobs, composition A.</b> Steer: refine light mode or take the landing dark-only; explore an animated blob background (possibly bongo-shaped blobs); look at the projects page in this world.</p>
58
-
59
- <div class="read">
60
- <b>How to read the comparison.</b> A and B share the same content, the same token layer (<code>_tokens.css</code>), the same mechanics and the same template; only the composition and the hand that built it differ. A was produced under <code>/impeccable</code> (comp-is-king fidelity against the template, craft floor); B under <code>design-taste-frontend</code> (design read, three dials, anti-default discipline). The pick can be a candidate, a composition, or a candidate with the other hand's composition.
61
- </div>
62
-
63
- <div class="bar">
64
- <span>mode</span>
65
- <button data-md="dark" aria-pressed="true" type="button">dark</button>
66
- <button data-md="light" aria-pressed="false" type="button">light</button>
67
- <span>show</span>
68
- <button data-v="mock" aria-pressed="true" type="button">mock</button>
69
- <button data-v="template" aria-pressed="false" type="button">template</button>
70
- </div>
71
-
72
- <div id="cands"></div>
73
-
74
- <details class="record" id="round1">
75
- <summary>Round 1 record: the rejected candidate and the status mocks (not refined in round 2)</summary>
76
- <section class="cand exit" id="blue-hud">
77
- <div class="kick">Rejected in round 1</div><h2>The HUD (blue-hud)</h2>
78
- <div class="meta"><div><b>World.</b> Black ground, electric blue accent, condensed caps display with the second line in blue, HUD brackets and crosshair ticks, a glowing ring behind the mark.</div><div><b>Why it went.</b> The owner did not pick it; it was the most rut-adjacent of the four (near-black plus one glowing accent). Kept on disk as built and verified; not refined.</div></div>
79
- <div class="tiles three" id="hud-tiles"></div>
80
- </section>
81
- <section class="cand exit" id="status-r1">
82
- <div class="kick">Round 1 status index mocks</div><h2>The ledger index, one per surviving candidate</h2>
83
- <div class="meta"><div>The owner took the status index out of round 2. These are the round-1 mocks as verified; S1 (task 1003310) starts from the chosen candidate's version.</div></div>
84
- <div class="tiles three" id="status-tiles"></div>
85
- </section>
86
- </details>
87
-
88
- <section class="cand exit" id="roll">
89
- <div class="kick">For the record: the direction roll's hand (not built)</div>
90
- <h2>What impeccable dealt before the templates were pinned</h2>
91
- <div class="meta"><div>The method's roll assigned a grounded direction and dealt catalog challengers; comps were generated and are kept as evidence. The owner then pinned the six reference images as templates, which beats the roll. None of these has a mock. Verdicts and what was kept live in <code>docs/design/apex-pass-2-direction.md</code>.</div></div>
92
- <div class="thumbs">
93
- <figure><img src="../../../../.impeccable/mocks/decision/rhythm-machine-landing.jpg" alt=""><figcaption>The roll: rhythm machine</figcaption></figure>
94
- <figure><img src="../../../../.impeccable/mocks/decision/star-atlas-landing.jpg" alt=""><figcaption>Impeccable's pick: star atlas</figcaption></figure>
95
- <figure><img src="../../../../.impeccable/mocks/decision/nixie-ledger-landing.jpg" alt=""><figcaption>Challenger: nixie ledger</figcaption></figure>
96
- <figure><img src="../../../../.impeccable/mocks/decision/signboard-index-landing.jpg" alt=""><figcaption>Challenger: signboard index</figcaption></figure>
97
- <figure><img src="../../../../.impeccable/mocks/decision/expedition-landing.jpg" alt=""><figcaption>First reference fusion: expedition</figcaption></figure>
98
- <figure><img src="../../../../.impeccable/mocks/decision/canon-landing.jpg" alt=""><figcaption>The standing exit: category canon</figcaption></figure>
99
- </div>
100
- </section>
101
-
102
- <footer>Mocks: <code>docs/design/mocks/world/&lt;slug&gt;/{_tokens.css, landing, landing-b, hall, status}.html</code>. Templates: <code>docs/design/references/2026-08-26/</code>. Round-1 comps and the image plates (round 2 plates are <code>r2-*</code>): <code>.impeccable/mocks/decision/</code> and <code>.impeccable/mocks/world-assets/</code> (kept out of the published core). Decision record: <code>docs/design/apex-pass-2-direction.md</code>.</footer>
103
-
104
- <script>
105
- var REF='../../references/2026-08-26/';
106
- var HALL={dark:'hall-2-dark-glass-dashboard-forest.webp',light:'hall-1-light-mono-label-dashboard.webp'};
107
- var CANDS=[
108
- {slug:'chrome-blobs',name:'The chrome',tmpl:'site-2-iridescent-chrome-blobs-warm-cta.jpg',tname:'Iridescent chrome blobs on black',
109
- thesis:'Pure black with liquid-chrome forms drifting behind light geometric type, thin leader-line callouts carrying real ledger numbers, pill navigation, and one warm orange action. The owner\'s lean after round 1.',
110
- round2:'New chrome blob set and a rendered chrome bongo pair replace the round-1 rasters and the flat SVG drums.'},
111
- {slug:'natgeo-editorial',name:'The expedition',tmpl:'site-1-natgeo-dark-editorial-planets-expedition-map.jpg',tname:'National Geographic dark editorial',
112
- thesis:'Near-black editorial ground, a light grotesk at large scale split around a photographic planet, one yellow accent, hairline rules.',
113
- round2:'A real planet limb behind the headline and a rendered matte-black bongo pair; the callouts and the joined pill doors are the raises on offer.'},
114
- {slug:'organic-cards',name:'The grove',tmpl:'site-4-green-brown-organic-card-system.jpg',tname:'Green and brown organic card system',
115
- thesis:'Deep green with warm brown and tan, rounded organic cards with circular badges, photographic leaves layered over sculpted paper, a friendly rounded sans; the template\'s green field is the dark mode, pale sage is the light twin.',
116
- round2:'New leaf plates for both modes and a cut-out wood bongo pair with a monstera leaf; the callouts and the single-accent discipline are the raises on offer.'}
117
- ];
118
- var mode='dark', view='mock';
119
- function tile(c,page,label){
120
- var src=c.slug+'/'+page+'.html?mode='+mode;
121
- var tm = page==='hall' ? REF+HALL[mode] : REF+c.tmpl;
122
- var body = view==='template' ? '<img src="'+tm+'" alt="'+c.name+' template">' : '<iframe loading="lazy" src="'+src+'" title="'+c.name+': '+label+'"></iframe>';
123
- return '<div class="tile"><div class="tileHead"><span>'+label+'</span><a href="'+src+'" target="_blank">open full</a></div><div class="frame">'+body+'</div></div>';
124
- }
125
- function phone(c,page,label){
126
- var src=c.slug+'/'+page+'.html?mode='+mode;
127
- return '<div class="tile phone"><div class="tileHead"><span>'+label+'</span><a href="'+src+'" target="_blank">open</a></div><div class="frame"><iframe loading="lazy" src="'+src+'" title="'+c.name+': '+label+'"></iframe></div></div>';
128
- }
129
- function render(){
130
- document.getElementById('cands').innerHTML=CANDS.map(function(c,i){
131
- return '<section class="cand" id="'+c.slug+'">'+
132
- '<div class="kick">Candidate '+(i+1)+' of 3</div><h2>'+c.name+'</h2>'+
133
- '<div class="tmpl"><img src="'+REF+c.tmpl+'" alt=""><span>Template: <b>'+c.tname+'</b>. Hall: the two hall templates, dark and light.</span></div>'+
134
- '<div class="meta"><div><b>World.</b> '+c.thesis+'</div><div><b>Round 2.</b> '+c.round2+'</div></div>'+
135
- '<div class="tiles">'+tile(c,'landing','landing A (impeccable)')+tile(c,'landing-b','landing B (taste skill)')+tile(c,'hall','hall ('+mode+' template)')+phone(c,'landing','A at 390')+phone(c,'landing-b','B at 390')+'</div>'+
136
- '</section>';
137
- }).join('');
138
- var hud={slug:'blue-hud',name:'The HUD',tmpl:'site-3-blue-accent-hud-portfolio.jpg'};
139
- document.getElementById('hud-tiles').innerHTML=tile(hud,'landing','landing')+tile(hud,'hall','hall')+tile(hud,'status','status index');
140
- document.getElementById('status-tiles').innerHTML=CANDS.map(function(c){return tile(c,'status',c.name+': status index');}).join('');
141
- fit();
142
- }
143
- function fit(){
144
- document.querySelectorAll('.frame').forEach(function(f){
145
- var fr=f.querySelector('iframe'); if(!fr) return;
146
- var w=f.closest('.phone')?390:1440; fr.style.transform='scale('+(f.clientWidth/w)+')';
147
- });
148
- }
149
- document.querySelectorAll('[data-md]').forEach(function(b){b.onclick=function(){mode=b.dataset.md;document.documentElement.setAttribute('data-mode',mode);document.querySelectorAll('[data-md]').forEach(function(x){x.setAttribute('aria-pressed',String(x===b));});render();};});
150
- document.querySelectorAll('[data-v]').forEach(function(b){b.onclick=function(){view=b.dataset.v;document.querySelectorAll('[data-v]').forEach(function(x){x.setAttribute('aria-pressed',String(x===b));});render();};});
151
- document.getElementById('round1').addEventListener('toggle',fit);
152
- window.addEventListener('resize',fit);
153
- render();
154
- </script>
155
- </body>
156
- </html>