@bongos/core 1.19.1040 → 1.19.1042

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/.bongos-core.json +110 -80
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +4 -0
  4. package/clients/bongos-client/index.cjs +4 -0
  5. package/clients/bongos-client/index.d.ts +6 -1
  6. package/clients/bongos-client/index.mjs +4 -0
  7. package/docs/adr/0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md +14 -0
  8. package/docs/adr/0339-a-projects-owner-upgrades-it-and-a-hosted-project-hands-off-to-the-hub-door.md +1 -0
  9. package/docs/adr/0340-every-hall-takes-its-update-from-settings-and-deploy-is-the-platform-halls-page.md +64 -0
  10. package/docs/adr/README.md +1 -0
  11. package/docs/api/openapi.json +64 -7
  12. package/docs/api-reference.md +7 -1
  13. package/docs/copy-inventory.md +41 -21
  14. package/docs/copy-registry.json +207 -27
  15. package/docs/file-map.md +1 -1
  16. package/docs/module-api-changelog.md +12 -0
  17. package/modules/grading/grader-subagent.js +7 -0
  18. package/modules/hall-ui/public/atlas.html +1 -1
  19. package/modules/hall-ui/public/blockers.html +1 -1
  20. package/modules/hall-ui/public/board-room.html +1 -1
  21. package/modules/hall-ui/public/collab.html +1 -1
  22. package/modules/hall-ui/public/copy-desk.html +1 -1
  23. package/modules/hall-ui/public/deploy.html +1 -1
  24. package/modules/hall-ui/public/diagrams.html +1 -1
  25. package/modules/hall-ui/public/drachmae.html +1 -1
  26. package/modules/hall-ui/public/fleet.html +1 -1
  27. package/modules/hall-ui/public/gate.html +1 -1
  28. package/modules/hall-ui/public/goals.html +1 -1
  29. package/modules/hall-ui/public/government.html +1 -1
  30. package/modules/hall-ui/public/idea.html +1 -1
  31. package/modules/hall-ui/public/ideas.html +1 -1
  32. package/modules/hall-ui/public/index.html +1 -1
  33. package/modules/hall-ui/public/modules.html +1 -1
  34. package/modules/hall-ui/public/palette.js +1 -0
  35. package/modules/hall-ui/public/people.html +1 -1
  36. package/modules/hall-ui/public/primer.html +1 -1
  37. package/modules/hall-ui/public/profile.html +1 -1
  38. package/modules/hall-ui/public/project-settings.html +1 -1
  39. package/modules/hall-ui/public/ranks.html +1 -1
  40. package/modules/hall-ui/public/roadmap.html +1 -1
  41. package/modules/hall-ui/public/roster.html +1 -1
  42. package/modules/hall-ui/public/sessions.html +1 -1
  43. package/modules/hall-ui/public/settings-software-update.js +194 -0
  44. package/modules/hall-ui/public/settings.css +39 -0
  45. package/modules/hall-ui/public/settings.html +24 -2
  46. package/modules/hall-ui/public/settings.js +5 -0
  47. package/modules/hall-ui/public/settings.states.json +2 -1
  48. package/modules/hall-ui/public/shell.js +25 -39
  49. package/modules/hall-ui/public/studio.html +1 -1
  50. package/modules/hall-ui/public/task.html +1 -1
  51. package/modules/hall-ui/public/watch.html +1 -1
  52. package/modules/hall-ui/public/work.html +1 -1
  53. package/modules/hall-ui/records/panel-family.md +9 -0
  54. package/modules/npm-release/public/work.js +8 -3
  55. package/modules/npm-release/work.js +8 -2
  56. package/package-lock.json +2 -2
  57. package/package.json +1 -1
  58. package/release-notes.json +16 -0
  59. package/scripts/gds/fitness.js +7 -0
  60. package/scripts/gds/main-audit.js +204 -7
  61. package/{modules/npm-release/registry.js → src/bongos/package-registry.js} +14 -7
  62. package/src/bongos/routes/core-update.js +65 -3
  63. package/src/bongos/serve-internal.js +17 -0
  64. package/src/bongos/software-update.js +127 -0
  65. package/src/module-api.js +10 -1
  66. package/tests/core_upgrade_owner_door.mjs +27 -18
  67. package/tests/grade_model_provider.mjs +1 -1
  68. package/tests/grader_reviewer_isolation.mjs +68 -0
  69. package/tests/helpers.mjs +92 -0
  70. package/tests/main_audit_attestation.mjs +238 -0
  71. package/tests/module_api.mjs +1 -0
  72. package/tests/nav_permission_atoms.mjs +1 -1
  73. package/tests/npm_release_page.mjs +11 -1
  74. package/tests/npm_release_work.mjs +9 -94
  75. package/tests/software_update.mjs +449 -0
@@ -948,6 +948,10 @@ function createClient(opts = {}) {
948
948
  // GET /sky/mine — rank: any-builder — GET /sky/mine
949
949
  getSkyMine: (args) => request("GET", "/sky/mine", { hasBody: false }, args),
950
950
  },
