@bongos/core 1.19.288 → 1.19.290
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 +39 -24
- package/.claude/skills/idea-triage/SKILL.md +32 -2
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +2 -0
- package/clients/bongos-client/index.cjs +2 -0
- package/clients/bongos-client/index.d.ts +3 -2
- package/clients/bongos-client/index.mjs +2 -0
- package/docs/api/openapi.json +35 -22
- package/docs/api-reference.md +3 -2
- package/docs/copy-inventory.md +15 -13
- package/docs/copy-registry.json +32 -14
- package/modules/hall-ui/public/task-detail.js +75 -0
- package/modules/lifecycle/goal-suggest.js +171 -0
- package/modules/lifecycle/routes/goals.js +9 -19
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/gds/triage.js +98 -7
- package/src/bongos/route-rank-check.js +17 -2
- package/src/module-api.js +5 -1
- package/tests/goal_suggest.mjs +195 -0
- package/tests/promote_goal_id.mjs +316 -0
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.290",
|
|
6
|
+
"core_contract": "1.19.290",
|
|
7
|
+
"source_commit": "a983fae1fa7615fda22b12d59ff393255fd81a19",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-
|
|
9
|
+
"built_at": "2026-08-22T04:46:05.299Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 320,
|
|
13
13
|
"agent_docs_stubbed": 22,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 1389,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 1731,
|
|
20
|
+
"tree_sha256": "f3100f6df33ff1d5f9e4da0d536a0cc792b0c7ad9e3c945c87324554b34105db",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
{
|
|
173
173
|
"path": ".claude/skills/idea-triage/SKILL.md",
|
|
174
174
|
"mode": "0000644",
|
|
175
|
-
"sha256": "
|
|
175
|
+
"sha256": "c74c93659c4576b32d829ebb2774feb8771125b31b677e070841f4cc25ed0232"
|
|
176
176
|
},
|
|
177
177
|
{
|
|
178
178
|
"path": ".claude/skills/ideate/SKILL.md",
|
|
@@ -347,12 +347,12 @@
|
|
|
347
347
|
{
|
|
348
348
|
"path": "clients/bongos-client/README.md",
|
|
349
349
|
"mode": "0000644",
|
|
350
|
-
"sha256": "
|
|
350
|
+
"sha256": "aaf0bb7dae10d271e9999093935fef5ae8d85c3a2e3d5b4c52e0c11fed8c581e"
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
354
354
|
"mode": "0000644",
|
|
355
|
-
"sha256": "
|
|
355
|
+
"sha256": "372a5584ddad52fb524815fc7b50d1aab9163e974aac6f2c64f479e4034914a1"
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
"path": "clients/bongos-client/examples/hello-world.mjs",
|
|
@@ -362,17 +362,17 @@
|
|
|
362
362
|
{
|
|
363
363
|
"path": "clients/bongos-client/index.cjs",
|
|
364
364
|
"mode": "0000644",
|
|
365
|
-
"sha256": "
|
|
365
|
+
"sha256": "7faac7fc48e714c76c2b19feaaf9c730b2c9b10ab71ddc5697c21497d02f10ef"
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
368
|
"path": "clients/bongos-client/index.d.ts",
|
|
369
369
|
"mode": "0000644",
|
|
370
|
-
"sha256": "
|
|
370
|
+
"sha256": "7aba0fe1d782cb6308f57dc2e5f6fe0d5ffe0f537d4ffe846bdc7a03e0f8064d"
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
"path": "clients/bongos-client/index.mjs",
|
|
374
374
|
"mode": "0000644",
|
|
375
|
-
"sha256": "
|
|
375
|
+
"sha256": "5f1d221bfbf8d329f883a5dc3e84414728c67201d66faceff04d48732e44b13c"
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
378
|
"path": "clients/bongos-client/package.json",
|
|
@@ -1407,12 +1407,12 @@
|
|
|
1407
1407
|
{
|
|
1408
1408
|
"path": "docs/api-reference.md",
|
|
1409
1409
|
"mode": "0000644",
|
|
1410
|
-
"sha256": "
|
|
1410
|
+
"sha256": "2c4a9b56aea5a8e1a42c70ad5c2646c0d6db6d713c13b8d2068bd3a2fa6ac27e"
|
|
1411
1411
|
},
|
|
1412
1412
|
{
|
|
1413
1413
|
"path": "docs/api/openapi.json",
|
|
1414
1414
|
"mode": "0000644",
|
|
1415
|
-
"sha256": "
|
|
1415
|
+
"sha256": "fcb40a7d655517e6dd24b2d4e0e00a9fcace75b2eb0aa89348d2546abf8df422"
|
|
1416
1416
|
},
|
|
1417
1417
|
{
|
|
1418
1418
|
"path": "docs/architecture.md",
|
|
@@ -1437,12 +1437,12 @@
|
|
|
1437
1437
|
{
|
|
1438
1438
|
"path": "docs/copy-inventory.md",
|
|
1439
1439
|
"mode": "0000644",
|
|
1440
|
-
"sha256": "
|
|
1440
|
+
"sha256": "8cb5bb088aae803e6889571712cc4439fc870c88e104b1bb81dbd5fd1f9b9bd3"
|
|
1441
1441
|
},
|
|
1442
1442
|
{
|
|
1443
1443
|
"path": "docs/copy-registry.json",
|
|
1444
1444
|
"mode": "0000644",
|
|
1445
|
-
"sha256": "
|
|
1445
|
+
"sha256": "18599cab2b3de43e33513c20cfaa241d3fe0545b861a27942d7f63d11f646750"
|
|
1446
1446
|
},
|
|
1447
1447
|
{
|
|
1448
1448
|
"path": "docs/design-contract.md",
|
|
@@ -3632,7 +3632,7 @@
|
|
|
3632
3632
|
{
|
|
3633
3633
|
"path": "modules/hall-ui/public/task-detail.js",
|
|
3634
3634
|
"mode": "0000644",
|
|
3635
|
-
"sha256": "
|
|
3635
|
+
"sha256": "e2c0702ec2eaa2c2d63de4d181f6118295a28e743f0df52722e5e717c3e96b72"
|
|
3636
3636
|
},
|
|
3637
3637
|
{
|
|
3638
3638
|
"path": "modules/hall-ui/public/task-lib.js",
|
|
@@ -3814,6 +3814,11 @@
|
|
|
3814
3814
|
"mode": "0000644",
|
|
3815
3815
|
"sha256": "0367f88aefa890d8d7f2472dd847467d632150a93db8a96b85717b5fb1cc8c9e"
|
|
3816
3816
|
},
|
|
3817
|
+
{
|
|
3818
|
+
"path": "modules/lifecycle/goal-suggest.js",
|
|
3819
|
+
"mode": "0000644",
|
|
3820
|
+
"sha256": "5fac15e501d6e5639b9e14d08ab34723b60e3569af913f4d15bb703a4e126a77"
|
|
3821
|
+
},
|
|
3817
3822
|
{
|
|
3818
3823
|
"path": "modules/lifecycle/hierarchy.js",
|
|
3819
3824
|
"mode": "0000644",
|
|
@@ -3882,7 +3887,7 @@
|
|
|
3882
3887
|
{
|
|
3883
3888
|
"path": "modules/lifecycle/routes/goals.js",
|
|
3884
3889
|
"mode": "0000644",
|
|
3885
|
-
"sha256": "
|
|
3890
|
+
"sha256": "3fcc0339927bcc7f426e93c7a5762b45496ecf4e9b841f905fb5f1c468b5f8c0"
|
|
3886
3891
|
},
|
|
3887
3892
|
{
|
|
3888
3893
|
"path": "modules/lifecycle/routes/lifecycle.js",
|
|
@@ -4517,12 +4522,12 @@
|
|
|
4517
4522
|
{
|
|
4518
4523
|
"path": "package-lock.json",
|
|
4519
4524
|
"mode": "0000644",
|
|
4520
|
-
"sha256": "
|
|
4525
|
+
"sha256": "e96dcf6ef882c61be154cfcb5d902942a1cad182173d11b63c824fdfb87f9879"
|
|
4521
4526
|
},
|
|
4522
4527
|
{
|
|
4523
4528
|
"path": "package.json",
|
|
4524
4529
|
"mode": "0000644",
|
|
4525
|
-
"sha256": "
|
|
4530
|
+
"sha256": "b1b86eeccda0d20d4c9b739016bd727f4867fa59de6a9dc5526b24ba5a6c92dd"
|
|
4526
4531
|
},
|
|
4527
4532
|
{
|
|
4528
4533
|
"path": "public-docs/index.html",
|
|
@@ -5777,7 +5782,7 @@
|
|
|
5777
5782
|
{
|
|
5778
5783
|
"path": "scripts/gds/triage.js",
|
|
5779
5784
|
"mode": "0000644",
|
|
5780
|
-
"sha256": "
|
|
5785
|
+
"sha256": "1c43db4e69ff4966addd91314638b3b2a0c3f7c91f832f09e4a162e5fd0789aa"
|
|
5781
5786
|
},
|
|
5782
5787
|
{
|
|
5783
5788
|
"path": "scripts/gds/update-channel.js",
|
|
@@ -6032,7 +6037,7 @@
|
|
|
6032
6037
|
{
|
|
6033
6038
|
"path": "src/bongos/route-rank-check.js",
|
|
6034
6039
|
"mode": "0000644",
|
|
6035
|
-
"sha256": "
|
|
6040
|
+
"sha256": "97b8345a1d891151c3bc134926124a0ac929db661e0cfb26c6760c8c6030bafc"
|
|
6036
6041
|
},
|
|
6037
6042
|
{
|
|
6038
6043
|
"path": "src/bongos/routes.js",
|
|
@@ -6167,7 +6172,7 @@
|
|
|
6167
6172
|
{
|
|
6168
6173
|
"path": "src/module-api.js",
|
|
6169
6174
|
"mode": "0000644",
|
|
6170
|
-
"sha256": "
|
|
6175
|
+
"sha256": "6d275b0dea8e96343483360f9429816f5b6b3a754d71e9ae0a3700481a22e0aa"
|
|
6171
6176
|
},
|
|
6172
6177
|
{
|
|
6173
6178
|
"path": "src/module-loader/catalog.js",
|
|
@@ -7129,6 +7134,11 @@
|
|
|
7129
7134
|
"mode": "0000644",
|
|
7130
7135
|
"sha256": "447e6376ae5f5e2bedf1a80b3355604544a5e349da87d110fc0135cc3cd98fac"
|
|
7131
7136
|
},
|
|
7137
|
+
{
|
|
7138
|
+
"path": "tests/goal_suggest.mjs",
|
|
7139
|
+
"mode": "0000644",
|
|
7140
|
+
"sha256": "7fc1d81afc49311a3c8525b644319e4831bff295bef8be244220fea5ebfbbbd1"
|
|
7141
|
+
},
|
|
7132
7142
|
{
|
|
7133
7143
|
"path": "tests/goal_tier.mjs",
|
|
7134
7144
|
"mode": "0000644",
|
|
@@ -7954,6 +7964,11 @@
|
|
|
7954
7964
|
"mode": "0000644",
|
|
7955
7965
|
"sha256": "211aa868b86a2b663f5525c3d2ddfa406498d608363d28c0786219d3c0b6e249"
|
|
7956
7966
|
},
|
|
7967
|
+
{
|
|
7968
|
+
"path": "tests/promote_goal_id.mjs",
|
|
7969
|
+
"mode": "0000644",
|
|
7970
|
+
"sha256": "24471b652054a82e985b86fdbbe2dc281114cf9829aed6c9b91348217e7f2460"
|
|
7971
|
+
},
|
|
7957
7972
|
{
|
|
7958
7973
|
"path": "tests/prose_edits.mjs",
|
|
7959
7974
|
"mode": "0000644",
|
|
@@ -1,10 +1,40 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: idea-triage
|
|
3
|
-
description: Daily walk through the Bongos idea_inbox —
|
|
3
|
+
description: Daily walk through the Bongos idea_inbox, which since task 1003071 holds only HOMELESS work — bugs and goal-bound captures now route to a task at filing time and never reach the inbox. For each open idea, prompt to promote (→ task, naming a goal), discard, or merge with another idea. Triggers when the user says "/idea-triage", "triage ideas", "review the inbox", "walk the idea inbox", or runs as a scheduled daily task. Metic+ rank only (Metic and Archon; not Xenos).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
You are running the daily idea-triage session for Example. Open ideas in the Bongos `idea_inbox` table get walked one-at-a-time and verdicted, so the inbox doesn't accumulate stale entries.
|
|
7
7
|
|
|
8
|
+
## The inbox is HOMELESS-ONLY now (task 1003071 / R13, goal 1000071)
|
|
9
|
+
|
|
10
|
+
**What changed.** Since R01 (task 1003065) a bug or goal-bound capture ROUTES at
|
|
11
|
+
filing time — it becomes a task in its goal, in one transaction, and never appears
|
|
12
|
+
here. The inbox is therefore no longer "everything anyone filed"; it holds only
|
|
13
|
+
**work with no home yet**. Expect it to be smaller, and read what IS in it as
|
|
14
|
+
work that genuinely needs a decision rather than a queue to clear.
|
|
15
|
+
|
|
16
|
+
**Two consequences for how you run this skill:**
|
|
17
|
+
|
|
18
|
+
1. **Every promote names a goal.** The promote step now asks for one, defaulted
|
|
19
|
+
for you, and `-` opts out explicitly. Take the default unless you disagree with
|
|
20
|
+
it. Opting out is legal but rarely right: a promote with no goal is **not**
|
|
21
|
+
goal-less — the server files it under the version's catch-all `<version> —
|
|
22
|
+
general` goal — and that bucket carries no done-when criteria, so since
|
|
23
|
+
[ADR 0183](../../../docs/adr/<redacted>.md) made criteria
|
|
24
|
+
close themselves off LINKED tasks, work parked there can never advance
|
|
25
|
+
anything. The general bucket used to be the silent default; it is now a choice
|
|
26
|
+
you type.
|
|
27
|
+
2. **The default is inherited, not guessed, when a hint exists.** Precedence is
|
|
28
|
+
the stored `suggested_goal_id` (written at capture precisely so triage inherits
|
|
29
|
+
the guess) FIRST, then the R07 suggester (`GET /goals/suggestions`). When the
|
|
30
|
+
suggester supplies it you are shown the score and the matched terms — check
|
|
31
|
+
them: token overlap can match an incidental word, so a low score with one
|
|
32
|
+
matched term is weak evidence, not a recommendation.
|
|
33
|
+
|
|
34
|
+
**If an idea should have routed at filing and didn't**, that is worth noticing
|
|
35
|
+
rather than just promoting past: it usually means the filer named no goal, and the
|
|
36
|
+
capture-time suggester (R08/R09/R11 surfaces) is where the fix belongs.
|
|
37
|
+
|
|
8
38
|
> **This skill is no longer the only way to triage.** Since task 1002447 a Metic+ builder can promote, discard and merge from the **hall** — the Home "Needs your attention" card's idea rows each carry a *Triage* verb that opens the record overlay, where all three forms live. No Claude session involved. What this skill adds over the hall is the **parallel development pass** (Step 1.5) — an idea fleshed out into open questions/risks before the verdict — so reach for it when the queue needs judgment, and use the hall when it just needs clearing.
|
|
9
39
|
|
|
10
40
|
## Rank gate — Metic+ only
|
|
@@ -70,7 +100,7 @@ node scripts/gds/triage.js --development "${TMPDIR:-/tmp}/otb-idea-development.j
|
|
|
70
100
|
|
|
71
101
|
`triage.js` prints each idea's developed block above its verdict prompt. It never *generates* the analysis (that's this skill's subagent fan-out) — it only displays what the cache holds, and runs exactly as before when no cache is present.
|
|
72
102
|
|
|
73
|
-
> **Not in this cut (follow-up leg).** The next step is to let the Archon push the developed `open_questions` *back to the submitter* — a round-trip in the Discord `#ideas` thread / DM before promotion — so the submitter says how they'd want it integrated. That needs the Discord bot interaction + idea↔thread linking (idea
|
|
103
|
+
> **Not in this cut (follow-up leg).** The next step is to let the Archon push the developed `open_questions` *back to the submitter* — a round-trip in the Discord `#ideas` thread / DM before promotion — so the submitter says how they'd want it integrated. That needs the Discord bot interaction + idea↔thread linking (idea `#216` / [ADR 0033](../../../docs/adr/<redacted>.md)) and is tracked separately. For now the open questions are answered by the Archon in-session.
|
|
74
104
|
|
|
75
105
|
**Step 2 — walk the list, idea by idea.**
|
|
76
106
|
|
|
@@ -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
|
+
- 294 operations across 47 resource groups
|
|
9
9
|
|
|
10
10
|
## Install
|
|
11
11
|
|
|
@@ -355,6 +355,8 @@ function createClient(opts = {}) {
|
|
|
355
355
|
getGoalsInbox: (args) => request("GET", "/goals/inbox", { hasBody: false }, args),
|
|
356
356
|
// POST /goals/reorder — rank: metic+archon — POST /goals/reorder
|
|
357
357
|
postGoalsReorder: (args) => request("POST", "/goals/reorder", { hasBody: true }, args),
|
|
358
|
+
// GET /goals/suggestions — rank: any-builder — GET /goals/suggestions
|
|
359
|
+
getGoalsSuggestions: (args) => request("GET", "/goals/suggestions", { hasBody: false }, args),
|
|
358
360
|
},
|
|
359
361
|
"government": {
|
|
360
362
|
// GET /government/assignments — rank: archon — GET /government/assignments
|
|
@@ -354,6 +354,8 @@ function createClient(opts = {}) {
|
|
|
354
354
|
getGoalsInbox: (args) => request("GET", "/goals/inbox", { hasBody: false }, args),
|
|
355
355
|
// POST /goals/reorder — rank: metic+archon — POST /goals/reorder
|
|
356
356
|
postGoalsReorder: (args) => request("POST", "/goals/reorder", { hasBody: true }, args),
|
|
357
|
+
// GET /goals/suggestions — rank: any-builder — GET /goals/suggestions
|
|
358
|
+
getGoalsSuggestions: (args) => request("GET", "/goals/suggestions", { hasBody: false }, args),
|
|
357
359
|
},
|
|
358
360
|
"government": {
|
|
359
361
|
// GET /government/assignments — rank: archon — GET /government/assignments
|
|
@@ -40,7 +40,6 @@ export interface GetGithubReposResponse { repos: unknown }
|
|
|
40
40
|
export interface GetGoalsIdConflictsResponse { ok: boolean; goal_id: unknown; conflicts: unknown; cross_goals_considered: unknown }
|
|
41
41
|
export interface GetGoalsIdRequestsResponse { requests: unknown }
|
|
42
42
|
export interface GetGoalsIdResponse { goal: unknown; members: unknown; criteria: unknown; dependencies: unknown }
|
|
43
|
-
export interface GetGoalsIdSuggestCriteriaResponse { goal_id: unknown; suggestions: unknown }
|
|
44
43
|
export interface GetGoalsResponse { goals: unknown }
|
|
45
44
|
export interface GetGovernmentAssignmentsResponse { assignments: unknown }
|
|
46
45
|
export interface GetGovernmentPermissionsResponse { permissions: unknown; principals: unknown }
|
|
@@ -605,7 +604,7 @@ export interface BongosClient {
|
|
|
605
604
|
/** POST /goals/{id}/scope — rank: metic+archon */
|
|
606
605
|
postGoalsIdScope(args: RequestArgs & { body: PostGoalsIdScopeRequest }): Promise<PostGoalsIdScopeResponse>;
|
|
607
606
|
/** GET /goals/{id}/suggest-criteria — rank: any-builder */
|
|
608
|
-
getGoalsIdSuggestCriteria(args?: RequestArgs): Promise<
|
|
607
|
+
getGoalsIdSuggestCriteria(args?: RequestArgs): Promise<ApiResponse>;
|
|
609
608
|
/** POST /goals/{id}/tasks — rank: any-builder */
|
|
610
609
|
postGoalsIdTasks(args: RequestArgs & { body: PostGoalsIdTasksRequest }): Promise<PostGoalsIdTasksResponse>;
|
|
611
610
|
/** POST /goals/{id}/transfer — rank: any-builder */
|
|
@@ -616,6 +615,8 @@ export interface BongosClient {
|
|
|
616
615
|
getGoalsInbox(args?: RequestArgs): Promise<ApiResponse>;
|
|
617
616
|
/** POST /goals/reorder — rank: metic+archon */
|
|
618
617
|
postGoalsReorder(args: RequestArgs & { body: PostGoalsReorderRequest }): Promise<PostGoalsReorderResponse>;
|
|
618
|
+
/** GET /goals/suggestions — rank: any-builder */
|
|
619
|
+
getGoalsSuggestions(args?: RequestArgs): Promise<ApiResponse>;
|
|
619
620
|
};
|
|
620
621
|
"government": {
|
|
621
622
|
/** GET /government/assignments — rank: archon */
|
|
@@ -351,6 +351,8 @@ export function createClient(opts = {}) {
|
|
|
351
351
|
getGoalsInbox: (args) => request("GET", "/goals/inbox", { hasBody: false }, args),
|
|
352
352
|
// POST /goals/reorder — rank: metic+archon — POST /goals/reorder
|
|
353
353
|
postGoalsReorder: (args) => request("POST", "/goals/reorder", { hasBody: true }, args),
|
|
354
|
+
// GET /goals/suggestions — rank: any-builder — GET /goals/suggestions
|
|
355
|
+
getGoalsSuggestions: (args) => request("GET", "/goals/suggestions", { hasBody: false }, args),
|
|
354
356
|
},
|
|
355
357
|
"government": {
|
|
356
358
|
// GET /government/assignments — rank: archon — GET /government/assignments
|
package/docs/api/openapi.json
CHANGED
|
@@ -4228,6 +4228,37 @@
|
|
|
4228
4228
|
]
|
|
4229
4229
|
}
|
|
4230
4230
|
},
|
|
4231
|
+
"/goals/suggestions": {
|
|
4232
|
+
"get": {
|
|
4233
|
+
"operationId": "get_goals_suggestions",
|
|
4234
|
+
"tags": [
|
|
4235
|
+
"goals"
|
|
4236
|
+
],
|
|
4237
|
+
"summary": "GET /goals/suggestions",
|
|
4238
|
+
"description": "GET /goals/suggestions — \"which goal should this draft live in?\", answered before anything is created (task 1003062 / R07). Handler + the ranking and visibility rationale: ../goal-suggest.js. Mounted BEFORE GET /goals/:id so 'suggestions' is never captured as an id. rank: any-builder — a read of open goal titles, same surface as GET /goals.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
4239
|
+
"x-rank": "any-builder",
|
|
4240
|
+
"x-source": "modules/lifecycle/routes/goals.js",
|
|
4241
|
+
"responses": {
|
|
4242
|
+
"200": {
|
|
4243
|
+
"description": "Success."
|
|
4244
|
+
},
|
|
4245
|
+
"400": {
|
|
4246
|
+
"$ref": "#/components/responses/BadRequest"
|
|
4247
|
+
},
|
|
4248
|
+
"401": {
|
|
4249
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
4250
|
+
},
|
|
4251
|
+
"403": {
|
|
4252
|
+
"$ref": "#/components/responses/Forbidden"
|
|
4253
|
+
}
|
|
4254
|
+
},
|
|
4255
|
+
"security": [
|
|
4256
|
+
{
|
|
4257
|
+
"builderSession": []
|
|
4258
|
+
}
|
|
4259
|
+
]
|
|
4260
|
+
}
|
|
4261
|
+
},
|
|
4231
4262
|
"/goals/{id}": {
|
|
4232
4263
|
"get": {
|
|
4233
4264
|
"operationId": "get_goals_id",
|
|
@@ -5257,14 +5288,7 @@
|
|
|
5257
5288
|
],
|
|
5258
5289
|
"responses": {
|
|
5259
5290
|
"200": {
|
|
5260
|
-
"description": "Success."
|
|
5261
|
-
"content": {
|
|
5262
|
-
"application/json": {
|
|
5263
|
-
"schema": {
|
|
5264
|
-
"$ref": "#/components/schemas/GetGoalsIdSuggestCriteriaResponse"
|
|
5265
|
-
}
|
|
5266
|
-
}
|
|
5267
|
-
}
|
|
5291
|
+
"description": "Success."
|
|
5268
5292
|
},
|
|
5269
5293
|
"400": {
|
|
5270
5294
|
"$ref": "#/components/responses/BadRequest"
|
|
@@ -13780,17 +13804,6 @@
|
|
|
13780
13804
|
"dependencies"
|
|
13781
13805
|
]
|
|
13782
13806
|
},
|
|
13783
|
-
"GetGoalsIdSuggestCriteriaResponse": {
|
|
13784
|
-
"type": "object",
|
|
13785
|
-
"properties": {
|
|
13786
|
-
"goal_id": {},
|
|
13787
|
-
"suggestions": {}
|
|
13788
|
-
},
|
|
13789
|
-
"required": [
|
|
13790
|
-
"goal_id",
|
|
13791
|
-
"suggestions"
|
|
13792
|
-
]
|
|
13793
|
-
},
|
|
13794
13807
|
"GetGoalsResponse": {
|
|
13795
13808
|
"type": "object",
|
|
13796
13809
|
"properties": {
|
|
@@ -18546,9 +18559,9 @@
|
|
|
18546
18559
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
18547
18560
|
}
|
|
18548
18561
|
},
|
|
18549
|
-
"x-endpoint-count":
|
|
18550
|
-
"x-schema-count":
|
|
18562
|
+
"x-endpoint-count": 294,
|
|
18563
|
+
"x-schema-count": 327,
|
|
18551
18564
|
"x-undocumented-bodies": 8,
|
|
18552
|
-
"x-response-schemas":
|
|
18565
|
+
"x-response-schemas": 218,
|
|
18553
18566
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
18554
18567
|
}
|
package/docs/api-reference.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Bongos API reference
|
|
4
4
|
|
|
5
|
-
> **Generated from the live route files** — the route file is authoritative.
|
|
5
|
+
> **Generated from the live route files** — the route file is authoritative. 294 endpoints across 47 route files.
|
|
6
6
|
> Machine-readable spec: [`docs/api/openapi.json`](api/openapi.json) (OpenAPI 3.1). Rendered docs site: **`/docs`** (e.g. `cloudbongos.com/docs`).
|
|
7
7
|
|
|
8
8
|
Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>.md)): `public` < `any-builder` < `metic+archon` < `archon`.
|
|
@@ -197,7 +197,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
197
197
|
| GET | `/api/bongos/github/repos` | `any-builder` | — | acts only on the caller's OWN GitHub identity (the token they granted). |
|
|
198
198
|
| POST | `/api/bongos/github/repos` | `any-builder` | `name` | creates a repo in the caller's OWN account. |
|
|
199
199
|
|
|
200
|
-
## `goals` (
|
|
200
|
+
## `goals` (26)
|
|
201
201
|
|
|
202
202
|
| Method | Path | Rank | Body | Description |
|
|
203
203
|
|---|---|---|---|---|
|
|
@@ -226,6 +226,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
226
226
|
| PATCH | `/api/bongos/goals/:id/visibility` | `any-builder` | — | PATCH /goals/:id/visibility — make a goal public\|private (task 1952 / ADR 0112). |
|
|
227
227
|
| GET | `/api/bongos/goals/inbox` | `any-builder` | — | GET /goals/inbox — the caller's private-goals inbox (task 1952 / ADR 0112): { invitations: invites addressed to me (accept/decline); join… |
|
|
228
228
|
| POST | `/api/bongos/goals/reorder` | `metic+archon` | `version_id`, `ordered_ids` | POST /goals/reorder — Archon drag-to-reorder: set the priority order of every goal WITHIN one version (task 1760). |
|
|
229
|
+
| GET | `/api/bongos/goals/suggestions` | `any-builder` | — | GET /goals/suggestions — "which goal should this draft live in?", answered before anything is created (task 1003062 / R07). |
|
|
229
230
|
|
|
230
231
|
## `government` (13)
|
|
231
232
|
|
package/docs/copy-inventory.md
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
> Deterministic on a given tree — regenerate and commit rather than hand-editing.
|
|
5
5
|
> Machine-readable twin: [`copy-registry.json`](copy-registry.json).
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**1339 strings** across 3 surfaces · 1188 distinct pieces of copy · 1339 certain, 0 heuristic · 121 shown in more than one place.
|
|
8
8
|
|
|
9
9
|
## Surfaces
|
|
10
10
|
|
|
11
11
|
| surface | lives at | files | strings |
|
|
12
12
|
|---|---|---|---|
|
|
13
|
-
| `builders-hall` | `modules/hall-ui/public` | 61 |
|
|
13
|
+
| `builders-hall` | `modules/hall-ui/public` | 61 | 1055 |
|
|
14
14
|
| `status-dashboard` | `modules/status-ui/public` | 4 | 98 |
|
|
15
15
|
| `landing` | `public-landing` | 2 | 186 |
|
|
16
16
|
|
|
@@ -78,7 +78,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
78
78
|
| `7775fec0fa85` | 2x | Could not load sessions. | modules/hall-ui/public/sessions.js:168, modules/hall-ui/public/sessions.js:207 |
|
|
79
79
|
| … | | _81 more in the JSON registry_ | |
|
|
80
80
|
|
|
81
|
-
## `builders-hall` —
|
|
81
|
+
## `builders-hall` — 1055 strings
|
|
82
82
|
|
|
83
83
|
| id | conf | text | where |
|
|
84
84
|
|---|---|---|---|
|
|
@@ -326,7 +326,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
326
326
|
| `7f600651bbf1` | certain | Couldn’t load your projects right now. | `modules/hall-ui/public/my-projects.js:115` |
|
|
327
327
|
| `38827a954f3b` | certain | Create a custom rank first. | `modules/hall-ui/public/government.js:397` |
|
|
328
328
|
| `dd8ead7adc9a` | certain | Create rank | `modules/hall-ui/public/government.html:62` |
|
|
329
|
-
| `d7beb841395e` | certain | Create task | `modules/hall-ui/public/task-detail.js:
|
|
329
|
+
| `d7beb841395e` | certain | Create task | `modules/hall-ui/public/task-detail.js:354` |
|
|
330
330
|
| `533f24219487` | certain | Create your | `modules/hall-ui/public/builders.js:984` |
|
|
331
331
|
| `e91a4d2e3e1c` | certain | Created rank {…}. | `modules/hall-ui/public/government.js:380` |
|
|
332
332
|
| `5968d13a9dbe` | certain | Criteria met — awaiting review | `modules/hall-ui/public/goals-page.js:341` |
|
|
@@ -364,7 +364,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
364
364
|
| `854a21d2eb39` | certain | Eight achievements recognize sustained contribution. Earned ones are highlighted; the rest show what’s left to | `modules/hall-ui/public/hall-widgets.js:197` |
|
|
365
365
|
| `58d381535285` | certain | Engagement reports | `modules/hall-ui/public/watch.html:120` |
|
|
366
366
|
| `35d1ae09a6b3` | certain | Enter a project URL. | `modules/hall-ui/public/my-projects.js:122` |
|
|
367
|
-
| `bd7a40639a1c` | certain | Estimate (min) | `modules/hall-ui/public/task-detail.js:
|
|
367
|
+
| `bd7a40639a1c` | certain | Estimate (min) | `modules/hall-ui/public/task-detail.js:349` |
|
|
368
368
|
| `c15d1f0ddfb6` | certain | Estimation accuracy | `modules/hall-ui/public/watch.html:133` |
|
|
369
369
|
| `44f928d13699` | certain | Event sounds | `modules/hall-ui/public/settings.html:282` |
|
|
370
370
|
| `8690c6424585` | certain | Every builder in {{worldName}} — rank, {{currency}}, karma, and active claims. | `modules/hall-ui/public/watch.html:61` |
|
|
@@ -387,7 +387,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
387
387
|
| `b9267033b1f1` | certain | Flag this copy | `modules/hall-ui/public/copy-desk.html:87` |
|
|
388
388
|
| `448d00771dc8` | certain | Flagged. It is in the queue. | `modules/hall-ui/public/copy-desk.js:281` |
|
|
389
389
|
| `617f13fa3fdb` | certain | Flip the switch. | `modules/hall-ui/public/builders.js:984` |
|
|
390
|
-
| `42cee5cb3584` | certain | Fold this idea into # | `modules/hall-ui/public/task-detail.js:
|
|
390
|
+
| `42cee5cb3584` | certain | Fold this idea into # | `modules/hall-ui/public/task-detail.js:444` |
|
|
391
391
|
| `647bcfcfdb03` | certain | Fresh CLI token issued. Paste it in your terminal: | `modules/hall-ui/public/settings.js:885` |
|
|
392
392
|
| `55c71d76a94c` | certain | From creation to production — and the exact step where {{currency}} are awarded (at | `modules/hall-ui/public/diagrams.html:61` |
|
|
393
393
|
| `a025080147a1` | certain | Full Idea | `modules/hall-ui/public/government.js:669` |
|
|
@@ -490,7 +490,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
490
490
|
| `0f9f86c556a2` | certain | Loading the primer… | `modules/hall-ui/public/primer.html:55` |
|
|
491
491
|
| `ceec2218efe3` | certain | Loading the roadmap… | `modules/hall-ui/public/roadmap.html:24` |
|
|
492
492
|
| `ceec2218efe3` | certain | Loading the roadmap… | `modules/hall-ui/public/roadmap.html:29` |
|
|
493
|
-
| `d28d321e8a1e` | certain | Loading versions… | `modules/hall-ui/public/task-detail.js:
|
|
493
|
+
| `d28d321e8a1e` | certain | Loading versions… | `modules/hall-ui/public/task-detail.js:307` |
|
|
494
494
|
| `3c43f157035e` | certain | Loading your goals… | `modules/hall-ui/public/goals.js:95` |
|
|
495
495
|
| `7a239a17afc8` | certain | Loading your preferences… | `modules/hall-ui/public/settings.html:26` |
|
|
496
496
|
| `04df1bd30129` | certain | Loading your rank… | `modules/hall-ui/public/ranks.html:23` |
|
|
@@ -564,7 +564,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
564
564
|
| `2c19f41704b9` | certain | Not yet available — {{worldName}} | `modules/hall-ui/public/not-ready.html:6` |
|
|
565
565
|
| `2c19f41704b9` | certain | Not yet available — {{worldName}} | `modules/hall-ui/public/not-ready.html:6` |
|
|
566
566
|
| `571b9b22dbda` | certain | Not yet ready — blocked by dependencies or awaiting promotion. These become claimable when their blockers ship | `modules/hall-ui/public/work.html:87` |
|
|
567
|
-
| `0c59d118db9b` | certain | Note (optional) | `modules/hall-ui/public/task-detail.js:
|
|
567
|
+
| `0c59d118db9b` | certain | Note (optional) | `modules/hall-ui/public/task-detail.js:447` |
|
|
568
568
|
| `95f8f8a4b288` | certain | Nothing flagged here. That is either good news or an unread queue — the duplicates below are the cheapest plac | `modules/hall-ui/public/copy-desk.js:172` |
|
|
569
569
|
| `fec5d78497e8` | certain | Nothing in the backlog right now. | `modules/hall-ui/public/work.js:953` |
|
|
570
570
|
| `18ce0723be0d` | certain | Nothing is waiting — no held changes need your approval. | `modules/hall-ui/public/gate.js:188` |
|
|
@@ -642,7 +642,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
642
642
|
| `26e6c9879035` | certain | Reading the diagrams | `modules/hall-ui/public/diagrams.html:48` |
|
|
643
643
|
| `81cd2cdf954d` | certain | Reading the request… | `modules/hall-ui/public/pair.html:23` |
|
|
644
644
|
| `5b581cca590f` | certain | Ready — tasks to do | `modules/hall-ui/public/work.html:53` |
|
|
645
|
-
| `9ea556e7b78b` | certain | Reason (optional) | `modules/hall-ui/public/task-detail.js:
|
|
645
|
+
| `9ea556e7b78b` | certain | Reason (optional) | `modules/hall-ui/public/task-detail.js:498` |
|
|
646
646
|
| `7df3fd4ebf41` | certain | Reason (shown to the builder) | `modules/hall-ui/public/harbor.js:146` |
|
|
647
647
|
| `06cbba1440b1` | certain | Rebase owed — new claims paused | `modules/hall-ui/public/builders.js:752` |
|
|
648
648
|
| `58fb6fe4b47e` | certain | Recent history could not be loaded right now. | `modules/hall-ui/public/work.js:1052` |
|
|
@@ -974,7 +974,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
974
974
|
| `06aab18fc3b5` | certain | holds the repo. Follow the numbered path to see how a credential-less box gets its work to prod. This is the l | `modules/hall-ui/public/diagrams.html:83` |
|
|
975
975
|
| `17ab8db79e1f` | certain | holds the worker, the code, and your local memory; the | `modules/hall-ui/public/diagrams.html:83` |
|
|
976
976
|
| `7d5cbe3d81e4` | certain | how long a vote stays open | `modules/hall-ui/public/government.html:40` |
|
|
977
|
-
| `dacb901c4f10` | certain | idea number | `modules/hall-ui/public/task-detail.js:
|
|
977
|
+
| `dacb901c4f10` | certain | idea number | `modules/hall-ui/public/task-detail.js:445` |
|
|
978
978
|
| `b2b399fdd6a4` | certain | in progress | `modules/hall-ui/public/goals-page.js:423` |
|
|
979
979
|
| `b2b399fdd6a4` | certain | in progress | `modules/hall-ui/public/roadmap.js:108` |
|
|
980
980
|
| `b2b399fdd6a4` | certain | in progress | `modules/hall-ui/public/roadmap.js:194` |
|
|
@@ -987,6 +987,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
987
987
|
| `c767b3e07826` | certain | is only the screen; the | `modules/hall-ui/public/diagrams.html:83` |
|
|
988
988
|
| `aa530bd15088` | certain | itself). The registry stays the single source of truth for what the hall shows; a fitness check (scripts/gds/f | `modules/hall-ui/public/index.html:44` |
|
|
989
989
|
| `d46875348b9c` | certain | ladder · read-only | `modules/hall-ui/public/government.js:116` |
|
|
990
|
+
| `2ce7738b1eb0` | certain | loading goals… | `modules/hall-ui/public/task-detail.js:371` |
|
|
990
991
|
| `8c22f0ee5edb` | certain | looked at | `modules/hall-ui/public/copy-desk.js:114` |
|
|
991
992
|
| `754bdec368ed` | certain | lowest credits | `modules/hall-ui/public/hall-widgets.js:136` |
|
|
992
993
|
| `cffba8409070` | certain | manage its visibility in Settings → Cross-project record | `modules/hall-ui/public/profile.js:200` |
|
|
@@ -1053,8 +1054,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1053
1054
|
| `1651cb1876f5` | certain | who sits on the board | `modules/hall-ui/public/government.html:40` |
|
|
1054
1055
|
| `4109de2e0bb9` | certain | whole surface | `modules/hall-ui/public/copy-desk.js:88` |
|
|
1055
1056
|
| `4109de2e0bb9` | certain | whole surface | `modules/hall-ui/public/copy-desk.js:251` |
|
|
1056
|
-
| `143f77e2b782` | certain | why these are the same | `modules/hall-ui/public/task-detail.js:
|
|
1057
|
-
| `ec7c228cb4ce` | certain | why this isn’t worth doing | `modules/hall-ui/public/task-detail.js:
|
|
1057
|
+
| `143f77e2b782` | certain | why these are the same | `modules/hall-ui/public/task-detail.js:448` |
|
|
1058
|
+
| `ec7c228cb4ce` | certain | why this isn’t worth doing | `modules/hall-ui/public/task-detail.js:499` |
|
|
1058
1059
|
| `66d979d0db89` | certain | your vote | `modules/hall-ui/public/government.js:691` |
|
|
1059
1060
|
| `7e2f2aac0645` | certain | {…} You always see your own numbers here. | `modules/hall-ui/public/settings.js:580` |
|
|
1060
1061
|
| `43b99dd1b755` | certain | {…} You can also ask in Discord #support. | `modules/hall-ui/public/box-panel.js:358` |
|
|
@@ -1104,6 +1105,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1104
1105
|
| `cbd220dd9184` | certain | — a later push must be re-approved. | `modules/hall-ui/public/gate.js:87` |
|
|
1105
1106
|
| `a6ae9cbdee30` | certain | — all builders — | `modules/hall-ui/public/builders.js:1692` |
|
|
1106
1107
|
| `729d4ce22b99` | certain | — any — | `modules/hall-ui/public/hall-widgets.js:132` |
|
|
1108
|
+
| `9ac518dfa95e` | certain | — none (the version's general bucket) — | `modules/hall-ui/public/task-detail.js:302` |
|
|
1107
1109
|
| `da9962dc1729` | certain | — or open any diagram fullscreen. | `modules/hall-ui/public/diagrams.html:42` |
|
|
1108
1110
|
| `d4ff85363f89` | certain | — so if Claude Desktop then says | `modules/hall-ui/public/box-panel.js:160` |
|
|
1109
1111
|
| `e5c5e94152b3` | certain | — that's all the tooling you need up front. | `modules/hall-ui/public/builders.js:1051` |
|
|
@@ -1122,7 +1124,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1122
1124
|
| `7926e30955d2` | certain | ← Back to goal | `modules/hall-ui/public/goals.html:163` |
|
|
1123
1125
|
| `7926e30955d2` | certain | ← Back to goal | `modules/hall-ui/public/goals.html:175` |
|
|
1124
1126
|
| `1e7cf7b1e64e` | certain | ← Newer | `modules/hall-ui/public/sessions.html:56` |
|
|
1125
|
-
| `2180e0ecf138` | certain | → no idea # | `modules/hall-ui/public/task-detail.js:
|
|
1127
|
+
| `2180e0ecf138` | certain | → no idea # | `modules/hall-ui/public/task-detail.js:466` |
|
|
1126
1128
|
| `d5d76f1c0dfe` | certain | ○ reserved | `modules/hall-ui/public/diagrams.html:53` |
|
|
1127
1129
|
| `97b0773e72a5` | certain | ● LIVE | `modules/hall-ui/public/diagrams.html:51` |
|
|
1128
1130
|
| `1375334c77f6` | certain | ⚠ This box is running | `modules/hall-ui/public/box-panel.js:202` |
|