@bongos/core 1.19.726 → 1.19.728
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.
- package/.bongos-core.json +177 -492
- package/.devcontainer/Dockerfile +1 -1
- package/.devcontainer/devcontainer.json +2 -2
- package/.devcontainer/healthcheck.sh +1 -1
- package/.devcontainer/init-firewall.sh +1 -1
- package/.devcontainer/post-create.sh +2 -2
- package/.env.local.example +1 -1
- package/Dockerfile +1 -1
- package/docs/copy-inventory.md +1 -1
- package/docs/copy-registry.json +9 -9
- package/docs/module-api-changelog.md +4 -0
- package/docs/recipes/devbox-app-release.md +4 -4
- package/modules/dev-box/app/scripts/dmgbuild-settings.py +5 -5
- package/modules/dev-box/app/scripts/gen-brand.js +1 -1
- package/modules/dev-box/app/src/brand.js +1 -1
- package/modules/dev-box/app/test/unit.mjs +16 -16
- package/modules/dev-box/box-access.js +1 -1
- package/modules/dev-box/routes/box.js +1 -1
- package/modules/discord/discord-approvals.js +1 -1
- package/modules/grading/grader-model.js +1 -1
- package/modules/grading/grader-prompt.js +1 -1
- package/modules/grading/grader-workers/quality.js +1 -1
- package/modules/hall-ui/module.json +1 -1
- package/modules/hall-ui/public/brand-apply.js +1 -1
- package/modules/hall-ui/public/shell.js +1 -1
- package/modules/hall-ui/public/work.js +1 -1
- package/modules/lifecycle/conflict-resolve.js +1 -1
- package/modules/lifecycle/db-analytics.js +1 -1
- package/modules/lifecycle/routes/analytics.js +1 -1
- package/modules/onboarding/approval-broadcast.js +1 -1
- package/modules/onboarding/onboarding.js +1 -1
- package/modules/provisioning/tests/liveness.mjs +1 -1
- package/modules/public-landing/public/index.html +1 -1
- package/modules/public-landing/public/projects-floor.states.json +2 -2
- package/modules/public-landing/public/projects.probes.json +4 -4
- package/modules/public-landing/public/projects.states.json +2 -2
- package/modules/status-ui/module.json +1 -1
- package/modules/status-ui/public/status.js +4 -4
- package/modules/status-ui/public/style.css +1 -1
- package/modules/ui-design/kit/fixtures/cost-summary.json +1 -1
- package/modules/ui-design/kit/fixtures/featured-hub.json +1 -1
- package/modules/ui-design/kit/fixtures/featured.json +1 -1
- package/modules/ui-design/kit/fixtures/leaderboard.json +1 -1
- package/modules/ui-design/kit/fixtures/my-projects.json +1 -1
- package/modules/ui-design/kit/fixtures/progress.json +1 -1
- package/modules/ui-design/kit/fixtures/recent-shipped.json +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/cron/style_guide_audit.sh +1 -1
- package/scripts/discord/lib.js +1 -1
- package/scripts/discord/post.js +1 -1
- package/scripts/gds/audit-authorship.sh +1 -1
- package/scripts/gds/audit-replay.sh +29 -2
- package/scripts/gds/audit-ships.js +1 -1
- package/scripts/gds/backfill-sessions.js +2 -2
- package/scripts/gds/cf-tunnel.js +4 -4
- package/scripts/gds/claude-materialize.js +2 -2
- package/scripts/gds/cli-lib.js +6 -6
- package/scripts/gds/cutover-codemod.js +1 -1
- package/scripts/gds/dev-lib.js +2 -2
- package/scripts/gds/diagnose-achievements.js +2 -2
- package/scripts/gds/fitness-checks-identity.js +6 -4
- package/scripts/gds/gen-diagrams.js +1 -1
- package/scripts/gds/leak-scan-allowlist.js +293 -0
- package/scripts/gds/learning-capture.js +1 -1
- package/scripts/gds/linkify-refs.js +2 -2
- package/scripts/gds/local-preview-lib.js +1 -1
- package/scripts/gds/mirror-lineage-check.js +1 -1
- package/scripts/gds/mirror-redact.js +17 -2
- package/scripts/gds/newcomer-floor.templates.json +1 -1
- package/scripts/gds/package-core.js +18 -1
- package/scripts/gds/paste-token.js +1 -1
- package/scripts/gds/provision-units.js +2 -2
- package/scripts/gds/publish-manifest.js +15 -0
- package/scripts/gds/repo-metrics.js +1 -1
- package/scripts/gds/sandbox-stage.js +1 -1
- package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +1 -1
- package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +1 -1
- package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +1 -1
- package/scripts/gds/seed-bongos-tasks.js +2 -2
- package/scripts/gds/seed-gds-v4-tasks.js +1 -1
- package/scripts/gds/seed-medusa-tasks.js +10 -10
- package/scripts/gds/seed-module-upstreaming.js +1 -1
- package/scripts/gds/seed-productization-tasks.js +6 -6
- package/scripts/gds/seed-provisioning-tasks.js +2 -2
- package/scripts/gds/seed-staging.sh +19 -6
- package/scripts/gds/ship-deploy-target.js +1 -1
- package/scripts/gds/ship-flow.js +1 -1
- package/scripts/gds/smoke-gds.js +1 -1
- package/scripts/status-probe.mjs +2 -2
- package/src/bongos/auth-discord.js +2 -2
- package/src/bongos/live-channel.js +1 -1
- package/src/bongos/pool.js +1 -1
- package/src/bongos/routes/auth.js +11 -11
- package/src/bongos/routes/security.js +1 -1
- package/src/bongos/routes.js +1 -1
- package/src/branding.js +1 -1
- package/src/devbox-downloads.js +1 -1
- package/src/instance-config.js +2 -2
- package/src/module-api.js +1 -1
- package/src/module-loader/provenance.js +2 -2
- package/tests/art_stage.mjs +2 -2
- package/tests/auth_anthropic_identity.mjs +1 -1
- package/tests/auth_duplicate_cookie.mjs +1 -1
- package/tests/auth_error_brand.mjs +1 -1
- package/tests/auth_inactive_builder.mjs +1 -1
- package/tests/backup_cli.mjs +4 -4
- package/tests/bongos_box_connect.mjs +2 -2
- package/tests/bongos_downloads.mjs +2 -2
- package/tests/bongos_login.mjs +5 -5
- package/tests/box_connect_e2e.mjs +2 -2
- package/tests/box_dns_repoint.mjs +10 -10
- package/tests/box_host_keys.mjs +1 -1
- package/tests/box_onboard.mjs +9 -9
- package/tests/box_scope_session.mjs +1 -1
- package/tests/box_terminal_ssrf.mjs +7 -7
- package/tests/boxes.mjs +9 -9
- package/tests/branding.mjs +2 -2
- package/tests/bump_version.mjs +2 -2
- package/tests/cf_tunnel.mjs +40 -40
- package/tests/cli_package.mjs +40 -1
- package/tests/cli_token_reissue.mjs +7 -7
- package/tests/cloud_bongos_pack.mjs +1 -1
- package/tests/currency_label.mjs +8 -8
- package/tests/dev_lib.mjs +4 -4
- package/tests/devbox_dmg_backdrop.mjs +1 -1
- package/tests/devbox_downloads.mjs +2 -2
- package/tests/devbox_icons.mjs +1 -1
- package/tests/discord_approvals.mjs +1 -1
- package/tests/discord_oauth.mjs +2 -2
- package/tests/executed_closure.mjs +6 -1
- package/tests/first_admin_bootstrap.mjs +1 -1
- package/tests/gate_approvals.mjs +5 -5
- package/tests/grade_aggregates_unavailable.mjs +1 -1
- package/tests/hook_user_agents.mjs +2 -2
- package/tests/init.mjs +6 -6
- package/tests/instance_config.mjs +1 -1
- package/tests/instance_manifest.mjs +5 -5
- package/tests/instance_mismatch_guard.mjs +13 -13
- package/tests/leak_scan_allowlist.mjs +94 -0
- package/tests/migrate_root_resolution.mjs +4 -4
- package/tests/mirror_redact.mjs +28 -4
- package/tests/module_catalog.mjs +5 -5
- package/tests/module_submissions.mjs +3 -3
- package/tests/package_core.mjs +1 -1
- package/tests/parallel-load.mjs +6 -6
- package/tests/projects_hub.mjs +2 -2
- package/tests/provision.mjs +50 -50
- package/tests/provisioning_github_app_routes.mjs +1 -1
- package/tests/provisioning_onboard_mode.mjs +2 -2
- package/tests/publish_reconciler.mjs +4 -4
- package/tests/sandbox_stage.mjs +1 -1
- package/tests/scrubber_corpus.mjs +3 -3
- package/tests/search_isolation.mjs +1 -1
- package/tests/session_records.mjs +1 -1
- package/tests/ship_card.mjs +6 -6
- package/tests/ship_ci_deploy.mjs +1 -1
- package/tests/single_host_hall.mjs +9 -9
- package/tests/smoke_preflight.mjs +1 -1
- package/tests/smoke_target.mjs +1 -1
- package/tests/status-probe.mjs +1 -1
- package/tests/status_mirror_sync.mjs +1 -1
- package/docs/adr/0004-amazonprimea-name-and-trademark-acceptance.md +0 -45
- package/docs/design/mocks/_schemes.css +0 -604
- package/docs/design/mocks/component-sheet.html +0 -428
- package/docs/design/mocks/hall/_tokens.css +0 -370
- package/docs/design/mocks/hall/board/v1.html +0 -846
- package/docs/design/mocks/hall/board/v2.html +0 -858
- package/docs/design/mocks/hall/board/v3.html +0 -884
- package/docs/design/mocks/hall/goals/v1.html +0 -1212
- package/docs/design/mocks/hall/goals/v2.html +0 -1192
- package/docs/design/mocks/hall/goals/v3.html +0 -1205
- package/docs/design/mocks/hall/hall-sheet.html +0 -244
- package/docs/design/mocks/hall/reading/v1.html +0 -1125
- package/docs/design/mocks/hall/reading/v2.html +0 -1177
- package/docs/design/mocks/hall/reading/v3.html +0 -1150
- package/docs/design/mocks/hall/settings/v1.html +0 -1238
- package/docs/design/mocks/hall/settings/v2.html +0 -1235
- package/docs/design/mocks/hall/settings/v3.html +0 -1299
- package/docs/design/mocks/hall/task/v1.html +0 -633
- package/docs/design/mocks/hall/task/v2.html +0 -646
- package/docs/design/mocks/hall/task/v3.html +0 -647
- package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg.json +0 -13
- package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg.json +0 -13
- package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg.json +0 -13
- package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg.json +0 -13
- package/docs/design/mocks/hub/hub-sheet.html +0 -192
- package/docs/design/mocks/hub/mine.html +0 -465
- package/docs/design/mocks/hub/picker.html +0 -421
- package/docs/design/mocks/hub/planets.html +0 -356
- package/docs/design/mocks/hub/v1.html +0 -1209
- package/docs/design/mocks/hub/v2.html +0 -1257
- package/docs/design/mocks/hub/v3.html +0 -1496
- package/docs/design/mocks/hub/wizard.html +0 -421
- package/docs/design/mocks/landing/landing-sheet.html +0 -131
- package/docs/design/mocks/landing/v1.html +0 -956
- package/docs/design/mocks/landing/v2.html +0 -708
- package/docs/design/mocks/landing/v3.html +0 -911
- package/docs/design/mocks/landing-page-mock.html +0 -687
- package/docs/design/mocks/landing-palettes.html +0 -103
- package/docs/design/mocks/projects-hub-mock.html +0 -991
- package/docs/design/mocks/projects-hub-variants.html +0 -146
- package/docs/design/mocks/projects-page-mock.html +0 -167
- package/docs/design/mocks/world/blue-hud/_tokens.css +0 -246
- package/docs/design/mocks/world/blue-hud/hall.html +0 -595
- package/docs/design/mocks/world/blue-hud/landing.html +0 -424
- package/docs/design/mocks/world/blue-hud/status.html +0 -410
- package/docs/design/mocks/world/chrome-blobs/_tokens.css +0 -479
- package/docs/design/mocks/world/chrome-blobs/hall.html +0 -553
- package/docs/design/mocks/world/chrome-blobs/landing-b.html +0 -581
- package/docs/design/mocks/world/chrome-blobs/landing.html +0 -328
- package/docs/design/mocks/world/chrome-blobs/status.html +0 -416
- package/docs/design/mocks/world/natgeo-editorial/_tokens.css +0 -377
- package/docs/design/mocks/world/natgeo-editorial/hall.html +0 -649
- package/docs/design/mocks/world/natgeo-editorial/landing-b.html +0 -743
- package/docs/design/mocks/world/natgeo-editorial/landing.html +0 -475
- package/docs/design/mocks/world/natgeo-editorial/status.html +0 -437
- package/docs/design/mocks/world/organic-cards/_tokens.css +0 -462
- package/docs/design/mocks/world/organic-cards/hall.html +0 -625
- package/docs/design/mocks/world/organic-cards/landing-b.html +0 -736
- package/docs/design/mocks/world/organic-cards/landing.html +0 -420
- package/docs/design/mocks/world/organic-cards/status.html +0 -458
- package/docs/design/mocks/world/world-sheet.html +0 -156
|
@@ -1 +1 @@
|
|
|
1
|
-
{"total_usd":48297.3354,"total_value_credits":69790,"by_category":[{"category":"api","total_usd":47930.4111},{"category":"infra","total_usd":261.19},{"category":"compute","total_usd":83.5806},{"category":"domain","total_usd":11.16},{"category":"art","total_usd":10.9937}],"by_builder":[{"builder_id":3,"github_login":"lars589","display_name":"lars589","total_usd":30658.5341},{"builder_id":1000095,"github_login":"jaxri","display_name":"Percy Jackson","total_usd":13067.246},{"builder_id":1000025,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA","total_usd":3533.1156},{"builder_id":1000094,"github_login":"scootermack","display_name":"scootermack","total_usd":698.447},{"builder_id":null,"github_login":null,"display_name":null,"total_usd":278.4037},{"builder_id":1000003,"github_login":"LarsCode","display_name":"LarsCode","total_usd":38.2821},{"builder_id":1000070,"github_login":"kingaonline","display_name":"kingaonline","total_usd":21.8206},{"builder_id":1000051,"github_login":"MrTenkpro","display_name":"MrTenkpro","total_usd":1.0843},{"builder_id":1000027,"github_login":"willHermesLines","display_name":"willHermesLines","total_usd":0.2127},{"builder_id":1000057,"github_login":"largekristensen-svg","display_name":"largekristensen-svg","total_usd":0.1144},{"builder_id":1000160,"github_login":"scottymccormack","display_name":"scottymccormack","total_usd":0.0375},{"builder_id":1000071,"github_login":"erikwils","display_name":"erikwils","total_usd":0.0374}],"daily":[{"day":"2026-05-09T00:00:00.000Z","amount_usd":6.0537},{"day":"2026-05-10T00:00:00.000Z","amount_usd":32.16},{"day":"2026-05-11T00:00:00.000Z","amount_usd":0},{"day":"2026-05-12T00:00:00.000Z","amount_usd":240.19},{"day":"2026-05-13T00:00:00.000Z","amount_usd":0},{"day":"2026-05-14T00:00:00.000Z","amount_usd":0},{"day":"2026-05-15T00:00:00.000Z","amount_usd":0},{"day":"2026-05-16T00:00:00.000Z","amount_usd":0},{"day":"2026-05-17T00:00:00.000Z","amount_usd":0},{"day":"2026-05-18T00:00:00.000Z","amount_usd":0},{"day":"2026-05-19T00:00:00.000Z","amount_usd":0},{"day":"2026-05-20T00:00:00.000Z","amount_usd":0},{"day":"2026-05-21T00:00:00.000Z","amount_usd":0},{"day":"2026-05-22T00:00:00.000Z","amount_usd":0},{"day":"2026-05-23T00:00:00.000Z","amount_usd":0},{"day":"2026-05-24T00:00:00.000Z","amount_usd":0},{"day":"2026-05-25T00:00:00.000Z","amount_usd":0},{"day":"2026-05-26T00:00:00.000Z","amount_usd":0},{"day":"2026-05-27T00:00:00.000Z","amount_usd":0},{"day":"2026-05-28T00:00:00.000Z","amount_usd":0},{"day":"2026-05-29T00:00:00.000Z","amount_usd":0},{"day":"2026-05-30T00:00:00.000Z","amount_usd":0},{"day":"2026-05-31T00:00:00.000Z","amount_usd":0},{"day":"2026-06-01T00:00:00.000Z","amount_usd":0},{"day":"2026-06-02T00:00:00.000Z","amount_usd":0},{"day":"2026-06-03T00:00:00.000Z","amount_usd":239.4002},{"day":"2026-06-04T00:00:00.000Z","amount_usd":485.1995},{"day":"2026-06-05T00:00:00.000Z","amount_usd":430.9411},{"day":"2026-06-06T00:00:00.000Z","amount_usd":1478.0906},{"day":"2026-06-07T00:00:00.000Z","amount_usd":393.6456},{"day":"2026-06-08T00:00:00.000Z","amount_usd":241.4908},{"day":"2026-06-09T00:00:00.000Z","amount_usd":228.2682},{"day":"2026-06-10T00:00:00.000Z","amount_usd":31.468},{"day":"2026-06-11T00:00:00.000Z","amount_usd":918.6892},{"day":"2026-06-12T00:00:00.000Z","amount_usd":208.6502},{"day":"2026-06-13T00:00:00.000Z","amount_usd":1203.0003},{"day":"2026-06-14T00:00:00.000Z","amount_usd":391.6629},{"day":"2026-06-15T00:00:00.000Z","amount_usd":414.8282},{"day":"2026-06-16T00:00:00.000Z","amount_usd":333.9166},{"day":"2026-06-17T00:00:00.000Z","amount_usd":203.6305},{"day":"2026-06-18T00:00:00.000Z","amount_usd":254.6484},{"day":"2026-06-19T00:00:00.000Z","amount_usd":488.0607},{"day":"2026-06-20T00:00:00.000Z","amount_usd":1768.9432},{"day":"2026-06-21T00:00:00.000Z","amount_usd":3318.8646},{"day":"2026-06-22T00:00:00.000Z","amount_usd":307.7101},{"day":"2026-06-23T00:00:00.000Z","amount_usd":1001.533},{"day":"2026-06-24T00:00:00.000Z","amount_usd":627.5685},{"day":"2026-06-25T00:00:00.000Z","amount_usd":606.0735},{"day":"2026-06-26T00:00:00.000Z","amount_usd":552.4971},{"day":"2026-06-27T00:00:00.000Z","amount_usd":846.3213},{"day":"2026-06-28T00:00:00.000Z","amount_usd":17.5431},{"day":"2026-06-29T00:00:00.000Z","amount_usd":8.2741},{"day":"2026-06-30T00:00:00.000Z","amount_usd":169.3512},{"day":"2026-07-01T00:00:00.000Z","amount_usd":167.6376},{"day":"2026-07-02T00:00:00.000Z","amount_usd":727.9217},{"day":"2026-07-03T00:00:00.000Z","amount_usd":1943.9488},{"day":"2026-07-04T00:00:00.000Z","amount_usd":1094.3441},{"day":"2026-07-05T00:00:00.000Z","amount_usd":550.5321},{"day":"2026-07-06T00:00:00.000Z","amount_usd":57.0786},{"day":"2026-07-07T00:00:00.000Z","amount_usd":215.282},{"day":"2026-07-08T00:00:00.000Z","amount_usd":244.0418},{"day":"2026-07-09T00:00:00.000Z","amount_usd":524.6214},{"day":"2026-07-10T00:00:00.000Z","amount_usd":578.2538},{"day":"2026-07-11T00:00:00.000Z","amount_usd":0.4829},{"day":"2026-07-12T00:00:00.000Z","amount_usd":0},{"day":"2026-07-13T00:00:00.000Z","amount_usd":0},{"day":"2026-07-14T00:00:00.000Z","amount_usd":0},{"day":"2026-07-15T00:00:00.000Z","amount_usd":0.0921},{"day":"2026-07-16T00:00:00.000Z","amount_usd":0},{"day":"2026-07-17T00:00:00.000Z","amount_usd":0},{"day":"2026-07-18T00:00:00.000Z","amount_usd":0.0939},{"day":"2026-07-19T00:00:00.000Z","amount_usd":0},{"day":"2026-07-20T00:00:00.000Z","amount_usd":0},{"day":"2026-07-21T00:00:00.000Z","amount_usd":0},{"day":"2026-07-22T00:00:00.000Z","amount_usd":0},{"day":"2026-07-23T00:00:00.000Z","amount_usd":5.5229},{"day":"2026-07-24T00:00:00.000Z","amount_usd":2901.8959},{"day":"2026-07-25T00:00:00.000Z","amount_usd":51.5704},{"day":"2026-07-26T00:00:00.000Z","amount_usd":20.432},{"day":"2026-07-27T00:00:00.000Z","amount_usd":52.624},{"day":"2026-07-28T00:00:00.000Z","amount_usd":1139.1918},{"day":"2026-07-29T00:00:00.000Z","amount_usd":123.8112},{"day":"2026-07-30T00:00:00.000Z","amount_usd":131.2881},{"day":"2026-07-31T00:00:00.000Z","amount_usd":21.8349},{"day":"2026-08-01T00:00:00.000Z","amount_usd":0},{"day":"2026-08-02T00:00:00.000Z","amount_usd":0},{"day":"2026-08-03T00:00:00.000Z","amount_usd":0},{"day":"2026-08-04T00:00:00.000Z","amount_usd":0},{"day":"2026-08-05T00:00:00.000Z","amount_usd":255.652},{"day":"2026-08-06T00:00:00.000Z","amount_usd":135.4723},{"day":"2026-08-07T00:00:00.000Z","amount_usd":40.2176},{"day":"2026-08-08T00:00:00.000Z","amount_usd":204.6554},{"day":"2026-08-09T00:00:00.000Z","amount_usd":16.9081},{"day":"2026-08-10T00:00:00.000Z","amount_usd":2.0357},{"day":"2026-08-11T00:00:00.000Z","amount_usd":190.6169},{"day":"2026-08-12T00:00:00.000Z","amount_usd":270.2865},{"day":"2026-08-13T00:00:00.000Z","amount_usd":354.4474},{"day":"2026-08-14T00:00:00.000Z","amount_usd":138.1535},{"day":"2026-08-15T00:00:00.000Z","amount_usd":229.4178},{"day":"2026-08-16T00:00:00.000Z","amount_usd":219.6932},{"day":"2026-08-17T00:00:00.000Z","amount_usd":380.8994},{"day":"2026-08-18T00:00:00.000Z","amount_usd":450.2161},{"day":"2026-08-19T00:00:00.000Z","amount_usd":52.9249},{"day":"2026-08-20T00:00:00.000Z","amount_usd":20.9651},{"day":"2026-08-21T00:00:00.000Z","amount_usd":32.5102},{"day":"2026-08-22T00:00:00.000Z","amount_usd":62.1622},{"day":"2026-08-23T00:00:00.000Z","amount_usd":79.9698},{"day":"2026-08-24T00:00:00.000Z","amount_usd":15925.6228},{"day":"2026-08-25T00:00:00.000Z","amount_usd":1125.286},{"day":"2026-08-26T00:00:00.000Z","amount_usd":0},{"day":"2026-08-27T00:00:00.000Z","amount_usd":108.0461}],"daily_credits":[{"day":"2026-05-09T00:00:00.000Z","credits":122},{"day":"2026-05-10T00:00:00.000Z","credits":427},{"day":"2026-05-11T00:00:00.000Z","credits":787},{"day":"2026-05-12T00:00:00.000Z","credits":367},{"day":"2026-05-13T00:00:00.000Z","credits":115},{"day":"2026-05-14T00:00:00.000Z","credits":50},{"day":"2026-05-15T00:00:00.000Z","credits":0},{"day":"2026-05-16T00:00:00.000Z","credits":0},{"day":"2026-05-17T00:00:00.000Z","credits":120},{"day":"2026-05-18T00:00:00.000Z","credits":40},{"day":"2026-05-19T00:00:00.000Z","credits":0},{"day":"2026-05-20T00:00:00.000Z","credits":0},{"day":"2026-05-21T00:00:00.000Z","credits":0},{"day":"2026-05-22T00:00:00.000Z","credits":0},{"day":"2026-05-23T00:00:00.000Z","credits":0},{"day":"2026-05-24T00:00:00.000Z","credits":0},{"day":"2026-05-25T00:00:00.000Z","credits":0},{"day":"2026-05-26T00:00:00.000Z","credits":490},{"day":"2026-05-27T00:00:00.000Z","credits":403},{"day":"2026-05-28T00:00:00.000Z","credits":1108},{"day":"2026-05-29T00:00:00.000Z","credits":507},{"day":"2026-05-30T00:00:00.000Z","credits":590},{"day":"2026-05-31T00:00:00.000Z","credits":0},{"day":"2026-06-01T00:00:00.000Z","credits":71},{"day":"2026-06-02T00:00:00.000Z","credits":112},{"day":"2026-06-03T00:00:00.000Z","credits":252},{"day":"2026-06-04T00:00:00.000Z","credits":412},{"day":"2026-06-05T00:00:00.000Z","credits":360},{"day":"2026-06-06T00:00:00.000Z","credits":710},{"day":"2026-06-07T00:00:00.000Z","credits":63},{"day":"2026-06-08T00:00:00.000Z","credits":0},{"day":"2026-06-09T00:00:00.000Z","credits":0},{"day":"2026-06-10T00:00:00.000Z","credits":40},{"day":"2026-06-11T00:00:00.000Z","credits":0},{"day":"2026-06-12T00:00:00.000Z","credits":380},{"day":"2026-06-13T00:00:00.000Z","credits":1516},{"day":"2026-06-14T00:00:00.000Z","credits":1788},{"day":"2026-06-15T00:00:00.000Z","credits":458},{"day":"2026-06-16T00:00:00.000Z","credits":1465},{"day":"2026-06-17T00:00:00.000Z","credits":321},{"day":"2026-06-18T00:00:00.000Z","credits":1345},{"day":"2026-06-19T00:00:00.000Z","credits":1883},{"day":"2026-06-20T00:00:00.000Z","credits":4724},{"day":"2026-06-21T00:00:00.000Z","credits":1622},{"day":"2026-06-22T00:00:00.000Z","credits":492},{"day":"2026-06-23T00:00:00.000Z","credits":913},{"day":"2026-06-24T00:00:00.000Z","credits":978},{"day":"2026-06-25T00:00:00.000Z","credits":1348},{"day":"2026-06-26T00:00:00.000Z","credits":1409},{"day":"2026-06-27T00:00:00.000Z","credits":805},{"day":"2026-06-28T00:00:00.000Z","credits":710},{"day":"2026-06-29T00:00:00.000Z","credits":276},{"day":"2026-06-30T00:00:00.000Z","credits":559},{"day":"2026-07-01T00:00:00.000Z","credits":649},{"day":"2026-07-02T00:00:00.000Z","credits":2263},{"day":"2026-07-03T00:00:00.000Z","credits":6904},{"day":"2026-07-04T00:00:00.000Z","credits":3534},{"day":"2026-07-05T00:00:00.000Z","credits":2332},{"day":"2026-07-06T00:00:00.000Z","credits":116},{"day":"2026-07-07T00:00:00.000Z","credits":717},{"day":"2026-07-08T00:00:00.000Z","credits":710},{"day":"2026-07-09T00:00:00.000Z","credits":1112},{"day":"2026-07-10T00:00:00.000Z","credits":2230},{"day":"2026-07-11T00:00:00.000Z","credits":0},{"day":"2026-07-12T00:00:00.000Z","credits":499},{"day":"2026-07-13T00:00:00.000Z","credits":227},{"day":"2026-07-14T00:00:00.000Z","credits":1512},{"day":"2026-07-15T00:00:00.000Z","credits":1047},{"day":"2026-07-16T00:00:00.000Z","credits":371},{"day":"2026-07-17T00:00:00.000Z","credits":250},{"day":"2026-07-18T00:00:00.000Z","credits":91},{"day":"2026-07-19T00:00:00.000Z","credits":45},{"day":"2026-07-20T00:00:00.000Z","credits":0},{"day":"2026-07-21T00:00:00.000Z","credits":0},{"day":"2026-07-22T00:00:00.000Z","credits":6},{"day":"2026-07-23T00:00:00.000Z","credits":0},{"day":"2026-07-24T00:00:00.000Z","credits":404},{"day":"2026-07-25T00:00:00.000Z","credits":29},{"day":"2026-07-26T00:00:00.000Z","credits":44},{"day":"2026-07-27T00:00:00.000Z","credits":17},{"day":"2026-07-28T00:00:00.000Z","credits":1172},{"day":"2026-07-29T00:00:00.000Z","credits":270},{"day":"2026-07-30T00:00:00.000Z","credits":98},{"day":"2026-07-31T00:00:00.000Z","credits":0},{"day":"2026-08-01T00:00:00.000Z","credits":0},{"day":"2026-08-02T00:00:00.000Z","credits":0},{"day":"2026-08-03T00:00:00.000Z","credits":40},{"day":"2026-08-04T00:00:00.000Z","credits":131},{"day":"2026-08-05T00:00:00.000Z","credits":538},{"day":"2026-08-06T00:00:00.000Z","credits":429},{"day":"2026-08-07T00:00:00.000Z","credits":37},{"day":"2026-08-08T00:00:00.000Z","credits":460},{"day":"2026-08-09T00:00:00.000Z","credits":0},{"day":"2026-08-10T00:00:00.000Z","credits":0},{"day":"2026-08-11T00:00:00.000Z","credits":1073},{"day":"2026-08-12T00:00:00.000Z","credits":886},{"day":"2026-08-13T00:00:00.000Z","credits":757},{"day":"2026-08-14T00:00:00.000Z","credits":754},{"day":"2026-08-15T00:00:00.000Z","credits":404},{"day":"2026-08-16T00:00:00.000Z","credits":1137},{"day":"2026-08-17T00:00:00.000Z","credits":1102},{"day":"2026-08-18T00:00:00.000Z","credits":1498},{"day":"2026-08-19T00:00:00.000Z","credits":968},{"day":"2026-08-20T00:00:00.000Z","credits":152},{"day":"2026-08-21T00:00:00.000Z","credits":497},{"day":"2026-08-22T00:00:00.000Z","credits":317},{"day":"2026-08-23T00:00:00.000Z","credits":558},{"day":"2026-08-24T00:00:00.000Z","credits":200},{"day":"2026-08-25T00:00:00.000Z","credits":963},{"day":"2026-08-26T00:00:00.000Z","credits":32},{"day":"2026-08-27T00:00:00.000Z","credits":70}],"by_source":[{"source":"session:interactive","total_usd":35486.31},{"source":"session","total_usd":9947.95},{"source":"grader","total_usd":1320.5},{"source":"session:subagent","total_usd":1169.65},{"source":"manual","total_usd":283.29},{"source":"box-lifecycle","total_usd":83.52},{"source":"art_pipeline","total_usd":6.05},{"source":"box-storage","total_usd":0.06},{"source":"box-spinup","total_usd":0}],"by_tier":{"fresh_input_usd":374.25,"cache_read_usd":22557.96,"cache_write_usd":7239.34,"output_usd":6484.43,"tier_total_usd":36655.98,"cache_read_pct":61.54},"savings":{"by_system":[],"total_baseline_usd":0,"total_amount_usd":0,"total_saved_usd":0},"cost_calibration":{"by_kind":[{"kind":"(all)","median_cost_per_task":2.0868,"median_cost_per_credit":0.0521,"sample_size":467},{"kind":"bug","median_cost_per_task":1.9791,"median_cost_per_credit":0.0509,"sample_size":172},{"kind":"feature","median_cost_per_task":2.2908,"median_cost_per_credit":0.0493,"sample_size":172},{"kind":"infra","median_cost_per_task":2.1053,"median_cost_per_credit":0.0642,"sample_size":30},{"kind":"decision","median_cost_per_task":1.7938,"median_cost_per_credit":0.0557,"sample_size":25},{"kind":"cleanup","median_cost_per_task":1.6627,"median_cost_per_credit":0.1006,"sample_size":20},{"kind":"refactor","median_cost_per_task":3.6518,"median_cost_per_credit":0.0913,"sample_size":17},{"kind":"spike","median_cost_per_task":1.7982,"median_cost_per_credit":0.0439,"sample_size":12},{"kind":"verify","median_cost_per_task":0.911,"median_cost_per_credit":0.0257,"sample_size":12},{"kind":"learning-capture","median_cost_per_task":0.9948,"median_cost_per_credit":0.0417,"sample_size":6},{"kind":"blocker-resolution","median_cost_per_task":1.7223,"median_cost_per_credit":0.0453,"sample_size":1}],"overall":{"kind":"(all)","median_cost_per_task":2.0868,"median_cost_per_credit":0.0521,"sample_size":467}},"filtered_total_usd":48297.3354,"filter_options":{"sources":["art_pipeline","box-lifecycle","box-spinup","box-storage","grader","manual","session","session:interactive","session:subagent"],"categories":["api","art","compute","domain","infra"]},"applied_filters":{"source":null,"category":null,"days":null}}
|
|
1
|
+
{"total_usd":48297.3354,"total_value_credits":69790,"by_category":[{"category":"api","total_usd":47930.4111},{"category":"infra","total_usd":261.19},{"category":"compute","total_usd":83.5806},{"category":"domain","total_usd":11.16},{"category":"art","total_usd":10.9937}],"by_builder":[{"builder_id":3,"github_login":"example-owner","display_name":"example-owner","total_usd":30658.5341},{"builder_id":1000095,"github_login":"jaxri","display_name":"Percy Jackson","total_usd":13067.246},{"builder_id":1000025,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA","total_usd":3533.1156},{"builder_id":1000094,"github_login":"scootermack","display_name":"scootermack","total_usd":698.447},{"builder_id":null,"github_login":null,"display_name":null,"total_usd":278.4037},{"builder_id":1000003,"github_login":"LarsCode","display_name":"LarsCode","total_usd":38.2821},{"builder_id":1000070,"github_login":"kingaonline","display_name":"kingaonline","total_usd":21.8206},{"builder_id":1000051,"github_login":"MrTenkpro","display_name":"MrTenkpro","total_usd":1.0843},{"builder_id":1000027,"github_login":"willHermesLines","display_name":"willHermesLines","total_usd":0.2127},{"builder_id":1000057,"github_login":"largekristensen-svg","display_name":"largekristensen-svg","total_usd":0.1144},{"builder_id":1000160,"github_login":"scottymccormack","display_name":"scottymccormack","total_usd":0.0375},{"builder_id":1000071,"github_login":"erikwils","display_name":"erikwils","total_usd":0.0374}],"daily":[{"day":"2026-05-09T00:00:00.000Z","amount_usd":6.0537},{"day":"2026-05-10T00:00:00.000Z","amount_usd":32.16},{"day":"2026-05-11T00:00:00.000Z","amount_usd":0},{"day":"2026-05-12T00:00:00.000Z","amount_usd":240.19},{"day":"2026-05-13T00:00:00.000Z","amount_usd":0},{"day":"2026-05-14T00:00:00.000Z","amount_usd":0},{"day":"2026-05-15T00:00:00.000Z","amount_usd":0},{"day":"2026-05-16T00:00:00.000Z","amount_usd":0},{"day":"2026-05-17T00:00:00.000Z","amount_usd":0},{"day":"2026-05-18T00:00:00.000Z","amount_usd":0},{"day":"2026-05-19T00:00:00.000Z","amount_usd":0},{"day":"2026-05-20T00:00:00.000Z","amount_usd":0},{"day":"2026-05-21T00:00:00.000Z","amount_usd":0},{"day":"2026-05-22T00:00:00.000Z","amount_usd":0},{"day":"2026-05-23T00:00:00.000Z","amount_usd":0},{"day":"2026-05-24T00:00:00.000Z","amount_usd":0},{"day":"2026-05-25T00:00:00.000Z","amount_usd":0},{"day":"2026-05-26T00:00:00.000Z","amount_usd":0},{"day":"2026-05-27T00:00:00.000Z","amount_usd":0},{"day":"2026-05-28T00:00:00.000Z","amount_usd":0},{"day":"2026-05-29T00:00:00.000Z","amount_usd":0},{"day":"2026-05-30T00:00:00.000Z","amount_usd":0},{"day":"2026-05-31T00:00:00.000Z","amount_usd":0},{"day":"2026-06-01T00:00:00.000Z","amount_usd":0},{"day":"2026-06-02T00:00:00.000Z","amount_usd":0},{"day":"2026-06-03T00:00:00.000Z","amount_usd":239.4002},{"day":"2026-06-04T00:00:00.000Z","amount_usd":485.1995},{"day":"2026-06-05T00:00:00.000Z","amount_usd":430.9411},{"day":"2026-06-06T00:00:00.000Z","amount_usd":1478.0906},{"day":"2026-06-07T00:00:00.000Z","amount_usd":393.6456},{"day":"2026-06-08T00:00:00.000Z","amount_usd":241.4908},{"day":"2026-06-09T00:00:00.000Z","amount_usd":228.2682},{"day":"2026-06-10T00:00:00.000Z","amount_usd":31.468},{"day":"2026-06-11T00:00:00.000Z","amount_usd":918.6892},{"day":"2026-06-12T00:00:00.000Z","amount_usd":208.6502},{"day":"2026-06-13T00:00:00.000Z","amount_usd":1203.0003},{"day":"2026-06-14T00:00:00.000Z","amount_usd":391.6629},{"day":"2026-06-15T00:00:00.000Z","amount_usd":414.8282},{"day":"2026-06-16T00:00:00.000Z","amount_usd":333.9166},{"day":"2026-06-17T00:00:00.000Z","amount_usd":203.6305},{"day":"2026-06-18T00:00:00.000Z","amount_usd":254.6484},{"day":"2026-06-19T00:00:00.000Z","amount_usd":488.0607},{"day":"2026-06-20T00:00:00.000Z","amount_usd":1768.9432},{"day":"2026-06-21T00:00:00.000Z","amount_usd":3318.8646},{"day":"2026-06-22T00:00:00.000Z","amount_usd":307.7101},{"day":"2026-06-23T00:00:00.000Z","amount_usd":1001.533},{"day":"2026-06-24T00:00:00.000Z","amount_usd":627.5685},{"day":"2026-06-25T00:00:00.000Z","amount_usd":606.0735},{"day":"2026-06-26T00:00:00.000Z","amount_usd":552.4971},{"day":"2026-06-27T00:00:00.000Z","amount_usd":846.3213},{"day":"2026-06-28T00:00:00.000Z","amount_usd":17.5431},{"day":"2026-06-29T00:00:00.000Z","amount_usd":8.2741},{"day":"2026-06-30T00:00:00.000Z","amount_usd":169.3512},{"day":"2026-07-01T00:00:00.000Z","amount_usd":167.6376},{"day":"2026-07-02T00:00:00.000Z","amount_usd":727.9217},{"day":"2026-07-03T00:00:00.000Z","amount_usd":1943.9488},{"day":"2026-07-04T00:00:00.000Z","amount_usd":1094.3441},{"day":"2026-07-05T00:00:00.000Z","amount_usd":550.5321},{"day":"2026-07-06T00:00:00.000Z","amount_usd":57.0786},{"day":"2026-07-07T00:00:00.000Z","amount_usd":215.282},{"day":"2026-07-08T00:00:00.000Z","amount_usd":244.0418},{"day":"2026-07-09T00:00:00.000Z","amount_usd":524.6214},{"day":"2026-07-10T00:00:00.000Z","amount_usd":578.2538},{"day":"2026-07-11T00:00:00.000Z","amount_usd":0.4829},{"day":"2026-07-12T00:00:00.000Z","amount_usd":0},{"day":"2026-07-13T00:00:00.000Z","amount_usd":0},{"day":"2026-07-14T00:00:00.000Z","amount_usd":0},{"day":"2026-07-15T00:00:00.000Z","amount_usd":0.0921},{"day":"2026-07-16T00:00:00.000Z","amount_usd":0},{"day":"2026-07-17T00:00:00.000Z","amount_usd":0},{"day":"2026-07-18T00:00:00.000Z","amount_usd":0.0939},{"day":"2026-07-19T00:00:00.000Z","amount_usd":0},{"day":"2026-07-20T00:00:00.000Z","amount_usd":0},{"day":"2026-07-21T00:00:00.000Z","amount_usd":0},{"day":"2026-07-22T00:00:00.000Z","amount_usd":0},{"day":"2026-07-23T00:00:00.000Z","amount_usd":5.5229},{"day":"2026-07-24T00:00:00.000Z","amount_usd":2901.8959},{"day":"2026-07-25T00:00:00.000Z","amount_usd":51.5704},{"day":"2026-07-26T00:00:00.000Z","amount_usd":20.432},{"day":"2026-07-27T00:00:00.000Z","amount_usd":52.624},{"day":"2026-07-28T00:00:00.000Z","amount_usd":1139.1918},{"day":"2026-07-29T00:00:00.000Z","amount_usd":123.8112},{"day":"2026-07-30T00:00:00.000Z","amount_usd":131.2881},{"day":"2026-07-31T00:00:00.000Z","amount_usd":21.8349},{"day":"2026-08-01T00:00:00.000Z","amount_usd":0},{"day":"2026-08-02T00:00:00.000Z","amount_usd":0},{"day":"2026-08-03T00:00:00.000Z","amount_usd":0},{"day":"2026-08-04T00:00:00.000Z","amount_usd":0},{"day":"2026-08-05T00:00:00.000Z","amount_usd":255.652},{"day":"2026-08-06T00:00:00.000Z","amount_usd":135.4723},{"day":"2026-08-07T00:00:00.000Z","amount_usd":40.2176},{"day":"2026-08-08T00:00:00.000Z","amount_usd":204.6554},{"day":"2026-08-09T00:00:00.000Z","amount_usd":16.9081},{"day":"2026-08-10T00:00:00.000Z","amount_usd":2.0357},{"day":"2026-08-11T00:00:00.000Z","amount_usd":190.6169},{"day":"2026-08-12T00:00:00.000Z","amount_usd":270.2865},{"day":"2026-08-13T00:00:00.000Z","amount_usd":354.4474},{"day":"2026-08-14T00:00:00.000Z","amount_usd":138.1535},{"day":"2026-08-15T00:00:00.000Z","amount_usd":229.4178},{"day":"2026-08-16T00:00:00.000Z","amount_usd":219.6932},{"day":"2026-08-17T00:00:00.000Z","amount_usd":380.8994},{"day":"2026-08-18T00:00:00.000Z","amount_usd":450.2161},{"day":"2026-08-19T00:00:00.000Z","amount_usd":52.9249},{"day":"2026-08-20T00:00:00.000Z","amount_usd":20.9651},{"day":"2026-08-21T00:00:00.000Z","amount_usd":32.5102},{"day":"2026-08-22T00:00:00.000Z","amount_usd":62.1622},{"day":"2026-08-23T00:00:00.000Z","amount_usd":79.9698},{"day":"2026-08-24T00:00:00.000Z","amount_usd":15925.6228},{"day":"2026-08-25T00:00:00.000Z","amount_usd":1125.286},{"day":"2026-08-26T00:00:00.000Z","amount_usd":0},{"day":"2026-08-27T00:00:00.000Z","amount_usd":108.0461}],"daily_credits":[{"day":"2026-05-09T00:00:00.000Z","credits":122},{"day":"2026-05-10T00:00:00.000Z","credits":427},{"day":"2026-05-11T00:00:00.000Z","credits":787},{"day":"2026-05-12T00:00:00.000Z","credits":367},{"day":"2026-05-13T00:00:00.000Z","credits":115},{"day":"2026-05-14T00:00:00.000Z","credits":50},{"day":"2026-05-15T00:00:00.000Z","credits":0},{"day":"2026-05-16T00:00:00.000Z","credits":0},{"day":"2026-05-17T00:00:00.000Z","credits":120},{"day":"2026-05-18T00:00:00.000Z","credits":40},{"day":"2026-05-19T00:00:00.000Z","credits":0},{"day":"2026-05-20T00:00:00.000Z","credits":0},{"day":"2026-05-21T00:00:00.000Z","credits":0},{"day":"2026-05-22T00:00:00.000Z","credits":0},{"day":"2026-05-23T00:00:00.000Z","credits":0},{"day":"2026-05-24T00:00:00.000Z","credits":0},{"day":"2026-05-25T00:00:00.000Z","credits":0},{"day":"2026-05-26T00:00:00.000Z","credits":490},{"day":"2026-05-27T00:00:00.000Z","credits":403},{"day":"2026-05-28T00:00:00.000Z","credits":1108},{"day":"2026-05-29T00:00:00.000Z","credits":507},{"day":"2026-05-30T00:00:00.000Z","credits":590},{"day":"2026-05-31T00:00:00.000Z","credits":0},{"day":"2026-06-01T00:00:00.000Z","credits":71},{"day":"2026-06-02T00:00:00.000Z","credits":112},{"day":"2026-06-03T00:00:00.000Z","credits":252},{"day":"2026-06-04T00:00:00.000Z","credits":412},{"day":"2026-06-05T00:00:00.000Z","credits":360},{"day":"2026-06-06T00:00:00.000Z","credits":710},{"day":"2026-06-07T00:00:00.000Z","credits":63},{"day":"2026-06-08T00:00:00.000Z","credits":0},{"day":"2026-06-09T00:00:00.000Z","credits":0},{"day":"2026-06-10T00:00:00.000Z","credits":40},{"day":"2026-06-11T00:00:00.000Z","credits":0},{"day":"2026-06-12T00:00:00.000Z","credits":380},{"day":"2026-06-13T00:00:00.000Z","credits":1516},{"day":"2026-06-14T00:00:00.000Z","credits":1788},{"day":"2026-06-15T00:00:00.000Z","credits":458},{"day":"2026-06-16T00:00:00.000Z","credits":1465},{"day":"2026-06-17T00:00:00.000Z","credits":321},{"day":"2026-06-18T00:00:00.000Z","credits":1345},{"day":"2026-06-19T00:00:00.000Z","credits":1883},{"day":"2026-06-20T00:00:00.000Z","credits":4724},{"day":"2026-06-21T00:00:00.000Z","credits":1622},{"day":"2026-06-22T00:00:00.000Z","credits":492},{"day":"2026-06-23T00:00:00.000Z","credits":913},{"day":"2026-06-24T00:00:00.000Z","credits":978},{"day":"2026-06-25T00:00:00.000Z","credits":1348},{"day":"2026-06-26T00:00:00.000Z","credits":1409},{"day":"2026-06-27T00:00:00.000Z","credits":805},{"day":"2026-06-28T00:00:00.000Z","credits":710},{"day":"2026-06-29T00:00:00.000Z","credits":276},{"day":"2026-06-30T00:00:00.000Z","credits":559},{"day":"2026-07-01T00:00:00.000Z","credits":649},{"day":"2026-07-02T00:00:00.000Z","credits":2263},{"day":"2026-07-03T00:00:00.000Z","credits":6904},{"day":"2026-07-04T00:00:00.000Z","credits":3534},{"day":"2026-07-05T00:00:00.000Z","credits":2332},{"day":"2026-07-06T00:00:00.000Z","credits":116},{"day":"2026-07-07T00:00:00.000Z","credits":717},{"day":"2026-07-08T00:00:00.000Z","credits":710},{"day":"2026-07-09T00:00:00.000Z","credits":1112},{"day":"2026-07-10T00:00:00.000Z","credits":2230},{"day":"2026-07-11T00:00:00.000Z","credits":0},{"day":"2026-07-12T00:00:00.000Z","credits":499},{"day":"2026-07-13T00:00:00.000Z","credits":227},{"day":"2026-07-14T00:00:00.000Z","credits":1512},{"day":"2026-07-15T00:00:00.000Z","credits":1047},{"day":"2026-07-16T00:00:00.000Z","credits":371},{"day":"2026-07-17T00:00:00.000Z","credits":250},{"day":"2026-07-18T00:00:00.000Z","credits":91},{"day":"2026-07-19T00:00:00.000Z","credits":45},{"day":"2026-07-20T00:00:00.000Z","credits":0},{"day":"2026-07-21T00:00:00.000Z","credits":0},{"day":"2026-07-22T00:00:00.000Z","credits":6},{"day":"2026-07-23T00:00:00.000Z","credits":0},{"day":"2026-07-24T00:00:00.000Z","credits":404},{"day":"2026-07-25T00:00:00.000Z","credits":29},{"day":"2026-07-26T00:00:00.000Z","credits":44},{"day":"2026-07-27T00:00:00.000Z","credits":17},{"day":"2026-07-28T00:00:00.000Z","credits":1172},{"day":"2026-07-29T00:00:00.000Z","credits":270},{"day":"2026-07-30T00:00:00.000Z","credits":98},{"day":"2026-07-31T00:00:00.000Z","credits":0},{"day":"2026-08-01T00:00:00.000Z","credits":0},{"day":"2026-08-02T00:00:00.000Z","credits":0},{"day":"2026-08-03T00:00:00.000Z","credits":40},{"day":"2026-08-04T00:00:00.000Z","credits":131},{"day":"2026-08-05T00:00:00.000Z","credits":538},{"day":"2026-08-06T00:00:00.000Z","credits":429},{"day":"2026-08-07T00:00:00.000Z","credits":37},{"day":"2026-08-08T00:00:00.000Z","credits":460},{"day":"2026-08-09T00:00:00.000Z","credits":0},{"day":"2026-08-10T00:00:00.000Z","credits":0},{"day":"2026-08-11T00:00:00.000Z","credits":1073},{"day":"2026-08-12T00:00:00.000Z","credits":886},{"day":"2026-08-13T00:00:00.000Z","credits":757},{"day":"2026-08-14T00:00:00.000Z","credits":754},{"day":"2026-08-15T00:00:00.000Z","credits":404},{"day":"2026-08-16T00:00:00.000Z","credits":1137},{"day":"2026-08-17T00:00:00.000Z","credits":1102},{"day":"2026-08-18T00:00:00.000Z","credits":1498},{"day":"2026-08-19T00:00:00.000Z","credits":968},{"day":"2026-08-20T00:00:00.000Z","credits":152},{"day":"2026-08-21T00:00:00.000Z","credits":497},{"day":"2026-08-22T00:00:00.000Z","credits":317},{"day":"2026-08-23T00:00:00.000Z","credits":558},{"day":"2026-08-24T00:00:00.000Z","credits":200},{"day":"2026-08-25T00:00:00.000Z","credits":963},{"day":"2026-08-26T00:00:00.000Z","credits":32},{"day":"2026-08-27T00:00:00.000Z","credits":70}],"by_source":[{"source":"session:interactive","total_usd":35486.31},{"source":"session","total_usd":9947.95},{"source":"grader","total_usd":1320.5},{"source":"session:subagent","total_usd":1169.65},{"source":"manual","total_usd":283.29},{"source":"box-lifecycle","total_usd":83.52},{"source":"art_pipeline","total_usd":6.05},{"source":"box-storage","total_usd":0.06},{"source":"box-spinup","total_usd":0}],"by_tier":{"fresh_input_usd":374.25,"cache_read_usd":22557.96,"cache_write_usd":7239.34,"output_usd":6484.43,"tier_total_usd":36655.98,"cache_read_pct":61.54},"savings":{"by_system":[],"total_baseline_usd":0,"total_amount_usd":0,"total_saved_usd":0},"cost_calibration":{"by_kind":[{"kind":"(all)","median_cost_per_task":2.0868,"median_cost_per_credit":0.0521,"sample_size":467},{"kind":"bug","median_cost_per_task":1.9791,"median_cost_per_credit":0.0509,"sample_size":172},{"kind":"feature","median_cost_per_task":2.2908,"median_cost_per_credit":0.0493,"sample_size":172},{"kind":"infra","median_cost_per_task":2.1053,"median_cost_per_credit":0.0642,"sample_size":30},{"kind":"decision","median_cost_per_task":1.7938,"median_cost_per_credit":0.0557,"sample_size":25},{"kind":"cleanup","median_cost_per_task":1.6627,"median_cost_per_credit":0.1006,"sample_size":20},{"kind":"refactor","median_cost_per_task":3.6518,"median_cost_per_credit":0.0913,"sample_size":17},{"kind":"spike","median_cost_per_task":1.7982,"median_cost_per_credit":0.0439,"sample_size":12},{"kind":"verify","median_cost_per_task":0.911,"median_cost_per_credit":0.0257,"sample_size":12},{"kind":"learning-capture","median_cost_per_task":0.9948,"median_cost_per_credit":0.0417,"sample_size":6},{"kind":"blocker-resolution","median_cost_per_task":1.7223,"median_cost_per_credit":0.0453,"sample_size":1}],"overall":{"kind":"(all)","median_cost_per_task":2.0868,"median_cost_per_credit":0.0521,"sample_size":467}},"filtered_total_usd":48297.3354,"filter_options":{"sources":["art_pipeline","box-lifecycle","box-spinup","box-storage","grader","manual","session","session:interactive","session:subagent"],"categories":["api","art","compute","domain","infra"]},"applied_filters":{"source":null,"category":null,"days":null}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"_":"The hub's catalog (task 1003345): the landing's featured.json plus Tidewater, an all-null row nobody owns — the card-floor state opens ITS card, because Demo is owned by the signed-in stub (provisioning-instances.json) and an owned orb's plain click opens the manage view, never the card. Served under the name \"featured\" by projects.states.json's stub.fixtures alias; the landing keeps featured.json. Every row carries the `state` + `orb` pair feedShapeFor() derives (projects-feed.js): the hub is FAIL-CLOSED on a render-type it does not recognise, so a row without one is dropped from the sky, the table and the count — pinned by tests/hub_map_orb_states.mjs (task 1003838).","projects":[{"origin":"https://
|
|
1
|
+
{"_":"The hub's catalog (task 1003345): the landing's featured.json plus Tidewater, an all-null row nobody owns — the card-floor state opens ITS card, because Demo is owned by the signed-in stub (provisioning-instances.json) and an owned orb's plain click opens the manage view, never the card. Served under the name \"featured\" by projects.states.json's stub.fixtures alias; the landing keeps featured.json. Every row carries the `state` + `orb` pair feedShapeFor() derives (projects-feed.js): the hub is FAIL-CLOSED on a render-type it does not recognise, so a row without one is dropped from the sky, the table and the count — pinned by tests/hub_map_orb_states.mjs (task 1003838).","projects":[{"origin":"https://example.com","name":"Example World","tagline":"A singular shop, and a broader videogame in a persistent ancient Greek world that collides with modern day commerce & products.","art_url":"/assets/world/r2-chrome-blob-one.jpg","type":"game","template":"bead-wash","planet_template":null,"planet_accent":null,"card_backdrop":"nebula","created_at":"2026-07-15T22:12:57.732Z","builders":11,"tags":["art-pipeline","character-anim","demo","game"],"owner":"example-owner","owner_avatar":"https://avatars.githubusercontent.com/u/283020391?v=4","faces":["https://avatars.githubusercontent.com/u/283020391?v=4","https://avatars.githubusercontent.com/u/64553469?v=4","https://avatars.githubusercontent.com/u/290184380?v=4","https://avatars.githubusercontent.com/u/295990394?v=4","https://avatars.githubusercontent.com/u/35337514?v=4"],"shipped_30d":0,"shipped_30d_capped":false,"hall_origin":"https://builders.example.com","state":"public","orb":"planet"},{"origin":"https://demo.cloudbongos.com","name":"Demo","tagline":"A live demo instance on Cloud Bongos.","art_url":null,"type":null,"template":"pair-gold-wash","planet_template":"pair-obsidian-tint","planet_accent":"sea","created_at":"2026-07-14T19:16:38.160Z","builders":null,"tags":null,"owner":null,"owner_avatar":null,"faces":null,"shipped_30d":null,"shipped_30d_capped":null,"hall_origin":null,"state":"public","orb":"planet"},{"origin":"https://emersonian-circles.cloudbongos.com","name":"Emersonian Circles","tagline":"An independent project built on Cloud Bongos.","art_url":null,"type":null,"template":null,"planet_template":null,"planet_accent":null,"created_at":"2026-07-25T02:21:55.641Z","builders":1,"tags":[],"owner":"example-owner","owner_avatar":"https://avatars.githubusercontent.com/u/283020391?v=4","faces":[],"shipped_30d":30,"shipped_30d_capped":true,"hall_origin":null,"state":"public","orb":"planet"},{"origin":"https://tidewater.cloudbongos.com","name":"Tidewater","tagline":"A project that has declared nothing yet.","art_url":null,"type":null,"template":null,"planet_template":null,"planet_accent":null,"created_at":"2026-07-20T08:00:00.000Z","builders":null,"tags":null,"owner":null,"owner_avatar":null,"faces":null,"shipped_30d":null,"shipped_30d_capped":null,"hall_origin":null,"state":"public","orb":"planet"}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"projects":[{"origin":"https://
|
|
1
|
+
{"projects":[{"origin":"https://example.com","name":"Example World","tagline":"A singular shop, and a broader videogame in a persistent ancient Greek world that collides with modern day commerce & products.","art_url":"/assets/world/r2-chrome-blob-one.jpg","type":"game","template":"bead-wash","planet_template":null,"planet_accent":null,"created_at":"2026-07-15T22:12:57.732Z","builders":11,"tags":["art-pipeline","character-anim","demo","game"],"owner":"example-owner","owner_avatar":"https://avatars.githubusercontent.com/u/283020391?v=4","faces":["https://avatars.githubusercontent.com/u/283020391?v=4","https://avatars.githubusercontent.com/u/64553469?v=4","https://avatars.githubusercontent.com/u/290184380?v=4","https://avatars.githubusercontent.com/u/295990394?v=4","https://avatars.githubusercontent.com/u/35337514?v=4"],"shipped_30d":0,"shipped_30d_capped":false,"hall_origin":"https://builders.example.com","state":"public","orb":"planet"},{"origin":"https://demo.cloudbongos.com","name":"Demo","tagline":"A live demo instance on Cloud Bongos.","art_url":null,"type":null,"template":"pair-gold-wash","planet_template":"pair-obsidian-tint","planet_accent":"sea","created_at":"2026-07-14T19:16:38.160Z","builders":null,"tags":null,"owner":null,"owner_avatar":null,"faces":null,"shipped_30d":null,"shipped_30d_capped":null,"hall_origin":null,"state":"public","orb":"planet"},{"origin":"https://emersonian-circles.cloudbongos.com","name":"Emersonian Circles","tagline":"An independent project built on Cloud Bongos.","art_url":null,"type":null,"template":null,"planet_template":null,"planet_accent":null,"created_at":"2026-07-25T02:21:55.641Z","builders":1,"tags":[],"owner":"example-owner","owner_avatar":"https://avatars.githubusercontent.com/u/283020391?v=4","faces":[],"shipped_30d":30,"shipped_30d_capped":true,"hall_origin":null,"state":"public","orb":"planet"}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"leaderboard":[{"id":"3","github_login":"
|
|
1
|
+
{"leaderboard":[{"id":"3","github_login":"example-owner","display_name":"example-owner","avatar_url":"https://avatars.githubusercontent.com/u/283020391?v=4","total_credits":44562,"rank":"archon","achievements":["first-ship","first-claim","first-parallel-claim","streak-3","streak-7"],"tokens_used":"46073057806"},{"id":"1000095","github_login":"jaxri","display_name":"Percy Jackson","avatar_url":"https://avatars.githubusercontent.com/u/64553469?v=4","total_credits":13358,"rank":"archon","achievements":["first-ship","first-claim","first-parallel-claim","streak-3","streak-7"],"tokens_used":"12496320619"},{"id":"1000025","github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA","avatar_url":"https://avatars.githubusercontent.com/u/290184380?v=4","total_credits":3316,"rank":"archon","achievements":["first-ship","first-claim","first-parallel-claim","streak-3","streak-7"],"tokens_used":"3869488590"},{"id":"1000094","github_login":"scootermack","display_name":"scootermack","avatar_url":"https://avatars.githubusercontent.com/u/295990394?v=4","total_credits":2479,"rank":"archon","achievements":["first-ship","first-claim","first-parallel-claim","streak-3","art-pipeline-shipper"],"tokens_used":"1279046526"},{"id":"1000003","github_login":"LarsCode","display_name":"LarsCode","avatar_url":"https://avatars.githubusercontent.com/u/35337514?v=4","total_credits":44,"rank":"xenos","achievements":["first-ship","first-claim","art-pipeline-shipper"],"tokens_used":"25527381"},{"id":"1000070","github_login":"kingaonline","display_name":"kingaonline","avatar_url":"https://avatars.githubusercontent.com/u/293641659?v=4","total_credits":36,"rank":"thetes","achievements":["first-ship","first-claim","art-pipeline-shipper","breaking-the-100c-bar"],"tokens_used":"66829858"},{"id":"1000027","github_login":"willHermesLines","display_name":"willHermesLines","avatar_url":"https://avatars.githubusercontent.com/u/267458743?v=4","total_credits":12,"rank":"metic","achievements":["first-ship","first-claim"],"tokens_used":"0"},{"id":"1000071","github_login":"erikwils","display_name":"erikwils","avatar_url":"https://avatars.githubusercontent.com/u/51457175?v=4","total_credits":11,"rank":"xenos","achievements":["first-claim"],"tokens_used":"0"},{"id":"1000160","github_login":"scottymccormack","display_name":"scottymccormack","avatar_url":"https://avatars.githubusercontent.com/u/196979607?v=4","total_credits":1,"rank":"xenos","achievements":["first-claim"],"tokens_used":"0"},{"id":"1000050","github_login":"Svensson-CMD","display_name":"Svensson-CMD","avatar_url":"https://avatars.githubusercontent.com/u/290959655?v=4","total_credits":0,"rank":"xenos","achievements":[],"tokens_used":"0"},{"id":"1000051","github_login":"MrTenkpro","display_name":"MrTenkpro","avatar_url":"https://avatars.githubusercontent.com/u/291558470?v=4","total_credits":0,"rank":"xenos","achievements":[],"tokens_used":"0"},{"id":"1000057","github_login":"largekristensen-svg","display_name":"largekristensen-svg","avatar_url":"https://avatars.githubusercontent.com/u/292408002?v=4","total_credits":0,"rank":"xenos","achievements":[],"tokens_used":"0"},{"id":"1","github_login":"bfg-system","display_name":"The BFG (system)","avatar_url":null,"total_credits":0,"rank":"xenos","achievements":[],"tokens_used":"0"},{"id":"2","github_login":"discord-bot-system","display_name":"Discord Bot (system)","avatar_url":null,"total_credits":0,"rank":"xenos","achievements":[],"tokens_used":"0"},{"id":"1000128","github_login":"mcip-labs","display_name":"mcip-labs","avatar_url":"https://avatars.githubusercontent.com/u/143163903?v=4","total_credits":0,"rank":"xenos","achievements":[],"tokens_used":"0"}],"page":{"limit":100,"offset":0}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"owned":[],"building":[{"client_id":"otb","name":"
|
|
1
|
+
{"owned":[],"building":[{"client_id":"otb","name":"Example World","origin":"https://example.com","hall_origin":"https://builders.example.com","membership_kind":"member","joined_at":"2026-07-20T10:00:00.000Z","last_active":"2026-08-27T18:00:00.000Z"},{"client_id":"emersonian","name":"Emersonian Circles","origin":"https://emersonian-circles.cloudbongos.com","hall_origin":null,"membership_kind":"member","joined_at":"2026-07-26T10:00:00.000Z","last_active":"2026-08-20T18:00:00.000Z"}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"progress":[{"version_id":"BONGOS-V1","name":"Cloud Bongos — platform (V1)","status":"building","shipped_count":"1111","total_count":"1561","shipped_weight":"2572","total_weight":"3537","done_when":"Bongos App V1 ships the Cloud Bongos desktop feedback tool: a Zoom-style floating toolbar that captures narrated voice + ~1/sec snapshots and freehand markup over any on-screen target, synthesizes them into one cheap, model-agnostic prompt, and hands it to Claude Desktop and Claude Code. The Dev Box desktop app is absorbed as a module of the bongos app. This is the inaugural version of the bongos line, the successor the GDS migrates into after GDS-V4. Visual element-select is deferred to V2.","criteria_count":184,"lifecycle_completed_count":0,"lifecycle_confirmed_count":0,"lifecycle_shipped_count":1111,"percent_complete":73},{"version_id":"CB-V1","name":"Cloud Bongos — Customer-0 dogfood","status":"building","shipped_count":"58","total_count":"88","shipped_weight":"169","total_weight":"223","done_when":"Cloud Bongos builds itself: real tasks ship on the customer-0 instance (claim -> grade -> ship, credits awarded), carrying no game code.","criteria_count":18,"lifecycle_completed_count":0,"lifecycle_confirmed_count":3,"lifecycle_shipped_count":55,"percent_complete":76},{"version_id":"GDS-V3","name":"PMS V3 — multi-builder readiness + per-builder credentials","status":"shipped","shipped_count":"496","total_count":"501","shipped_weight":"1141","total_weight":"1156","done_when":"Delivers multi-builder readiness: clone-and-ship onboarding under two hours, three server-enforced ranks, per-builder credentials/cost/authorship, an Opus grader gating quality, parallel-safe claims and merges, a propose-and-ratify cadence, and production-grade security with red-team bounties.","criteria_count":9,"lifecycle_completed_count":0,"lifecycle_confirmed_count":0,"lifecycle_shipped_count":496,"percent_complete":99},{"version_id":"GDS-V4","name":"GDS V4 — recall, resumable pipeline, honest measurement","status":"shipped","shipped_count":"367","total_count":"367","shipped_weight":"861","total_weight":"861","done_when":"When this is finished, a builder's session answers \"have we done this before?\" in one call instead of an afternoon — project knowledge (markdown and database prose alike) is searchable in one rank-scoped query and pushed into sessions at claim time; a failed ship is one command from resume instead of a consumed claim; the recurring tool-error classes (wrong-tree writes, HTML 404s, phantom smoke servers) are engineered away; the BFG's measurements reflect real friction so the improvement is provable against the 2026-06-12 baseline; and the city watches itself on one pane of glass. And the build system itself becomes Medusa — a standalone, configurable, self-hostable, AGPL-licensed, non-profit, AI-first platform decoupled from any one project, with
|
|
1
|
+
{"progress":[{"version_id":"BONGOS-V1","name":"Cloud Bongos — platform (V1)","status":"building","shipped_count":"1111","total_count":"1561","shipped_weight":"2572","total_weight":"3537","done_when":"Bongos App V1 ships the Cloud Bongos desktop feedback tool: a Zoom-style floating toolbar that captures narrated voice + ~1/sec snapshots and freehand markup over any on-screen target, synthesizes them into one cheap, model-agnostic prompt, and hands it to Claude Desktop and Claude Code. The Dev Box desktop app is absorbed as a module of the bongos app. This is the inaugural version of the bongos line, the successor the GDS migrates into after GDS-V4. Visual element-select is deferred to V2.","criteria_count":184,"lifecycle_completed_count":0,"lifecycle_confirmed_count":0,"lifecycle_shipped_count":1111,"percent_complete":73},{"version_id":"CB-V1","name":"Cloud Bongos — Customer-0 dogfood","status":"building","shipped_count":"58","total_count":"88","shipped_weight":"169","total_weight":"223","done_when":"Cloud Bongos builds itself: real tasks ship on the customer-0 instance (claim -> grade -> ship, credits awarded), carrying no game code.","criteria_count":18,"lifecycle_completed_count":0,"lifecycle_confirmed_count":3,"lifecycle_shipped_count":55,"percent_complete":76},{"version_id":"GDS-V3","name":"PMS V3 — multi-builder readiness + per-builder credentials","status":"shipped","shipped_count":"496","total_count":"501","shipped_weight":"1141","total_weight":"1156","done_when":"Delivers multi-builder readiness: clone-and-ship onboarding under two hours, three server-enforced ranks, per-builder credentials/cost/authorship, an Opus grader gating quality, parallel-safe claims and merges, a propose-and-ratify cadence, and production-grade security with red-team bounties.","criteria_count":9,"lifecycle_completed_count":0,"lifecycle_confirmed_count":0,"lifecycle_shipped_count":496,"percent_complete":99},{"version_id":"GDS-V4","name":"GDS V4 — recall, resumable pipeline, honest measurement","status":"shipped","shipped_count":"367","total_count":"367","shipped_weight":"861","total_weight":"861","done_when":"When this is finished, a builder's session answers \"have we done this before?\" in one call instead of an afternoon — project knowledge (markdown and database prose alike) is searchable in one rank-scoped query and pushed into sessions at claim time; a failed ship is one command from resume instead of a consumed claim; the recurring tool-error classes (wrong-tree writes, HTML 404s, phantom smoke servers) are engineered away; the BFG's measurements reflect real friction so the improvement is provable against the 2026-06-12 baseline; and the city watches itself on one pane of glass. And the build system itself becomes Medusa — a standalone, configurable, self-hostable, AGPL-licensed, non-profit, AI-first platform decoupled from any one project, with Example running as its first instance.","criteria_count":10,"lifecycle_completed_count":0,"lifecycle_confirmed_count":0,"lifecycle_shipped_count":367,"percent_complete":100},{"version_id":"PMS-V1","name":"PMS V1 — project management system, parallel internal track","status":"shipped","shipped_count":"8","total_count":"8","shipped_weight":"36","total_weight":"36","done_when":"Builders auth via GitHub. Slash commands claim/ship tasks atomically. Backlog migrated. Public status page live.","criteria_count":0,"lifecycle_completed_count":0,"lifecycle_confirmed_count":0,"lifecycle_shipped_count":8,"percent_complete":100},{"version_id":"PMS-V2","name":"PMS V2 — themed /builders UI + gamification","status":"shipped","shipped_count":"67","total_count":"67","shipped_weight":"279","total_weight":"279","done_when":"When this is finished, the citizens building Example will keep their works on a themed ledger of their own — naming sessions, claiming tasks in batches, earning laurels for milestones, and seeing each version's scope painted in plain words.","criteria_count":7,"lifecycle_completed_count":0,"lifecycle_confirmed_count":0,"lifecycle_shipped_count":67,"percent_complete":100}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"tasks":[{"id":"1003297","title":"Landing composition round: three versions of the approved world","value_summary":"The front page of the new chrome look is chosen: three full-page versions were built and reviewed, and the owner picked the one closest to the reference image (the two doors floating inside a big chrome blob that breathes slowly, real numbers hung off it) and decided light mode will be rebuilt properly with the chrome on a pale ground; the build can start.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T17:59:20.501Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":132,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003281","title":"See what you did, by role — including every idea you filed and what became of it","value_summary":"Your profile now shows what you did craft by craft — and every idea you ever filed, with what became of it: the task it became, who merged it, why it was discarded, or that it is still open.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T16:39:39.736Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":100,"actual_minutes":44,"github_login":"scootermack","display_name":"scootermack"},{"id":"1002505","title":"ship.js still writes no session record when the session is rooted in another project dir (the residual 1002475 leak)","value_summary":"Builders now get paid for work they ship from a session started in a different project folder — those sessions used to be recorded as if they never happened.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T15:29:35.104Z","credits_reward":56,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":45,"actual_minutes":28,"github_login":"scootermack","display_name":"scootermack"},{"id":"1003296","title":"World round: PRODUCT.md and four style candidates across landing, hall and status","value_summary":"The new look for the whole site is chosen: liquid chrome drifting on black with a pair of chrome bongos, picked by the owner from four candidates built on the reference images; the landing, the builders' hall and the public ledger will now be rebuilt in it.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T14:59:19.443Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":872,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003251","title":"Footer doors before launch: privacy, terms and contact pages linked from the landing page and the hub (owner decision 2026-08-24)","value_summary":"The site now has the three pages every real website needs — privacy, terms and a contact page — linked from the footer of the front page and the projects hub. The privacy page says plainly what is kept about a GitHub account and a project, who else sees it, and how long it stays; the contact page points at the two doors that actually exist, the repository and the builders' hall. Every project built on the platform gets the same pages under its own name, with the claims that are only true of the platform itself removed.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T00:20:42.520Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":2,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1002792","title":"Task titles are write-once — no route can edit one, so a wrong title is permanent","value_summary":"A task's title can now be corrected after it's created — the same people who may edit a task's body may fix its title, and every edit is recorded. Until now a wrong title was permanent, so two tasks have been carrying table names that would fail the build; those get corrected as soon as this update is live.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T00:03:05.810Z","credits_reward":25,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":20,"actual_minutes":14,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003239","title":"Empty board at the end of the funnel (walk finding W4): seed the kickoff checklist at first sign-in","value_summary":"A brand-new project created from the hub used to greet its founder with an empty board. Now, the moment the founder signs in for the first time, their board holds the three things only they can do next: decide how people join (and invite the first builders), protect the main branch before a second builder arrives, and give the project its look. Projects set up by hand keep the checklist they already had.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-26T23:58:07.654Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":12,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1002889","title":"Four tests build ROOT from URL.pathname — %20 breaks require() on a Windows checkout with a space in the path","value_summary":"Three of the project's self-checks refused to even start on a Windows computer whose folder name has a space in it (like \"Cloud Bongos\") — they now start and run everywhere. A new automatic check stops the same mistake from being written again; the regular test run couldn't catch it on its own because its own folder has no space.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-26T23:58:06.288Z","credits_reward":25,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":7,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003278","title":"Find your own work: goals and tasks sort and filter by creator, role, and staleness","value_summary":"You can now ask the boards the questions you could only ask an agent before: what did I create, what work is there for an artist, and what has nobody touched in a month. Tasks remember who created them from now on, and both the goal board and the task board can sort by what is rotting — using one shared definition of 'touched', so the two can never disagree.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T23:18:41.119Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":21,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003044","title":"Joinability setting: open / apply-to-join / invite-only","value_summary":"A project's owner now chooses how people join it — anyone can join, apply to join, or invite only — and the project enforces it: sign-in self-enrols only on an open project, the apply form refuses on an invite-only one (and says why), and an Archon can invite someone by GitHub username from the Watch page. The manage page's last \"isn't wired up\" placeholder is gone.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T23:10:14.926Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":46,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1002802","title":"P06 · \"Complete your profile\" needs-attention inbox line item (dismissible)","value_summary":"New builders now get a gentle, dismissible reminder to finish their profile — shown as a line in the existing 'Needs your attention' list rather than a pop-up or an extra sign-up step. Dismissing it sticks across every device they use.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T22:29:39.859Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":52,"github_login":"lars589","display_name":"lars589"},{"id":"1003202","title":"Move npm publish to OIDC trusted publishing (drop the long-lived token)","value_summary":"Publishing the core no longer relies on a stored password. The build now proves who it is at the moment it publishes, using a credential that lasts seconds instead of months — closing the last item on the security cleanup, and removing exactly the kind of secret last year's npm attacks stole.","version_id":"CB-V1","status":"shipped","shipped_at":"2026-08-25T22:24:38.714Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":90,"actual_minutes":28,"github_login":"lars589","display_name":"lars589"},{"id":"1003277","title":"Claude assigns a goal's category at creation — and asks the human to name a new one when it cannot","value_summary":"When a goal is created without a category, the response now nudges whoever created it — here is the live set, pick one, or ask a human to name a new one. The goal-creation playbook does the same: Claude proposes a category with the rest of the draft, and when nothing fits it asks you to name a new one instead of guessing. Skipping the label is always allowed — it is a prompt, never an error.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T22:21:58.583Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":60,"actual_minutes":6,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003292","title":"Goal board cleanup: retire goals 1000009 + 1000028, re-scope 1000027 to the grep-findability toolset","value_summary":"Goal board cleanup: three stale goals retired. The animation-module goal, the Findability junk drawer, and the Autonomy groundwork chain are archived; 25 dead tasks abandoned, 2 live ones relocated to the goals that actually own them.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T22:18:37.323Z","credits_reward":18,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":14,"github_login":"lars589","display_name":"lars589"},{"id":"1003276","title":"The hall shows a goal's category and filters by it — and a task shows the one it inherits","value_summary":"The goal board now shows what each goal is about — a Security chip, an Economics chip — and you can narrow the page to one category, or to the goals nobody has categorised yet. A task shows the category it inherits from its goal, and its goal link finally shows the goal's name instead of just its number.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T22:12:28.981Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":75,"actual_minutes":15,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003043","title":"Platform visibility setting: public vs sign-in-gated project surfaces","value_summary":"A project's owner can now choose who can see it: everyone, or only people signed in to it. On the project's manage page the choice sits next to a line that says what the project is actually running right now — read from the project itself, not from the save. A project set to members-only shows every visitor who isn't signed in a sign-in door instead of its pages, on every page, with members seeing everything as before. Projects on an older platform version are told so plainly rather than shown a door that isn't up.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T21:51:58.658Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":90,"actual_minutes":42,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003283","title":"Clear the two medium patrol findings: pin the action, fix the stale-override false positive","value_summary":"Two follow-ups from the security patrol's first automatic run are closed. One was a genuine hole — a build step that pulled in an outside tool by a name that could be swapped underneath us — now locked to an exact version. The other turned out to be the patrol itself crying wolf, and acting on it would have broken the Discord integration.","version_id":"CB-V1","status":"shipped","shipped_at":"2026-08-25T21:46:58.456Z","credits_reward":38,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":7,"github_login":"lars589","display_name":"lars589"},{"id":"1003275","title":"A goal carries a human CATEGORY from an owner-owned set — advisory only, gating nothing","value_summary":"Every goal can now carry a plain-language category — Builders Hall, Security, Economics, Legal and five more — so a person scanning the board sees at a glance what each goal is about instead of reading all thirty-eight. The category is deliberately powerless: it labels work and can never decide who may do it, and a build-time check now refuses any code that tries to turn it into a permission.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T21:36:45.927Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":90,"actual_minutes":20,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003272","title":"Sound is silent because the player was never committed and 4 of 5 wav files do not exist","value_summary":"Sound works again: the missing player and four missing sound files are restored, the turn-end chime finally has something to fire it, and the Settings toggles and volume slider now actually reach it.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T20:28:29.135Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":150,"actual_minutes":19,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003273","title":"Majority pass rule, and an author may vote on their own idea but never decide it alone","value_summary":"The board can now decide by majority instead of a single vote, and you can vote on your own ideas - though never carry one on your vote alone.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T20:05:10.955Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":240,"actual_minutes":28,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003271","title":"Board sittings need a clock and a summons that lands: 9 items open, 0 votes, no expiry","value_summary":"Board members are now told in the hall when a vote is waiting on them, instead of that depending entirely on a Discord message that can silently fail to send.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T19:31:24.625Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":20,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003145","title":"corpusHealth's freshness stamp is an aggregate scan, and the comment beside it says otherwise","value_summary":"Searching the project knowledge base no longer slows down when a search finds nothing, and the message it shows now says plainly when the material was last updated.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T19:21:57.240Z","credits_reward":12,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":20,"actual_minutes":49,"github_login":"scootermack","display_name":"scootermack"},{"id":"1003269","title":"Government page: Permissions tab first, and tab names that say what they are","value_summary":"The Government page now opens on Permissions instead of burying it behind two other tabs, and that tab is called 'Permissions' rather than 'Ranks & Permissions'.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T18:48:38.904Z","credits_reward":25,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":20,"actual_minutes":17,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1001654","title":"Roll out the docstring / module-header convention (ADR 0095)","value_summary":"Code now explains itself: every file in the build system opens with a short note saying what it does and why it exists, so the AI agents that work here can find the right place by searching instead of guessing.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T18:19:10.245Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":180,"actual_minutes":141,"github_login":"scootermack","display_name":"scootermack"},{"id":"1003174","title":"C04 - Closeness: a weighted blend, and a surface that can explain itself","value_summary":"The hall can now tell who you actually work with, and — this is the part that mattered — it can always show its working. Closeness is built from several things at once: holding work in the same goal at the same time, sitting down to it in the same hours, and shipping into the same goal over the months. Every score comes with a plain breakdown of what went into it and how much each part counted, right next to the number, so nobody is ranked by a figure that cannot account for itself. The recipe lives in a file anyone can read and change without digging through code. One thing it deliberately refuses to do: it will not pretend that something it cannot yet measure is a zero — messages between people are not yet visible to it, and rather than quietly scoring you as though you never speak, it says so and leaves that part out.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T17:56:39.826Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":210,"actual_minutes":12,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003173","title":"C03 - Recommend a task to someone: it never transfers the claim","value_summary":"You can now point a teammate at a task without dumping it on them. Recommending a task tells them you thought they should look at it and makes you say why — and that is all it does: nothing is assigned, nothing changes hands, and they still choose to pick it up themselves. Saying no costs nothing at all, leaves no mark on either person, and the same task can be suggested again later. Every recommendation stays on the record with the name of whoever made it and their reason, so a suggestion can never be mistaken for work quietly changing owner.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T17:23:10.965Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":150,"actual_minutes":24,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003266","title":"The Board Room becomes the live government: Metic and above ratify Full Ideas by consent on a 24h clock","value_summary":"Big ideas are no longer waved through by one person. Until today the Board Room ran on its founding setting, where a single Archon could ratify a Full Idea alone. From now on a Full Idea goes to a board of five — Will plus the four Archons — and passes only when they consent, on a 24-hour clock that closes as soon as everyone has voted. Being away never blocks anything, and anyone who objects has to say why and point at which part needs work, which sends the idea back to its author instead of killing it. The board grows on its own as builders earn their way up.\n","version_id":"CB-V1","status":"shipped","shipped_at":"2026-08-25T16:54:31.857Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":2,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1002489","title":"Spawn adapter — resolve model_tier, consume grade.runSubagentCached, write an agents_runs row","value_summary":"Agents can now actually be run: the system picks the right model for the job, runs the agent through the shared, cost-tracked path, and writes one honest line about every attempt — including the ones it refused.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T16:30:16.854Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":4,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003162","title":"The /recall index is EMPTY on live even though the ingest fix is deployed — nothing in core invokes the ingesters","value_summary":"The project's search index now rebuilds itself and reports what it did every time, so 'have we solved this before' stops silently returning nothing when the indexer quietly stops.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T16:18:08.939Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":60,"actual_minutes":5,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003140","title":"Live push: a settings change reaches an already-running instance (needs provision.js to shrink)","value_summary":"Changing a project's settings on the platform now reaches the project while it is running: the platform patches the project's settings file in place and restarts it, and the response says plainly that a restart is coming rather than pretending the change is already live. Projects that run on their own server are told honestly that the platform can't restart them.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T14:39:48.760Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":51,"github_login":"jaxri","display_name":"Percy Jackson"}],"days":null,"range":"recent"}
|
|
1
|
+
{"tasks":[{"id":"1003297","title":"Landing composition round: three versions of the approved world","value_summary":"The front page of the new chrome look is chosen: three full-page versions were built and reviewed, and the owner picked the one closest to the reference image (the two doors floating inside a big chrome blob that breathes slowly, real numbers hung off it) and decided light mode will be rebuilt properly with the chrome on a pale ground; the build can start.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T17:59:20.501Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":132,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003281","title":"See what you did, by role — including every idea you filed and what became of it","value_summary":"Your profile now shows what you did craft by craft — and every idea you ever filed, with what became of it: the task it became, who merged it, why it was discarded, or that it is still open.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T16:39:39.736Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":100,"actual_minutes":44,"github_login":"scootermack","display_name":"scootermack"},{"id":"1002505","title":"ship.js still writes no session record when the session is rooted in another project dir (the residual 1002475 leak)","value_summary":"Builders now get paid for work they ship from a session started in a different project folder — those sessions used to be recorded as if they never happened.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T15:29:35.104Z","credits_reward":56,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":45,"actual_minutes":28,"github_login":"scootermack","display_name":"scootermack"},{"id":"1003296","title":"World round: PRODUCT.md and four style candidates across landing, hall and status","value_summary":"The new look for the whole site is chosen: liquid chrome drifting on black with a pair of chrome bongos, picked by the owner from four candidates built on the reference images; the landing, the builders' hall and the public ledger will now be rebuilt in it.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T14:59:19.443Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":872,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003251","title":"Footer doors before launch: privacy, terms and contact pages linked from the landing page and the hub (owner decision 2026-08-24)","value_summary":"The site now has the three pages every real website needs — privacy, terms and a contact page — linked from the footer of the front page and the projects hub. The privacy page says plainly what is kept about a GitHub account and a project, who else sees it, and how long it stays; the contact page points at the two doors that actually exist, the repository and the builders' hall. Every project built on the platform gets the same pages under its own name, with the claims that are only true of the platform itself removed.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T00:20:42.520Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":2,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1002792","title":"Task titles are write-once — no route can edit one, so a wrong title is permanent","value_summary":"A task's title can now be corrected after it's created — the same people who may edit a task's body may fix its title, and every edit is recorded. Until now a wrong title was permanent, so two tasks have been carrying table names that would fail the build; those get corrected as soon as this update is live.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-27T00:03:05.810Z","credits_reward":25,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":20,"actual_minutes":14,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003239","title":"Empty board at the end of the funnel (walk finding W4): seed the kickoff checklist at first sign-in","value_summary":"A brand-new project created from the hub used to greet its founder with an empty board. Now, the moment the founder signs in for the first time, their board holds the three things only they can do next: decide how people join (and invite the first builders), protect the main branch before a second builder arrives, and give the project its look. Projects set up by hand keep the checklist they already had.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-26T23:58:07.654Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":12,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1002889","title":"Four tests build ROOT from URL.pathname — %20 breaks require() on a Windows checkout with a space in the path","value_summary":"Three of the project's self-checks refused to even start on a Windows computer whose folder name has a space in it (like \"Cloud Bongos\") — they now start and run everywhere. A new automatic check stops the same mistake from being written again; the regular test run couldn't catch it on its own because its own folder has no space.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-26T23:58:06.288Z","credits_reward":25,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":7,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003278","title":"Find your own work: goals and tasks sort and filter by creator, role, and staleness","value_summary":"You can now ask the boards the questions you could only ask an agent before: what did I create, what work is there for an artist, and what has nobody touched in a month. Tasks remember who created them from now on, and both the goal board and the task board can sort by what is rotting — using one shared definition of 'touched', so the two can never disagree.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T23:18:41.119Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":21,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003044","title":"Joinability setting: open / apply-to-join / invite-only","value_summary":"A project's owner now chooses how people join it — anyone can join, apply to join, or invite only — and the project enforces it: sign-in self-enrols only on an open project, the apply form refuses on an invite-only one (and says why), and an Archon can invite someone by GitHub username from the Watch page. The manage page's last \"isn't wired up\" placeholder is gone.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T23:10:14.926Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":46,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1002802","title":"P06 · \"Complete your profile\" needs-attention inbox line item (dismissible)","value_summary":"New builders now get a gentle, dismissible reminder to finish their profile — shown as a line in the existing 'Needs your attention' list rather than a pop-up or an extra sign-up step. Dismissing it sticks across every device they use.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T22:29:39.859Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":52,"github_login":"example-owner","display_name":"example-owner"},{"id":"1003202","title":"Move npm publish to OIDC trusted publishing (drop the long-lived token)","value_summary":"Publishing the core no longer relies on a stored password. The build now proves who it is at the moment it publishes, using a credential that lasts seconds instead of months — closing the last item on the security cleanup, and removing exactly the kind of secret last year's npm attacks stole.","version_id":"CB-V1","status":"shipped","shipped_at":"2026-08-25T22:24:38.714Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":90,"actual_minutes":28,"github_login":"example-owner","display_name":"example-owner"},{"id":"1003277","title":"Claude assigns a goal's category at creation — and asks the human to name a new one when it cannot","value_summary":"When a goal is created without a category, the response now nudges whoever created it — here is the live set, pick one, or ask a human to name a new one. The goal-creation playbook does the same: Claude proposes a category with the rest of the draft, and when nothing fits it asks you to name a new one instead of guessing. Skipping the label is always allowed — it is a prompt, never an error.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T22:21:58.583Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":60,"actual_minutes":6,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003292","title":"Goal board cleanup: retire goals 1000009 + 1000028, re-scope 1000027 to the grep-findability toolset","value_summary":"Goal board cleanup: three stale goals retired. The animation-module goal, the Findability junk drawer, and the Autonomy groundwork chain are archived; 25 dead tasks abandoned, 2 live ones relocated to the goals that actually own them.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T22:18:37.323Z","credits_reward":18,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":14,"github_login":"example-owner","display_name":"example-owner"},{"id":"1003276","title":"The hall shows a goal's category and filters by it — and a task shows the one it inherits","value_summary":"The goal board now shows what each goal is about — a Security chip, an Economics chip — and you can narrow the page to one category, or to the goals nobody has categorised yet. A task shows the category it inherits from its goal, and its goal link finally shows the goal's name instead of just its number.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T22:12:28.981Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":75,"actual_minutes":15,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003043","title":"Platform visibility setting: public vs sign-in-gated project surfaces","value_summary":"A project's owner can now choose who can see it: everyone, or only people signed in to it. On the project's manage page the choice sits next to a line that says what the project is actually running right now — read from the project itself, not from the save. A project set to members-only shows every visitor who isn't signed in a sign-in door instead of its pages, on every page, with members seeing everything as before. Projects on an older platform version are told so plainly rather than shown a door that isn't up.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T21:51:58.658Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":90,"actual_minutes":42,"github_login":"jaxri","display_name":"Percy Jackson"},{"id":"1003283","title":"Clear the two medium patrol findings: pin the action, fix the stale-override false positive","value_summary":"Two follow-ups from the security patrol's first automatic run are closed. One was a genuine hole — a build step that pulled in an outside tool by a name that could be swapped underneath us — now locked to an exact version. The other turned out to be the patrol itself crying wolf, and acting on it would have broken the Discord integration.","version_id":"CB-V1","status":"shipped","shipped_at":"2026-08-25T21:46:58.456Z","credits_reward":38,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":7,"github_login":"example-owner","display_name":"example-owner"},{"id":"1003275","title":"A goal carries a human CATEGORY from an owner-owned set — advisory only, gating nothing","value_summary":"Every goal can now carry a plain-language category — Builders Hall, Security, Economics, Legal and five more — so a person scanning the board sees at a glance what each goal is about instead of reading all thirty-eight. The category is deliberately powerless: it labels work and can never decide who may do it, and a build-time check now refuses any code that tries to turn it into a permission.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T21:36:45.927Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":90,"actual_minutes":20,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003272","title":"Sound is silent because the player was never committed and 4 of 5 wav files do not exist","value_summary":"Sound works again: the missing player and four missing sound files are restored, the turn-end chime finally has something to fire it, and the Settings toggles and volume slider now actually reach it.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T20:28:29.135Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":150,"actual_minutes":19,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003273","title":"Majority pass rule, and an author may vote on their own idea but never decide it alone","value_summary":"The board can now decide by majority instead of a single vote, and you can vote on your own ideas - though never carry one on your vote alone.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T20:05:10.955Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":240,"actual_minutes":28,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003271","title":"Board sittings need a clock and a summons that lands: 9 items open, 0 votes, no expiry","value_summary":"Board members are now told in the hall when a vote is waiting on them, instead of that depending entirely on a Discord message that can silently fail to send.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T19:31:24.625Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":120,"actual_minutes":20,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003145","title":"corpusHealth's freshness stamp is an aggregate scan, and the comment beside it says otherwise","value_summary":"Searching the project knowledge base no longer slows down when a search finds nothing, and the message it shows now says plainly when the material was last updated.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T19:21:57.240Z","credits_reward":12,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":20,"actual_minutes":49,"github_login":"scootermack","display_name":"scootermack"},{"id":"1003269","title":"Government page: Permissions tab first, and tab names that say what they are","value_summary":"The Government page now opens on Permissions instead of burying it behind two other tabs, and that tab is called 'Permissions' rather than 'Ranks & Permissions'.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T18:48:38.904Z","credits_reward":25,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":20,"actual_minutes":17,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1001654","title":"Roll out the docstring / module-header convention (ADR 0095)","value_summary":"Code now explains itself: every file in the build system opens with a short note saying what it does and why it exists, so the AI agents that work here can find the right place by searching instead of guessing.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T18:19:10.245Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":180,"actual_minutes":141,"github_login":"scootermack","display_name":"scootermack"},{"id":"1003174","title":"C04 - Closeness: a weighted blend, and a surface that can explain itself","value_summary":"The hall can now tell who you actually work with, and — this is the part that mattered — it can always show its working. Closeness is built from several things at once: holding work in the same goal at the same time, sitting down to it in the same hours, and shipping into the same goal over the months. Every score comes with a plain breakdown of what went into it and how much each part counted, right next to the number, so nobody is ranked by a figure that cannot account for itself. The recipe lives in a file anyone can read and change without digging through code. One thing it deliberately refuses to do: it will not pretend that something it cannot yet measure is a zero — messages between people are not yet visible to it, and rather than quietly scoring you as though you never speak, it says so and leaves that part out.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T17:56:39.826Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":210,"actual_minutes":12,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003173","title":"C03 - Recommend a task to someone: it never transfers the claim","value_summary":"You can now point a teammate at a task without dumping it on them. Recommending a task tells them you thought they should look at it and makes you say why — and that is all it does: nothing is assigned, nothing changes hands, and they still choose to pick it up themselves. Saying no costs nothing at all, leaves no mark on either person, and the same task can be suggested again later. Every recommendation stays on the record with the name of whoever made it and their reason, so a suggestion can never be mistaken for work quietly changing owner.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T17:23:10.965Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":150,"actual_minutes":24,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003266","title":"The Board Room becomes the live government: Metic and above ratify Full Ideas by consent on a 24h clock","value_summary":"Big ideas are no longer waved through by one person. Until today the Board Room ran on its founding setting, where a single Archon could ratify a Full Idea alone. From now on a Full Idea goes to a board of five — Will plus the four Archons — and passes only when they consent, on a 24-hour clock that closes as soon as everyone has voted. Being away never blocks anything, and anyone who objects has to say why and point at which part needs work, which sends the idea back to its author instead of killing it. The board grows on its own as builders earn their way up.\n","version_id":"CB-V1","status":"shipped","shipped_at":"2026-08-25T16:54:31.857Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":2,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1002489","title":"Spawn adapter — resolve model_tier, consume grade.runSubagentCached, write an agents_runs row","value_summary":"Agents can now actually be run: the system picks the right model for the job, runs the agent through the shared, cost-tracked path, and writes one honest line about every attempt — including the ones it refused.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T16:30:16.854Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":4,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003162","title":"The /recall index is EMPTY on live even though the ingest fix is deployed — nothing in core invokes the ingesters","value_summary":"The project's search index now rebuilds itself and reports what it did every time, so 'have we solved this before' stops silently returning nothing when the indexer quietly stops.","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T16:18:08.939Z","credits_reward":60,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":60,"actual_minutes":5,"github_login":"IAMMASTERQUA","display_name":"IAMMASTERQUA"},{"id":"1003140","title":"Live push: a settings change reaches an already-running instance (needs provision.js to shrink)","value_summary":"Changing a project's settings on the platform now reaches the project while it is running: the platform patches the project's settings file in place and restarts it, and the response says plainly that a restart is coming rather than pretending the change is already live. Projects that run on their own server are told honestly that the platform can't restart them.\n","version_id":"BONGOS-V1","status":"shipped","shipped_at":"2026-08-25T14:39:48.760Z","credits_reward":30,"visual_url":null,"visual_alt":null,"credits_awarded":0,"est_minutes":null,"actual_minutes":51,"github_login":"jaxri","display_name":"Percy Jackson"}],"days":null,"range":"recent"}
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.728",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.728",
|
|
10
10
|
"license": "AGPL-3.0-or-later",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"express": "^4.21.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.728",
|
|
4
4
|
"description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"main": "src/platform-server.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
# 1 — audit failed before completion
|
|
20
20
|
#
|
|
21
21
|
# CRON RECOMMENDATION
|
|
22
|
-
# 0 9 * * MON cd /home/lars/
|
|
22
|
+
# 0 9 * * MON cd /home/lars/example && \
|
|
23
23
|
# scripts/cron/style_guide_audit.sh >> /var/log/otb/style_audit.log 2>&1
|
|
24
24
|
set -euo pipefail
|
|
25
25
|
|
package/scripts/discord/lib.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Shared helpers for the
|
|
1
|
+
// Shared helpers for the Example World Discord integration.
|
|
2
2
|
//
|
|
3
3
|
// Posts to Discord channels through incoming webhooks. A webhook URL is a
|
|
4
4
|
// write-only capability to ONE channel — no OAuth, no bot token, no read
|
package/scripts/discord/post.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
# records that name the founder by intent.
|
|
21
21
|
# * `CLAUDE.md` — §2 is explicitly about working with Lars as the prompter
|
|
22
22
|
# and project owner; that framing IS the point.
|
|
23
|
-
# * Droplet operational identity (`User
|
|
23
|
+
# * Droplet operational identity (`User=<owner>`, `<owner>@<droplet-ip>`,
|
|
24
24
|
# `/home/lars/amazonprimea`, `lars@hermeslines.com`) — that's the actual
|
|
25
25
|
# unix user / SSH target / ACME contact on the production server. It's
|
|
26
26
|
# infra config, not impersonation of a builder identity.
|
|
@@ -37,7 +37,7 @@ if [ -z "$BUILDER_ID" ] || [ -z "$START" ] || [ -z "$END" ]; then
|
|
|
37
37
|
cat <<USAGE >&2
|
|
38
38
|
usage: $0 <builder_id> <start_iso> <end_iso>
|
|
39
39
|
|
|
40
|
-
builder_id the id from the builders table (e.g. 1 for
|
|
40
|
+
builder_id the id from the builders table (e.g. 1 for example-owner)
|
|
41
41
|
start_iso inclusive lower bound, RFC3339/ISO 8601 (e.g. 2026-05-20T00:00:00Z)
|
|
42
42
|
end_iso inclusive upper bound, same shape
|
|
43
43
|
|
|
@@ -49,9 +49,31 @@ USAGE
|
|
|
49
49
|
exit 2
|
|
50
50
|
fi
|
|
51
51
|
|
|
52
|
+
# Validate the SHAPE of all three before they go anywhere. Below, these are
|
|
53
|
+
# interpolated into a remote command string for the SSH re-invocation, where a
|
|
54
|
+
# value carrying a single quote would break out of its quoting. Quote-escaping
|
|
55
|
+
# that is fiddly and easy to get subtly wrong; these arguments are an integer id
|
|
56
|
+
# and two ISO 8601 timestamps, so pinning the shape removes the question instead
|
|
57
|
+
# of answering it — and it catches an operator's typo before a round trip, which
|
|
58
|
+
# is the more common failure by far. (Raised by review on task 1003869.)
|
|
59
|
+
if ! printf '%s' "$BUILDER_ID" | grep -qE '^[0-9]+$'; then
|
|
60
|
+
echo "REFUSING: builder_id '$BUILDER_ID' is not a positive integer." >&2
|
|
61
|
+
exit 2
|
|
62
|
+
fi
|
|
63
|
+
for ts in "$START" "$END"; do
|
|
64
|
+
if ! printf '%s' "$ts" | grep -qE '^[0-9]{4}-[0-9]{2}-[0-9]{2}([T ][0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?(Z|[+-][0-9]{2}:?[0-9]{2})?)?$'; then
|
|
65
|
+
echo "REFUSING: '$ts' is not an ISO 8601 timestamp (e.g. 2026-05-20T00:00:00Z)." >&2
|
|
66
|
+
exit 2
|
|
67
|
+
fi
|
|
68
|
+
done
|
|
69
|
+
|
|
52
70
|
# Decide local vs remote. The droplet's Postgres listens on a Unix socket
|
|
53
71
|
# under /var/run/postgresql; if we can stat it, we're already on the droplet.
|
|
54
|
-
|
|
72
|
+
# The remote target for the re-invocation below. SOURCED FROM THE ENV, never baked in:
|
|
73
|
+
# a portable core carries no instance topology, and this ran with customer-zero's droplet
|
|
74
|
+
# hardcoded until task 1003869. Set BONGOS_AUDIT_HOST=<user>@<host> (or run the script on
|
|
75
|
+
# the database host itself, where the socket check below short-circuits the SSH leg).
|
|
76
|
+
DROPLET="${BONGOS_AUDIT_HOST:-}"
|
|
55
77
|
PG_SOCKET="/var/run/postgresql"
|
|
56
78
|
|
|
57
79
|
# Database + role: explicit env wins, else the branding-pack resolver (task
|
|
@@ -74,6 +96,11 @@ if [ ! -S "$PG_SOCKET/.s.PGSQL.5432" ]; then
|
|
|
74
96
|
# repo file at runtime, so we ship the script body over stdin to avoid a
|
|
75
97
|
# rsync step. Quoting on the SSH side preserves the timestamp args; the
|
|
76
98
|
# locally-resolved DB name rides along (no repo on the remote side).
|
|
99
|
+
if [ -z "$DROPLET" ]; then
|
|
100
|
+
echo "audit-replay: no local Postgres socket at $PG_SOCKET, and no remote host to fall back to." >&2
|
|
101
|
+
echo " Set BONGOS_AUDIT_HOST=<user>@<host> to re-invoke there, or run this on the database host." >&2
|
|
102
|
+
exit 2
|
|
103
|
+
fi
|
|
77
104
|
exec ssh -o ConnectTimeout=10 "$DROPLET" \
|
|
78
105
|
"GDS_AUDIT_DB='$AUDIT_DB' bash -s -- '$BUILDER_ID' '$START' '$END'" < "$0"
|
|
79
106
|
fi
|
|
@@ -103,7 +103,7 @@ function downstreamImpact(sha, files) {
|
|
|
103
103
|
|
|
104
104
|
async function fetchShipped(days) {
|
|
105
105
|
// Derive the public read host from branding (statusOrigin → publicOrigin), never a
|
|
106
|
-
// hardcoded founder host (was https://status.
|
|
106
|
+
// hardcoded founder host (was https://status.example.com — task 1002234). The
|
|
107
107
|
// recent-shipped feed is a public endpoint served on the status dashboard host.
|
|
108
108
|
const b = (() => { try { return require('../../src/branding').branding(); } catch (_) { return {}; } })();
|
|
109
109
|
const d = b.domains || {};
|
|
@@ -82,7 +82,7 @@ const PROJECT_TOKENS = [
|
|
|
82
82
|
encodeProjectPath(REPO_ROOT),
|
|
83
83
|
'Offtheboats',
|
|
84
84
|
'Claude-OTB',
|
|
85
|
-
'LarsCode-
|
|
85
|
+
'LarsCode-Example',
|
|
86
86
|
'Claude-LarsCode-Primea',
|
|
87
87
|
];
|
|
88
88
|
|
|
@@ -229,7 +229,7 @@ function loadExisting() {
|
|
|
229
229
|
console.error(
|
|
230
230
|
`Dedup file not found: ${EXISTING_FILE}\n` +
|
|
231
231
|
`Pull it first (authoritative source — the read API caps at 100):\n` +
|
|
232
|
-
` ssh lars@<droplet> 'psql -d
|
|
232
|
+
` ssh lars@<droplet> 'psql -d example -tAc "SELECT session_id FROM session_records;"' > ${EXISTING_FILE}`
|
|
233
233
|
);
|
|
234
234
|
process.exit(1);
|
|
235
235
|
}
|
package/scripts/gds/cf-tunnel.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// module is how scripts/gds/box.js MAKES those exist: it creates (or reuses) a
|
|
10
10
|
// remotely-managed Cloudflare Tunnel per builder, points its ingress at the box's
|
|
11
11
|
// localhost ttyd (127.0.0.1:7681), routes a stable DNS CNAME
|
|
12
|
-
// (term-<login>.
|
|
12
|
+
// (term-<login>.example.com → <tunnel-id>.cfargotunnel.com), and hands
|
|
13
13
|
// back the connector token to bake into the box. Teardown deletes the tunnel +
|
|
14
14
|
// the DNS record.
|
|
15
15
|
//
|
|
@@ -41,18 +41,18 @@ const TTYD_SERVICE = 'http://127.0.0.1:7681';
|
|
|
41
41
|
const GAME_SERVICE = 'http://127.0.0.1:3000';
|
|
42
42
|
|
|
43
43
|
// SECURITY (#919, security_reports SR#11): the apex gds_session cookie
|
|
44
|
-
// (Domain=.
|
|
44
|
+
// (Domain=.example.com) is sent by the browser to every subdomain, including
|
|
45
45
|
// the box-fronting term-<login> (ttyd) and sandbox-<login> (game preview) hosts —
|
|
46
46
|
// so the builder's FULL hall bearer rides the tunnel onto the box, which is OUTSIDE
|
|
47
47
|
// the ADR 0016 trust boundary. We must NOT narrow the apex cookie (the #726 SSO
|
|
48
|
-
// across builders.
|
|
48
|
+
// across builders.example.com needs it), so instead a zone Transform Rule
|
|
49
49
|
// removes the Cookie REQUEST header at the Cloudflare edge — before the request
|
|
50
50
|
// enters the tunnel — for exactly the box subdomains. ttyd uses basic-auth and the
|
|
51
51
|
// sandbox serves the game, so neither needs the cookie. Cloudflare permits REMOVE
|
|
52
52
|
// (not set/modify) of the Cookie request header via Transform Rules.
|
|
53
53
|
const COOKIE_STRIP_PHASE = 'http_request_late_transform';
|
|
54
54
|
const COOKIE_STRIP_RULE_DESC = 'otb-919 strip Cookie on box subdomains (term-*/sandbox-*) — SR#11';
|
|
55
|
-
// Zone-scoped ruleset ⇒ http.host is always within
|
|
55
|
+
// Zone-scoped ruleset ⇒ http.host is always within example.com, so the prefix
|
|
56
56
|
// match precisely targets the per-builder box hosts and nothing else.
|
|
57
57
|
const COOKIE_STRIP_EXPRESSION = 'starts_with(http.host, "term-") or starts_with(http.host, "sandbox-")';
|
|
58
58
|
|
|
@@ -71,7 +71,7 @@ function bongosify(text, verbs = VERBS) {
|
|
|
71
71
|
|
|
72
72
|
// ---- instance rebrand (task 2103) -----------------------------------------
|
|
73
73
|
// The scaffolded .claude/ used to carry the SOURCE instance's identity verbatim:
|
|
74
|
-
// hooks hardcoded the founder origin (e.g. a `https://
|
|
74
|
+
// hooks hardcoded the founder origin (e.g. a `https://example.com` fallback)
|
|
75
75
|
// and config dir (`~/.config/otb`), so a fresh clone's hooks phoned home to the
|
|
76
76
|
// WRONG instance — the 2026-07-08 demo-session failure. materialize now rewrites
|
|
77
77
|
// those founder literals to the TARGET instance's own values, derived from the two
|
|
@@ -123,7 +123,7 @@ function buildRebrandRules(from = {}, to = {}) {
|
|
|
123
123
|
add(`[${fc}]`, `[${tc}]`);
|
|
124
124
|
// The instance env-var prefix (e.g. OTB_ → BONGOS_), bounded by its underscore.
|
|
125
125
|
add(`${effEnvPrefix(from)}_`, `${effEnvPrefix(to)}_`);
|
|
126
|
-
// task 1002672: the bare User-Agent brand token (e.g. `
|
|
126
|
+
// task 1002672: the bare User-Agent brand token (e.g. `example-gds-cli/1.0`
|
|
127
127
|
// in a hook's outbound fetch). It carries no TLD, so none of the HOST rules above
|
|
128
128
|
// ever matched it and a founder-branded UA leaked into every materialized
|
|
129
129
|
// instance verbatim. Bounded by the `-gds` suffix (the userAgent() convention)
|