@bongos/core 1.21.96 → 1.21.98

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 (44) hide show
  1. package/.bongos-core.json +62 -47
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +2 -0
  4. package/clients/bongos-client/index.cjs +2 -0
  5. package/clients/bongos-client/index.d.ts +3 -1
  6. package/clients/bongos-client/index.mjs +2 -0
  7. package/docs/adr/0152-metic-task-abandonment.md +2 -0
  8. package/docs/api/openapi.json +52 -5
  9. package/docs/api-reference.md +3 -2
  10. package/docs/architecture.md +3 -0
  11. package/docs/copy-inventory.md +395 -393
  12. package/docs/copy-registry.json +486 -468
  13. package/docs/design/project-startup-direction.md +13 -0
  14. package/docs/module-api-changelog.md +4 -0
  15. package/docs/page-readings.json +260 -260
  16. package/migrations/core_274_parked_backlog_stays_parked.sql +140 -0
  17. package/modules/hall-ui/public/studio-lib.js +22 -0
  18. package/modules/hall-ui/public/studio.css +138 -7
  19. package/modules/hall-ui/public/studio.html +10 -4
  20. package/modules/hall-ui/public/studio.js +39 -1
  21. package/modules/hall-ui/records/studio.md +16 -0
  22. package/modules/lifecycle/db-ship.js +7 -2
  23. package/modules/lifecycle/db-tasks.js +25 -0
  24. package/modules/lifecycle/routes/tasks.js +5 -5
  25. package/modules/provisioning/github-setup.js +73 -4
  26. package/modules/provisioning/routes/github-setup.js +43 -1
  27. package/modules/provisioning/routes/provisioning.js +8 -4
  28. package/modules/public-landing/public/projects.html +185 -30
  29. package/package-lock.json +2 -2
  30. package/package.json +1 -1
  31. package/release-notes.json +16 -0
  32. package/scripts/gds/provision-github-setup.js +29 -9
  33. package/scripts/gds/provision.js +20 -9
  34. package/src/module-api.js +1 -1
  35. package/tests/abandon_task.mjs +1 -1
  36. package/tests/github_one_trip.mjs +4 -4
  37. package/tests/github_org_account.mjs +3 -2
  38. package/tests/github_pick_up.mjs +366 -0
  39. package/tests/hall_studio_home.mjs +140 -5
  40. package/tests/parked_backlog_stays_parked.mjs +182 -0
  41. package/tests/projects_hub_pre_uat.mjs +3 -2
  42. package/tests/promotion_triggers_skip_cascade.mjs +5 -3
  43. package/tests/provisioning_github_app_routes.mjs +73 -0
  44. package/tests/wizard_github_feedback.mjs +95 -29
@@ -77,6 +77,19 @@ This table replaces the blended flow's table below for every hub-side capability
77
77
  - **The server checks the name, never the page's copy.** The mint route takes `{ account: 'org', org }`, checks the name against GitHub's login rules (letters, digits and single inner dashes, up to 39), and builds `github.com/organizations/<org>/settings/apps/new`. `account: 'org'` with no usable organisation is refused (`org_required`) rather than quietly made personal. The organisation is recorded as a `github-app-org` event, and the checklist reads give it back as `app_org`, so the app's settings link points at the organisation from any tab or device. The repo route makes the repo with `POST /orgs/{org}/repos`, private and empty like the personal one. GitHub's refusals come back as a 409 with the reason (the organisation restricts which apps may act for it; the founder may not create repos there; no such organisation), never as a 403, which the page reads as "sign in again".
78
78
  - **The install follows the repo.** The install step already targets the repo's owner (the project's `target_ref`), so an organisation-owned repo installs there. Proof: `tests/github_org_account.mjs`.
79
79
 
80
+ ### Picking up where it stopped, as built (task 1004652)
81
+
82
+ - **Never a second app.** The mint route reads the latest attempt first. A link still waiting on GitHub is handed back, with the same state (a second click, "Reopen GitHub", another device). Once GitHub has approved an app for the project, no new link is made (`app_exists`, or `github_in_progress` while the runner converts it). A new link is minted only when nothing was made on GitHub: the link lapsed, or the runner never took it up.
83
+ - **Every state has its sentence and its button.** The server names what picking it up does (`pick_up`, from `pickUpFor` in `modules/provisioning/github-setup.js`), and the stopped step carries it:
84
+ - waiting on GitHub → "Reopen GitHub", the same link posted again. A tab that opened behind the window, or was closed before the approval, is noticed within a few seconds (it used to take 90).
85
+ - the link lapsed, or GitHub setup never started → "Connect GitHub ↗", a fresh link (nothing was made).
86
+ - approved, but the conversion stopped while GitHub's code is under an hour old → "Pick up where it stopped" re-queues the same attempt with the code it holds.
87
+ - approved, but the app's keys never reached the project (code spent or too old) → "Send it to the platform team" files a blocker from the page; GitHub offers no way to delete an app or re-issue its keys by API, so only a person can finish it.
88
+ - keys placed but sign-in unconfirmed → the runner asks the project again on every tick in its checking window, and the attempt becomes done with the same app. After the window: "Pick up where it stopped", plus "Send it to the platform team" for a project that still will not answer.
89
+ - the install never confirmed after the window → the mockup's "GitHub stopped before the app was installed on your repo. Nothing is lost, and no second app will be made." with "Pick up where it stopped ↗", which opens the same app's install page and asks the runner to look again.
90
+ - device flow still off after the window → "Turned it on? Check again".
91
+ - **Check again re-opens the window.** `POST /provisioning/instances/:id/github-app/pick-up` (the owner only) re-queues a young conversion or records a `github-app-check-requested` event, which re-opens the runner's two-hour window exactly as an install report does. A runner placement that fails after GitHub's conversion now says the code is spent, and GitHub's 404 on a conversion drops the dead code, so a pick-up never re-queues a code that cannot convert. Proof: `tests/github_pick_up.mjs`.
92
+
80
93
  ### Who builds it
81
94
 
82
95
  | Task | Builds |
@@ -3029,5 +3029,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
3029
3029
  landed since 1.21.94 with no explicit bump. run 37907054923. (task 1002620)
3030
3030
  1.21.96 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3031
3031
  landed since 1.21.95 with no explicit bump. run 37914843597. (task 1002620)
3032
+ 1.21.97 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3033
+ landed since 1.21.96 with no explicit bump. run 37920956545. (task 1002620)
3034
+ 1.21.98 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3035
+ landed since 1.21.97 with no explicit bump. run 37925528587. (task 1002620)
3032
3036
  ---------------------------------------------------------------------------
3033
3037
  ```