@bongos/core 1.25.13 → 1.25.15

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 (59) hide show
  1. package/.bongos-core.json +118 -53
  2. package/bin/bongos.js +1 -0
  3. package/clients/bongos-client/README.md +1 -1
  4. package/clients/bongos-client/bongos-client.global.js +20 -0
  5. package/clients/bongos-client/index.cjs +20 -0
  6. package/clients/bongos-client/index.d.ts +26 -2
  7. package/clients/bongos-client/index.mjs +20 -0
  8. package/docs/adr/0328-a-hosted-projects-authority-is-its-membership-row-not-its-owner-column.md +1 -1
  9. package/docs/adr/0407-a-project-grant-is-made-by-the-owner-not-witnessed-at-sign-in.md +124 -0
  10. package/docs/adr/0408-a-genesis-stage-is-three-doors-onto-one-record.md +60 -0
  11. package/docs/adr/README.md +2 -0
  12. package/docs/api/openapi.json +550 -2
  13. package/docs/api-reference.md +14 -4
  14. package/docs/copy-inventory.md +28 -34
  15. package/docs/copy-registry.json +41 -125
  16. package/docs/file-map.md +2 -1
  17. package/docs/module-api-changelog.md +4 -0
  18. package/docs/page-inventory.json +1 -0
  19. package/docs/page-readings.json +3 -3
  20. package/modules/front-door-guide/db.js +13 -5
  21. package/modules/front-door-guide/guide.js +8 -2
  22. package/modules/front-door-guide/migrations/front_door_guide_003_starting_point.sql +12 -0
  23. package/modules/front-door-guide/module.json +2 -2
  24. package/modules/front-door-guide/plan.js +15 -6
  25. package/modules/front-door-guide/routes/front-door-guide-plan.js +3 -2
  26. package/modules/front-door-guide/routes/front-door-guide.js +17 -4
  27. package/modules/front-door-guide/starting-point.js +55 -0
  28. package/modules/hall-ui/public/genesis-home.js +29 -2
  29. package/modules/hall-ui/public/goals-page.js +3 -29
  30. package/modules/hall-ui/public/index.html +2 -1
  31. package/modules/hall-ui/public/task-lib.js +45 -0
  32. package/modules/hall-ui/public/work.js +3 -47
  33. package/modules/lifecycle/kickoff-checklist.js +1 -1
  34. package/modules/lifecycle/kickoff-seed.js +9 -5
  35. package/modules/onboarding/genesis-home.js +1 -1
  36. package/modules/onboarding/genesis-work.js +364 -0
  37. package/modules/onboarding/migrations/onboarding_002_genesis_work.sql +76 -0
  38. package/modules/onboarding/routes/genesis-work.js +85 -0
  39. package/modules/onboarding/routes/onboarding.js +3 -0
  40. package/package-lock.json +306 -3
  41. package/package.json +4 -2
  42. package/release-notes.json +24 -0
  43. package/scripts/bongos/genesis.js +178 -0
  44. package/scripts/bongos/package-core.js +4 -2
  45. package/scripts/bongos/run-unit-tests.js +3 -0
  46. package/scripts/gds/genesis.js +7 -0
  47. package/src/bongos/module-scope-map.js +1 -0
  48. package/src/module-api.js +1 -1
  49. package/tests/cutover_codemod.mjs +1 -1
  50. package/tests/front_door_guide_db.mjs +6 -1
  51. package/tests/front_door_guide_existing.mjs +238 -0
  52. package/tests/genesis_home.mjs +80 -2
  53. package/tests/genesis_work.mjs +255 -0
  54. package/tests/genesis_work_db.mjs +73 -0
  55. package/tests/genesis_work_routes.mjs +130 -0
  56. package/tests/package_core.mjs +11 -7
  57. package/tests/pruned_lockfile_integrity.mjs +4 -2
  58. package/tests/status_page_no_dead_uptime.mjs +1 -1
  59. package/tests/task_lib.mjs +46 -0
