@bongos/core 1.19.1080 → 1.20.1
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 +573 -188
- package/.claude/skills/planning-session/SKILL.md +6 -2
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +34 -0
- package/clients/bongos-client/index.cjs +34 -0
- package/clients/bongos-client/index.d.ts +53 -4
- package/clients/bongos-client/index.mjs +34 -0
- package/docs/adr/0099-delayed-redacted-mirror-export.md +5 -1
- package/docs/adr/0111-instance-hosting-provisioning-module.md +1 -0
- package/docs/adr/0120-pay-on-land-and-builder-owned-rebase-gate.md +17 -0
- package/docs/adr/0176-private-repo-deploy-keys.md +2 -0
- package/docs/adr/0310-a-speciality-offers-skills-and-the-adopter-chooses-them.md +1 -1
- package/docs/adr/0343-a-module-score-is-a-security-gate-then-an-average-of-visible-parts.md +2 -0
- package/docs/adr/0347-every-store-module-ships-a-how-to.md +135 -0
- package/docs/adr/0348-the-web-tier-may-look-read-only-at-what-an-owners-render-key-can-see.md +53 -0
- package/docs/adr/0349-a-version-preview-is-a-sandboxed-child-the-web-tier-launches.md +106 -0
- package/docs/adr/0350-the-hub-holds-a-per-project-write-deploy-key-so-a-hosted-upgrade-reaches-github.md +103 -0
- package/docs/adr/README.md +4 -0
- package/docs/api/openapi.json +995 -40
- package/docs/api-reference.md +33 -8
- package/docs/architecture.md +6 -2
- package/docs/copy-inventory.md +620 -553
- package/docs/copy-registry.json +1467 -820
- package/docs/file-map.md +2 -0
- package/docs/module-api-changelog.md +8 -0
- package/docs/modules-contract.md +1 -0
- package/docs/page-inventory.json +38 -4
- package/docs/page-readings.json +1674 -1566
- package/migrations/core_260_goals_working_area.sql +63 -0
- package/migrations/core_261_grade_attempts_verdicts.sql +24 -0
- package/migrations/core_262_drop_builder_box_blocked.sql +33 -0
- package/modules/agents/lib/validate.js +43 -0
- package/modules/autonomy/gauge.js +38 -2
- package/modules/grading/grader-subagent.js +37 -2
- package/modules/grading/grader-workers/reader.js +65 -5
- package/modules/hall-ui/public/approval-queue.css +33 -7
- package/modules/hall-ui/public/approval-queue.js +9 -2
- package/modules/hall-ui/public/atlas.html +1 -1
- package/modules/hall-ui/public/blockers.html +1 -1
- package/modules/hall-ui/public/board-room.html +1 -1
- package/modules/hall-ui/public/brand-holes.js +121 -0
- package/modules/hall-ui/public/collab.html +1 -1
- package/modules/hall-ui/public/collab.js +1 -1
- package/modules/hall-ui/public/copy-desk.html +1 -1
- package/modules/hall-ui/public/deploy.html +6 -1
- package/modules/hall-ui/public/deploy.js +22 -8
- package/modules/hall-ui/public/diagrams.html +1 -1
- package/modules/hall-ui/public/dom-utils.js +20 -0
- package/modules/hall-ui/public/drachmae.html +1 -1
- package/modules/hall-ui/public/fleet.html +1 -1
- package/modules/hall-ui/public/gate.html +1 -1
- package/modules/hall-ui/public/goals.html +1 -1
- package/modules/hall-ui/public/government.html +1 -1
- package/modules/hall-ui/public/idea.html +1 -1
- package/modules/hall-ui/public/idea.js +28 -0
- package/modules/hall-ui/public/ideas.html +1 -1
- package/modules/hall-ui/public/ideas.js +19 -3
- package/modules/hall-ui/public/index.html +5 -1
- package/modules/hall-ui/public/modules.html +1 -1
- package/modules/hall-ui/public/primer.html +1 -1
- package/modules/hall-ui/public/profile-nudge.js +21 -4
- package/modules/hall-ui/public/profile.html +1 -1
- package/modules/hall-ui/public/profile.js +1 -1
- package/modules/hall-ui/public/project-settings.html +1 -1
- package/modules/hall-ui/public/ranks.html +1 -1
- package/modules/hall-ui/public/roadmap.html +1 -1
- package/modules/hall-ui/public/roster.html +1 -1
- package/modules/hall-ui/public/sessions.html +1 -1
- package/modules/hall-ui/public/settings.html +19 -30
- package/modules/hall-ui/public/settings.js +24 -177
- package/modules/hall-ui/public/settings.states.json +1 -1
- package/modules/hall-ui/public/shell.js +4 -2
- package/modules/hall-ui/public/studio.css +14 -8
- package/modules/hall-ui/public/studio.html +5 -4
- package/modules/hall-ui/public/task.html +1 -1
- package/modules/hall-ui/public/thinking.css +6 -3
- package/modules/hall-ui/public/thinking.html +1 -1
- package/modules/hall-ui/public/tweak-editor-lib.js +82 -1
- package/modules/hall-ui/public/tweak-editor.css +142 -11
- package/modules/hall-ui/public/tweak-editor.html +25 -9
- package/modules/hall-ui/public/tweak-editor.js +243 -10
- package/modules/hall-ui/public/watch.html +1 -1
- package/modules/hall-ui/public/work.html +1 -1
- package/modules/hall-ui/records/approval-queue.md +6 -0
- package/modules/hall-ui/records/tweak-editor.md +6 -0
- package/modules/ideas/ratify.js +36 -8
- package/modules/ideas/routes/ratify-goal.js +6 -0
- package/modules/lifecycle/db-analytics.js +79 -10
- package/modules/lifecycle/db-claims.js +48 -1
- package/modules/lifecycle/db-deps-criteria.js +94 -40
- package/modules/lifecycle/db-goals.js +4 -1
- package/modules/lifecycle/db-grade.js +9 -1
- package/modules/lifecycle/db-relevance-flags.js +183 -0
- package/modules/lifecycle/db-versions.js +4 -3
- package/modules/lifecycle/db.js +19 -0
- package/modules/lifecycle/done-when.js +5 -3
- package/modules/lifecycle/est-advisory.js +31 -4
- package/modules/lifecycle/goal-task-relevance-advisory.js +153 -0
- package/modules/lifecycle/goal-task-relevance-judge.js +226 -0
- package/modules/lifecycle/migrations/lifecycle_014_goal_task_relevance_flags.sql +82 -0
- package/modules/lifecycle/module.json +2 -1
- package/modules/lifecycle/routes/claims.js +8 -1
- package/modules/lifecycle/routes/goal-task-relevance.js +72 -0
- package/modules/lifecycle/routes/goals.js +1 -1
- package/modules/lifecycle/routes/tasks.js +27 -24
- package/modules/lifecycle/routes/visuals.js +9 -0
- package/modules/lifecycle/ship-preflight.js +7 -11
- package/modules/lifecycle/task-visuals.js +109 -5
- package/modules/npm-release/module.json +2 -1
- package/modules/npm-release/preview/commands.js +81 -0
- package/modules/npm-release/preview/divert.js +95 -0
- package/modules/npm-release/preview/env.js +78 -0
- package/modules/npm-release/preview/proxy.js +107 -0
- package/modules/npm-release/preview/runtime.js +83 -0
- package/modules/npm-release/preview/supervisor.js +175 -0
- package/modules/npm-release/public/work.js +65 -1
- package/modules/npm-release/routes/preview.js +133 -0
- package/modules/provisioning/app-status.js +83 -0
- package/modules/provisioning/migrations/provisioning_028_render_standup.sql +46 -0
- package/modules/provisioning/module.json +4 -2
- package/modules/provisioning/pollers/app-liveness.js +110 -0
- package/modules/provisioning/provisioning.js +5 -5
- package/modules/provisioning/render-lookup.js +68 -0
- package/modules/provisioning/render-standup.js +134 -0
- package/modules/provisioning/routes/render-standup.js +165 -0
- package/modules/provisioning/starter-bundles.js +4 -1
- package/modules/public-landing/public/account-private.states.json +14 -0
- package/modules/public-landing/public/account.html +513 -0
- package/modules/public-landing/public/account.probes.json +37 -0
- package/modules/public-landing/public/account.states.json +16 -0
- package/modules/public-landing/public/index.html +5 -2
- package/modules/public-landing/public/projects.html +661 -18
- package/modules/public-landing/public/projects.states.json +8 -1
- package/modules/render-deploy/deploys.js +203 -0
- package/modules/render-deploy/migrations/render_deploy_001_app.sql +22 -0
- package/modules/render-deploy/module.json +25 -0
- package/modules/render-deploy/public/deploy.css +10 -0
- package/modules/render-deploy/public/deploy.js +249 -0
- package/modules/render-deploy/render.js +56 -0
- package/modules/render-deploy/routes/act.js +88 -0
- package/modules/render-deploy/routes/app.js +65 -0
- package/modules/render-deploy/routes/history.js +38 -0
- package/modules/specialities/db.js +27 -8
- package/modules/specialities/migrations/specialities_003_skills.sql +46 -0
- package/modules/specialities/routes/specialities.js +51 -3
- package/modules/specialities/skills.js +94 -0
- package/modules/specialities/specialities.js +56 -9
- package/modules/ui-design/kit/fixtures/me-cross-project-private.json +12 -0
- package/modules/ui-design/kit/fixtures/me__cross-project.json +15 -0
- package/modules/ui-design/kit/fixtures/provisioning-instance-render.json +39 -0
- package/modules/ui-design/kit/lib.js +3 -1
- package/modules/ui-design/kit/serve.js +96 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +173 -0
- package/scripts/gds/agents-sync.js +13 -3
- package/scripts/gds/autobongos-run.js +80 -2
- package/scripts/gds/autobongos-service.cmd +12 -0
- package/scripts/gds/copy-apply.js +14 -0
- package/scripts/gds/dev-box-guard.js +3 -2
- package/scripts/gds/fitness.js +9 -0
- package/scripts/gds/grade-correlation-audit.js +42 -12
- package/scripts/gds/grade-replay.js +1 -1
- package/scripts/gds/provision-core-upgrade.js +38 -7
- package/scripts/gds/provision-pin-key.js +176 -0
- package/scripts/gds/provision-render.js +189 -0
- package/scripts/gds/provision-teardown.js +9 -2
- package/scripts/gds/provision-units.js +31 -0
- package/scripts/gds/provision.js +12 -12
- package/scripts/gds/publish-manifest.js +1 -0
- package/scripts/gds/render-api.js +197 -0
- package/scripts/gds/render-payload.js +84 -0
- package/scripts/gds/run-unit-tests.js +10 -0
- package/scripts/gds/ship-finish.js +19 -20
- package/scripts/gds/smoke-dependencies.sh +37 -8
- package/scripts/gds/status.js +12 -4
- package/scripts/gds/upgrade.js +2 -2
- package/scripts/public-mirror-export.js +7 -1
- package/src/bongos/module-scope-map.js +13 -0
- package/src/bongos/serve-internal.js +3 -1
- package/src/module-api.js +10 -1
- package/src/platform-server.js +39 -0
- package/tests/account_privacy_flags.mjs +10 -6
- package/tests/agents_authoring.mjs +15 -1
- package/tests/agents_sync.mjs +106 -5
- package/tests/agents_validate.mjs +45 -0
- package/tests/api_path_404.mjs +6 -0
- package/tests/autobongos_cadence.mjs +7 -0
- package/tests/autobongos_loop.mjs +136 -1
- package/tests/autonomy_gauge.mjs +62 -0
- package/tests/blocker_hall_live_proof.mjs +275 -0
- package/tests/claim_gate_ci_unblock.mjs +116 -0
- package/tests/claim_gate_rebase.mjs +15 -3
- package/tests/collab_page.mjs +10 -0
- package/tests/conductor_main_e2e.mjs +97 -0
- package/tests/core_262_drop_box_blocked_db.mjs +143 -0
- package/tests/core_upgrade_runner.mjs +1 -0
- package/tests/dependency_writes_atomic.mjs +191 -0
- package/tests/deploy_page_projects.mjs +2 -1
- package/tests/effective_visibility_predicate.mjs +15 -0
- package/tests/est_advisory.mjs +27 -0
- package/tests/goal_map_page.mjs +26 -0
- package/tests/goal_task_relevance.mjs +518 -0
- package/tests/goal_working_area.mjs +146 -0
- package/tests/grade_attempts.mjs +61 -0
- package/tests/grade_attribution.mjs +23 -0
- package/tests/grade_correlation_audit.mjs +54 -1
- package/tests/grader_reader_lens.mjs +55 -2
- package/tests/grader_root_outage.mjs +6 -1
- package/tests/grader_subagent_tools_arg.mjs +102 -0
- package/tests/hall_approval_queue.mjs +54 -2
- package/tests/hall_settings_world.mjs +3 -1
- package/tests/hall_tweak_editor.mjs +316 -11
- package/tests/hub_account_page.mjs +394 -0
- package/tests/idea_detail_page.mjs +64 -0
- package/tests/idea_goal_ratification.mjs +64 -0
- package/tests/idea_spark_hall.mjs +60 -9
- package/tests/ideator_full_idea_shapes_space_proof.mjs +1 -1
- package/tests/landing_page.mjs +6 -3
- package/tests/module-scope-map.mjs +31 -8
- package/tests/module_api.mjs +1 -0
- package/tests/module_loader.mjs +1 -1
- package/tests/nav_permission_atoms.mjs +1 -1
- package/tests/no_phantom_mirror_workflow.mjs +24 -0
- package/tests/npm_release_preview_commands.mjs +89 -0
- package/tests/npm_release_preview_divert.mjs +164 -0
- package/tests/npm_release_preview_env.mjs +100 -0
- package/tests/npm_release_preview_proxy.mjs +162 -0
- package/tests/npm_release_preview_routes.mjs +208 -0
- package/tests/npm_release_preview_supervisor.mjs +203 -0
- package/tests/pin_write_key.mjs +383 -0
- package/tests/planning_session_skill.mjs +27 -0
- package/tests/platform_boot.mjs +71 -0
- package/tests/profile_nudge_links.mjs +86 -0
- package/tests/profile_ui_cross_project.mjs +1 -1
- package/tests/projects_hub.mjs +2 -2
- package/tests/projects_hub_app_status.mjs +249 -0
- package/tests/projects_hub_app_step.mjs +282 -52
- package/tests/projects_hub_render_connect.mjs +295 -0
- package/tests/provision_render.mjs +362 -0
- package/tests/provision_settings_apply.mjs +62 -0
- package/tests/provisioning_app_status.mjs +204 -0
- package/tests/provisioning_render_route.mjs +336 -0
- package/tests/provisioning_settings_apply.mjs +1 -1
- package/tests/provisioning_teardown_intent.mjs +2 -2
- package/tests/render_api.mjs +153 -0
- package/tests/render_check.mjs +2 -1
- package/tests/render_deploy.mjs +495 -0
- package/tests/ship_preflight.mjs +61 -8
- package/tests/smoke_dependencies_witness.mjs +46 -0
- package/tests/speciality_skills.mjs +214 -0
- package/tests/studio_room_height.mjs +70 -0
- package/tests/task_detail_includes.mjs +10 -0
- package/tests/task_visuals_instance_root.mjs +150 -0
- package/tests/tweak_batch_apply.mjs +21 -0
- package/tests/ui_design_kit.mjs +36 -4
- package/tests/upgrade.mjs +1 -1
- package/tests/upgrade_persist_pin.mjs +24 -0
|
@@ -33,7 +33,7 @@ This mirrors GDS-V3 criterion C2 (`three-ranks-gate-everything`) and matches the
|
|
|
33
33
|
|
|
34
34
|
**Enforce the gate at the very top of the session, before reading anything else:**
|
|
35
35
|
|
|
36
|
-
1. Call `GET /api/bongos/me` and read `builder.rank`. Compare case-insensitively (lowercase it before testing).
|
|
36
|
+
1. Call `GET /api/bongos/me` and read `builder.rank`. Compare case-insensitively (lowercase it before testing). **If it answers `401`, or the CLI says the Bongos CLI session is no longer valid**, stop before anything else and tell the builder to run `/builder-reauth` (the fast Settings re-issue), then re-run this skill — there is nothing to lose yet. (A session that is valid here can still expire before Phase 5, which is why Phase 4 spools and Phase 5 probes again; task 1002865.)
|
|
37
37
|
2. **If `rank` is present and lowercases to `xenos`** → stop immediately. Tell the builder: *"Planning sessions set the scope-truth of a version — they're a Metic+ operation. You're currently Xenos. You can still **file** a criterion proposal or task idea via `POST /api/bongos/inbox` (which lands in idea_inbox for a Metic+ builder to ratify at the next planning session); ask an Archon for promotion if you need to run sessions directly."* Do not pull state, do not present criteria, do not propose tasks.
|
|
38
38
|
3. **If `rank` lowercases to `metic`** → proceed in **Metic-mode**: run the five-phase structure below conversationally, but in Phase 5 write proposals to `idea_inbox` (kind=`criterion-proposal` for criteria, kind=`feature` for tasks) tagged with the target version — filed with `node scripts/gds/capture.js "…" --via planning` (or `filed_via: 'planning'` on `POST /inbox`), so the sky records the door they came through (task 1004233; every other filing's door is read off the session). Any Metic+ builder ratifies them (`idea.ratify`, metic-floored since ADR 0157) — typically at the next planning session. Since [ADR 0090](../../../docs/adr/0090-metic-task-authoring.md) a Metic MAY `POST /tasks` directly, and since [ADR 0154](../../../docs/adr/0154-goal-owner-criterion-authoring.md) a Metic MAY write a `done_when_criteria` row for a goal they own or manage. What needs an Archon is a VERSION-level criterion (no `goal_id`), one in a goal you don't hold, and — since [ADR 0250](../../../docs/adr/0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) §6 (task 1003608) — **creating a version at all**: `version.create` returned to the Archon floor, because once the version boundary carries the scope gate, cutting a version is the way around it rather than authoring. ADR 0157 had briefly delegated it to Metic; it no longer is. The spec-draft (Phase 3) and the in-depth interview (Phase 4) run identically in Metic-mode — the only difference is the Phase-5 write (you file proposals, you don't seed tasks directly).
|
|
39
39
|
|
|
@@ -195,6 +195,8 @@ Tell the user the spec is written and where, then move straight to the interview
|
|
|
195
195
|
|
|
196
196
|
**This is the heart of the new flow — it replaces asking for task-by-task approval.** Read the spec you just wrote, then interview the owner with the **AskUserQuestion tool** to resolve every non-obvious decision before a single task is seeded.
|
|
197
197
|
|
|
198
|
+
**Spool every answer to the spec file as it lands (task 1002865).** After each AskUserQuestion round, write the decisions into the spec file's *Design decisions & assumptions* and strike them from *Open questions* before you ask the next round — never hold the interview only in the conversation. The spec on disk is what Phase 5 reads; if the Bongos login expires mid-session, a re-auth then costs a minute, not the interview.
|
|
199
|
+
|
|
198
200
|
**Run it as a loop, not a one-shot:**
|
|
199
201
|
|
|
200
202
|
1. From the spec's *Open questions* (plus anything the task outline leaves genuinely undecided), assemble a round of up to **4 questions** and ask them with AskUserQuestion. Put a recommended option first when you have a view; always leave room for "Other."
|
|
@@ -263,7 +265,9 @@ This is what the V3.R02 (task 309) dependency system encodes; Phase 5 writes bot
|
|
|
263
265
|
|
|
264
266
|
### Phase 5 — Land it
|
|
265
267
|
|
|
266
|
-
Once the spec is finalized (Phase 4), **read `docs/specs/<ver>-<goal-slug>.md` as the source of truth** and do the writes in this exact order.
|
|
268
|
+
Once the spec is finalized (Phase 4), **read `docs/specs/<ver>-<goal-slug>.md` as the source of truth** and do the writes in this exact order.
|
|
269
|
+
|
|
270
|
+
**Probe the session right before the first write, and recover on a 401 (task 1002865).** Call `GET /api/bongos/me` again here: a session that passed the gate at Phase 1 can expire during a long interview (the retro that filed this: 200 at the gate, 401 by Phase 5). If the probe — or ANY write below — answers `401` / "session is no longer valid", **do not abandon the session**: tell the builder to run `/builder-reauth`, wait for it, then **resume** from the write that failed. Everything the session decided is already in the spec file (Phase 4 spooled it), and the writes are idempotent — the meta task and every seeded task on `source_ref`, criteria on `criterion_id` (a 409 means already seeded), dependencies on `(task_id, depends_on_task_id)` — so re-running the seed script after a re-auth creates nothing twice. (If the goal and its criteria already exist — e.g. this session planned tasks for a pre-existing goal — skip the goal/criteria creation in step 2 and seed the tasks under the existing goal, linking them via `criterion_ids` + `goal_id`.)
|
|
267
271
|
|
|
268
272
|
1. **Create a meta planning-session task** (`source_ref='<ver>-planning-N'`) that backs all the writes — version='<ver>', kind='decision', status='ready', priority=5, the full session described in its body. Claim it. (For a long session — a big spec + a multi-round interview — create and claim this meta task **early, at Phase 1**, so the spec-write and interview are themselves covered by a claim. A rebase-gated builder can't claim new work; as Archon, proceed and record the session in the meta task even if the claim is blocked, noting it.)
|
|
269
273
|
|
|
@@ -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
|
+
- 454 operations across 69 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -372,6 +372,12 @@ function createClient(opts = {}) {
|
|
|
372
372
|
// POST /github/repos — rank: any-builder — POST /github/repos
|
|
373
373
|
postGithubRepos: (args) => request("POST", "/github/repos", { hasBody: true }, args),
|
|
374
374
|
},
|
|
375
|
+
"goalTaskRelevance": {
|
|
376
|
+
// POST /goal-task-relevance/{id}/decide — rank: metic+archon — POST /goal-task-relevance/:id/decide
|
|
377
|
+
postGoalTaskRelevanceIdDecide: (args) => request("POST", "/goal-task-relevance/{id}/decide", { hasBody: true }, args),
|
|
378
|
+
// GET /goal-task-relevance/pending — rank: metic+archon — GET /goal-task-relevance/pending
|
|
379
|
+
getGoalTaskRelevancePending: (args) => request("GET", "/goal-task-relevance/pending", { hasBody: false }, args),
|
|
380
|
+
},
|
|
375
381
|
"goals": {
|
|
376
382
|
// GET /goals — rank: any-builder — GET /goals
|
|
377
383
|
getGoals: (args) => request("GET", "/goals", { hasBody: false }, args),
|
|
@@ -717,6 +723,16 @@ function createClient(opts = {}) {
|
|
|
717
723
|
postMyProjectsJoin: (args) => request("POST", "/my-projects/join", { hasBody: true }, args),
|
|
718
724
|
},
|
|
719
725
|
"npmRelease": {
|
|
726
|
+
// DELETE /npm-release/preview — rank: any-builder — DELETE /npm-release/preview
|
|
727
|
+
deleteNpmReleasePreview: (args) => request("DELETE", "/npm-release/preview", { hasBody: false }, args),
|
|
728
|
+
// GET /npm-release/preview — rank: any-builder — GET /npm-release/preview
|
|
729
|
+
getNpmReleasePreview: (args) => request("GET", "/npm-release/preview", { hasBody: false }, args),
|
|
730
|
+
// POST /npm-release/preview — rank: any-builder — POST /npm-release/preview
|
|
731
|
+
postNpmReleasePreview: (args) => request("POST", "/npm-release/preview", { hasBody: true }, args),
|
|
732
|
+
// GET /npm-release/preview/enter — rank: any-builder — GET /npm-release/preview/enter
|
|
733
|
+
getNpmReleasePreviewEnter: (args) => request("GET", "/npm-release/preview/enter", { hasBody: false }, args),
|
|
734
|
+
// GET /npm-release/preview/exit — rank: any-builder — GET /npm-release/preview/exit
|
|
735
|
+
getNpmReleasePreviewExit: (args) => request("GET", "/npm-release/preview/exit", { hasBody: false }, args),
|
|
720
736
|
// GET /npm-release/task/{id} — rank: any-builder — GET /npm-release/task/:id
|
|
721
737
|
getNpmReleaseTaskId: (args) => request("GET", "/npm-release/task/{id}", { hasBody: false }, args),
|
|
722
738
|
// GET /npm-release/work — rank: archon — GET /npm-release/work
|
|
@@ -797,6 +813,10 @@ function createClient(opts = {}) {
|
|
|
797
813
|
postProvisioningInstancesIdGithubApp: (args) => request("POST", "/provisioning/instances/{id}/github-app", { hasBody: true }, args),
|
|
798
814
|
// GET /provisioning/instances/{id}/invite-suggestions — rank: any-builder — GET /provisioning/instances/:id/invite-suggestions
|
|
799
815
|
getProvisioningInstancesIdInviteSuggestions: (args) => request("GET", "/provisioning/instances/{id}/invite-suggestions", { hasBody: false }, args),
|
|
816
|
+
// GET /provisioning/instances/{id}/render — rank: any-builder — GET /provisioning/instances/:id/render
|
|
817
|
+
getProvisioningInstancesIdRender: (args) => request("GET", "/provisioning/instances/{id}/render", { hasBody: false }, args),
|
|
818
|
+
// POST /provisioning/instances/{id}/render — rank: any-builder — POST /provisioning/instances/:id/render
|
|
819
|
+
postProvisioningInstancesIdRender: (args) => request("POST", "/provisioning/instances/{id}/render", { hasBody: true }, args),
|
|
800
820
|
// POST /provisioning/instances/{id}/repo-private — rank: any-builder — POST /provisioning/instances/:id/repo-private
|
|
801
821
|
postProvisioningInstancesIdRepoPrivate: (args) => request("POST", "/provisioning/instances/{id}/repo-private", { hasBody: true }, args),
|
|
802
822
|
// POST /provisioning/instances/{id}/restart — rank: any-builder — POST /provisioning/instances/:id/restart
|
|
@@ -811,6 +831,8 @@ function createClient(opts = {}) {
|
|
|
811
831
|
getProvisioningOnboardPlan: (args) => request("GET", "/provisioning/onboard-plan", { hasBody: false }, args),
|
|
812
832
|
// GET /provisioning/recommendations — rank: public — GET /provisioning/recommendations
|
|
813
833
|
getProvisioningRecommendations: (args) => request("GET", "/provisioning/recommendations", { hasBody: false }, args),
|
|
834
|
+
// POST /provisioning/render/lookup — rank: any-builder — POST /provisioning/render/lookup
|
|
835
|
+
postProvisioningRenderLookup: (args) => request("POST", "/provisioning/render/lookup", { hasBody: true }, args),
|
|
814
836
|
// GET /provisioning/slug-available — rank: any-builder — GET /provisioning/slug-available
|
|
815
837
|
getProvisioningSlugAvailable: (args) => request("GET", "/provisioning/slug-available", { hasBody: false }, args),
|
|
816
838
|
// GET /provisioning/starter-bundles — rank: public — GET /provisioning/starter-bundles
|
|
@@ -862,6 +884,16 @@ function createClient(opts = {}) {
|
|
|
862
884
|
// POST /removal-proposals/{id}/decide — rank: metic+archon — POST /removal-proposals/:id/decide
|
|
863
885
|
postRemovalProposalsIdDecide: (args) => request("POST", "/removal-proposals/{id}/decide", { hasBody: true }, args),
|
|
864
886
|
},
|
|
887
|
+
"renderDeploy": {
|
|
888
|
+
// POST /render-deploy/act — rank: archon — POST /render-deploy/act
|
|
889
|
+
postRenderDeployAct: (args) => request("POST", "/render-deploy/act", { hasBody: true }, args),
|
|
890
|
+
// GET /render-deploy/app — rank: archon — GET /render-deploy/app
|
|
891
|
+
getRenderDeployApp: (args) => request("GET", "/render-deploy/app", { hasBody: false }, args),
|
|
892
|
+
// PUT /render-deploy/app — rank: archon — PUT /render-deploy/app
|
|
893
|
+
putRenderDeployApp: (args) => request("PUT", "/render-deploy/app", { hasBody: true }, args),
|
|
894
|
+
// GET /render-deploy/history — rank: archon — GET /render-deploy/history
|
|
895
|
+
getRenderDeployHistory: (args) => request("GET", "/render-deploy/history", { hasBody: false }, args),
|
|
896
|
+
},
|
|
865
897
|
"scouting": {
|
|
866
898
|
// GET /scouting — rank: metic+archon — GET /scouting
|
|
867
899
|
getScouting: (args) => request("GET", "/scouting", { hasBody: false }, args),
|
|
@@ -947,6 +979,8 @@ function createClient(opts = {}) {
|
|
|
947
979
|
deleteSpecialitiesIdDocumentsDocId: (args) => request("DELETE", "/specialities/{id}/documents/{docId}", { hasBody: false }, args),
|
|
948
980
|
// POST /specialities/{id}/offer — rank: metic+archon — POST /specialities/:id/offer
|
|
949
981
|
postSpecialitiesIdOffer: (args) => request("POST", "/specialities/{id}/offer", { hasBody: true }, args),
|
|
982
|
+
// PUT /specialities/{id}/skills — rank: any-builder — PUT /specialities/:id/skills
|
|
983
|
+
putSpecialitiesIdSkills: (args) => request("PUT", "/specialities/{id}/skills", { hasBody: true }, args),
|
|
950
984
|
// POST /specialities/{id}/unoffer — rank: metic+archon — POST /specialities/:id/unoffer
|
|
951
985
|
postSpecialitiesIdUnoffer: (args) => request("POST", "/specialities/{id}/unoffer", { hasBody: true }, args),
|
|
952
986
|
// GET /specialities/offered — rank: any-builder — GET /specialities/offered
|
|
@@ -371,6 +371,12 @@ function createClient(opts = {}) {
|
|
|
371
371
|
// POST /github/repos — rank: any-builder — POST /github/repos
|
|
372
372
|
postGithubRepos: (args) => request("POST", "/github/repos", { hasBody: true }, args),
|
|
373
373
|
},
|
|
374
|
+
"goalTaskRelevance": {
|
|
375
|
+
// POST /goal-task-relevance/{id}/decide — rank: metic+archon — POST /goal-task-relevance/:id/decide
|
|
376
|
+
postGoalTaskRelevanceIdDecide: (args) => request("POST", "/goal-task-relevance/{id}/decide", { hasBody: true }, args),
|
|
377
|
+
// GET /goal-task-relevance/pending — rank: metic+archon — GET /goal-task-relevance/pending
|
|
378
|
+
getGoalTaskRelevancePending: (args) => request("GET", "/goal-task-relevance/pending", { hasBody: false }, args),
|
|
379
|
+
},
|
|
374
380
|
"goals": {
|
|
375
381
|
// GET /goals — rank: any-builder — GET /goals
|
|
376
382
|
getGoals: (args) => request("GET", "/goals", { hasBody: false }, args),
|
|
@@ -716,6 +722,16 @@ function createClient(opts = {}) {
|
|
|
716
722
|
postMyProjectsJoin: (args) => request("POST", "/my-projects/join", { hasBody: true }, args),
|
|
717
723
|
},
|
|
718
724
|
"npmRelease": {
|
|
725
|
+
// DELETE /npm-release/preview — rank: any-builder — DELETE /npm-release/preview
|
|
726
|
+
deleteNpmReleasePreview: (args) => request("DELETE", "/npm-release/preview", { hasBody: false }, args),
|
|
727
|
+
// GET /npm-release/preview — rank: any-builder — GET /npm-release/preview
|
|
728
|
+
getNpmReleasePreview: (args) => request("GET", "/npm-release/preview", { hasBody: false }, args),
|
|
729
|
+
// POST /npm-release/preview — rank: any-builder — POST /npm-release/preview
|
|
730
|
+
postNpmReleasePreview: (args) => request("POST", "/npm-release/preview", { hasBody: true }, args),
|
|
731
|
+
// GET /npm-release/preview/enter — rank: any-builder — GET /npm-release/preview/enter
|
|
732
|
+
getNpmReleasePreviewEnter: (args) => request("GET", "/npm-release/preview/enter", { hasBody: false }, args),
|
|
733
|
+
// GET /npm-release/preview/exit — rank: any-builder — GET /npm-release/preview/exit
|
|
734
|
+
getNpmReleasePreviewExit: (args) => request("GET", "/npm-release/preview/exit", { hasBody: false }, args),
|
|
719
735
|
// GET /npm-release/task/{id} — rank: any-builder — GET /npm-release/task/:id
|
|
720
736
|
getNpmReleaseTaskId: (args) => request("GET", "/npm-release/task/{id}", { hasBody: false }, args),
|
|
721
737
|
// GET /npm-release/work — rank: archon — GET /npm-release/work
|
|
@@ -796,6 +812,10 @@ function createClient(opts = {}) {
|
|
|
796
812
|
postProvisioningInstancesIdGithubApp: (args) => request("POST", "/provisioning/instances/{id}/github-app", { hasBody: true }, args),
|
|
797
813
|
// GET /provisioning/instances/{id}/invite-suggestions — rank: any-builder — GET /provisioning/instances/:id/invite-suggestions
|
|
798
814
|
getProvisioningInstancesIdInviteSuggestions: (args) => request("GET", "/provisioning/instances/{id}/invite-suggestions", { hasBody: false }, args),
|
|
815
|
+
// GET /provisioning/instances/{id}/render — rank: any-builder — GET /provisioning/instances/:id/render
|
|
816
|
+
getProvisioningInstancesIdRender: (args) => request("GET", "/provisioning/instances/{id}/render", { hasBody: false }, args),
|
|
817
|
+
// POST /provisioning/instances/{id}/render — rank: any-builder — POST /provisioning/instances/:id/render
|
|
818
|
+
postProvisioningInstancesIdRender: (args) => request("POST", "/provisioning/instances/{id}/render", { hasBody: true }, args),
|
|
799
819
|
// POST /provisioning/instances/{id}/repo-private — rank: any-builder — POST /provisioning/instances/:id/repo-private
|
|
800
820
|
postProvisioningInstancesIdRepoPrivate: (args) => request("POST", "/provisioning/instances/{id}/repo-private", { hasBody: true }, args),
|
|
801
821
|
// POST /provisioning/instances/{id}/restart — rank: any-builder — POST /provisioning/instances/:id/restart
|
|
@@ -810,6 +830,8 @@ function createClient(opts = {}) {
|
|
|
810
830
|
getProvisioningOnboardPlan: (args) => request("GET", "/provisioning/onboard-plan", { hasBody: false }, args),
|
|
811
831
|
// GET /provisioning/recommendations — rank: public — GET /provisioning/recommendations
|
|
812
832
|
getProvisioningRecommendations: (args) => request("GET", "/provisioning/recommendations", { hasBody: false }, args),
|
|
833
|
+
// POST /provisioning/render/lookup — rank: any-builder — POST /provisioning/render/lookup
|
|
834
|
+
postProvisioningRenderLookup: (args) => request("POST", "/provisioning/render/lookup", { hasBody: true }, args),
|
|
813
835
|
// GET /provisioning/slug-available — rank: any-builder — GET /provisioning/slug-available
|
|
814
836
|
getProvisioningSlugAvailable: (args) => request("GET", "/provisioning/slug-available", { hasBody: false }, args),
|
|
815
837
|
// GET /provisioning/starter-bundles — rank: public — GET /provisioning/starter-bundles
|
|
@@ -861,6 +883,16 @@ function createClient(opts = {}) {
|
|
|
861
883
|
// POST /removal-proposals/{id}/decide — rank: metic+archon — POST /removal-proposals/:id/decide
|
|
862
884
|
postRemovalProposalsIdDecide: (args) => request("POST", "/removal-proposals/{id}/decide", { hasBody: true }, args),
|
|
863
885
|
},
|
|
886
|
+
"renderDeploy": {
|
|
887
|
+
// POST /render-deploy/act — rank: archon — POST /render-deploy/act
|
|
888
|
+
postRenderDeployAct: (args) => request("POST", "/render-deploy/act", { hasBody: true }, args),
|
|
889
|
+
// GET /render-deploy/app — rank: archon — GET /render-deploy/app
|
|
890
|
+
getRenderDeployApp: (args) => request("GET", "/render-deploy/app", { hasBody: false }, args),
|
|
891
|
+
// PUT /render-deploy/app — rank: archon — PUT /render-deploy/app
|
|
892
|
+
putRenderDeployApp: (args) => request("PUT", "/render-deploy/app", { hasBody: true }, args),
|
|
893
|
+
// GET /render-deploy/history — rank: archon — GET /render-deploy/history
|
|
894
|
+
getRenderDeployHistory: (args) => request("GET", "/render-deploy/history", { hasBody: false }, args),
|
|
895
|
+
},
|
|
864
896
|
"scouting": {
|
|
865
897
|
// GET /scouting — rank: metic+archon — GET /scouting
|
|
866
898
|
getScouting: (args) => request("GET", "/scouting", { hasBody: false }, args),
|
|
@@ -946,6 +978,8 @@ function createClient(opts = {}) {
|
|
|
946
978
|
deleteSpecialitiesIdDocumentsDocId: (args) => request("DELETE", "/specialities/{id}/documents/{docId}", { hasBody: false }, args),
|
|
947
979
|
// POST /specialities/{id}/offer — rank: metic+archon — POST /specialities/:id/offer
|
|
948
980
|
postSpecialitiesIdOffer: (args) => request("POST", "/specialities/{id}/offer", { hasBody: true }, args),
|
|
981
|
+
// PUT /specialities/{id}/skills — rank: any-builder — PUT /specialities/:id/skills
|
|
982
|
+
putSpecialitiesIdSkills: (args) => request("PUT", "/specialities/{id}/skills", { hasBody: true }, args),
|
|
949
983
|
// POST /specialities/{id}/unoffer — rank: metic+archon — POST /specialities/:id/unoffer
|
|
950
984
|
postSpecialitiesIdUnoffer: (args) => request("POST", "/specialities/{id}/unoffer", { hasBody: true }, args),
|
|
951
985
|
// GET /specialities/offered — rank: any-builder — GET /specialities/offered
|
|
@@ -62,6 +62,7 @@ export interface GetDiscordChannelsSnapshotResponse { ok: boolean; guild_id: unk
|
|
|
62
62
|
export interface GetDoneWhenPendingReviewResponse { criteria: unknown; count: unknown }
|
|
63
63
|
export interface GetGithubRepoResponse { ok: boolean; repo: unknown; private_deployable: boolean }
|
|
64
64
|
export interface GetGithubReposResponse { repos: unknown }
|
|
65
|
+
export interface GetGoalTaskRelevancePendingResponse { flags: unknown; count: unknown }
|
|
65
66
|
export interface GetGoalsIdConflictsResponse { ok: boolean; goal_id: unknown; conflicts: unknown; cross_goals_considered: unknown }
|
|
66
67
|
export interface GetGoalsIdRequestsResponse { requests: unknown }
|
|
67
68
|
export interface GetGoalsIdResponse { goal: unknown; members: unknown; criteria: unknown; dependencies: unknown; criterionless_task_count: unknown; admitted: unknown; open_tasks: unknown }
|
|
@@ -121,6 +122,7 @@ export interface GetProvisioningGithubAppStatusResponse { ok: boolean; status: u
|
|
|
121
122
|
export interface GetProvisioningHealthResponse { module: unknown; ok: boolean; coreVersion: unknown }
|
|
122
123
|
export interface GetProvisioningInstancesIdEnvManifestResponse { instance: unknown; env_vars: unknown; environments: unknown; values_held: boolean; note: unknown }
|
|
123
124
|
export interface GetProvisioningInstancesIdInviteSuggestionsResponse { suggested: unknown; seeking: unknown; reason: unknown; unavailable?: unknown }
|
|
125
|
+
export interface GetProvisioningInstancesIdRenderResponse { ok: boolean; app: unknown; env_vars: unknown; values_held: boolean }
|
|
124
126
|
export interface GetProvisioningInstancesIdResponse { instance: unknown; open_intent: unknown; github_app: unknown }
|
|
125
127
|
export interface GetProvisioningInstancesIdSettingsResponse { ok: boolean; settings: unknown; planet: unknown; options: unknown }
|
|
126
128
|
export interface GetProvisioningInstancesResponse { instances: unknown }
|
|
@@ -142,6 +144,7 @@ export interface GetPublicTasksIdResponse { task: unknown }
|
|
|
142
144
|
export interface GetPublicUptimeResponse { services: unknown }
|
|
143
145
|
export interface GetPublicVersionsResponse { versions: unknown; page: PageInfo }
|
|
144
146
|
export interface GetRemovalProposalsResponse { pending: unknown; count: unknown }
|
|
147
|
+
export interface GetRenderDeployAppResponse { app: unknown }
|
|
145
148
|
export interface GetScoutingHandleResponse { sliver: unknown }
|
|
146
149
|
export interface GetScoutingResponse { builders: unknown; name_only: unknown }
|
|
147
150
|
export interface GetSecurityDocsResponse { docs: unknown }
|
|
@@ -217,7 +220,7 @@ export interface PatchProvisioningInstancesIdDetailResponse { ok: boolean; descr
|
|
|
217
220
|
export interface PatchProvisioningInstancesIdEnvManifestVarIdRequest { name?: string; description?: string; environments?: unknown[]; required?: boolean }
|
|
218
221
|
export interface PatchProvisioningInstancesIdEnvManifestVarIdResponse { ok: boolean; env_var: unknown; values_held: boolean }
|
|
219
222
|
export interface PatchProvisioningInstancesIdSettingsResponse { ok: boolean; saved: unknown; planet: unknown; push: unknown }
|
|
220
|
-
export interface PatchSpecialitiesIdRequest { name?: string; summary?: string; contract_md?: string; visibility?: string; sellable?: boolean }
|
|
223
|
+
export interface PatchSpecialitiesIdRequest { name?: string; summary?: string; contract_md?: string; visibility?: string; sellable?: boolean; skills?: string[] }
|
|
221
224
|
export interface PatchSpecialitiesIdResponse { speciality: unknown }
|
|
222
225
|
export interface PatchTaskRecommendationsIdRequest { status: "declined" | "withdrawn" }
|
|
223
226
|
export interface PatchTaskRecommendationsIdResponse { ok: boolean; recommendation: unknown }
|
|
@@ -289,6 +292,8 @@ export interface PostGithubRepoVisibilityRequest { repo: string; visibility: "pu
|
|
|
289
292
|
export interface PostGithubRepoVisibilityResponse { ok: boolean; repo: unknown; private_deployable: boolean }
|
|
290
293
|
export interface PostGithubReposRequest { name: string }
|
|
291
294
|
export interface PostGithubReposResponse { repo: unknown }
|
|
295
|
+
export interface PostGoalTaskRelevanceIdDecideRequest { decision: "confirmed_gaming" | "false_positive"; note?: string }
|
|
296
|
+
export interface PostGoalTaskRelevanceIdDecideResponse { ok: boolean; flag: unknown }
|
|
292
297
|
export interface PostGoalsIdArchiveRequest { reason?: string; dispositions?: Record<string, unknown> }
|
|
293
298
|
export interface PostGoalsIdArchiveResponse { ok: boolean; goal: unknown; applied: unknown }
|
|
294
299
|
export interface PostGoalsIdConflictsResolveRequest { action: string; note?: string; touches?: string[]; first_task_id?: StringifiableId; then_task_id?: StringifiableId; task_id?: StringifiableId }
|
|
@@ -340,7 +345,7 @@ export interface PostHelpRequestsIdRepliesResponse { ok: boolean; reply: unknown
|
|
|
340
345
|
export interface PostHelpRequestsRequest { needs_craft?: string; needs_builder_id?: number; what_is_stuck: string; task_id?: number; goal_id?: number }
|
|
341
346
|
export interface PostHelpRequestsResponse { ok: boolean; help_request: unknown }
|
|
342
347
|
export interface PostInboxIdDevelopRequest { field_values: Record<string, unknown>; template_key?: string; recommendation?: string }
|
|
343
|
-
export interface PostInboxIdRatifyGoalRequest { target_version: string; scope_modules?: string[]; admit_reason?: string; notes_md?: string }
|
|
348
|
+
export interface PostInboxIdRatifyGoalRequest { target_version: string; scope_modules?: string[]; admit_reason?: string; notes_md?: string; success_criterion?: string }
|
|
344
349
|
export interface PostInboxIdRatifyRequest { notes_md?: string }
|
|
345
350
|
export interface PostInboxIdResubmitRequest { field_values: Record<string, unknown>; template_key?: string; recommendation?: string }
|
|
346
351
|
export interface PostInboxIdSparkResponse { idea: unknown; sparked: boolean; unchanged: boolean }
|
|
@@ -375,9 +380,10 @@ export interface PostMyProjectsInvitesClientIdAcceptResponse { ok: boolean; acce
|
|
|
375
380
|
export interface PostMyProjectsInvitesClientIdDeclineResponse { ok: boolean; accepted: boolean }
|
|
376
381
|
export interface PostMyProjectsJoinRequest { origin: string; note?: string }
|
|
377
382
|
export interface PostMyProjectsJoinResponse { ok: boolean; status: unknown; project: unknown; message: unknown }
|
|
383
|
+
export interface PostNpmReleasePreviewRequest { version: string }
|
|
378
384
|
export interface PostOverrideRequestsIdDecideRequest { decision: string; note?: string }
|
|
379
385
|
export interface PostProjectsInviteRequest { client_id: string; github_login: string }
|
|
380
|
-
export interface PostProjectsProjectIdSpecialitiesRequest { name: string; discipline: string; summary?: string; contract_md?: string; visibility?: string; sellable?: boolean }
|
|
386
|
+
export interface PostProjectsProjectIdSpecialitiesRequest { name: string; discipline: string; summary?: string; contract_md?: string; visibility?: string; sellable?: boolean; skills?: string[] }
|
|
381
387
|
export interface PostProjectsProjectIdSpecialitiesResponse { speciality: unknown }
|
|
382
388
|
export interface PostProjectsRequest { origin: string; name: string; tagline?: string; description?: string; art_url?: string; type?: string; template?: string }
|
|
383
389
|
export interface PostProjectsResponse { project: unknown }
|
|
@@ -389,11 +395,16 @@ export interface PostProvisioningInstancesIdEnvManifestRequest { name: string; d
|
|
|
389
395
|
export interface PostProvisioningInstancesIdForceTeardownResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; superseded: unknown; message: unknown }
|
|
390
396
|
export interface PostProvisioningInstancesIdGithubAppRequest { account?: string }
|
|
391
397
|
export interface PostProvisioningInstancesIdGithubAppResponse { state: unknown; account: unknown; post_url: unknown; personal_url: unknown; org_url: unknown; org_login: unknown; manifest: unknown; redirect_url: unknown; expires_at: unknown }
|
|
398
|
+
export interface PostProvisioningInstancesIdRenderRequest { key: string; owner_id: string; mode: string; service_id?: string; web_plan?: string; db_plan?: string; region?: string; runtime?: string; build_command?: string; start_command?: string; database?: boolean }
|
|
399
|
+
export interface PostProvisioningInstancesIdRenderResponse { ok: boolean; queued: boolean; action: unknown; mode: unknown; with_setup: boolean; message: unknown }
|
|
392
400
|
export interface PostProvisioningInstancesIdRepoPrivateResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; message: unknown }
|
|
393
401
|
export interface PostProvisioningInstancesIdRestartResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; message: unknown }
|
|
394
402
|
export interface PostProvisioningInstancesIdTeardownResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; superseded: unknown; message: unknown }
|
|
395
403
|
export interface PostProvisioningInstancesRequest { slug: string; target_ref?: string; hosting_shape?: string; domain?: string; no_address?: boolean; tier?: string; onboard_mode?: string; type?: string; description?: string; detail?: Record<string, unknown>; modules?: string[] }
|
|
404
|
+
export interface PostProvisioningRenderLookupRequest { key: string; owner_id?: string }
|
|
396
405
|
export interface PostRemovalProposalsIdDecideRequest { verdict: string; note?: string }
|
|
406
|
+
export interface PostRenderDeployActRequest { action?: string; deployId?: string; confirm?: unknown; expectLiveDeployId?: unknown }
|
|
407
|
+
export interface PostRenderDeployActResponse { ok: boolean; action: unknown; started: unknown; render: unknown }
|
|
397
408
|
export interface PostSearchMarkRequest { chunk_id?: StringifiableId; useful?: unknown }
|
|
398
409
|
export interface PostSearchRequest { expand?: unknown; q?: string; source_kind?: string; limit?: unknown }
|
|
399
410
|
export interface PostSearchResponse { expand?: unknown; chunk?: unknown; query?: unknown; count?: unknown; total_full_tokens?: unknown; results?: unknown; corpus?: unknown }
|
|
@@ -418,7 +429,7 @@ export interface PostSpecialitiesIdDocumentsRequest { title: string; body_md: st
|
|
|
418
429
|
export interface PostSpecialitiesIdDocumentsResponse { skipped?: boolean; reason?: unknown; document?: unknown }
|
|
419
430
|
export interface PostSpecialitiesIdOfferResponse { speciality: unknown }
|
|
420
431
|
export interface PostSpecialitiesIdUnofferResponse { speciality: unknown }
|
|
421
|
-
export interface PostSpecialitiesRequest { name: string; discipline: string; summary?: string; contract_md?: string; visibility?: string; sellable?: boolean }
|
|
432
|
+
export interface PostSpecialitiesRequest { name: string; discipline: string; summary?: string; contract_md?: string; visibility?: string; sellable?: boolean; skills?: string[] }
|
|
422
433
|
export interface PostSpecialitiesResponse { speciality: unknown }
|
|
423
434
|
export interface PostSsoActivityRollupRequest { client_id: string; client_secret: string; github_id: StringifiableId; credits?: number; tasks_shipped?: number; karma?: number; rank?: string; disciplines?: unknown; recent_ships?: unknown }
|
|
424
435
|
export interface PostSsoActivityRollupResponse { ok: boolean }
|
|
@@ -472,6 +483,10 @@ export interface PutGovernmentRanksRankKeyPermissionsPermissionKeyResponse { ok:
|
|
|
472
483
|
export interface PutMingleOptInRequest { opted_in: boolean }
|
|
473
484
|
export interface PutMingleOptInResponse { opted_in: unknown; updated_at: unknown }
|
|
474
485
|
export interface PutMingleProjectRequest { enabled: boolean }
|
|
486
|
+
export interface PutRenderDeployAppRequest { ownerId?: string; serviceId?: string }
|
|
487
|
+
export interface PutRenderDeployAppResponse { app: unknown }
|
|
488
|
+
export interface PutSpecialitiesIdSkillsRequest { enabled_skills: string[] }
|
|
489
|
+
export interface PutSpecialitiesIdSkillsResponse { adoption: unknown }
|
|
475
490
|
export interface PutTasksIdDependenciesRequest { depends_on_task_ids: unknown[] }
|
|
476
491
|
export interface PutTasksIdDependenciesResponse { ok: boolean; written: unknown; dependencies: unknown }
|
|
477
492
|
export type StringifiableId = number | string;
|
|
@@ -776,6 +791,12 @@ export interface BongosClient {
|
|
|
776
791
|
/** POST /github/repos — rank: any-builder */
|
|
777
792
|
postGithubRepos(args: RequestArgs & { body: PostGithubReposRequest }): Promise<PostGithubReposResponse>;
|
|
778
793
|
};
|
|
794
|
+
"goalTaskRelevance": {
|
|
795
|
+
/** POST /goal-task-relevance/{id}/decide — rank: metic+archon */
|
|
796
|
+
postGoalTaskRelevanceIdDecide(args: RequestArgs & { body: PostGoalTaskRelevanceIdDecideRequest }): Promise<PostGoalTaskRelevanceIdDecideResponse>;
|
|
797
|
+
/** GET /goal-task-relevance/pending — rank: metic+archon */
|
|
798
|
+
getGoalTaskRelevancePending(args?: RequestArgs): Promise<GetGoalTaskRelevancePendingResponse>;
|
|
799
|
+
};
|
|
779
800
|
"goals": {
|
|
780
801
|
/** GET /goals — rank: any-builder */
|
|
781
802
|
getGoals(args?: RequestArgs): Promise<GetGoalsResponse>;
|
|
@@ -1121,6 +1142,16 @@ export interface BongosClient {
|
|
|
1121
1142
|
postMyProjectsJoin(args: RequestArgs & { body: PostMyProjectsJoinRequest }): Promise<PostMyProjectsJoinResponse>;
|
|
1122
1143
|
};
|
|
1123
1144
|
"npmRelease": {
|
|
1145
|
+
/** DELETE /npm-release/preview — rank: any-builder */
|
|
1146
|
+
deleteNpmReleasePreview(args?: RequestArgs): Promise<ApiResponse>;
|
|
1147
|
+
/** GET /npm-release/preview — rank: any-builder */
|
|
1148
|
+
getNpmReleasePreview(args?: RequestArgs): Promise<ApiResponse>;
|
|
1149
|
+
/** POST /npm-release/preview — rank: any-builder */
|
|
1150
|
+
postNpmReleasePreview(args: RequestArgs & { body: PostNpmReleasePreviewRequest }): Promise<ApiResponse>;
|
|
1151
|
+
/** GET /npm-release/preview/enter — rank: any-builder */
|
|
1152
|
+
getNpmReleasePreviewEnter(args?: RequestArgs): Promise<ApiResponse>;
|
|
1153
|
+
/** GET /npm-release/preview/exit — rank: any-builder */
|
|
1154
|
+
getNpmReleasePreviewExit(args?: RequestArgs): Promise<ApiResponse>;
|
|
1124
1155
|
/** GET /npm-release/task/{id} — rank: any-builder */
|
|
1125
1156
|
getNpmReleaseTaskId(args?: RequestArgs): Promise<ApiResponse>;
|
|
1126
1157
|
/** GET /npm-release/work — rank: archon */
|
|
@@ -1201,6 +1232,10 @@ export interface BongosClient {
|
|
|
1201
1232
|
postProvisioningInstancesIdGithubApp(args?: RequestArgs & { body?: PostProvisioningInstancesIdGithubAppRequest }): Promise<PostProvisioningInstancesIdGithubAppResponse>;
|
|
1202
1233
|
/** GET /provisioning/instances/{id}/invite-suggestions — rank: any-builder */
|
|
1203
1234
|
getProvisioningInstancesIdInviteSuggestions(args?: RequestArgs): Promise<GetProvisioningInstancesIdInviteSuggestionsResponse>;
|
|
1235
|
+
/** GET /provisioning/instances/{id}/render — rank: any-builder */
|
|
1236
|
+
getProvisioningInstancesIdRender(args?: RequestArgs): Promise<GetProvisioningInstancesIdRenderResponse>;
|
|
1237
|
+
/** POST /provisioning/instances/{id}/render — rank: any-builder */
|
|
1238
|
+
postProvisioningInstancesIdRender(args: RequestArgs & { body: PostProvisioningInstancesIdRenderRequest }): Promise<PostProvisioningInstancesIdRenderResponse>;
|
|
1204
1239
|
/** POST /provisioning/instances/{id}/repo-private — rank: any-builder */
|
|
1205
1240
|
postProvisioningInstancesIdRepoPrivate(args?: RequestArgs): Promise<PostProvisioningInstancesIdRepoPrivateResponse>;
|
|
1206
1241
|
/** POST /provisioning/instances/{id}/restart — rank: any-builder */
|
|
@@ -1215,6 +1250,8 @@ export interface BongosClient {
|
|
|
1215
1250
|
getProvisioningOnboardPlan(args?: RequestArgs): Promise<GetProvisioningOnboardPlanResponse>;
|
|
1216
1251
|
/** GET /provisioning/recommendations — rank: public */
|
|
1217
1252
|
getProvisioningRecommendations(args?: RequestArgs): Promise<GetProvisioningRecommendationsResponse>;
|
|
1253
|
+
/** POST /provisioning/render/lookup — rank: any-builder */
|
|
1254
|
+
postProvisioningRenderLookup(args: RequestArgs & { body: PostProvisioningRenderLookupRequest }): Promise<ApiResponse>;
|
|
1218
1255
|
/** GET /provisioning/slug-available — rank: any-builder */
|
|
1219
1256
|
getProvisioningSlugAvailable(args?: RequestArgs): Promise<GetProvisioningSlugAvailableResponse>;
|
|
1220
1257
|
/** GET /provisioning/starter-bundles — rank: public */
|
|
@@ -1266,6 +1303,16 @@ export interface BongosClient {
|
|
|
1266
1303
|
/** POST /removal-proposals/{id}/decide — rank: metic+archon */
|
|
1267
1304
|
postRemovalProposalsIdDecide(args: RequestArgs & { body: PostRemovalProposalsIdDecideRequest }): Promise<ApiResponse>;
|
|
1268
1305
|
};
|
|
1306
|
+
"renderDeploy": {
|
|
1307
|
+
/** POST /render-deploy/act — rank: archon */
|
|
1308
|
+
postRenderDeployAct(args?: RequestArgs & { body?: PostRenderDeployActRequest }): Promise<PostRenderDeployActResponse>;
|
|
1309
|
+
/** GET /render-deploy/app — rank: archon */
|
|
1310
|
+
getRenderDeployApp(args?: RequestArgs): Promise<GetRenderDeployAppResponse>;
|
|
1311
|
+
/** PUT /render-deploy/app — rank: archon */
|
|
1312
|
+
putRenderDeployApp(args?: RequestArgs & { body?: PutRenderDeployAppRequest }): Promise<PutRenderDeployAppResponse>;
|
|
1313
|
+
/** GET /render-deploy/history — rank: archon */
|
|
1314
|
+
getRenderDeployHistory(args?: RequestArgs): Promise<ApiResponse>;
|
|
1315
|
+
};
|
|
1269
1316
|
"scouting": {
|
|
1270
1317
|
/** GET /scouting — rank: metic+archon */
|
|
1271
1318
|
getScouting(args?: RequestArgs): Promise<GetScoutingResponse>;
|
|
@@ -1351,6 +1398,8 @@ export interface BongosClient {
|
|
|
1351
1398
|
deleteSpecialitiesIdDocumentsDocId(args?: RequestArgs): Promise<DeleteSpecialitiesIdDocumentsDocIdResponse>;
|
|
1352
1399
|
/** POST /specialities/{id}/offer — rank: metic+archon */
|
|
1353
1400
|
postSpecialitiesIdOffer(args?: RequestArgs): Promise<PostSpecialitiesIdOfferResponse>;
|
|
1401
|
+
/** PUT /specialities/{id}/skills — rank: any-builder */
|
|
1402
|
+
putSpecialitiesIdSkills(args: RequestArgs & { body: PutSpecialitiesIdSkillsRequest }): Promise<PutSpecialitiesIdSkillsResponse>;
|
|
1354
1403
|
/** POST /specialities/{id}/unoffer — rank: metic+archon */
|
|
1355
1404
|
postSpecialitiesIdUnoffer(args?: RequestArgs): Promise<PostSpecialitiesIdUnofferResponse>;
|
|
1356
1405
|
/** GET /specialities/offered — rank: any-builder */
|
|
@@ -368,6 +368,12 @@ export function createClient(opts = {}) {
|
|
|
368
368
|
// POST /github/repos — rank: any-builder — POST /github/repos
|
|
369
369
|
postGithubRepos: (args) => request("POST", "/github/repos", { hasBody: true }, args),
|
|
370
370
|
},
|
|
371
|
+
"goalTaskRelevance": {
|
|
372
|
+
// POST /goal-task-relevance/{id}/decide — rank: metic+archon — POST /goal-task-relevance/:id/decide
|
|
373
|
+
postGoalTaskRelevanceIdDecide: (args) => request("POST", "/goal-task-relevance/{id}/decide", { hasBody: true }, args),
|
|
374
|
+
// GET /goal-task-relevance/pending — rank: metic+archon — GET /goal-task-relevance/pending
|
|
375
|
+
getGoalTaskRelevancePending: (args) => request("GET", "/goal-task-relevance/pending", { hasBody: false }, args),
|
|
376
|
+
},
|
|
371
377
|
"goals": {
|
|
372
378
|
// GET /goals — rank: any-builder — GET /goals
|
|
373
379
|
getGoals: (args) => request("GET", "/goals", { hasBody: false }, args),
|
|
@@ -713,6 +719,16 @@ export function createClient(opts = {}) {
|
|
|
713
719
|
postMyProjectsJoin: (args) => request("POST", "/my-projects/join", { hasBody: true }, args),
|
|
714
720
|
},
|
|
715
721
|
"npmRelease": {
|
|
722
|
+
// DELETE /npm-release/preview — rank: any-builder — DELETE /npm-release/preview
|
|
723
|
+
deleteNpmReleasePreview: (args) => request("DELETE", "/npm-release/preview", { hasBody: false }, args),
|
|
724
|
+
// GET /npm-release/preview — rank: any-builder — GET /npm-release/preview
|
|
725
|
+
getNpmReleasePreview: (args) => request("GET", "/npm-release/preview", { hasBody: false }, args),
|
|
726
|
+
// POST /npm-release/preview — rank: any-builder — POST /npm-release/preview
|
|
727
|
+
postNpmReleasePreview: (args) => request("POST", "/npm-release/preview", { hasBody: true }, args),
|
|
728
|
+
// GET /npm-release/preview/enter — rank: any-builder — GET /npm-release/preview/enter
|
|
729
|
+
getNpmReleasePreviewEnter: (args) => request("GET", "/npm-release/preview/enter", { hasBody: false }, args),
|
|
730
|
+
// GET /npm-release/preview/exit — rank: any-builder — GET /npm-release/preview/exit
|
|
731
|
+
getNpmReleasePreviewExit: (args) => request("GET", "/npm-release/preview/exit", { hasBody: false }, args),
|
|
716
732
|
// GET /npm-release/task/{id} — rank: any-builder — GET /npm-release/task/:id
|
|
717
733
|
getNpmReleaseTaskId: (args) => request("GET", "/npm-release/task/{id}", { hasBody: false }, args),
|
|
718
734
|
// GET /npm-release/work — rank: archon — GET /npm-release/work
|
|
@@ -793,6 +809,10 @@ export function createClient(opts = {}) {
|
|
|
793
809
|
postProvisioningInstancesIdGithubApp: (args) => request("POST", "/provisioning/instances/{id}/github-app", { hasBody: true }, args),
|
|
794
810
|
// GET /provisioning/instances/{id}/invite-suggestions — rank: any-builder — GET /provisioning/instances/:id/invite-suggestions
|
|
795
811
|
getProvisioningInstancesIdInviteSuggestions: (args) => request("GET", "/provisioning/instances/{id}/invite-suggestions", { hasBody: false }, args),
|
|
812
|
+
// GET /provisioning/instances/{id}/render — rank: any-builder — GET /provisioning/instances/:id/render
|
|
813
|
+
getProvisioningInstancesIdRender: (args) => request("GET", "/provisioning/instances/{id}/render", { hasBody: false }, args),
|
|
814
|
+
// POST /provisioning/instances/{id}/render — rank: any-builder — POST /provisioning/instances/:id/render
|
|
815
|
+
postProvisioningInstancesIdRender: (args) => request("POST", "/provisioning/instances/{id}/render", { hasBody: true }, args),
|
|
796
816
|
// POST /provisioning/instances/{id}/repo-private — rank: any-builder — POST /provisioning/instances/:id/repo-private
|
|
797
817
|
postProvisioningInstancesIdRepoPrivate: (args) => request("POST", "/provisioning/instances/{id}/repo-private", { hasBody: true }, args),
|
|
798
818
|
// POST /provisioning/instances/{id}/restart — rank: any-builder — POST /provisioning/instances/:id/restart
|
|
@@ -807,6 +827,8 @@ export function createClient(opts = {}) {
|
|
|
807
827
|
getProvisioningOnboardPlan: (args) => request("GET", "/provisioning/onboard-plan", { hasBody: false }, args),
|
|
808
828
|
// GET /provisioning/recommendations — rank: public — GET /provisioning/recommendations
|
|
809
829
|
getProvisioningRecommendations: (args) => request("GET", "/provisioning/recommendations", { hasBody: false }, args),
|
|
830
|
+
// POST /provisioning/render/lookup — rank: any-builder — POST /provisioning/render/lookup
|
|
831
|
+
postProvisioningRenderLookup: (args) => request("POST", "/provisioning/render/lookup", { hasBody: true }, args),
|
|
810
832
|
// GET /provisioning/slug-available — rank: any-builder — GET /provisioning/slug-available
|
|
811
833
|
getProvisioningSlugAvailable: (args) => request("GET", "/provisioning/slug-available", { hasBody: false }, args),
|
|
812
834
|
// GET /provisioning/starter-bundles — rank: public — GET /provisioning/starter-bundles
|
|
@@ -858,6 +880,16 @@ export function createClient(opts = {}) {
|
|
|
858
880
|
// POST /removal-proposals/{id}/decide — rank: metic+archon — POST /removal-proposals/:id/decide
|
|
859
881
|
postRemovalProposalsIdDecide: (args) => request("POST", "/removal-proposals/{id}/decide", { hasBody: true }, args),
|
|
860
882
|
},
|
|
883
|
+
"renderDeploy": {
|
|
884
|
+
// POST /render-deploy/act — rank: archon — POST /render-deploy/act
|
|
885
|
+
postRenderDeployAct: (args) => request("POST", "/render-deploy/act", { hasBody: true }, args),
|
|
886
|
+
// GET /render-deploy/app — rank: archon — GET /render-deploy/app
|
|
887
|
+
getRenderDeployApp: (args) => request("GET", "/render-deploy/app", { hasBody: false }, args),
|
|
888
|
+
// PUT /render-deploy/app — rank: archon — PUT /render-deploy/app
|
|
889
|
+
putRenderDeployApp: (args) => request("PUT", "/render-deploy/app", { hasBody: true }, args),
|
|
890
|
+
// GET /render-deploy/history — rank: archon — GET /render-deploy/history
|
|
891
|
+
getRenderDeployHistory: (args) => request("GET", "/render-deploy/history", { hasBody: false }, args),
|
|
892
|
+
},
|
|
861
893
|
"scouting": {
|
|
862
894
|
// GET /scouting — rank: metic+archon — GET /scouting
|
|
863
895
|
getScouting: (args) => request("GET", "/scouting", { hasBody: false }, args),
|
|
@@ -943,6 +975,8 @@ export function createClient(opts = {}) {
|
|
|
943
975
|
deleteSpecialitiesIdDocumentsDocId: (args) => request("DELETE", "/specialities/{id}/documents/{docId}", { hasBody: false }, args),
|
|
944
976
|
// POST /specialities/{id}/offer — rank: metic+archon — POST /specialities/:id/offer
|
|
945
977
|
postSpecialitiesIdOffer: (args) => request("POST", "/specialities/{id}/offer", { hasBody: true }, args),
|
|
978
|
+
// PUT /specialities/{id}/skills — rank: any-builder — PUT /specialities/:id/skills
|
|
979
|
+
putSpecialitiesIdSkills: (args) => request("PUT", "/specialities/{id}/skills", { hasBody: true }, args),
|
|
946
980
|
// POST /specialities/{id}/unoffer — rank: metic+archon — POST /specialities/:id/unoffer
|
|
947
981
|
postSpecialitiesIdUnoffer: (args) => request("POST", "/specialities/{id}/unoffer", { hasBody: true }, args),
|
|
948
982
|
// GET /specialities/offered — rank: any-builder — GET /specialities/offered
|
|
@@ -15,7 +15,7 @@ The redaction surface is real, not theoretical: at build time **23** published f
|
|
|
15
15
|
|
|
16
16
|
## Decision
|
|
17
17
|
|
|
18
|
-
`scripts/public-mirror-export.js` (orchestration) + `scripts/gds/mirror-redact.js` (redaction library) + `.github/workflows/sync-public-mirror.yml` (schedule/transport). Seven decisions carry the weight:
|
|
18
|
+
`scripts/public-mirror-export.js` (orchestration) + `scripts/gds/mirror-redact.js` (redaction library) + `.github/workflows/sync-public-mirror.yml` (schedule/transport; **never built, see the 2026-09-29 correction at the end**). Seven decisions carry the weight:
|
|
19
19
|
|
|
20
20
|
### 1. Snapshot, not history replay
|
|
21
21
|
Each run picks the **newest commit whose committer date is ≥ 180 days old** (`pickSnapshotCommit`) and exports that single tree. The mirror accumulates one lagged snapshot commit per run — always ~6 months behind. Rejected replaying/redacting full history: far more code + risk (rewrite every commit) for no gain the "done-when" asks for. Matches the status-mirror precedent (sync current state as commits).
|
|
@@ -53,3 +53,7 @@ Transport reuses the ADR-0029/[#741](https://example.com/builders#/task/741) pat
|
|
|
53
53
|
- **Share one regex set for redact + detect.** The blind-spot bug above: the gate can't catch what its own bounded rule missed. Rejected — the detector is a separate, stricter substring scan.
|
|
54
54
|
- **TruffleHog as the only secret check.** Strong but network-dependent and verify-only (no transform); can't run in the exporter's own deterministic self-check or the unit tests. Kept the reusable in-process scrubber as the authoritative gate; TruffleHog may layer on later.
|
|
55
55
|
- **Write then scan the mirror on disk.** A failed run would leave a dirty (unpushed) tree and risk a partial state. In-memory-then-write makes abort atomic. Rejected.
|
|
56
|
+
|
|
57
|
+
## Correction (2026-09-29, task 1003405)
|
|
58
|
+
|
|
59
|
+
The workflow named above, `sync-public-mirror.yml`, was never added to the repo, so the weekly schedule described in the transport decision never existed. Publishing the redacted public mirror is a **manual** step: `node scripts/public-mirror-export.js --repo-dir <mirror-checkout> --push`. Automating it would open a new public release channel and needs the owner's approval first; it is captured as idea 1001159 rather than built. The design above is left as originally written.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# ADR 0111 — Instance hosting + domains as a Cloud Bongos module: the `provisioning` module boundary + the self-host / managed split
|
|
2
2
|
|
|
3
3
|
- **Status:** Accepted, **superseded in part by [ADR 0323](0323-hosting-is-three-shapes-and-we-are-not-the-landlord.md)** (2026-09-21) — the module boundary and the enqueue-only trust boundary STAND; the DigitalOcean droplet and `co-tenant` shapes it provisions do not. Customer projects move to a managed platform; DigitalOcean hosts hubs only.
|
|
4
|
+
- **Amended by [ADR 0348](0348-the-web-tier-may-look-read-only-at-what-an-owners-render-key-can-see.md)** (2026-09-29): §2 has one read-only exception — the web tier may ask Render what an owner's own key can see (workspaces, and the web services in one of them), holding the key for that request only. Every write to a cloud account still happens in the runner.
|
|
4
5
|
- **Status:** §2 STANDS and is now kernel-enforced as of [task 1004176](https://cloudbongos.com/builders#/task/1004176) (2026-09-23). It was, until then, enforced by the code alone — the web tier does only enqueue intents, but both tiers run as the same unix user and the token file was readable by it, so the boundary was a convention ([ADR 0327](0327-a-cloud-host-runs-on-the-owners-account-and-the-key-is-borrowed.md) §5). A systemd drop-in (`InaccessiblePaths=/etc/cloudbongos/box.env`, tracked at `scripts/gds/cloudbongos-token-isolation.conf`) now puts an empty mode-000 node over that file in the web tier's own mount namespace. The two tiers still run as the same unix user; the isolation is namespace-based, not ownership-based, and the reasoning for that narrower remedy is in [ADR 0327](0327-a-cloud-host-runs-on-the-owners-account-and-the-key-is-borrowed.md) §5.
|
|
5
6
|
- **Status (original):** Accepted (boundary + split decided with the owner; build is task-pending — see §Consequences for the seeded tasks)
|
|
6
7
|
- **Date:** 2026-07-03
|
|
@@ -106,3 +106,20 @@ Seeded as tasks under this ADR (dependencies noted): pay-on-land (economy + life
|
|
|
106
106
|
`needs_rebase` state + reconciler flag (lifecycle + migration) → claim gate (lifecycle/claims)
|
|
107
107
|
→ clawback migration (depends on pay-on-land being live) → hall + `/builder-start` surfacing →
|
|
108
108
|
tests. See the [#2035](https://example.com/builders#/task/2035) dependency graph.
|
|
109
|
+
|
|
110
|
+
## Amendment — the CI-unblock exemption (task 1004370, 2026-09-30)
|
|
111
|
+
|
|
112
|
+
The gate assumed an owed rebase is always the builder's to clear. It is not when main's own CI
|
|
113
|
+
is red for a reason outside every branch (2026-09-29: an npm advisory against `undici` tripped
|
|
114
|
+
the audit gate). Then no confirmed task can land, so every builder holding one is refused new
|
|
115
|
+
claims, including the claim on the fix that would let their task land, and release is no exit
|
|
116
|
+
either because a confirmed task has no open claim to release.
|
|
117
|
+
|
|
118
|
+
So the gate now lets exactly one shape of task through: **P1 and `kind=infra`**, the shape a
|
|
119
|
+
CI-unblock is filed in (`isRebaseGateExempt` in `modules/lifecycle/db-claims.js`). Filing one
|
|
120
|
+
needs `task.create`, which is Metic-floored, so the door is no wider than the people who could
|
|
121
|
+
already file the fix. The owed rebases are still reported everywhere, and the gate still
|
|
122
|
+
refuses every other claim. The two other options the task named were not taken: skipping the
|
|
123
|
+
gate while main's last CI run is red would make the claim path depend on reading GitHub check
|
|
124
|
+
state, which is unreadable from this app in places (`checks_unreadable`); and a release-to-ready
|
|
125
|
+
path for confirmed tasks would make the builder throw away graded work to get unstuck.
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Date: 2026-08-17 · Status: accepted · Task: 1002735 (walk finding N4, idea 1000708)
|
|
4
4
|
|
|
5
|
+
> **Amended by [ADR 0350](0350-the-hub-holds-a-per-project-write-deploy-key-so-a-hosted-upgrade-reaches-github.md):** the hub now also holds a second, WRITABLE per-project key (`cloudbongos-pin-<slug>`), kept outside the checkout, so an upgraded pin reaches the repo without the owner's one-hour token. The pull key described here is unchanged.
|
|
6
|
+
|
|
5
7
|
## Context
|
|
6
8
|
|
|
7
9
|
A standalone instance's repo is cloned/pushed **once** with the owner's `repo`-scoped OAuth
|
|
@@ -74,7 +74,7 @@ Already shipped in `specialities_catalog`: `owner_kind` (`builder` | `project`),
|
|
|
74
74
|
|
|
75
75
|
Deliberately separate tasks, because the middle one is where the ruling lives and it should not be a sub-bullet of a schema change:
|
|
76
76
|
|
|
77
|
-
1. **Schema + validation** — the offered set on the catalog, the enabled set on the adoption, `validateDraft`, the routes. Refuses a skill the instance does not have.
|
|
77
|
+
1. **Schema + validation** — the offered set on the catalog, the enabled set on the adoption, `validateDraft`, the routes. Refuses a skill the instance does not have. *Built in task 1004072 (`skills` / `enabled_skills`, specialities_003, `modules/specialities/skills.js`).*
|
|
78
78
|
2. **The walkthrough** — the adoption flow that presents each skill and takes a decision. The ruling's real deliverable.
|
|
79
79
|
3. **Injection** — the enabled set reaches the session through the contract the Conductor already injects; a line naming the skills this builder leans on, per [ADR 0296](0296-a-role-speciality-is-data-over-three-existing-surfaces.md)'s pattern of using surfaces that exist.
|
|
80
80
|
|
|
@@ -30,6 +30,8 @@ explainable in a sentence.
|
|
|
30
30
|
Each part is scored 0–100 per module **version**, because a new version can be better or worse
|
|
31
31
|
than the last.
|
|
32
32
|
|
|
33
|
+
> **Amended by [ADR 0347](0347-every-store-module-ships-a-how-to.md):** adds a **Docs** part (the how-to, scored day one), shown with the parts but not in the D3 average.
|
|
34
|
+
|
|
33
35
|
### D2 — Security is a gate, not an ingredient
|
|
34
36
|
|
|
35
37
|
A version that **fails the security check is not listed**, whatever else it scores. Security is
|