951
+ "softwareUpdate": {
952
+ // GET /software-update — rank: any-builder — GET /software-update
953
+ getSoftwareUpdate: (args) => request("GET", "/software-update", { hasBody: false }, args),
954
+ },
951
955
  "specialities": {
952
956
  // GET /specialities — rank: any-builder — GET /specialities
953
957
  getSpecialities: (args) => request("GET", "/specialities", { hasBody: false }, args),
@@ -947,6 +947,10 @@ function createClient(opts = {}) {
947
947
  // GET /sky/mine — rank: any-builder — GET /sky/mine
948
948
  getSkyMine: (args) => request("GET", "/sky/mine", { hasBody: false }, args),
949
949
  },
950
+ "softwareUpdate": {
951
+ // GET /software-update — rank: any-builder — GET /software-update
952
+ getSoftwareUpdate: (args) => request("GET", "/software-update", { hasBody: false }, args),
953
+ },
950
954
  "specialities": {
951
955
  // GET /specialities — rank: any-builder — GET /specialities
952
956
  getSpecialities: (args) => request("GET", "/specialities", { hasBody: false }, args),
@@ -61,7 +61,7 @@ export interface GetConnectionsDegreeHandleResponse { handle: unknown; degree: u
61
61
  export interface GetConnectionsRequestsResponse { incoming: unknown; outgoing: unknown; incoming_count: unknown; outgoing_count: unknown }
62
62
  export interface GetConnectionsResponse { connections: unknown; count: unknown }
63
63
  export interface GetConnectionsSuggestionsResponse { suggestions: unknown; count: unknown }
64
- export interface GetCoreUpdateResponse { ok: boolean; update: unknown; deploy_url: unknown }
64
+ export interface GetCoreUpdateResponse { ok: boolean; update: unknown }
65
65
  export interface GetCoreUpgradesResponse { ok: boolean; running: unknown; limit: unknown; upgrades: unknown }
66
66
  export interface GetDiscordChannelsPlanResponse { ok: boolean; guild_id: unknown; op_count: unknown; ops: unknown; warnings: unknown }
67
67
  export interface GetDiscordChannelsSnapshotResponse { ok: boolean; guild_id: unknown; config: unknown; warnings: unknown }
@@ -157,6 +157,7 @@ export interface GetSecurityScansResponse { scans: unknown }
157
157
  export interface GetSessionsIdResponse { session: unknown }
158
158
  export interface GetSessionsMineResponse { sessions: unknown; count: unknown }
159
159
  export interface GetSessionsSearchResponse { sessions: unknown; count: unknown; total: unknown; totals: unknown; limit: unknown; offset: unknown; session_types: unknown }
160
+ export interface GetSoftwareUpdateResponse { ok: boolean; update: unknown; door: unknown; can_update: unknown }
160
161
  export interface GetSpecialitiesIdDocumentsResponse { documents: unknown }
161
162
  export interface GetSpecialitiesIdResponse { speciality: unknown }
162
163
  export interface GetSpecialitiesOfferedResponse { suggestions: unknown }
@@ -1362,6 +1363,10 @@ export interface BongosClient {
1362
1363
  /** GET /sky/mine — rank: any-builder */
1363
1364
  getSkyMine(args?: RequestArgs): Promise<ApiResponse>;
1364
1365
  };
1366
+ "softwareUpdate": {
1367
+ /** GET /software-update — rank: any-builder */
1368
+ getSoftwareUpdate(args?: RequestArgs): Promise<GetSoftwareUpdateResponse>;
1369
+ };
1365
1370
  "specialities": {
1366
1371
  /** GET /specialities — rank: any-builder */
1367
1372
  getSpecialities(args?: RequestArgs): Promise<GetSpecialitiesResponse>;
@@ -944,6 +944,10 @@ export function createClient(opts = {}) {
944
944
  // GET /sky/mine — rank: any-builder — GET /sky/mine
945
945
  getSkyMine: (args) => request("GET", "/sky/mine", { hasBody: false }, args),
946
946
  },
947
+ "softwareUpdate": {
948
+ // GET /software-update — rank: any-builder — GET /software-update
949
+ getSoftwareUpdate: (args) => request("GET", "/software-update", { hasBody: false }, args),
950
+ },
947
951
  "specialities": {
948
952
  // GET /specialities — rank: any-builder — GET /specialities
949
953
  getSpecialities: (args) => request("GET", "/specialities", { hasBody: false }, args),
@@ -131,6 +131,20 @@ live reference instance where the Builder 25 incident happened, so it carries it
131
131
  - The layer table above stands: Layer 1 is still not a trust boundary; the post-push main audit —
132
132
  since task 1002612 a CI job on every push to `main` — remains the authoritative layer.
133
133
 
134
+ ## The un-spoofable signal: attestation pass, flag-only (2026-09-26, task 1001433)
135
+
136
+ The residual in the #863-followup section, that the git author name can be typed, gets its
137
+ closure. The owner chose to build it on the mark the server already writes: the
138
+ `gate-author-trust` commit status, posted on a ship's pushed tip only after the server has
139
+ resolved the builder's CLI session to a Metic+ rank (ADR 0058). `main-audit.js` now traces
140
+ each permission-sensitive commit to the pull request that brought it onto main (the second
141
+ parent of its first-parent merge). It requires that head to carry a success of that context,
142
+ **posted by the server's own GitHub identity**; anyone with write access can post a status
143
+ of the same name, so the creator is the part checked. By the owner's ruling it is
144
+ **flag-only**: an unattested commit is a `review` finding and never fails the audit or the
145
+ deploy gate. Moving it to blocking is a later, separate decision. Measured against the last
146
+ 60 mainline merges: 32 protected commits, 0 flagged.
147
+
134
148
  ## Notes
135
149
 
136
150
  We did **not** take immediate action against Builder 25 — Lars was overseeing the session and the change itself was a legitimate bug fix. The point of this ADR is the *mechanism*, not the person: the system must make the bypass hard and visible regardless of intent.
@@ -5,6 +5,7 @@
5
5
  - **Task:** [task 1004174](https://cloudbongos.com/builders#/task/1004174) (goal 1000090 — BONGOS-V2)
6
6
  - **Deciders:** the owner, Lars. On 2026-09-22 he said "every project has the option to upgrade its version of bongos including bongos itself", and that the control belongs in that project's own hall. On 2026-09-26 he ruled that **only a project's owner upgrades it**, adding that for him "owners and archons are the same", because he owns the platform.
7
7
  - **Amends:** [ADR 0293](0293-the-owners-deploy-door-is-an-intent-the-control-plane-drains.md) D5 ("Archon-gated server-side"). The deploy door gains a second audience, as stated below. D1 (the web tier only asks, the control plane acts), D3, D4 and D6 are unchanged.
8
+ - **Amended by:** [ADR 0340](0340-every-hall-takes-its-update-from-settings-and-deploy-is-the-platform-halls-page.md) (task 1004296) — D3's hand-off moves from the banner and the rail to Settings → Software update's Update button, and `GET /core-update` no longer answers `deploy_url`.
8
9
  - **Related:** [ADR 0328](0328-a-hosted-projects-authority-is-its-membership-row-not-its-owner-column.md) (the owner-OR-operator gate shape this reuses), [ADR 0210](0210-scouting-graduates-on-an-instance-asserted-owner-claim.md) (the `alsoAdmits` page-gate door this reuses), [ADR 0246](0246-catalog-membership-is-a-projection-not-a-federation-side-effect.md) (a hosted project's hub client id is its slug), [ADR 0043](0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md) / 0111 §2 (the web tier gains no capability)
9
10
 
10
11
  ## Context
@@ -0,0 +1,64 @@
1
+ # ADR 0340 — Every hall takes its update from Settings, and /deploy is the platform hall's page
2
+
3
+ - **Status:** Accepted
4
+ - **Date:** 2026-09-26
5
+ - **Task:** [task 1004296](https://cloudbongos.com/builders#/task/1004296) (goal 1000090 — BONGOS-V2), split out of [task 1002622](https://cloudbongos.com/builders#/task/1002622) §1.
6
+ - **Deciders:** the owner, Lars. On 2026-09-25 he asked that each builders hall's Settings carry "a version description where they can pull the latest release. Just like iOS does", and ruled that `/deploy` is "only for bongos builders hall itself not for all production ones".
7
+ - **Amends:** [ADR 0339](0339-a-projects-owner-upgrades-it-and-a-hosted-project-hands-off-to-the-hub-door.md) D3 (where a hosted hall uses the hub address) and the reach of [ADR 0293](0293-the-owners-deploy-door-is-an-intent-the-control-plane-drains.md)'s door page. Nothing about who may move a pin, or how the move runs, changes.
8
+
9
+ ## Context
10
+
11
+ Before this change a project learned about a newer core in one place, the banner (task 1004045), and only a holder of `core.pin.move` ever saw it. The banner named two version numbers and nothing that had landed between them. The only per-version record of work is the `release-notes.json` each package carries (task 1004218); the changelog's CI lines name none.
12
+
13
+ Every hall also served `/deploy`. The page's data and both of its acts are provisioning-module routes, so in a hall without that module (a hosted project, a self-hosted instance) it was a page with nothing behind it.
14
+
15
+ ## Decision
16
+
17
+ ### D1 — Settings → Software update, in the core, in every hall
18
+
19
+ A sixth Settings group. It shows the running core, then either "up to date" or the newest release the update channel lets this project take, then what each version in between brings, read from the newest package's own release notes.
20
+
21
+ - **Every signed-in builder reads it** (`GET /api/bongos/software-update`, `requireBuilder` only). It discloses nothing the public `GET /version` and npm do not already publish, so ADR 0043's vulnerability-window reason, which keeps the banner's reads on `core.pin.move`, does not apply here.
22
+ - **The channel rule is the runner's own** (`resolveChannelTarget`), with no channel passed, exactly as the banner. The panel never offers a version the runner would refuse.
23
+ - **"Up to date" is said only from an answer.** A failed registry read, a running version that cannot be named, and release notes that could not be read each render as what they are.
24
+
25
+ ### D2 — The Update button leads to the door; it is not the door
26
+
27
+ The server names where this project's door is:
28
+
29
+ - `local` — `/deploy`, where the hall runs the provisioning module.
30
+ - `hub` — ADR 0339 D3's `<hub>/deploy?project=<slug>`, on a federated hosted project.
31
+ - `cli` — neither, as on a self-hosted instance. The panel says `bongos upgrade` on the server takes the version, with the same health check and rollback.
32
+
33
+ The button is drawn only when the viewer holds `core.pin.move`. That check is cosmetic; the door re-checks every request.
34
+
35
+ ### D3 — `/deploy` exists only where the door does
36
+
37
+ In a hall that does not run the provisioning module, `GET /deploy` answers `302` to `/settings#software-update`. The redirect carries no gate, because it discloses nothing and Settings' own wall applies once it is followed. The platform's hall keeps `/deploy` behind its unchanged page gate. It remains the door for its own pin and, through `?project=`, for every hosted project's (ADR 0339).
38
+
39
+ ### D4 — The banner and the rail stop linking off-site
40
+
41
+ On every hall but the platform's, the banner's Upgrade link opens Settings → Software update. On that panel itself the banner points rather than linking to the page it is on, the rule task 1004145 set for `/deploy`. The rail's Deploy item is no longer re-pointed at the hub, and it stays hidden wherever the module is off. `GET /core-update` no longer answers `deploy_url`. The hub address now lives only in `GET /software-update`'s `door`, which is ADR 0339 D3's hand-off moved from two places to one.
42
+
43
+ ### D5 — The registry reader is the core's
44
+
45
+ `src/bongos/package-registry.js` holds the packument read, the in-process tarball stream and the small tar reader. It moved out of the npm-release module (task 1002622), because the one reader every hall needs cannot live inside a module that only one hall runs. Modules reach it through the doorway's `readPackageRegistry`, and both readers share one process-local cache.
46
+
47
+ ## Rejected
48
+
49
+ - **A copy of the two-step door inside Settings.** It would put the confirmation, the busy states and the rollback display in two places for one act. Those are the rules ADR 0293 D4 exists to keep exact.
50
+ - **Gating the panel on `core.pin.move`, as the banner is.** The owner asked for the version in every builder's Settings, and the panel offers no act of its own.
51
+ - **Keeping `/deploy` on other halls with a "moved" notice.** A page that exists only to say it does not belong there is the dead end this replaces.
52
+
53
+ ## Consequences
54
+
55
+ - **A hosted project gets the panel when it runs a core carrying this ADR**, like every in-hall change. Until then its banner still hands off as ADR 0339 D3 described.
56
+ - **The first open of the panel after a new release downloads that package once per server process** (about 24 MB for 1.19.1040, under a second from a droplet), then serves it from memory. It is read only when the group opens, never with the page.
57
+ - **What's new links each entry to its task only in the platform's hall**, whose ledger the ids belong to. Elsewhere the entries are plain text.
58
+ - **Proof:** `tests/software_update.mjs`:
59
+ - the reading, over a real gzipped tar and packument;
60
+ - the route, over real requests;
61
+ - the panel, executed in a DOM stub against a live reading;
62
+ - `/deploy`, answered by two real servers, one with the module and one without.
63
+
64
+ `tests/core_upgrade_owner_door.mjs` covers the banner's new link. Each guard was deleted in turn and a test went red.
@@ -431,3 +431,4 @@ This keeps the decision history honest and traceable.
431
431
  | 0337 | [**The hub account is the person, a hall account is their seat in one project, so anything that spans projects lives on the hub** ([task 1004255](https://cloudbongos.com/builders#/task/1004255), goal 1000110 — the owner's hub/hall re-scope, 2026-09-24/25). Extends [ADR 0141](<redacted>.md) from identity to placement: (1) a surface about the person across projects, or about more than one project, goes on the HUB (`public-landing`, `platform-identity`): people directory, community, guilds, connections, recruiting, platform-account settings; one about this project goes in the HALL (`hall-ui`); "Builders you may know" is on both; `status-ui` is the status dashboard, not the hall; (2) no authority moves, and hub actions still land as the project's own rows; (3) hall `/people` retires, ADR 0334's recruiting directory moves unchanged to the hub community page, `/roster` is the in-project directory; (4) owner calls: the hidden-builder recruiter panel is recruiter-only while public search is unchanged (amends community-tab spec D8); platform-account settings get a new hub page; **guild totals count hidden and private members by default, with a notice on the join card and a per-guild off switch (`counted_in_totals`), rounded to a 1–2–5 band, only once a guild has at least 3 of them, refreshed weekly; size stays the public roster length** (supersedes ADR 0336 D5; relaxes the privacy spec's "`hide_stats` beats everything" for guild totals only, for a member who was told), with the fake-account padding limit stated and accepted.](0337-the-hub-account-is-the-person-a-hall-account-is-their-seat-in-one-project.md) | platform identity / placement / privacy |
432
432
  | 0338 | [**Modules travel through a Bongos-hosted store, and an acquired module keeps working forever** ([task 1003782](https://cloudbongos.com/builders#/task/1003782), goal 1000091 — working area 5, owner Will). A module had no transport of its own: it reached an instance only inside the core (ADR 0107 §6) or in the instance's repo. Weighed npm packages, a Bongos-hosted store and git refs against the four things area 5's criteria require — entitlement before install, a per-version score, a tester channel, and a delist that stops distribution. npm and git refs fail entitlement and delist by construction. **D1:** Cloud Bongos hosts the store; a module version is a tarball + hash manifest in the same format `package-core.js` already emits (same `isPublishable()` gate), registry rows on the control-plane DB, artifacts in the already-paid DO Spaces bucket, served by the control plane only after an entitlement + channel check; free modules take the same path at price zero; install/update verify hashes on arrival; modules' own npm deps still travel via npm (ADR 0138). No new fixed cost. **D2 (owner):** delisting, author withdrawal or deletion removes a module from the catalog and stops new acquisitions and updates, but **an acquired module keeps working forever** — the store never disables or removes an installed copy and a delist never revokes an entitlement; the holder is told no more updates will come. Security issues are not a special case; a remote kill switch would need a superseding ADR. Rejected: npm, git refs, remote disable on delist.](0338-modules-travel-through-a-bongos-hosted-store.md) | modules / distribution / economy |
433
433
  | 0339 | [**A project's owner upgrades it, and a hosted project hands off to the hub's door** ([task 1004174](https://cloudbongos.com/builders#/task/1004174), goal 1000090 — the owner's ruling of 2026-09-26 that only a project's owner upgrades it). Amends ADR 0293 D5. **D1:** the deploy door's preview and move routes admit the OWNER of a tenant row (`co-tenant`/`cloud-host`) for that row, asked first; every other caller meets the unmodified `core.pin.move` gate, so a non-owner's refusal is unchanged whether or not the id exists and the widening can only admit. **D2:** the platform's own row stays atom-only. **D3:** `GET /core-update` names `<hub>/deploy?project=<slug>` on a federated project, and the hosted hall's banner and rail hand off there (the dead local Deploy item is gone); the hub's `/deploy` shell admits a project owner through `alsoAdmits: 'isProjectOwner'`. **D4:** the intent's actor records the door (`api:owner:<id>` / `api:archon:<id>`), both attributed on the `core_upgrades` ledger. Rejected: a tenant-side API that performs the upgrade, granting the system atom to owners, owners moving the platform row. ADR 0328 Phase 1 (task 1004159) should fold this gate into `requireProjectOwner`.](0339-a-projects-owner-upgrades-it-and-a-hosted-project-hands-off-to-the-hub-door.md) | provisioning / deploy door / permissions |
434
+ | 0340 | [**Every hall takes its update from Settings, and /deploy is the platform hall's page** ([task 1004296](https://cloudbongos.com/builders#/task/1004296), goal 1000090 — the owner's 2026-09-25 asks: a Settings version panel "just like iOS", and /deploy only in the Bongos hall). Amends ADR 0339 D3 and the reach of ADR 0293's page. **D1:** Settings → Software update in the core — the running core, the newest release the runner's own channel rule allows, and what each version in between carries from the newest package's release notes; every signed-in builder reads it, and "up to date" is said only from an answer. **D2:** its Update button leads to the door (local /deploy, the hub's /deploy?project=, or a `bongos upgrade` sentence), drawn only for holders of core.pin.move. **D3:** /deploy 302s to Settings on a hall without the provisioning module. **D4:** the banner links Settings everywhere but the platform; the rail is no longer re-pointed; /core-update drops deploy_url. **D5:** the registry reader moved into the core (module-api readPackageRegistry). Rejected: a second copy of the two-step door, gating the panel on the atom, a "moved" page.](0340-every-hall-takes-its-update-from-settings-and-deploy-is-the-platform-halls-page.md) | deploy door / settings / core update |
@@ -261,6 +261,10 @@
261
261
  "name": "sky",
262
262
  "description": "Endpoints under `/api/bongos/sky`."
263
263
  },
264
+ {
265
+ "name": "software-update",
266
+ "description": "Endpoints under `/api/bongos/software-update`."
267
+ },
264
268
  {
265
269
  "name": "specialities",
266
270
  "description": "Endpoints under `/api/bongos/specialities`."
@@ -17088,6 +17092,44 @@
17088
17092
  ]
17089
17093
  }
17090
17094
  },
17095
+ "/software-update": {
17096
+ "get": {
17097
+ "operationId": "get_software_update",
17098
+ "tags": [
17099
+ "software-update"
17100
+ ],
17101
+ "summary": "GET /software-update",
17102
+ "description": "GET /software-update — Settings → Software update (task 1004296): this project's core, the newest release its channel allows, what the versions between them carry, and where this project's Update button leads. Any signed-in builder (see the header).\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
17103
+ "x-rank": "any-builder",
17104
+ "x-source": "src/bongos/routes/core-update.js",
17105
+ "responses": {
17106
+ "200": {
17107
+ "description": "Success.",
17108
+ "content": {
17109
+ "application/json": {
17110
+ "schema": {
17111
+ "$ref": "#/components/schemas/GetSoftwareUpdateResponse"
17112
+ }
17113
+ }
17114
+ }
17115
+ },
17116
+ "400": {
17117
+ "$ref": "#/components/responses/BadRequest"
17118
+ },
17119
+ "401": {
17120
+ "$ref": "#/components/responses/Unauthorized"
17121
+ },
17122
+ "403": {
17123
+ "$ref": "#/components/responses/Forbidden"
17124
+ }
17125
+ },
17126
+ "security": [
17127
+ {
17128
+ "builderSession": []
17129
+ }
17130
+ ]
17131
+ }
17132
+ },
17091
17133
  "/specialities": {
17092
17134
  "get": {
17093
17135
  "operationId": "get_specialities",
@@ -21129,13 +21171,11 @@
21129
21171
  "ok": {
21130
21172
  "type": "boolean"
21131
21173
  },
21132
- "update": {},
21133
- "deploy_url": {}
21174
+ "update": {}
21134
21175
  },
21135
21176
  "required": [
21136
21177
  "ok",
21137
- "update",
21138
- "deploy_url"
21178
+ "update"
21139
21179
  ]
21140
21180
  },
21141
21181
  "GetCoreUpgradesResponse": {
@@ -22383,6 +22423,23 @@
22383
22423
  "session_types"
22384
22424
  ]
22385
22425
  },
22426
+ "GetSoftwareUpdateResponse": {
22427
+ "type": "object",
22428
+ "properties": {
22429
+ "ok": {
22430
+ "type": "boolean"
22431
+ },
22432
+ "update": {},
22433
+ "door": {},
22434
+ "can_update": {}
22435
+ },
22436
+ "required": [
22437
+ "ok",
22438
+ "update",
22439
+ "door",
22440
+ "can_update"
22441
+ ]
22442
+ },
22386
22443
  "GetSpecialitiesIdDocumentsResponse": {
22387
22444
  "type": "object",
22388
22445
  "properties": {
@@ -27938,9 +27995,9 @@
27938
27995
  "description": "A required dependency/feature is not configured or is temporarily down."
27939
27996
  }
27940
27997
  },
27941
- "x-endpoint-count": 440,
27942
- "x-schema-count": 481,
27998
+ "x-endpoint-count": 441,
27999
+ "x-schema-count": 482,
27943
28000
  "x-undocumented-bodies": 9,
27944
- "x-response-schemas": 329,
28001
+ "x-response-schemas": 330,
27945
28002
  "x-generated-by": "scripts/gds/gen-api-docs.js"
27946
28003
  }
@@ -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. 440 endpoints across 75 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 441 endpoints across 75 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/0016-trust-boundary-server-enforced-permissions.md)): `public` < `any-builder` < `metic+archon` < `archon`.
@@ -679,6 +679,12 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
679
679
  | GET | `/api/bongos/sky` | `any-builder` | — | GET /sky, the whole project sky (task 1004230, ADR 0331). |
680
680
  | GET | `/api/bongos/sky/mine` | `any-builder` | — | GET /sky/mine, every thought the SIGNED-IN builder filed with its state, size and descent, capped at 1000 (task 1004230). |
681
681
 
682
+ ## `software-update` (1)
683
+
684
+ | Method | Path | Rank | Body | Description |
685
+ |---|---|---|---|---|
686
+ | GET | `/api/bongos/software-update` | `any-builder` | — | GET /software-update — Settings → Software update (task 1004296): this project's core, the newest release its channel allows, what the ve… |
687
+
682
688
  ## `specialities` (12)
683
689
 
684
690
  | Method | Path | Rank | Body | Description |
@@ -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
- **2052 strings** across 3 surfaces · 1754 distinct pieces of copy · 2052 certain, 0 heuristic · 211 shown in more than one place.
7
+ **2072 strings** across 3 surfaces · 1774 distinct pieces of copy · 2072 certain, 0 heuristic · 211 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` | 102 | 1551 |
13
+ | `builders-hall` | `modules/hall-ui/public` | 103 | 1571 |
14
14
  | `status-dashboard` | `modules/status-ui/public` | 4 | 100 |
15
15
  | `landing` | `modules/public-landing/public` | 5 | 401 |
16
16
 
@@ -78,7 +78,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
78
78
  | `7926e30955d2` | 3x | ← Back to goal | modules/hall-ui/public/goals.html:199, modules/hall-ui/public/goals.html:210, modules/hall-ui/public/goals.html:222 |
79
79
  | … | | _171 more in the JSON registry_ | |
80
80
 
81
- ## `builders-hall` — 1551 strings
81
+ ## `builders-hall` — 1571 strings
82
82
 
83
83
  | id | conf | text | where |
84
84
  |---|---|---|---|
@@ -247,6 +247,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
247
247
  | `e6982a9ff948` | certain | Charter library | `modules/hall-ui/public/government.js:799` |
248
248
  | `f66f5cdaa732` | certain | Checked against {…} — nothing blocks this move.{…} | `modules/hall-ui/public/deploy.js:294` |
249
249
  | `f8725cf3ba62` | certain | Checking dependency order… | `modules/hall-ui/public/work.js:865` |
250
+ | `5f8b267e47e5` | certain | Checking for a newer version… | `modules/hall-ui/public/settings-software-update.js:170` |
250
251
  | `7a41b18c0de8` | certain | Checking for conflicts… | `modules/hall-ui/public/work.js:844` |
251
252
  | `ac7cf27bd7de` | certain | Checking what this would do, and what it would bring in. The answer comes from the machine itself, so it can t | `modules/hall-ui/public/deploy.js:283` |
252
253
  | `aa3ba7d28a76` | certain | Checking your key… | `modules/hall-ui/public/settings.js:1053` |
@@ -308,6 +309,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
308
309
  | `e1fc7cedf4e7` | certain | Could not change rank: {…} | `modules/hall-ui/public/watch.js:860` |
309
310
  | `b9e53fbd90e6` | certain | Could not change standing: {…} | `modules/hall-ui/public/watch.js:886` |
310
311
  | `1ef1efc15b6c` | certain | Could not change that just now. | `modules/hall-ui/public/goals-render.js:1378` |
312
+ | `6214998a5ebe` | certain | Could not check for a newer version: {…}. | `modules/hall-ui/public/settings-software-update.js:135` |
313
+ | `9ab613a308d6` | certain | Could not check for updates: {…}. | `modules/hall-ui/public/settings-software-update.js:180` |
311
314
  | `c3f99e7c6e6b` | certain | Could not copy automatically — select and copy manually. ({…}) | `modules/hall-ui/public/settings.js:932` |
312
315
  | `e3fd1febf63d` | certain | Could not copy to the clipboard. Try again. | `modules/hall-ui/public/goals-page.js:380` |
313
316
  | `e3fd1febf63d` | certain | Could not copy to the clipboard. Try again. | `modules/hall-ui/public/work.js:626` |
@@ -329,10 +332,10 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
329
332
  | `edd5bafbe075` | certain | Could not load the queue just now. | `modules/hall-ui/public/ideas.js:869` |
330
333
  | `02bb0570996a` | certain | Could not load the ranks. | `modules/hall-ui/public/ranks.js:197` |
331
334
  | `2878778cf9f3` | certain | Could not load this page. | `modules/hall-ui/public/watch.js:1322` |
332
- | `4b0c8d94541c` | certain | Could not load your account. Reload the page to try again. | `modules/hall-ui/public/settings.js:1310` |
335
+ | `4b0c8d94541c` | certain | Could not load your account. Reload the page to try again. | `modules/hall-ui/public/settings.js:1315` |
333
336
  | `2a9fb4046bc4` | certain | Could not load your rank. Return to the hall and try again. | `modules/hall-ui/public/ranks.js:196` |
334
337
  | `9d533e811dec` | certain | Could not load your sessions: {…} | `modules/hall-ui/public/settings-sessions.js:114` |
335
- | `64f9d51f0fa2` | certain | Could not load your settings. | `modules/hall-ui/public/settings.js:1313` |
338
+ | `64f9d51f0fa2` | certain | Could not load your settings. | `modules/hall-ui/public/settings.js:1318` |
336
339
  | `de244c45d916` | certain | Could not load {…} | `modules/hall-ui/public/task.js:975` |
337
340
  | `2366356926b4` | certain | Could not mark the primer just now. Try again. | `modules/hall-ui/public/primer.js:259` |
338
341
  | `753987b5da13` | certain | Could not reach the submit endpoint. | `modules/hall-ui/public/modules.js:297` |
@@ -587,15 +590,17 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
587
590
  | `a21788f84e29` | certain | Its author gave no scope recommendation. | `modules/hall-ui/public/board-room.js:295` |
588
591
  | `b0bcb3f844ec` | certain | Its author marked this as needing development — anyone can turn it into a Full Idea, and they keep the credit | `modules/hall-ui/public/idea.js:445` |
589
592
  | `680491549e47` | certain | Its author recommends this becomes | `modules/hall-ui/public/board-room.js:294` |
593
+ | `5e62ee5addf1` | certain | Its details are below. | `modules/hall-ui/public/shell.js:682` |
594
+ | `d42a078838bf` | certain | Its notes could not be read. | `modules/hall-ui/public/settings-software-update.js:101` |
590
595
  | `b7719e855009` | certain | Join goal | `modules/hall-ui/public/goals-render.js:974` |
591
596
  | `9f9424a5100b` | certain | Join our Discord | `modules/hall-ui/public/hall-render.js:823` |
592
597
  | `7ee76a958445` | certain | Join requests | `modules/hall-ui/public/goals-render.js:1432` |
593
598
  | `b7ab5922126b` | certain | Join-requests to approve | `modules/hall-ui/public/goal-inbox.js:154` |
594
- | `d305f0df6f25` | certain | Jump to | `modules/hall-ui/public/palette.js:226` |
599
+ | `d305f0df6f25` | certain | Jump to | `modules/hall-ui/public/palette.js:227` |
595
600
  | `01176c156112` | certain | Jump to a goal or a thought | `modules/hall-ui/public/goal-map.html:81` |
596
601
  | `01176c156112` | certain | Jump to a goal or a thought | `modules/hall-ui/public/thinking.html:80` |
597
- | `2bfc5a50ce88` | certain | Jump to a page or record | `modules/hall-ui/public/shell.js:500` |
598
- | `eba610d25523` | certain | Jump to… | `modules/hall-ui/public/shell.js:502` |
602
+ | `2bfc5a50ce88` | certain | Jump to a page or record | `modules/hall-ui/public/shell.js:501` |
603
+ | `eba610d25523` | certain | Jump to… | `modules/hall-ui/public/shell.js:503` |
599
604
  | `bc779353aa0c` | certain | Karma — peer recognition and approvals, a separate counter from {…}. | `modules/hall-ui/public/profile.js:94` |
600
605
  | `de0e1590667f` | certain | Keep all {…} {…} — they are the values the code drops in, and the change cannot land without them. | `modules/hall-ui/public/copy-desk.js:442` |
601
606
  | `fbe40b5818a3` | certain | Key removed. | `modules/hall-ui/public/settings.js:1128` |
@@ -608,7 +613,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
608
613
  | `9be8b839eff8` | certain | Last 7 days | `modules/hall-ui/public/hall-widgets.js:129` |
609
614
  | `59f0bc78a28f` | certain | Last 90 days | `modules/hall-ui/public/hall-widgets.js:130` |
610
615
  | `13bae4dfb28e` | certain | Last claimed by | `modules/hall-ui/public/task.js:656` |
611
- | `1526a7ae8c85` | certain | Latest version: v{…}. | `modules/hall-ui/public/settings.js:1396` |
616
+ | `1526a7ae8c85` | certain | Latest version: v{…}. | `modules/hall-ui/public/settings.js:1401` |
612
617
  | `9e8828d602bc` | certain | Lay your thoughts over the project map. | `modules/hall-ui/public/goal-map.html:72` |
613
618
  | `9e8828d602bc` | certain | Lay your thoughts over the project map. | `modules/hall-ui/public/thinking.html:71` |
614
619
  | `7c9b7a89353b` | certain | Leave goal | `modules/hall-ui/public/goals-render.js:961` |
@@ -690,7 +695,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
690
695
  | `c255749ec989` | certain | No achievements earned yet. | `modules/hall-ui/public/builders.js:472` |
691
696
  | `c255749ec989` | certain | No achievements earned yet. | `modules/hall-ui/public/profile.js:144` |
692
697
  | `479c1a45f39d` | certain | No backlog tasks match these filters. Try widening them. | `modules/hall-ui/public/work.js:1101` |
693
- | `83f62fc94271` | certain | No builder account found for this sign-in. | `modules/hall-ui/public/settings.js:1318` |
698
+ | `83f62fc94271` | certain | No builder account found for this sign-in. | `modules/hall-ui/public/settings.js:1323` |
699
+ | `449db2ead464` | certain | No changes are listed for this version. | `modules/hall-ui/public/settings-software-update.js:103` |
694
700
  | `6d6fd2314248` | certain | No cross-project activity reported yet. | `modules/hall-ui/public/profile.js:323` |
695
701
  | `b1ada579483c` | certain | No custom ranks yet | `modules/hall-ui/public/government.js:358` |
696
702
  | `6e2d2e11f84a` | certain | No description. | `modules/hall-ui/public/idea.js:122` |
@@ -702,7 +708,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
702
708
  | `abc64639b134` | certain | No goals seeded yet. | `modules/hall-ui/public/roadmap.js:205` |
703
709
  | `139ec3636c22` | certain | No introductions right now. One appears here when a pairing round runs. | `modules/hall-ui/public/collab.html:99` |
704
710
  | `3b9823dd4579` | certain | No maintenance declared — nobody is on the hook for this module as the core advances. | `modules/hall-ui/public/modules.js:92` |
705
- | `64a4281934d1` | certain | No match. Try a page name, or an id like | `modules/hall-ui/public/palette.js:182` |
711
+ | `64a4281934d1` | certain | No match. Try a page name, or an id like | `modules/hall-ui/public/palette.js:183` |
712
+ | `f52552a6afcd` | certain | No notes were packed for this version. | `modules/hall-ui/public/settings-software-update.js:102` |
706
713
  | `4f89817b92e5` | certain | No onboarding steps recorded yet. | `modules/hall-ui/public/hall-render.js:941` |
707
714
  | `421ae031594e` | certain | No open goals in this version | `modules/hall-ui/public/task.js:580` |
708
715
  | `2a6d7552e21f` | certain | No other sessions. | `modules/hall-ui/public/settings-sessions.js:64` |
@@ -766,6 +773,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
766
773
  | `f9f2a3af318a` | certain | Only mine | `modules/hall-ui/public/work.html:70` |
767
774
  | `e11eae1d0a92` | certain | Only the goals your thoughts touched — everything else fades. | `modules/hall-ui/public/goal-map.html:70` |
768
775
  | `e11eae1d0a92` | certain | Only the goals your thoughts touched — everything else fades. | `modules/hall-ui/public/thinking.html:69` |
776
+ | `f74ec527907f` | certain | Only the people allowed to upgrade this project see an Update button here. | `modules/hall-ui/public/settings-software-update.js:73` |
769
777
  | `f28917ca859e` | certain | Only the thoughts of the last thirty days. | `modules/hall-ui/public/goal-map.html:68` |
770
778
  | `f28917ca859e` | certain | Only the thoughts of the last thirty days. | `modules/hall-ui/public/thinking.html:67` |
771
779
  | `3468d58eb1fd` | certain | Only this goal's owner or a manager (or an Archon) may add members. | `modules/hall-ui/public/goals-render.js:1330` |
@@ -776,7 +784,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
776
784
  | `261d123970e8` | certain | Open goal #{…} | `modules/hall-ui/public/roadmap.js:112` |
777
785
  | `5f3e0b179839` | certain | Open in Sessions | `modules/hall-ui/public/task.js:483` |
778
786
  | `9f55e4674ebb` | certain | Open in the copy desk | `modules/hall-ui/public/studio.js:219` |
779
- | `3366b115217b` | certain | Open navigation | `modules/hall-ui/public/shell.js:491` |
787
+ | `3366b115217b` | certain | Open navigation | `modules/hall-ui/public/shell.js:492` |
780
788
  | `855277dff074` | certain | Open task #{…} | `modules/hall-ui/public/goals-render.js:415` |
781
789
  | `855277dff074` | certain | Open task #{…} | `modules/hall-ui/public/work.js:1124` |
782
790
  | `99c630009152` | certain | Open tasks whose declared files overlap — sequence these before two builders collide. | `modules/hall-ui/public/goals.html:125` |
@@ -789,6 +797,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
789
797
  | `f6f68ba322be` | certain | Open {…} | `modules/hall-ui/public/goal-inbox.js:69` |
790
798
  | `f6f68ba322be` | certain | Open {…} | `modules/hall-ui/public/goals.js:67` |
791
799
  | `d9c802f5d85e` | certain | Opening the studio… | `modules/hall-ui/public/studio.html:45` |
800
+ | `a2bd76ae030d` | certain | Opens this project's upgrade{…}: you see what would move, confirm it, and it installs, checks itself, and roll | `modules/hall-ui/public/settings-software-update.js:85` |
792
801
  | `569980a263ae` | certain | Optional. This is the ledger link — a copy change ships as a task like every other change. | `modules/hall-ui/public/copy-desk.html:130` |
793
802
  | `f2e9e8f21e8e` | certain | Or add someone without asking… | `modules/hall-ui/public/goals-render.js:1255` |
794
803
  | `c78d7388ffd7` | certain | Or just stay in the online terminal | `modules/hall-ui/public/hall-render.js:825` |
@@ -972,6 +981,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
972
981
  | `dc0f9fe50a65` | certain | Show the setup guide again | `modules/hall-ui/public/index.html:64` |
973
982
  | `df16bd23e58e` | certain | Show the thoughts a session filed under your name. Off by default: only what a person filed. | `modules/hall-ui/public/goal-map.html:69` |
974
983
  | `df16bd23e58e` | certain | Show the thoughts a session filed under your name. Off by default: only what a person filed. | `modules/hall-ui/public/thinking.html:68` |
984
+ | `44945da22716` | certain | Show {…} more version{…} | `modules/hall-ui/public/settings-software-update.js:119` |
975
985
  | `2af4c0f2b4b9` | certain | Showing {…} of {…}. | `modules/hall-ui/public/ideas.js:851` |
976
986
  | `838b17fa8d93` | certain | Shown on your public profile — it helps others know what you work on. | `modules/hall-ui/public/profile-nudge.js:69` |
977
987
  | `9bea6404e6e1` | certain | Sign in | `modules/hall-ui/public/profile.js:208` |
@@ -984,14 +994,15 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
984
994
  | `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/hall-render.js:367` |
985
995
  | `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/hall-render.js:391` |
986
996
  | `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/hall-render.js:461` |
987
- | `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/shell.js:461` |
988
- | `1883ad7f07fc` | certain | Sign out | `modules/hall-ui/public/shell.js:479` |
989
- | `1883ad7f07fc` | certain | Sign out | `modules/hall-ui/public/shell.js:738` |
997
+ | `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/shell.js:462` |
998
+ | `1883ad7f07fc` | certain | Sign out | `modules/hall-ui/public/shell.js:480` |
999
+ | `1883ad7f07fc` | certain | Sign out | `modules/hall-ui/public/shell.js:724` |
990
1000
  | `8ad669ab2565` | certain | Sign out everywhere | `modules/hall-ui/public/settings.html:171` |
991
1001
  | `ecc12c1dd4de` | certain | Skill voices | `modules/hall-ui/public/settings.html:350` |
992
- | `87cee78ca134` | certain | Skip to content | `modules/hall-ui/public/shell.js:729` |
1002
+ | `87cee78ca134` | certain | Skip to content | `modules/hall-ui/public/shell.js:715` |
993
1003
  | `688ca7b6e30f` | certain | Slop — reads as machine-written | `modules/hall-ui/public/copy-desk.html:90` |
994
1004
  | `82df09a08476` | certain | So the Archon knows who you are | `modules/hall-ui/public/hall-render.js:294` |
1005
+ | `207af7ce6828` | certain | Software update | `modules/hall-ui/public/settings.html:409` |
995
1006
  | `7da6a848cd26` | certain | Someone helped | `modules/hall-ui/public/collab.js:296` |
996
1007
  | `e7b592185803` | certain | Someone is holding a claim on this task. It has to be released before the task can be retired. | `modules/hall-ui/public/task.js:753` |
997
1008
  | `867df58c9aaa` | certain | Something else | `modules/hall-ui/public/copy-desk.html:95` |
@@ -1016,7 +1027,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1016
1027
  | `5831de503015` | certain | Studio — {{worldName}} | `modules/hall-ui/public/studio.html:10` |
1017
1028
  | `f79e1fb8ebd4` | certain | Suggested as you type; leave it on "no goal" and it waits for triage. | `modules/hall-ui/public/ideas.html:84` |
1018
1029
  | `a1482eff4ead` | certain | Suggested for you | `modules/hall-ui/public/settings-specialities.js:137` |
1019
- | `1e40f33483eb` | certain | Switch theme | `modules/hall-ui/public/shell.js:506` |
1030
+ | `1e40f33483eb` | certain | Switch theme | `modules/hall-ui/public/shell.js:507` |
1020
1031
  | `93fa2e97dd35` | certain | System default for this skill | `modules/hall-ui/public/settings.js:72` |
1021
1032
  | `4894b1d9b0de` | certain | System oversight: people, operations and security. | `modules/hall-ui/public/watch.js:1335` |
1022
1033
  | `e604fc3ace79` | certain | Task # | `modules/hall-ui/public/blockers.js:139` |
@@ -1037,7 +1048,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1037
1048
  | `2fc66e722e33` | certain | Tasks open once you have read the builder primer. | `modules/hall-ui/public/work.html:43` |
1038
1049
  | `44579eef0c8d` | certain | Tasks — {{worldName}} | `modules/hall-ui/public/work.html:6` |
1039
1050
  | `44579eef0c8d` | certain | Tasks — {{worldName}} | `modules/hall-ui/public/work.html:6` |
1040
- | `2f4f047dc1b4` | certain | Text size | `modules/hall-ui/public/shell.js:505` |
1051
+ | `2f4f047dc1b4` | certain | Text size | `modules/hall-ui/public/shell.js:506` |
1041
1052
  | `f420429f942e` | certain | That builder no longer exists. | `modules/hall-ui/public/goals-render.js:1305` |
1042
1053
  | `545c59c1deb7` | certain | That is the session you are using right now. Ending it signs you out of this page. | `modules/hall-ui/public/settings-sessions.js:74` |
1043
1054
  | `282c3fa2d456` | certain | That is the wording it already has. Change something, or file a flag instead if you only want to mark it. | `modules/hall-ui/public/copy-desk.js:438` |
@@ -1083,6 +1094,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1083
1094
  | `3bc5ec5f35ec` | certain | The ranks, lowest to highest | `modules/hall-ui/public/ranks.html:46` |
1084
1095
  | `c0034db3281c` | certain | The reason is recorded in the audit log. This is recoverable: a retired task can be restored to the backlog wi | `modules/hall-ui/public/task.js:779` |
1085
1096
  | `1ce78006fe00` | certain | The reference did not load | `modules/hall-ui/public/drachmae.html:85` |
1097
+ | `c43812b59e97` | certain | The release notes could not be read: {…}. The versions are still listed. | `modules/hall-ui/public/settings-software-update.js:115` |
1086
1098
  | `3b5260b8780a` | certain | The reserved 16-rank ladder, which ranks are live today (archon, metic, thetes, xenos), and what each may do. | `modules/hall-ui/public/diagrams.html:60` |
1087
1099
  | `cfa55899240b` | certain | The roadmap could not be loaded right now. Reload to try again. | `modules/hall-ui/public/roadmap.js:440` |
1088
1100
  | `2dea5ed89aa1` | certain | The roadmap failed to load. Reload to try again. | `modules/hall-ui/public/roadmap.js:441` |
@@ -1151,6 +1163,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1151
1163
  | `9a685b01e2c6` | certain | This page opens at a higher rank. | `modules/hall-ui/public/government.html:37` |
1152
1164
  | `9a685b01e2c6` | certain | This page opens at a higher rank. | `modules/hall-ui/public/project-settings.html:36` |
1153
1165
  | `9a685b01e2c6` | certain | This page opens at a higher rank. | `modules/hall-ui/public/watch.html:40` |
1166
+ | `fcd43f045614` | certain | This project is upgraded on the server that runs it: | `modules/hall-ui/public/settings-software-update.js:76` |
1154
1167
  | `3c8aaec39c40` | certain | This project's code expects {…} database change{…} that its database has not applied yet. Anything that relies | `modules/hall-ui/public/deploy.js:413` |
1155
1168
  | `6e9dfe1fb903` | certain | This restarts {…} onto core | `modules/hall-ui/public/deploy.js:395` |
1156
1169
  | `69e8beced2ff` | certain | This sends the idea back to its author. Say why, and which section. | `modules/hall-ui/public/board-room.js:363` |
@@ -1168,8 +1181,11 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1168
1181
  | `6516cc82021a` | certain | UI design | `modules/hall-ui/public/settings.html:276` |
1169
1182
  | `2c1c20785a6e` | certain | Unclear — a person would not know what to do | `modules/hall-ui/public/copy-desk.html:91` |
1170
1183
  | `aa445f06cc5e` | certain | Unlink failed: {…} | `modules/hall-ui/public/settings.js:856` |
1184
+ | `4a716d7d8d46` | certain | Up to date | `modules/hall-ui/public/settings-software-update.js:142` |
1185
+ | `13ced9b2fa12` | certain | Update ready | `modules/hall-ui/public/settings-software-update.js:145` |
1186
+ | `55fde21d907b` | certain | Update to {…}{…} | `modules/hall-ui/public/settings-software-update.js:85` |
1171
1187
  | `67fbc770b3b3` | certain | Upvote (+1) | `modules/hall-ui/public/builders.js:777` |
1172
- | `16d7f809be8a` | certain | Use the control below to take it. | `modules/hall-ui/public/shell.js:696` |
1188
+ | `16d7f809be8a` | certain | Use the control below to take it. | `modules/hall-ui/public/shell.js:679` |
1173
1189
  | `e7e2a99a2bea` | certain | Use this | `modules/hall-ui/public/settings-specialities.js:148` |
1174
1190
  | `e1ecd543a2ca` | certain | Using this speciality. | `modules/hall-ui/public/settings-specialities.js:199` |
1175
1191
  | `6200bac6bdca` | certain | View all sessions | `modules/hall-ui/public/watch.html:99` |
@@ -1223,6 +1239,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1223
1239
  | `158499e38ceb` | certain | Where you stand | `modules/hall-ui/public/ranks.html:36` |
1224
1240
  | `b216e7af8140` | certain | Where your work runs and how it reaches production, in one diagram. Your | `modules/hall-ui/public/diagrams.html:74` |
1225
1241
  | `d3a8b2b5b93f` | certain | Where {{currency}} and karma come from and where they go. | `modules/hall-ui/public/diagrams.html:67` |
1242
+ | `68da8cb13058` | certain | Which version of Cloud Bongos this project runs, whether a newer one is ready for it, and what each newer vers | `modules/hall-ui/public/settings.html:410` |
1226
1243
  | `f9ab9eb870a6` | certain | While you wait: install the Claude desktop app at | `modules/hall-ui/public/hall-render.js:437` |
1227
1244
  | `fe85463560e0` | certain | Who builds on this project, ranked by work shipped. This project's own ledger — unlike the cross-project direc | `modules/hall-ui/public/roster.html:28` |
1228
1245
  | `7dbdb882e967` | certain | Who can find you. Your profile page can be public or private, and recruiters looking for builders are allowed | `modules/hall-ui/public/settings.html:111` |
@@ -1275,7 +1292,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1275
1292
  | `5e0ec4cd1cfe` | certain | Your own row carries no controls. Nobody can change their own rank or standing — that guard is what stops the | `modules/hall-ui/public/watch.js:835` |
1276
1293
  | `8fc605026acf` | certain | Your pending join {…}: {…} — awaiting approval. | `modules/hall-ui/public/goal-inbox.js:88` |
1277
1294
  | `e91418db3962` | certain | Your preferences, {…}. | `modules/hall-ui/public/settings.js:786` |
1278
- | `e91418db3962` | certain | Your preferences, {…}. | `modules/hall-ui/public/settings.js:1327` |
1295
+ | `e91418db3962` | certain | Your preferences, {…}. | `modules/hall-ui/public/settings.js:1332` |
1279
1296
  | `b6dceaace783` | certain | Your profile page setting applies now — private already answers "not found" everywhere your profile is read. R | `modules/hall-ui/public/settings.html:119` |
1280
1297
  | `f39746e3d66b` | certain | Your rendering preference could not be loaded. Reload the page to try again. | `modules/hall-ui/public/settings-render.js:133` |
1281
1298
  | `b2dfd7120052` | certain | Your request is sent ✓ | `modules/hall-ui/public/hall-render.js:437` |
@@ -1315,6 +1332,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1315
1332
  | `6d91bea9b24e` | certain | as of {…} | `modules/hall-ui/public/sky-interaction.js:117` |
1316
1333
  | `a756e47632cd` | certain | at {…} — {…}. The timer above is the fallback that is actually in force. | `modules/hall-ui/public/project-settings.js:103` |
1317
1334
  | `63bd14f73960` | certain | author trusted | `modules/hall-ui/public/gate.js:156` |
1335
+ | `9193bf136fed` | certain | bongos upgrade | `modules/hall-ui/public/settings-software-update.js:76` |
1318
1336
  | `d7412f42cbc2` | certain | browser only | `modules/hall-ui/public/hall-render.js:825` |
1319
1337
  | `552e00198649` | certain | builders, on the People tab | `modules/hall-ui/public/watch.html:48` |
1320
1338
  | `c36033fdd528` | certain | built &amp; enforced today | `modules/hall-ui/public/diagrams.html:42` |
@@ -1427,7 +1445,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1427
1445
  | `af3a8e0fe6a8` | certain | open your goals | `modules/hall-ui/public/goal-inbox.js:127` |
1428
1446
  | `af3a8e0fe6a8` | certain | open your goals | `modules/hall-ui/public/goal-inbox.js:158` |
1429
1447
  | `4f279d68175f` | certain | open, on the Security tab | `modules/hall-ui/public/watch.html:47` |
1430
- | `7b85e6494596` | certain | opens a new tab | `modules/hall-ui/public/palette.js:190` |
1448
+ | `7b85e6494596` | certain | opens a new tab | `modules/hall-ui/public/palette.js:191` |
1431
1449
  | `c38db02adb61` | certain | or above | `modules/hall-ui/public/government.js:564` |
1432
1450
  | `66f7e9c2dde0` | certain | or right-click — plain Ctrl+V will not paste here. Claude takes over the terminal with its own interface once | `modules/hall-ui/public/hall-render.js:825` |
1433
1451
  | `884948925fcb` | certain | paste command | `modules/hall-ui/public/settings.js:914` |
@@ -1489,6 +1507,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1489
1507
  | `911e948a33ae` | certain | the task | `modules/hall-ui/public/sky-panel.js:102` |
1490
1508
  | `1f159b518fc9` | certain | the whole project | `modules/hall-ui/public/goal-map.html:64` |
1491
1509
  | `1f159b518fc9` | certain | the whole project | `modules/hall-ui/public/thinking.html:63` |
1510
+ | `2e5539862eb0` | certain | there takes this version, with the same health check and rollback. | `modules/hall-ui/public/settings-software-update.js:76` |
1492
1511
  | `d2f476c0ba31` | certain | thing{…} from your sessions · shared with: {…} | `modules/hall-ui/public/settings-specialities.js:80` |
1493
1512
  | `632527db5bca` | certain | this session | `modules/hall-ui/public/settings-sessions.js:44` |
1494
1513
  | `4b6321a50a2d` | certain | thoughts · | `modules/hall-ui/public/sky-interaction.js:123` |
@@ -1611,6 +1630,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1611
1630
  | `9a1cef2da08d` | certain | …and {…} more goals — | `modules/hall-ui/public/goal-inbox.js:127` |
1612
1631
  | `5b9fa7cb4fb0` | certain | …and {…} more waiting — | `modules/hall-ui/public/goal-inbox.js:158` |
1613
1632
  | `b797996b2e4f` | certain | …and {…} more, not listed. | `modules/hall-ui/public/deploy.js:382` |
1633
+ | `9132930284c4` | certain | …and {…} older version{…}, also in this update. | `modules/hall-ui/public/settings-software-update.js:120` |
1614
1634
  | `b2a04abfead0` | certain | …{…} more awaiting a nod. | `modules/hall-ui/public/goal-inbox.js:316` |
1615
1635
  | `f16717b3e122` | certain | …{…} more awaiting an answer. | `modules/hall-ui/public/goal-inbox.js:396` |
1616
1636
  | `616fb9adf3cf` | certain | …{…} more going quiet. | `modules/hall-ui/public/goal-inbox.js:485` |