@@ -7671,6 +7671,37 @@
7671
7671
  ]
7672
7672
  }
7673
7673
  },
7674
+ "/founding/context": {
7675
+ "get": {
7676
+ "operationId": "get_founding_context",
7677
+ "tags": [
7678
+ "founding"
7679
+ ],
7680
+ "summary": "GET /founding/context",
7681
+ "description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
7682
+ "x-rank": "any-builder",
7683
+ "x-source": "modules/onboarding/routes/genesis-work.js",
7684
+ "responses": {
7685
+ "200": {
7686
+ "description": "Success."
7687
+ },
7688
+ "400": {
7689
+ "$ref": "#/components/responses/BadRequest"
7690
+ },
7691
+ "401": {
7692
+ "$ref": "#/components/responses/Unauthorized"
7693
+ },
7694
+ "403": {
7695
+ "$ref": "#/components/responses/Forbidden"
7696
+ }
7697
+ },
7698
+ "security": [
7699
+ {
7700
+ "builderSession": []
7701
+ }
7702
+ ]
7703
+ }
7704
+ },
7674
7705
  "/founding/enabled": {
7675
7706
  "put": {
7676
7707
  "operationId": "put_founding_enabled",
@@ -7893,6 +7924,466 @@
7893
7924
  ]
7894
7925
  }
7895
7926
  },
