@bongos/core 1.23.21 → 1.24.1
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 +983 -428
- package/.claude/skills/blocker-review/SKILL.md +9 -1
- package/.claude/skills/blocker-solve/SKILL.md +1 -1
- package/.claude/skills/builder-claim/SKILL.md +1 -1
- package/.claude/skills/builder-reauth/SKILL.md +1 -1
- package/.claude/skills/builder-redteam/SKILL.md +1 -1
- package/.claude/skills/builder-sequence/SKILL.md +1 -1
- package/.claude/skills/builder-setup/SKILL.md +1 -1
- package/.claude/skills/builder-ship/SKILL.md +1 -1
- package/.claude/skills/collab-review/SKILL.md +5 -2
- package/.claude/skills/design/SKILL.md +1 -1
- package/.claude/skills/goal-create/SKILL.md +6 -3
- package/.claude/skills/grade-recover/SKILL.md +1 -1
- package/.claude/skills/merge-mode/SKILL.md +1 -1
- package/.claude/skills/owner-review/SKILL.md +1 -1
- package/.claude/skills/planning-session/SKILL.md +11 -11
- package/.claude/skills/read-session-export/SKILL.md +1 -1
- package/.claude/skills/recall/SKILL.md +1 -1
- package/.claude/skills/scan-before-install/SKILL.md +1 -1
- package/.claude/skills/session-handoff/SKILL.md +1 -1
- package/.claude/skills/strand-fix/SKILL.md +13 -0
- package/.claude/skills/worktree-clean/SKILL.md +1 -1
- package/AGENTS.md +15 -0
- package/GEMINI.md +5 -0
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +94 -0
- package/clients/bongos-client/index.cjs +94 -0
- package/clients/bongos-client/index.d.ts +154 -4
- package/clients/bongos-client/index.mjs +94 -0
- package/docs/adr/0054-session-token-reward-cost-plus.md +3 -1
- package/docs/adr/0055-server-mediated-branch-publish.md +1 -1
- package/docs/adr/0385-money-lives-with-a-processor-credits-stay-a-project-meter.md +87 -0
- package/docs/adr/0386-the-funding-wall-is-a-per-project-rule-claim-time-hold-by-default.md +37 -0
- package/docs/adr/0387-two-ledgers-credits-measure-work-money-stays-with-the-processor.md +39 -0
- package/docs/adr/0388-a-module-sale-is-split-by-the-project-the-buyer-pays-the-platform-fee.md +42 -0
- package/docs/adr/0392-ai-generation-runs-on-a-processor-held-balance-and-the-builders-own-keys.md +33 -0
- package/docs/adr/0393-a-platform-account-is-a-person-and-github-is-one-way-in.md +37 -0
- package/docs/adr/0394-market-watch-searches-through-the-messages-api-on-the-projects-key-and-runs-from-its-own-poller.md +102 -0
- package/docs/adr/0395-a-task-says-what-it-needs-and-lists-show-only-what-you-can-do.md +36 -0
- package/docs/adr/0396-google-sign-in-a-stand-in-login-and-a-browser-approved-cli-sign-in.md +41 -0
- package/docs/adr/README.md +10 -1
- package/docs/api/openapi.json +8619 -5885
- package/docs/api-reference.md +68 -9
- package/docs/architecture.md +37 -1
- package/docs/canonical-permissions.md +1 -1
- package/docs/copy-inventory.md +420 -337
- package/docs/copy-registry.json +1321 -500
- package/docs/file-map.md +4 -0
- package/docs/module-api-changelog.md +7 -0
- package/docs/onboarding/diagrams/03-drachmae-karma.mmd +3 -3
- package/docs/onboarding/diagrams/README.md +1 -1
- package/docs/onboarding/drachmae-and-karma.md +15 -15
- package/docs/onboarding/primer.md +2 -2
- package/docs/page-inventory.json +55 -6
- package/docs/page-readings.json +1185 -1011
- package/docs/recipes/google-sign-in.md +60 -0
- package/docs/recipes/ops-gotchas.md +1 -1
- package/migrations/core_282_builders_lower_login_idx.sql +33 -0
- package/migrations/core_283_claimable_ignores_page_markers.sql +53 -0
- package/migrations/core_283_payout_approvals.sql +183 -0
- package/migrations/core_284_payout_gates.sql +179 -0
- package/migrations/core_285_task_needs.sql +74 -0
- package/modules/ai-studio/CLAUDE.md +15 -0
- package/modules/ai-studio/billing.js +67 -0
- package/modules/ai-studio/context.js +29 -0
- package/modules/ai-studio/db.js +172 -0
- package/modules/ai-studio/gemini.js +75 -0
- package/modules/ai-studio/generate.js +119 -0
- package/modules/ai-studio/keys.js +73 -0
- package/modules/ai-studio/migrations/ai_studio_001_keys.sql +22 -0
- package/modules/ai-studio/migrations/ai_studio_002_ledger.sql +48 -0
- package/modules/ai-studio/migrations/ai_studio_003_requests.sql +55 -0
- package/modules/ai-studio/module.json +26 -0
- package/modules/ai-studio/openrouter.js +90 -0
- package/modules/ai-studio/payments.js +105 -0
- package/modules/ai-studio/pricing.js +92 -0
- package/modules/ai-studio/routes/ai-studio.js +252 -0
- package/modules/ai-studio/studio.js +121 -0
- package/modules/autonomy/fence.js +64 -1
- package/modules/builder-settings/builder-needs.js +27 -1
- package/modules/copy-desk/routes/copy-desk.js +5 -0
- package/modules/economy/achievements.js +22 -10
- package/modules/economy/cost-classify.js +9 -0
- package/modules/economy/cost-write-guard.js +52 -0
- package/modules/economy/cost.js +2 -1
- package/modules/economy/credits.js +18 -15
- package/modules/economy/goal-reward.js +161 -0
- package/modules/economy/reward.js +4 -0
- package/modules/economy/routes/cost.js +33 -7
- package/modules/government/catalog.js +6 -0
- package/modules/government/db.js +108 -0
- package/modules/government/docket.js +36 -0
- package/modules/government/migrations/government_035_payout_approve.sql +29 -0
- package/modules/government/pollers/board-expiry.js +108 -20
- package/modules/government/protected-surfaces.json +1 -0
- package/modules/government/routes/government.js +50 -18
- package/modules/government/routing.js +39 -5
- package/modules/government/waiting.js +74 -0
- package/modules/grading/grader-subagent.js +30 -11
- package/modules/hall-ui/public/ai-studio-lib.js +268 -0
- package/modules/hall-ui/public/ai-studio.css +193 -0
- package/modules/hall-ui/public/ai-studio.html +98 -0
- package/modules/hall-ui/public/ai-studio.js +556 -0
- package/modules/hall-ui/public/ai-studio.states.json +94 -0
- package/modules/hall-ui/public/blockers-by-person.js +156 -0
- package/modules/hall-ui/public/blockers-lib.js +15 -1
- package/modules/hall-ui/public/blockers.html +8 -0
- package/modules/hall-ui/public/blockers.js +1 -1
- package/modules/hall-ui/public/city.html +15 -15
- package/modules/hall-ui/public/claim-action.js +3 -0
- package/modules/hall-ui/public/collab.html +12 -0
- package/modules/hall-ui/public/craft-mode.js +4 -1
- package/modules/hall-ui/public/criterion-uat-ui.js +4 -1
- package/modules/hall-ui/public/drachmae.html +1 -1
- package/modules/hall-ui/public/genesis/r5-life-1-primordial-sea.jpg +0 -0
- package/modules/hall-ui/public/genesis/r5-life-2-first-cells-cut.webp +0 -0
- package/modules/hall-ui/public/genesis/r5-life-2-first-cells.jpg +0 -0
- package/modules/hall-ui/public/genesis/r5-life-3-genome-cut.webp +0 -0
- package/modules/hall-ui/public/genesis/r5-life-3-genome.jpg +0 -0
- package/modules/hall-ui/public/genesis/r5-life-4-membrane-cut.webp +0 -0
- package/modules/hall-ui/public/genesis/r5-life-4-membrane.jpg +0 -0
- package/modules/hall-ui/public/genesis/r5-life-5-nervous-system-cut.webp +0 -0
- package/modules/hall-ui/public/genesis/r5-life-5-nervous-system.jpg +0 -0
- package/modules/hall-ui/public/goal-inbox.js +1 -1
- package/modules/hall-ui/public/goals-render.js +4 -0
- package/modules/hall-ui/public/goals.html +8 -0
- package/modules/hall-ui/public/gov-living.js +6 -2
- package/modules/hall-ui/public/hall-ask.css +5 -0
- package/modules/hall-ui/public/hall-ask.js +39 -3
- package/modules/hall-ui/public/notes-panel.css +20 -0
- package/modules/hall-ui/public/notes-panel.js +146 -0
- package/modules/hall-ui/public/project-settings.html +1 -1
- package/modules/hall-ui/public/project-settings.js +7 -5
- package/modules/hall-ui/public/settings-ai-keys.js +124 -0
- package/modules/hall-ui/public/settings.html +15 -0
- package/modules/hall-ui/public/street-deck.js +12 -3
- package/modules/hall-ui/public/studio.css +90 -8
- package/modules/hall-ui/public/studio.html +39 -10
- package/modules/hall-ui/public/studio.js +148 -18
- package/modules/hall-ui/public/task.html +2 -0
- package/modules/hall-ui/public/task.js +4 -0
- package/modules/hall-ui/public/tweak-editor.js +12 -3
- package/modules/hall-ui/public/welcome-boot.css +42 -6
- package/modules/hall-ui/public/welcome-boot.js +20 -6
- package/modules/hall-ui/public/work.js +20 -0
- package/modules/hall-ui/records/ai-studio.md +36 -0
- package/modules/hall-ui/records/blockers-people.md +24 -0
- package/modules/lifecycle/db-analytics.js +10 -3
- package/modules/lifecycle/db-claims.js +32 -4
- package/modules/lifecycle/db-goals.js +48 -18
- package/modules/lifecycle/db-shared.js +9 -0
- package/modules/lifecycle/db-tasks.js +15 -6
- package/modules/lifecycle/db-versions.js +21 -8
- package/modules/lifecycle/done-when.js +23 -1
- package/modules/lifecycle/lifecycle.js +5 -0
- package/modules/lifecycle/migrations/lifecycle_017_notes.sql +46 -0
- package/modules/lifecycle/module.json +2 -1
- package/modules/lifecycle/notes.js +219 -0
- package/modules/lifecycle/page-notice.js +124 -0
- package/modules/lifecycle/page-tweak-artist.js +18 -1
- package/modules/lifecycle/publish-reconciler.js +67 -20
- package/modules/lifecycle/routes/claims.js +5 -2
- package/modules/lifecycle/routes/goals.js +3 -1
- package/modules/lifecycle/routes/notes.js +91 -0
- package/modules/lifecycle/routes/project-settings.js +43 -35
- package/modules/lifecycle/routes/task-route-helpers.js +21 -0
- package/modules/lifecycle/routes/task-write-routes.js +21 -3
- package/modules/lifecycle/routes/tasks.js +12 -12
- package/modules/lifecycle/ship-assurance.js +4 -1
- package/modules/lifecycle/ship-card.js +8 -2
- package/modules/lifecycle/task-needs-gate.js +70 -0
- package/modules/market-watch/CLAUDE.md +15 -0
- package/modules/market-watch/db.js +340 -0
- package/modules/market-watch/key.js +58 -0
- package/modules/market-watch/migrations/market_watch_001_tables.sql +249 -0
- package/modules/market-watch/migrations/market_watch_002_run.sql +46 -0
- package/modules/market-watch/module.json +26 -0
- package/modules/market-watch/pollers/hub-seed.js +54 -0
- package/modules/market-watch/pollers/weekly-run.js +100 -0
- package/modules/market-watch/research.js +350 -0
- package/modules/market-watch/run.js +245 -0
- package/modules/market-watch/seed/market-data.json +38 -0
- package/modules/market-watch/seed/partners-data.json +497 -0
- package/modules/market-watch/seed.js +252 -0
- package/modules/market-watch/store.js +230 -0
- package/modules/memory/routes/memory.js +14 -2
- package/modules/memory/routes/search.js +8 -2
- package/modules/onboarding/howto-moments.js +8 -1
- package/modules/platform-identity/account-logins.js +192 -0
- package/modules/platform-identity/migrations/platform_identity_034_account_logins.sql +96 -0
- package/modules/platform-identity/platform-identity.js +5 -4
- package/modules/platform-identity/routes/my-projects.js +6 -0
- package/modules/platform-identity/routes/profile.js +18 -0
- package/modules/platform-identity/routes/public-profile.js +10 -1
- package/modules/platform-identity/routes/sso.js +26 -1
- package/modules/platform-identity/tests/platform-identity.mjs +2 -1
- package/modules/provisioning/credential-preflight.js +13 -3
- package/modules/provisioning/pollers/app-liveness.js +25 -5
- package/modules/provisioning/routes/provisioning.js +1 -1
- package/modules/provisioning/starter-bundles.js +8 -2
- package/modules/public-landing/public/account.html +10 -2
- package/modules/public-landing/public/assets/world/r2-bongos-chrome-b.jpg +0 -0
- package/modules/public-landing/public/assets/world/r2-bongos-chrome-b.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r2-bongos-chrome-b.webp +0 -0
- package/modules/public-landing/public/assets/world/r2-bongos-chrome-b.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r2-chrome-blob-one-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r2-chrome-blob-one-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r2-chrome-blob-one.jpg +0 -0
- package/modules/public-landing/public/assets/world/r2-chrome-blob-one.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r2-chrome-blob-one.webp +0 -0
- package/modules/public-landing/public/assets/world/r2-chrome-blob-one.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r2-chrome-blobs-set.jpg +0 -0
- package/modules/public-landing/public/assets/world/r2-chrome-blobs-set.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r2-chrome-blobs-set.webp +0 -0
- package/modules/public-landing/public/assets/world/r2-chrome-blobs-set.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r3-frost-bead-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r3-frost-bead-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r3-frost-pair-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r3-frost-pair-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r3-gold-blob-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r3-gold-blob-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r3-gold-pair-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r3-gold-pair-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r3-obsidian-blob-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r3-obsidian-blob-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r3-obsidian-pair-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r3-obsidian-pair-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r3-space-nebula.jpg +0 -0
- package/modules/public-landing/public/assets/world/r3-space-nebula.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r4-card-chrome.jpg +0 -0
- package/modules/public-landing/public/assets/world/r4-card-chrome.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r4-card-nebula.jpg +0 -0
- package/modules/public-landing/public/assets/world/r4-card-nebula.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r5-life-1-primordial-sea.jpg +0 -0
- package/modules/public-landing/public/assets/world/r5-life-1-primordial-sea.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r5-life-2-first-cells-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r5-life-2-first-cells-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r5-life-2-first-cells.jpg +0 -0
- package/modules/public-landing/public/assets/world/r5-life-2-first-cells.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r5-life-3-genome-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r5-life-3-genome-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r5-life-3-genome.jpg +0 -0
- package/modules/public-landing/public/assets/world/r5-life-3-genome.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r5-life-4-membrane-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r5-life-4-membrane-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r5-life-4-membrane.jpg +0 -0
- package/modules/public-landing/public/assets/world/r5-life-4-membrane.jpg.json +1 -1
- package/modules/public-landing/public/assets/world/r5-life-5-nervous-system-cut.webp +0 -0
- package/modules/public-landing/public/assets/world/r5-life-5-nervous-system-cut.webp.json +1 -1
- package/modules/public-landing/public/assets/world/r5-life-5-nervous-system.jpg +0 -0
- package/modules/public-landing/public/assets/world/r5-life-5-nervous-system.jpg.json +1 -1
- package/modules/public-landing/public/community.html +1 -1
- package/modules/public-landing/public/connections.html +2 -2
- package/modules/public-landing/public/guild.html +1 -1
- package/modules/public-landing/public/invitations.html +2 -2
- package/modules/public-landing/public/projects.html +5 -5
- package/modules/raise/views/nda.html +2 -0
- package/modules/specialities/db.js +32 -1
- package/modules/specialities/routes/specialities.js +10 -6
- package/modules/status-ui/public/index.html +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +286 -0
- package/scripts/bongos/autobongos-tweak-lane.js +46 -1
- package/scripts/bongos/backfill-subagent-rewards.js +2 -2
- package/scripts/bongos/claim.js +22 -1
- package/scripts/bongos/db-backup-nightly.sh +29 -0
- package/scripts/bongos/deploy-divergence.js +7 -0
- package/scripts/bongos/doc-cli-guard.js +6 -0
- package/scripts/bongos/fitness.js +3 -2
- package/scripts/bongos/gen-diagrams.js +3 -3
- package/scripts/bongos/lib.sh +4 -5
- package/scripts/bongos/migration-namespace.js +13 -1
- package/scripts/bongos/plain-cards.js +4 -0
- package/scripts/bongos/provision-github-setup.js +3 -1
- package/scripts/bongos/provision-units.js +6 -1
- package/scripts/bongos/publish-manifest.js +4 -0
- package/scripts/bongos/release.js +2 -0
- package/scripts/bongos/run-unit-tests.js +268 -82
- package/scripts/bongos/seed-tasks.example.json +56 -0
- package/scripts/bongos/seed-tasks.js +222 -0
- package/scripts/bongos/seed-verify-criteria.js +1 -2
- package/scripts/bongos/ship-finish.js +2 -0
- package/scripts/bongos/ship-resume.js +2 -0
- package/scripts/bongos/strand-lease.js +250 -0
- package/scripts/bongos/strand-watch.js +129 -12
- package/scripts/bongos/version-literal-guard.js +2 -2
- package/scripts/discord/post.js +4 -3
- package/scripts/gds/seed-tasks.js +7 -0
- package/scripts/gds/{build-bongos.js → strand-lease.js} +3 -3
- package/scripts/hall-preview/server.js +21 -0
- package/src/bongos/auth-config.js +29 -1
- package/src/bongos/auth-discord.js +3 -3
- package/src/bongos/auth-github.js +3 -6
- package/src/bongos/auth-google.js +217 -0
- package/src/bongos/device-approval.js +140 -0
- package/src/bongos/llm-pricing.js +17 -1
- package/src/bongos/metrics.js +48 -2
- package/src/bongos/middleware/rate-limit.js +30 -11
- package/src/bongos/module-scope-map.js +16 -1
- package/src/bongos/optimizer.js +15 -1
- package/src/bongos/payout-approvals.js +342 -0
- package/src/bongos/payout-gates.js +364 -0
- package/src/bongos/prelaunch-gate.js +7 -9
- package/src/bongos/prelaunch-switch.js +20 -0
- package/src/bongos/route-rank-check.js +3 -0
- package/src/bongos/routes/auth-google.js +246 -0
- package/src/bongos/routes/auth.js +38 -1
- package/src/bongos/routes/backup.js +33 -9
- package/src/bongos/routes/builders.js +57 -30
- package/src/bongos/routes/github.js +9 -0
- package/src/bongos/routes/me.js +18 -0
- package/src/bongos/routes/my-payouts.js +133 -0
- package/src/bongos/routes/payout-approvals.js +312 -0
- package/src/bongos/routes/payout-gates.js +179 -0
- package/src/bongos/routes.js +15 -1
- package/src/bongos/secret-box.js +18 -3
- package/src/bongos/serve-internal.js +47 -19
- package/src/bongos/sign-in-pages.js +138 -0
- package/src/bongos/task-needs.js +146 -0
- package/src/bongos-downloads.js +18 -1
- package/src/instance-config.js +28 -0
- package/src/module-api.js +14 -1
- package/src/platform-server.js +27 -1
- package/tests/account_logins.mjs +326 -0
- package/tests/account_logins_db.mjs +161 -0
- package/tests/ai_studio_billing.mjs +253 -0
- package/tests/ai_studio_generate.mjs +282 -0
- package/tests/ai_studio_keys.mjs +159 -0
- package/tests/ai_studio_requests.mjs +319 -0
- package/tests/auth_backchannel_logout_route.mjs +201 -0
- package/tests/auto_satisfy_criteria.mjs +10 -1
- package/tests/autobongos_tweak_lane.mjs +144 -0
- package/tests/autobongos_tweak_pin_identity.mjs +137 -0
- package/tests/backfill_subagent_rewards.mjs +17 -1
- package/tests/backup_trigger_lock.mjs +119 -0
- package/tests/batched_writes_parity.mjs +340 -0
- package/tests/blockers_people.mjs +198 -0
- package/tests/bounded_rate_maps.mjs +184 -0
- package/tests/claimable_blocker_status.mjs +1 -1
- package/tests/claims_batch_routes.mjs +421 -0
- package/tests/conductor_main_e2e.mjs +4 -0
- package/tests/config_read_cache.mjs +171 -0
- package/tests/copy_desk_page_editor.mjs +12 -0
- package/tests/cost_write_guard.mjs +200 -0
- package/tests/craft_achievements.mjs +33 -10
- package/tests/criterion_goal_attach.mjs +1 -1
- package/tests/db_backup_nightly.mjs +73 -1
- package/tests/deploy_divergence_line.mjs +7 -0
- package/tests/effective_visibility_predicate.mjs +12 -0
- package/tests/fitness.mjs +19 -0
- package/tests/fixtures/per-row-loops-legacy.cjs +245 -0
- package/tests/fixtures/seed-tasks/bongos-v1-idea-routing.json +256 -0
- package/tests/fixtures/seed-tasks/bv1-profiles.json +592 -0
- package/tests/fixtures/seed-tasks/bv2-ideator-surface.json +373 -0
- package/tests/fixtures/seed-tasks/fake-api.mjs +80 -0
- package/tests/github_one_trip.mjs +34 -0
- package/tests/github_repo_visibility.mjs +20 -0
- package/tests/goal_achievement.mjs +30 -1
- package/tests/goal_achievement_reward.mjs +205 -0
- package/tests/goal_archive_disposition.mjs +5 -5
- package/tests/goal_sort_staleness.mjs +2 -1
- package/tests/goal_tier.mjs +11 -1
- package/tests/google_fonts_nonblocking.mjs +84 -0
- package/tests/google_sign_in.mjs +401 -0
- package/tests/government_board_expiry.mjs +94 -0
- package/tests/government_protected_surfaces.mjs +1 -1
- package/tests/government_routes.mjs +146 -23
- package/tests/grader.mjs +31 -0
- package/tests/hall_ai_studio.mjs +347 -0
- package/tests/hall_city.mjs +8 -0
- package/tests/hall_page_gate_map.mjs +3 -0
- package/tests/hall_studio_home.mjs +61 -2
- package/tests/home_attention_cards.mjs +1 -1
- package/tests/hook_shell_tools.mjs +8 -0
- package/tests/hooks_drain.mjs +1 -1
- package/tests/host_topology_skips.mjs +2 -0
- package/tests/howto_moments.mjs +17 -0
- package/tests/human_signal.mjs +141 -0
- package/tests/install_script_reader.mjs +51 -0
- package/tests/integration_fixture_ids.mjs +82 -0
- package/tests/invite_expiry_db.mjs +13 -1
- package/tests/lib_sh_resolution.mjs +0 -4
- package/tests/market_watch_data.mjs +244 -0
- package/tests/market_watch_data_db.mjs +308 -0
- package/tests/market_watch_module.mjs +114 -0
- package/tests/market_watch_run.mjs +503 -0
- package/tests/metrics.mjs +124 -0
- package/tests/migration_namespace.mjs +14 -0
- package/tests/module_api.mjs +2 -0
- package/tests/module_loader.mjs +1 -1
- package/tests/module_skills_hook.mjs +69 -0
- package/tests/notes.mjs +182 -0
- package/tests/own_scope_guard.mjs +5 -0
- package/tests/page_tweak_marker_sql.mjs +76 -0
- package/tests/page_tweak_no_block.mjs +135 -0
- package/tests/page_tweak_notice.mjs +103 -0
- package/tests/payout_approvals.mjs +253 -0
- package/tests/payout_approvals_db.mjs +106 -0
- package/tests/payout_gates.mjs +322 -0
- package/tests/payout_gates_db.mjs +113 -0
- package/tests/planning_session_skill.mjs +13 -3
- package/tests/project_settings_page.mjs +29 -5
- package/tests/project_settings_spend_cap_route.mjs +235 -0
- package/tests/promotion_sweep.mjs +29 -1
- package/tests/provision.mjs +3 -2
- package/tests/provisioning_app_status.mjs +18 -0
- package/tests/provisioning_credential_preflight.mjs +53 -0
- package/tests/provisioning_env_manifest_edit_delete.mjs +223 -0
- package/tests/public_landing_projects.mjs +37 -0
- package/tests/publish_reconciler_overlap.mjs +60 -0
- package/tests/rank_change_broadcast_port.mjs +151 -0
- package/tests/seed_tasks.mjs +176 -0
- package/tests/seed_verify_criteria.mjs +2 -6
- package/tests/session_start_freshness.mjs +66 -1
- package/tests/shell_hooks.mjs +209 -0
- package/tests/ship_assurance.mjs +28 -0
- package/tests/ship_card.mjs +20 -5
- package/tests/site_classified_once.mjs +142 -0
- package/tests/speciality_db_shape.mjs +23 -0
- package/tests/speciality_session_skills.mjs +48 -2
- package/tests/strand_lease.mjs +249 -0
- package/tests/strand_watch.mjs +58 -0
- package/tests/task_criteria_routes.mjs +275 -0
- package/tests/task_criteria_unlink_db.mjs +123 -0
- package/tests/task_needs.mjs +233 -0
- package/tests/task_needs_db.mjs +110 -0
- package/tests/unit_runner_serial.mjs +266 -43
- package/tests/version_close_route.mjs +1 -1
- package/tests/version_literals.mjs +5 -7
- package/tests/welcome_boot.mjs +16 -5
- package/tests/welcome_boot_browser.mjs +36 -4
- package/docs/recipes/bongos-cli-release.md +0 -66
- package/scripts/bongos/backfill-disciplines.js +0 -144
- package/scripts/bongos/backfill-session-earnings.js +0 -123
- package/scripts/bongos/backfill-session-types.js +0 -87
- package/scripts/bongos/build-bongos.js +0 -94
- package/scripts/bongos/cleanup-orphans.js +0 -74
- package/scripts/bongos/seed-bongos-v1-idea-routing-tasks.js +0 -152
- package/scripts/bongos/seed-bv1-profiles-tasks.js +0 -135
- package/scripts/bongos/seed-bv2-ideator-surface-tasks.js +0 -390
- package/scripts/bongos/smoke-batch-claim.sh +0 -238
- package/scripts/bongos/smoke-batch-release.sh +0 -316
- package/scripts/bongos/smoke-claim-consistency.sh +0 -222
- package/scripts/bongos/smoke-dependencies.sh +0 -143
- package/scripts/gds/backfill-disciplines.js +0 -7
- package/scripts/gds/backfill-session-earnings.js +0 -7
- package/scripts/gds/backfill-session-types.js +0 -7
- package/scripts/gds/cleanup-orphans.js +0 -7
- package/scripts/gds/seed-bongos-v1-idea-routing-tasks.js +0 -6
- package/scripts/gds/seed-bv1-profiles-tasks.js +0 -6
- package/scripts/gds/seed-bv2-ideator-surface-tasks.js +0 -6
- package/scripts/gds/smoke-batch-claim.sh +0 -8
- package/scripts/gds/smoke-batch-release.sh +0 -8
- package/scripts/gds/smoke-claim-consistency.sh +0 -8
- package/scripts/gds/smoke-dependencies.sh +0 -8
- package/tests/smoke_dependencies_witness.mjs +0 -46
|
@@ -0,0 +1,592 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Historical seed, already run: goal 1000045 (BONGOS-V1), from seed-bv1-profiles-tasks.js; spec docs/specs/bongos-v1-public-builder-profiles.md. Its positional Cn refs predate multi-goal versions (learning 1000188), hence allow_positional_criteria.. Kept as the equivalence fixture for tests/seed_tasks.mjs (task 1004979).",
|
|
3
|
+
"version_id": "BONGOS-V1",
|
|
4
|
+
"goal_id": 1000045,
|
|
5
|
+
"source": "planning-session",
|
|
6
|
+
"source_ref_prefix": "bv1-profiles",
|
|
7
|
+
"allow_positional_criteria": true,
|
|
8
|
+
"tasks": [
|
|
9
|
+
{
|
|
10
|
+
"ref": "R01",
|
|
11
|
+
"title": "R01 · Design profile↔cross-project rollup join + consent model",
|
|
12
|
+
"description": "Needs-exploration: how the public profile reads the platform-identity rollup (listScoutingRollup / platform_identity_builder_project_activity), public-by-default, and where the hide flag (C2) lives. Output an ADR + sub-tasks. See docs/specs/bongos-v1-public-builder-profiles.md.",
|
|
13
|
+
"kind": "spike",
|
|
14
|
+
"discipline": "engineer",
|
|
15
|
+
"priority": 5,
|
|
16
|
+
"est_minutes": 180,
|
|
17
|
+
"criterion_ids": [
|
|
18
|
+
"C1",
|
|
19
|
+
"C2"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"ref": "R02",
|
|
24
|
+
"title": "R02 · Profile API returns cross-project record + project names",
|
|
25
|
+
"description": "Extend GET /builders/:id/profile to include aggregated cross-project credits/ships/karma/disciplines + the list of projects by name, from the platform-identity rollup; public by default; respects the whitelist + leak test (tests/profile_route.mjs). Done-when: another account sees the aggregate + project names, no private columns. Deps R01.",
|
|
26
|
+
"kind": "feature",
|
|
27
|
+
"discipline": "engineer",
|
|
28
|
+
"priority": 5,
|
|
29
|
+
"est_minutes": 240,
|
|
30
|
+
"criterion_ids": [
|
|
31
|
+
"C1"
|
|
32
|
+
],
|
|
33
|
+
"deps": [
|
|
34
|
+
"R01"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"ref": "R03",
|
|
39
|
+
"title": "R03 · Hide flag: builder hides cross-project stats (opt-out, live)",
|
|
40
|
+
"description": "Self-serve opt-out that hides the cross-project record from the profile + applications, honored live everywhere. Default is shown. Deps R01.",
|
|
41
|
+
"kind": "feature",
|
|
42
|
+
"discipline": "engineer",
|
|
43
|
+
"priority": 5,
|
|
44
|
+
"est_minutes": 180,
|
|
45
|
+
"criterion_ids": [
|
|
46
|
+
"C2"
|
|
47
|
+
],
|
|
48
|
+
"deps": [
|
|
49
|
+
"R01"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"ref": "R04",
|
|
54
|
+
"title": "R04 · Profile UI: cross-project section + self hide-toggle",
|
|
55
|
+
"description": "Render the cross-project section (totals + project names) on the profile; show the hide toggle to the profile owner. Deps R02,R03.",
|
|
56
|
+
"kind": "feature",
|
|
57
|
+
"discipline": "ui",
|
|
58
|
+
"priority": 5,
|
|
59
|
+
"est_minutes": 180,
|
|
60
|
+
"criterion_ids": [
|
|
61
|
+
"C1",
|
|
62
|
+
"C2"
|
|
63
|
+
],
|
|
64
|
+
"deps": [
|
|
65
|
+
"R02",
|
|
66
|
+
"R03"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"ref": "R05",
|
|
71
|
+
"title": "R05 · Shareable-by-login profile URL (?builder=<login>)",
|
|
72
|
+
"description": "Add a login-addressable profile URL alongside ?id=. Promotes idea #1000522. Deps R02.",
|
|
73
|
+
"kind": "feature",
|
|
74
|
+
"discipline": "ui",
|
|
75
|
+
"priority": 4,
|
|
76
|
+
"est_minutes": 120,
|
|
77
|
+
"criterion_ids": [
|
|
78
|
+
"C1"
|
|
79
|
+
],
|
|
80
|
+
"deps": [
|
|
81
|
+
"R02"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"ref": "R06",
|
|
86
|
+
"title": "R06 · PROOF: cross-project record shows to a viewer; hide removes it live",
|
|
87
|
+
"description": "Verify a 2-project builder's combined record shows to another account, and hiding removes it within one load. Extends tests/profile_route.mjs. Deps R04,R03.",
|
|
88
|
+
"kind": "verify",
|
|
89
|
+
"discipline": "engineer",
|
|
90
|
+
"priority": 4,
|
|
91
|
+
"est_minutes": 90,
|
|
92
|
+
"criterion_ids": [
|
|
93
|
+
"C1",
|
|
94
|
+
"C2"
|
|
95
|
+
],
|
|
96
|
+
"deps": [
|
|
97
|
+
"R04",
|
|
98
|
+
"R03"
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"ref": "R07",
|
|
103
|
+
"title": "R07 · Design application model + \"project owner (registrant+delegates)\" authz",
|
|
104
|
+
"description": "Needs-exploration: extend access_requests vs a new cross-project applications record; how the profile snapshot travels hub→target; the owner (registrant + delegates) authz; pending queue + approve/decline. Output an ADR + sub-tasks. Deps none.",
|
|
105
|
+
"kind": "spike",
|
|
106
|
+
"discipline": "engineer",
|
|
107
|
+
"priority": 5,
|
|
108
|
+
"est_minutes": 180,
|
|
109
|
+
"criterion_ids": [
|
|
110
|
+
"C3",
|
|
111
|
+
"C4"
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"ref": "R08",
|
|
116
|
+
"title": "R08 · Application API: apply / list-pending / approve / decline",
|
|
117
|
+
"description": "Cross-project application flow reusing the join relay (/my-projects/join → target /access-requests). Deps R07.",
|
|
118
|
+
"kind": "feature",
|
|
119
|
+
"discipline": "engineer",
|
|
120
|
+
"priority": 5,
|
|
121
|
+
"est_minutes": 240,
|
|
122
|
+
"criterion_ids": [
|
|
123
|
+
"C3",
|
|
124
|
+
"C4"
|
|
125
|
+
],
|
|
126
|
+
"deps": [
|
|
127
|
+
"R07"
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"ref": "R09",
|
|
132
|
+
"title": "R09 · Application carries the applicant's cross-project record (+note)",
|
|
133
|
+
"description": "Attach the applicant's cross-project record (subject to the C2 hide, live) + optional note to the application the owner sees. Deps R08,R02.",
|
|
134
|
+
"kind": "feature",
|
|
135
|
+
"discipline": "engineer",
|
|
136
|
+
"priority": 5,
|
|
137
|
+
"est_minutes": 150,
|
|
138
|
+
"criterion_ids": [
|
|
139
|
+
"C4"
|
|
140
|
+
],
|
|
141
|
+
"deps": [
|
|
142
|
+
"R08",
|
|
143
|
+
"R02"
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"ref": "R10",
|
|
148
|
+
"title": "R10 · \"Apply\" affordance on the in-core browse surface",
|
|
149
|
+
"description": "Apply action + state (applied/pending/member) on the project cards / My Projects. Deps R08.",
|
|
150
|
+
"kind": "feature",
|
|
151
|
+
"discipline": "ui",
|
|
152
|
+
"priority": 5,
|
|
153
|
+
"est_minutes": 180,
|
|
154
|
+
"criterion_ids": [
|
|
155
|
+
"C3"
|
|
156
|
+
],
|
|
157
|
+
"deps": [
|
|
158
|
+
"R08"
|
|
159
|
+
]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"ref": "R11",
|
|
163
|
+
"title": "R11 · Owner pending-applications view (approve/decline)",
|
|
164
|
+
"description": "A project owner sees pending applications for their project and approves/declines. Deps R08.",
|
|
165
|
+
"kind": "feature",
|
|
166
|
+
"discipline": "ui",
|
|
167
|
+
"priority": 5,
|
|
168
|
+
"est_minutes": 180,
|
|
169
|
+
"criterion_ids": [
|
|
170
|
+
"C4"
|
|
171
|
+
],
|
|
172
|
+
"deps": [
|
|
173
|
+
"R08"
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"ref": "R12",
|
|
178
|
+
"title": "R12 · Surface \"Apply\" on the orbs front door",
|
|
179
|
+
"description": "Wire the Apply affordance onto the orbs page. NOTE: the orbs front door is a separate static site — this likely lands instance-side. Deps R10.",
|
|
180
|
+
"kind": "feature",
|
|
181
|
+
"discipline": "ui",
|
|
182
|
+
"priority": 4,
|
|
183
|
+
"est_minutes": 150,
|
|
184
|
+
"criterion_ids": [
|
|
185
|
+
"C3"
|
|
186
|
+
],
|
|
187
|
+
"deps": [
|
|
188
|
+
"R10"
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"ref": "R13",
|
|
193
|
+
"title": "R13 · PROOF: apply → owner sees record → approves → applicant joins",
|
|
194
|
+
"description": "End-to-end verify of the apply→approve flow carrying the profile. Deps R10,R11,R09.",
|
|
195
|
+
"kind": "verify",
|
|
196
|
+
"discipline": "engineer",
|
|
197
|
+
"priority": 5,
|
|
198
|
+
"est_minutes": 90,
|
|
199
|
+
"criterion_ids": [
|
|
200
|
+
"C3",
|
|
201
|
+
"C4"
|
|
202
|
+
],
|
|
203
|
+
"deps": [
|
|
204
|
+
"R10",
|
|
205
|
+
"R11",
|
|
206
|
+
"R09"
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"ref": "R14",
|
|
211
|
+
"title": "R14 · Graduate /scouting to project-owner-facing + opt-out-of-recruiting flag",
|
|
212
|
+
"description": "Widen the Archon-only /scouting to a project owner (registrant+delegates); add a builder opt-out-of-recruiting flag. Touches authz → Metic+ floor. Deps R02.",
|
|
213
|
+
"kind": "feature",
|
|
214
|
+
"discipline": "engineer",
|
|
215
|
+
"priority": 4,
|
|
216
|
+
"est_minutes": 210,
|
|
217
|
+
"criterion_ids": [
|
|
218
|
+
"C5"
|
|
219
|
+
],
|
|
220
|
+
"deps": [
|
|
221
|
+
"R02"
|
|
222
|
+
]
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"ref": "R15",
|
|
226
|
+
"title": "R15 · Owner recruiting UI (search/filter/sort; honors hide + opt-out)",
|
|
227
|
+
"description": "Owner-facing recruiting surface: search/filter by discipline, sort by track record; honors C2 hide + recruiting opt-out. Deps R14.",
|
|
228
|
+
"kind": "feature",
|
|
229
|
+
"discipline": "ui",
|
|
230
|
+
"priority": 4,
|
|
231
|
+
"est_minutes": 210,
|
|
232
|
+
"criterion_ids": [
|
|
233
|
+
"C5"
|
|
234
|
+
],
|
|
235
|
+
"deps": [
|
|
236
|
+
"R14"
|
|
237
|
+
]
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"ref": "R16",
|
|
241
|
+
"title": "R16 · Browse → invite/recruit a builder to your project",
|
|
242
|
+
"description": "Invite/recruit a builder from the browse surface, tying into the application/invite flow. Deps R15,R08.",
|
|
243
|
+
"kind": "feature",
|
|
244
|
+
"discipline": "ui",
|
|
245
|
+
"priority": 4,
|
|
246
|
+
"est_minutes": 150,
|
|
247
|
+
"criterion_ids": [
|
|
248
|
+
"C5"
|
|
249
|
+
],
|
|
250
|
+
"deps": [
|
|
251
|
+
"R15",
|
|
252
|
+
"R08"
|
|
253
|
+
]
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"ref": "R17",
|
|
257
|
+
"title": "R17 · PROOF: non-Archon owner browses, filters, invites",
|
|
258
|
+
"description": "Verify a non-Archon project owner browses builder profiles, filters by discipline, invites one. Deps R15,R16.",
|
|
259
|
+
"kind": "verify",
|
|
260
|
+
"discipline": "engineer",
|
|
261
|
+
"priority": 4,
|
|
262
|
+
"est_minutes": 90,
|
|
263
|
+
"criterion_ids": [
|
|
264
|
+
"C5"
|
|
265
|
+
],
|
|
266
|
+
"deps": [
|
|
267
|
+
"R15",
|
|
268
|
+
"R16"
|
|
269
|
+
]
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"ref": "R18",
|
|
273
|
+
"title": "R18 · Design connections model incl. 1st/2nd/3rd-degree traversal",
|
|
274
|
+
"description": "Needs-exploration: platform-level connections (account↔account) with request/accept/decline/remove; degree-of-separation traversal (1st/2nd/3rd); \"people you may know\" from native signals. Output an ADR + sub-tasks. Deps none.",
|
|
275
|
+
"kind": "spike",
|
|
276
|
+
"discipline": "engineer",
|
|
277
|
+
"priority": 4,
|
|
278
|
+
"est_minutes": 180,
|
|
279
|
+
"criterion_ids": [
|
|
280
|
+
"C6"
|
|
281
|
+
]
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"ref": "R19",
|
|
285
|
+
"title": "R19 · Connections API: request/accept/decline/remove/list + degree queries",
|
|
286
|
+
"description": "The connection graph API incl. degree-of-separation queries. Deps R18.",
|
|
287
|
+
"kind": "feature",
|
|
288
|
+
"discipline": "engineer",
|
|
289
|
+
"priority": 4,
|
|
290
|
+
"est_minutes": 240,
|
|
291
|
+
"criterion_ids": [
|
|
292
|
+
"C6"
|
|
293
|
+
],
|
|
294
|
+
"deps": [
|
|
295
|
+
"R18"
|
|
296
|
+
]
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"ref": "R20",
|
|
300
|
+
"title": "R20 · Connections on the profile (with degree labels) + connect button",
|
|
301
|
+
"description": "Show a builder's connections (public) with 1st/2nd/3rd-degree labels; connect/pending/accept from the profile. Deps R19,R04.",
|
|
302
|
+
"kind": "feature",
|
|
303
|
+
"discipline": "ui",
|
|
304
|
+
"priority": 4,
|
|
305
|
+
"est_minutes": 180,
|
|
306
|
+
"criterion_ids": [
|
|
307
|
+
"C6"
|
|
308
|
+
],
|
|
309
|
+
"deps": [
|
|
310
|
+
"R19",
|
|
311
|
+
"R04"
|
|
312
|
+
]
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"ref": "R21",
|
|
316
|
+
"title": "R21 · \"Builders you may know\" from mutuals + shared projects/guilds",
|
|
317
|
+
"description": "Suggest connections from mutual connections + shared projects/guilds (2nd/3rd degree). Deps R19.",
|
|
318
|
+
"kind": "feature",
|
|
319
|
+
"discipline": "engineer",
|
|
320
|
+
"priority": 4,
|
|
321
|
+
"est_minutes": 150,
|
|
322
|
+
"criterion_ids": [
|
|
323
|
+
"C6"
|
|
324
|
+
],
|
|
325
|
+
"deps": [
|
|
326
|
+
"R19"
|
|
327
|
+
]
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"ref": "R22",
|
|
331
|
+
"title": "R22 · PROOF: two builders connect; each sees the other + a 2nd-degree suggestion",
|
|
332
|
+
"description": "Verify request→accept, mutual visibility, and a 2nd-degree suggestion appears. Deps R20,R21.",
|
|
333
|
+
"kind": "verify",
|
|
334
|
+
"discipline": "engineer",
|
|
335
|
+
"priority": 4,
|
|
336
|
+
"est_minutes": 90,
|
|
337
|
+
"criterion_ids": [
|
|
338
|
+
"C6"
|
|
339
|
+
],
|
|
340
|
+
"deps": [
|
|
341
|
+
"R20",
|
|
342
|
+
"R21"
|
|
343
|
+
]
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"ref": "R23",
|
|
347
|
+
"title": "R23 · Design guild model (tables, roles, public/unlisted, rollup, map ranking)",
|
|
348
|
+
"description": "Needs-exploration: platform-level guilds + guild_members (multi-guild, distinct from goal_members); roles; public/unlisted visibility; collective rollup (excludes hidden members); guild↔project application reuse; map ranking. Output an ADR + sub-tasks. Deps R18,R07.",
|
|
349
|
+
"kind": "spike",
|
|
350
|
+
"discipline": "engineer",
|
|
351
|
+
"priority": 3,
|
|
352
|
+
"est_minutes": 210,
|
|
353
|
+
"criterion_ids": [
|
|
354
|
+
"C7",
|
|
355
|
+
"C8",
|
|
356
|
+
"C9"
|
|
357
|
+
],
|
|
358
|
+
"deps": [
|
|
359
|
+
"R18",
|
|
360
|
+
"R07"
|
|
361
|
+
]
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"ref": "R24",
|
|
365
|
+
"title": "R24 · Guild CRUD + membership API + public/unlisted visibility",
|
|
366
|
+
"description": "Create guild, invite/accept/join-request, roster, leave; owner sets public/unlisted. Deps R23.",
|
|
367
|
+
"kind": "feature",
|
|
368
|
+
"discipline": "engineer",
|
|
369
|
+
"priority": 3,
|
|
370
|
+
"est_minutes": 240,
|
|
371
|
+
"criterion_ids": [
|
|
372
|
+
"C7"
|
|
373
|
+
],
|
|
374
|
+
"deps": [
|
|
375
|
+
"R23"
|
|
376
|
+
]
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"ref": "R25",
|
|
380
|
+
"title": "R25 · Guild page UI (identity, roster, collective record)",
|
|
381
|
+
"description": "Guild page: identity, roster, collective track record (N of M counted). Deps R24.",
|
|
382
|
+
"kind": "feature",
|
|
383
|
+
"discipline": "ui",
|
|
384
|
+
"priority": 3,
|
|
385
|
+
"est_minutes": 210,
|
|
386
|
+
"criterion_ids": [
|
|
387
|
+
"C7"
|
|
388
|
+
],
|
|
389
|
+
"deps": [
|
|
390
|
+
"R24"
|
|
391
|
+
]
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"ref": "R26",
|
|
395
|
+
"title": "R26 · Guild collective track-record rollup (excludes hidden members)",
|
|
396
|
+
"description": "Aggregate members' cross-project stats into the guild total; exclude C2-hidden members (\"N of M counted\"). Deps R24,R02.",
|
|
397
|
+
"kind": "feature",
|
|
398
|
+
"discipline": "engineer",
|
|
399
|
+
"priority": 3,
|
|
400
|
+
"est_minutes": 180,
|
|
401
|
+
"criterion_ids": [
|
|
402
|
+
"C7"
|
|
403
|
+
],
|
|
404
|
+
"deps": [
|
|
405
|
+
"R24",
|
|
406
|
+
"R02"
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"ref": "R27",
|
|
411
|
+
"title": "R27 · Guild → project applications + owner invites a guild (each-member-opt-in)",
|
|
412
|
+
"description": "Guild applies to / is invited to a project (guild-level mirror of R08); each member opts in before being attached. Deps R24,R08.",
|
|
413
|
+
"kind": "feature",
|
|
414
|
+
"discipline": "engineer",
|
|
415
|
+
"priority": 3,
|
|
416
|
+
"est_minutes": 210,
|
|
417
|
+
"criterion_ids": [
|
|
418
|
+
"C8"
|
|
419
|
+
],
|
|
420
|
+
"deps": [
|
|
421
|
+
"R24",
|
|
422
|
+
"R08"
|
|
423
|
+
]
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"ref": "R28",
|
|
427
|
+
"title": "R28 · Owner view: pending guild applications",
|
|
428
|
+
"description": "Extends the owner application view (R11) to guild applications. Deps R27,R11.",
|
|
429
|
+
"kind": "feature",
|
|
430
|
+
"discipline": "ui",
|
|
431
|
+
"priority": 3,
|
|
432
|
+
"est_minutes": 150,
|
|
433
|
+
"criterion_ids": [
|
|
434
|
+
"C8"
|
|
435
|
+
],
|
|
436
|
+
"deps": [
|
|
437
|
+
"R27",
|
|
438
|
+
"R11"
|
|
439
|
+
]
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"ref": "R29",
|
|
443
|
+
"title": "R29 · Design guild map ranking + orb-sky viz approach",
|
|
444
|
+
"description": "Needs-exploration: rank guilds by size/success; render on the orb-sky visual language (goal 1000044). Output design + sub-tasks. Deps R26.",
|
|
445
|
+
"kind": "spike",
|
|
446
|
+
"discipline": "engineer",
|
|
447
|
+
"priority": 3,
|
|
448
|
+
"est_minutes": 150,
|
|
449
|
+
"criterion_ids": [
|
|
450
|
+
"C9"
|
|
451
|
+
],
|
|
452
|
+
"deps": [
|
|
453
|
+
"R26"
|
|
454
|
+
]
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
"ref": "R30",
|
|
458
|
+
"title": "R30 · Guild map API (ranked; public guilds only; honors hide)",
|
|
459
|
+
"description": "Ranked guilds by size/success; only public (not unlisted) guilds; honors member hide. Deps R26.",
|
|
460
|
+
"kind": "feature",
|
|
461
|
+
"discipline": "engineer",
|
|
462
|
+
"priority": 3,
|
|
463
|
+
"est_minutes": 150,
|
|
464
|
+
"criterion_ids": [
|
|
465
|
+
"C9"
|
|
466
|
+
],
|
|
467
|
+
"deps": [
|
|
468
|
+
"R26"
|
|
469
|
+
]
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"ref": "R31",
|
|
473
|
+
"title": "R31 · Guild map UI on the recruiting surface (orb-sky visual)",
|
|
474
|
+
"description": "Visual guild map on the owner recruiting surface. Deps R30,R29,R15.",
|
|
475
|
+
"kind": "feature",
|
|
476
|
+
"discipline": "ui",
|
|
477
|
+
"priority": 3,
|
|
478
|
+
"est_minutes": 210,
|
|
479
|
+
"criterion_ids": [
|
|
480
|
+
"C9"
|
|
481
|
+
],
|
|
482
|
+
"deps": [
|
|
483
|
+
"R30",
|
|
484
|
+
"R29",
|
|
485
|
+
"R15"
|
|
486
|
+
]
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"ref": "R32",
|
|
490
|
+
"title": "R32 · PROOF: form guild → applies (members opt in) → owner approves → ranked on map",
|
|
491
|
+
"description": "End-to-end verify of the guild lifecycle incl. the map. Deps R25,R27,R31.",
|
|
492
|
+
"kind": "verify",
|
|
493
|
+
"discipline": "engineer",
|
|
494
|
+
"priority": 3,
|
|
495
|
+
"est_minutes": 120,
|
|
496
|
+
"criterion_ids": [
|
|
497
|
+
"C7",
|
|
498
|
+
"C8",
|
|
499
|
+
"C9"
|
|
500
|
+
],
|
|
501
|
+
"deps": [
|
|
502
|
+
"R25",
|
|
503
|
+
"R27",
|
|
504
|
+
"R31"
|
|
505
|
+
]
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"ref": "R33",
|
|
509
|
+
"title": "R33 · Design connection→orb-physics proximity + degree model",
|
|
510
|
+
"description": "Needs-exploration: connection strength (direct + mutuals + shared projects/guilds + co-shipped; no time-decay) feeding orb-world physics (goals 1000044/1000049); cluster detection. NOTE cross-goal dependency on orb-physics infra. Output an ADR + sub-tasks. Deps R19,R23.",
|
|
511
|
+
"kind": "spike",
|
|
512
|
+
"discipline": "engineer",
|
|
513
|
+
"priority": 3,
|
|
514
|
+
"est_minutes": 210,
|
|
515
|
+
"criterion_ids": [
|
|
516
|
+
"C10"
|
|
517
|
+
],
|
|
518
|
+
"deps": [
|
|
519
|
+
"R19",
|
|
520
|
+
"R23"
|
|
521
|
+
]
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
"ref": "R34",
|
|
525
|
+
"title": "R34 · Connection-strength + degree + cluster compute API",
|
|
526
|
+
"description": "Compute connection strength + degrees + close-knit clusters; feeds orb physics + recruiting. Deps R33.",
|
|
527
|
+
"kind": "feature",
|
|
528
|
+
"discipline": "engineer",
|
|
529
|
+
"priority": 3,
|
|
530
|
+
"est_minutes": 210,
|
|
531
|
+
"criterion_ids": [
|
|
532
|
+
"C10"
|
|
533
|
+
],
|
|
534
|
+
"deps": [
|
|
535
|
+
"R33"
|
|
536
|
+
]
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"ref": "R35",
|
|
540
|
+
"title": "R35 · Builder-side: clusters in the orb sky → invite a close cluster to a guild",
|
|
541
|
+
"description": "Close connections cluster in the orb sky; invite a cluster to form a guild from it. Deps R34,R25.",
|
|
542
|
+
"kind": "feature",
|
|
543
|
+
"discipline": "ui",
|
|
544
|
+
"priority": 3,
|
|
545
|
+
"est_minutes": 180,
|
|
546
|
+
"criterion_ids": [
|
|
547
|
+
"C10"
|
|
548
|
+
],
|
|
549
|
+
"deps": [
|
|
550
|
+
"R34",
|
|
551
|
+
"R25"
|
|
552
|
+
]
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"ref": "R36",
|
|
556
|
+
"title": "R36 · Project-side: recruit a close-knit cluster together",
|
|
557
|
+
"description": "Surface close-knit clusters on the recruiting surface; recruit them together. Deps R34,R16.",
|
|
558
|
+
"kind": "feature",
|
|
559
|
+
"discipline": "ui",
|
|
560
|
+
"priority": 3,
|
|
561
|
+
"est_minutes": 180,
|
|
562
|
+
"criterion_ids": [
|
|
563
|
+
"C10"
|
|
564
|
+
],
|
|
565
|
+
"deps": [
|
|
566
|
+
"R34",
|
|
567
|
+
"R16"
|
|
568
|
+
]
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"ref": "R37",
|
|
572
|
+
"title": "R37 · PROOF: cluster forms a guild from the sky; owner recruits a cluster",
|
|
573
|
+
"description": "End-to-end verify of the proximity-driven guild-forming + cluster-recruiting. Deps R35,R36.",
|
|
574
|
+
"kind": "verify",
|
|
575
|
+
"discipline": "engineer",
|
|
576
|
+
"priority": 3,
|
|
577
|
+
"est_minutes": 120,
|
|
578
|
+
"criterion_ids": [
|
|
579
|
+
"C10"
|
|
580
|
+
],
|
|
581
|
+
"deps": [
|
|
582
|
+
"R35",
|
|
583
|
+
"R36"
|
|
584
|
+
]
|
|
585
|
+
}
|
|
586
|
+
],
|
|
587
|
+
"promote": [
|
|
588
|
+
"R01",
|
|
589
|
+
"R07",
|
|
590
|
+
"R18"
|
|
591
|
+
]
|
|
592
|
+
}
|