@bongos/core 1.18.0 → 1.18.3
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 +132 -322
- package/README.md +1 -1
- package/config/branding.neutral.json +5 -1
- package/docs/adr/0142-project-context-is-prose-only.md +41 -0
- package/docs/adr/0143-onboarding-repo-picker-oauth-scope.md +35 -0
- package/docs/adr/README.md +5 -2
- package/docs/api/openapi.json +1789 -450
- package/docs/api-reference.md +52 -5
- package/docs/file-map.md +7 -7
- package/docs/recipes/packaging-the-core.md +13 -0
- package/docs/recipes/upgrading-the-core.md +5 -2
- package/migrations/039_newcomer_friendly_column.sql +5 -0
- package/migrations/102_remove_box_first_provision_approval.sql +4 -0
- package/migrations/core_192_github_oauth_tokens.sql +33 -0
- package/modules/hall-ui/public/my-projects.html +78 -0
- package/modules/hall-ui/public/my-projects.js +142 -0
- package/modules/hall-ui/public/scouting.html +45 -0
- package/modules/hall-ui/public/scouting.js +73 -0
- package/modules/status-ui/public/explore.html +54 -0
- package/modules/status-ui/public/explore.js +67 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/public-landing/create.html +211 -14
- package/scripts/gds/cli-lib.js +11 -5
- package/scripts/gds/lint-migrations.js +102 -0
- package/scripts/gds/login.js +42 -10
- package/scripts/gds/mirror-redact.js +5 -0
- package/scripts/gds/package-core.js +263 -4
- package/scripts/gds/provision.js +145 -7
- package/scripts/gds/publish-manifest.js +15 -0
- package/scripts/gds/run-unit-tests.js +38 -14
- package/scripts/gds/setup.js +41 -0
- package/scripts/gds/ship.js +115 -31
- package/scripts/gds/upgrade.js +147 -5
- package/scripts/migrate.sh +10 -0
- package/src/bongos/auth.js +362 -5
- package/src/bongos/db.js +66 -0
- package/src/bongos/github-repos.js +93 -0
- package/src/bongos/routes/auth.js +93 -11
- package/src/bongos/routes/github.js +90 -0
- package/src/bongos/routes/instance.js +15 -3
- package/src/bongos/routes.js +2 -0
- package/src/branding.js +17 -2
- package/src/instance-config.js +16 -0
- package/src/module-api.js +29 -1
- package/tests/branding.mjs +29 -23
- package/tests/github_repos_helpers.mjs +91 -0
- package/tests/github_token_store.mjs +121 -0
- package/tests/idp_device_exchange.mjs +105 -0
- package/tests/idp_federation.mjs +100 -0
- package/tests/migrations_forward_safe.mjs +86 -0
- package/tests/module_api.mjs +1 -1
- package/tests/package_core.mjs +246 -1
- package/tests/provision.mjs +157 -0
- package/tests/pruned_lockfile_integrity.mjs +79 -0
- package/tests/ship_ci_deploy.mjs +60 -0
- package/tests/upgrade.mjs +254 -5
- package/.gitignore +0 -91
- package/docs/adr/0139-platform-history-migration-to-cloudbongos.md +0 -94
- package/docs/adr/0140-cloudbongos-standalone-reprovision.md +0 -43
- package/scripts/hall-preview/fixtures/access-requests.json +0 -20
- package/scripts/hall-preview/fixtures/achievements.json +0 -76
- package/scripts/hall-preview/fixtures/analytics__builder.json +0 -251
- package/scripts/hall-preview/fixtures/audit-log.json +0 -68
- package/scripts/hall-preview/fixtures/blockers__detail.json +0 -12
- package/scripts/hall-preview/fixtures/box__me.json +0 -5
- package/scripts/hall-preview/fixtures/boxes__cost-ledger.json +0 -69
- package/scripts/hall-preview/fixtures/builders__active-claims.json +0 -1
- package/scripts/hall-preview/fixtures/builders__directory.json +0 -81
- package/scripts/hall-preview/fixtures/builders__roster.json +0 -48
- package/scripts/hall-preview/fixtures/goals.json +0 -502
- package/scripts/hall-preview/fixtures/goals__25.json +0 -96
- package/scripts/hall-preview/fixtures/goals__26.json +0 -67
- package/scripts/hall-preview/fixtures/goals__3.json +0 -103
- package/scripts/hall-preview/fixtures/goals__35.json +0 -49
- package/scripts/hall-preview/fixtures/goals__conflicts.json +0 -154
- package/scripts/hall-preview/fixtures/goals__detail.json +0 -96
- package/scripts/hall-preview/fixtures/goals__inbox.json +0 -5
- package/scripts/hall-preview/fixtures/goals__requests.json +0 -3
- package/scripts/hall-preview/fixtures/grades__by-builder.json +0 -32
- package/scripts/hall-preview/fixtures/inbox.json +0 -330
- package/scripts/hall-preview/fixtures/inbox__detail.json +0 -15
- package/scripts/hall-preview/fixtures/instance.json +0 -124
- package/scripts/hall-preview/fixtures/leaderboard.json +0 -184
- package/scripts/hall-preview/fixtures/me.json +0 -476
- package/scripts/hall-preview/fixtures/me__art-key__own.json +0 -6
- package/scripts/hall-preview/fixtures/me__event-sound-prefs.json +0 -209
- package/scripts/hall-preview/fixtures/me__recent-ships.json +0 -304
- package/scripts/hall-preview/fixtures/me__render.json +0 -5
- package/scripts/hall-preview/fixtures/me__skill-prefs.json +0 -143
- package/scripts/hall-preview/fixtures/me__sound-prefs.json +0 -67
- package/scripts/hall-preview/fixtures/me__wandering.json +0 -43
- package/scripts/hall-preview/fixtures/override-requests.json +0 -15
- package/scripts/hall-preview/fixtures/provisioning__fleet.json +0 -1
- package/scripts/hall-preview/fixtures/provisioning__fleet__cost-ledger.json +0 -1
- package/scripts/hall-preview/fixtures/provisioning__instances.json +0 -1
- package/scripts/hall-preview/fixtures/public__analytics__ecosystem.json +0 -516
- package/scripts/hall-preview/fixtures/public__bounty-table.json +0 -37
- package/scripts/hall-preview/fixtures/public__cost-summary.json +0 -742
- package/scripts/hall-preview/fixtures/public__estimation-drift.json +0 -41
- package/scripts/hall-preview/fixtures/public__grades.json +0 -50
- package/scripts/hall-preview/fixtures/public__progress.json +0 -124
- package/scripts/hall-preview/fixtures/public__recent-shipped.json +0 -426
- package/scripts/hall-preview/fixtures/public__repo-health.json +0 -160
- package/scripts/hall-preview/fixtures/public__repo-info.json +0 -5
- package/scripts/hall-preview/fixtures/security__docs.json +0 -10
- package/scripts/hall-preview/fixtures/security__reports.json +0 -31
- package/scripts/hall-preview/fixtures/sessions__search.json +0 -9
- package/scripts/hall-preview/fixtures/tasks.json +0 -2420
- package/scripts/hall-preview/fixtures/tasks__claimable.json +0 -2555
- package/scripts/hall-preview/fixtures/tasks__detail.json +0 -111
- package/scripts/hall-preview/fixtures/tasks__peer-votes__feed.json +0 -330
- package/scripts/hall-preview/fixtures/versions.json +0 -89
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"leaderboard": [
|
|
3
|
-
{
|
|
4
|
-
"id": "1",
|
|
5
|
-
"github_login": "lars589",
|
|
6
|
-
"display_name": "lars589",
|
|
7
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/283020391?v=4",
|
|
8
|
-
"total_credits": 38644,
|
|
9
|
-
"karma": 10,
|
|
10
|
-
"rank": "archon",
|
|
11
|
-
"achievements": [
|
|
12
|
-
"first-ship",
|
|
13
|
-
"first-claim",
|
|
14
|
-
"first-parallel-claim",
|
|
15
|
-
"streak-3",
|
|
16
|
-
"streak-7"
|
|
17
|
-
],
|
|
18
|
-
"tokens_used": "38866453596"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"id": "95",
|
|
22
|
-
"github_login": "jaxri",
|
|
23
|
-
"display_name": "Jackson Rini",
|
|
24
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/64553469?v=4",
|
|
25
|
-
"total_credits": 4630,
|
|
26
|
-
"karma": 1,
|
|
27
|
-
"rank": "metic",
|
|
28
|
-
"achievements": [
|
|
29
|
-
"first-ship",
|
|
30
|
-
"first-claim",
|
|
31
|
-
"first-parallel-claim",
|
|
32
|
-
"streak-3",
|
|
33
|
-
"gds-shipper"
|
|
34
|
-
],
|
|
35
|
-
"tokens_used": "2485218160"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"id": "94",
|
|
39
|
-
"github_login": "scootermack",
|
|
40
|
-
"display_name": "scootermack",
|
|
41
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/295990394?v=4",
|
|
42
|
-
"total_credits": 2422,
|
|
43
|
-
"karma": 0,
|
|
44
|
-
"rank": "metic",
|
|
45
|
-
"achievements": [
|
|
46
|
-
"first-ship",
|
|
47
|
-
"first-claim",
|
|
48
|
-
"first-parallel-claim",
|
|
49
|
-
"streak-3",
|
|
50
|
-
"art-pipeline-shipper"
|
|
51
|
-
],
|
|
52
|
-
"tokens_used": "966367590"
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"id": "25",
|
|
56
|
-
"github_login": "IAMMASTERQUA",
|
|
57
|
-
"display_name": "IAMMASTERQUA",
|
|
58
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/290184380?v=4",
|
|
59
|
-
"total_credits": 286,
|
|
60
|
-
"karma": 37,
|
|
61
|
-
"rank": "metic",
|
|
62
|
-
"achievements": [
|
|
63
|
-
"first-ship",
|
|
64
|
-
"first-claim",
|
|
65
|
-
"first-parallel-claim",
|
|
66
|
-
"art-pipeline-shipper",
|
|
67
|
-
"gds-shipper"
|
|
68
|
-
],
|
|
69
|
-
"tokens_used": "322340908"
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"id": "70",
|
|
73
|
-
"github_login": "kingaonline",
|
|
74
|
-
"display_name": "kingaonline",
|
|
75
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/293641659?v=4",
|
|
76
|
-
"total_credits": 160,
|
|
77
|
-
"karma": 0,
|
|
78
|
-
"rank": "thetes",
|
|
79
|
-
"achievements": [
|
|
80
|
-
"first-ship",
|
|
81
|
-
"first-claim",
|
|
82
|
-
"art-pipeline-shipper",
|
|
83
|
-
"breaking-the-100c-bar"
|
|
84
|
-
],
|
|
85
|
-
"tokens_used": "66829858"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"id": "3",
|
|
89
|
-
"github_login": "LarsCode",
|
|
90
|
-
"display_name": "LarsCode",
|
|
91
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/35337514?v=4",
|
|
92
|
-
"total_credits": 71,
|
|
93
|
-
"karma": 0,
|
|
94
|
-
"rank": "xenos",
|
|
95
|
-
"achievements": [
|
|
96
|
-
"first-ship",
|
|
97
|
-
"first-claim",
|
|
98
|
-
"art-pipeline-shipper"
|
|
99
|
-
],
|
|
100
|
-
"tokens_used": "25527381"
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"id": "24",
|
|
104
|
-
"github_login": "bfg-system",
|
|
105
|
-
"display_name": "The BFG (system)",
|
|
106
|
-
"avatar_url": null,
|
|
107
|
-
"total_credits": 0,
|
|
108
|
-
"karma": 0,
|
|
109
|
-
"rank": "xenos",
|
|
110
|
-
"achievements": [],
|
|
111
|
-
"tokens_used": "0"
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"id": "27",
|
|
115
|
-
"github_login": "willHermesLines",
|
|
116
|
-
"display_name": "willHermesLines",
|
|
117
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/267458743?v=4",
|
|
118
|
-
"total_credits": 0,
|
|
119
|
-
"karma": 0,
|
|
120
|
-
"rank": "xenos",
|
|
121
|
-
"achievements": [],
|
|
122
|
-
"tokens_used": "0"
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"id": "28",
|
|
126
|
-
"github_login": "discord-bot-system",
|
|
127
|
-
"display_name": "Discord Bot (system)",
|
|
128
|
-
"avatar_url": null,
|
|
129
|
-
"total_credits": 0,
|
|
130
|
-
"karma": 0,
|
|
131
|
-
"rank": "xenos",
|
|
132
|
-
"achievements": [],
|
|
133
|
-
"tokens_used": "0"
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"id": "50",
|
|
137
|
-
"github_login": "Svensson-CMD",
|
|
138
|
-
"display_name": "Svensson-CMD",
|
|
139
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/290959655?v=4",
|
|
140
|
-
"total_credits": 0,
|
|
141
|
-
"karma": 0,
|
|
142
|
-
"rank": "xenos",
|
|
143
|
-
"achievements": [],
|
|
144
|
-
"tokens_used": "0"
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
"id": "51",
|
|
148
|
-
"github_login": "MrTenkpro",
|
|
149
|
-
"display_name": "MrTenkpro",
|
|
150
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/291558470?v=4",
|
|
151
|
-
"total_credits": 0,
|
|
152
|
-
"karma": 0,
|
|
153
|
-
"rank": "xenos",
|
|
154
|
-
"achievements": [],
|
|
155
|
-
"tokens_used": "0"
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
"id": "57",
|
|
159
|
-
"github_login": "largekristensen-svg",
|
|
160
|
-
"display_name": "largekristensen-svg",
|
|
161
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/292408002?v=4",
|
|
162
|
-
"total_credits": 0,
|
|
163
|
-
"karma": 0,
|
|
164
|
-
"rank": "xenos",
|
|
165
|
-
"achievements": [],
|
|
166
|
-
"tokens_used": "0"
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
"id": "71",
|
|
170
|
-
"github_login": "erikwils",
|
|
171
|
-
"display_name": "erikwils",
|
|
172
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/51457175?v=4",
|
|
173
|
-
"total_credits": 0,
|
|
174
|
-
"karma": 0,
|
|
175
|
-
"rank": "xenos",
|
|
176
|
-
"achievements": [],
|
|
177
|
-
"tokens_used": "0"
|
|
178
|
-
}
|
|
179
|
-
],
|
|
180
|
-
"page": {
|
|
181
|
-
"limit": 100,
|
|
182
|
-
"offset": 0
|
|
183
|
-
}
|
|
184
|
-
}
|
|
@@ -1,476 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"builder": {
|
|
3
|
-
"id": "95",
|
|
4
|
-
"github_id": "64553469",
|
|
5
|
-
"github_login": "jaxri",
|
|
6
|
-
"display_name": "Jackson Rini",
|
|
7
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/64553469?v=4",
|
|
8
|
-
"total_credits": 4630,
|
|
9
|
-
"karma": 1,
|
|
10
|
-
"created_at": "2026-06-22T22:49:07.833Z",
|
|
11
|
-
"rank": "metic",
|
|
12
|
-
"status": "active",
|
|
13
|
-
"deactivated_at": null,
|
|
14
|
-
"reactivated_at": null,
|
|
15
|
-
"deactivated_reason": null,
|
|
16
|
-
"preferred_disciplines": [
|
|
17
|
-
"engineer"
|
|
18
|
-
],
|
|
19
|
-
"system_role": null,
|
|
20
|
-
"anthropic_email": null,
|
|
21
|
-
"anthropic_user_id": null,
|
|
22
|
-
"monthly_budget_usd": null,
|
|
23
|
-
"box_blocked": false,
|
|
24
|
-
"box_blocked_reason": null,
|
|
25
|
-
"box_blocked_at": null,
|
|
26
|
-
"box_blocked_by": null
|
|
27
|
-
},
|
|
28
|
-
"active_claims": [
|
|
29
|
-
{
|
|
30
|
-
"claim_id": "1845",
|
|
31
|
-
"task_id": "2167",
|
|
32
|
-
"worktree_name": "frontend-redesign-ux-746bdd",
|
|
33
|
-
"claimed_at": "2026-07-10T18:29:41.871Z",
|
|
34
|
-
"head_sha": "7119fa2124f4570fc9502b2f12411cc054a7e4fc",
|
|
35
|
-
"reserved_migration_number": null,
|
|
36
|
-
"release_requested_by": null,
|
|
37
|
-
"release_requested_at": null,
|
|
38
|
-
"release_requested_note": null,
|
|
39
|
-
"title": "Check in the hall preview harness (fixture server + screenshot runbook)",
|
|
40
|
-
"touches": [
|
|
41
|
-
"scripts/hall-preview/server.js",
|
|
42
|
-
"scripts/hall-preview/README.md"
|
|
43
|
-
],
|
|
44
|
-
"priority": 2,
|
|
45
|
-
"credits_reward": 50,
|
|
46
|
-
"version_id": "BONGOS-V1",
|
|
47
|
-
"module_key": null,
|
|
48
|
-
"streak_preview": {
|
|
49
|
-
"current_streak": 1,
|
|
50
|
-
"projected_streak": 1,
|
|
51
|
-
"qualifies": true,
|
|
52
|
-
"reason": "today-already-counted"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
],
|
|
56
|
-
"active_claim": {
|
|
57
|
-
"claim_id": "1845",
|
|
58
|
-
"task_id": "2167",
|
|
59
|
-
"worktree_name": "frontend-redesign-ux-746bdd",
|
|
60
|
-
"claimed_at": "2026-07-10T18:29:41.871Z",
|
|
61
|
-
"head_sha": "7119fa2124f4570fc9502b2f12411cc054a7e4fc",
|
|
62
|
-
"reserved_migration_number": null,
|
|
63
|
-
"release_requested_by": null,
|
|
64
|
-
"release_requested_at": null,
|
|
65
|
-
"release_requested_note": null,
|
|
66
|
-
"title": "Check in the hall preview harness (fixture server + screenshot runbook)",
|
|
67
|
-
"touches": [
|
|
68
|
-
"scripts/hall-preview/server.js",
|
|
69
|
-
"scripts/hall-preview/README.md"
|
|
70
|
-
],
|
|
71
|
-
"priority": 2,
|
|
72
|
-
"credits_reward": 50,
|
|
73
|
-
"version_id": "BONGOS-V1",
|
|
74
|
-
"module_key": null,
|
|
75
|
-
"streak_preview": {
|
|
76
|
-
"current_streak": 1,
|
|
77
|
-
"projected_streak": 1,
|
|
78
|
-
"qualifies": true,
|
|
79
|
-
"reason": "today-already-counted"
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
"est_vs_actual": {
|
|
83
|
-
"median": 0.08,
|
|
84
|
-
"sample_size": 10
|
|
85
|
-
},
|
|
86
|
-
"unlocked": [
|
|
87
|
-
{
|
|
88
|
-
"builder_id": "95",
|
|
89
|
-
"achievement_id": "first-ship",
|
|
90
|
-
"unlocked_at": "2026-06-30T00:26:01.980Z",
|
|
91
|
-
"unlocked_by_task_id": null,
|
|
92
|
-
"name": "First Ship",
|
|
93
|
-
"description": "Ship your first task.",
|
|
94
|
-
"icon": "📦",
|
|
95
|
-
"credit_bonus": 1,
|
|
96
|
-
"sort_order": 10
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"builder_id": "95",
|
|
100
|
-
"achievement_id": "first-claim",
|
|
101
|
-
"unlocked_at": "2026-06-22T23:04:49.435Z",
|
|
102
|
-
"unlocked_by_task_id": null,
|
|
103
|
-
"name": "First Claim",
|
|
104
|
-
"description": "Claim your first task.",
|
|
105
|
-
"icon": "🪙",
|
|
106
|
-
"credit_bonus": 1,
|
|
107
|
-
"sort_order": 20
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"builder_id": "95",
|
|
111
|
-
"achievement_id": "first-parallel-claim",
|
|
112
|
-
"unlocked_at": "2026-06-30T00:26:01.980Z",
|
|
113
|
-
"unlocked_by_task_id": null,
|
|
114
|
-
"name": "First Parallel Claim",
|
|
115
|
-
"description": "Hold two simultaneous claims; ship both successfully.",
|
|
116
|
-
"icon": "⚓",
|
|
117
|
-
"credit_bonus": 2,
|
|
118
|
-
"sort_order": 30
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
"builder_id": "95",
|
|
122
|
-
"achievement_id": "streak-3",
|
|
123
|
-
"unlocked_at": "2026-06-30T00:51:29.738Z",
|
|
124
|
-
"unlocked_by_task_id": "1680",
|
|
125
|
-
"name": "Streak: 3 Nights",
|
|
126
|
-
"description": "Ship a task in 3 consecutive local-time nights (>=15min; cleanup/refactor now counts).",
|
|
127
|
-
"icon": "🔥",
|
|
128
|
-
"credit_bonus": 2,
|
|
129
|
-
"sort_order": 40
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
"builder_id": "95",
|
|
133
|
-
"achievement_id": "gds-shipper",
|
|
134
|
-
"unlocked_at": "2026-06-30T00:26:01.980Z",
|
|
135
|
-
"unlocked_by_task_id": null,
|
|
136
|
-
"name": "GDS Shipper",
|
|
137
|
-
"description": "Ship a task whose touches[] include src/gds/ or scripts/gds/.",
|
|
138
|
-
"icon": "⚙️",
|
|
139
|
-
"credit_bonus": 2,
|
|
140
|
-
"sort_order": 70
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
"builder_id": "95",
|
|
144
|
-
"achievement_id": "breaking-the-100c-bar",
|
|
145
|
-
"unlocked_at": "2026-06-30T00:26:01.980Z",
|
|
146
|
-
"unlocked_by_task_id": null,
|
|
147
|
-
"name": "Breaking the 100c Bar",
|
|
148
|
-
"description": "Cross 100 total credits.",
|
|
149
|
-
"icon": "💯",
|
|
150
|
-
"credit_bonus": 5,
|
|
151
|
-
"sort_order": 80
|
|
152
|
-
}
|
|
153
|
-
],
|
|
154
|
-
"locked_with_progress": [
|
|
155
|
-
{
|
|
156
|
-
"achievement_id": "streak-7",
|
|
157
|
-
"name": "Streak: 7 Nights",
|
|
158
|
-
"description": "Ship a task in 7 consecutive local-time nights (>=15min; cleanup/refactor now counts).",
|
|
159
|
-
"icon": "🌋",
|
|
160
|
-
"progress_text": "track 7 consecutive ship-days"
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
"achievement_id": "art-pipeline-shipper",
|
|
164
|
-
"name": "Art Pipeline Shipper",
|
|
165
|
-
"description": "Ship a task whose touches[] include the art/ pipeline.",
|
|
166
|
-
"icon": "🎨",
|
|
167
|
-
"progress_text": "needs one shipped task touching art/"
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
"achievement_id": "subtractor",
|
|
171
|
-
"name": "Subtractor",
|
|
172
|
-
"description": "Earn the net-negative ship bonus on 3 ships — across your work you have deleted more than you have added.",
|
|
173
|
-
"icon": "🪓",
|
|
174
|
-
"progress_text": "keep building"
|
|
175
|
-
}
|
|
176
|
-
],
|
|
177
|
-
"streak": {
|
|
178
|
-
"current": 1,
|
|
179
|
-
"longest": 5,
|
|
180
|
-
"last_ship_day": "2026-07-10",
|
|
181
|
-
"started_on": "2026-07-10",
|
|
182
|
-
"timezone": "America/New_York",
|
|
183
|
-
"today": "2026-07-10"
|
|
184
|
-
},
|
|
185
|
-
"grades": {
|
|
186
|
-
"recent": [],
|
|
187
|
-
"rolling": {
|
|
188
|
-
"n": 0,
|
|
189
|
-
"avg_score": "0.0",
|
|
190
|
-
"n_passed": 0
|
|
191
|
-
}
|
|
192
|
-
},
|
|
193
|
-
"karma": {
|
|
194
|
-
"recent": [
|
|
195
|
-
{
|
|
196
|
-
"id": "11",
|
|
197
|
-
"delta": 1,
|
|
198
|
-
"reason": "peer_vote_weekly",
|
|
199
|
-
"recorded_at": "2026-07-01T09:26:29.519Z",
|
|
200
|
-
"granted_by": null,
|
|
201
|
-
"granted_by_login": null,
|
|
202
|
-
"granted_by_display_name": null
|
|
203
|
-
}
|
|
204
|
-
],
|
|
205
|
-
"delta_30d": 1
|
|
206
|
-
},
|
|
207
|
-
"onboarding": {
|
|
208
|
-
"current_stage": "graduated",
|
|
209
|
-
"completed_stages": [
|
|
210
|
-
"auth_complete",
|
|
211
|
-
"pick_disciplines",
|
|
212
|
-
"first_start",
|
|
213
|
-
"first_claim",
|
|
214
|
-
"ship_three"
|
|
215
|
-
],
|
|
216
|
-
"started_at": "2026-06-22T22:49:07.839Z",
|
|
217
|
-
"completed_at": "2026-06-23T18:52:07.021Z",
|
|
218
|
-
"progress": {
|
|
219
|
-
"cleared": 5,
|
|
220
|
-
"total": 5
|
|
221
|
-
},
|
|
222
|
-
"stages": [
|
|
223
|
-
{
|
|
224
|
-
"id": "box_connect",
|
|
225
|
-
"source": "box",
|
|
226
|
-
"label": "Connect to thy dev box",
|
|
227
|
-
"hint": "Follow the steps in the welcome scroll above to get Claude running on thy dev box — this ticks itself the moment thou art connected.",
|
|
228
|
-
"detail": "",
|
|
229
|
-
"cleared": true,
|
|
230
|
-
"is_current": false
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
"id": "join_discord",
|
|
234
|
-
"source": "discord",
|
|
235
|
-
"label": "Join the Discord server",
|
|
236
|
-
"hint": "Connect Discord — thou art auto-joined to the city's server and given thy rank.",
|
|
237
|
-
"detail": "",
|
|
238
|
-
"cleared": true,
|
|
239
|
-
"is_current": false
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
"id": "pick_disciplines",
|
|
243
|
-
"source": "stage",
|
|
244
|
-
"label": "Choose thy craft — engineer, artist, or ideator",
|
|
245
|
-
"hint": "Pick the work that calls thee — engineer, artist, ideator, or any mix.",
|
|
246
|
-
"detail": "",
|
|
247
|
-
"cleared": true,
|
|
248
|
-
"is_current": false
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
"id": "cli_setup",
|
|
252
|
-
"source": "cli",
|
|
253
|
-
"label": "Run /builder-setup on thy dev box",
|
|
254
|
-
"hint": "Sign the GDS in on thy dev box with /builder-setup — this ticks itself once thou art signed in.",
|
|
255
|
-
"detail": "",
|
|
256
|
-
"cleared": true,
|
|
257
|
-
"is_current": false
|
|
258
|
-
},
|
|
259
|
-
{
|
|
260
|
-
"id": "ship_three",
|
|
261
|
-
"source": "stage",
|
|
262
|
-
"label": "Ship three works — and rise to Thetes",
|
|
263
|
-
"hint": "Carry three tasks through with /builder-ship — the third makes thee a Thetes.",
|
|
264
|
-
"detail": "3 of 3 works shipped",
|
|
265
|
-
"cleared": true,
|
|
266
|
-
"is_current": false
|
|
267
|
-
}
|
|
268
|
-
],
|
|
269
|
-
"graduated": true
|
|
270
|
-
},
|
|
271
|
-
"discord": {
|
|
272
|
-
"linked": true,
|
|
273
|
-
"configured": true
|
|
274
|
-
},
|
|
275
|
-
"grader_bypass": true,
|
|
276
|
-
"cost": {
|
|
277
|
-
"spend_mtd_usd": 711.03,
|
|
278
|
-
"budget_mtd_usd": null,
|
|
279
|
-
"pct_used": 0,
|
|
280
|
-
"level": "ok"
|
|
281
|
-
},
|
|
282
|
-
"wandering": {
|
|
283
|
-
"rank": "metic",
|
|
284
|
-
"levels": [
|
|
285
|
-
{
|
|
286
|
-
"n": 0,
|
|
287
|
-
"key": "locked",
|
|
288
|
-
"label": "Locked",
|
|
289
|
-
"blurb": "Strictly the claimed task. Off-task notes are filed silently, never raised.",
|
|
290
|
-
"allowed": true
|
|
291
|
-
},
|
|
292
|
-
{
|
|
293
|
-
"n": 1,
|
|
294
|
-
"key": "focused",
|
|
295
|
-
"label": "Focused",
|
|
296
|
-
"blurb": "On task, full in-task initiative; at most one captured follow-up at the end.",
|
|
297
|
-
"allowed": true
|
|
298
|
-
},
|
|
299
|
-
{
|
|
300
|
-
"n": 2,
|
|
301
|
-
"key": "balanced",
|
|
302
|
-
"label": "Balanced",
|
|
303
|
-
"blurb": "May surface a high-value tangent mid-task as \"capture or pursue?\" — your call.",
|
|
304
|
-
"allowed": true
|
|
305
|
-
},
|
|
306
|
-
{
|
|
307
|
-
"n": 3,
|
|
308
|
-
"key": "exploratory",
|
|
309
|
-
"label": "Exploratory",
|
|
310
|
-
"blurb": "A thinking partner — actively surfaces adjacent work and investigations.",
|
|
311
|
-
"allowed": true
|
|
312
|
-
}
|
|
313
|
-
],
|
|
314
|
-
"default_level": 2,
|
|
315
|
-
"default_key": "balanced",
|
|
316
|
-
"max_level": 3,
|
|
317
|
-
"max_key": "exploratory",
|
|
318
|
-
"override_level": null,
|
|
319
|
-
"effective_level": 2,
|
|
320
|
-
"effective_key": "balanced",
|
|
321
|
-
"effective_label": "Balanced",
|
|
322
|
-
"contract": "Wandering: Balanced. Stay anchored to your claim, but if you hit a genuinely high-value or blocking tangent you may surface it briefly and ask \"capture or pursue?\" — leave the call to the user. Note anomalies as observations; don't rabbit-hole.",
|
|
323
|
-
"inject": false
|
|
324
|
-
},
|
|
325
|
-
"interaction": {
|
|
326
|
-
"fields": [
|
|
327
|
-
{
|
|
328
|
-
"field": "technical_level",
|
|
329
|
-
"label": "Technical level",
|
|
330
|
-
"blurb": "How much software-engineering vocabulary to assume.",
|
|
331
|
-
"default_value": "non_technical",
|
|
332
|
-
"values": [
|
|
333
|
-
{
|
|
334
|
-
"value": "non_technical",
|
|
335
|
-
"label": "Non-technical (default)"
|
|
336
|
-
},
|
|
337
|
-
{
|
|
338
|
-
"value": "mixed",
|
|
339
|
-
"label": "Some technical background"
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
"value": "engineer",
|
|
343
|
-
"label": "Engineer"
|
|
344
|
-
}
|
|
345
|
-
]
|
|
346
|
-
},
|
|
347
|
-
{
|
|
348
|
-
"field": "toolchain_familiarity",
|
|
349
|
-
"label": "Local-toolchain familiarity",
|
|
350
|
-
"blurb": "Whether local dev tools (package managers, ports, env vars) need step-by-step help.",
|
|
351
|
-
"default_value": "new",
|
|
352
|
-
"values": [
|
|
353
|
-
{
|
|
354
|
-
"value": "new",
|
|
355
|
-
"label": "New to local tooling (default)"
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
"value": "comfortable",
|
|
359
|
-
"label": "Comfortable with local tooling"
|
|
360
|
-
}
|
|
361
|
-
]
|
|
362
|
-
},
|
|
363
|
-
{
|
|
364
|
-
"field": "verbosity",
|
|
365
|
-
"label": "Reply length",
|
|
366
|
-
"blurb": "How much prose to return by default.",
|
|
367
|
-
"default_value": "concise",
|
|
368
|
-
"values": [
|
|
369
|
-
{
|
|
370
|
-
"value": "concise",
|
|
371
|
-
"label": "Concise (default)"
|
|
372
|
-
},
|
|
373
|
-
{
|
|
374
|
-
"value": "detailed",
|
|
375
|
-
"label": "Detailed"
|
|
376
|
-
}
|
|
377
|
-
]
|
|
378
|
-
}
|
|
379
|
-
],
|
|
380
|
-
"stored": {},
|
|
381
|
-
"effective": {
|
|
382
|
-
"technical_level": "non_technical",
|
|
383
|
-
"toolchain_familiarity": "new",
|
|
384
|
-
"verbosity": "concise"
|
|
385
|
-
},
|
|
386
|
-
"contract": "",
|
|
387
|
-
"inject": false
|
|
388
|
-
},
|
|
389
|
-
"model_allocation": {
|
|
390
|
-
"slots": [
|
|
391
|
-
{
|
|
392
|
-
"slot": "main",
|
|
393
|
-
"label": "Main interactive session",
|
|
394
|
-
"blurb": "The session the builder sits in front of.",
|
|
395
|
-
"code_default": "opus",
|
|
396
|
-
"tiers": [
|
|
397
|
-
"haiku",
|
|
398
|
-
"sonnet",
|
|
399
|
-
"opus",
|
|
400
|
-
"fable"
|
|
401
|
-
]
|
|
402
|
-
},
|
|
403
|
-
{
|
|
404
|
-
"slot": "subagentDefault",
|
|
405
|
-
"label": "Subagents (default)",
|
|
406
|
-
"blurb": "Research, audits, code review, design, code that ships, parallel build sessions.",
|
|
407
|
-
"code_default": "opus",
|
|
408
|
-
"tiers": [
|
|
409
|
-
"haiku",
|
|
410
|
-
"sonnet",
|
|
411
|
-
"opus",
|
|
412
|
-
"fable"
|
|
413
|
-
]
|
|
414
|
-
},
|
|
415
|
-
{
|
|
416
|
-
"slot": "subagentRoutine",
|
|
417
|
-
"label": "Subagents (routine plumbing)",
|
|
418
|
-
"blurb": "Mechanical known-path GDS/DB ops: list, fetch-by-id, log a cost row, read a known file.",
|
|
419
|
-
"code_default": "haiku",
|
|
420
|
-
"tiers": [
|
|
421
|
-
"haiku",
|
|
422
|
-
"sonnet",
|
|
423
|
-
"opus",
|
|
424
|
-
"fable"
|
|
425
|
-
]
|
|
426
|
-
}
|
|
427
|
-
],
|
|
428
|
-
"allowed_tiers": [
|
|
429
|
-
"haiku",
|
|
430
|
-
"sonnet",
|
|
431
|
-
"opus",
|
|
432
|
-
"fable"
|
|
433
|
-
],
|
|
434
|
-
"code_defaults": {
|
|
435
|
-
"main": "opus",
|
|
436
|
-
"subagentDefault": "opus",
|
|
437
|
-
"subagentRoutine": "haiku"
|
|
438
|
-
},
|
|
439
|
-
"instance_default": {
|
|
440
|
-
"main": "opus",
|
|
441
|
-
"subagentDefault": "opus",
|
|
442
|
-
"subagentRoutine": "haiku"
|
|
443
|
-
},
|
|
444
|
-
"override": {},
|
|
445
|
-
"effective": {
|
|
446
|
-
"main": "opus",
|
|
447
|
-
"subagentDefault": "opus",
|
|
448
|
-
"subagentRoutine": "haiku"
|
|
449
|
-
},
|
|
450
|
-
"contract": "Model allocation — main session: opus; subagents default: opus, routine plumbing: haiku. Set the Agent `model` param explicitly per this allocation."
|
|
451
|
-
},
|
|
452
|
-
"render": {
|
|
453
|
-
"widgets_enabled": false,
|
|
454
|
-
"default_enabled": true,
|
|
455
|
-
"override": false
|
|
456
|
-
},
|
|
457
|
-
"needs": {
|
|
458
|
-
"items": [
|
|
459
|
-
{
|
|
460
|
-
"id": "art_key",
|
|
461
|
-
"title": "Image-generation key",
|
|
462
|
-
"what": "The art pipeline draws your tiles and sprites with Google AI Studio (Gemini).",
|
|
463
|
-
"learn_more_url": "https://aistudio.google.com/app/apikey",
|
|
464
|
-
"state": "action_needed",
|
|
465
|
-
"severity": "action",
|
|
466
|
-
"message": "Your free art coverage has ended, so image generation now runs on your own key (you pay only for what you make). Add it to keep making art.",
|
|
467
|
-
"action": {
|
|
468
|
-
"label": "Add your key",
|
|
469
|
-
"href": "/settings#art-key"
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
],
|
|
473
|
-
"action_needed_count": 1,
|
|
474
|
-
"has_action_needed": true
|
|
475
|
-
}
|
|
476
|
-
}
|