7927
+ "/founding/work": {
7928
+ "get": {
7929
+ "operationId": "get_founding_work",
7930
+ "tags": [
7931
+ "founding"
7932
+ ],
7933
+ "summary": "GET /founding/work",
7934
+ "description": "The read path for every door and for AI sessions planning a goal or task.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
7935
+ "x-rank": "any-builder",
7936
+ "x-source": "modules/onboarding/routes/genesis-work.js",
7937
+ "responses": {
7938
+ "200": {
7939
+ "description": "Success."
7940
+ },
7941
+ "400": {
7942
+ "$ref": "#/components/responses/BadRequest"
7943
+ },
7944
+ "401": {
7945
+ "$ref": "#/components/responses/Unauthorized"
7946
+ },
7947
+ "403": {
7948
+ "$ref": "#/components/responses/Forbidden"
7949
+ }
7950
+ },
7951
+ "security": [
7952
+ {
7953
+ "builderSession": []
7954
+ }
7955
+ ]
7956
+ }
7957
+ },
7958
+ "/founding/work/{stage}": {
7959
+ "get": {
7960
+ "operationId": "get_founding_work_stage",
7961
+ "tags": [
7962
+ "founding"
7963
+ ],
7964
+ "summary": "GET /founding/work/:stage",
7965
+ "description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
7966
+ "x-rank": "any-builder",
7967
+ "x-source": "modules/onboarding/routes/genesis-work.js",
7968
+ "parameters": [
7969
+ {
7970
+ "name": "stage",
7971
+ "in": "path",
7972
+ "required": true,
7973
+ "schema": {
7974
+ "type": "string"
7975
+ },
7976
+ "description": "Path parameter `stage`."
7977
+ }
7978
+ ],
7979
+ "responses": {
7980
+ "200": {
7981
+ "description": "Success."
7982
+ },
7983
+ "400": {
7984
+ "$ref": "#/components/responses/BadRequest"
7985
+ },
7986
+ "401": {
7987
+ "$ref": "#/components/responses/Unauthorized"
7988
+ },
7989
+ "403": {
7990
+ "$ref": "#/components/responses/Forbidden"
7991
+ },
7992
+ "404": {
7993
+ "$ref": "#/components/responses/NotFound"
7994
+ }
7995
+ },
7996
+ "security": [
7997
+ {
7998
+ "builderSession": []
7999
+ }
8000
+ ]
8001
+ }
8002
+ },
8003
+ "/founding/work/{stage}/answers/{question}": {
8004
+ "put": {
8005
+ "operationId": "put_founding_work_stage_answers_question",
8006
+ "tags": [
8007
+ "founding"
8008
+ ],
8009
+ "summary": "PUT /founding/work/:stage/answers/:question",
8010
+ "description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
8011
+ "x-rank": "any-builder",
8012
+ "x-source": "modules/onboarding/routes/genesis-work.js",
8013
+ "parameters": [
8014
+ {
8015
+ "name": "stage",
8016
+ "in": "path",
8017
+ "required": true,
8018
+ "schema": {
8019
+ "type": "string"
8020
+ },
8021
+ "description": "Path parameter `stage`."
8022
+ },
8023
+ {
8024
+ "name": "question",
8025
+ "in": "path",
8026
+ "required": true,
8027
+ "schema": {
8028
+ "type": "string"
8029
+ },
8030
+ "description": "Path parameter `question`."
8031
+ }
8032
+ ],
8033
+ "requestBody": {
8034
+ "required": false,
8035
+ "content": {
8036
+ "application/json": {
8037
+ "schema": {
8038
+ "$ref": "#/components/schemas/PutFoundingWorkStageAnswersQuestionRequest"
8039
+ }
8040
+ }
8041
+ },
8042
+ "x-validated": true
8043
+ },
8044
+ "responses": {
8045
+ "200": {
8046
+ "description": "Success."
8047
+ },
8048
+ "400": {
8049
+ "$ref": "#/components/responses/ValidationFailed"
8050
+ },
8051
+ "401": {
8052
+ "$ref": "#/components/responses/Unauthorized"
8053
+ },
8054
+ "403": {
8055
+ "$ref": "#/components/responses/Forbidden"
8056
+ },
8057
+ "404": {
8058
+ "$ref": "#/components/responses/NotFound"
8059
+ }
8060
+ },
8061
+ "security": [
8062
+ {
8063
+ "builderSession": []
8064
+ }
8065
+ ]
8066
+ },
8067
+ "delete": {
8068
+ "operationId": "delete_founding_work_stage_answers_question",
8069
+ "tags": [
8070
+ "founding"
8071
+ ],
8072
+ "summary": "DELETE /founding/work/:stage/answers/:question",
8073
+ "description": "Un-answer: back to empty, which is not the same as skipped.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
8074
+ "x-rank": "any-builder",
8075
+ "x-source": "modules/onboarding/routes/genesis-work.js",
8076
+ "parameters": [
8077
+ {
8078
+ "name": "stage",
8079
+ "in": "path",
8080
+ "required": true,
8081
+ "schema": {
8082
+ "type": "string"
8083
+ },
8084
+ "description": "Path parameter `stage`."
8085
+ },
8086
+ {
8087
+ "name": "question",
8088
+ "in": "path",
8089
+ "required": true,
8090
+ "schema": {
8091
+ "type": "string"
8092
+ },
8093
+ "description": "Path parameter `question`."
8094
+ }
8095
+ ],
8096
+ "responses": {
8097
+ "200": {
8098
+ "description": "Success."
8099
+ },
8100
+ "400": {
8101
+ "$ref": "#/components/responses/BadRequest"
8102
+ },
8103
+ "401": {
8104
+ "$ref": "#/components/responses/Unauthorized"
8105
+ },
8106
+ "403": {
8107
+ "$ref": "#/components/responses/Forbidden"
8108
+ },
8109
+ "404": {
8110
+ "$ref": "#/components/responses/NotFound"
8111
+ }
8112
+ },
8113
+ "security": [
8114
+ {
8115
+ "builderSession": []
8116
+ }
8117
+ ]
8118
+ }
8119
+ },
8120
+ "/founding/work/{stage}/answers/{question}/history": {
8121
+ "get": {
8122
+ "operationId": "get_founding_work_stage_answers_question_history",
8123
+ "tags": [
8124
+ "founding"
8125
+ ],
8126
+ "summary": "GET /founding/work/:stage/answers/:question/history",
8127
+ "description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
8128
+ "x-rank": "any-builder",
8129
+ "x-source": "modules/onboarding/routes/genesis-work.js",
8130
+ "parameters": [
8131
+ {
8132
+ "name": "stage",
8133
+ "in": "path",
8134
+ "required": true,
8135
+ "schema": {
8136
+ "type": "string"
8137
+ },
8138
+ "description": "Path parameter `stage`."
8139
+ },
8140
+ {
8141
+ "name": "question",
8142
+ "in": "path",
8143
+ "required": true,
8144
+ "schema": {
8145
+ "type": "string"
8146
+ },
8147
+ "description": "Path parameter `question`."
8148
+ }
8149
+ ],
8150
+ "responses": {
8151
+ "200": {
8152
+ "description": "Success."
8153
+ },
8154
+ "400": {
8155
+ "$ref": "#/components/responses/BadRequest"
8156
+ },
8157
+ "401": {
8158
+ "$ref": "#/components/responses/Unauthorized"
8159
+ },
8160
+ "403": {
8161
+ "$ref": "#/components/responses/Forbidden"
8162
+ },
8163
+ "404": {
8164
+ "$ref": "#/components/responses/NotFound"
8165
+ }
8166
+ },
8167
+ "security": [
8168
+ {
8169
+ "builderSession": []
8170
+ }
8171
+ ]
8172
+ }
8173
+ },
8174
+ "/founding/work/{stage}/assist": {
8175
+ "get": {
8176
+ "operationId": "get_founding_work_stage_assist",
8177
+ "tags": [
8178
+ "founding"
8179
+ ],
8180
+ "summary": "GET /founding/work/:stage/assist",
8181
+ "description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
8182
+ "x-rank": "any-builder",
8183
+ "x-source": "modules/onboarding/routes/genesis-work.js",
8184
+ "parameters": [
8185
+ {
8186
+ "name": "stage",
8187
+ "in": "path",
8188
+ "required": true,
8189
+ "schema": {
8190
+ "type": "string"
8191
+ },
8192
+ "description": "Path parameter `stage`."
8193
+ }
8194
+ ],
8195
+ "responses": {
8196
+ "200": {
8197
+ "description": "Success."
8198
+ },
8199
+ "400": {
8200
+ "$ref": "#/components/responses/BadRequest"
8201
+ },
8202
+ "401": {
8203
+ "$ref": "#/components/responses/Unauthorized"
8204
+ },
8205
+ "403": {
8206
+ "$ref": "#/components/responses/Forbidden"
8207
+ },
8208
+ "404": {
8209
+ "$ref": "#/components/responses/NotFound"
8210
+ }
8211
+ },
8212
+ "security": [
8213
+ {
8214
+ "builderSession": []
8215
+ }
8216
+ ]
8217
+ }
8218
+ },
8219
+ "/founding/work/{stage}/door": {
8220
+ "put": {
8221
+ "operationId": "put_founding_work_stage_door",
8222
+ "tags": [
8223
+ "founding"
8224
+ ],
8225
+ "summary": "PUT /founding/work/:stage/door",
8226
+ "description": "The founder's writes.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
8227
+ "x-rank": "any-builder",
8228
+ "x-source": "modules/onboarding/routes/genesis-work.js",
8229
+ "parameters": [
8230
+ {
8231
+ "name": "stage",
8232
+ "in": "path",
8233
+ "required": true,
8234
+ "schema": {
8235
+ "type": "string"
8236
+ },
8237
+ "description": "Path parameter `stage`."
8238
+ }
8239
+ ],
8240
+ "requestBody": {
8241
+ "required": true,
8242
+ "content": {
8243
+ "application/json": {
8244
+ "schema": {
8245
+ "$ref": "#/components/schemas/PutFoundingWorkStageDoorRequest"
8246
+ }
8247
+ }
8248
+ },
8249
+ "x-validated": true
8250
+ },
8251
+ "responses": {
8252
+ "200": {
8253
+ "description": "Success."
8254
+ },
8255
+ "400": {
8256
+ "$ref": "#/components/responses/ValidationFailed"
8257
+ },
8258
+ "401": {
8259
+ "$ref": "#/components/responses/Unauthorized"
8260
+ },
8261
+ "403": {
8262
+ "$ref": "#/components/responses/Forbidden"
8263
+ },
8264
+ "404": {
8265
+ "$ref": "#/components/responses/NotFound"
8266
+ }
8267
+ },
8268
+ "security": [
8269
+ {
8270
+ "builderSession": []
8271
+ }
8272
+ ]
8273
+ }
8274
+ },
8275
+ "/founding/work/{stage}/link": {
8276
+ "put": {
8277
+ "operationId": "put_founding_work_stage_link",
8278
+ "tags": [
8279
+ "founding"
8280
+ ],
8281
+ "summary": "PUT /founding/work/:stage/link",
8282
+ "description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
8283
+ "x-rank": "any-builder",
8284
+ "x-source": "modules/onboarding/routes/genesis-work.js",
8285
+ "parameters": [
8286
+ {
8287
+ "name": "stage",
8288
+ "in": "path",
8289
+ "required": true,
8290
+ "schema": {
8291
+ "type": "string"
8292
+ },
8293
+ "description": "Path parameter `stage`."
8294
+ }
8295
+ ],
8296
+ "requestBody": {
8297
+ "required": false,
8298
+ "content": {
8299
+ "application/json": {
8300
+ "schema": {
8301
+ "$ref": "#/components/schemas/PutFoundingWorkStageLinkRequest"
8302
+ }
8303
+ }
8304
+ },
8305
+ "x-validated": true
8306
+ },
8307
+ "responses": {
8308
+ "200": {
8309
+ "description": "Success."
8310
+ },
8311
+ "400": {
8312
+ "$ref": "#/components/responses/ValidationFailed"
8313
+ },
8314
+ "401": {
8315
+ "$ref": "#/components/responses/Unauthorized"
8316
+ },
8317
+ "403": {
8318
+ "$ref": "#/components/responses/Forbidden"
8319
+ },
8320
+ "404": {
8321
+ "$ref": "#/components/responses/NotFound"
8322
+ }
8323
+ },
8324
+ "security": [
8325
+ {
8326
+ "builderSession": []
8327
+ }
8328
+ ]
8329
+ }
8330
+ },
8331
+ "/founding/work/{stage}/page": {
8332
+ "put": {
8333
+ "operationId": "put_founding_work_stage_page",
8334
+ "tags": [
8335
+ "founding"
8336
+ ],
8337
+ "summary": "PUT /founding/work/:stage/page",
8338
+ "description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
8339
+ "x-rank": "any-builder",
8340
+ "x-source": "modules/onboarding/routes/genesis-work.js",
8341
+ "parameters": [
8342
+ {
8343
+ "name": "stage",
8344
+ "in": "path",
8345
+ "required": true,
8346
+ "schema": {
8347
+ "type": "string"
8348
+ },
8349
+ "description": "Path parameter `stage`."
8350
+ }
8351
+ ],
8352
+ "requestBody": {
8353
+ "required": false,
8354
+ "content": {
8355
+ "application/json": {
8356
+ "schema": {
8357
+ "$ref": "#/components/schemas/PutFoundingWorkStagePageRequest"
8358
+ }
8359
+ }
8360
+ },
8361
+ "x-validated": true
8362
+ },
8363
+ "responses": {
8364
+ "200": {
8365
+ "description": "Success."
8366
+ },
8367
+ "400": {
8368
+ "$ref": "#/components/responses/ValidationFailed"
8369
+ },
8370
+ "401": {
8371
+ "$ref": "#/components/responses/Unauthorized"
8372
+ },
8373
+ "403": {
8374
+ "$ref": "#/components/responses/Forbidden"
8375
+ },
8376
+ "404": {
8377
+ "$ref": "#/components/responses/NotFound"
8378
+ }
8379
+ },
8380
+ "security": [
8381
+ {
8382
+ "builderSession": []
8383
+ }
8384
+ ]
8385
+ }
8386
+ },
7896
8387
  "/front-door-guide/conversations": {
7897
8388
  "post": {
7898
8389
  "operationId": "post_front_door_guide_conversations",
@@ -38424,6 +38915,9 @@
38424
38915
  "website": {
38425
38916
  "type": "string",
38426
38917
  "maxLength": 500
38918
+ },
38919
+ "starting_point": {
38920
+ "type": "string"
38427
38921
  }
38428
38922
  },
38429
38923
  "required": [
@@ -38455,6 +38949,9 @@
38455
38949
  "website": {
38456
38950
  "type": "string",
38457
38951
  "maxLength": 500
38952
+ },
38953
+ "starting_point": {
38954
+ "type": "string"
38458
38955
  }
38459
38956
  },
38460
38957
  "additionalProperties": false
@@ -43952,6 +44449,57 @@
43952
44449
  },
