@bongos/core 1.19.1073 → 1.19.1075
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 +404 -549
- package/.claude/skills/feedback/SKILL.md +2 -2
- package/bin/bongos.js +1 -3
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +4 -60
- package/clients/bongos-client/index.cjs +4 -60
- package/clients/bongos-client/index.d.ts +5 -90
- package/clients/bongos-client/index.mjs +4 -60
- package/config/branding.neutral.json +1 -5
- package/config/modules.neutral.json +2 -3
- package/config/scheduled-routines.json +0 -2
- package/docs/adr/0145-free-hosted-project-tier-isolation-and-domain-separation.md +1 -0
- package/docs/adr/0285-a-shared-box-holds-about-twelve-projects-per-gb-and-memory-is-the-wall.md +1 -0
- package/docs/adr/0323-hosting-is-three-shapes-and-we-are-not-the-landlord.md +1 -1
- package/docs/adr/0327-a-cloud-host-runs-on-the-owners-account-and-the-key-is-borrowed.md +1 -1
- package/docs/adr/0341-the-page-is-the-unit-of-tweak-mode.md +2 -0
- package/docs/adr/0345-we-host-every-projects-hall-and-its-app-deploys-where-the-owner-chooses.md +94 -0
- package/docs/adr/README.md +1 -0
- package/docs/api/openapi.json +175 -1665
- package/docs/api-reference.md +9 -41
- package/docs/architecture.md +16 -1
- package/docs/branding-contract.md +0 -3
- package/docs/copy-inventory.md +454 -479
- package/docs/copy-registry.json +746 -978
- package/docs/file-map.md +5 -34
- package/docs/module-api-changelog.md +4 -0
- package/docs/modules-contract.md +13 -1
- package/docs/onboarding/diagrams/04-architecture.mmd +11 -22
- package/docs/onboarding/diagrams/README.md +3 -3
- package/docs/onboarding/diagrams/assertions.json +2 -22
- package/docs/onboarding/primer.md +9 -28
- package/docs/page-inventory.json +4 -1
- package/docs/page-readings.json +1032 -1077
- package/docs/recipes/render-pilot.md +29 -10
- package/migrations/core_257_module_store_registry.sql +87 -0
- package/migrations/core_258_drop_dev_box_tables.sql +55 -0
- package/modules/agents/module.json +1 -0
- package/modules/autonomy/module.json +1 -0
- package/modules/builder-settings/module.json +1 -0
- package/modules/builder-settings/render-prefs.js +4 -5
- package/modules/copy-desk/docx.js +78 -5
- package/modules/copy-desk/module.json +1 -0
- package/modules/copy-desk/routes/copy-desk.js +10 -10
- package/modules/copy-desk/tests/copy_docx.mjs +107 -1
- package/modules/copy-desk/tests/fixtures/word-docx.mjs +30 -0
- package/modules/discord/module.json +1 -0
- package/modules/discord/ship-broadcast.js +3 -3
- package/modules/economy/credits.js +2 -2
- package/modules/economy/module.json +1 -0
- package/modules/economy/routes/credits.js +1 -2
- package/modules/government/catalog.js +13 -17
- package/modules/government/migrations/government_019_retire_box_permissions.sql +33 -0
- package/modules/government/module.json +1 -0
- package/modules/government/protected-surfaces.json +3 -11
- package/modules/government/resolver.js +3 -46
- package/modules/government/routes/government.js +0 -2
- package/modules/government/session-scopes.js +43 -83
- package/modules/government/session-scopes.json +8 -18
- package/modules/grading/module.json +1 -0
- package/modules/hall-ui/module.json +1 -0
- package/modules/hall-ui/public/board-lib.js +2 -2
- package/modules/hall-ui/public/builders.js +29 -40
- package/modules/hall-ui/public/collab.html +1 -1
- package/modules/hall-ui/public/collab.js +1 -1
- package/modules/hall-ui/public/diagrams.html +3 -3
- package/modules/hall-ui/public/dom-utils.js +1 -1
- package/modules/hall-ui/public/gate.js +2 -2
- package/modules/hall-ui/public/gate.states.json +1 -1
- package/modules/hall-ui/public/hall-render.js +43 -79
- package/modules/hall-ui/public/index.html +5 -1
- package/modules/hall-ui/public/modules.js +1 -0
- package/modules/hall-ui/public/oversight.css +5 -5
- package/modules/hall-ui/public/palette.js +0 -11
- package/modules/hall-ui/public/primer.js +1 -1
- package/modules/hall-ui/public/sessions.html +1 -1
- package/modules/hall-ui/public/settings-sessions.js +1 -1
- package/modules/hall-ui/public/settings.css +0 -1
- package/modules/hall-ui/public/settings.html +4 -33
- package/modules/hall-ui/public/settings.js +3 -33
- package/modules/hall-ui/public/settings.states.json +2 -2
- package/modules/hall-ui/public/studio.html +1 -1
- package/modules/hall-ui/public/style.css +10 -13
- package/modules/hall-ui/public/task.html +4 -1
- package/modules/hall-ui/public/task.js +36 -1
- package/modules/hall-ui/public/tweak-editor-lib.js +18 -1
- package/modules/hall-ui/public/tweak-editor.css +16 -0
- package/modules/hall-ui/public/tweak-editor.html +26 -3
- package/modules/hall-ui/public/tweak-editor.js +32 -1
- package/modules/hall-ui/public/work.js +1 -1
- package/modules/hall-ui/records/tweak-editor.md +1 -0
- package/modules/ideas/module.json +1 -0
- package/modules/ideas/projection.js +1 -1
- package/modules/lifecycle/db-claim-reads.js +1 -58
- package/modules/lifecycle/db-ship.js +4 -9
- package/modules/lifecycle/db.js +0 -4
- package/modules/lifecycle/github-push.js +12 -14
- package/modules/lifecycle/kickoff-checklist.js +0 -4
- package/modules/lifecycle/lifecycle.js +0 -8
- package/modules/lifecycle/module.json +1 -0
- package/modules/lifecycle/publish-reconciler.js +10 -10
- package/modules/lifecycle/routes/tasks.js +13 -15
- package/modules/lifecycle/ship-card.js +1 -1
- package/modules/lifecycle/task-visuals.js +2 -2
- package/modules/memory/module.json +1 -0
- package/modules/memory/routes/memory.js +2 -2
- package/modules/npm-release/module.json +1 -0
- package/modules/onboarding/module.json +1 -0
- package/modules/onboarding/onboarding-state.js +17 -36
- package/modules/onboarding/routes/access-requests.js +3 -3
- package/modules/platform-identity/module.json +1 -0
- package/modules/platform-identity/platform-identity.js +13 -5
- package/modules/platform-identity/routes/sso.js +5 -4
- package/modules/platform-identity/tests/platform-identity.mjs +17 -3
- package/modules/provisioning/capacity.js +1 -1
- package/modules/provisioning/module.json +1 -0
- package/modules/provisioning/provisioning.js +6 -5
- package/modules/provisioning/routes/provisioning.js +4 -4
- package/modules/provisioning/starter-bundles.js +5 -25
- package/modules/public-landing/module.json +1 -0
- package/modules/public-landing/public/assets/cosmos.css +1 -1
- package/modules/public-landing/public/contact.html +1 -1
- package/modules/public-landing/public/privacy.html +1 -1
- package/modules/public-landing/public/projects.html +101 -32
- package/modules/public-landing/public/projects.probes.json +2 -2
- package/modules/public-landing/public/projects.states.json +4 -3
- package/modules/public-landing/public/terms.html +1 -1
- package/modules/security/module.json +1 -0
- package/modules/sessions/db.js +1 -1
- package/modules/sessions/module.json +1 -0
- package/modules/specialities/module.json +1 -0
- package/modules/status-ui/module.json +1 -0
- package/modules/ui-design/module.json +1 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +84 -0
- package/scripts/gds/artifact-format.js +203 -0
- package/scripts/gds/artifact-staleness.js +2 -2
- package/scripts/gds/audit-authorship.sh +1 -13
- package/scripts/gds/backfill-task-rewards.js +5 -5
- package/scripts/gds/claim.js +0 -15
- package/scripts/gds/claude-materialize.js +2 -2
- package/scripts/gds/cli-lib.js +15 -15
- package/scripts/gds/codemod-rename-src-gds.js +1 -1
- package/scripts/gds/context-pack.js +5 -7
- package/scripts/gds/diagram-facts.js +12 -23
- package/scripts/gds/do-api.js +13 -80
- package/scripts/gds/doc-cli-guard.js +2 -0
- package/scripts/gds/doctor.js +4 -4
- package/scripts/gds/feedback-latest.js +139 -9
- package/scripts/gds/fitness-checks-identity.js +2 -7
- package/scripts/gds/fitness-checks-packaging.js +4 -4
- package/scripts/gds/fitness-checks-write-validation.js +4 -0
- package/scripts/gds/fitness-ratchets.js +5 -5
- package/scripts/gds/fitness.js +10 -10
- package/scripts/gds/gen-api-client.js +4 -4
- package/scripts/gds/gen-api-docs.js +1 -1
- package/scripts/gds/gen-diagrams.js +49 -71
- package/scripts/gds/gen-repo-map.js +13 -14
- package/scripts/gds/gen-session-index.js +8 -8
- package/scripts/gds/http-api-client.js +12 -19
- package/scripts/gds/init.js +1 -1
- package/scripts/gds/leak-scan-allowlist.js +1 -1
- package/scripts/gds/lint-infra-exec.js +1 -1
- package/scripts/gds/local-preview-lib.js +8 -39
- package/scripts/gds/local-preview.js +2 -15
- package/scripts/gds/migration-namespace.js +3 -3
- package/scripts/gds/module-artifact.js +212 -0
- package/scripts/gds/module.js +95 -6
- package/scripts/gds/package-core.js +5 -116
- package/scripts/gds/plain-cards.js +1 -1
- package/scripts/gds/provision-config.js +2 -2
- package/scripts/gds/provision-net.js +2 -3
- package/scripts/gds/provision.js +9 -9
- package/scripts/gds/publish-manifest.js +1 -2
- package/scripts/gds/push-path-brief.js +10 -10
- package/scripts/gds/regen-instance-docs.js +1 -1
- package/scripts/gds/rename-history-check.js +1 -1
- package/scripts/gds/run-unit-tests.js +2 -16
- package/scripts/gds/sandbox-stage.js +39 -341
- package/scripts/gds/session-digest-build.js +2 -2
- package/scripts/gds/ship-deploy-target.js +13 -13
- package/scripts/gds/ship-flow.js +7 -7
- package/scripts/gds/ship-land.js +9 -10
- package/scripts/gds/ship-merge.js +4 -4
- package/scripts/gds/ship-preflight-steps.js +4 -4
- package/scripts/gds/ship-regen.js +15 -49
- package/scripts/gds/ship.js +13 -33
- package/scripts/gds/skill-preflight.js +9 -8
- package/scripts/gds/start.js +0 -15
- package/scripts/hall-preview/README.md +5 -5
- package/scripts/hall-preview/server.js +6 -6
- package/scripts/render-diagrams.sh +1 -1
- package/src/bongos/api-errors.js +1 -1
- package/src/bongos/api-prefix.js +4 -4
- package/src/bongos/auth-github.js +2 -3
- package/src/bongos/auth.js +51 -126
- package/src/bongos/db-kernel.js +2 -3
- package/src/bongos/db.js +5 -28
- package/src/bongos/module-scope-map.js +14 -29
- package/src/bongos/module-store.js +141 -0
- package/src/bongos/platform-visibility-gate.js +1 -1
- package/src/bongos/route-rank-check.js +3 -16
- package/src/bongos/routes/auth.js +0 -116
- package/src/bongos/routes/builders.js +5 -15
- package/src/bongos/routes/instance.js +8 -14
- package/src/bongos/routes/me.js +7 -23
- package/src/bongos/routes/modules.js +83 -0
- package/src/bongos/routes/security.js +3 -3
- package/src/bongos/routes.js +7 -2
- package/src/bongos/serve-internal.js +5 -6
- package/src/bongos-downloads.js +1 -6
- package/src/branding.js +2 -2
- package/src/build-info.js +4 -6
- package/src/instance-config.js +2 -2
- package/src/module-api.js +13 -6
- package/src/module-loader/catalog.js +3 -0
- package/src/module-loader/loader.js +4 -4
- package/src/module-loader/manifest-schema.js +16 -8
- package/src/module-seams.js +2 -3
- package/src/modules.js +42 -14
- package/tests/agents_spend_guard.mjs +1 -1
- package/tests/api_alias_caller_ratchet.mjs +1 -1
- package/tests/api_alias_exceptions.mjs +1 -1
- package/tests/api_client.mjs +1 -16
- package/tests/api_path_404.mjs +1 -1
- package/tests/auth_page_gate.mjs +10 -10
- package/tests/backfill_task_rewards.mjs +1 -1
- package/tests/canonical_profile_url.mjs +1 -3
- package/tests/claim_action.mjs +4 -1
- package/tests/claim_from_task_and_home.mjs +127 -0
- package/tests/{box_ship_permissions.mjs → cli_allowlist_permissions.mjs} +5 -5
- package/tests/cli_sessions.mjs +1 -1
- package/tests/consumer_layout_boot.mjs +2 -0
- package/tests/context_pack.mjs +13 -13
- package/tests/copy_desk_page_docx.mjs +33 -2
- package/tests/copy_inventory.mjs +7 -7
- package/tests/core_upgrade_runner.mjs +6 -6
- package/tests/credit_grant.mjs +2 -2
- package/tests/criterion_suggest.mjs +1 -1
- package/tests/deploy_divergence_line.mjs +11 -11
- package/tests/design_tokens_sync.mjs +3 -2
- package/tests/diagram_facts_offset.mjs +1 -1
- package/tests/do_api.mjs +106 -0
- package/tests/feedback_latest.mjs +122 -0
- package/tests/fitness.mjs +44 -42
- package/tests/fitness_ratchets.mjs +2 -2
- package/tests/gate_approvals.mjs +0 -1
- package/tests/github_push_land_proof.mjs +1 -1
- package/tests/go_live.mjs +3 -3
- package/tests/goal_advisory.mjs +3 -3
- package/tests/goal_suggest.mjs +3 -3
- package/tests/government_abuse_matrix.mjs +21 -19
- package/tests/government_ownership_scope.mjs +33 -35
- package/tests/government_parity.mjs +2 -2
- package/tests/government_protected_surfaces.mjs +56 -37
- package/tests/government_require_permission.mjs +3 -3
- package/tests/government_seed.mjs +37 -4
- package/tests/government_session_scope.mjs +92 -366
- package/tests/hall_audit.mjs +1 -1
- package/tests/hall_error_envelope.mjs +4 -0
- package/tests/hall_landing_boot.mjs +4 -1
- package/tests/hall_palette.mjs +1 -16
- package/tests/hall_record_world.mjs +6 -0
- package/tests/hall_tweak_editor.mjs +52 -1
- package/tests/helpers.mjs +1 -1
- package/tests/host_topology_skips.mjs +3 -4
- package/tests/html_comment_nesting.mjs +137 -0
- package/tests/infra_exec_paths.mjs +9 -10
- package/tests/init.mjs +4 -5
- package/tests/instance_manifest.mjs +18 -25
- package/tests/kickoff_checklist.mjs +1 -1
- package/tests/lib_sh_resolution.mjs +0 -221
- package/tests/local_preview.mjs +0 -12
- package/tests/migration_namespace.mjs +6 -6
- package/tests/module-scope-map.mjs +9 -9
- package/tests/module_api.mjs +2 -2
- package/tests/module_catalog.mjs +1 -1
- package/tests/module_cli.mjs +20 -20
- package/tests/module_contributions.mjs +6 -6
- package/tests/module_loader.mjs +6 -6
- package/tests/module_manifest.mjs +26 -17
- package/tests/module_route_rank.mjs +2 -2
- package/tests/module_store_publish.mjs +307 -0
- package/tests/module_store_publish_route.mjs +121 -0
- package/tests/module_store_registry_migration.mjs +70 -0
- package/tests/modules.mjs +56 -26
- package/tests/modules_route_wiring.mjs +1 -1
- package/tests/onboarding_route_signals.mjs +21 -31
- package/tests/onboarding_state.mjs +35 -49
- package/tests/paste_token_session_store.mjs +1 -1
- package/tests/permission_path.mjs +0 -3
- package/tests/platform_boot.mjs +1 -2
- package/tests/platform_visibility_gate.mjs +1 -1
- package/tests/profile_route.mjs +1 -6
- package/tests/project_modules_ui.mjs +17 -17
- package/tests/projects_hub.mjs +5 -5
- package/tests/projects_hub_app_step.mjs +138 -0
- package/tests/projects_hub_module_picker.mjs +77 -76
- package/tests/projects_hub_pre_uat.mjs +4 -5
- package/tests/provision.mjs +7 -7
- package/tests/provisioning_capacity.mjs +1 -1
- package/tests/provisioning_recommendations.mjs +2 -1
- package/tests/provisioning_starter_bundles.mjs +0 -22
- package/tests/publish_branch_route.mjs +11 -19
- package/tests/publish_manifest.mjs +2 -3
- package/tests/publish_reconciler.mjs +8 -8
- package/tests/push_path_brief.mjs +10 -9
- package/tests/rank_tier_single_source.mjs +1 -13
- package/tests/regrade_eligibility.mjs +1 -1
- package/tests/rename_history_restraint.mjs +1 -1
- package/tests/repo_map.mjs +12 -13
- package/tests/runner_drift.mjs +3 -21
- package/tests/sandbox_stage.mjs +57 -390
- package/tests/seam_wiring_guard.mjs +11 -11
- package/tests/search_isolation.mjs +3 -3
- package/tests/session_records.mjs +1 -1
- package/tests/session_rename_fallback.mjs +1 -22
- package/tests/session_start_freshness.mjs +3 -3
- package/tests/session_token_hash_db.mjs +1 -1
- package/tests/ship_card.mjs +1 -1
- package/tests/ship_ci_deploy.mjs +17 -17
- package/tests/ship_error_shape.mjs +1 -1
- package/tests/ship_premerge.mjs +1 -1
- package/tests/ship_resume.mjs +1 -1
- package/tests/skill_preflight.mjs +2 -2
- package/tests/skip_is_not_pass.mjs +1 -1
- package/tests/task_visual_slots.mjs +31 -0
- package/tests/terms_acceptance.mjs +2 -2
- package/tests/upgrade.mjs +4 -4
- package/tests/watch_sealed_floor.mjs +0 -1
- package/tests/wizard_draft_resume.mjs +2 -2
- package/tests/wizard_intent_resume.mjs +21 -10
- package/tests/wizard_preselect_why.mjs +18 -18
- package/docs/onboarding/browser-terminal-guide.md +0 -73
- package/docs/recipes/managed-settings-remote-control.md +0 -416
- package/modules/dev-box/CLAUDE.md +0 -15
- package/modules/dev-box/box-access.js +0 -623
- package/modules/dev-box/box-credential.js +0 -94
- package/modules/dev-box/box-onboard.js +0 -486
- package/modules/dev-box/boxes.js +0 -1038
- package/modules/dev-box/db.js +0 -39
- package/modules/dev-box/module.json +0 -19
- package/modules/dev-box/routes/box.js +0 -1223
- package/scripts/gds/box-auth-check.js +0 -160
- package/scripts/gds/box-infra.js +0 -321
- package/scripts/gds/box-sync.js +0 -216
- package/scripts/gds/box.js +0 -1332
- package/scripts/gds/cf-tunnel.js +0 -558
- package/scripts/gds/smoke-box.sh +0 -150
- package/scripts/gds/tree-preflight.js +0 -241
- package/src/bongos/app-pair.js +0 -172
- package/tests/app_pair.mjs +0 -168
- package/tests/box_access.mjs +0 -578
- package/tests/box_auth_check.mjs +0 -114
- package/tests/box_code_staleness.mjs +0 -129
- package/tests/box_connect_e2e.mjs +0 -196
- package/tests/box_cost.mjs +0 -70
- package/tests/box_credential.mjs +0 -125
- package/tests/box_dns_repoint.mjs +0 -153
- package/tests/box_env.mjs +0 -64
- package/tests/box_host_keys.mjs +0 -126
- package/tests/box_infra_resolve.mjs +0 -246
- package/tests/box_onboard.mjs +0 -317
- package/tests/box_scope_session.mjs +0 -119
- package/tests/box_sweep_docs.mjs +0 -119
- package/tests/box_sync.mjs +0 -55
- package/tests/box_sync_scope_report.mjs +0 -126
- package/tests/box_task_scope.mjs +0 -169
- package/tests/box_task_scope_pause.mjs +0 -66
- package/tests/box_terminal_ssrf.mjs +0 -96
- package/tests/boxes.mjs +0 -1585
- package/tests/cf_ruleset_preflight.mjs +0 -142
- package/tests/cf_tunnel.mjs +0 -496
- package/tests/docs_scrubber_damage.mjs +0 -111
- package/tests/module_scope_active_claims.mjs +0 -94
- package/tests/ship_api_client_pathspec.mjs +0 -100
- package/tests/tree_preflight.mjs +0 -243
|
@@ -26,8 +26,8 @@ You are pulling in the **latest Bongos feedback bundle** — a self-contained ca
|
|
|
26
26
|
|
|
27
27
|
- **Read-only + local.** The helper only reads files under `~/CloudBongos/feedback/`; it needs no Bongos session and no network.
|
|
28
28
|
- **"Latest" = most recently produced.** The Bongos app updates a `latest` pointer every time a capture is stopped, so this always loads the newest walkthrough. To act on an older one, point the user at the specific dir under `~/CloudBongos/feedback/`.
|
|
29
|
-
- **The frames are file paths, never base64** — that's the whole point of the bundle format (it keeps the text prompt tiny and lets your Read tool load the images). See
|
|
29
|
+
- **The frames are file paths, never base64** — that's the whole point of the bundle format (it keeps the text prompt tiny and lets your Read tool load the images). See [ADR 0087](../../../docs/adr/0087-bongos-app-architecture-and-handoff-contract.md) for the full bundle contract.
|
|
30
30
|
|
|
31
31
|
## Files this skill touches
|
|
32
32
|
|
|
33
|
-
- Runs: `node scripts/gds/feedback-latest.js` (resolves
|
|
33
|
+
- Runs: `node scripts/gds/feedback-latest.js` (resolves the ADR 0087 `latest` pointer itself — the app source is off-repo, ADR 0098).
|
package/bin/bongos.js
CHANGED
|
@@ -12,9 +12,7 @@
|
|
|
12
12
|
// scripts/gds/cli-lib.js.
|
|
13
13
|
//
|
|
14
14
|
// Phases 2-4 extend this same CLI with a one-line installer + standalone binary
|
|
15
|
-
// and instance-agnostic `login`/`init`/`upgrade`.
|
|
16
|
-
// VS Code Remote-SSH into a per-builder dev box; the dev box was retired and
|
|
17
|
-
// those verbs removed with it — task 1003889.)
|
|
15
|
+
// and instance-agnostic `login`/`init`/`upgrade`.
|
|
18
16
|
|
|
19
17
|
'use strict';
|
|
20
18
|
|
|
@@ -5,7 +5,7 @@ A **generated**, zero-dependency typed client for the Bongos API — produced fr
|
|
|
5
5
|
by hand; it regenerates when the spec changes, so it can never drift from the routes.
|
|
6
6
|
|
|
7
7
|
- API version: **v1** (served at `/api/bongos/v1`)
|
|
8
|
-
-
|
|
8
|
+
- 433 operations across 67 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -137,14 +137,6 @@ function createClient(opts = {}) {
|
|
|
137
137
|
getAuditLog: (args) => request("GET", "/audit-log", { hasBody: false }, args),
|
|
138
138
|
},
|
|
139
139
|
"auth": {
|
|
140
|
-
// POST /auth/app-pair/approve — rank: any-builder — POST /auth/app-pair/approve
|
|
141
|
-
postAuthAppPairApprove: (args) => request("POST", "/auth/app-pair/approve", { hasBody: true }, args),
|
|
142
|
-
// GET /auth/app-pair/info — rank: any-builder — GET /auth/app-pair/info
|
|
143
|
-
getAuthAppPairInfo: (args) => request("GET", "/auth/app-pair/info", { hasBody: false }, args),
|
|
144
|
-
// POST /auth/app-pair/poll — rank: public — POST /auth/app-pair/poll
|
|
145
|
-
postAuthAppPairPoll: (args) => request("POST", "/auth/app-pair/poll", { hasBody: true }, args),
|
|
146
|
-
// POST /auth/app-pair/start — rank: public — POST /auth/app-pair/start
|
|
147
|
-
postAuthAppPairStart: (args) => request("POST", "/auth/app-pair/start", { hasBody: true }, args),
|
|
148
140
|
// POST /auth/backchannel-logout — rank: public — POST /auth/backchannel-logout
|
|
149
141
|
postAuthBackchannelLogout: (args) => request("POST", "/auth/backchannel-logout", { hasBody: true }, args),
|
|
150
142
|
// POST /auth/cli-token/issue — rank: any-builder — POST /auth/cli-token/issue
|
|
@@ -212,58 +204,6 @@ function createClient(opts = {}) {
|
|
|
212
204
|
// POST /blockers/{id}/resolve — rank: metic+archon — POST /blockers/:id/resolve
|
|
213
205
|
postBlockersIdResolve: (args) => request("POST", "/blockers/{id}/resolve", { hasBody: true }, args),
|
|
214
206
|
},
|
|
215
|
-
"box": {
|
|
216
|
-
// GET /box/authorized-keys — rank: any-builder — GET /box/authorized-keys
|
|
217
|
-
getBoxAuthorizedKeys: (args) => request("GET", "/box/authorized-keys", { hasBody: false }, args),
|
|
218
|
-
// POST /box/close — rank: any-builder — POST /box/close
|
|
219
|
-
postBoxClose: (args) => request("POST", "/box/close", { hasBody: true }, args),
|
|
220
|
-
// GET /box/connect — rank: public — GET /box/connect
|
|
221
|
-
getBoxConnect: (args) => request("GET", "/box/connect", { hasBody: false }, args),
|
|
222
|
-
// GET /box/connect.ps1 — rank: public — GET /box/connect.ps1
|
|
223
|
-
getBoxConnectPs1: (args) => request("GET", "/box/connect.ps1", { hasBody: false }, args),
|
|
224
|
-
// GET /box/connect.sh — rank: public — GET /box/connect.sh
|
|
225
|
-
getBoxConnectSh: (args) => request("GET", "/box/connect.sh", { hasBody: false }, args),
|
|
226
|
-
// POST /box/ensure — rank: any-builder — POST /box/ensure
|
|
227
|
-
postBoxEnsure: (args) => request("POST", "/box/ensure", { hasBody: true }, args),
|
|
228
|
-
// POST /box/heartbeat — rank: any-builder — POST /box/heartbeat
|
|
229
|
-
postBoxHeartbeat: (args) => request("POST", "/box/heartbeat", { hasBody: true }, args),
|
|
230
|
-
// POST /box/host-keys — rank: any-builder — POST /box/host-keys
|
|
231
|
-
postBoxHostKeys: (args) => request("POST", "/box/host-keys", { hasBody: true }, args),
|
|
232
|
-
// GET /box/managed-settings — rank: any-builder — GET /box/managed-settings
|
|
233
|
-
getBoxManagedSettings: (args) => request("GET", "/box/managed-settings", { hasBody: false }, args),
|
|
234
|
-
// GET /box/me — rank: any-builder — GET /box/me
|
|
235
|
-
getBoxMe: (args) => request("GET", "/box/me", { hasBody: false }, args),
|
|
236
|
-
// GET /box/scope — rank: any-builder — GET /box/scope
|
|
237
|
-
getBoxScope: (args) => request("GET", "/box/scope", { hasBody: false }, args),
|
|
238
|
-
// GET /box/source-access — rank: any-builder — GET /box/source-access
|
|
239
|
-
getBoxSourceAccess: (args) => request("GET", "/box/source-access", { hasBody: false }, args),
|
|
240
|
-
// GET /box/ssh-key — rank: any-builder — GET /box/ssh-key
|
|
241
|
-
getBoxSshKey: (args) => request("GET", "/box/ssh-key", { hasBody: false }, args),
|
|
242
|
-
// POST /box/ssh-key — rank: any-builder — POST /box/ssh-key
|
|
243
|
-
postBoxSshKey: (args) => request("POST", "/box/ssh-key", { hasBody: true }, args),
|
|
244
|
-
// DELETE /box/ssh-key/{id} — rank: any-builder — DELETE /box/ssh-key/:id
|
|
245
|
-
deleteBoxSshKeyId: (args) => request("DELETE", "/box/ssh-key/{id}", { hasBody: false }, args),
|
|
246
|
-
// GET /box/terminal — rank: any-builder — GET /box/terminal
|
|
247
|
-
getBoxTerminal: (args) => request("GET", "/box/terminal", { hasBody: false }, args),
|
|
248
|
-
// POST /box/terminal — rank: any-builder — POST /box/terminal
|
|
249
|
-
postBoxTerminal: (args) => request("POST", "/box/terminal", { hasBody: true }, args),
|
|
250
|
-
// POST /box/version — rank: any-builder — POST /box/version
|
|
251
|
-
postBoxVersion: (args) => request("POST", "/box/version", { hasBody: true }, args),
|
|
252
|
-
// GET /box/widen — rank: any-builder — GET /box/widen
|
|
253
|
-
getBoxWiden: (args) => request("GET", "/box/widen", { hasBody: false }, args),
|
|
254
|
-
// POST /box/widen — rank: any-builder — POST /box/widen
|
|
255
|
-
postBoxWiden: (args) => request("POST", "/box/widen", { hasBody: true }, args),
|
|
256
|
-
},
|
|
257
|
-
"boxes": {
|
|
258
|
-
// GET /boxes — rank: metic+archon — GET /boxes
|
|
259
|
-
getBoxes: (args) => request("GET", "/boxes", { hasBody: false }, args),
|
|
260
|
-
// PATCH /boxes/{builderId}/block — rank: metic+archon — PATCH /boxes/:builderId/block
|
|
261
|
-
patchBoxesBuilderIdBlock: (args) => request("PATCH", "/boxes/{builderId}/block", { hasBody: true }, args),
|
|
262
|
-
// POST /boxes/{builderId}/close — rank: metic+archon — POST /boxes/:builderId/close
|
|
263
|
-
postBoxesBuilderIdClose: (args) => request("POST", "/boxes/{builderId}/close", { hasBody: true }, args),
|
|
264
|
-
// GET /boxes/cost-ledger — rank: metic+archon — GET /boxes/cost-ledger
|
|
265
|
-
getBoxesCostLedger: (args) => request("GET", "/boxes/cost-ledger", { hasBody: false }, args),
|
|
266
|
-
},
|
|
267
207
|
"bugAttachments": {
|
|
268
208
|
// GET /bug-attachments/{name} — rank: any-builder — GET /bug-attachments/:name
|
|
269
209
|
getBugAttachmentsName: (args) => request("GET", "/bug-attachments/{name}", { hasBody: false }, args),
|
|
@@ -1028,6 +968,10 @@ function createClient(opts = {}) {
|
|
|
1028
968
|
// POST /sso/token — rank: public — POST /sso/token
|
|
1029
969
|
postSsoToken: (args) => request("POST", "/sso/token", { hasBody: true }, args),
|
|
1030
970
|
},
|
|
971
|
+
"store": {
|
|
972
|
+
// POST /store/modules/{key}/versions — rank: metic+archon — POST /store/modules/:key/versions
|
|
973
|
+
postStoreModulesKeyVersions: (args) => request("POST", "/store/modules/{key}/versions", { hasBody: true }, args),
|
|
974
|
+
},
|
|
1031
975
|
"taskRecommendations": {
|
|
1032
976
|
// POST /task-recommendations — rank: any-builder — POST /task-recommendations
|
|
1033
977
|
postTaskRecommendations: (args) => request("POST", "/task-recommendations", { hasBody: true }, args),
|
|
@@ -136,14 +136,6 @@ function createClient(opts = {}) {
|
|
|
136
136
|
getAuditLog: (args) => request("GET", "/audit-log", { hasBody: false }, args),
|
|
137
137
|
},
|
|
138
138
|
"auth": {
|
|
139
|
-
// POST /auth/app-pair/approve — rank: any-builder — POST /auth/app-pair/approve
|
|
140
|
-
postAuthAppPairApprove: (args) => request("POST", "/auth/app-pair/approve", { hasBody: true }, args),
|
|
141
|
-
// GET /auth/app-pair/info — rank: any-builder — GET /auth/app-pair/info
|
|
142
|
-
getAuthAppPairInfo: (args) => request("GET", "/auth/app-pair/info", { hasBody: false }, args),
|
|
143
|
-
// POST /auth/app-pair/poll — rank: public — POST /auth/app-pair/poll
|
|
144
|
-
postAuthAppPairPoll: (args) => request("POST", "/auth/app-pair/poll", { hasBody: true }, args),
|
|
145
|
-
// POST /auth/app-pair/start — rank: public — POST /auth/app-pair/start
|
|
146
|
-
postAuthAppPairStart: (args) => request("POST", "/auth/app-pair/start", { hasBody: true }, args),
|
|
147
139
|
// POST /auth/backchannel-logout — rank: public — POST /auth/backchannel-logout
|
|
148
140
|
postAuthBackchannelLogout: (args) => request("POST", "/auth/backchannel-logout", { hasBody: true }, args),
|
|
149
141
|
// POST /auth/cli-token/issue — rank: any-builder — POST /auth/cli-token/issue
|
|
@@ -211,58 +203,6 @@ function createClient(opts = {}) {
|
|
|
211
203
|
// POST /blockers/{id}/resolve — rank: metic+archon — POST /blockers/:id/resolve
|
|
212
204
|
postBlockersIdResolve: (args) => request("POST", "/blockers/{id}/resolve", { hasBody: true }, args),
|
|
213
205
|
},
|
|
214
|
-
"box": {
|
|
215
|
-
// GET /box/authorized-keys — rank: any-builder — GET /box/authorized-keys
|
|
216
|
-
getBoxAuthorizedKeys: (args) => request("GET", "/box/authorized-keys", { hasBody: false }, args),
|
|
217
|
-
// POST /box/close — rank: any-builder — POST /box/close
|
|
218
|
-
postBoxClose: (args) => request("POST", "/box/close", { hasBody: true }, args),
|
|
219
|
-
// GET /box/connect — rank: public — GET /box/connect
|
|
220
|
-
getBoxConnect: (args) => request("GET", "/box/connect", { hasBody: false }, args),
|
|
221
|
-
// GET /box/connect.ps1 — rank: public — GET /box/connect.ps1
|
|
222
|
-
getBoxConnectPs1: (args) => request("GET", "/box/connect.ps1", { hasBody: false }, args),
|
|
223
|
-
// GET /box/connect.sh — rank: public — GET /box/connect.sh
|
|
224
|
-
getBoxConnectSh: (args) => request("GET", "/box/connect.sh", { hasBody: false }, args),
|
|
225
|
-
// POST /box/ensure — rank: any-builder — POST /box/ensure
|
|
226
|
-
postBoxEnsure: (args) => request("POST", "/box/ensure", { hasBody: true }, args),
|
|
227
|
-
// POST /box/heartbeat — rank: any-builder — POST /box/heartbeat
|
|
228
|
-
postBoxHeartbeat: (args) => request("POST", "/box/heartbeat", { hasBody: true }, args),
|
|
229
|
-
// POST /box/host-keys — rank: any-builder — POST /box/host-keys
|
|
230
|
-
postBoxHostKeys: (args) => request("POST", "/box/host-keys", { hasBody: true }, args),
|
|
231
|
-
// GET /box/managed-settings — rank: any-builder — GET /box/managed-settings
|
|
232
|
-
getBoxManagedSettings: (args) => request("GET", "/box/managed-settings", { hasBody: false }, args),
|
|
233
|
-
// GET /box/me — rank: any-builder — GET /box/me
|
|
234
|
-
getBoxMe: (args) => request("GET", "/box/me", { hasBody: false }, args),
|
|
235
|
-
// GET /box/scope — rank: any-builder — GET /box/scope
|
|
236
|
-
getBoxScope: (args) => request("GET", "/box/scope", { hasBody: false }, args),
|
|
237
|
-
// GET /box/source-access — rank: any-builder — GET /box/source-access
|
|
238
|
-
getBoxSourceAccess: (args) => request("GET", "/box/source-access", { hasBody: false }, args),
|
|
239
|
-
// GET /box/ssh-key — rank: any-builder — GET /box/ssh-key
|
|
240
|
-
getBoxSshKey: (args) => request("GET", "/box/ssh-key", { hasBody: false }, args),
|
|
241
|
-
// POST /box/ssh-key — rank: any-builder — POST /box/ssh-key
|
|
242
|
-
postBoxSshKey: (args) => request("POST", "/box/ssh-key", { hasBody: true }, args),
|
|
243
|
-
// DELETE /box/ssh-key/{id} — rank: any-builder — DELETE /box/ssh-key/:id
|
|
244
|
-
deleteBoxSshKeyId: (args) => request("DELETE", "/box/ssh-key/{id}", { hasBody: false }, args),
|
|
245
|
-
// GET /box/terminal — rank: any-builder — GET /box/terminal
|
|
246
|
-
getBoxTerminal: (args) => request("GET", "/box/terminal", { hasBody: false }, args),
|
|
247
|
-
// POST /box/terminal — rank: any-builder — POST /box/terminal
|
|
248
|
-
postBoxTerminal: (args) => request("POST", "/box/terminal", { hasBody: true }, args),
|
|
249
|
-
// POST /box/version — rank: any-builder — POST /box/version
|
|
250
|
-
postBoxVersion: (args) => request("POST", "/box/version", { hasBody: true }, args),
|
|
251
|
-
// GET /box/widen — rank: any-builder — GET /box/widen
|
|
252
|
-
getBoxWiden: (args) => request("GET", "/box/widen", { hasBody: false }, args),
|
|
253
|
-
// POST /box/widen — rank: any-builder — POST /box/widen
|
|
254
|
-
postBoxWiden: (args) => request("POST", "/box/widen", { hasBody: true }, args),
|
|
255
|
-
},
|
|
256
|
-
"boxes": {
|
|
257
|
-
// GET /boxes — rank: metic+archon — GET /boxes
|
|
258
|
-
getBoxes: (args) => request("GET", "/boxes", { hasBody: false }, args),
|
|
259
|
-
// PATCH /boxes/{builderId}/block — rank: metic+archon — PATCH /boxes/:builderId/block
|
|
260
|
-
patchBoxesBuilderIdBlock: (args) => request("PATCH", "/boxes/{builderId}/block", { hasBody: true }, args),
|
|
261
|
-
// POST /boxes/{builderId}/close — rank: metic+archon — POST /boxes/:builderId/close
|
|
262
|
-
postBoxesBuilderIdClose: (args) => request("POST", "/boxes/{builderId}/close", { hasBody: true }, args),
|
|
263
|
-
// GET /boxes/cost-ledger — rank: metic+archon — GET /boxes/cost-ledger
|
|
264
|
-
getBoxesCostLedger: (args) => request("GET", "/boxes/cost-ledger", { hasBody: false }, args),
|
|
265
|
-
},
|
|
266
206
|
"bugAttachments": {
|
|
267
207
|
// GET /bug-attachments/{name} — rank: any-builder — GET /bug-attachments/:name
|
|
268
208
|
getBugAttachmentsName: (args) => request("GET", "/bug-attachments/{name}", { hasBody: false }, args),
|
|
@@ -1027,6 +967,10 @@ function createClient(opts = {}) {
|
|
|
1027
967
|
// POST /sso/token — rank: public — POST /sso/token
|
|
1028
968
|
postSsoToken: (args) => request("POST", "/sso/token", { hasBody: true }, args),
|
|
1029
969
|
},
|
|
970
|
+
"store": {
|
|
971
|
+
// POST /store/modules/{key}/versions — rank: metic+archon — POST /store/modules/:key/versions
|
|
972
|
+
postStoreModulesKeyVersions: (args) => request("POST", "/store/modules/{key}/versions", { hasBody: true }, args),
|
|
973
|
+
},
|
|
1030
974
|
"taskRecommendations": {
|
|
1031
975
|
// POST /task-recommendations — rank: any-builder — POST /task-recommendations
|
|
1032
976
|
postTaskRecommendations: (args) => request("POST", "/task-recommendations", { hasBody: true }, args),
|
|
@@ -7,7 +7,6 @@ export declare const DEFAULT_BASE_URL: string;
|
|
|
7
7
|
export interface ApiErrorObject { code: string; message: string; details?: unknown }
|
|
8
8
|
export interface DeleteAgentsNameResponse { ok: boolean; deleted: unknown }
|
|
9
9
|
export interface DeleteBlockersIdLinkTaskIdResponse { ok: boolean; unlinked: boolean; released: unknown }
|
|
10
|
-
export interface DeleteBoxSshKeyIdResponse { ok: boolean; deleted: unknown }
|
|
11
10
|
export interface DeleteConnectionsIdResponse { outcome: unknown }
|
|
12
11
|
export interface DeleteDependenciesResponse { ok: boolean }
|
|
13
12
|
export interface DeleteGovernmentAssignmentsBuilderIdRankKeyResponse { ok: boolean; builder_id: unknown; rank_key: unknown; removed: unknown }
|
|
@@ -34,19 +33,12 @@ export interface GetAgentsNameResponse { ok: boolean; agent: unknown }
|
|
|
34
33
|
export interface GetAgentsResponse { ok: boolean; agents: unknown; counts: unknown; vocabulary: unknown }
|
|
35
34
|
export interface GetArtistGateResponse { ok: boolean; mode: unknown; since: unknown; holds: boolean; truncated: unknown; reviews: unknown; halt: unknown }
|
|
36
35
|
export interface GetAuditLogResponse { rows: unknown; page: unknown }
|
|
37
|
-
export interface GetAuthAppPairInfoResponse { pair_code: unknown; device_name: unknown; platform: unknown; status: unknown }
|
|
38
36
|
export interface GetAuthWebAdmissionStatusResponse { admitted: boolean }
|
|
39
37
|
export interface GetAutonomyRunnersResponse { runners: unknown; none: unknown }
|
|
40
38
|
export interface GetAutonomyRunsResponse { routine: unknown; limit: unknown; runs: unknown }
|
|
41
39
|
export interface GetBackupStatusResponse { backup_dir: unknown; db_name: unknown; latest_dump: unknown; stale: unknown; age_hours: unknown; trigger_running: unknown }
|
|
42
40
|
export interface GetBlockersIdResponse { blocker: unknown }
|
|
43
41
|
export interface GetBlockersResponse { blockers: unknown; page: unknown }
|
|
44
|
-
export interface GetBoxMeResponse { box: unknown; open_intent: unknown; cost: unknown }
|
|
45
|
-
export interface GetBoxSourceAccessResponse { scope: unknown; mode: unknown; sparse_paths: unknown; repo_url: unknown; credential: unknown; configured: unknown; separate_starter_repo: unknown; expires_at: unknown; ttl_seconds: unknown; guidance: unknown }
|
|
46
|
-
export interface GetBoxSshKeyResponse { keys: unknown }
|
|
47
|
-
export interface GetBoxTerminalResponse { state: unknown; url: unknown; credential: unknown; hint: unknown; warming_up?: boolean; terminal_at?: unknown }
|
|
48
|
-
export interface GetBoxWidenResponse { widen_paths: unknown; admitted: unknown; ignored: unknown; max: unknown }
|
|
49
|
-
export interface GetBoxesResponse { boxes: unknown }
|
|
50
42
|
export interface GetBuildersDirectoryResponse { builders: unknown }
|
|
51
43
|
export interface GetBuildersIdActiveClaimsResponse { builder_id: unknown; claims: unknown; stale_hours: unknown; stale_hours_source: unknown }
|
|
52
44
|
export interface GetBuildersIdActivityResponse { builder_id: unknown; section: unknown; role: unknown; rows: unknown; total: unknown }
|
|
@@ -183,8 +175,6 @@ export interface PageInfo { limit: number; offset: number; total?: number }
|
|
|
183
175
|
export interface PatchAccessRequestsIdRequest { status: string }
|
|
184
176
|
export interface PatchAccessRequestsIdResponse { ok: boolean; request: unknown; unchanged?: boolean }
|
|
185
177
|
export interface PatchAgentsNameResponse { ok: boolean; agent: unknown }
|
|
186
|
-
export interface PatchBoxesBuilderIdBlockRequest { blocked: boolean; reason?: string; close_current?: boolean }
|
|
187
|
-
export interface PatchBoxesBuilderIdBlockResponse { ok: boolean; blocked: unknown; close_queued: unknown }
|
|
188
178
|
export interface PatchBuildersIdBudgetRequest { monthly_budget_usd?: unknown }
|
|
189
179
|
export interface PatchBuildersIdBudgetResponse { builder: unknown }
|
|
190
180
|
export interface PatchBuildersIdRankRequest { rank: string }
|
|
@@ -240,11 +230,6 @@ export interface PostAgentsNameEnableResponse { ok: boolean; agent: unknown }
|
|
|
240
230
|
export interface PostAgentsNameInvokeRequest { input?: string }
|
|
241
231
|
export interface PostAgentsNameInvokeResponse { ok: boolean; run_id: unknown; poll: unknown; message: unknown }
|
|
242
232
|
export interface PostAgentsResponse { ok: boolean; agent: unknown }
|
|
243
|
-
export interface PostAuthAppPairApproveRequest { pair_code: string }
|
|
244
|
-
export interface PostAuthAppPairApproveResponse { ok: boolean }
|
|
245
|
-
export interface PostAuthAppPairPollRequest { poll_token: string }
|
|
246
|
-
export interface PostAuthAppPairStartRequest { device_name?: string; platform?: string }
|
|
247
|
-
export interface PostAuthAppPairStartResponse { pair_code: unknown; poll_token: unknown; verify_path: unknown; verify_url: unknown; expires_in: unknown; interval: unknown }
|
|
248
233
|
export interface PostAuthBackchannelLogoutRequest { logout_token: string }
|
|
249
234
|
export interface PostAuthBackchannelLogoutResponse { ok: boolean }
|
|
250
235
|
export interface PostAuthCliTokenIssueResponse { ok: boolean; token: unknown; expires_at: unknown; builder_login: unknown; api_base: unknown; paste_command: unknown }
|
|
@@ -268,21 +253,6 @@ export interface PostBlockersIdLinkResponse { ok: boolean; blocked: unknown }
|
|
|
268
253
|
export interface PostBlockersIdResolveRequest { resolution_note?: string }
|
|
269
254
|
export interface PostBlockersRequest { title: string; body_md?: string; source?: string; source_ref?: string }
|
|
270
255
|
export interface PostBlockersResponse { skipped?: boolean; reason?: unknown; blocker?: unknown }
|
|
271
|
-
export interface PostBoxCloseResponse { ok: boolean; queued: unknown; action: unknown; message: unknown }
|
|
272
|
-
export interface PostBoxEnsureResponse { state: unknown; action: unknown; queued: boolean; intent?: unknown }
|
|
273
|
-
export interface PostBoxHeartbeatRequest { claude_active?: boolean; attached?: boolean }
|
|
274
|
-
export interface PostBoxHeartbeatResponse { ok: boolean; state: unknown }
|
|
275
|
-
export interface PostBoxHostKeysRequest { host_keys: string }
|
|
276
|
-
export interface PostBoxHostKeysResponse { ok: boolean; state: unknown; count: unknown }
|
|
277
|
-
export interface PostBoxSshKeyRequest { public_key: string; label?: string }
|
|
278
|
-
export interface PostBoxSshKeyResponse { ok: boolean; key: unknown }
|
|
279
|
-
export interface PostBoxTerminalRequest { url: string; credential?: string }
|
|
280
|
-
export interface PostBoxTerminalResponse { ok: boolean; state: unknown }
|
|
281
|
-
export interface PostBoxVersionRequest { sha: string; committed_at?: string }
|
|
282
|
-
export interface PostBoxVersionResponse { ok: boolean; state: unknown }
|
|
283
|
-
export interface PostBoxWidenRequest { add?: unknown[]; remove?: unknown[]; clear?: boolean }
|
|
284
|
-
export interface PostBoxWidenResponse { ok: boolean; widen_paths: unknown; admitted: unknown; ignored: unknown; max: unknown }
|
|
285
|
-
export interface PostBoxesBuilderIdCloseResponse { ok: boolean; queued: unknown; action: unknown; state: unknown; message: unknown }
|
|
286
256
|
export interface PostClaimsBatchReleaseRequest { claim_ids: unknown[]; force?: boolean }
|
|
287
257
|
export interface PostClaimsBatchReleaseResponse { released: unknown; failures: unknown }
|
|
288
258
|
export interface PostClaimsBatchRequest { task_ids: unknown[]; worktree_name?: string; bind_session?: boolean }
|
|
@@ -459,6 +429,7 @@ export interface PostSsoMembershipCheckInRequest { client_id: string; client_sec
|
|
|
459
429
|
export interface PostSsoMembershipCheckInResponse { ok: boolean }
|
|
460
430
|
export interface PostSsoTokenRequest { client_id: string; client_secret: string; code: string; redirect_uri: string }
|
|
461
431
|
export interface PostSsoTokenResponse { github_id: unknown; github_login: unknown; display_name: unknown; avatar_url: unknown }
|
|
432
|
+
export interface PostStoreModulesKeyVersionsResponse { ok: boolean; created_module: unknown; version: unknown }
|
|
462
433
|
export interface PostTaskRecommendationsRequest { task_id: number; recommended_to: number; reason: string }
|
|
463
434
|
export interface PostTaskRecommendationsResponse { ok: boolean; recommendation: unknown }
|
|
464
435
|
export interface PostTasksIdAttestGateRequest { head_sha: string }
|
|
@@ -565,14 +536,6 @@ export interface BongosClient {
|
|
|
565
536
|
getAuditLog(args?: RequestArgs): Promise<GetAuditLogResponse>;
|
|
566
537
|
};
|
|
567
538
|
"auth": {
|
|
568
|
-
/** POST /auth/app-pair/approve — rank: any-builder */
|
|
569
|
-
postAuthAppPairApprove(args: RequestArgs & { body: PostAuthAppPairApproveRequest }): Promise<PostAuthAppPairApproveResponse>;
|
|
570
|
-
/** GET /auth/app-pair/info — rank: any-builder */
|
|
571
|
-
getAuthAppPairInfo(args?: RequestArgs): Promise<GetAuthAppPairInfoResponse>;
|
|
572
|
-
/** POST /auth/app-pair/poll — rank: public */
|
|
573
|
-
postAuthAppPairPoll(args: RequestArgs & { body: PostAuthAppPairPollRequest }): Promise<ApiResponse>;
|
|
574
|
-
/** POST /auth/app-pair/start — rank: public */
|
|
575
|
-
postAuthAppPairStart(args?: RequestArgs & { body?: PostAuthAppPairStartRequest }): Promise<PostAuthAppPairStartResponse>;
|
|
576
539
|
/** POST /auth/backchannel-logout — rank: public */
|
|
577
540
|
postAuthBackchannelLogout(args: RequestArgs & { body: PostAuthBackchannelLogoutRequest }): Promise<PostAuthBackchannelLogoutResponse>;
|
|
578
541
|
/** POST /auth/cli-token/issue — rank: any-builder */
|
|
@@ -640,58 +603,6 @@ export interface BongosClient {
|
|
|
640
603
|
/** POST /blockers/{id}/resolve — rank: metic+archon */
|
|
641
604
|
postBlockersIdResolve(args?: RequestArgs & { body?: PostBlockersIdResolveRequest }): Promise<ApiResponse>;
|
|
642
605
|
};
|
|
643
|
-
"box": {
|
|
644
|
-
/** GET /box/authorized-keys — rank: any-builder */
|
|
645
|
-
getBoxAuthorizedKeys(args?: RequestArgs): Promise<ApiResponse>;
|
|
646
|
-
/** POST /box/close — rank: any-builder */
|
|
647
|
-
postBoxClose(args?: RequestArgs): Promise<PostBoxCloseResponse>;
|
|
648
|
-
/** GET /box/connect — rank: public */
|
|
649
|
-
getBoxConnect(args?: RequestArgs): Promise<ApiResponse>;
|
|
650
|
-
/** GET /box/connect.ps1 — rank: public */
|
|
651
|
-
getBoxConnectPs1(args?: RequestArgs): Promise<ApiResponse>;
|
|
652
|
-
/** GET /box/connect.sh — rank: public */
|
|
653
|
-
getBoxConnectSh(args?: RequestArgs): Promise<ApiResponse>;
|
|
654
|
-
/** POST /box/ensure — rank: any-builder */
|
|
655
|
-
postBoxEnsure(args?: RequestArgs): Promise<PostBoxEnsureResponse>;
|
|
656
|
-
/** POST /box/heartbeat — rank: any-builder */
|
|
657
|
-
postBoxHeartbeat(args?: RequestArgs & { body?: PostBoxHeartbeatRequest }): Promise<PostBoxHeartbeatResponse>;
|
|
658
|
-
/** POST /box/host-keys — rank: any-builder */
|
|
659
|
-
postBoxHostKeys(args: RequestArgs & { body: PostBoxHostKeysRequest }): Promise<PostBoxHostKeysResponse>;
|
|
660
|
-
/** GET /box/managed-settings — rank: any-builder */
|
|
661
|
-
getBoxManagedSettings(args?: RequestArgs): Promise<ApiResponse>;
|
|
662
|
-
/** GET /box/me — rank: any-builder */
|
|
663
|
-
getBoxMe(args?: RequestArgs): Promise<GetBoxMeResponse>;
|
|
664
|
-
/** GET /box/scope — rank: any-builder */
|
|
665
|
-
getBoxScope(args?: RequestArgs): Promise<ApiResponse>;
|
|
666
|
-
/** GET /box/source-access — rank: any-builder */
|
|
667
|
-
getBoxSourceAccess(args?: RequestArgs): Promise<GetBoxSourceAccessResponse>;
|
|
668
|
-
/** GET /box/ssh-key — rank: any-builder */
|
|
669
|
-
getBoxSshKey(args?: RequestArgs): Promise<GetBoxSshKeyResponse>;
|
|
670
|
-
/** POST /box/ssh-key — rank: any-builder */
|
|
671
|
-
postBoxSshKey(args: RequestArgs & { body: PostBoxSshKeyRequest }): Promise<PostBoxSshKeyResponse>;
|
|
672
|
-
/** DELETE /box/ssh-key/{id} — rank: any-builder */
|
|
673
|
-
deleteBoxSshKeyId(args?: RequestArgs): Promise<DeleteBoxSshKeyIdResponse>;
|
|
674
|
-
/** GET /box/terminal — rank: any-builder */
|
|
675
|
-
getBoxTerminal(args?: RequestArgs): Promise<GetBoxTerminalResponse>;
|
|
676
|
-
/** POST /box/terminal — rank: any-builder */
|
|
677
|
-
postBoxTerminal(args: RequestArgs & { body: PostBoxTerminalRequest }): Promise<PostBoxTerminalResponse>;
|
|
678
|
-
/** POST /box/version — rank: any-builder */
|
|
679
|
-
postBoxVersion(args: RequestArgs & { body: PostBoxVersionRequest }): Promise<PostBoxVersionResponse>;
|
|
680
|
-
/** GET /box/widen — rank: any-builder */
|
|
681
|
-
getBoxWiden(args?: RequestArgs): Promise<GetBoxWidenResponse>;
|
|
682
|
-
/** POST /box/widen — rank: any-builder */
|
|
683
|
-
postBoxWiden(args?: RequestArgs & { body?: PostBoxWidenRequest }): Promise<PostBoxWidenResponse>;
|
|
684
|
-
};
|
|
685
|
-
"boxes": {
|
|
686
|
-
/** GET /boxes — rank: metic+archon */
|
|
687
|
-
getBoxes(args?: RequestArgs): Promise<GetBoxesResponse>;
|
|
688
|
-
/** PATCH /boxes/{builderId}/block — rank: metic+archon */
|
|
689
|
-
patchBoxesBuilderIdBlock(args: RequestArgs & { body: PatchBoxesBuilderIdBlockRequest }): Promise<PatchBoxesBuilderIdBlockResponse>;
|
|
690
|
-
/** POST /boxes/{builderId}/close — rank: metic+archon */
|
|
691
|
-
postBoxesBuilderIdClose(args?: RequestArgs): Promise<PostBoxesBuilderIdCloseResponse>;
|
|
692
|
-
/** GET /boxes/cost-ledger — rank: metic+archon */
|
|
693
|
-
getBoxesCostLedger(args?: RequestArgs): Promise<ApiResponse>;
|
|
694
|
-
};
|
|
695
606
|
"bugAttachments": {
|
|
696
607
|
/** GET /bug-attachments/{name} — rank: any-builder */
|
|
697
608
|
getBugAttachmentsName(args?: RequestArgs): Promise<ApiResponse>;
|
|
@@ -1456,6 +1367,10 @@ export interface BongosClient {
|
|
|
1456
1367
|
/** POST /sso/token — rank: public */
|
|
1457
1368
|
postSsoToken(args: RequestArgs & { body: PostSsoTokenRequest }): Promise<PostSsoTokenResponse>;
|
|
1458
1369
|
};
|
|
1370
|
+
"store": {
|
|
1371
|
+
/** POST /store/modules/{key}/versions — rank: metic+archon */
|
|
1372
|
+
postStoreModulesKeyVersions(args?: RequestArgs): Promise<PostStoreModulesKeyVersionsResponse>;
|
|
1373
|
+
};
|
|
1459
1374
|
"taskRecommendations": {
|
|
1460
1375
|
/** POST /task-recommendations — rank: any-builder */
|
|
1461
1376
|
postTaskRecommendations(args: RequestArgs & { body: PostTaskRecommendationsRequest }): Promise<PostTaskRecommendationsResponse>;
|
|
@@ -133,14 +133,6 @@ export function createClient(opts = {}) {
|
|
|
133
133
|
getAuditLog: (args) => request("GET", "/audit-log", { hasBody: false }, args),
|
|
134
134
|
},
|
|
135
135
|
"auth": {
|
|
136
|
-
// POST /auth/app-pair/approve — rank: any-builder — POST /auth/app-pair/approve
|
|
137
|
-
postAuthAppPairApprove: (args) => request("POST", "/auth/app-pair/approve", { hasBody: true }, args),
|
|
138
|
-
// GET /auth/app-pair/info — rank: any-builder — GET /auth/app-pair/info
|
|
139
|
-
getAuthAppPairInfo: (args) => request("GET", "/auth/app-pair/info", { hasBody: false }, args),
|
|
140
|
-
// POST /auth/app-pair/poll — rank: public — POST /auth/app-pair/poll
|
|
141
|
-
postAuthAppPairPoll: (args) => request("POST", "/auth/app-pair/poll", { hasBody: true }, args),
|
|
142
|
-
// POST /auth/app-pair/start — rank: public — POST /auth/app-pair/start
|
|
143
|
-
postAuthAppPairStart: (args) => request("POST", "/auth/app-pair/start", { hasBody: true }, args),
|
|
144
136
|
// POST /auth/backchannel-logout — rank: public — POST /auth/backchannel-logout
|
|
145
137
|
postAuthBackchannelLogout: (args) => request("POST", "/auth/backchannel-logout", { hasBody: true }, args),
|
|
146
138
|
// POST /auth/cli-token/issue — rank: any-builder — POST /auth/cli-token/issue
|
|
@@ -208,58 +200,6 @@ export function createClient(opts = {}) {
|
|
|
208
200
|
// POST /blockers/{id}/resolve — rank: metic+archon — POST /blockers/:id/resolve
|
|
209
201
|
postBlockersIdResolve: (args) => request("POST", "/blockers/{id}/resolve", { hasBody: true }, args),
|
|
210
202
|
},
|
|
211
|
-
"box": {
|
|
212
|
-
// GET /box/authorized-keys — rank: any-builder — GET /box/authorized-keys
|
|
213
|
-
getBoxAuthorizedKeys: (args) => request("GET", "/box/authorized-keys", { hasBody: false }, args),
|
|
214
|
-
// POST /box/close — rank: any-builder — POST /box/close
|
|
215
|
-
postBoxClose: (args) => request("POST", "/box/close", { hasBody: true }, args),
|
|
216
|
-
// GET /box/connect — rank: public — GET /box/connect
|
|
217
|
-
getBoxConnect: (args) => request("GET", "/box/connect", { hasBody: false }, args),
|
|
218
|
-
// GET /box/connect.ps1 — rank: public — GET /box/connect.ps1
|
|
219
|
-
getBoxConnectPs1: (args) => request("GET", "/box/connect.ps1", { hasBody: false }, args),
|
|
220
|
-
// GET /box/connect.sh — rank: public — GET /box/connect.sh
|
|
221
|
-
getBoxConnectSh: (args) => request("GET", "/box/connect.sh", { hasBody: false }, args),
|
|
222
|
-
// POST /box/ensure — rank: any-builder — POST /box/ensure
|
|
223
|
-
postBoxEnsure: (args) => request("POST", "/box/ensure", { hasBody: true }, args),
|
|
224
|
-
// POST /box/heartbeat — rank: any-builder — POST /box/heartbeat
|
|
225
|
-
postBoxHeartbeat: (args) => request("POST", "/box/heartbeat", { hasBody: true }, args),
|
|
226
|
-
// POST /box/host-keys — rank: any-builder — POST /box/host-keys
|
|
227
|
-
postBoxHostKeys: (args) => request("POST", "/box/host-keys", { hasBody: true }, args),
|
|
228
|
-
// GET /box/managed-settings — rank: any-builder — GET /box/managed-settings
|
|
229
|
-
getBoxManagedSettings: (args) => request("GET", "/box/managed-settings", { hasBody: false }, args),
|
|
230
|
-
// GET /box/me — rank: any-builder — GET /box/me
|
|
231
|
-
getBoxMe: (args) => request("GET", "/box/me", { hasBody: false }, args),
|
|
232
|
-
// GET /box/scope — rank: any-builder — GET /box/scope
|
|
233
|
-
getBoxScope: (args) => request("GET", "/box/scope", { hasBody: false }, args),
|
|
234
|
-
// GET /box/source-access — rank: any-builder — GET /box/source-access
|
|
235
|
-
getBoxSourceAccess: (args) => request("GET", "/box/source-access", { hasBody: false }, args),
|
|
236
|
-
// GET /box/ssh-key — rank: any-builder — GET /box/ssh-key
|
|
237
|
-
getBoxSshKey: (args) => request("GET", "/box/ssh-key", { hasBody: false }, args),
|
|
238
|
-
// POST /box/ssh-key — rank: any-builder — POST /box/ssh-key
|
|
239
|
-
postBoxSshKey: (args) => request("POST", "/box/ssh-key", { hasBody: true }, args),
|
|
240
|
-
// DELETE /box/ssh-key/{id} — rank: any-builder — DELETE /box/ssh-key/:id
|
|
241
|
-
deleteBoxSshKeyId: (args) => request("DELETE", "/box/ssh-key/{id}", { hasBody: false }, args),
|
|
242
|
-
// GET /box/terminal — rank: any-builder — GET /box/terminal
|
|
243
|
-
getBoxTerminal: (args) => request("GET", "/box/terminal", { hasBody: false }, args),
|
|
244
|
-
// POST /box/terminal — rank: any-builder — POST /box/terminal
|
|
245
|
-
postBoxTerminal: (args) => request("POST", "/box/terminal", { hasBody: true }, args),
|
|
246
|
-
// POST /box/version — rank: any-builder — POST /box/version
|
|
247
|
-
postBoxVersion: (args) => request("POST", "/box/version", { hasBody: true }, args),
|
|
248
|
-
// GET /box/widen — rank: any-builder — GET /box/widen
|
|
249
|
-
getBoxWiden: (args) => request("GET", "/box/widen", { hasBody: false }, args),
|
|
250
|
-
// POST /box/widen — rank: any-builder — POST /box/widen
|
|
251
|
-
postBoxWiden: (args) => request("POST", "/box/widen", { hasBody: true }, args),
|
|
252
|
-
},
|
|
253
|
-
"boxes": {
|
|
254
|
-
// GET /boxes — rank: metic+archon — GET /boxes
|
|
255
|
-
getBoxes: (args) => request("GET", "/boxes", { hasBody: false }, args),
|
|
256
|
-
// PATCH /boxes/{builderId}/block — rank: metic+archon — PATCH /boxes/:builderId/block
|
|
257
|
-
patchBoxesBuilderIdBlock: (args) => request("PATCH", "/boxes/{builderId}/block", { hasBody: true }, args),
|
|
258
|
-
// POST /boxes/{builderId}/close — rank: metic+archon — POST /boxes/:builderId/close
|
|
259
|
-
postBoxesBuilderIdClose: (args) => request("POST", "/boxes/{builderId}/close", { hasBody: true }, args),
|
|
260
|
-
// GET /boxes/cost-ledger — rank: metic+archon — GET /boxes/cost-ledger
|
|
261
|
-
getBoxesCostLedger: (args) => request("GET", "/boxes/cost-ledger", { hasBody: false }, args),
|
|
262
|
-
},
|
|
263
203
|
"bugAttachments": {
|
|
264
204
|
// GET /bug-attachments/{name} — rank: any-builder — GET /bug-attachments/:name
|
|
265
205
|
getBugAttachmentsName: (args) => request("GET", "/bug-attachments/{name}", { hasBody: false }, args),
|
|
@@ -1024,6 +964,10 @@ export function createClient(opts = {}) {
|
|
|
1024
964
|
// POST /sso/token — rank: public — POST /sso/token
|
|
1025
965
|
postSsoToken: (args) => request("POST", "/sso/token", { hasBody: true }, args),
|
|
1026
966
|
},
|
|
967
|
+
"store": {
|
|
968
|
+
// POST /store/modules/{key}/versions — rank: metic+archon — POST /store/modules/:key/versions
|
|
969
|
+
postStoreModulesKeyVersions: (args) => request("POST", "/store/modules/{key}/versions", { hasBody: true }, args),
|
|
970
|
+
},
|
|
1027
971
|
"taskRecommendations": {
|
|
1028
972
|
// POST /task-recommendations — rank: any-builder — POST /task-recommendations
|
|
1029
973
|
postTaskRecommendations: (args) => request("POST", "/task-recommendations", { hasBody: true }, args),
|
|
@@ -17,11 +17,7 @@
|
|
|
17
17
|
"statusDataUrl": "",
|
|
18
18
|
"cookieDomain": "",
|
|
19
19
|
"oauthOrigin": "http://localhost:3000",
|
|
20
|
-
"
|
|
21
|
-
"sshBoxBase": "",
|
|
22
|
-
"instanceBase": "",
|
|
23
|
-
"sandboxPrefix": "sandbox-",
|
|
24
|
-
"termPrefix": "term-"
|
|
20
|
+
"instanceBase": ""
|
|
25
21
|
},
|
|
26
22
|
"auth": {
|
|
27
23
|
"_note": "Cross-site identity (ADR 0141). idp=false → this instance owns its auth outright (its own GitHub app; the default + the self-hosted path). A HOSTED instance sets idp=true and gets its hub origin + client credentials from env (<PREFIX>_HUB_ORIGIN / _HUB_CLIENT_ID / _HUB_CLIENT_SECRET, written by provisioning) so web + CLI sign-in federate through the Cloud Bongos hub with no GitHub app of its own. Identity is federated; authority stays local.",
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_note": "Feature-module selection — the VANILLA (customer-0) default: every optional feature OFF. A fresh Cloud Bongos instance is the methodology core only (builders/tasks/claims/credits/grading/memory/recall) with the engineer discipline. To enable a module on an instance, copy this to config/modules.json and flip flags (or set <ENVPREFIX>_MODULE_<NAME>=1). Sibling of config/branding.neutral.json. Owned by R54 / task 1193 (src/modules.js, ADR 0062 §4). Known modules: game, art-pipeline, discord.
|
|
2
|
+
"_note": "Feature-module selection — the VANILLA (customer-0) default: every optional feature OFF. A fresh Cloud Bongos instance is the methodology core only (builders/tasks/claims/credits/grading/memory/recall) with the engineer discipline. To enable a module on an instance, copy this to config/modules.json and flip flags (or set <ENVPREFIX>_MODULE_<NAME>=1). Sibling of config/branding.neutral.json. Owned by R54 / task 1193 (src/modules.js, ADR 0062 §4). Known modules: game, art-pipeline, discord.",
|
|
3
3
|
"modules": {
|
|
4
4
|
"game": false,
|
|
5
5
|
"art-pipeline": false,
|
|
6
|
-
"discord": false
|
|
7
|
-
"dev-box": false
|
|
6
|
+
"discord": false
|
|
8
7
|
}
|
|
9
8
|
}
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
"artifact-staleness": { "scope": "instance-wide", "enabled": true, "cadence": "daily", "requiresAutonomy": false, "note": "deterministic; task 1001930 / ADR 0110 pt.5. INSTANCE-SIDE ONLY, and the opposite of artifact-audit above: it reads the gitignored deploy-generated files on the serving machine's disk, which a CI checkout legitimately does not have — so it declares no cadence in its SKILL.md and no workflow fires it. This cadence is the hint the operator's own scheduler reads." },
|
|
7
7
|
"bfg": { "scope": "instance-wide", "builderAware": true, "enabled": true, "cadence": "nightly", "requiresAutonomy": false, "note": "Parts A+B read-only + always-on; Part C (cross-builder write) is separately gated by BFG_WRITE_ENABLED + a provisioned principal token." },
|
|
8
8
|
"bfg-session-eval": { "scope": "instance-wide", "builderAware": true, "enabled": true, "cadence": "nightly", "requiresAutonomy": false },
|
|
9
|
-
"box-dormant-reclaim": { "scope": "instance-wide", "enabled": false, "cadence": "daily", "requiresAutonomy": false, "note": "RETIRED with the dev-box module (goal 1000091, task 1003886). Held OFF so the fleet is inert while the removal lands; the routine body is deleted by the dev-box teardown tasks." },
|
|
10
|
-
"box-idle-suspend": { "scope": "instance-wide", "enabled": false, "cadence": "hourly", "requiresAutonomy": false, "note": "RETIRED with the dev-box module (goal 1000091, task 1003886). Held OFF so the fleet is inert while the removal lands; the routine body is deleted by the dev-box teardown tasks." },
|
|
11
9
|
"core-update-subscription": { "scope": "instance-wide", "enabled": true, "cadence": "15min", "requiresAutonomy": true, "note": "Patch-only auto-upgrade of subscribed consumer instances (ADR 0136 / task 2150). Default OFF + opt-in: the roster (config/update-subscriptions.json) ships empty, so this is a no-op until an operator arms autonomy AND lists an instance. Every upgrade is health-gated with auto-rollback (task 2149). CADENCE (task 1003674): this is the knob that decides how long a published release waits before a subscribed instance takes it — at 'daily' a builder's ship reached the live site up to 24h late, because everything upstream is already fast (CI publishes to npm within ~2 min of merge) and this sweep was the only slow step. 15min is the worst-case lag, not a re-check cost: the sweep exits immediately when the registry has nothing newer. FLOOR ~5min: an upgrading run takes ~2 min, and runs must not overlap. Installing the period is the operator's half — see docs/recipes/upgrading-the-core.md." },
|
|
12
10
|
"dep-audit-nightly": { "scope": "instance-wide", "enabled": true, "cadence": "nightly", "requiresAutonomy": false },
|
|
13
11
|
"diagram-drift": { "scope": "instance-wide", "enabled": true, "cadence": "daily", "requiresAutonomy": false },
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# 0145 — A free "own-repo" hosted project tier needs domain separation + per-project isolation (not a bare cloudbongos.com subdomain)
|
|
2
2
|
|
|
3
|
+
- **Status update 2026-09-28 — Finding 1 is OPEN again, and permanently ([ADR 0345](0345-we-host-every-projects-hall-and-its-app-deploys-where-the-owner-chooses.md) decision 6).** Project halls now stay hosted on our box, so ADR 0323's "closed by removing its precondition" below no longer holds. Measured: the hub still sets `Domain=.cloudbongos.com`, and a hall loads modules from its own repository, so a hall at one of our addresses can read a visiting hub builder's session. The sign-in hardening is a **blocking prerequisite again** for any new hall at one of our addresses, filed as [task 1004357](https://cloudbongos.com/builders#/task/1004357). A hall on the owner's own domain is not exposed.
|
|
3
4
|
- **Status:** **Superseded in part by [ADR 0323](0323-hosting-is-three-shapes-and-we-are-not-the-landlord.md)** (2026-09-21). Three of this ADR's decisions are replaced: the free tier becomes a **capped trial**, not all-free; customer projects leave the shared box for a managed platform, so **container isolation on our own box is no longer the plan**; and **Finding 1 is closed by removing its precondition** — with no customer code on a `cloudbongos.com` subdomain there is no tenant to receive the hub session cookie, so the sign-in hardening in the build sequence below is no longer a blocking prerequisite (it remains worth doing on its own merits). The two security FINDINGS below stand as analysis and are the reason the new direction is safe.
|
|
4
5
|
- **Status:** Accepted — owner decided 2026-07-15: **keep `cloudbongos.com`** (no separate domain), **container** isolation, **all-free** for now. Choosing the literal same domain makes hardening core sign-in a required prerequisite (see "Decisions" + "Required build sequence"). Build unblocked ([task 1002251](https://cloudbongos.com/builders#/task/1002251)); blocker 1000080 resolved.
|
|
5
6
|
- **Date:** 2026-07-15
|
package/docs/adr/0285-a-shared-box-holds-about-twelve-projects-per-gb-and-memory-is-the-wall.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# ADR 0285 — A shared box holds about twelve projects per GB, and memory is the wall
|
|
2
2
|
|
|
3
|
+
- **Status update 2026-09-28 — load-bearing again ([ADR 0345](0345-we-host-every-projects-hall-and-its-app-deploys-where-the-owner-chooses.md) decision 7).** Project halls stay on the shared box, so the ceiling below gates project creation again: at the ceiling the create route refuses `box_full` up front. The resize ([task 1003923](https://cloudbongos.com/builders#/task/1003923)) is not a prerequisite today, and becomes the next step when the project count nears the ceiling. The "no longer load-bearing" status below is superseded.
|
|
3
4
|
- **Status:** accepted; **no longer load-bearing as of [ADR 0323](0323-hosting-is-three-shapes-and-we-are-not-the-landlord.md)** (2026-09-21). The measurements below are correct and still describe the box — it simply stops holding customer projects, so the ceiling no longer gates project creation and the queued resize ([task 1003923](https://cloudbongos.com/builders#/task/1003923)) is held rather than spent.
|
|
4
5
|
- **Date:** 2026-09-15
|
|
5
6
|
- **Task:** [1003877](https://cloudbongos.com/builders#/task/1003877) (goal 1000106), a spike. Informs [1003923](https://cloudbongos.com/builders#/task/1003923) (the resize) and [1001949](https://cloudbongos.com/builders#/task/1001949) (managed billing).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ADR 0323 — Hosting is three shapes, and we are not the landlord
|
|
2
2
|
|
|
3
|
-
- **Status:** accepted, **superseded in part by [ADR 0327](0327-a-cloud-host-runs-on-the-owners-account-and-the-key-is-borrowed.md)** (2026-09-22) — the platform choice, the not-the-landlord posture and decisions 2, 4, 5 and 6 STAND. Changed: §1 drops `dedicated-cloud-host` (two shapes, not three); §3's ~$14/project is the **owner's** cost, not ours, because a `cloud-host` now runs on the owner's own account; §7's capped free tier is retired with its premise — we no longer pay for customer compute.
|
|
3
|
+
- **Status:** accepted, **§2 superseded by [ADR 0345](0345-we-host-every-projects-hall-and-its-app-deploys-where-the-owner-chooses.md)** (2026-09-28): project halls stay on the shared box, hosted by us, and only the owner's app goes to a platform of their choosing. Also **superseded in part by [ADR 0327](0327-a-cloud-host-runs-on-the-owners-account-and-the-key-is-borrowed.md)** (2026-09-22) — the platform choice, the not-the-landlord posture and decisions 2, 4, 5 and 6 STAND. Changed: §1 drops `dedicated-cloud-host` (two shapes, not three); §3's ~$14/project is the **owner's** cost, not ours, because a `cloud-host` now runs on the owner's own account; §7's capped free tier is retired with its premise — we no longer pay for customer compute.
|
|
4
4
|
- **Date:** 2026-09-21
|
|
5
5
|
- **Task:** [task 1004140](https://cloudbongos.com/builders#/task/1004140) (goal 1000106 — working area 1, Project creation)
|
|
6
6
|
- **Deciders:** Lars (Archon) — every numbered decision below is the owner's; Claude ran the audit and the platform comparison.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ADR 0327 — A cloud-host runs on the owner's own account, and the key is borrowed, not stored
|
|
2
2
|
|
|
3
|
-
- **Status:** accepted
|
|
3
|
+
- **Status:** accepted, **superseded in part by [ADR 0345](0345-we-host-every-projects-hall-and-its-app-deploys-where-the-owner-chooses.md)** (2026-09-28): what a cloud-host puts on the owner's Render account is their **app**, not the hall, which we host. The borrowed-key mechanism (§2) and never destroying an owner's infrastructure (§3) stand. Also **one Context finding retracted 2026-09-23** ([task 1004186](https://cloudbongos.com/builders#/task/1004186)): `mercury` was *not* already on Render, and the first Consequences bullet that rested on it is retracted with it. Decisions 1–5 are unaffected and stand. See the correction in Context.
|
|
4
4
|
- **Date:** 2026-09-22
|
|
5
5
|
- **Task:** [task 1004175](https://cloudbongos.com/builders#/task/1004175) (goal 1000106 — working area 1, Project creation)
|
|
6
6
|
- **Deciders:** Lars (Archon) — decisions 1, 3 and 4 are the owner's. Decision 2 is Claude's design answer to the owner's question "is there a simpler way", and decision 5 records a measurement.
|
|
@@ -181,6 +181,8 @@ The lifecycle port gains what these need: `updateTaskDescription`, `webClaimTask
|
|
|
181
181
|
- `wrong_page`: the file's `page_id` is not the page;
|
|
182
182
|
- `reading_moved`: the file's `reading_hash` is not the draft's, because the page changed since the download. The artist is asked to download again, so no stale line is merged by position.
|
|
183
183
|
|
|
184
|
+
**Amended 2026-09-28 ([task 1004354](https://cloudbongos.com/builders#/task/1004354), BV2.TW23): a file that lost its page details.** A Google Docs "download as .docx" keeps the words, the Title and Heading 2 styles and the comments, but drops the custom properties, the shown-text part and every content control. Such a file (no `page_id`) is no longer refused on that alone. It is identified by what the download wrote: its Title must be this page's title and its section headings must be this reading's, in order (quotes folded, spacing ignored). A mismatch is `wrong_page`, naming what did not match (`mismatched: ['title', 'headings']`, `page_details: false`). A match maps by position against the current reading as above, so an added or dropped line is still `structure_changed`, named. With no `reading_hash` there is no reading to have moved from: the structure matching THIS reading is the check. With no shown-text part the file is the whole state (TW09's `baseline: false`), and the answer's `merge.page_details` says the file was matched by title and headings. The untagged paragraphs above the first heading (the Title and the note) are never lines, even when the note lost its custom style. In the editor a refused upload opens a panel over the page naming what happened and the next step, and the notice on the paper stays after it closes.
|
|
185
|
+
|
|
184
186
|
## Decided by the builder, confirmed by the owner
|
|
185
187
|
|
|
186
188
|
**Confirmed 2026-09-28:** the owner accepted every pick below as written (recorded under [task 1004313](https://cloudbongos.com/builders#/task/1004313)).
|