@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
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Smoke test for the dependency + auto-promotion system (ADR 0015 / migration 020).
|
|
3
|
-
#
|
|
4
|
-
# Round-trip:
|
|
5
|
-
# 1. Create task A with status='backlog', kind='feature'
|
|
6
|
-
# 2. Create task B with status='ready'
|
|
7
|
-
# 3. Wire A.dependencies = [B] (A's status stays backlog — auto-promotion only
|
|
8
|
-
# fires when B SHIPS, not when the edge is added)
|
|
9
|
-
# 4. Try to claim A — must fail 409 DEPS_NOT_SHIPPED (manual promote test)
|
|
10
|
-
# 5. Promote A manually (the route allows it; the gate is at claim time)
|
|
11
|
-
# 6. Try to claim A — still 409 DEPS_NOT_SHIPPED
|
|
12
|
-
# 7. Claim B, ship B (active → completed → confirmed → shipped)
|
|
13
|
-
# 8. Verify C — a second dependent of B that NOTHING ever promoted by hand —
|
|
14
|
-
# flipped backlog→ready. This is the only assertion that can fail if the
|
|
15
|
-
# auto-promotion trigger is broken (task 1004191): A was already 'ready'
|
|
16
|
-
# from the manual step, so A's status proves nothing about the trigger.
|
|
17
|
-
# 9. Claim A — succeeds
|
|
18
|
-
# 10. Release A, abandon A and C (B is shipped and cannot be abandoned)
|
|
19
|
-
#
|
|
20
|
-
# Run from any environment with a valid CLI session (/builder-setup).
|
|
21
|
-
# Requires curl.
|
|
22
|
-
set -euo pipefail
|
|
23
|
-
|
|
24
|
-
# Token + API base both come from lib.sh, which resolves them through
|
|
25
|
-
# instance-config the way every /builder-* command does. The literals that used
|
|
26
|
-
# to live here were doubly broken: a macOS-only /Users/$USER path and a baked-in
|
|
27
|
-
# founder host, so this smoke could not run on any other OS or instance
|
|
28
|
-
# (task 1002567).
|
|
29
|
-
# shellcheck source=scripts/bongos/lib.sh
|
|
30
|
-
source "$(dirname "$0")/lib.sh"
|
|
31
|
-
|
|
32
|
-
TOKEN="$(gds_resolve_token)" || exit $?
|
|
33
|
-
BASE="${GDS_BASE:-$(gds_api_base)}"
|
|
34
|
-
SUFFIX="$(date +%s)"
|
|
35
|
-
|
|
36
|
-
echo "=== 1. Create task B (depends-on target, status=ready) ==="
|
|
37
|
-
B=$(curl -sS -X POST "$BASE/api/bongos/tasks" \
|
|
38
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
39
|
-
--data "{\"version_id\":\"GDS-V3\",\"title\":\"__smoke__ dep-test B $SUFFIX\",\"description\":\"smoke\",\"status\":\"ready\",\"kind\":\"feature\",\"discipline\":\"engineering\",\"priority\":5,\"touches\":[\"smoke-dep-B-$SUFFIX/\"],\"source\":\"smoke\",\"source_ref\":\"smoke-dep-B-$SUFFIX\"}")
|
|
40
|
-
B_ID=$(echo "$B" | python3 -c "import json,sys; print(json.load(sys.stdin)['task']['id'])")
|
|
41
|
-
echo " B id=$B_ID"
|
|
42
|
-
|
|
43
|
-
echo "=== 2. Create task A (dependent, status=backlog) ==="
|
|
44
|
-
A=$(curl -sS -X POST "$BASE/api/bongos/tasks" \
|
|
45
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
46
|
-
--data "{\"version_id\":\"GDS-V3\",\"title\":\"__smoke__ dep-test A $SUFFIX\",\"description\":\"smoke\",\"status\":\"backlog\",\"kind\":\"feature\",\"discipline\":\"engineering\",\"priority\":5,\"touches\":[\"smoke-dep-A-$SUFFIX/\"],\"source\":\"smoke\",\"source_ref\":\"smoke-dep-A-$SUFFIX\"}")
|
|
47
|
-
A_ID=$(echo "$A" | python3 -c "import json,sys; print(json.load(sys.stdin)['task']['id'])")
|
|
48
|
-
echo " A id=$A_ID"
|
|
49
|
-
|
|
50
|
-
echo "=== 2b. Create task C (dependent, status=backlog, NEVER promoted by hand) ==="
|
|
51
|
-
# task 1004191 (finding 62 of the task 1000379 audit): A is promoted manually in
|
|
52
|
-
# step 4, so "A is ready after B ships" held whether or not the auto-promotion
|
|
53
|
-
# trigger fired. C exists to be the dependent only the trigger can flip.
|
|
54
|
-
C=$(curl -sS -X POST "$BASE/api/bongos/tasks" \
|
|
55
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
56
|
-
--data "{\"version_id\":\"GDS-V3\",\"title\":\"__smoke__ dep-test C $SUFFIX\",\"description\":\"smoke\",\"status\":\"backlog\",\"kind\":\"feature\",\"discipline\":\"engineering\",\"priority\":5,\"touches\":[\"smoke-dep-C-$SUFFIX/\"],\"source\":\"smoke\",\"source_ref\":\"smoke-dep-C-$SUFFIX\"}")
|
|
57
|
-
C_ID=$(echo "$C" | python3 -c "import json,sys; print(json.load(sys.stdin)['task']['id'])")
|
|
58
|
-
echo " C id=$C_ID"
|
|
59
|
-
|
|
60
|
-
echo "=== 3. Wire A → depends_on B, and C → depends_on B ==="
|
|
61
|
-
curl -sS -X POST "$BASE/api/bongos/tasks/$C_ID/dependencies" \
|
|
62
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
63
|
-
--data "{\"depends_on_task_id\": $B_ID}" >/dev/null
|
|
64
|
-
C_PRE=$(curl -sS -H "Authorization: Bearer $TOKEN" "$BASE/api/bongos/tasks/$C_ID" | python3 -c "import json,sys; print(json.load(sys.stdin)['task']['status'])")
|
|
65
|
-
[ "$C_PRE" = "backlog" ] && echo " PASS: C is backlog before B ships" || (echo " FAIL: C is '$C_PRE' before B ships — the auto-promotion check below would prove nothing"; exit 1)
|
|
66
|
-
curl -sS -X POST "$BASE/api/bongos/tasks/$A_ID/dependencies" \
|
|
67
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
68
|
-
--data "{\"depends_on_task_id\": $B_ID}" | python3 -m json.tool
|
|
69
|
-
|
|
70
|
-
echo "=== 4. Manually promote A (testing claim-time gate, not auto-promote) ==="
|
|
71
|
-
curl -sS -X POST "$BASE/api/bongos/tasks/$A_ID/promote" -H "Authorization: Bearer $TOKEN" | python3 -m json.tool
|
|
72
|
-
|
|
73
|
-
echo "=== 5. Attempt claim A — MUST 409 DEPS_NOT_SHIPPED ==="
|
|
74
|
-
CLAIM_RESP=$(curl -sS -X POST "$BASE/api/bongos/claims" \
|
|
75
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
76
|
-
--data "{\"task_id\": $A_ID, \"worktree_name\": \"smoke-$SUFFIX\"}")
|
|
77
|
-
echo "$CLAIM_RESP" | python3 -m json.tool
|
|
78
|
-
echo "$CLAIM_RESP" | grep -q "DEPS_NOT_SHIPPED" && echo " PASS: claim refused with DEPS_NOT_SHIPPED" || (echo " FAIL: claim was not refused"; exit 1)
|
|
79
|
-
|
|
80
|
-
echo "=== 6. Claim + ship B (the dep) ==="
|
|
81
|
-
node scripts/bongos/claim.js "$B_ID" --worktree "smoke-$SUFFIX-B"
|
|
82
|
-
# Move through completed → confirmed → shipped using direct API calls (skip the
|
|
83
|
-
# scanner/grader by going straight at /resolve + /confirm + /ship)
|
|
84
|
-
curl -sS -X POST "$BASE/api/bongos/claims/by-task/$B_ID/resolve" \
|
|
85
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
86
|
-
--data '{"outcome":"completed","verification":{"passed":true,"smoke_ok":true}}' >/dev/null
|
|
87
|
-
curl -sS -X POST "$BASE/api/bongos/tasks/$B_ID/confirm" -H "Authorization: Bearer $TOKEN" >/dev/null
|
|
88
|
-
curl -sS -X POST "$BASE/api/bongos/tasks/$B_ID/ship" -H "Authorization: Bearer $TOKEN" >/dev/null
|
|
89
|
-
|
|
90
|
-
echo "=== 7. Verify the auto-promotion trigger fired: C backlog → ready ==="
|
|
91
|
-
# C was never promoted by hand, so only promote_dependents_on_ship can have made
|
|
92
|
-
# it 'ready'. (A is 'ready' from the manual step 4 regardless, so A is not asserted
|
|
93
|
-
# here — that is the assertion that used to pass with the trigger broken.)
|
|
94
|
-
C_STATUS=$(curl -sS -H "Authorization: Bearer $TOKEN" "$BASE/api/bongos/tasks/$C_ID" | python3 -c "import json,sys; print(json.load(sys.stdin)['task']['status'])")
|
|
95
|
-
echo " C status: $C_STATUS"
|
|
96
|
-
[ "$C_STATUS" = "ready" ] && echo " PASS: C auto-promoted" || (echo " FAIL: C is '$C_STATUS' — B shipped but the auto-promotion trigger did not flip its dependent"; exit 1)
|
|
97
|
-
|
|
98
|
-
echo "=== 8. Claim A — must succeed now ==="
|
|
99
|
-
node scripts/bongos/claim.js "$A_ID" --worktree "smoke-$SUFFIX-A"
|
|
100
|
-
|
|
101
|
-
echo "=== 9. Cleanup — abandon A and C; B is shipped and stays ==="
|
|
102
|
-
# task 1004026: this step used to ANNOUNCE "release A; mark both abandoned" and then
|
|
103
|
-
# only release A. Neither task reached a terminal state, so every run leaked two
|
|
104
|
-
# __smoke__ rows into the live tasks table — invisibly, because anyone grepping the
|
|
105
|
-
# cleanup step read a line saying both were handled.
|
|
106
|
-
#
|
|
107
|
-
# "mark both abandoned" was never possible. B is SHIPPED by step 6, and the abandon
|
|
108
|
-
# route refuses shipped work (cannot_abandon_shipped) because shipped rows are
|
|
109
|
-
# immutable history. Only A can reach a terminal state here, so the echo now states
|
|
110
|
-
# what the code does instead of the reverse.
|
|
111
|
-
#
|
|
112
|
-
# Follows scripts/bongos/smoke-write.sh's cleanup (task 1002018): abandon is the right
|
|
113
|
-
# terminal state for a smoke row, and cleanup is STRICTLY best-effort. task.abandon is
|
|
114
|
-
# floor-metic (ADR 0152), so a Xenos/Thetes token gets a 403 here while every assertion
|
|
115
|
-
# above genuinely passed — a cleanup that cannot run must never turn a passing smoke
|
|
116
|
-
# into a failing one. Hence the `|| true` and the reported-not-raised status codes.
|
|
117
|
-
# Reaching this line at all means every assertion passed: the script is `set -e` and
|
|
118
|
-
# each check above exits non-zero on failure, so a FAILED run stops earlier and leaves
|
|
119
|
-
# both rows in place for inspection, which is the same deliberate choice smoke-write makes.
|
|
120
|
-
node scripts/bongos/release.js "$A_ID" --reason "smoke cleanup" || true
|
|
121
|
-
|
|
122
|
-
A_CLEANUP_CODE=$(curl -sS -o /dev/null -w '%{http_code}' -X POST \
|
|
123
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
124
|
-
--data '{"reason":"smoke cleanup (task 1004026) - dependency smoke passed; the throwaway row has served its purpose"}' \
|
|
125
|
-
"$BASE/api/bongos/tasks/$A_ID/abandon") || true
|
|
126
|
-
case "${A_CLEANUP_CODE:-000}" in
|
|
127
|
-
2*) echo " PASS cleaned up throwaway task #$A_ID (abandoned)" ;;
|
|
128
|
-
403) echo " SKIP cleanup — task.abandon needs Metic+ (ADR 0152); task #$A_ID left in the ledger" ;;
|
|
129
|
-
000) echo " SKIP cleanup — POST /tasks/$A_ID/abandon got no response; task #$A_ID left in the ledger" ;;
|
|
130
|
-
*) echo " SKIP cleanup — POST /tasks/$A_ID/abandon returned HTTP $A_CLEANUP_CODE; task #$A_ID left in the ledger" ;;
|
|
131
|
-
esac
|
|
132
|
-
C_CLEANUP_CODE=$(curl -sS -o /dev/null -w '%{http_code}' -X POST \
|
|
133
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
134
|
-
--data '{"reason":"smoke cleanup (task 1004191) - auto-promotion witness; the throwaway row has served its purpose"}' \
|
|
135
|
-
"$BASE/api/bongos/tasks/$C_ID/abandon") || true
|
|
136
|
-
case "${C_CLEANUP_CODE:-000}" in
|
|
137
|
-
2*) echo " PASS cleaned up throwaway task #$C_ID (abandoned)" ;;
|
|
138
|
-
*) echo " SKIP cleanup — POST /tasks/$C_ID/abandon returned HTTP ${C_CLEANUP_CODE:-000}; task #$C_ID left in the ledger" ;;
|
|
139
|
-
esac
|
|
140
|
-
echo " NOTE task #$B_ID is SHIPPED and is deliberately left in the ledger — the abandon route refuses shipped work (cannot_abandon_shipped)."
|
|
141
|
-
|
|
142
|
-
echo
|
|
143
|
-
echo "ALL SMOKE STEPS PASSED."
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// scripts/gds/backfill-disciplines.js — @bongos-forwarder (task 1004848). Generated by
|
|
3
|
-
// scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
4
|
-
// The real script is scripts/bongos/backfill-disciplines.js. This forwarder keeps callers that still name
|
|
5
|
-
// the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
6
|
-
'use strict';
|
|
7
|
-
require('../bongos/forwarder.js').forward(module, 'backfill-disciplines.js');
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// scripts/gds/backfill-session-earnings.js — @bongos-forwarder (task 1004848). Generated by
|
|
3
|
-
// scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
4
|
-
// The real script is scripts/bongos/backfill-session-earnings.js. This forwarder keeps callers that still name
|
|
5
|
-
// the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
6
|
-
'use strict';
|
|
7
|
-
require('../bongos/forwarder.js').forward(module, 'backfill-session-earnings.js');
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// scripts/gds/backfill-session-types.js — @bongos-forwarder (task 1004848). Generated by
|
|
3
|
-
// scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
4
|
-
// The real script is scripts/bongos/backfill-session-types.js. This forwarder keeps callers that still name
|
|
5
|
-
// the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
6
|
-
'use strict';
|
|
7
|
-
require('../bongos/forwarder.js').forward(module, 'backfill-session-types.js');
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// scripts/gds/cleanup-orphans.js — @bongos-forwarder (task 1004848). Generated by
|
|
3
|
-
// scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
4
|
-
// The real script is scripts/bongos/cleanup-orphans.js. This forwarder keeps callers that still name
|
|
5
|
-
// the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
6
|
-
'use strict';
|
|
7
|
-
require('../bongos/forwarder.js').forward(module, 'cleanup-orphans.js');
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// scripts/gds/seed-bongos-v1-idea-routing-tasks.js — @bongos-forwarder (task 1004848). Generated by
|
|
2
|
-
// scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
3
|
-
// The real script is scripts/bongos/seed-bongos-v1-idea-routing-tasks.js. This forwarder keeps callers that still name
|
|
4
|
-
// the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
5
|
-
'use strict';
|
|
6
|
-
require('../bongos/forwarder.js').forward(module, 'seed-bongos-v1-idea-routing-tasks.js');
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// scripts/gds/seed-bv1-profiles-tasks.js — @bongos-forwarder (task 1004848). Generated by
|
|
2
|
-
// scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
3
|
-
// The real script is scripts/bongos/seed-bv1-profiles-tasks.js. This forwarder keeps callers that still name
|
|
4
|
-
// the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
5
|
-
'use strict';
|
|
6
|
-
require('../bongos/forwarder.js').forward(module, 'seed-bv1-profiles-tasks.js');
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// scripts/gds/seed-bv2-ideator-surface-tasks.js — @bongos-forwarder (task 1004848). Generated by
|
|
2
|
-
// scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
3
|
-
// The real script is scripts/bongos/seed-bv2-ideator-surface-tasks.js. This forwarder keeps callers that still name
|
|
4
|
-
// the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
5
|
-
'use strict';
|
|
6
|
-
require('../bongos/forwarder.js').forward(module, 'seed-bv2-ideator-surface-tasks.js');
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# scripts/gds/smoke-batch-claim.sh — @bongos-forwarder (task 1004848). Generated by
|
|
3
|
-
# scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
4
|
-
# The real script is scripts/bongos/smoke-batch-claim.sh. This forwarder keeps callers that still name
|
|
5
|
-
# the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
6
|
-
if [ -z "${BONGOS_FORWARDER_WARNED:-}" ]; then echo "[bongos] scripts/gds/smoke-batch-claim.sh has moved to scripts/bongos/smoke-batch-claim.sh. This old path still works for now, but update whatever called it. The forwarders in scripts/gds/ are removed in a later release." >&2; fi
|
|
7
|
-
export BONGOS_FORWARDER_WARNED=1
|
|
8
|
-
exec bash "$(dirname "$0")/../bongos/smoke-batch-claim.sh" "$@"
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# scripts/gds/smoke-batch-release.sh — @bongos-forwarder (task 1004848). Generated by
|
|
3
|
-
# scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
4
|
-
# The real script is scripts/bongos/smoke-batch-release.sh. This forwarder keeps callers that still name
|
|
5
|
-
# the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
6
|
-
if [ -z "${BONGOS_FORWARDER_WARNED:-}" ]; then echo "[bongos] scripts/gds/smoke-batch-release.sh has moved to scripts/bongos/smoke-batch-release.sh. This old path still works for now, but update whatever called it. The forwarders in scripts/gds/ are removed in a later release." >&2; fi
|
|
7
|
-
export BONGOS_FORWARDER_WARNED=1
|
|
8
|
-
exec bash "$(dirname "$0")/../bongos/smoke-batch-release.sh" "$@"
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# scripts/gds/smoke-claim-consistency.sh — @bongos-forwarder (task 1004848). Generated by
|
|
3
|
-
# scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
4
|
-
# The real script is scripts/bongos/smoke-claim-consistency.sh. This forwarder keeps callers that still name
|
|
5
|
-
# the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
6
|
-
if [ -z "${BONGOS_FORWARDER_WARNED:-}" ]; then echo "[bongos] scripts/gds/smoke-claim-consistency.sh has moved to scripts/bongos/smoke-claim-consistency.sh. This old path still works for now, but update whatever called it. The forwarders in scripts/gds/ are removed in a later release." >&2; fi
|
|
7
|
-
export BONGOS_FORWARDER_WARNED=1
|
|
8
|
-
exec bash "$(dirname "$0")/../bongos/smoke-claim-consistency.sh" "$@"
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# scripts/gds/smoke-dependencies.sh — @bongos-forwarder (task 1004848). Generated by
|
|
3
|
-
# scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
4
|
-
# The real script is scripts/bongos/smoke-dependencies.sh. This forwarder keeps callers that still name
|
|
5
|
-
# the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
6
|
-
if [ -z "${BONGOS_FORWARDER_WARNED:-}" ]; then echo "[bongos] scripts/gds/smoke-dependencies.sh has moved to scripts/bongos/smoke-dependencies.sh. This old path still works for now, but update whatever called it. The forwarders in scripts/gds/ are removed in a later release." >&2; fi
|
|
7
|
-
export BONGOS_FORWARDER_WARNED=1
|
|
8
|
-
exec bash "$(dirname "$0")/../bongos/smoke-dependencies.sh" "$@"
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
// tests/smoke_dependencies_witness.mjs
|
|
2
|
-
//
|
|
3
|
-
// task 1004191 (finding 62 of the task 1000379 audit): scripts/bongos/smoke-dependencies.sh
|
|
4
|
-
// is the only round-trip for the auto-promotion trigger, and its status check used
|
|
5
|
-
// to assert on task A — which the script itself promotes BY HAND in an earlier
|
|
6
|
-
// step. "A is ready after B ships" therefore passed with the trigger broken.
|
|
7
|
-
//
|
|
8
|
-
// The fix adds C: a dependent of B that nothing ever promotes by hand, checked to
|
|
9
|
-
// be 'backlog' before B ships and 'ready' after. This pins that shape statically
|
|
10
|
-
// (the smoke itself writes live tasks, so CI cannot run it).
|
|
11
|
-
//
|
|
12
|
-
// Run: node tests/smoke_dependencies_witness.mjs
|
|
13
|
-
|
|
14
|
-
import { strict as assert } from 'node:assert';
|
|
15
|
-
import { readFileSync } from 'node:fs';
|
|
16
|
-
import { makeRunner } from './helpers.mjs';
|
|
17
|
-
|
|
18
|
-
const { test, summary } = makeRunner();
|
|
19
|
-
const src = readFileSync(new URL('../scripts/bongos/smoke-dependencies.sh', import.meta.url), 'utf8');
|
|
20
|
-
const code = src.split('\n').filter((l) => !/^\s*#/.test(l)).join('\n');
|
|
21
|
-
|
|
22
|
-
await test('a second dependent C is created at backlog and wired to B', () => {
|
|
23
|
-
assert.match(code, /__smoke__ dep-test C [^"]*\\",\\"description\\":\\"smoke\\",\\"status\\":\\"backlog\\"/);
|
|
24
|
-
assert.match(code, /tasks\/\$C_ID\/dependencies"[\s\S]*depends_on_task_id\\": \$B_ID/);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
await test('C is never promoted by hand', () => {
|
|
28
|
-
assert.doesNotMatch(code, /tasks\/\$C_ID\/promote/);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
await test('C is asserted backlog BEFORE B ships and ready AFTER', () => {
|
|
32
|
-
const pre = code.indexOf('[ "$C_PRE" = "backlog" ]');
|
|
33
|
-
const ship = code.indexOf('tasks/$B_ID/ship');
|
|
34
|
-
const post = code.indexOf('[ "$C_STATUS" = "ready" ]');
|
|
35
|
-
assert.ok(pre >= 0 && ship > pre && post > ship, 'pre-check, ship, post-check in that order');
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
await test('the post-ship status assertion is not made on the hand-promoted A', () => {
|
|
39
|
-
assert.doesNotMatch(code, /\[ "\$A_STATUS" = "ready" \]/);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
await test('C is cleaned up (abandoned) like A', () => {
|
|
43
|
-
assert.match(code, /tasks\/\$C_ID\/abandon/);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
summary();
|