43953
44450
  "additionalProperties": false
43954
44451
  },
44452
+ "PutFoundingWorkStageAnswersQuestionRequest": {
44453
+ "type": "object",
44454
+ "properties": {
44455
+ "state": {
44456
+ "type": "string",
44457
+ "maxLength": 16
44458
+ },
44459
+ "text": {
44460
+ "type": "string"
44461
+ },
44462
+ "origin": {
44463
+ "type": "string",
44464
+ "maxLength": 16
44465
+ },
44466
+ "if_empty": {
44467
+ "type": "boolean"
44468
+ }
44469
+ },
44470
+ "additionalProperties": false
44471
+ },
44472
+ "PutFoundingWorkStageDoorRequest": {
44473
+ "type": "object",
44474
+ "properties": {
44475
+ "door": {
44476
+ "type": "string",
44477
+ "maxLength": 16
44478
+ }
44479
+ },
44480
+ "required": [
44481
+ "door"
44482
+ ],
44483
+ "additionalProperties": false
44484
+ },
44485
+ "PutFoundingWorkStageLinkRequest": {
44486
+ "type": "object",
44487
+ "properties": {
44488
+ "url": {
44489
+ "type": "string"
44490
+ }
44491
+ },
44492
+ "additionalProperties": false
44493
+ },
44494
+ "PutFoundingWorkStagePageRequest": {
44495
+ "type": "object",
44496
+ "properties": {
44497
+ "page": {
44498
+ "type": "string"
44499
+ }
44500
+ },
44501
+ "additionalProperties": false
44502
+ },
43955
44503
  "PutGovernmentAsksMatterIdResponse": {
43956
44504
  "type": "object",
43957
44505
  "properties": {
@@ -44346,8 +44894,8 @@
44346
44894
  "description": "A required dependency/feature is not configured or is temporarily down."
44347
44895
  }
44348
44896
  },
