@bongos/core 1.19.425 → 1.19.427
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 +66 -31
- package/docs/adr/0210-scouting-graduates-on-an-instance-asserted-owner-claim.md +100 -0
- package/docs/adr/0212-connections-on-the-profile-surface-and-addressing.md +61 -0
- package/docs/adr/README.md +2 -0
- package/docs/api/openapi.json +1 -1
- package/docs/copy-inventory.md +14 -6
- package/docs/copy-registry.json +91 -9
- package/docs/file-map.md +3 -1
- package/docs/module-api-changelog.md +4 -0
- package/modules/hall-ui/public/people.js +5 -5
- package/modules/hall-ui/public/profile-connections.js +304 -0
- package/modules/hall-ui/public/profile.html +16 -1
- package/modules/hall-ui/public/profile.js +5 -0
- package/modules/hall-ui/public/settings.html +2 -2
- package/modules/hall-ui/public/settings.js +12 -12
- package/modules/hall-ui/public/style.css +38 -0
- package/modules/platform-identity/account-visibility.js +47 -1
- package/modules/platform-identity/platform-identity.js +14 -11
- package/modules/platform-identity/routes/scouting.js +61 -21
- package/modules/platform-identity/routes/sso.js +6 -0
- package/modules/platform-identity/scouting-authz.js +139 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/hall-preview/server.js +3 -0
- package/src/bongos/auth.js +59 -3
- package/src/module-api.js +1 -1
- package/tests/account_privacy_flags.mjs +23 -13
- package/tests/effective_visibility_predicate.mjs +49 -4
- package/tests/profile_connections_ui.mjs +874 -0
- package/tests/scouting_owner_access_and_reach.mjs +544 -0
- package/tests/scouting_page_gate.mjs +185 -0
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
|
+
**1580 strings** across 3 surfaces · 1374 distinct pieces of copy · 1580 certain, 0 heuristic · 157 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` |
|
|
13
|
+
| `builders-hall` | `modules/hall-ui/public` | 73 | 1164 |
|
|
14
14
|
| `status-dashboard` | `modules/status-ui/public` | 4 | 98 |
|
|
15
15
|
| `landing` | `public-landing` | 5 | 318 |
|
|
16
16
|
|
|
@@ -76,9 +76,9 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
76
76
|
| `563d29ed86d8` | 2x | Bulk actions | modules/hall-ui/public/goals.html:148, modules/hall-ui/public/work.html:118 |
|
|
77
77
|
| `46b33550d52b` | 2x | Bulk claim | modules/hall-ui/public/goals.html:151, modules/hall-ui/public/work.html:121 |
|
|
78
78
|
| `c10806b50c61` | 2x | Claim task {…} | modules/hall-ui/public/goals-render.js:280, modules/hall-ui/public/work.js:417 |
|
|
79
|
-
| … | |
|
|
79
|
+
| … | | _117 more in the JSON registry_ | |
|
|
80
80
|
|
|
81
|
-
## `builders-hall` —
|
|
81
|
+
## `builders-hall` — 1164 strings
|
|
82
82
|
|
|
83
83
|
| id | conf | text | where |
|
|
84
84
|
|---|---|---|---|
|
|
@@ -297,7 +297,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
297
297
|
| `8f597eabf4ac` | certain | Could not load the drachmae guide. | `modules/hall-ui/public/drachmae.js:162` |
|
|
298
298
|
| `b2147cc90e36` | certain | Could not load the idea template. Reload, or file from the terminal with capture.js. | `modules/hall-ui/public/ideas.js:438` |
|
|
299
299
|
| `6264ebc9ede0` | certain | Could not load the primer. | `modules/hall-ui/public/primer.js:620` |
|
|
300
|
-
| `7604af13c40e` | certain | Could not load the profile. | `modules/hall-ui/public/profile.js:
|
|
300
|
+
| `7604af13c40e` | certain | Could not load the profile. | `modules/hall-ui/public/profile.js:620` |
|
|
301
301
|
| `8b69e445592a` | certain | Could not load the question labels; showing the answers as stored. | `modules/hall-ui/public/idea.js:229` |
|
|
302
302
|
| `edd5bafbe075` | certain | Could not load the queue just now. | `modules/hall-ui/public/ideas.js:387` |
|
|
303
303
|
| `02bb0570996a` | certain | Could not load the ranks. | `modules/hall-ui/public/ranks.js:197` |
|
|
@@ -739,6 +739,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
739
739
|
| `ab456f09c0f6` | certain | Request access | `modules/hall-ui/public/hall-render.js:405` |
|
|
740
740
|
| `967f6d1ac068` | certain | Request dev box | `modules/hall-ui/public/box-panel.js:357` |
|
|
741
741
|
| `967f6d1ac068` | certain | Request dev box | `modules/hall-ui/public/box-panel.js:421` |
|
|
742
|
+
| `820f47ce5f16` | certain | Request sent | `modules/hall-ui/public/profile-connections.js:82` |
|
|
743
|
+
| `820f47ce5f16` | certain | Request sent | `modules/hall-ui/public/profile-connections.js:130` |
|
|
742
744
|
| `e86e43684bce` | certain | Request sent — the owner or a manager will review it. | `modules/hall-ui/public/goals-render.js:999` |
|
|
743
745
|
| `88b36bd9368b` | certain | Request to join | `modules/hall-ui/public/my-projects.html:47` |
|
|
744
746
|
| `280f20e7ddf5` | certain | Request withdrawn. | `modules/hall-ui/public/goals-render.js:1015` |
|
|
@@ -802,6 +804,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
802
804
|
| `838b17fa8d93` | certain | Shown on your public profile — it helps others know what you work on. | `modules/hall-ui/public/profile-nudge.js:69` |
|
|
803
805
|
| `2f12d46f96ca` | certain | Sign in from the app. | `modules/hall-ui/public/hall-render.js:650` |
|
|
804
806
|
| `19ab56cc3932` | certain | Sign in to filter to your goals | `modules/hall-ui/public/goals-page.js:866` |
|
|
807
|
+
| `969f95f183ca` | certain | Sign in to the platform once to activate your profile before connecting. | `modules/hall-ui/public/profile-connections.js:216` |
|
|
805
808
|
| `b057dfbf49c5` | certain | Sign in when Claude prompts you. | `modules/hall-ui/public/hall-render.js:650` |
|
|
806
809
|
| `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/hall-render.js:256` |
|
|
807
810
|
| `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/hall-render.js:327` |
|
|
@@ -815,6 +818,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
815
818
|
| `82df09a08476` | certain | So the Archon knows who you are | `modules/hall-ui/public/hall-render.js:275` |
|
|
816
819
|
| `7da6a848cd26` | certain | Someone helped | `modules/hall-ui/public/collab.js:65` |
|
|
817
820
|
| `867df58c9aaa` | certain | Something else | `modules/hall-ui/public/copy-desk.html:97` |
|
|
821
|
+
| `c377d8ed744b` | certain | Something went wrong. Try again. | `modules/hall-ui/public/profile-connections.js:271` |
|
|
818
822
|
| `7e4b5d31df51` | certain | Sort by karma (peer recognition + approvals) | `modules/hall-ui/public/hall-widgets.js:210` |
|
|
819
823
|
| `f8ca223d8864` | certain | Sort by rank | `modules/hall-ui/public/hall-widgets.js:208` |
|
|
820
824
|
| `d67798e25c67` | certain | Sort by tokens used across recorded sessions — efficiency is tokens ÷ credits (hover a row for tokens-per-drac | `modules/hall-ui/public/hall-widgets.js:211` |
|
|
@@ -848,6 +852,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
848
852
|
| `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` |
|
|
849
853
|
| `4a8d1beb6f98` | certain | That project isn’t on the platform. | `modules/hall-ui/public/my-projects.js:145` |
|
|
850
854
|
| `c0e28f30524d` | certain | That project's own standing, as reported by that project. | `modules/hall-ui/public/profile.js:230` |
|
|
855
|
+
| `e99d4a811e92` | certain | That request is no longer available. | `modules/hall-ui/public/profile-connections.js:266` |
|
|
851
856
|
| `50198c465225` | certain | The 16-value rank enum in three bands, which ranks are live, and the permissions each rank holds. | `modules/hall-ui/public/diagrams.html:68` |
|
|
852
857
|
| `1569b8838862` | certain | The Dev Box app now acts as | `modules/hall-ui/public/pair.js:40` |
|
|
853
858
|
| `47c47af5dd7f` | certain | The Repo Atlas regenerates itself on the server every time code ships. It looks like it hasn’t been generated | `modules/hall-ui/public/atlas.html:48` |
|
|
@@ -887,6 +892,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
887
892
|
| `bcdbded93d4e` | certain | The work board failed to load. Reload to try again. | `modules/hall-ui/public/work.js:1402` |
|
|
888
893
|
| `25794c439321` | certain | Then copy the project onto your machine and run the one-shot bootstrap (it checks your setup, installs depende | `modules/hall-ui/public/hall-render.js:717` |
|
|
889
894
|
| `df316c3484de` | certain | Then drive it however you like: | `modules/hall-ui/public/hall-render.js:650` |
|
|
895
|
+
| `5151cf635644` | certain | They have asked to connect. | `modules/hall-ui/public/profile-connections.js:199` |
|
|
890
896
|
| `6e46811189db` | certain | This PR is held by the gate-review check. | `modules/hall-ui/public/gate.js:113` |
|
|
891
897
|
| `ed313d96b419` | certain | This builder keeps their track record private. | `modules/hall-ui/public/profile.js:210` |
|
|
892
898
|
| `3f9e476e22db` | certain | This clears {…}. The gate check re-runs and the PR merges once it goes green. Your approval applies only to co | `modules/hall-ui/public/gate.js:87` |
|
|
@@ -997,7 +1003,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
997
1003
|
| `8fc605026acf` | certain | Your pending join {…}: {…} — awaiting approval. | `modules/hall-ui/public/goal-inbox.js:88` |
|
|
998
1004
|
| `e91418db3962` | certain | Your preferences, {…}. | `modules/hall-ui/public/settings.js:841` |
|
|
999
1005
|
| `e91418db3962` | certain | Your preferences, {…}. | `modules/hall-ui/public/settings.js:1374` |
|
|
1000
|
-
| `
|
|
1006
|
+
| `73ee3dc369a5` | certain | Your profile page setting applies now — private already answers "not found" everywhere your profile is read. R | `modules/hall-ui/public/settings.html:110` |
|
|
1001
1007
|
| `f39746e3d66b` | certain | Your rendering preference could not be loaded. Reload the page to try again. | `modules/hall-ui/public/settings.js:549` |
|
|
1002
1008
|
| `b2dfd7120052` | certain | Your request is sent ✓ | `modules/hall-ui/public/hall-render.js:372` |
|
|
1003
1009
|
| `c16addf957d0` | certain | Your track record across every project you build on, shown on your public profile. Hiding it takes effect imme | `modules/hall-ui/public/settings.html:87` |
|
|
@@ -1160,6 +1166,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1160
1166
|
| `c5623d60015d` | certain | {…} Your standing is {…}. | `modules/hall-ui/public/hall-render.js:729` |
|
|
1161
1167
|
| `418b4031e9a4` | certain | {…} \u00b7 who votes, and how it {…} | `modules/hall-ui/public/government.js:963` |
|
|
1162
1168
|
| `a91e1e702d4d` | certain | {…} achieved, {…} in progress, {…} not started of {…} goals | `modules/hall-ui/public/roadmap.js:80` |
|
|
1169
|
+
| `0da0e247ff0f` | certain | {…} asking to connect | `modules/hall-ui/public/profile-connections.js:132` |
|
|
1163
1170
|
| `9d160147b34a` | certain | {…} criteria · since {…} | `modules/hall-ui/public/roadmap.js:140` |
|
|
1164
1171
|
| `9d160147b34a` | certain | {…} criteria · since {…} | `modules/hall-ui/public/roadmap.js:163` |
|
|
1165
1172
|
| `78ba2bd4bc44` | certain | {…} criteria · started {…} | `modules/hall-ui/public/roadmap.js:223` |
|
|
@@ -1186,6 +1193,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1186
1193
|
| `8e28c14b106d` | certain | {…} total | `modules/hall-ui/public/roadmap.js:108` |
|
|
1187
1194
|
| `44e2f95586e4` | certain | {…} will be able to open dev boxes again. | `modules/hall-ui/public/harbor.js:176` |
|
|
1188
1195
|
| `b2db97589086` | certain | {…} will not be able to open or wake a dev box until you unblock them. A box they already have running is left | `modules/hall-ui/public/harbor.js:146` |
|
|
1196
|
+
| `3ad8f32dd43b` | certain | {…} you have sent | `modules/hall-ui/public/profile-connections.js:133` |
|
|
1189
1197
|
| `8186b562553a` | certain | {…} {…} waiting | `modules/hall-ui/public/work.js:356` |
|
|
1190
1198
|
| `0d4016a5531c` | certain | {…} {…}{…} | `modules/hall-ui/public/work.js:220` |
|
|
1191
1199
|
| `b3757ba3bb46` | certain | {…} · Stored encrypted; never shown again after saving. | `modules/hall-ui/public/settings.js:1036` |
|
package/docs/copy-registry.json
CHANGED
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
"generator": "scripts/gds/copy-inventory.js",
|
|
4
4
|
"goal": 1000074,
|
|
5
5
|
"counts": {
|
|
6
|
-
"strings":
|
|
7
|
-
"unique_ids":
|
|
8
|
-
"certain":
|
|
6
|
+
"strings": 1580,
|
|
7
|
+
"unique_ids": 1374,
|
|
8
|
+
"certain": 1580,
|
|
9
9
|
"heuristic": 0,
|
|
10
|
-
"duplicate_ids":
|
|
10
|
+
"duplicate_ids": 157
|
|
11
11
|
},
|
|
12
12
|
"surfaces": {
|
|
13
13
|
"builders-hall": {
|
|
14
14
|
"at": "modules/hall-ui/public",
|
|
15
|
-
"files":
|
|
16
|
-
"strings":
|
|
15
|
+
"files": 73,
|
|
16
|
+
"strings": 1164
|
|
17
17
|
},
|
|
18
18
|
"status-dashboard": {
|
|
19
19
|
"at": "modules/status-ui/public",
|
|
@@ -1177,6 +1177,16 @@
|
|
|
1177
1177
|
"modules/hall-ui/public/box-panel.js:421"
|
|
1178
1178
|
]
|
|
1179
1179
|
},
|
|
1180
|
+
{
|
|
1181
|
+
"id": "820f47ce5f16",
|
|
1182
|
+
"surface": "builders-hall",
|
|
1183
|
+
"text": "Request sent",
|
|
1184
|
+
"occurrences": 2,
|
|
1185
|
+
"at": [
|
|
1186
|
+
"modules/hall-ui/public/profile-connections.js:82",
|
|
1187
|
+
"modules/hall-ui/public/profile-connections.js:130"
|
|
1188
|
+
]
|
|
1189
|
+
},
|
|
1180
1190
|
{
|
|
1181
1191
|
"id": "0887725744f2",
|
|
1182
1192
|
"surface": "builders-hall",
|
|
@@ -3589,7 +3599,7 @@
|
|
|
3589
3599
|
"surface": "builders-hall",
|
|
3590
3600
|
"text": "Could not load the profile.",
|
|
3591
3601
|
"file": "modules/hall-ui/public/profile.js",
|
|
3592
|
-
"line":
|
|
3602
|
+
"line": 620,
|
|
3593
3603
|
"origin": "js-notice",
|
|
3594
3604
|
"confidence": "certain"
|
|
3595
3605
|
},
|
|
@@ -7562,6 +7572,24 @@
|
|
|
7562
7572
|
"origin": "js-markup",
|
|
7563
7573
|
"confidence": "certain"
|
|
7564
7574
|
},
|
|
7575
|
+
{
|
|
7576
|
+
"id": "820f47ce5f16",
|
|
7577
|
+
"surface": "builders-hall",
|
|
7578
|
+
"text": "Request sent",
|
|
7579
|
+
"file": "modules/hall-ui/public/profile-connections.js",
|
|
7580
|
+
"line": 82,
|
|
7581
|
+
"origin": "js-markup",
|
|
7582
|
+
"confidence": "certain"
|
|
7583
|
+
},
|
|
7584
|
+
{
|
|
7585
|
+
"id": "820f47ce5f16",
|
|
7586
|
+
"surface": "builders-hall",
|
|
7587
|
+
"text": "Request sent",
|
|
7588
|
+
"file": "modules/hall-ui/public/profile-connections.js",
|
|
7589
|
+
"line": 130,
|
|
7590
|
+
"origin": "js-markup",
|
|
7591
|
+
"confidence": "certain"
|
|
7592
|
+
},
|
|
7565
7593
|
{
|
|
7566
7594
|
"id": "e86e43684bce",
|
|
7567
7595
|
"surface": "builders-hall",
|
|
@@ -8129,6 +8157,15 @@
|
|
|
8129
8157
|
"origin": "js-text-assign",
|
|
8130
8158
|
"confidence": "certain"
|
|
8131
8159
|
},
|
|
8160
|
+
{
|
|
8161
|
+
"id": "969f95f183ca",
|
|
8162
|
+
"surface": "builders-hall",
|
|
8163
|
+
"text": "Sign in to the platform once to activate your profile before connecting.",
|
|
8164
|
+
"file": "modules/hall-ui/public/profile-connections.js",
|
|
8165
|
+
"line": 216,
|
|
8166
|
+
"origin": "js-markup",
|
|
8167
|
+
"confidence": "certain"
|
|
8168
|
+
},
|
|
8132
8169
|
{
|
|
8133
8170
|
"id": "b057dfbf49c5",
|
|
8134
8171
|
"surface": "builders-hall",
|
|
@@ -8246,6 +8283,15 @@
|
|
|
8246
8283
|
"origin": "html-text",
|
|
8247
8284
|
"confidence": "certain"
|
|
8248
8285
|
},
|
|
8286
|
+
{
|
|
8287
|
+
"id": "c377d8ed744b",
|
|
8288
|
+
"surface": "builders-hall",
|
|
8289
|
+
"text": "Something went wrong. Try again.",
|
|
8290
|
+
"file": "modules/hall-ui/public/profile-connections.js",
|
|
8291
|
+
"line": 271,
|
|
8292
|
+
"origin": "js-notice",
|
|
8293
|
+
"confidence": "certain"
|
|
8294
|
+
},
|
|
8249
8295
|
{
|
|
8250
8296
|
"id": "7e4b5d31df51",
|
|
8251
8297
|
"surface": "builders-hall",
|
|
@@ -8543,6 +8589,15 @@
|
|
|
8543
8589
|
"origin": "js-markup",
|
|
8544
8590
|
"confidence": "certain"
|
|
8545
8591
|
},
|
|
8592
|
+
{
|
|
8593
|
+
"id": "e99d4a811e92",
|
|
8594
|
+
"surface": "builders-hall",
|
|
8595
|
+
"text": "That request is no longer available.",
|
|
8596
|
+
"file": "modules/hall-ui/public/profile-connections.js",
|
|
8597
|
+
"line": 266,
|
|
8598
|
+
"origin": "js-notice",
|
|
8599
|
+
"confidence": "certain"
|
|
8600
|
+
},
|
|
8546
8601
|
{
|
|
8547
8602
|
"id": "50198c465225",
|
|
8548
8603
|
"surface": "builders-hall",
|
|
@@ -8894,6 +8949,15 @@
|
|
|
8894
8949
|
"origin": "js-markup",
|
|
8895
8950
|
"confidence": "certain"
|
|
8896
8951
|
},
|
|
8952
|
+
{
|
|
8953
|
+
"id": "5151cf635644",
|
|
8954
|
+
"surface": "builders-hall",
|
|
8955
|
+
"text": "They have asked to connect.",
|
|
8956
|
+
"file": "modules/hall-ui/public/profile-connections.js",
|
|
8957
|
+
"line": 199,
|
|
8958
|
+
"origin": "js-markup",
|
|
8959
|
+
"confidence": "certain"
|
|
8960
|
+
},
|
|
8897
8961
|
{
|
|
8898
8962
|
"id": "6e46811189db",
|
|
8899
8963
|
"surface": "builders-hall",
|
|
@@ -9885,9 +9949,9 @@
|
|
|
9885
9949
|
"confidence": "certain"
|
|
9886
9950
|
},
|
|
9887
9951
|
{
|
|
9888
|
-
"id": "
|
|
9952
|
+
"id": "73ee3dc369a5",
|
|
9889
9953
|
"surface": "builders-hall",
|
|
9890
|
-
"text": "Your profile page setting applies now — private already answers \"not found\" everywhere your profile is read. Recruiter discoverability
|
|
9954
|
+
"text": "Your profile page setting applies now — private already answers \"not found\" everywhere your profile is read. Recruiter discoverability applies now too — switching it off takes you out of the People directory immediately, and back on puts you there again.",
|
|
9891
9955
|
"file": "modules/hall-ui/public/settings.html",
|
|
9892
9956
|
"line": 110,
|
|
9893
9957
|
"origin": "html-text",
|
|
@@ -11351,6 +11415,15 @@
|
|
|
11351
11415
|
"origin": "js-markup",
|
|
11352
11416
|
"confidence": "certain"
|
|
11353
11417
|
},
|
|
11418
|
+
{
|
|
11419
|
+
"id": "0da0e247ff0f",
|
|
11420
|
+
"surface": "builders-hall",
|
|
11421
|
+
"text": "{…} asking to connect",
|
|
11422
|
+
"file": "modules/hall-ui/public/profile-connections.js",
|
|
11423
|
+
"line": 132,
|
|
11424
|
+
"origin": "js-markup",
|
|
11425
|
+
"confidence": "certain"
|
|
11426
|
+
},
|
|
11354
11427
|
{
|
|
11355
11428
|
"id": "9d160147b34a",
|
|
11356
11429
|
"surface": "builders-hall",
|
|
@@ -11585,6 +11658,15 @@
|
|
|
11585
11658
|
"origin": "js-markup",
|
|
11586
11659
|
"confidence": "certain"
|
|
11587
11660
|
},
|
|
11661
|
+
{
|
|
11662
|
+
"id": "3ad8f32dd43b",
|
|
11663
|
+
"surface": "builders-hall",
|
|
11664
|
+
"text": "{…} you have sent",
|
|
11665
|
+
"file": "modules/hall-ui/public/profile-connections.js",
|
|
11666
|
+
"line": 133,
|
|
11667
|
+
"origin": "js-markup",
|
|
11668
|
+
"confidence": "certain"
|
|
11669
|
+
},
|
|
11588
11670
|
{
|
|
11589
11671
|
"id": "8186b562553a",
|
|
11590
11672
|
"surface": "builders-hall",
|
package/docs/file-map.md
CHANGED
|
@@ -244,7 +244,7 @@
|
|
|
244
244
|
│ ├── terrain.js ← (Phase D + ADR 0012, CJS): TERRAIN + OBJECT enums + BLOCKING_TERRAINS + BLOCKING_OBJECTS (server twin of public/game/world/terrain.js)
|
|
245
245
|
│ └── map.js ← (Phase D + ADR 0012): two-grid INITIAL_MAP {ground, objects}; isBlocked checks both layers (mirrors public/game/world/{terrain,map}.js)
|
|
246
246
|
│ (public-status/ moved to modules/status-ui/public/ in BV1.R84 — see the modules/ block above)
|
|
247
|
-
│ (public-builders/ moved to modules/hall-ui/public/ in BV1.R85 — the authenticated builders' hall; see the modules/ block above. It keeps its DEDICATED serving block in src/bongos/serve-internal.js: the builders.<apex> + apex /builders/* shim, canonical redirects, the citizen/Archon page gates, asset-stamping, and the module hall-widget injection — partitioned out of the generic web-surface loop. index.html=the hall dashboard; work/board/roadmap/goals/watch/harbor/gate/pair/settings/ranks/sessions/primer/diagrams/atlas pages; ideas.{html,js,css}=the Full Idea composer (task 1002928 / R152 of goal 1000062 — the five R141 fields with a live R142 completeness meter, both fetched from the server so the page carries no copy of the rules; drafts in localStorage so navigation costs nothing. Task 1002930 / R154 added the SPARK QUEUE above it and a second mode: `?develop=<id>` reuses the same form to develop a spark — the spark's words shown above the fields, its title read-only, and the file routed to POST /inbox/:id/develop instead of POST /inbox, under its own per-idea draft key); idea.html/idea.js=the idea-detail PAGE (/idea/:id, task 1002929 / R153 — the SECOND two-segment hall page after /task/:id: grade, the five answers in template order, the score, and both attributions. The GRADE decides what the page contains — a quick idea gets no five-field skeleton. task-detail.js keeps the #/idea/N overlay because ~320 of its lines are the Metic+ triage panel; the overlay now links here); profile.html/profile.js=the public, shareable builder profile page (/profile?id=N — rank, works, credits, karma, achievements; task 1467); task.html/task.js=the task-detail page (/task/:id, task 751 — replaced the old #/task/N overlay); builders.js=the controller; dom-utils.js/hall-widgets.js=the widget+settings-panel registries.)
|
|
247
|
+
│ (public-builders/ moved to modules/hall-ui/public/ in BV1.R85 — the authenticated builders' hall; see the modules/ block above. It keeps its DEDICATED serving block in src/bongos/serve-internal.js: the builders.<apex> + apex /builders/* shim, canonical redirects, the citizen/Archon page gates, asset-stamping, and the module hall-widget injection — partitioned out of the generic web-surface loop. index.html=the hall dashboard; work/board/roadmap/goals/watch/harbor/gate/pair/settings/ranks/sessions/primer/diagrams/atlas pages; ideas.{html,js,css}=the Full Idea composer (task 1002928 / R152 of goal 1000062 — the five R141 fields with a live R142 completeness meter, both fetched from the server so the page carries no copy of the rules; drafts in localStorage so navigation costs nothing. Task 1002930 / R154 added the SPARK QUEUE above it and a second mode: `?develop=<id>` reuses the same form to develop a spark — the spark's words shown above the fields, its title read-only, and the file routed to POST /inbox/:id/develop instead of POST /inbox, under its own per-idea draft key); idea.html/idea.js=the idea-detail PAGE (/idea/:id, task 1002929 / R153 — the SECOND two-segment hall page after /task/:id: grade, the five answers in template order, the score, and both attributions. The GRADE decides what the page contains — a quick idea gets no five-field skeleton. task-detail.js keeps the #/idea/N overlay because ~320 of its lines are the Metic+ triage panel; the overlay now links here); profile.html/profile.js=the public, shareable builder profile page (/profile?id=N — rank, works, credits, karma, achievements; task 1467); profile-connections.js=section 6 of that page, the hub-only connections block (task 1002296 / R20 of goal 1000045 — the viewer-relative 1st/2nd/3rd/out-of-network label, the mutuals it was computed from, the connect button, and on your own profile both request queues plus your connections ledger. Loaded BEFORE profile.js, which calls window.OTBConnections.render behind a guard, so a page that omits the script simply has no section; the section reveals only when the hub's /connections routes answer, exactly as the cross-project record does. ADR 0212 records why it is on this page rather than the not-yet-built /u/<handle>, and why it addresses a builder by github_login and then uses the canonical handle the API echoes back); task.html/task.js=the task-detail page (/task/:id, task 751 — replaced the old #/task/N overlay); builders.js=the controller; dom-utils.js/hall-widgets.js=the widget+settings-panel registries.)
|
|
248
248
|
│
|
|
249
249
|
├── infra/ ← ON-BOX scripts (task 1002699): the four reporter/heartbeat crons every dev box runs from its /workspace clone — box-heartbeat.sh (idle-sweep activity signal), box-report-version.sh (HEAD → POST /box/version), box-report-host-keys.sh (SSH host keys → POST /box/host-keys), box-report-terminal.sh (ttyd URL+credential → POST /box/terminal). Delivered by the workspace clone itself (modules/dev-box/box-access.js sparse scope includes infra/); crons self-installed by box-source-fetch.sh's per-tick bring-up. API base resolves GDS_BASE env → session-file api_base → skip (no hardcoded host in the neutral core).
|
|
250
250
|
├── devbox-app/ ← OTB Dev Box — Electron menu-bar/tray switch for the builder's box (#904, ADR 0045; internal). SELF-CONTAINED: own package.json (never feeds the droplet's npm ci); built by .github/workflows/build-devbox-app.yml; published to the public releases repo per config/devbox-app.json; release recipe docs/recipes/devbox-app-release.md
|
|
@@ -353,6 +353,8 @@ tests/
|
|
|
353
353
|
├── effective_visibility_predicate.mjs ← (task 1002967, goal 1000045): the EFFECTIVE-VISIBILITY structural guard over `modules/platform-identity/account-visibility.js` (the file task 1002295 landed and this task ADOPTED rather than duplicating). Three layers — SQL and JS agree row-for-row over the privacy-spec D2 matrix; that file is the only one allowed to compare `profile_state`/`account_visibility`/`hide_stats` to a literal (per-occurrence exemptions, each with a reason and a checked obligation); and every `SELECT` on `platform_identity_accounts` is enumerated FROM SOURCE and must join a shared predicate, be declared non-public, or be a checked deferral to a named caller — so a read that does not exist yet (hub search, the sitemap) fails the build until its author classifies it. Behavioural half runs the real `/profiles/:handle` route over an in-memory accounts table filtered by each statement's own WHERE clause: private → 404 (never 403), byte-identical to stranger and owner alike. DB-free `unit` lane.
|
|
354
354
|
├── application_lifecycle.mjs ← (task 1002284, goal 1000045, ADR 0201 D1/D3.2/D4 + ADR 0208): the application lifecycle EXECUTED — apply, list-pending, approve, decline, RESCIND (`invited → dismissed`), idempotency on the state already held, and the two things that must never happen: a builder without `access_request.review` moving the queue, and a VOUCH buying admission. Real router, REAL `requirePermission` resolving against the real government catalog's rank seed, and the REAL `hasInvitedAccessRequest` from `src/bongos/db-kernel.js` pointed at the same in-memory `access_requests` table (a stubbed `./pool`), whose filter is built from each statement's own WHERE clause and which refuses a predicate it cannot read. The no-authority proof seeds a vouched row and asserts the approve path and the admission read are byte-identical to the unvouched twin, and that no statement on either path names `applicant_github_id`/`vouched_at`. DB-free `unit` lane.
|
|
355
355
|
├── application_echo.mjs ← (task 1002284, goal 1000045, ADR 0201 D1.3/D1.4): the hub's STATUSLESS echo of an application. Part A pins the domain functions — the read binds `APPLICATION_ECHO_WINDOW_DAYS` itself (one 30, not three), the write is an upsert on the pair, neither statement mentions a status, and a non-numeric principal is refused before any query (ADR 0171 D2). Part B runs the real `POST /my-projects/join` and `GET /my-projects` over an in-memory `platform_identity_application_echoes` table with the relay's answer scripted: only an accepted application leaves a trace — a standing membership, either door refusal, a members-only project and an unreachable project leave none — and best-effort is asserted in both directions (a failed echo write still reports the filed application; a failed echo read still lands the memberships listing). DB-free `unit` lane.
|
|
356
|
+
├── scouting_owner_access_and_reach.mjs ← (task 1002290, goal 1000045 C5, ADR 0210): the R14 proof — WHO may read the cross-project recruiting directory, and WHO appears in it. A project owner (an instance-asserted, hub-witnessed `membership_kind='owner'`) reads `GET /scouting` with no rank at all; a builder who is neither owner nor `project.curate` holder gets the unchanged 403; an un-witnessed owner claim is refused; a broken ownership read falls closed onto the permission gate rather than admitting or 500ing. And the recruiting opt-out finally bites: a public, unhidden, active account that opted out is absent from `/scouting` and the hall's `/people` (the same endpoint), returns when it opts back in, and the opt-out grants and denies no permission — an opted-out owner still reads the directory while being absent from their own copy of it. Fake pool filtered by each statement's own WHERE clause, real route, real `requirePermission` over the real government catalog, real HTTP. Mutation-checked three ways. DB-free `unit` lane.
|
|
357
|
+
├── scouting_page_gate.mjs ← (task 1002290, goal 1000045 C5, ADR 0210 D3): the OTHER half of R14 — the `/builders/people` SHELL must admit exactly the two audiences `GET /scouting` admits. A project owner holding no permission reaches it; everyone the route refuses gets the byte-identical `?denied=project.curate` redirect; and each of six ways the `alsoAdmits` door can fail (module absent, function absent, throw, reject, non-boolean, prototype-only) fails CLOSED. Also pins that the other four page gates never consult the seam at all, and that exactly ONE gate declares a second door. Its own file because the route proof's ESM imports pull `auth.js` in before a session double could be installed — this one installs it first, the `government_page_gates.mjs` pattern. DB-free `unit` lane.
|
|
356
358
|
└── public_task_resolver.mjs ← (#604): the public `/public/tasks/:id` projection — title/value_summary exposed only for shipped|confirmed; withheld for in-flight so unshipped/security task names can't leak.
|
|
357
359
|
```
|
|
358
360
|
|
|
@@ -1287,5 +1287,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
1287
1287
|
landed since 1.19.423 with no explicit bump. run 33270353952. (task 1002620)
|
|
1288
1288
|
1.19.425 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1289
1289
|
landed since 1.19.424 with no explicit bump. run 33270559541. (task 1002620)
|
|
1290
|
+
1.19.426 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1291
|
+
landed since 1.19.425 with no explicit bump. run 33270772607. (task 1002620)
|
|
1292
|
+
1.19.427 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1293
|
+
landed since 1.19.426 with no explicit bump. run 33271340372. (task 1002620)
|
|
1290
1294
|
---------------------------------------------------------------------------
|
|
1291
1295
|
```
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// people.js — the People page: the /scouting cross-project builder directory
|
|
2
2
|
// graduated into the hall (task 1002577; ADR 0141 §4 is the data's design of
|
|
3
|
-
// record). Same data endpoint as scouting.js — /api/gds/scouting,
|
|
4
|
-
// server-side
|
|
5
|
-
// on that
|
|
6
|
-
// hall chrome + kit primitives are what
|
|
7
|
-
//
|
|
3
|
+
// record). Same data endpoint as scouting.js — /api/gds/scouting, gated
|
|
4
|
+
// server-side on 'project.curate' OR being a project owner (R14, ADR 0210); the
|
|
5
|
+
// page itself is gated in serve-internal.js on that same pair, so a visitor who
|
|
6
|
+
// is neither never sees this shell. The hall chrome + kit primitives are what
|
|
7
|
+
// "graduate" means: searchable, paged, shell-navigable.
|
|
8
8
|
// All network values render through OTBKit.esc — never raw innerHTML.
|
|
9
9
|
(function () {
|
|
10
10
|
'use strict';
|