44349
- "x-endpoint-count": 709,
44350
- "x-schema-count": 745,
44897
+ "x-endpoint-count": 719,
44898
+ "x-schema-count": 749,
44351
44899
  "x-undocumented-bodies": 12,
44352
44900
  "x-response-schemas": 468,
44353
44901
  "x-generated-by": "scripts/bongos/gen-api-docs.js"
@@ -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. 709 endpoints across 120 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 719 endpoints across 121 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`.
@@ -315,27 +315,37 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
315
315
  | POST | `/api/bongos/feedback/receipt` | `any-builder` | `sha256`, `kind` | signed-in builder — a receipt only says "this builder sent this text"; it grants nothing here, and the hub files every report behind a nod. |
316
316
  | GET | `/api/bongos/feedback/receipt/:id` | `public` | — | the hub redeems a receipt with no session of its own. |
317
317
 
318
- ## `founding` (8)
318
+ ## `founding` (18)
319
319
 
320
320
  | Method | Path | Rank | Body | Description |
321
321
  |---|---|---|---|---|
322
322
  | POST | `/api/bongos/founding/alive` | `any-builder` | — | |
323
323
  | GET | `/api/bongos/founding/builders` | `any-builder` | — | The founding mark (task 1004424): who joined while the project was founding, in join order, with the stage each joined at. |
324
+ | GET | `/api/bongos/founding/context` | `any-builder` | — | |
324
325
  | PUT | `/api/bongos/founding/enabled` | `any-builder` | `enabled` | The Test features panel's genesis switch (task 1005036): a test project only, the owner's call. |
325
326
  | GET | `/api/bongos/founding/genesis` | `any-builder` | — | A project born through the startup flow enters genesis on its first founding read (founding-birth.js, task 1004506) — here and on GET /me… |
326
327
  | POST | `/api/bongos/founding/plan` | `any-builder` | `days`, `passes`, `advisors`, `government`, `expected_builders`, `existing` | The plan's ranges and vocabularies are genesis-home.js parsePlan's (one source); this schema only names the fields so an unknown one is r… |
327
328
  | POST | `/api/bongos/founding/skip` | `any-builder` | — | Skip genesis: the owner opens the full hall from any stage, no sitting, no gate. |
328
329
  | POST | `/api/bongos/founding/stages/:stage/close` | `any-builder` | — | task 1005121: one call. |
329
330
  | POST | `/api/bongos/founding/start` | `any-builder` | — | |
331
+ | GET | `/api/bongos/founding/work` | `any-builder` | — | The read path for every door and for AI sessions planning a goal or task. |
332
+ | GET | `/api/bongos/founding/work/:stage` | `any-builder` | — | |
333
+ | PUT | `/api/bongos/founding/work/:stage/answers/:question` | `any-builder` | `state`, `text`, `origin`, `if_empty` | |
334
+ | DELETE | `/api/bongos/founding/work/:stage/answers/:question` | `any-builder` | — | Un-answer: back to empty, which is not the same as skipped. |
335
+ | GET | `/api/bongos/founding/work/:stage/answers/:question/history` | `any-builder` | — | |
336
+ | GET | `/api/bongos/founding/work/:stage/assist` | `any-builder` | — | |
337
+ | PUT | `/api/bongos/founding/work/:stage/door` | `any-builder` | `door` | The founder's writes. |
338
+ | PUT | `/api/bongos/founding/work/:stage/link` | `any-builder` | `url` | |
339
+ | PUT | `/api/bongos/founding/work/:stage/page` | `any-builder` | `page` | |
330
340
 
331
341
  ## `front-door-guide` (7)
332
342
 
333
343
  | Method | Path | Rank | Body | Description |
334
344
  |---|---|---|---|---|
335
- | POST | `/api/bongos/front-door-guide/conversations` | `public` | `website` | start a chat. |
345
+ | POST | `/api/bongos/front-door-guide/conversations` | `public` | `website`, `starting_point` | start a chat. |
336
346
  | GET | `/api/bongos/front-door-guide/conversations/:id` | `public` | — | the transcript, for the plan and the sign-up hand-off. |
337
347
  | POST | `/api/bongos/front-door-guide/conversations/:id/attach` | `any-builder` | `token` | the visitor has just signed in; the chat moves onto their account. |
338
- | POST | `/api/bongos/front-door-guide/conversations/:id/messages` | `public` | `token`, `text`, `website` | one visitor message, one guide reply. |
348
+ | POST | `/api/bongos/front-door-guide/conversations/:id/messages` | `public` | `token`, `text`, `website`, `starting_point` | one visitor message, one guide reply. |
339
349
  | POST | `/api/bongos/front-door-guide/conversations/:id/plan` | `public` | `token`, `website` | the visitor has no account yet. |
340
350
  | GET | `/api/bongos/front-door-guide/mine` | `any-builder` | — | my newest chat and plan (the creation wizard's pre-fill reads it). |
341
351
  | GET | `/api/bongos/front-door-guide/status` | `public` | — | the landing asks before it offers the chat. |