@bongos/core 1.21.175 → 1.21.177
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 +3371 -1636
- package/.claude/skills/ask-for-help/SKILL.md +4 -4
- package/.claude/skills/backlog-review/SKILL.md +1 -1
- package/.claude/skills/blocker-review/SKILL.md +2 -2
- package/.claude/skills/blocker-solve/SKILL.md +4 -4
- package/.claude/skills/bongos-feedback/SKILL.md +1 -1
- package/.claude/skills/bug-triage/SKILL.md +8 -8
- package/.claude/skills/builder-backup/SKILL.md +3 -3
- package/.claude/skills/builder-claim/SKILL.md +5 -5
- package/.claude/skills/builder-cost/SKILL.md +5 -5
- package/.claude/skills/builder-end/SKILL.md +6 -6
- package/.claude/skills/builder-exit/SKILL.md +2 -2
- package/.claude/skills/builder-key/SKILL.md +6 -6
- package/.claude/skills/builder-reauth/SKILL.md +4 -4
- package/.claude/skills/builder-redteam/SKILL.md +3 -3
- package/.claude/skills/builder-release/SKILL.md +3 -3
- package/.claude/skills/builder-sequence/SKILL.md +8 -8
- package/.claude/skills/builder-setup/SKILL.md +4 -4
- package/.claude/skills/builder-ship/SKILL.md +7 -7
- package/.claude/skills/builder-stage/SKILL.md +8 -8
- package/.claude/skills/builder-start/SKILL.md +4 -4
- package/.claude/skills/collab-review/SKILL.md +5 -5
- package/.claude/skills/design/SKILL.md +6 -4
- package/.claude/skills/design-sync/SKILL.md +3 -3
- package/.claude/skills/figma-design-sync/SKILL.md +4 -4
- package/.claude/skills/fix-task/SKILL.md +8 -8
- package/.claude/skills/goal-close/SKILL.md +9 -9
- package/.claude/skills/goal-create/SKILL.md +18 -18
- package/.claude/skills/grade-recover/SKILL.md +8 -8
- package/.claude/skills/grade-sweep/SKILL.md +15 -15
- package/.claude/skills/idea-triage/SKILL.md +15 -15
- package/.claude/skills/merge-mode/SKILL.md +14 -14
- package/.claude/skills/new-project/SKILL.md +5 -5
- package/.claude/skills/owner-review/SKILL.md +1 -1
- package/.claude/skills/planning-session/SKILL.md +15 -15
- package/.claude/skills/priority-session/SKILL.md +6 -6
- package/.claude/skills/read-session-export/SKILL.md +3 -3
- package/.claude/skills/recall/SKILL.md +7 -7
- package/.claude/skills/scan-before-install/SKILL.md +3 -3
- package/.claude/skills/session-handoff/SKILL.md +1 -1
- package/.claude/skills/ship-check/SKILL.md +3 -3
- package/.claude/skills/status/SKILL.md +3 -3
- package/.claude/skills/strand-fix/SKILL.md +6 -6
- package/.claude/skills/worktree-clean/SKILL.md +4 -4
- package/.gitattributes +12 -32
- package/GOVERNMENT.md +1 -1
- package/README.md +8 -8
- package/bin/bongos.js +23 -23
- package/clients/bongos-client/README.md +2 -2
- package/clients/bongos-client/bongos-client.global.js +22 -4
- package/clients/bongos-client/index.cjs +22 -4
- package/clients/bongos-client/index.d.ts +33 -4
- package/clients/bongos-client/index.mjs +21 -3
- package/config/branding.neutral.json +1 -1
- package/config/design-tokens.schema.json +1 -1
- package/config/modules.neutral.json +1 -3
- package/config/scheduled-routines.json +3 -8
- package/docs/adr/0029-status-page-outage-resilience.md +6 -6
- package/docs/adr/0091-bounding-the-kernel-and-db-carve.md +1 -1
- package/docs/adr/0093-tranche-2-core-carve-sequence.md +1 -1
- package/docs/adr/0227-a-task-network-map-is-refused-the-goal-graph-is-the-map.md +1 -1
- package/docs/adr/0294-cli-sessions-do-not-expire.md +1 -1
- package/docs/adr/0383-sessions-end-after-ten-idle-days.md +35 -0
- package/docs/adr/0384-the-raise-page-is-a-hub-module-builders-edit-in-place.md +31 -0
- package/docs/adr/README.md +2 -0
- package/docs/api/openapi.json +606 -44
- package/docs/api-reference.md +25 -12
- package/docs/architecture.md +8 -7
- package/docs/canonical-permissions.md +4 -4
- package/docs/copy-inventory.md +1370 -1411
- package/docs/copy-registry.json +2136 -2536
- package/docs/design/demonolith-plan.md +6 -6
- package/docs/design/modular-architecture/00-research-report.md +1 -1
- package/docs/design/project-startup-direction.md +2 -2
- package/docs/design/projects-hub-direction-v2.md +1 -1
- package/docs/design/reviews/hall-v2/README.md +2 -2
- package/docs/design/vanilla-hall-ui-redesign-scope.md +1 -1
- package/docs/file-map.md +92 -96
- package/docs/handoff-template.md +5 -5
- package/docs/module-api-changelog.md +7 -3
- package/docs/modules-contract.md +8 -7
- package/docs/onboarding/diagrams/01-task-lifecycle.mmd +1 -1
- package/docs/onboarding/diagrams/02-rank-ladder.mmd +1 -1
- package/docs/onboarding/diagrams/03-drachmae-karma.mmd +1 -1
- package/docs/onboarding/diagrams/04-architecture.mmd +1 -1
- package/docs/onboarding/diagrams/05-versioning.mmd +1 -1
- package/docs/onboarding/diagrams/README.md +5 -9
- package/docs/onboarding/diagrams/assertions.json +3 -3
- package/docs/onboarding/slash-commands.md +2 -2
- package/docs/packs/artist.md +4 -4
- package/docs/packs/engineer.md +11 -10
- package/docs/packs/ideator.md +7 -7
- package/docs/page-inventory.json +20 -1
- package/docs/page-readings.json +4387 -4603
- package/docs/recipes/README.md +1 -1
- package/docs/recipes/audit-replay.md +4 -4
- package/docs/recipes/autobongos-windows-host.md +6 -6
- package/docs/recipes/bongos-cli-release.md +2 -2
- package/docs/recipes/claude-design-loop.md +7 -7
- package/docs/recipes/core-release-pipeline.md +19 -19
- package/docs/recipes/failed-ship-recovery-proof.md +2 -2
- package/docs/recipes/figma-design-loop.md +6 -6
- package/docs/recipes/gds-db-backup.md +9 -9
- package/docs/recipes/instance-deploy.md +3 -3
- package/docs/recipes/instance-first-run.md +1 -1
- package/docs/recipes/multi-builder-merge.md +2 -2
- package/docs/recipes/ops-gotchas.md +13 -10
- package/docs/recipes/packaging-the-core.md +6 -6
- package/docs/recipes/parallel-goal-waves.md +4 -4
- package/docs/recipes/private-npm-distribution.md +9 -9
- package/docs/recipes/redteam-patrol.md +5 -5
- package/docs/recipes/render-pilot.md +2 -2
- package/docs/recipes/reranking-a-goals-board.md +2 -2
- package/docs/recipes/search-index-ingestion.md +5 -5
- package/docs/recipes/self-host.md +1 -1
- package/docs/recipes/ship-and-regrade.md +4 -4
- package/docs/recipes/staging-environment.md +1 -1
- package/docs/recipes/standalone-live-docs.md +1 -1
- package/docs/recipes/ui-look-before-you-ship.md +2 -2
- package/docs/recipes/upgrading-the-core.md +11 -11
- package/docs/recipes/windows-builders.md +18 -18
- package/docs/research/llm-model-agnostic-and-cheaper-grader.md +6 -6
- package/docs/research/task-network-map-readability.md +3 -3
- package/migrations/core_278_builder_tester_tag.sql +18 -0
- package/migrations/core_279_bongos_shipper_new_scripts_path.sql +13 -0
- package/modules/agents/lib/answer-hold.js +1 -1
- package/modules/agents/lib/gate.js +1 -1
- package/modules/agents/lib/validate.js +1 -1
- package/modules/autonomy/db.js +9 -0
- package/modules/autonomy/gauge.js +1 -1
- package/modules/autonomy/governor-docket.js +2 -2
- package/modules/autonomy/module.json +2 -2
- package/modules/autonomy/pollers/daily-checks.js +262 -0
- package/modules/autonomy/pollers/routine-timers.js +9 -7
- package/modules/autonomy/rank-roles.js +64 -0
- package/modules/autonomy/routes/autonomy.js +3 -3
- package/modules/autonomy/server-schedule.js +37 -0
- package/modules/builder-settings/interaction-prefs.js +1 -1
- package/modules/builder-settings/render-prefs.js +1 -1
- package/modules/builder-settings/routes/settings.js +1 -1
- package/modules/builder-settings/skill-prefs.js +2 -2
- package/modules/builder-settings/wandering-prefs.js +2 -2
- package/modules/copy-desk/module.json +2 -2
- package/modules/copy-desk/page-data.js +5 -5
- package/modules/copy-desk/page-decisions.js +13 -1
- package/modules/copy-desk/proposals.js +4 -4
- package/modules/copy-desk/registry.js +2 -2
- package/modules/copy-desk/routes/copy-desk-release.js +119 -0
- package/modules/copy-desk/routes/copy-desk.js +3 -12
- package/modules/copy-desk/skills/tweak/SKILL.md +12 -12
- package/modules/copy-desk/tests/copy_flags.mjs +1 -1
- package/modules/copy-desk/tests/copy_no_cms.mjs +7 -3
- package/modules/copy-desk/tests/copy_proposals.mjs +2 -2
- package/modules/copy-desk/tests/copy_queue.mjs +1 -1
- package/modules/design-styles/skills/README.md +4 -4
- package/modules/design-styles/skills/imagegen-frontend-mobile/SKILL.md +1 -1
- package/modules/design-styles/skills/imagegen-frontend-web/SKILL.md +1 -1
- package/modules/discord/bug-attachments.js +1 -1
- package/modules/discord/ship-broadcast.js +1 -1
- package/modules/economy/achievements.js +49 -7
- package/modules/economy/cost-classify.js +6 -6
- package/modules/economy/cost-report.js +1 -1
- package/modules/economy/cost.js +1 -1
- package/modules/economy/credits.js +2 -1
- package/modules/economy/idea-size.js +2 -2
- package/modules/economy/reward.js +2 -0
- package/modules/economy/routes/cost.js +1 -1
- package/modules/economy/streak.js +43 -4
- package/modules/government/asks.js +1 -1
- package/modules/government/board.js +19 -2
- package/modules/government/catalog.js +3 -0
- package/modules/government/migrations/government_033_idea_vote.sql +46 -0
- package/modules/government/protected-surfaces.json +48 -47
- package/modules/government/recommendations.js +6 -2
- package/modules/government/routes/government.js +1 -1
- package/modules/grading/generated-provenance.js +13 -5
- package/modules/grading/grade-engine.js +1 -1
- package/modules/grading/grader-rubric.json +1 -1
- package/modules/grading/grader-score.js +1 -1
- package/modules/grading/grader-workers/index.js +1 -1
- package/modules/grading/grader.js +1 -1
- package/modules/grading/routes/grade.js +1 -1
- package/modules/hall-ui/public/atlas.html +5 -7
- package/modules/hall-ui/public/atlas.js +1 -1
- package/modules/hall-ui/public/atlas.states.json +1 -1
- package/modules/hall-ui/public/blockers.css +9 -0
- package/modules/hall-ui/public/blockers.html +4 -4
- package/modules/hall-ui/public/blockers.js +29 -30
- package/modules/hall-ui/public/board-room.css +5 -17
- package/modules/hall-ui/public/board-room.html +5 -6
- package/modules/hall-ui/public/board-room.js +41 -23
- package/modules/hall-ui/public/board-room.states.json +1 -1
- package/modules/hall-ui/public/brand-apply.js +1 -1
- package/modules/hall-ui/public/brand-holes.js +1 -1
- package/modules/hall-ui/public/builders.js +40 -86
- package/modules/hall-ui/public/city-decide.js +18 -4
- package/modules/hall-ui/public/city.html +1 -1
- package/modules/hall-ui/public/collab.html +1 -1
- package/modules/hall-ui/public/commands.html +6 -9
- package/modules/hall-ui/public/copy-desk.html +1 -1
- package/modules/hall-ui/public/copy-desk.js +2 -2
- package/modules/hall-ui/public/craft-mode.js +4 -0
- package/modules/hall-ui/public/deploy.html +6 -2
- package/modules/hall-ui/public/deploy.js +21 -13
- package/modules/hall-ui/public/diagrams.css +1 -1
- package/modules/hall-ui/public/diagrams.html +5 -8
- package/modules/hall-ui/public/diagrams.states.json +1 -1
- package/modules/hall-ui/public/drachmae.html +3 -7
- package/modules/hall-ui/public/fleet.html +3 -2
- package/modules/hall-ui/public/fleet.js +0 -4
- package/modules/hall-ui/public/gate.html +7 -7
- package/modules/hall-ui/public/gate.js +58 -77
- package/modules/hall-ui/public/goal-map.html +1 -1
- package/modules/hall-ui/public/goals-page.js +5 -5
- package/modules/hall-ui/public/goals-render.js +10 -11
- package/modules/hall-ui/public/goals.css +10 -0
- package/modules/hall-ui/public/goals.html +14 -7
- package/modules/hall-ui/public/government.html +3 -5
- package/modules/hall-ui/public/government.js +1 -5
- package/modules/hall-ui/public/hall-render.js +117 -57
- package/modules/hall-ui/public/hall-widgets.js +11 -11
- package/modules/hall-ui/public/idea.html +1 -1
- package/modules/hall-ui/public/ideas.html +3 -1
- package/modules/hall-ui/public/ideas.js +1 -0
- package/modules/hall-ui/public/index.html +12 -6
- package/modules/hall-ui/public/index.states.json +1 -1
- package/modules/hall-ui/public/mine-lens.js +1 -1
- package/modules/hall-ui/public/modules.html +7 -10
- package/modules/hall-ui/public/modules.js +0 -2
- package/modules/hall-ui/public/my-agents.html +1 -1
- package/modules/hall-ui/public/palette.js +5 -5
- package/modules/hall-ui/public/primer.html +4 -9
- package/modules/hall-ui/public/profile-connections.js +10 -2
- package/modules/hall-ui/public/profile-roles.js +3 -10
- package/modules/hall-ui/public/profile.html +12 -10
- package/modules/hall-ui/public/profile.js +13 -17
- package/modules/hall-ui/public/project-settings.html +3 -4
- package/modules/hall-ui/public/project-settings.js +0 -3
- package/modules/hall-ui/public/ranks.html +5 -11
- package/modules/hall-ui/public/ranks.js +6 -8
- package/modules/hall-ui/public/roadmap.css +0 -2
- package/modules/hall-ui/public/roadmap.html +1 -1
- package/modules/hall-ui/public/roadmap.js +16 -51
- package/modules/hall-ui/public/roster.html +1 -1
- package/modules/hall-ui/public/sessions.html +6 -8
- package/modules/hall-ui/public/sessions.js +7 -7
- package/modules/hall-ui/public/settings.html +1 -1
- package/modules/hall-ui/public/shell-trail.js +1 -1
- package/modules/hall-ui/public/shell.js +17 -17
- package/modules/hall-ui/public/street-deck.css +2 -1
- package/modules/hall-ui/public/street-deck.js +10 -2
- package/modules/hall-ui/public/street-desk.js +16 -5
- package/modules/hall-ui/public/street.html +1 -1
- package/modules/hall-ui/public/studio-lib.js +4 -0
- package/modules/hall-ui/public/studio.css +2 -0
- package/modules/hall-ui/public/studio.html +1 -1
- package/modules/hall-ui/public/studio.js +27 -1
- package/modules/hall-ui/public/style.css +43 -26
- package/modules/hall-ui/public/task-detail.js +10 -7
- package/modules/hall-ui/public/task.css +2 -0
- package/modules/hall-ui/public/task.html +3 -1
- package/modules/hall-ui/public/task.js +23 -7
- package/modules/hall-ui/public/thinking.html +1 -1
- package/modules/hall-ui/public/tweak-editor.html +1 -1
- package/modules/hall-ui/public/vote-control.js +208 -0
- package/modules/hall-ui/public/watch.html +3 -5
- package/modules/hall-ui/public/watch.js +5 -4
- package/modules/hall-ui/public/welcome-boot.css +130 -0
- package/modules/hall-ui/public/welcome-boot.js +334 -0
- package/modules/hall-ui/public/welcome-day.webp +0 -0
- package/modules/hall-ui/public/welcome-night.webp +0 -0
- package/modules/hall-ui/public/work-summary.js +1 -1
- package/modules/hall-ui/public/work.css +1 -0
- package/modules/hall-ui/public/work.html +3 -1
- package/modules/hall-ui/public/work.js +2 -1
- package/modules/hall-ui/records/accomplishments.md +16 -0
- package/modules/hall-ui/records/hall-ask-card.md +9 -0
- package/modules/hall-ui/records/karma-vote-control.md +13 -0
- package/modules/hall-ui/records/oversight-family.md +1 -1
- package/modules/hall-ui/records/profile-connections.md +2 -0
- package/modules/hall-ui/records/profile-roles.md +1 -1
- package/modules/hall-ui/records/reading-rooms.md +1 -1
- package/modules/hall-ui/records/welcome-tower.md +50 -0
- package/modules/ideas/migrations/ideas_011_idea_votes.sql +31 -0
- package/modules/ideas/projection.js +1 -1
- package/modules/ideas/routes/blockers.js +3 -3
- package/modules/ideas/routes/inbox.js +29 -1
- package/modules/ideas/routes/ratify-goal.js +1 -1
- package/modules/ideas/routing.js +1 -1
- package/modules/ideas/templates.js +1 -1
- package/modules/ideas/trail-descent.js +1 -1
- package/modules/ideas/trail-size.js +1 -1
- package/modules/ideas/votes.js +93 -0
- package/modules/lifecycle/abandon-leftovers.js +1 -1
- package/modules/lifecycle/cascade.js +1 -1
- package/modules/lifecycle/conflict-resolve.js +13 -21
- package/modules/lifecycle/criterion-ref.js +1 -1
- package/modules/lifecycle/db-analytics.js +57 -4
- package/modules/lifecycle/db-deps-criteria.js +1 -1
- package/modules/lifecycle/db-ship.js +2 -2
- package/modules/lifecycle/db-tasks.js +2 -2
- package/modules/lifecycle/db-versions.js +1 -1
- package/modules/lifecycle/db.js +2 -0
- package/modules/lifecycle/dead-deps.js +3 -3
- package/modules/lifecycle/dependency-advisory.js +3 -3
- package/modules/lifecycle/goal-category.js +1 -1
- package/modules/lifecycle/goal-forest.js +1 -1
- package/modules/lifecycle/goal-task-relevance-advisory.js +1 -1
- package/modules/lifecycle/kickoff-checklist.js +1 -1
- package/modules/lifecycle/kickoff-seed.js +1 -1
- package/modules/lifecycle/lifecycle.js +2 -0
- package/modules/lifecycle/merge-reach.js +29 -15
- package/modules/lifecycle/missing-dep-classify.js +3 -3
- package/modules/lifecycle/module.json +2 -1
- package/modules/lifecycle/page-tweak-approve.js +85 -1
- package/modules/lifecycle/page-tweak-hold.js +1 -1
- package/modules/lifecycle/publish-reconciler.js +1 -2
- package/modules/lifecycle/rot.js +1 -1
- package/modules/lifecycle/routes/artist-gate.js +1 -1
- package/modules/lifecycle/routes/gate-approvals.js +22 -1
- package/modules/lifecycle/routes/goals.js +1 -1
- package/modules/lifecycle/routes/task-route-helpers.js +1 -1
- package/modules/lifecycle/routes/task-votes.js +54 -0
- package/modules/lifecycle/routes/task-write-routes.js +1 -1
- package/modules/lifecycle/routes/tasks.js +2 -2
- package/modules/lifecycle/routes/versions.js +2 -2
- package/modules/lifecycle/ship-card.js +4 -4
- package/modules/lifecycle/ship-preflight.js +1 -1
- package/modules/lifecycle/task-classifier.js +1 -1
- package/modules/lifecycle/task-status.js +1 -1
- package/modules/lifecycle/task-visual-db.js +1 -1
- package/modules/memory/learnings.js +1 -1
- package/modules/memory/pollers/search-index.js +2 -2
- package/modules/memory/routes/learnings.js +1 -1
- package/modules/memory/routes/memory.js +1 -1
- package/modules/memory/search.js +2 -2
- package/modules/npm-release/release.js +1 -1
- package/modules/onboarding/howto-moments.js +1 -1
- package/modules/onboarding/newcomer-restock.js +3 -3
- package/modules/onboarding/onboarding.js +1 -1
- package/modules/pixel-art/skills/otb-tile-generate/SKILL.md +1 -1
- package/modules/platform-identity/origin-containment.js +1 -1
- package/modules/platform-identity/publish-gate.js +1 -1
- package/modules/platform-identity/tests/platform-identity.mjs +1 -1
- package/modules/provisioning/capacity.js +1 -1
- package/modules/provisioning/core-upgrade.js +15 -9
- package/modules/provisioning/credential-preflight.js +3 -3
- package/modules/provisioning/disconnect.js +1 -1
- package/modules/provisioning/dns-resolves.js +1 -1
- package/modules/provisioning/module.json +1 -1
- package/modules/provisioning/onboard-plan.js +1 -1
- package/modules/provisioning/paid-shape-gate.js +2 -2
- package/modules/provisioning/planet-physics.js +11 -2
- package/modules/provisioning/pollers/liveness-sweep.js +1 -1
- package/modules/provisioning/pollers/runner-drift-notify.js +5 -5
- package/modules/provisioning/provisioning.js +2 -2
- package/modules/provisioning/render-lookup.js +1 -1
- package/modules/provisioning/render-standup.js +3 -3
- package/modules/provisioning/repo-private.js +1 -1
- package/modules/provisioning/routes/callback-page.js +1 -1
- package/modules/provisioning/routes/core-upgrade.js +23 -3
- package/modules/provisioning/routes/provisioning.js +2 -2
- package/modules/provisioning/routes/render-standup.js +1 -1
- package/modules/provisioning/routes/repo-private.js +1 -1
- package/modules/provisioning/soft-limits.js +1 -1
- package/modules/provisioning/starter-bundles.js +4 -2
- package/modules/provisioning/tests/provisioning.mjs +1 -1
- package/modules/public-landing/public/account.html +4 -6
- package/modules/public-landing/public/assets/cosmos.css +13 -6
- package/modules/public-landing/public/connections.html +4 -6
- package/modules/public-landing/public/contact.html +4 -6
- package/modules/public-landing/public/guild.html +4 -6
- package/modules/public-landing/public/index.html +11 -9
- package/modules/public-landing/public/invitations.html +4 -6
- package/modules/public-landing/public/privacy.html +4 -6
- package/modules/public-landing/public/projects.html +168 -46
- package/modules/public-landing/public/terms.html +4 -6
- package/modules/raise/content/copy.json +40 -0
- package/modules/raise/content/nda.html +39 -0
- package/modules/raise/content/settings.json +49 -0
- package/modules/raise/db.js +95 -0
- package/modules/raise/migrations/raise_001_tables.sql +71 -0
- package/modules/raise/module.json +28 -0
- package/modules/raise/page.js +194 -0
- package/modules/raise/public/edit.js +152 -0
- package/modules/raise/public/favicon.svg +1 -0
- package/modules/raise/public/logo-ink.svg +1 -0
- package/modules/raise/public/logo-night.svg +1 -0
- package/modules/raise/public/mode.js +8 -0
- package/modules/raise/public/raise.css +234 -0
- package/modules/raise/public/raise.js +91 -0
- package/modules/raise/raise.js +174 -0
- package/modules/raise/routes/raise.js +152 -0
- package/modules/raise/views/gate.html +39 -0
- package/modules/raise/views/nda.html +21 -0
- package/modules/raise/views/page.html +133 -0
- package/modules/raise/web.js +72 -0
- package/modules/render-deploy/deploys.js +1 -1
- package/modules/render-deploy/render.js +2 -2
- package/modules/security/secret-scrub.js +3 -3
- package/modules/security/security.js +1 -1
- package/modules/security/tests/artifact_scan.mjs +1 -1
- package/modules/security/tests/mirror.mjs +1 -1
- package/modules/security/tests/scan_store.mjs +1 -1
- package/modules/sessions/db.js +2 -2
- package/modules/sessions/pulse.js +2 -2
- package/modules/sessions/routes/sessions.js +1 -1
- package/modules/specialities/specialities.js +1 -1
- package/modules/status-ui/public/README.md +3 -4
- package/modules/status-ui/public/index.html +5 -31
- package/modules/status-ui/public/status.js +6 -174
- package/modules/status-ui/public/style.css +4 -133
- package/modules/ui-design/docs/design-contract.md +3 -3
- package/modules/ui-design/kit/README.md +1 -1
- package/modules/ui-design/kit/serve.js +13 -4
- package/modules/ui-design/scripts/design-sync.js +1 -1
- package/modules/ui-design/scripts/figma-design-sync.js +1 -1
- package/modules/ui-design/scripts/validate-design.js +1 -1
- package/package-lock.json +27 -11
- package/package.json +2 -3
- package/release-notes.json +186 -0
- package/scripts/bongos/CLAUDE.md +15 -0
- package/scripts/bongos/abandon.js +137 -0
- package/scripts/bongos/accessibility-replay.js +195 -0
- package/scripts/bongos/address-park-sweep.sh +91 -0
- package/scripts/bongos/adopt-detect.js +123 -0
- package/scripts/bongos/adopt-import.js +111 -0
- package/scripts/bongos/adopt-preflight.js +187 -0
- package/scripts/bongos/adr-namespace.js +273 -0
- package/scripts/bongos/agent-invoke.js +689 -0
- package/scripts/bongos/agents-sync.js +502 -0
- package/scripts/bongos/api-alias-caller-scan.js +256 -0
- package/scripts/bongos/api-artifacts.js +91 -0
- package/scripts/bongos/api.js +86 -0
- package/scripts/bongos/api.ps1 +26 -0
- package/scripts/bongos/architect-audit.js +294 -0
- package/scripts/bongos/artifact-audit.js +326 -0
- package/scripts/bongos/artifact-format.js +203 -0
- package/scripts/bongos/ask.js +231 -0
- package/scripts/bongos/audit-authorship.sh +324 -0
- package/scripts/bongos/audit-deps.js +189 -0
- package/scripts/bongos/audit-gate.js +121 -0
- package/scripts/bongos/audit-rank-roles.js +131 -0
- package/scripts/bongos/audit-replay.sh +205 -0
- package/scripts/bongos/autobongos-digest.js +123 -0
- package/scripts/bongos/autobongos-grade-cap.js +187 -0
- package/scripts/bongos/autobongos-loop.js +210 -0
- package/scripts/bongos/autobongos-run.js +1361 -0
- package/scripts/bongos/autobongos-service.cmd +50 -0
- package/scripts/bongos/autobongos-service.ps1 +270 -0
- package/scripts/bongos/autobongos-tweak-lane.js +262 -0
- package/scripts/bongos/autobongos-verify.js +618 -0
- package/scripts/bongos/autonomy-gate.js +135 -0
- package/scripts/bongos/autonomy-gauge-statusline.js +124 -0
- package/scripts/bongos/autonomy-gauge.js +84 -0
- package/scripts/bongos/backfill-cost.js +176 -0
- package/scripts/bongos/backfill-disciplines.js +144 -0
- package/scripts/bongos/backfill-session-earnings.js +123 -0
- package/scripts/bongos/backfill-session-types.js +87 -0
- package/scripts/bongos/backfill-sessions.js +411 -0
- package/scripts/bongos/backfill-subagent-rewards.js +485 -0
- package/scripts/bongos/backfill-task-rewards.js +413 -0
- package/scripts/bongos/backlog-review.js +399 -0
- package/scripts/bongos/backup-dropin-sweep.sh +95 -0
- package/scripts/bongos/backup.js +116 -0
- package/scripts/bongos/baseline-staleness.js +217 -0
- package/scripts/bongos/bfg-principal-token.js +65 -0
- package/scripts/bongos/bug-attachment-audit.js +149 -0
- package/scripts/bongos/bug-attachment-recover.js +198 -0
- package/scripts/bongos/bug-triage.js +292 -0
- package/scripts/bongos/build-bongos.js +94 -0
- package/scripts/bongos/bump-version.js +221 -0
- package/scripts/bongos/capture.js +481 -0
- package/scripts/bongos/category-advisory-guard.js +206 -0
- package/scripts/bongos/ci-grade.js +82 -0
- package/scripts/bongos/claim-recall.js +112 -0
- package/scripts/bongos/claim.js +789 -0
- package/scripts/bongos/claude-materialize.js +1200 -0
- package/scripts/bongos/claude-md-template.js +142 -0
- package/scripts/bongos/cleanup-orphans.js +74 -0
- package/scripts/bongos/cli-lib.js +1226 -0
- package/scripts/bongos/client-baseurl-guard.js +116 -0
- package/scripts/bongos/codemod-rename-scripts-gds.js +380 -0
- package/scripts/bongos/conductor-dispatch.js +535 -0
- package/scripts/bongos/context-pack.js +326 -0
- package/scripts/bongos/control-manifest.js +199 -0
- package/scripts/bongos/copy-apply.js +758 -0
- package/scripts/bongos/copy-inventory.js +571 -0
- package/scripts/bongos/core-origin-follow.js +185 -0
- package/scripts/bongos/core-pin-sync.js +260 -0
- package/scripts/bongos/cost-report.js +63 -0
- package/scripts/bongos/cost.js +47 -0
- package/scripts/bongos/credential-presence.js +296 -0
- package/scripts/bongos/cutover-codemod.js +240 -0
- package/scripts/bongos/db-backup-nightly.sh +232 -0
- package/scripts/bongos/db-backup-offsite.sh +267 -0
- package/scripts/bongos/demote.js +45 -0
- package/scripts/bongos/deploy-divergence.js +454 -0
- package/scripts/bongos/deploy-main-audit-gate.sh +97 -0
- package/scripts/bongos/design-sync.js +12 -0
- package/scripts/bongos/dev-box-guard.js +166 -0
- package/scripts/bongos/dev-lib.js +722 -0
- package/scripts/bongos/dev.js +645 -0
- package/scripts/bongos/device-flow-help.js +72 -0
- package/scripts/bongos/diagnose-achievements.js +118 -0
- package/scripts/bongos/diagram-facts.js +355 -0
- package/scripts/bongos/discord-channels.js +77 -0
- package/scripts/bongos/do-api.js +109 -0
- package/scripts/bongos/doc-cli-guard.js +274 -0
- package/scripts/bongos/doc-comment-coverage.js +139 -0
- package/scripts/bongos/doc-control-claims.js +170 -0
- package/scripts/bongos/docs-entropy.js +453 -0
- package/scripts/bongos/doctor.js +493 -0
- package/scripts/bongos/enroll-control-plane.js +101 -0
- package/scripts/bongos/exec-path-guard.js +564 -0
- package/scripts/bongos/feedback-send.js +249 -0
- package/scripts/bongos/fetch-art-key.js +106 -0
- package/scripts/bongos/fetch-sound-prefs.js +126 -0
- package/scripts/bongos/figma-design-sync.js +11 -0
- package/scripts/bongos/find-untested.js +371 -0
- package/scripts/bongos/fitness-checks-error-envelope.js +134 -0
- package/scripts/bongos/fitness-checks-identity.js +332 -0
- package/scripts/bongos/fitness-checks-packaging.js +132 -0
- package/scripts/bongos/fitness-checks-route-pins.js +76 -0
- package/scripts/bongos/fitness-checks-vocabulary.js +392 -0
- package/scripts/bongos/fitness-checks-write-validation.js +157 -0
- package/scripts/bongos/fitness-lib.js +127 -0
- package/scripts/bongos/fitness-migration-contraction.js +50 -0
- package/scripts/bongos/fitness-ratchets.js +594 -0
- package/scripts/bongos/fitness.js +1498 -0
- package/scripts/bongos/forwarder.js +80 -0
- package/scripts/bongos/gate-review.js +330 -0
- package/scripts/bongos/gating.js +348 -0
- package/scripts/{gds → bongos}/gds-db-backup.service +6 -6
- package/scripts/{gds → bongos}/gds-db-backup.timer +4 -4
- package/scripts/{gds → bongos}/gds-db-offsite.service +4 -4
- package/scripts/{gds → bongos}/gds-db-offsite.timer +4 -4
- package/scripts/bongos/gds-literal-scan.js +196 -0
- package/scripts/bongos/gen-api-client.js +576 -0
- package/scripts/bongos/gen-api-docs.js +1111 -0
- package/scripts/bongos/gen-atlas.js +366 -0
- package/scripts/bongos/gen-diagrams.js +608 -0
- package/scripts/bongos/gen-file-map.js +337 -0
- package/scripts/bongos/gen-freshness.js +32 -0
- package/scripts/bongos/gen-interaction-posture.js +122 -0
- package/scripts/bongos/gen-repo-map.js +540 -0
- package/scripts/bongos/gen-role-responsibilities.js +134 -0
- package/scripts/bongos/gen-session-index.js +243 -0
- package/scripts/bongos/gen-sounds.js +176 -0
- package/scripts/bongos/git-merge-regen.js +254 -0
- package/scripts/bongos/go-live.js +1071 -0
- package/scripts/bongos/goal.js +272 -0
- package/scripts/bongos/government-walk.js +1477 -0
- package/scripts/bongos/grade-correlation-audit.js +310 -0
- package/scripts/bongos/grade-replay.js +237 -0
- package/scripts/bongos/grade-smoke.js +205 -0
- package/scripts/bongos/home-isolation-guard.js +126 -0
- package/scripts/bongos/hooks/pre-push.js +211 -0
- package/scripts/bongos/howto.js +145 -0
- package/scripts/bongos/http-api-client.js +81 -0
- package/scripts/bongos/identity-strip.js +75 -0
- package/scripts/bongos/init.js +1159 -0
- package/scripts/bongos/install-git-hooks.js +200 -0
- package/scripts/bongos/instance-apex.js +38 -0
- package/scripts/bongos/intent-retry.js +52 -0
- package/scripts/bongos/key-card.js +222 -0
- package/scripts/bongos/key-status.js +126 -0
- package/scripts/bongos/land-watch.js +201 -0
- package/scripts/bongos/leak-scan-allowlist.js +293 -0
- package/scripts/bongos/learning-capture.js +145 -0
- package/scripts/bongos/lib.sh +74 -0
- package/scripts/bongos/linkify-refs.js +655 -0
- package/scripts/bongos/lint-infra-exec.js +70 -0
- package/scripts/bongos/lint-migrations.js +102 -0
- package/scripts/bongos/lint-workflow-exec.js +63 -0
- package/scripts/bongos/local-preview-lib.js +128 -0
- package/scripts/bongos/local-preview.js +82 -0
- package/scripts/bongos/login.js +360 -0
- package/scripts/bongos/main-audit.js +625 -0
- package/scripts/bongos/me.js +97 -0
- package/scripts/bongos/memory-map.js +176 -0
- package/scripts/bongos/merge-lock.js +71 -0
- package/scripts/bongos/migration-namespace.js +313 -0
- package/scripts/bongos/mirror-lineage-check.js +343 -0
- package/scripts/bongos/mirror-redact.js +350 -0
- package/scripts/bongos/module-artifact.js +289 -0
- package/scripts/bongos/module-assess-docs.js +238 -0
- package/scripts/bongos/module-assess-installs.js +228 -0
- package/scripts/bongos/module-assess-score.js +111 -0
- package/scripts/bongos/module-assess-security.js +252 -0
- package/scripts/bongos/module-assess-tests.js +278 -0
- package/scripts/bongos/module-assess-version.js +92 -0
- package/scripts/bongos/module-error-report.js +148 -0
- package/scripts/{gds → bongos}/module-test-runner/README.md +3 -3
- package/scripts/{gds → bongos}/module-test-runner/module-tests.yml +2 -2
- package/scripts/bongos/module-test-runner.js +414 -0
- package/scripts/bongos/module.js +1376 -0
- package/scripts/bongos/move-escalation.js +141 -0
- package/scripts/{gds → bongos}/newcomer-floor.config.json +1 -1
- package/scripts/bongos/newcomer-floor.js +421 -0
- package/scripts/{gds → bongos}/newcomer-floor.templates.json +13 -13
- package/scripts/bongos/newcomer-floor.test.js +235 -0
- package/scripts/bongos/next-number.js +163 -0
- package/scripts/bongos/oauth-secret.js +202 -0
- package/scripts/bongos/onboard.js +267 -0
- package/scripts/bongos/onboarding-analyze.js +226 -0
- package/scripts/bongos/onboarding-config.js +179 -0
- package/scripts/bongos/onboarding-ship.js +92 -0
- package/scripts/bongos/pack-env-prefix.js +73 -0
- package/scripts/bongos/package-core.js +1200 -0
- package/scripts/bongos/page-inventory.js +348 -0
- package/scripts/bongos/page-reader.js +722 -0
- package/scripts/bongos/paste-token.js +212 -0
- package/scripts/bongos/plain-cards.js +351 -0
- package/scripts/bongos/portability-smoke-art.sh +85 -0
- package/scripts/bongos/portability-smoke-memory.sh +176 -0
- package/scripts/bongos/preflight.js +214 -0
- package/scripts/bongos/probe-cache.js +246 -0
- package/scripts/bongos/prove-strict-versioning.js +284 -0
- package/scripts/bongos/provision-auto-upgrade.js +162 -0
- package/scripts/bongos/provision-byo-host.js +68 -0
- package/scripts/bongos/provision-capacity.js +79 -0
- package/scripts/bongos/provision-caps.js +63 -0
- package/scripts/bongos/provision-config.js +233 -0
- package/scripts/bongos/provision-core-upgrade.js +1166 -0
- package/scripts/bongos/provision-disconnect.js +88 -0
- package/scripts/bongos/provision-github-setup.js +168 -0
- package/scripts/bongos/provision-net.js +357 -0
- package/scripts/bongos/provision-pin-key.js +176 -0
- package/scripts/bongos/provision-pin-replay.js +126 -0
- package/scripts/bongos/provision-process.js +170 -0
- package/scripts/bongos/provision-render.js +201 -0
- package/scripts/bongos/provision-repo-auth.js +164 -0
- package/scripts/bongos/provision-repo-private.js +98 -0
- package/scripts/bongos/provision-repo.js +1337 -0
- package/scripts/bongos/provision-teardown.js +106 -0
- package/scripts/bongos/provision-units.js +469 -0
- package/scripts/bongos/provision.js +1479 -0
- package/scripts/bongos/publish-credential-check.js +66 -0
- package/scripts/bongos/publish-integration-gate.js +142 -0
- package/scripts/bongos/publish-manifest.js +440 -0
- package/scripts/bongos/publish-watch.js +268 -0
- package/scripts/bongos/pulse.js +338 -0
- package/scripts/bongos/push-main.js +56 -0
- package/scripts/bongos/push-path-brief.js +100 -0
- package/scripts/bongos/read-session-export.js +359 -0
- package/scripts/bongos/reauth.js +155 -0
- package/scripts/bongos/recall.js +183 -0
- package/scripts/bongos/redteam-patrol.js +437 -0
- package/scripts/bongos/regen-instance-docs.js +47 -0
- package/scripts/bongos/release-core.js +80 -0
- package/scripts/bongos/release-notes.js +271 -0
- package/scripts/bongos/release.js +139 -0
- package/scripts/bongos/rename-history-check.js +369 -0
- package/scripts/bongos/rename-ledger-prose.js +482 -0
- package/scripts/bongos/render-api.js +197 -0
- package/scripts/bongos/render-check.js +206 -0
- package/scripts/bongos/render-ideas.js +226 -0
- package/scripts/bongos/render-payload.js +85 -0
- package/scripts/bongos/repo-metrics.js +363 -0
- package/scripts/bongos/review-sheet.js +108 -0
- package/scripts/bongos/role-pack-guard.js +142 -0
- package/scripts/bongos/route-shadow-guard.js +175 -0
- package/scripts/bongos/routine-schedule.js +318 -0
- package/scripts/bongos/run-routine.js +257 -0
- package/scripts/bongos/run-unit-tests.js +654 -0
- package/scripts/bongos/runner-drift.js +151 -0
- package/scripts/bongos/sandbox-stage.js +459 -0
- package/scripts/bongos/scope-map-guard.js +300 -0
- package/scripts/bongos/scope-roster-guard.js +118 -0
- package/scripts/bongos/seam-wiring-guard.js +275 -0
- package/scripts/bongos/search-ingest-db.js +288 -0
- package/scripts/bongos/search-ingest-md.js +269 -0
- package/scripts/bongos/seed-bongos-v1-idea-routing-tasks.js +152 -0
- package/scripts/bongos/seed-bv1-profiles-tasks.js +135 -0
- package/scripts/bongos/seed-bv2-ideator-surface-tasks.js +390 -0
- package/scripts/bongos/seed-staging.sh +117 -0
- package/scripts/bongos/seed-verify-criteria.js +124 -0
- package/scripts/bongos/sequence.js +597 -0
- package/scripts/bongos/session-cost.js +430 -0
- package/scripts/bongos/session-digest-build.js +293 -0
- package/scripts/bongos/session-digest.js +200 -0
- package/scripts/bongos/session-eval.js +631 -0
- package/scripts/bongos/session-transcript-build.js +155 -0
- package/scripts/bongos/session-transcript-upload.js +29 -0
- package/scripts/bongos/session.js +404 -0
- package/scripts/bongos/setup.js +646 -0
- package/scripts/bongos/ship-check.js +89 -0
- package/scripts/bongos/ship-deploy-target.js +393 -0
- package/scripts/bongos/ship-escalation.js +167 -0
- package/scripts/bongos/ship-finish.js +420 -0
- package/scripts/bongos/ship-flow.js +1217 -0
- package/scripts/bongos/ship-git.js +100 -0
- package/scripts/bongos/ship-grade-steps.js +547 -0
- package/scripts/bongos/ship-grade.js +426 -0
- package/scripts/bongos/ship-honesty.js +314 -0
- package/scripts/bongos/ship-io.js +139 -0
- package/scripts/bongos/ship-land.js +1130 -0
- package/scripts/bongos/ship-memory-sync.js +249 -0
- package/scripts/bongos/ship-merge-gate.js +225 -0
- package/scripts/bongos/ship-merge.js +466 -0
- package/scripts/bongos/ship-mode-ask.js +138 -0
- package/scripts/bongos/ship-mode-manual.js +54 -0
- package/scripts/bongos/ship-preflight-steps.js +399 -0
- package/scripts/bongos/ship-regen.js +291 -0
- package/scripts/bongos/ship-resume.js +201 -0
- package/scripts/bongos/ship-session-upload.js +313 -0
- package/scripts/bongos/ship-state.js +110 -0
- package/scripts/bongos/ship-surprise.js +84 -0
- package/scripts/bongos/ship-visual.js +75 -0
- package/scripts/bongos/ship.js +382 -0
- package/scripts/bongos/shipping-mode.js +71 -0
- package/scripts/bongos/skill-lint.js +250 -0
- package/scripts/bongos/skill-preflight.js +361 -0
- package/scripts/bongos/smoke-batch-claim.sh +238 -0
- package/scripts/bongos/smoke-batch-release.sh +316 -0
- package/scripts/bongos/smoke-claim-consistency.sh +222 -0
- package/scripts/bongos/smoke-dependencies.sh +143 -0
- package/scripts/bongos/smoke-gds.js +256 -0
- package/scripts/bongos/smoke-write.sh +275 -0
- package/scripts/bongos/source-text-test-scan.js +106 -0
- package/scripts/bongos/spark.js +294 -0
- package/scripts/bongos/stale-worktrees.js +212 -0
- package/scripts/bongos/start-goals.js +102 -0
- package/scripts/bongos/start.js +1090 -0
- package/scripts/bongos/status.js +545 -0
- package/scripts/bongos/strand-watch.js +315 -0
- package/scripts/bongos/stranded-rows.js +200 -0
- package/scripts/bongos/stray-unit-sweep.sh +71 -0
- package/scripts/bongos/surface.js +101 -0
- package/scripts/bongos/task.js +273 -0
- package/scripts/bongos/test-path-guard.js +99 -0
- package/scripts/bongos/triage.js +742 -0
- package/scripts/bongos/turn-end-sound.js +74 -0
- package/scripts/bongos/tweak-halt.js +70 -0
- package/scripts/bongos/tweak-renders.js +200 -0
- package/scripts/bongos/uat.js +120 -0
- package/scripts/bongos/ui-kit-transform.js +43 -0
- package/scripts/bongos/update-channel.js +512 -0
- package/scripts/bongos/update-sweep.js +829 -0
- package/scripts/bongos/upgrade-artist-gate.js +46 -0
- package/scripts/bongos/upgrade-commit-identity.js +32 -0
- package/scripts/bongos/upgrade-migrate.js +224 -0
- package/scripts/bongos/upgrade-operator.js +73 -0
- package/scripts/bongos/upgrade-outcome.js +174 -0
- package/scripts/bongos/upgrade.js +1499 -0
- package/scripts/bongos/validate-design.js +12 -0
- package/scripts/bongos/version-close.js +621 -0
- package/scripts/bongos/version-literal-guard.js +140 -0
- package/scripts/bongos/version-select.js +79 -0
- package/scripts/bongos/visual-review-nudge.js +39 -0
- package/scripts/bongos/wedge-remedy.js +174 -0
- package/scripts/bongos/worktree-claim-guard.js +130 -0
- package/scripts/bongos/worktree.js +449 -0
- package/scripts/discord/post.js +1 -1
- package/scripts/gds/README.md +9 -0
- package/scripts/gds/abandon.js +6 -136
- package/scripts/gds/accessibility-replay.js +5 -194
- package/scripts/gds/address-park-sweep.sh +7 -90
- package/scripts/gds/adopt-detect.js +5 -121
- package/scripts/gds/adopt-import.js +5 -109
- package/scripts/gds/adopt-preflight.js +5 -185
- package/scripts/gds/adr-namespace.js +5 -271
- package/scripts/gds/agent-invoke.js +5 -687
- package/scripts/gds/agents-sync.js +5 -500
- package/scripts/gds/api-alias-caller-scan.js +5 -255
- package/scripts/gds/api-artifacts.js +6 -0
- package/scripts/gds/api.js +6 -85
- package/scripts/gds/api.ps1 +8 -26
- package/scripts/gds/architect-audit.js +6 -293
- package/scripts/gds/artifact-audit.js +5 -324
- package/scripts/gds/artifact-format.js +6 -203
- package/scripts/gds/ask.js +5 -229
- package/scripts/gds/audit-authorship.sh +7 -328
- package/scripts/gds/audit-deps.js +6 -188
- package/scripts/gds/audit-gate.js +5 -119
- package/scripts/gds/audit-rank-roles.js +6 -171
- package/scripts/gds/audit-replay.sh +7 -204
- package/scripts/gds/autobongos-digest.js +5 -121
- package/scripts/gds/autobongos-grade-cap.js +5 -186
- package/scripts/gds/autobongos-loop.js +5 -208
- package/scripts/gds/autobongos-run.js +5 -1359
- package/scripts/gds/autobongos-service.cmd +8 -49
- package/scripts/gds/autobongos-service.ps1 +8 -270
- package/scripts/gds/autobongos-tweak-lane.js +5 -261
- package/scripts/gds/autobongos-verify.js +5 -616
- package/scripts/gds/autonomy-gate.js +5 -133
- package/scripts/gds/autonomy-gauge-statusline.js +5 -122
- package/scripts/gds/autonomy-gauge.js +5 -82
- package/scripts/gds/backfill-cost.js +6 -175
- package/scripts/gds/backfill-disciplines.js +5 -142
- package/scripts/gds/backfill-session-earnings.js +5 -121
- package/scripts/gds/backfill-session-types.js +5 -85
- package/scripts/gds/backfill-sessions.js +5 -409
- package/scripts/gds/backfill-subagent-rewards.js +5 -483
- package/scripts/gds/backfill-task-rewards.js +5 -411
- package/scripts/gds/backlog-review.js +6 -398
- package/scripts/gds/backup-dropin-sweep.sh +7 -94
- package/scripts/gds/backup.js +6 -115
- package/scripts/gds/baseline-staleness.js +5 -215
- package/scripts/gds/bfg-principal-token.js +6 -64
- package/scripts/gds/bug-attachment-audit.js +5 -147
- package/scripts/gds/bug-attachment-recover.js +5 -196
- package/scripts/gds/bug-triage.js +6 -291
- package/scripts/gds/build-bongos.js +5 -92
- package/scripts/gds/bump-version.js +5 -219
- package/scripts/gds/capture.js +6 -480
- package/scripts/gds/category-advisory-guard.js +5 -205
- package/scripts/gds/ci-grade.js +6 -81
- package/scripts/gds/claim-recall.js +6 -111
- package/scripts/gds/claim.js +6 -788
- package/scripts/gds/claude-materialize.js +5 -1198
- package/scripts/gds/claude-md-template.js +5 -140
- package/scripts/gds/cleanup-orphans.js +6 -73
- package/scripts/gds/cli-lib.js +6 -1204
- package/scripts/gds/client-baseurl-guard.js +5 -114
- package/scripts/gds/conductor-dispatch.js +6 -534
- package/scripts/gds/context-pack.js +6 -325
- package/scripts/gds/control-manifest.js +5 -197
- package/scripts/gds/copy-apply.js +5 -756
- package/scripts/gds/copy-inventory.js +5 -569
- package/scripts/gds/core-origin-follow.js +5 -184
- package/scripts/gds/core-pin-sync.js +5 -258
- package/scripts/gds/cost-report.js +6 -62
- package/scripts/gds/cost.js +6 -46
- package/scripts/gds/credential-presence.js +5 -294
- package/scripts/gds/cutover-codemod.js +5 -239
- package/scripts/gds/db-backup-nightly.sh +7 -231
- package/scripts/gds/db-backup-offsite.sh +7 -266
- package/scripts/gds/demote.js +6 -44
- package/scripts/gds/deploy-divergence.js +6 -445
- package/scripts/gds/deploy-main-audit-gate.sh +7 -96
- package/scripts/gds/design-sync.js +5 -10
- package/scripts/gds/dev-box-guard.js +5 -164
- package/scripts/gds/dev-lib.js +5 -721
- package/scripts/gds/dev.js +5 -643
- package/scripts/gds/device-flow-help.js +5 -70
- package/scripts/gds/diagnose-achievements.js +5 -116
- package/scripts/gds/diagram-facts.js +6 -355
- package/scripts/gds/discord-channels.js +5 -75
- package/scripts/gds/do-api.js +6 -109
- package/scripts/gds/doc-cli-guard.js +5 -266
- package/scripts/gds/doc-comment-coverage.js +5 -137
- package/scripts/gds/doc-control-claims.js +5 -166
- package/scripts/gds/docs-entropy.js +5 -443
- package/scripts/gds/doctor.js +6 -492
- package/scripts/gds/enroll-control-plane.js +5 -99
- package/scripts/gds/exec-path-guard.js +5 -562
- package/scripts/gds/feedback-send.js +5 -247
- package/scripts/gds/fetch-art-key.js +5 -104
- package/scripts/gds/fetch-sound-prefs.js +5 -124
- package/scripts/gds/figma-design-sync.js +5 -9
- package/scripts/gds/find-untested.js +5 -369
- package/scripts/gds/fitness-checks-error-envelope.js +5 -133
- package/scripts/gds/fitness-checks-identity.js +5 -342
- package/scripts/gds/fitness-checks-packaging.js +5 -131
- package/scripts/gds/fitness-checks-route-pins.js +5 -75
- package/scripts/gds/fitness-checks-vocabulary.js +5 -391
- package/scripts/gds/fitness-checks-write-validation.js +5 -156
- package/scripts/gds/fitness-lib.js +5 -126
- package/scripts/gds/fitness-migration-contraction.js +5 -49
- package/scripts/gds/fitness-ratchets.js +5 -563
- package/scripts/gds/fitness.js +5 -1493
- package/scripts/gds/gate-review.js +5 -328
- package/scripts/gds/gating.js +5 -346
- package/scripts/gds/gds-literal-scan.js +5 -194
- package/scripts/gds/gen-api-client.js +5 -555
- package/scripts/gds/gen-api-docs.js +5 -1100
- package/scripts/gds/gen-atlas.js +5 -364
- package/scripts/gds/gen-diagrams.js +6 -607
- package/scripts/gds/gen-file-map.js +5 -335
- package/scripts/gds/gen-freshness.js +5 -31
- package/scripts/gds/gen-interaction-posture.js +5 -120
- package/scripts/gds/gen-repo-map.js +5 -538
- package/scripts/gds/gen-role-responsibilities.js +5 -133
- package/scripts/gds/gen-session-index.js +5 -241
- package/scripts/gds/gen-sounds.js +5 -174
- package/scripts/gds/git-merge-regen.js +6 -291
- package/scripts/gds/go-live.js +5 -1069
- package/scripts/gds/goal.js +6 -271
- package/scripts/gds/government-walk.js +5 -1475
- package/scripts/gds/grade-correlation-audit.js +5 -308
- package/scripts/gds/grade-replay.js +5 -235
- package/scripts/gds/grade-smoke.js +6 -204
- package/scripts/gds/home-isolation-guard.js +5 -125
- package/scripts/gds/hooks/pre-push.js +5 -209
- package/scripts/gds/howto.js +5 -143
- package/scripts/gds/http-api-client.js +6 -81
- package/scripts/gds/identity-strip.js +5 -74
- package/scripts/gds/init.js +5 -1157
- package/scripts/gds/install-git-hooks.js +5 -198
- package/scripts/gds/instance-apex.js +5 -37
- package/scripts/gds/intent-retry.js +5 -51
- package/scripts/gds/key-card.js +6 -221
- package/scripts/gds/key-status.js +5 -124
- package/scripts/gds/land-watch.js +5 -199
- package/scripts/gds/leak-scan-allowlist.js +5 -291
- package/scripts/gds/learning-capture.js +6 -144
- package/scripts/gds/lib.sh +7 -73
- package/scripts/gds/linkify-refs.js +6 -654
- package/scripts/gds/lint-infra-exec.js +5 -68
- package/scripts/gds/lint-migrations.js +5 -100
- package/scripts/gds/lint-workflow-exec.js +5 -61
- package/scripts/gds/local-preview-lib.js +6 -128
- package/scripts/gds/local-preview.js +6 -81
- package/scripts/gds/login.js +5 -358
- package/scripts/gds/main-audit.js +5 -623
- package/scripts/gds/me.js +6 -96
- package/scripts/gds/memory-map.js +5 -174
- package/scripts/gds/merge-lock.js +6 -70
- package/scripts/gds/migration-namespace.js +5 -311
- package/scripts/gds/mirror-lineage-check.js +5 -341
- package/scripts/gds/mirror-redact.js +5 -348
- package/scripts/gds/module-artifact.js +6 -289
- package/scripts/gds/module-assess-docs.js +6 -237
- package/scripts/gds/module-assess-installs.js +6 -227
- package/scripts/gds/module-assess-score.js +6 -110
- package/scripts/gds/module-assess-security.js +6 -251
- package/scripts/gds/module-assess-tests.js +6 -277
- package/scripts/gds/module-assess-version.js +6 -91
- package/scripts/gds/module-error-report.js +5 -146
- package/scripts/gds/module-test-runner.js +6 -413
- package/scripts/gds/module.js +5 -1374
- package/scripts/gds/move-escalation.js +5 -140
- package/scripts/gds/newcomer-floor.js +6 -420
- package/scripts/gds/newcomer-floor.test.js +6 -234
- package/scripts/gds/next-number.js +6 -162
- package/scripts/gds/oauth-secret.js +5 -200
- package/scripts/gds/onboard.js +5 -265
- package/scripts/gds/onboarding-analyze.js +6 -225
- package/scripts/gds/onboarding-config.js +6 -179
- package/scripts/gds/onboarding-ship.js +6 -91
- package/scripts/gds/pack-env-prefix.js +5 -72
- package/scripts/gds/package-core.js +5 -1102
- package/scripts/gds/page-inventory.js +5 -346
- package/scripts/gds/page-reader.js +5 -720
- package/scripts/gds/paste-token.js +6 -211
- package/scripts/gds/plain-cards.js +5 -350
- package/scripts/gds/portability-smoke-art.sh +7 -84
- package/scripts/gds/portability-smoke-memory.sh +7 -175
- package/scripts/gds/preflight.js +5 -212
- package/scripts/gds/probe-cache.js +5 -244
- package/scripts/gds/prove-strict-versioning.js +6 -283
- package/scripts/gds/provision-auto-upgrade.js +5 -161
- package/scripts/gds/provision-byo-host.js +5 -67
- package/scripts/gds/provision-capacity.js +5 -78
- package/scripts/gds/provision-caps.js +5 -62
- package/scripts/gds/provision-config.js +5 -232
- package/scripts/gds/provision-core-upgrade.js +5 -1165
- package/scripts/gds/provision-disconnect.js +5 -87
- package/scripts/gds/provision-github-setup.js +5 -167
- package/scripts/gds/provision-net.js +5 -356
- package/scripts/gds/provision-pin-key.js +5 -175
- package/scripts/gds/provision-pin-replay.js +5 -125
- package/scripts/gds/provision-process.js +5 -169
- package/scripts/gds/provision-render.js +5 -200
- package/scripts/gds/provision-repo-auth.js +5 -163
- package/scripts/gds/provision-repo-private.js +5 -97
- package/scripts/gds/provision-repo.js +5 -1336
- package/scripts/gds/provision-teardown.js +5 -105
- package/scripts/gds/provision-units.js +5 -468
- package/scripts/gds/provision.js +5 -1477
- package/scripts/gds/publish-credential-check.js +6 -65
- package/scripts/gds/publish-integration-gate.js +5 -140
- package/scripts/gds/publish-manifest.js +5 -437
- package/scripts/gds/publish-watch.js +5 -266
- package/scripts/gds/pulse.js +6 -335
- package/scripts/gds/push-main.js +5 -54
- package/scripts/gds/push-path-brief.js +5 -98
- package/scripts/gds/read-session-export.js +5 -357
- package/scripts/gds/reauth.js +6 -154
- package/scripts/gds/recall.js +6 -182
- package/scripts/gds/redteam-patrol.js +5 -435
- package/scripts/gds/regen-instance-docs.js +5 -45
- package/scripts/gds/release-core.js +5 -78
- package/scripts/gds/release-notes.js +5 -270
- package/scripts/gds/release.js +6 -138
- package/scripts/gds/rename-history-check.js +5 -367
- package/scripts/gds/rename-ledger-prose.js +5 -480
- package/scripts/gds/render-api.js +5 -196
- package/scripts/gds/render-check.js +5 -204
- package/scripts/gds/render-ideas.js +6 -225
- package/scripts/gds/render-payload.js +5 -84
- package/scripts/gds/repo-metrics.js +6 -362
- package/scripts/gds/review-sheet.js +5 -106
- package/scripts/gds/role-pack-guard.js +5 -141
- package/scripts/gds/route-shadow-guard.js +5 -173
- package/scripts/gds/routine-schedule.js +5 -281
- package/scripts/gds/run-routine.js +5 -255
- package/scripts/gds/run-unit-tests.js +6 -659
- package/scripts/gds/runner-drift.js +5 -149
- package/scripts/gds/sandbox-stage.js +6 -458
- package/scripts/gds/scope-map-guard.js +5 -299
- package/scripts/gds/scope-roster-guard.js +5 -117
- package/scripts/gds/seam-wiring-guard.js +5 -274
- package/scripts/gds/search-ingest-db.js +6 -287
- package/scripts/gds/search-ingest-md.js +6 -268
- package/scripts/gds/seed-bongos-v1-idea-routing-tasks.js +6 -152
- package/scripts/gds/seed-bv1-profiles-tasks.js +6 -135
- package/scripts/gds/seed-bv2-ideator-surface-tasks.js +6 -390
- package/scripts/gds/seed-staging.sh +7 -116
- package/scripts/gds/seed-verify-criteria.js +6 -124
- package/scripts/gds/sequence.js +6 -596
- package/scripts/gds/session-cost.js +6 -429
- package/scripts/gds/session-digest-build.js +6 -293
- package/scripts/gds/session-digest.js +6 -199
- package/scripts/gds/session-eval.js +6 -630
- package/scripts/gds/session-transcript-build.js +6 -155
- package/scripts/gds/session-transcript-upload.js +6 -29
- package/scripts/gds/session.js +6 -403
- package/scripts/gds/setup.js +6 -645
- package/scripts/gds/ship-check.js +5 -85
- package/scripts/gds/ship-deploy-target.js +5 -392
- package/scripts/gds/ship-escalation.js +5 -166
- package/scripts/gds/ship-finish.js +5 -419
- package/scripts/gds/ship-flow.js +5 -1216
- package/scripts/gds/ship-git.js +5 -99
- package/scripts/gds/ship-grade-steps.js +5 -546
- package/scripts/gds/ship-grade.js +5 -425
- package/scripts/gds/ship-honesty.js +5 -312
- package/scripts/gds/ship-io.js +5 -138
- package/scripts/gds/ship-land.js +5 -1129
- package/scripts/gds/ship-memory-sync.js +5 -248
- package/scripts/gds/ship-merge-gate.js +5 -224
- package/scripts/gds/ship-merge.js +5 -465
- package/scripts/gds/ship-mode-ask.js +5 -137
- package/scripts/gds/ship-mode-manual.js +5 -53
- package/scripts/gds/ship-preflight-steps.js +5 -398
- package/scripts/gds/ship-regen.js +5 -313
- package/scripts/gds/ship-resume.js +5 -200
- package/scripts/gds/ship-session-upload.js +5 -312
- package/scripts/gds/ship-state.js +5 -109
- package/scripts/gds/ship-surprise.js +5 -83
- package/scripts/gds/ship-visual.js +5 -74
- package/scripts/gds/ship.js +5 -380
- package/scripts/gds/shipping-mode.js +5 -69
- package/scripts/gds/skill-lint.js +5 -248
- package/scripts/gds/skill-preflight.js +5 -359
- package/scripts/gds/smoke-batch-claim.sh +7 -237
- package/scripts/gds/smoke-batch-release.sh +7 -315
- package/scripts/gds/smoke-claim-consistency.sh +7 -221
- package/scripts/gds/smoke-dependencies.sh +7 -142
- package/scripts/gds/smoke-gds.js +6 -255
- package/scripts/gds/smoke-write.sh +7 -274
- package/scripts/gds/source-text-test-scan.js +7 -0
- package/scripts/gds/spark.js +6 -293
- package/scripts/gds/stale-worktrees.js +5 -210
- package/scripts/gds/start-goals.js +5 -101
- package/scripts/gds/start.js +6 -1089
- package/scripts/gds/status.js +6 -544
- package/scripts/gds/strand-watch.js +5 -313
- package/scripts/gds/stranded-rows.js +5 -198
- package/scripts/gds/stray-unit-sweep.sh +7 -70
- package/scripts/gds/surface.js +5 -100
- package/scripts/gds/task.js +6 -272
- package/scripts/gds/test-path-guard.js +5 -97
- package/scripts/gds/triage.js +6 -741
- package/scripts/gds/turn-end-sound.js +5 -72
- package/scripts/gds/tweak-halt.js +5 -68
- package/scripts/gds/tweak-renders.js +5 -198
- package/scripts/gds/uat.js +6 -119
- package/scripts/gds/ui-kit-transform.js +5 -41
- package/scripts/gds/update-channel.js +5 -510
- package/scripts/gds/update-sweep.js +5 -827
- package/scripts/gds/upgrade-artist-gate.js +5 -45
- package/scripts/gds/upgrade-commit-identity.js +5 -31
- package/scripts/gds/upgrade-migrate.js +5 -223
- package/scripts/gds/upgrade-operator.js +6 -73
- package/scripts/gds/upgrade-outcome.js +5 -173
- package/scripts/gds/upgrade.js +5 -1497
- package/scripts/gds/validate-design.js +5 -10
- package/scripts/gds/version-close.js +6 -620
- package/scripts/gds/version-literal-guard.js +5 -138
- package/scripts/gds/version-select.js +5 -77
- package/scripts/gds/visual-review-nudge.js +5 -38
- package/scripts/gds/wedge-remedy.js +5 -173
- package/scripts/gds/worktree-claim-guard.js +5 -129
- package/scripts/gds/worktree.js +6 -448
- package/scripts/hall-preview/refresh-fixtures.js +1 -1
- package/scripts/hall-preview/server.js +2 -2
- package/scripts/migrate.sh +3 -3
- package/scripts/public-mirror-export.js +3 -3
- package/scripts/security/dep-audit.js +50 -124
- package/scripts/setup-builder.js +7 -7
- package/src/bongos/api-errors.js +1 -0
- package/src/bongos/api-prefix.js +1 -1
- package/src/bongos/auth-github.js +19 -3
- package/src/bongos/auth-idp.js +7 -0
- package/src/bongos/claim-attribution.js +2 -2
- package/src/bongos/core-moves.js +1 -1
- package/src/bongos/core-update.js +3 -3
- package/src/bongos/craft-mode.js +2 -2
- package/src/bongos/db-kernel.js +15 -3
- package/src/bongos/db.js +30 -4
- package/src/bongos/github-repos.js +1 -1
- package/src/bongos/llm-cache.js +1 -1
- package/src/bongos/llm-pricing.js +1 -1
- package/src/bongos/metrics.js +1 -1
- package/src/bongos/middleware/rate-limit.js +2 -2
- package/src/bongos/module-listing.js +93 -1
- package/src/bongos/module-scope-map.js +90 -85
- package/src/bongos/module-store.js +1 -1
- package/src/bongos/module-submissions.js +1 -1
- package/src/bongos/optimizer.js +1 -1
- package/src/bongos/package-registry.js +1 -1
- package/src/bongos/path-match.js +1 -1
- package/src/bongos/permission-path-check.js +3 -3
- package/src/bongos/platform-visibility-gate.js +3 -5
- package/src/bongos/prelaunch-gate.js +7 -6
- package/src/bongos/route-rank-check.js +2 -2
- package/src/bongos/routes/auth.js +15 -2
- package/src/bongos/routes/backup.js +1 -1
- package/src/bongos/routes/builders.js +29 -1
- package/src/bongos/routes/me.js +49 -18
- package/src/bongos/routes/modules.js +29 -9
- package/src/bongos/routes/public.js +3 -72
- package/src/bongos/schema-lag.js +1 -1
- package/src/bongos/sensitive-surfaces.js +1 -1
- package/src/bongos/serve-internal.js +65 -16
- package/src/bongos/software-update.js +2 -2
- package/src/bongos/upgrade-hold.js +3 -3
- package/src/hall-look.js +6 -5
- package/src/module-api.js +3 -3
- package/src/module-loader/catalog.js +1 -1
- package/src/module-loader/error-tally.js +3 -3
- package/src/module-loader/manifest-schema.js +3 -3
- package/src/platform-server.js +10 -0
- package/src/role-responsibilities.js +1 -1
- package/src/stale-timer.js +2 -2
- package/tests/accessibility_replay.mjs +1 -1
- package/tests/activity_rollup_order_db.mjs +1 -1
- package/tests/activity_snapshots_db.mjs +1 -1
- package/tests/adopt_detect.mjs +1 -1
- package/tests/adopt_import.mjs +1 -1
- package/tests/adopt_preflight.mjs +1 -1
- package/tests/adr_0089_scope.mjs +10 -7
- package/tests/adr_0162_citation.mjs +1 -1
- package/tests/adr_0162_gate_citation.mjs +1 -1
- package/tests/agent_invoke.mjs +1 -1
- package/tests/agent_invoke_live.mjs +3 -3
- package/tests/agents_cron_trigger.mjs +2 -2
- package/tests/agents_roster.mjs +1 -1
- package/tests/agents_sync.mjs +4 -4
- package/tests/allow_rule_guard.mjs +20 -20
- package/tests/api_alias_caller_ratchet.mjs +9 -10
- package/tests/api_alias_exceptions.mjs +7 -6
- package/tests/api_artifacts.mjs +214 -0
- package/tests/api_cli_flags.mjs +3 -3
- package/tests/api_client.mjs +56 -54
- package/tests/api_docs.mjs +30 -9
- package/tests/api_error_envelope_buildcheck.mjs +1 -1
- package/tests/api_msys_path_repair.mjs +2 -2
- package/tests/architect.mjs +1 -1
- package/tests/art_stage.mjs +2 -2
- package/tests/artifact_audit.mjs +2 -2
- package/tests/atlas.mjs +1 -1
- package/tests/audit_deps.mjs +1 -1
- package/tests/audit_gate.mjs +1 -1
- package/tests/auth_flow_slice1.mjs +3 -3
- package/tests/auth_inactive_builder.mjs +43 -5
- package/tests/auth_session_expiry_db.mjs +16 -4
- package/tests/auth_session_ttl.mjs +23 -0
- package/tests/authorship_audit.mjs +2 -2
- package/tests/autobongos_cadence.mjs +1 -1
- package/tests/autobongos_fence.mjs +1 -1
- package/tests/autobongos_grade_cap.mjs +2 -2
- package/tests/autobongos_heartbeat_head.mjs +1 -1
- package/tests/autobongos_host_access.mjs +3 -3
- package/tests/autobongos_loop.mjs +17 -17
- package/tests/autobongos_service_ps1.mjs +3 -3
- package/tests/autobongos_tweak_lane.mjs +2 -2
- package/tests/autobongos_verify.mjs +2 -2
- package/tests/autonomous_fit_protected_paths.mjs +3 -3
- package/tests/autonomy_config_idle.mjs +1 -1
- package/tests/autonomy_daily_checks.mjs +201 -0
- package/tests/autonomy_digest.mjs +1 -1
- package/tests/autonomy_gate.mjs +1 -1
- package/tests/autonomy_gauge.mjs +2 -2
- package/tests/autonomy_runner_identity.mjs +1 -1
- package/tests/backfill_sessions.mjs +8 -8
- package/tests/backfill_subagent_rewards.mjs +1 -1
- package/tests/backfill_task_rewards.mjs +2 -2
- package/tests/backlog_review.mjs +3 -3
- package/tests/baseline_staleness.mjs +2 -2
- package/tests/bfg.mjs +11 -5
- package/tests/bfg_write.mjs +20 -11
- package/tests/blockers_hall.mjs +14 -4
- package/tests/blockers_page_ui.mjs +56 -12
- package/tests/bongos_dispatch.mjs +5 -5
- package/tests/bongos_login.mjs +2 -2
- package/tests/bug_attachment_audit.mjs +1 -1
- package/tests/bug_attachment_recover.mjs +2 -2
- package/tests/bug_triage.mjs +3 -3
- package/tests/build_info.mjs +1 -1
- package/tests/builder_tester_tag.mjs +184 -0
- package/tests/bump_version.mjs +3 -3
- package/tests/canonical_profile_url.mjs +1 -1
- package/tests/capture_error_format.mjs +1 -1
- package/tests/capture_goal_routing.mjs +2 -2
- package/tests/category_advisory_guard.mjs +3 -3
- package/tests/claim_error_surface.mjs +2 -2
- package/tests/claim_from_task_and_home.mjs +1 -1
- package/tests/claim_gate_open_blocker.mjs +7 -4
- package/tests/claim_gate_rebase.mjs +12 -8
- package/tests/claim_recall.mjs +4 -4
- package/tests/claim_resolve_worktree_lock.mjs +1 -1
- package/tests/claude_materialize.mjs +68 -68
- package/tests/clawback_confirmed_backlog.mjs +8 -5
- package/tests/cli_allowlist_permissions.mjs +11 -11
- package/tests/cli_dispatcher.mjs +2 -2
- package/tests/cli_err_code.mjs +6 -6
- package/tests/cli_exit_no_abort.mjs +7 -7
- package/tests/cli_lib_formatters.mjs +2 -2
- package/tests/cli_sessions.mjs +5 -5
- package/tests/cli_surface.mjs +15 -15
- package/tests/cli_token_reissue.mjs +2 -2
- package/tests/client_baseurl_guard.mjs +1 -1
- package/tests/client_bundle_route.mjs +35 -4
- package/tests/cloud_bongos_pack.mjs +1 -1
- package/tests/community_leaderboard_db.mjs +1 -1
- package/tests/conductor.mjs +18 -18
- package/tests/conflict_resolve.mjs +14 -16
- package/tests/consumer_layout_boot.mjs +12 -12
- package/tests/context_pack.mjs +6 -6
- package/tests/control_manifest.mjs +4 -4
- package/tests/copy_desk_page_reads.mjs +1 -1
- package/tests/copy_desk_page_release.mjs +192 -0
- package/tests/copy_inventory.mjs +2 -2
- package/tests/core_auto_upgrade.mjs +1 -1
- package/tests/core_move_notice.mjs +2 -2
- package/tests/core_origin_follow.mjs +7 -7
- package/tests/core_pin_sync.mjs +3 -3
- package/tests/core_upgrade_door.mjs +2 -2
- package/tests/core_upgrade_owner_door.mjs +34 -1
- package/tests/core_upgrade_runner.mjs +19 -19
- package/tests/credential_presence.mjs +2 -2
- package/tests/credit_grant.mjs +3 -3
- package/tests/credit_log_single_writer.mjs +5 -5
- package/tests/criterion_ref_status.mjs +2 -2
- package/tests/cross_discipline_priority_direction.mjs +3 -3
- package/tests/cutover_codemod.mjs +2 -4
- package/tests/db_backup_nightly.mjs +1 -1
- package/tests/db_backup_offsite.mjs +1 -1
- package/tests/db_ownership_handover.mjs +2 -2
- package/tests/dead_deps.mjs +3 -3
- package/tests/dependency_advisory.mjs +1 -1
- package/tests/deploy_audit_gate.mjs +4 -4
- package/tests/deploy_divergence_line.mjs +36 -16
- package/tests/deploy_page_projects.mjs +35 -4
- package/tests/dev_lib.mjs +2 -2
- package/tests/dev_windows.mjs +2 -2
- package/tests/diagram_facts_offset.mjs +1 -1
- package/tests/diagram_repo_slug.mjs +1 -1
- package/tests/diff_derived_signals.mjs +2 -2
- package/tests/dns_preflight.mjs +2 -2
- package/tests/do_api.mjs +3 -3
- package/tests/doc_cli_guard.mjs +28 -28
- package/tests/doc_comment_coverage.mjs +1 -1
- package/tests/doc_control_claims.mjs +11 -11
- package/tests/docs_entropy.mjs +2 -2
- package/tests/docs_openapi_route.mjs +8 -6
- package/tests/doctor_hooks.mjs +1 -1
- package/tests/edit_hints.mjs +3 -2
- package/tests/effective_visibility_predicate.mjs +1 -19
- package/tests/env_knobs_neutral_prefix.mjs +13 -13
- package/tests/exec_path_guard.mjs +4 -4
- package/tests/executed_closure.mjs +18 -12
- package/tests/file_map.mjs +1 -1
- package/tests/find_untested.mjs +13 -13
- package/tests/first_admin_bootstrap.mjs +1 -1
- package/tests/fitness.mjs +16 -16
- package/tests/fitness_gds_ratchet.mjs +2 -2
- package/tests/fitness_installed_core.mjs +3 -3
- package/tests/fitness_no_raw_nul.mjs +1 -1
- package/tests/fitness_ratchets.mjs +3 -3
- package/tests/fitness_scope_roster.mjs +2 -2
- package/tests/fitness_two_root.mjs +8 -8
- package/tests/fixtures/accessibility-replay.json +5 -5
- package/tests/fixtures/grade-replay/recorded-panel-grades.json +1 -1
- package/tests/fixtures/ideator-prefold/README.md +1 -1
- package/tests/fixtures/page-ledger.mjs +22 -0
- package/tests/fixtures/session-506-digest.json +5 -5
- package/tests/gate_approvals.mjs +50 -0
- package/tests/gate_review.mjs +8 -8
- package/tests/gating_review_retired.mjs +2 -2
- package/tests/gen_freshness.mjs +3 -3
- package/tests/git_guard.mjs +3 -3
- package/tests/git_merge_regen.mjs +41 -65
- package/tests/github_one_trip.mjs +4 -4
- package/tests/github_pick_up.mjs +2 -2
- package/tests/github_push_merge_driver.mjs +1 -1
- package/tests/go_live.mjs +3 -2
- package/tests/goal_category.mjs +1 -1
- package/tests/goal_cli.mjs +2 -2
- package/tests/goal_create_spec_entry.mjs +1 -1
- package/tests/goal_invite_consent.mjs +3 -1
- package/tests/goal_move.mjs +1 -1
- package/tests/goal_working_area.mjs +1 -1
- package/tests/government_agent_asks.mjs +7 -7
- package/tests/government_board_room_copy.mjs +6 -1
- package/tests/government_board_view.mjs +39 -0
- package/tests/government_board_vote_ui.mjs +39 -1
- package/tests/government_config.mjs +2 -2
- package/tests/government_live_proof_shape.mjs +1 -1
- package/tests/government_protected_surfaces.mjs +54 -53
- package/tests/government_require_permission.mjs +9 -1
- package/tests/government_vanilla_boot.mjs +1 -1
- package/tests/government_vocabulary.mjs +2 -2
- package/tests/government_walk.mjs +2 -2
- package/tests/grade_body_limit.mjs +6 -4
- package/tests/grade_correlation_audit.mjs +3 -3
- package/tests/grade_diff_hash.mjs +1 -1
- package/tests/grade_engine_replay.mjs +2 -2
- package/tests/grade_server_authoritative.mjs +1 -1
- package/tests/grade_unavailable_display.mjs +1 -1
- package/tests/grader.mjs +8 -24
- package/tests/grader_generated_provenance.mjs +14 -14
- package/tests/grader_no_artifact.mjs +1 -1
- package/tests/grader_prompt_fencing.mjs +1 -1
- package/tests/grader_quality_window_overflow.mjs +1 -1
- package/tests/grader_reader_lens.mjs +3 -3
- package/tests/grader_regrade_delta.mjs +1 -1
- package/tests/grader_unbacked_score.mjs +2 -2
- package/tests/hall_acclaim_vote_control.mjs +113 -0
- package/tests/hall_asset_cache.mjs +127 -0
- package/tests/hall_audit.mjs +63 -0
- package/tests/hall_board_world.mjs +20 -0
- package/tests/hall_city_card_words.mjs +61 -0
- package/tests/hall_client_request_shape.mjs +5 -1
- package/tests/hall_home_ships_bounded.mjs +160 -0
- package/tests/hall_landing_boot.mjs +15 -2
- package/tests/hall_nav.mjs +33 -0
- package/tests/hall_onboarding_bongos_setup.mjs +1 -1
- package/tests/hall_oversight_world.mjs +44 -4
- package/tests/hall_palette.mjs +12 -9
- package/tests/hall_preview_security.mjs +1 -1
- package/tests/hall_profile_world.mjs +17 -0
- package/tests/hall_reading_world.mjs +16 -1
- package/tests/hall_roster_world.mjs +2 -1
- package/tests/hall_studio_world.mjs +4 -1
- package/tests/hall_work_history_id.mjs +39 -0
- package/tests/held_tweak_reporting.mjs +4 -4
- package/tests/helpers.mjs +3 -3
- package/tests/home_bounded_reads.mjs +1 -1
- package/tests/home_isolation_guard.mjs +1 -1
- package/tests/hook_core_resolve.mjs +7 -7
- package/tests/hook_user_agents.mjs +1 -1
- package/tests/hooks_drain.mjs +2 -2
- package/tests/host_topology_skips.mjs +1 -1
- package/tests/howto_guide.mjs +1 -1
- package/tests/howto_moments.mjs +3 -3
- package/tests/hub_account_page.mjs +1 -1
- package/tests/idea_capture_grades.mjs +2 -2
- package/tests/idea_develop_spark.mjs +1 -1
- package/tests/idea_filed_via.mjs +2 -2
- package/tests/idea_ideate_full.mjs +1 -1
- package/tests/idea_spark_mark.mjs +1 -1
- package/tests/idea_spark_queue.mjs +1 -1
- package/tests/idea_triage.mjs +1 -1
- package/tests/idea_triage_grade.mjs +3 -3
- package/tests/idea_vote_permission.mjs +113 -0
- package/tests/idea_votes_fold_db.mjs +123 -0
- package/tests/infra_exec_paths.mjs +12 -12
- package/tests/init.mjs +2 -2
- package/tests/instance_db_migrated_on_code_move.mjs +5 -5
- package/tests/instance_feedback.mjs +9 -9
- package/tests/instance_mismatch_guard.mjs +2 -2
- package/tests/integration_parked_ratchet.mjs +24 -2
- package/tests/intent_retry.mjs +1 -1
- package/tests/interaction_posture.mjs +3 -3
- package/tests/invite_expiry_db.mjs +1 -1
- package/tests/joinability_invite_only.mjs +1 -1
- package/tests/karma_vote_lists.mjs +270 -0
- package/tests/key-card.mjs +2 -2
- package/tests/key-status.mjs +2 -2
- package/tests/knip_ratchet_ambient.mjs +2 -2
- package/tests/known_failing_ratchet.mjs +1 -1
- package/tests/land_watch.mjs +2 -2
- package/tests/landing_legal_pages.mjs +1 -1
- package/tests/landing_page.mjs +2 -2
- package/tests/leaderboard_roles.mjs +4 -1
- package/tests/leak_scan_allowlist.mjs +8 -8
- package/tests/leak_scan_fail_closed.mjs +1 -1
- package/tests/lib_sh_resolution.mjs +9 -9
- package/tests/lifecycle-card.mjs +7 -7
- package/tests/linkify_check.mjs +2 -2
- package/tests/linkify_refs.mjs +1 -1
- package/tests/llm-cache-route.mjs +1 -1
- package/tests/local_preview.mjs +2 -2
- package/tests/main_audit.mjs +3 -3
- package/tests/main_audit_attestation.mjs +1 -1
- package/tests/main_audit_db_roster.mjs +2 -2
- package/tests/main_worktree_busy_reason.mjs +3 -3
- package/tests/markdown_line_endings.mjs +2 -2
- package/tests/me_streak_leaderboard_queries.mjs +193 -0
- package/tests/membership_kind_lockstep.mjs +1 -1
- package/tests/memory_isolation.mjs +16 -8
- package/tests/memory_map.mjs +2 -2
- package/tests/memory_pull.mjs +33 -25
- package/tests/merge_driver_register.mjs +3 -3
- package/tests/migration_allocation.mjs +2 -2
- package/tests/migration_namespace.mjs +1 -1
- package/tests/migrations_forward_safe.mjs +1 -1
- package/tests/mingle.mjs +1 -1
- package/tests/mirror_lineage_fulltree.mjs +3 -3
- package/tests/mirror_lineage_proof.mjs +2 -2
- package/tests/mirror_redact.mjs +4 -4
- package/tests/missing_dep_classify.mjs +3 -3
- package/tests/module-scope-map.mjs +22 -22
- package/tests/module_api_lazy.mjs +1 -1
- package/tests/module_assess_docs.mjs +2 -2
- package/tests/module_assess_installs.mjs +3 -3
- package/tests/module_assess_price_parity.mjs +5 -5
- package/tests/module_assess_score.mjs +5 -5
- package/tests/module_assess_security.mjs +4 -4
- package/tests/module_assess_tests.mjs +3 -3
- package/tests/module_assessments_migration.mjs +1 -1
- package/tests/module_catalog.mjs +2 -2
- package/tests/module_cli.mjs +3 -3
- package/tests/module_entitlements.mjs +1 -1
- package/tests/module_error_counts.mjs +1 -1
- package/tests/module_install.mjs +4 -4
- package/tests/module_loader.mjs +3 -1
- package/tests/module_owned_tests.mjs +1 -1
- package/tests/module_release_channels.mjs +1 -1
- package/tests/module_store_howto.mjs +3 -3
- package/tests/module_store_listing.mjs +139 -2
- package/tests/module_store_publish.mjs +4 -4
- package/tests/module_store_publish_route.mjs +1 -1
- package/tests/module_store_reassess.mjs +1 -1
- package/tests/module_store_registry_migration.mjs +1 -1
- package/tests/module_test_runner.mjs +3 -3
- package/tests/module_update.mjs +4 -4
- package/tests/module_upgrade_updates.mjs +1 -1
- package/tests/move_escalation.mjs +2 -2
- package/tests/nav_permission_atoms.mjs +3 -2
- package/tests/needs_rebase.mjs +7 -3
- package/tests/newcomer_floor.mjs +1 -1
- package/tests/next_number.mjs +1 -1
- package/tests/no_artifact_escalation.mjs +3 -3
- package/tests/npm_release_where.mjs +1 -1
- package/tests/oauth_secret.mjs +2 -2
- package/tests/onboard.mjs +6 -6
- package/tests/onboarding_gate.mjs +2 -2
- package/tests/opt_in_skill_modules.mjs +3 -3
- package/tests/own_scope_guard.mjs +1 -1
- package/tests/own_session_revoke.mjs +4 -1
- package/tests/package_core.mjs +10 -11
- package/tests/page_inventory.mjs +5 -5
- package/tests/page_reader.mjs +7 -7
- package/tests/page_tweak_hold.mjs +6 -6
- package/tests/parallel-load.mjs +1 -1
- package/tests/paste_token_api_base.mjs +1 -1
- package/tests/paste_token_session_store.mjs +2 -2
- package/tests/pending_invite_purge_db.mjs +1 -1
- package/tests/permission_path.mjs +1 -1
- package/tests/pin_replay.mjs +1 -1
- package/tests/pin_write_key.mjs +7 -7
- package/tests/plain_cards.mjs +15 -15
- package/tests/pr_assign.mjs +1 -1
- package/tests/pre_push_hook.mjs +3 -3
- package/tests/preflight_checks.mjs +2 -2
- package/tests/prelaunch_gate.mjs +1 -1
- package/tests/privacy_matrix.mjs +1 -1
- package/tests/probe_cache.mjs +6 -6
- package/tests/profile_connections_ui.mjs +4 -3
- package/tests/profile_fields.mjs +11 -1
- package/tests/profile_privacy_owner_view.mjs +1 -1
- package/tests/profile_role_headline.mjs +10 -9
- package/tests/project_admin_console_model.mjs +1 -1
- package/tests/projects_hub.mjs +1 -1
- package/tests/projects_hub_cloud_hop.mjs +1 -1
- package/tests/promote_goal_id.mjs +6 -6
- package/tests/promotion_sweep.mjs +1 -1
- package/tests/provision.mjs +24 -24
- package/tests/provision_account_identity.mjs +2 -2
- package/tests/provision_byo_host.mjs +1 -1
- package/tests/provision_caddy_wiring.mjs +2 -2
- package/tests/provision_disconnect.mjs +2 -2
- package/tests/provision_dns_first.mjs +1 -1
- package/tests/provision_render.mjs +9 -9
- package/tests/provision_repo_private.mjs +3 -3
- package/tests/provision_resource_caps.mjs +5 -5
- package/tests/provision_restart.mjs +3 -3
- package/tests/provision_settings_apply.mjs +7 -7
- package/tests/provision_teardown_address.mjs +2 -2
- package/tests/provisioning_capacity.mjs +5 -5
- package/tests/provisioning_credential_preflight.mjs +1 -1
- package/tests/provisioning_disconnect.mjs +1 -1
- package/tests/provisioning_error_note_scope.mjs +4 -4
- package/tests/provisioning_paid_shape_gate.mjs +2 -2
- package/tests/provisioning_planet_physics.mjs +16 -0
- package/tests/provisioning_runner_drift_notice.mjs +2 -2
- package/tests/provisioning_settings_env.mjs +1 -1
- package/tests/pruned_lockfile_integrity.mjs +1 -1
- package/tests/public_mirror_export.mjs +1 -1
- package/tests/publish_integration_gate.mjs +2 -2
- package/tests/publish_manifest.mjs +6 -6
- package/tests/publish_watch.mjs +1 -1
- package/tests/push_path_brief.mjs +2 -2
- package/tests/raise.mjs +248 -0
- package/tests/rank_roles_audit.mjs +1 -1
- package/tests/rank_tier_single_source.mjs +2 -2
- package/tests/rate_limit_public.mjs +1 -1
- package/tests/read_default_meter.mjs +2 -2
- package/tests/read_session_export.mjs +1 -1
- package/tests/rebase_gate_set_aside.mjs +1 -1
- package/tests/recall_cli.mjs +1 -1
- package/tests/recall_corpus_health.mjs +3 -2
- package/tests/recall_hints.mjs +1 -1
- package/tests/recruiter_sliver_boundary.mjs +1 -1
- package/tests/redteam_patrol.mjs +2 -2
- package/tests/regrade_actual_minutes.mjs +2 -2
- package/tests/regrade_eligibility.mjs +2 -2
- package/tests/release_core.mjs +2 -2
- package/tests/release_notes.mjs +4 -4
- package/tests/rename_history_restraint.mjs +3 -3
- package/tests/rename_ledger_prose.mjs +6 -6
- package/tests/render_api.mjs +1 -1
- package/tests/render_check.mjs +4 -4
- package/tests/render_deploy.mjs +1 -1
- package/tests/repo_info_binding.mjs +1 -1
- package/tests/repo_map.mjs +5 -5
- package/tests/reward_mode_cost_plus_only.mjs +7 -3
- package/tests/reward_mode_surfacing.mjs +1 -1
- package/tests/role_responsibilities.mjs +1 -1
- package/tests/route_permission_check.mjs +1 -1
- package/tests/route_shadow_guard.mjs +1 -1
- package/tests/route_validation.mjs +1 -1
- package/tests/routine_capture_kind.mjs +24 -13
- package/tests/routine_schedule.mjs +51 -9
- package/tests/run_routine.mjs +5 -5
- package/tests/run_routine_two_root.mjs +5 -5
- package/tests/runner_drift.mjs +17 -17
- package/tests/sandbox_stage.mjs +5 -5
- package/tests/scope_map_guard.mjs +7 -7
- package/tests/scouting_owner_access_and_reach.mjs +1 -1
- package/tests/scripts_gds_forwarders.mjs +224 -0
- package/tests/scrubber_corpus.mjs +2 -2
- package/tests/seam_wiring_guard.mjs +1 -1
- package/tests/search_ingest.mjs +2 -2
- package/tests/search_ingest_db.mjs +1 -1
- package/tests/search_ingest_nul.mjs +6 -6
- package/tests/seed_verify_criteria.mjs +3 -3
- package/tests/sequence.mjs +3 -3
- package/tests/served_paths_shipped.mjs +3 -3
- package/tests/session_506_regression.mjs +1 -1
- package/tests/session_accessibility.mjs +1 -1
- package/tests/session_caps.mjs +1 -1
- package/tests/session_cost.mjs +1 -1
- package/tests/session_digest.mjs +2 -2
- package/tests/session_eval.mjs +6 -6
- package/tests/session_index.mjs +1 -1
- package/tests/session_records.mjs +4 -4
- package/tests/session_rename_fallback.mjs +2 -2
- package/tests/session_reward_on_land.mjs +7 -149
- package/tests/session_reward_on_land_db.mjs +191 -0
- package/tests/session_reward_reconcile.mjs +6 -88
- package/tests/session_reward_reconcile_db.mjs +132 -0
- package/tests/session_transcript.mjs +1 -1
- package/tests/sessions_kit_pager.mjs +2 -1
- package/tests/setup_device_flow_fallback.mjs +2 -2
- package/tests/setup_smoke.mjs +12 -5
- package/tests/setup_status_facts.mjs +54 -12
- package/tests/ship_autolinkify.mjs +2 -2
- package/tests/ship_automerge_injection.mjs +1 -1
- package/tests/ship_base_flag.mjs +1 -1
- package/tests/ship_broadcast_routing.mjs +1 -1
- package/tests/ship_broadcast_server.mjs +2 -2
- package/tests/ship_builder_model.mjs +1 -1
- package/tests/ship_cannot_lie.mjs +9 -9
- package/tests/ship_card.mjs +2 -2
- package/tests/ship_ci_deploy.mjs +7 -7
- package/tests/ship_error_shape.mjs +1 -1
- package/tests/ship_land_ci_not_started.mjs +3 -3
- package/tests/ship_land_conflict.mjs +3 -3
- package/tests/ship_land_proof.mjs +3 -3
- package/tests/ship_land_red_pr.mjs +5 -5
- package/tests/ship_merge_gate.mjs +14 -14
- package/tests/ship_mode.mjs +1 -1
- package/tests/ship_mode_first_ship.mjs +4 -4
- package/tests/ship_mode_hands_off.mjs +8 -8
- package/tests/ship_post_land_verify.mjs +1 -1
- package/tests/ship_preflight.mjs +19 -19
- package/tests/ship_premerge.mjs +1 -1
- package/tests/ship_publish_error.mjs +2 -2
- package/tests/ship_push_diagnosis.mjs +1 -1
- package/tests/ship_regen_copy_inventory.mjs +3 -3
- package/tests/ship_resume.mjs +4 -4
- package/tests/ship_smoke_gate.mjs +1 -1
- package/tests/ship_upload_skip.mjs +1 -1
- package/tests/ship_upstream_deletion.mjs +1 -1
- package/tests/ship_vendored_instance.mjs +8 -8
- package/tests/ship_visual_regrade.mjs +3 -3
- package/tests/ship_zero_commit.mjs +1 -1
- package/tests/skill_docs_unavailable_regrade.mjs +3 -3
- package/tests/skill_friction_kind.mjs +1 -1
- package/tests/skill_grade_recover.mjs +1 -1
- package/tests/skill_grader_health.mjs +1 -1
- package/tests/skill_lint.mjs +1 -1
- package/tests/skill_menu_ruling.mjs +1 -1
- package/tests/skill_preflight.mjs +7 -7
- package/tests/skip_is_not_pass.mjs +22 -1
- package/tests/smoke_dependencies_witness.mjs +2 -2
- package/tests/smoke_preflight.mjs +1 -1
- package/tests/smoke_target.mjs +2 -2
- package/tests/smoke_write_contract.mjs +2 -2
- package/tests/sound_player.mjs +8 -8
- package/tests/source_text_test_ratchet.mjs +97 -0
- package/tests/speciality_corpus_scope.mjs +1 -1
- package/tests/speciality_session_skills.mjs +1 -1
- package/tests/sso_checkin_legacy_field_gone.mjs +4 -2
- package/tests/stale_timer.mjs +3 -3
- package/tests/stale_worktrees.mjs +1 -1
- package/tests/start_env_guard.mjs +1 -1
- package/tests/start_goal_first.mjs +3 -3
- package/tests/start_inbox_count.mjs +1 -1
- package/tests/start_rebase_warning.mjs +1 -1
- package/tests/status_default_version.mjs +3 -3
- package/tests/status_mirror_sync.mjs +1 -1
- package/tests/status_page_no_dead_uptime.mjs +80 -0
- package/tests/stop_refcheck.mjs +1 -1
- package/tests/strand_watch.mjs +1 -1
- package/tests/stranded_rows.mjs +1 -1
- package/tests/stuck_detector.mjs +14 -14
- package/tests/sweep_app_account.mjs +3 -3
- package/tests/task_cli.mjs +2 -2
- package/tests/task_detail_ui.mjs +11 -1
- package/tests/task_discipline_required.mjs +2 -2
- package/tests/task_list_paging.mjs +1 -1
- package/tests/task_visual_slots.mjs +2 -2
- package/tests/terms_acceptance.mjs +1 -1
- package/tests/terms_grandfather_db.mjs +1 -1
- package/tests/test_path_guard.mjs +1 -1
- package/tests/triage_development.mjs +1 -1
- package/tests/tweak_batch_apply.mjs +2 -2
- package/tests/tweak_land_heal.mjs +3 -3
- package/tests/tweak_unattended.mjs +3 -3
- package/tests/ui_design_skills.mjs +2 -2
- package/tests/unit_report_status.mjs +2 -2
- package/tests/unit_runner_serial.mjs +2 -2
- package/tests/unit_runner_teardown_abort.mjs +1 -1
- package/tests/update_channel.mjs +2 -2
- package/tests/update_channel_db.mjs +4 -4
- package/tests/update_subscription_engine.mjs +26 -26
- package/tests/update_sweep_home.mjs +14 -14
- package/tests/upgrade.mjs +11 -11
- package/tests/upgrade_artist_gate.mjs +4 -4
- package/tests/upgrade_commit_identity.mjs +2 -2
- package/tests/upgrade_migrate.mjs +7 -7
- package/tests/upgrade_operator.mjs +2 -2
- package/tests/upgrade_outcome.mjs +2 -2
- package/tests/upgrade_persist_pin.mjs +5 -5
- package/tests/upkeep_home.mjs +1 -1
- package/tests/version_close.mjs +2 -2
- package/tests/version_close_cli.mjs +2 -2
- package/tests/version_close_route.mjs +1 -1
- package/tests/version_literals.mjs +23 -23
- package/tests/visual_review.mjs +5 -5
- package/tests/wedge_remedy.mjs +5 -5
- package/tests/welcome_boot.mjs +116 -0
- package/tests/welcome_boot_browser.mjs +271 -0
- package/tests/wizard_born_first_board.mjs +3 -3
- package/tests/wizard_demo.mjs +1 -1
- package/tests/wizard_one_page.mjs +4 -3
- package/tests/wizard_physics.mjs +3 -1
- package/tests/wizard_physics_more.mjs +42 -3
- package/tests/work_title_wrap.mjs +1 -1
- package/tests/workflow_exec_paths.mjs +6 -6
- package/tests/worktree_claim_guard.mjs +1 -1
- package/tests/worktree_helper.mjs +2 -2
- package/tests/write_validation_gaps.mjs +3 -3
- package/scripts/gds/api.sh +0 -6
- package/scripts/gds/artifact-staleness.js +0 -267
- package/scripts/gds/audit-exports.js +0 -128
- package/scripts/gds/classify-discipline.js +0 -153
- package/scripts/gds/codemod-rename-src-gds.js +0 -145
- package/scripts/gds/coreB-carve-proof.sh +0 -725
- package/scripts/gds/goal-names.js +0 -102
- package/scripts/gds/rename-goals.js +0 -109
- package/scripts/gds/resolve-skill-model.js +0 -57
- package/scripts/gds/security-baseline-check.sh +0 -180
- package/scripts/gds/seed-adopt-tasks.js +0 -75
- package/scripts/gds/seed-api-contract-goal-tasks.js +0 -141
- package/scripts/gds/seed-board-room-tasks.js +0 -196
- package/scripts/gds/seed-bongos-app-tasks.js +0 -294
- package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +0 -81
- package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +0 -100
- package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +0 -307
- package/scripts/gds/seed-bongos-module-system-tasks.js +0 -346
- package/scripts/gds/seed-bongos-tasks.js +0 -214
- package/scripts/gds/seed-bongos-v1-seo-tasks.js +0 -104
- package/scripts/gds/seed-bv1-community-tasks.js +0 -131
- package/scripts/gds/seed-bv1-privacy-invites-tasks.js +0 -133
- package/scripts/gds/seed-bv1-profile-page-tasks.js +0 -161
- package/scripts/gds/seed-bv1-r01-delta-tasks.js +0 -154
- package/scripts/gds/seed-bv2-tweak-mode-tasks.js +0 -277
- package/scripts/gds/seed-gds-v4-tasks.js +0 -624
- package/scripts/gds/seed-governance-tasks.js +0 -340
- package/scripts/gds/seed-medusa-tasks.js +0 -440
- package/scripts/gds/seed-module-upstreaming.js +0 -219
- package/scripts/gds/seed-productization-tasks.js +0 -235
- package/scripts/gds/seed-project-admin-console-tasks.js +0 -88
- package/scripts/gds/seed-provisioning-tasks.js +0 -83
- package/scripts/gds/seed-strict-versioning-tasks.js +0 -275
- package/scripts/gds/seed-v2-world-tasks.js +0 -283
- package/scripts/gds/spike-task-map.js +0 -899
- package/scripts/migrate_cost_ledger.sh +0 -178
- package/scripts/status-probe.mjs +0 -213
- package/src/bongos/uptime-poller.js +0 -93
- package/tests/artifact_staleness.mjs +0 -207
- package/tests/goal_names.mjs +0 -120
- package/tests/government_fold_bench.mjs +0 -50
- package/tests/spike_task_map.mjs +0 -422
- package/tests/status-probe.mjs +0 -89
- /package/{scripts/gds → modules/raise}/CLAUDE.md +0 -0
- /package/scripts/{gds → bongos}/cloudbongos-token-isolation.conf +0 -0
- /package/scripts/{gds → bongos}/discipline-modes.json +0 -0
- /package/scripts/{gds → bongos}/retired-core-skills.json +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# The welcome — Home's first visit of the day (tasks 1004785, 1004818)
|
|
2
|
+
|
|
3
|
+
The owner's Builders' Hall idea 1001262, second half (the first is [`home-reshuffle.md`](home-reshuffle.md)).
|
|
4
|
+
Files: `public/welcome-boot.js` + `public/welcome-boot.css`, and the owner's two paintings
|
|
5
|
+
`public/welcome-day.webp` / `public/welcome-night.webp`, on Home only.
|
|
6
|
+
|
|
7
|
+
**How the look got here (2026-10-23, one day of owner rounds).** Task 1004785 built v5 "the tower"
|
|
8
|
+
([`docs/design/mocks/hall/welcome/v5.src.html`](../../../docs/design/mocks/hall/welcome/v5.src.html)),
|
|
9
|
+
drawn live from the Repo Atlas. The owner then asked for day and night and a slow way out, then
|
|
10
|
+
swapped the tower for a glowing module city with a lunch crew on a beam, dropped the crew, and
|
|
11
|
+
finally had Gemini paint the city by day and by night and asked for those to be animated (task
|
|
12
|
+
1004818). The atlas-drawn scene is gone; the painting is the scene.
|
|
13
|
+
|
|
14
|
+
- **When.** A signed-in builder's first Home load of the LOCAL day, per builder id
|
|
15
|
+
(`localStorage['hall-welcome-day:<id>']`). Storage that throws is never shown it, because it could not
|
|
16
|
+
stop it replaying. Never for a signed-out visitor, never over a deep link (`#/task/N`, `#/idea/N`).
|
|
17
|
+
- **It and the craft picker never stack.** `shell.js` asks `OTBWelcome.onAccess()` first and asks
|
|
18
|
+
`OTBCraftMode.onAccess()` only when the welcome did not show; the welcome also calls
|
|
19
|
+
`OTBCraftMode.markAsked()`, so a later `applyAccess` on the same load cannot open the picker either.
|
|
20
|
+
`welcome-boot.js` loads before the `shell-trail.js` / `craft-mode.js` / `shell.js` trio, which
|
|
21
|
+
`tests/craft_mode.mjs` keeps adjacent.
|
|
22
|
+
- **Day and night.** `timeOfDay` makes 06:00 to 17:59 local `day`, the rest `night`; the root wears
|
|
23
|
+
`.wb--day` or `.wb--night` and shows the matching painting. It opens from a veil (`.wb__veil`),
|
|
24
|
+
white by day and black by night, that lifts once the painting has loaded (or after 1.5s).
|
|
25
|
+
- **The motion is laid on the painting, in its own pixels.** `.wb__art` covers the screen at the
|
|
26
|
+
paintings' 1024x572 shape (both share one layout), so the SVG over it (`viewBox 0 0 1024 572`) keeps
|
|
27
|
+
every light on its mark however the screen crops: `TOWERS` (the circuit towers, where `pulseRuns`
|
|
28
|
+
climbs), `BEACONS` (mast lights, night), `LANES` (hover cars), the moon and stars (night), plus a
|
|
29
|
+
slow drift of the whole picture and two clouds. **A new painting must keep that layout, or the
|
|
30
|
+
coordinates in welcome-boot.js move with it** — `tests/welcome_boot.mjs` checks both files are
|
|
31
|
+
1024x572 WebP.
|
|
32
|
+
- **Banner.** "Working on the core of <project>" from `__BRANDING__.identity` (never a hardcoded word),
|
|
33
|
+
with `core <version>` under it when the public `GET /version` reports one.
|
|
34
|
+
- **Sequence.** Veil lifts, the city powers up (pulses brighten), the greeting comes up at ~3.4s.
|
|
35
|
+
**Skip** jumps to the greeting; **Esc**, "Your home page" and Engineer leave slowly: the picture sinks
|
|
36
|
+
past the rooftops while the welcome fades into the hall underneath (about 2.4s), and the hall can be
|
|
37
|
+
clicked and scrolled from the first moment. A role bound for another room sinks into the veil, then
|
|
38
|
+
opens that room. Under `prefers-reduced-motion` nothing moves and leaving is immediate.
|
|
39
|
+
- **Roles** (the owner's mapping): Owner → `/city`, Ideator → `/thinking`, Artist → `/studio`,
|
|
40
|
+
Engineer → stays on Home. A pick also calls `OTBCraftMode.choose()` with governing / ideating /
|
|
41
|
+
artistry / building. **Owner shows only where `OTBCraftMode.offered('governing')`** — Governing is a
|
|
42
|
+
seat — and the list is built when "Start with your role" is pressed, after the seats have settled.
|
|
43
|
+
- **No painting** (a 404) hides the image and leaves the sky gradient; everything else works.
|
|
44
|
+
- **Colours are the paintings'**, in both hall themes: `welcome-boot.css` and `welcome-boot.js` are on
|
|
45
|
+
`tests/hall_audit.mjs`'s literal exemptions with that reason.
|
|
46
|
+
- **Tests.** `tests/welcome_boot.mjs` (the day rule, the paintings' files and shape, every light inside
|
|
47
|
+
the painting and every pulse inside its tower, the banner, the role map, the load order);
|
|
48
|
+
`tests/welcome_boot_browser.mjs` runs Home's markup with the real shell, craft mode, welcome and
|
|
49
|
+
paintings in a browser: once a day, Skip, Esc, no double picker, the seat rule, no painting, reduced
|
|
50
|
+
motion, the veil by day and night, the slow exit, and that the old drawn scene is gone.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-- ideas_011_idea_votes.sql — builder-on-builder karma votes on IDEAS (task 1004727).
|
|
2
|
+
--
|
|
3
|
+
-- The twin of peer_votes (migrations/058_peer_votes.sql), for ideas. The owner's
|
|
4
|
+
-- decisions (2026-10-23): an idea vote earns karma for the builder who SUBMITTED
|
|
5
|
+
-- the idea (idea_inbox.captured_by), weighs the same as a vote on a task, and
|
|
6
|
+
-- carries the same two guards:
|
|
7
|
+
-- 1. no self-vote — enforced in modules/ideas/votes.js (a CHECK cannot see
|
|
8
|
+
-- idea_inbox.captured_by from here);
|
|
9
|
+
-- 2. the same 7-day karma lag — the ONE weekly fold
|
|
10
|
+
-- (modules/lifecycle/db-analytics.js tallyPeerVotes) folds a vote only once
|
|
11
|
+
-- recorded_at is at least PEER_VOTE_KARMA_LAG_DAYS old, then stamps
|
|
12
|
+
-- tallied_at; a tallied vote is frozen.
|
|
13
|
+
--
|
|
14
|
+
-- A module-owned table, so it carries the module's prefix (ideas_*), and the
|
|
15
|
+
-- fold reaches it through to_regclass so a core with the ideas module off still
|
|
16
|
+
-- folds task votes.
|
|
17
|
+
|
|
18
|
+
CREATE TABLE IF NOT EXISTS ideas_votes (
|
|
19
|
+
id bigserial PRIMARY KEY,
|
|
20
|
+
voter_builder_id bigint NOT NULL REFERENCES builders(id),
|
|
21
|
+
target_idea_id bigint NOT NULL REFERENCES idea_inbox(id) ON DELETE CASCADE,
|
|
22
|
+
vote integer NOT NULL CHECK (vote IN (-1, 1)), -- 0 = cleared = row deleted
|
|
23
|
+
recorded_at timestamptz NOT NULL DEFAULT now(),
|
|
24
|
+
tallied_at timestamptz, -- NULL = not yet folded into karma
|
|
25
|
+
UNIQUE (voter_builder_id, target_idea_id)
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
-- Net-votes-per-idea read (the list control's batched hydrate).
|
|
29
|
+
CREATE INDEX IF NOT EXISTS idx_ideas_votes_target ON ideas_votes (target_idea_id);
|
|
30
|
+
-- Weekly fold hot path: matured, not-yet-folded votes.
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_ideas_votes_untallied ON ideas_votes (recorded_at) WHERE tallied_at IS NULL;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// modules/ideas/projection.js — the SHAPE every idea read returns (task 1004115).
|
|
2
2
|
//
|
|
3
3
|
// Carved out of inbox.js, which sat at exactly the 1,500-line ratchet ceiling
|
|
4
|
-
// (scripts/
|
|
4
|
+
// (scripts/bongos/fitness-ratchets.js OVERSIZE_LINES) and could therefore not grow
|
|
5
5
|
// by one line. That ceiling had started deciding the design rather than the
|
|
6
6
|
// domain: modules/ideas/CLAUDE.md records two files (trail-descent.js,
|
|
7
7
|
// trail-size.js) that exist partly because of it, and task 1004084 shipped an
|
|
@@ -65,7 +65,7 @@ async function withAsks(rows) {
|
|
|
65
65
|
// the scripts that file a TEMPLATED blocker unattended, named here by the
|
|
66
66
|
// `source` each one sends: they keep filing whether or not they send a card, so
|
|
67
67
|
// an unattended run, or a checkout older than this rule, is never refused. They
|
|
68
|
-
// send a card too (scripts/
|
|
68
|
+
// send a card too (scripts/bongos/ask.js postWithAsk). An allow-list, not a
|
|
69
69
|
// deny-list: agents file with `task`, `manual`, or no source at all, and a
|
|
70
70
|
// source nobody thought of is held to the rule rather than let through.
|
|
71
71
|
// tests/government_agent_asks.mjs reads each script's source off the script.
|
|
@@ -137,8 +137,8 @@ module.exports = function buildBlockersRouter() {
|
|
|
137
137
|
if (port && typeof port.checkAsk === 'function') {
|
|
138
138
|
return res.fail('ask_required', {
|
|
139
139
|
status: 400,
|
|
140
|
-
message: port.askRequiredMessage || 'An AI session files a blocker with an ask. Check the card first with: node scripts/
|
|
141
|
-
details: { field: 'ask', helper: 'node scripts/
|
|
140
|
+
message: port.askRequiredMessage || 'An AI session files a blocker with an ask. Check the card first with: node scripts/bongos/ask.js check <file>',
|
|
141
|
+
details: { field: 'ask', helper: 'node scripts/bongos/ask.js check <file>' },
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
144
|
}
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
const express = require('express');
|
|
36
36
|
const api = require('../../../src/module-api');
|
|
37
37
|
const inbox = require('../inbox');
|
|
38
|
+
const ideaVotes = require('../votes'); // task 1004727: karma votes on ideas
|
|
38
39
|
const bornOf = require('../born-of');
|
|
39
40
|
const ideatorStats = require('../ideator-stats');
|
|
40
41
|
// The trail read to the FULL depth of the descent (task 1004089, BV2.R09). Its
|
|
@@ -752,7 +753,7 @@ module.exports = function buildInboxRouter() {
|
|
|
752
753
|
// records) only fixes collisions INSIDE this file; it cannot reach a route
|
|
753
754
|
// another module contributes. The digit constraint can, because it makes the
|
|
754
755
|
// non-numeric path fall THROUGH to whatever is mounted later, whatever the
|
|
755
|
-
// order. `scripts/
|
|
756
|
+
// order. `scripts/bongos/route-shadow-guard.js` fails the build on any remaining
|
|
756
757
|
// pair of this shape, and gen-api-docs strips the constraint so it never
|
|
757
758
|
// reaches the published spec.
|
|
758
759
|
//
|
|
@@ -771,6 +772,33 @@ module.exports = function buildInboxRouter() {
|
|
|
771
772
|
// would dead-end at a "no such idea" card. getIdea() reads any idea by id.
|
|
772
773
|
// Authed: a logged-out resolve hits the hall's softAuth "sign in" card, so no
|
|
773
774
|
// idea text is exposed publicly (the linked refs are public, the bodies aren't).
|
|
775
|
+
// GET /inbox/votes?ids=1,2,3 — net votes and the caller's own vote for every
|
|
776
|
+
// idea row on a page, in one call, for the hall's shared list vote control
|
|
777
|
+
// (vote-control.js, task 1004727): { votes: { [id]: { net, mine } } }.
|
|
778
|
+
// Declared above /inbox/:id. At most 200 ids.
|
|
779
|
+
router.get('/inbox/votes', api.requireBuilder, api.asyncHandler('GET /inbox/votes', async (req, res) => {
|
|
780
|
+
const ids = String(req.query.ids || '').split(',');
|
|
781
|
+
res.json({ votes: await ideaVotes.readIdeaVotes(api.pool, { voterId: req.builder.id, ids }) });
|
|
782
|
+
}));
|
|
783
|
+
|
|
784
|
+
// POST /inbox/:id/vote { vote: 1 | -1 | 0 } — a karma vote on an idea (task
|
|
785
|
+
// 1004727). Earns karma for the idea's SUBMITTER through the same weekly fold
|
|
786
|
+
// as task votes, after the same 7-day lag, weighing the same (owner,
|
|
787
|
+
// 2026-10-23). The same guards as POST /tasks/:id/vote: Metic+ by default, via
|
|
788
|
+
// its own idea.vote permission (task 1004834; seeded wherever task.vote is), 403 on your own idea, 409 once the
|
|
789
|
+
// vote has been folded into karma; 0 clears an untallied vote.
|
|
790
|
+
// rank: metic+archon — a trusted-builder reputation action.
|
|
791
|
+
router.post('/inbox/:id(\\d+)/vote', api.requireBuilder, api.requirePermission('idea.vote'), api.asyncHandler('POST /inbox/:id/vote', async (req, res) => {
|
|
792
|
+
if (validateOrRespond(req, res, {
|
|
793
|
+
vote: { required: true, type: 'integer', enum: [-1, 0, 1] },
|
|
794
|
+
})) return;
|
|
795
|
+
const id = parseId(req, res, { code: 'bad_id', positiveInt: true });
|
|
796
|
+
if (id === null) return;
|
|
797
|
+
const r = await ideaVotes.castIdeaVote(api.pool, { voterId: req.builder.id, ideaId: id, vote: req.body.vote });
|
|
798
|
+
if (!r.ok) return res.fail(r.code, r.status, r.detail ? { detail: r.detail } : undefined);
|
|
799
|
+
res.json(r);
|
|
800
|
+
}));
|
|
801
|
+
|
|
774
802
|
router.get('/inbox/:id(\\d+)', api.requireBuilder, async (req, res) => {
|
|
775
803
|
const id = parseId(req, res, { code: 'bad_id', positiveInt: true });
|
|
776
804
|
if (id === null) return;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// BV2.R17, spec R23, goal 1000095, criterion `ideator-full-idea-shapes-the-space`).
|
|
4
4
|
//
|
|
5
5
|
// WHY IT IS ITS OWN FILE, and not one more route in inbox.js. That file sits at
|
|
6
|
-
// the 1,500-line size ratchet (`scripts/
|
|
6
|
+
// the 1,500-line size ratchet (`scripts/bongos/fitness-ratchets.js` OVERSIZE_LINES)
|
|
7
7
|
// and this route pushed it 24 lines over. Trimming back under would have left it
|
|
8
8
|
// at ~1,497 — a landmine for whoever adds the next line — so the route moved
|
|
9
9
|
// out instead. It is the same call `trail-descent.js`, `trail-size.js` and
|
package/modules/ideas/routing.js
CHANGED
|
@@ -89,7 +89,7 @@ const NEVER_ROUTE_GRADE = 'full';
|
|
|
89
89
|
//
|
|
90
90
|
// Both members carry a human or a channel that means "this is broken":
|
|
91
91
|
// 'api' — POST /inbox, an authenticated builder naming the kind. This
|
|
92
|
-
// is also how `scripts/
|
|
92
|
+
// is also how `scripts/bongos/capture.js` files (it posts to the
|
|
93
93
|
// route rather than calling this module), so the CLI inherits
|
|
94
94
|
// it and needs no member of its own.
|
|
95
95
|
// 'discord-bugs' — the #bugs channel, where the CHANNEL is the classification
|
|
@@ -140,7 +140,7 @@ const BASE_V2_TEMPLATE = Object.freeze({
|
|
|
140
140
|
});
|
|
141
141
|
|
|
142
142
|
// The template a NEW Full Idea is written against — an alias, not a sixth
|
|
143
|
-
// declaration. Consumers that mean "the current questions" (scripts/
|
|
143
|
+
// declaration. Consumers that mean "the current questions" (scripts/bongos/spark.js
|
|
144
144
|
// prints them; the tests build a full payload from them) read this, so the alias
|
|
145
145
|
// is what makes flipping the default a one-line change here rather than a sweep.
|
|
146
146
|
// Anything that means a SPECIFIC vintage names `BASE_V1_TEMPLATE` /
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
//
|
|
14
14
|
// WHY IT IS A SEPARATE FILE rather than more of listIdeaTrailForBuilder. Two
|
|
15
15
|
// reasons, and the second is the real one. inbox.js is AT the 1500-line size
|
|
16
|
-
// ratchet (scripts/
|
|
16
|
+
// ratchet (scripts/bongos/fitness-ratchets.js), so a line added there fails the
|
|
17
17
|
// build — the same wall that put descent.js beside it. And the descent is a
|
|
18
18
|
// different relation from the trail: the trail is idea → task (one query, one
|
|
19
19
|
// page window), the descent is task → task (a walk). Composing them here keeps
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// money: the sum of every stream-1 payout the descent has produced.
|
|
9
9
|
//
|
|
10
10
|
// WHY IT IS A SEPARATE FILE, like trail-descent.js beside it. inbox.js is AT the
|
|
11
|
-
// 1500-line size ratchet (scripts/
|
|
11
|
+
// 1500-line size ratchet (scripts/bongos/fitness-ratchets.js), so a line added
|
|
12
12
|
// there fails the build. And this is a different read again: the trail is
|
|
13
13
|
// idea → task, the descent is a task → task walk, and size is a read of the
|
|
14
14
|
// LEDGER keyed by idea. Three relations, three files.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// modules/ideas/votes.js — karma votes on ideas (task 1004727).
|
|
3
|
+
//
|
|
4
|
+
// The idea twin of POST /tasks/:id/vote (modules/lifecycle/routes/tasks.js), with
|
|
5
|
+
// the SAME guards, as the owner decided (2026-10-23): no voting on your own idea,
|
|
6
|
+
// and a vote already folded into karma is frozen. The karma itself is written by
|
|
7
|
+
// the one weekly fold that also counts task votes (tallyPeerVotes in
|
|
8
|
+
// modules/lifecycle/db-analytics.js), which credits the idea's SUBMITTER
|
|
9
|
+
// (idea_inbox.captured_by) after the same 7-day lag. Table: ideas_votes
|
|
10
|
+
// (migrations/ideas_011_idea_votes.sql).
|
|
11
|
+
//
|
|
12
|
+
// Pure over an injected pool, so tests/karma_vote_lists.mjs drives every guard
|
|
13
|
+
// with a scripted pool; the route only maps the result onto HTTP.
|
|
14
|
+
|
|
15
|
+
async function ideaVoteTally(pool, ideaId) {
|
|
16
|
+
const { rows } = await pool.query(
|
|
17
|
+
`SELECT COALESCE(SUM(vote), 0)::int AS net, COUNT(*)::int AS total
|
|
18
|
+
FROM ideas_votes WHERE target_idea_id = $1`,
|
|
19
|
+
[ideaId]
|
|
20
|
+
);
|
|
21
|
+
const r = rows[0] || {};
|
|
22
|
+
return { net: Number(r.net) || 0, total: Number(r.total) || 0 };
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Cast (1 / -1) or clear (0) one builder's vote on one idea.
|
|
26
|
+
// -> { ok: true, idea_id, my_vote, net_votes, total_votes }
|
|
27
|
+
// | { ok: false, status, code, detail }
|
|
28
|
+
async function castIdeaVote(pool, { voterId, ideaId, vote }) {
|
|
29
|
+
if (![-1, 0, 1].includes(vote)) {
|
|
30
|
+
return { ok: false, status: 400, code: 'bad_vote', detail: 'vote must be 1, -1, or 0 (clear)' };
|
|
31
|
+
}
|
|
32
|
+
const { rows } = await pool.query(`SELECT id, captured_by FROM idea_inbox WHERE id = $1`, [ideaId]);
|
|
33
|
+
if (!rows.length) return { ok: false, status: 404, code: 'idea_not_found' };
|
|
34
|
+
const idea = rows[0];
|
|
35
|
+
if (idea.captured_by == null) {
|
|
36
|
+
return { ok: false, status: 409, code: 'no_submitter', detail: 'this idea has no submitter to credit' };
|
|
37
|
+
}
|
|
38
|
+
if (Number(idea.captured_by) === Number(voterId)) {
|
|
39
|
+
return { ok: false, status: 403, code: 'self_vote_forbidden', detail: 'you cannot vote on your own idea' };
|
|
40
|
+
}
|
|
41
|
+
const frozen = { ok: false, status: 409, code: 'vote_already_counted', detail: 'this vote was folded into karma and can no longer be changed' };
|
|
42
|
+
if (vote === 0) {
|
|
43
|
+
// Same freeze semantics as the task path: only an untallied vote clears, and
|
|
44
|
+
// a 0-row delete is disambiguated so a frozen vote is never reported cleared.
|
|
45
|
+
const del = await pool.query(
|
|
46
|
+
`DELETE FROM ideas_votes WHERE voter_builder_id = $1 AND target_idea_id = $2 AND tallied_at IS NULL RETURNING id`,
|
|
47
|
+
[voterId, ideaId]
|
|
48
|
+
);
|
|
49
|
+
if (del.rowCount === 0) {
|
|
50
|
+
const ex = await pool.query(
|
|
51
|
+
`SELECT 1 FROM ideas_votes WHERE voter_builder_id = $1 AND target_idea_id = $2`,
|
|
52
|
+
[voterId, ideaId]
|
|
53
|
+
);
|
|
54
|
+
if (ex.rowCount > 0) return frozen;
|
|
55
|
+
}
|
|
56
|
+
} else {
|
|
57
|
+
// The freeze check and the write are ONE statement (no TOCTOU with the fold).
|
|
58
|
+
// recorded_at is left alone on a change, so the 7-day lag clock is not reset.
|
|
59
|
+
const up = await pool.query(
|
|
60
|
+
`INSERT INTO ideas_votes (voter_builder_id, target_idea_id, vote)
|
|
61
|
+
VALUES ($1, $2, $3)
|
|
62
|
+
ON CONFLICT (voter_builder_id, target_idea_id)
|
|
63
|
+
DO UPDATE SET vote = EXCLUDED.vote
|
|
64
|
+
WHERE ideas_votes.tallied_at IS NULL
|
|
65
|
+
RETURNING id`,
|
|
66
|
+
[voterId, ideaId, vote]
|
|
67
|
+
);
|
|
68
|
+
if (up.rowCount === 0) return frozen;
|
|
69
|
+
}
|
|
70
|
+
const { net, total } = await ideaVoteTally(pool, ideaId);
|
|
71
|
+
return { ok: true, idea_id: ideaId, my_vote: vote === 0 ? null : vote, net_votes: net, total_votes: total };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Batched read for a list: { [ideaId]: { net, mine } } for every id asked.
|
|
75
|
+
async function readIdeaVotes(pool, { voterId, ids }) {
|
|
76
|
+
const clean = [...new Set((ids || []).map(Number).filter((n) => Number.isInteger(n) && n > 0))].slice(0, 200);
|
|
77
|
+
if (!clean.length) return {};
|
|
78
|
+
const { rows } = await pool.query(
|
|
79
|
+
`SELECT target_idea_id AS id,
|
|
80
|
+
SUM(vote)::int AS net,
|
|
81
|
+
MAX(CASE WHEN voter_builder_id = $2 THEN vote END) AS mine
|
|
82
|
+
FROM ideas_votes
|
|
83
|
+
WHERE target_idea_id = ANY($1::bigint[])
|
|
84
|
+
GROUP BY target_idea_id`,
|
|
85
|
+
[clean, voterId]
|
|
86
|
+
);
|
|
87
|
+
const out = {};
|
|
88
|
+
for (const id of clean) out[id] = { net: 0, mine: null };
|
|
89
|
+
for (const r of rows) out[r.id] = { net: Number(r.net) || 0, mine: r.mine == null ? null : Number(r.mine) };
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
module.exports = { castIdeaVote, readIdeaVotes, ideaVoteTally };
|
|
@@ -93,7 +93,7 @@ function leftoverNotice(taskId, leftovers) {
|
|
|
93
93
|
'off its review sits against code that does not exist on main. Decide which:',
|
|
94
94
|
'',
|
|
95
95
|
` git push origin --delete ${leftovers[0].branch} # the work is cut — drop it`,
|
|
96
|
-
` node scripts/
|
|
96
|
+
` node scripts/bongos/api.js POST /api/gds/tasks/${taskId}/promote # it is not cut — revive the task`,
|
|
97
97
|
'',
|
|
98
98
|
'Close or draft the branch\'s PR either way — the remote is not this tool\'s to change.',
|
|
99
99
|
);
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
//
|
|
109
109
|
// What stays, and why:
|
|
110
110
|
// • `hasCopyOrVisualWork` stays exported. The grader's advisory reader lens
|
|
111
|
-
// (ADR 0298, scripts/
|
|
111
|
+
// (ADR 0298, scripts/bongos/ship-grade.js) is scoped by it.
|
|
112
112
|
// • The runner still resolves `ctx.artistGate` and `ctx.changedFiles` when a
|
|
113
113
|
// caller injects them (routes/lifecycle.js does). No production rule reads
|
|
114
114
|
// either today; the reads are shared with the removal rule's (ship-files.js
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// reliably hit:
|
|
12
12
|
// • generated artifacts (docs/repo-map.md, docs/file-map.md, docs/session-log-
|
|
13
13
|
// index.md, the nested CLAUDE.md symbol blocks) — regenerated from the merged
|
|
14
|
-
// tree by `otb-regen` (scripts/
|
|
14
|
+
// tree by `otb-regen` (scripts/bongos/git-merge-regen.js); and
|
|
15
15
|
// • the docs/adr/README.md append-index — `merge=union` keeps both new rows.
|
|
16
16
|
// But that machinery only runs in a LOCAL merge (a builder's box, /merge-mode,
|
|
17
17
|
// ship's pre-stage). The default ship path is server-mediated (ADR 0055): the box
|
|
@@ -50,7 +50,7 @@ const { promisify } = require('node:util');
|
|
|
50
50
|
const githubPush = require('./github-push');
|
|
51
51
|
const { repoInfo, branding } = require('../../src/module-api');
|
|
52
52
|
const { loadRepoInfo } = repoInfo;
|
|
53
|
-
const { registerMergeDriver } = require('../../scripts/
|
|
53
|
+
const { registerMergeDriver } = require('../../scripts/bongos/install-git-hooks');
|
|
54
54
|
const { computeExecutedClosure, branchTouchesExecutedCode } = require('./executed-closure');
|
|
55
55
|
|
|
56
56
|
// The closure is a property of the SERVER's trusted tree, not of the branch being
|
|
@@ -211,7 +211,7 @@ async function resolveBranchConflicts({ branch } = {}, deps = {}) {
|
|
|
211
211
|
// driver only writes its own %A temp file, and the artifacts it produces are
|
|
212
212
|
// provisional by design (step 7b regenerates them from the merged tree).
|
|
213
213
|
try {
|
|
214
|
-
register(work, { driverScript: path.join(repoRoot, 'scripts', '
|
|
214
|
+
register(work, { driverScript: path.join(repoRoot, 'scripts', 'bongos', 'git-merge-regen.js') });
|
|
215
215
|
} catch (_) {
|
|
216
216
|
/* fall through — the merge will just leave generated conflicts unresolved */
|
|
217
217
|
}
|
|
@@ -235,7 +235,7 @@ async function resolveBranchConflicts({ branch } = {}, deps = {}) {
|
|
|
235
235
|
// live server's environment — the merge driver at step 6 and the generators at
|
|
236
236
|
// 7b — so a branch that rewrote any of it would be running its own code as the
|
|
237
237
|
// server. This check must sit BEFORE the merge, not after it: `git merge` invokes
|
|
238
|
-
// `node scripts/
|
|
238
|
+
// `node scripts/bongos/git-merge-regen.js` by RELATIVE path with cwd at the clone
|
|
239
239
|
// root, so the driver is the clone's copy and it runs at step 6.
|
|
240
240
|
//
|
|
241
241
|
// Fail CLOSED and hand the merge to a human. The alternative — scrubbing the
|
|
@@ -339,9 +339,9 @@ async function resolveBranchConflicts({ branch } = {}, deps = {}) {
|
|
|
339
339
|
// heal regenerates exactly these from the merged tree. Kept as the clone's OWN
|
|
340
340
|
// scripts (each resolves its repo root from its __dirname), never the server's.
|
|
341
341
|
const GENERATOR_SCRIPTS = [
|
|
342
|
-
'scripts/
|
|
343
|
-
'scripts/
|
|
344
|
-
'scripts/
|
|
342
|
+
'scripts/bongos/gen-repo-map.js',
|
|
343
|
+
'scripts/bongos/gen-file-map.js',
|
|
344
|
+
'scripts/bongos/gen-session-index.js',
|
|
345
345
|
// task 1003546: copy-inventory.js writes docs/copy-registry.json +
|
|
346
346
|
// docs/copy-inventory.md, and its rows carry a `line` per copy string — so ANY
|
|
347
347
|
// merge that shifts lines in a scanned UI file re-stales it and `unit`
|
|
@@ -351,20 +351,12 @@ const GENERATOR_SCRIPTS = [
|
|
|
351
351
|
// staleness" — so copy-registry staleness was MISDIAGNOSED as a genuine failure,
|
|
352
352
|
// burned the attempt cap, and announceStrand flagged the task needs_rebase
|
|
353
353
|
// (PR #536 / task 1003544).
|
|
354
|
-
'scripts/
|
|
355
|
-
// task 1003537:
|
|
356
|
-
//
|
|
357
|
-
//
|
|
358
|
-
//
|
|
359
|
-
|
|
360
|
-
// merge driver, regenerated by nobody, and the resulting staleness reported as
|
|
361
|
-
// `no_regen_diff` — "a real check failure" — rather than as drift.
|
|
362
|
-
//
|
|
363
|
-
// ORDER IS LOAD-BEARING: gen-api-client.js reads docs/api/openapi.json off disk, so
|
|
364
|
-
// it must run AFTER gen-api-docs.js has rewritten it for the merged tree. This list
|
|
365
|
-
// is walked in order, one await at a time, which is what makes that safe.
|
|
366
|
-
'scripts/gds/gen-api-docs.js',
|
|
367
|
-
'scripts/gds/gen-api-client.js',
|
|
354
|
+
'scripts/bongos/copy-inventory.js',
|
|
355
|
+
// task 1003537: gen-api-docs.js writes the committed docs/routes-permissions.md stub
|
|
356
|
+
// (a --check gate on the merge ref). The spec, the reference and the typed client it
|
|
357
|
+
// and gen-api-client.js also produce are gitignored since task 1004866 — nothing on
|
|
358
|
+
// the merge ref can be stale — so gen-api-client.js no longer runs here at all.
|
|
359
|
+
'scripts/bongos/gen-api-docs.js',
|
|
368
360
|
];
|
|
369
361
|
|
|
370
362
|
// Run the CLONE's generator scripts in WRITE mode against the merged working tree.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
// WHY THIS FILE EXISTS. `parseCriterionRef` lived inside db-deps-criteria.js,
|
|
5
5
|
// which requires ../../src/module-api and therefore a database pool. The read
|
|
6
|
-
// side — scripts/
|
|
6
|
+
// side — scripts/bongos/status.js, which is public and unauthenticated — could not
|
|
7
7
|
// require it, so
|
|
8
8
|
// it grew its own parser: `Number(ref.slice(1))`, positional only. The system
|
|
9
9
|
// ended up PRINTING an identifier its own write path refuses as unsafe, because
|
|
@@ -135,16 +135,24 @@ async function estimationDriftSummary() {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
|
|
138
|
+
// The rows a builder's own ship list shows: shipped by them, never a smoke task.
|
|
139
|
+
// Shared by the list and its count so the two can never disagree on what "a ship" is.
|
|
140
|
+
const LISTED_SHIPS_WHERE = `t.shipped_by = $1
|
|
141
|
+
AND t.status = 'shipped'
|
|
142
|
+
AND t.title NOT LIKE '\\_\\_smoke\\_\\_%' ESCAPE '\\'`;
|
|
143
|
+
|
|
138
144
|
async function recentShippedTasksByBuilder(builderId, limit = 10) {
|
|
139
145
|
const { rows } = await pool.query(
|
|
140
146
|
// task 1004433: the profile's recent works show what THIS builder was paid
|
|
141
147
|
// (creditsEarnedBySql), not the task's whole payout across everyone.
|
|
148
|
+
// That figure is a per-row subquery over the builder's sessions, so its cost
|
|
149
|
+
// grows with rows returned x sessions; Postgres evaluates it only for the rows
|
|
150
|
+
// that survive the LIMIT, which is why a caller wanting a number should ask
|
|
151
|
+
// countListedShipsByBuilder rather than fetching every row (task 1004854).
|
|
142
152
|
`SELECT t.id, t.title, t.value_summary, t.visual_url, t.visual_alt, t.version_id, t.status, t.shipped_at, t.credits_reward,
|
|
143
153
|
${creditsEarnedBySql('$1')} AS credits_awarded
|
|
144
154
|
FROM tasks t
|
|
145
|
-
WHERE
|
|
146
|
-
AND t.status = 'shipped'
|
|
147
|
-
AND t.title NOT LIKE '\\_\\_smoke\\_\\_%' ESCAPE '\\'
|
|
155
|
+
WHERE ${LISTED_SHIPS_WHERE}
|
|
148
156
|
ORDER BY t.shipped_at DESC NULLS LAST
|
|
149
157
|
LIMIT $2`,
|
|
150
158
|
[builderId, limit]
|
|
@@ -152,6 +160,19 @@ async function recentShippedTasksByBuilder(builderId, limit = 10) {
|
|
|
152
160
|
return rows;
|
|
153
161
|
}
|
|
154
162
|
|
|
163
|
+
// How many ships recentShippedTasksByBuilder would list with no limit — a plain
|
|
164
|
+
// count (task 1004854). No new index: idx_tasks_shipped_by_shipped_at
|
|
165
|
+
// ON tasks (shipped_by, shipped_at DESC) WHERE status = 'shipped' already matches
|
|
166
|
+
// this predicate (migrations/core_228_idea_inbox_captured_by_idx.sql). Measured on
|
|
167
|
+
// a freshly migrated copy with a 3,000-ship builder in 8,000 tasks: 0.8 ms.
|
|
168
|
+
async function countListedShipsByBuilder(builderId) {
|
|
169
|
+
const { rows } = await pool.query(
|
|
170
|
+
`SELECT count(*)::int AS n FROM tasks t WHERE ${LISTED_SHIPS_WHERE}`,
|
|
171
|
+
[builderId]
|
|
172
|
+
);
|
|
173
|
+
return rows[0]?.n ?? 0;
|
|
174
|
+
}
|
|
175
|
+
|
|
155
176
|
// -------------------------------------------------------------------------
|
|
156
177
|
// Achievement getters (listAchievements / getBuilderAchievements /
|
|
157
178
|
// getLeaderboardWithAchievements / getLockedAchievementsProgress /
|
|
@@ -812,6 +833,30 @@ async function tallyPeerVotes() {
|
|
|
812
833
|
voteIds.push(r.id);
|
|
813
834
|
netByBuilder.set(r.builder_id, (netByBuilder.get(r.builder_id) || 0) + r.vote);
|
|
814
835
|
}
|
|
836
|
+
// task 1004727: idea votes fold HERE, in the same transaction, with the same
|
|
837
|
+
// lag, into the idea's SUBMITTER, and weigh the same as a task vote (owner,
|
|
838
|
+
// 2026-10-23). ideas_votes is the ideas module's table, so it is reached only
|
|
839
|
+
// when it exists: a core with that module off still folds task votes.
|
|
840
|
+
const ideaVoteIds = [];
|
|
841
|
+
const { rows: [{ has: hasIdeaVotes }] } = await client.query(
|
|
842
|
+
`SELECT to_regclass('ideas_votes') IS NOT NULL AS has`
|
|
843
|
+
);
|
|
844
|
+
if (hasIdeaVotes) {
|
|
845
|
+
const { rows: maturedIdeas } = await client.query(
|
|
846
|
+
`SELECT iv.id, i.captured_by AS builder_id, iv.vote
|
|
847
|
+
FROM ideas_votes iv
|
|
848
|
+
JOIN idea_inbox i ON i.id = iv.target_idea_id
|
|
849
|
+
WHERE iv.tallied_at IS NULL
|
|
850
|
+
AND iv.recorded_at <= now() - ($1::int * interval '1 day')
|
|
851
|
+
AND i.captured_by IS NOT NULL
|
|
852
|
+
FOR UPDATE OF iv`,
|
|
853
|
+
[PEER_VOTE_KARMA_LAG_DAYS]
|
|
854
|
+
);
|
|
855
|
+
for (const r of maturedIdeas) {
|
|
856
|
+
ideaVoteIds.push(r.id);
|
|
857
|
+
netByBuilder.set(r.builder_id, (netByBuilder.get(r.builder_id) || 0) + r.vote);
|
|
858
|
+
}
|
|
859
|
+
}
|
|
815
860
|
const karmaRows = [];
|
|
816
861
|
for (const [builderId, net] of netByBuilder) {
|
|
817
862
|
if (net === 0) continue; // no net signal → no karma row, but still mark tallied
|
|
@@ -828,9 +873,16 @@ async function tallyPeerVotes() {
|
|
|
828
873
|
[voteIds]
|
|
829
874
|
);
|
|
830
875
|
}
|
|
876
|
+
if (ideaVoteIds.length) {
|
|
877
|
+
await client.query(
|
|
878
|
+
`UPDATE ideas_votes SET tallied_at = now() WHERE id = ANY($1::bigint[])`,
|
|
879
|
+
[ideaVoteIds]
|
|
880
|
+
);
|
|
881
|
+
}
|
|
831
882
|
return {
|
|
832
883
|
ok: true,
|
|
833
|
-
votes_tallied: voteIds.length,
|
|
884
|
+
votes_tallied: voteIds.length + ideaVoteIds.length,
|
|
885
|
+
idea_votes_tallied: ideaVoteIds.length,
|
|
834
886
|
builders_credited: karmaRows.length,
|
|
835
887
|
karma: karmaRows,
|
|
836
888
|
lag_days: PEER_VOTE_KARMA_LAG_DAYS,
|
|
@@ -857,6 +909,7 @@ module.exports = {
|
|
|
857
909
|
recentGradesForBuilder,
|
|
858
910
|
recentShippedTasks,
|
|
859
911
|
recentShippedTasksByBuilder,
|
|
912
|
+
countListedShipsByBuilder,
|
|
860
913
|
releaseMergeLease,
|
|
861
914
|
rollingAvgGrade,
|
|
862
915
|
tallyPeerVotes,
|
|
@@ -335,7 +335,7 @@ async function removeDependency(fromKind, fromId, toKind, toId) {
|
|
|
335
335
|
//
|
|
336
336
|
// The DEFINITION lives in ./criterion-ref.js, which requires nothing at all —
|
|
337
337
|
// because the READ side needs the same vocabulary and cannot pay for a pool.
|
|
338
|
-
// scripts/
|
|
338
|
+
// scripts/bongos/status.js is public and unauthenticated, so while this classifier sat behind
|
|
339
339
|
// ../../src/module-api it was unreachable from there and the CLI grew its own
|
|
340
340
|
// positional-only parser (`Number(ref.slice(1))`). The system ended up PRINTING
|
|
341
341
|
// and REQUIRING the very ref shape resolveCriterionIds below refuses as unsafe
|
|
@@ -871,7 +871,7 @@ async function getBuildersRoster({ staleHours } = {}) {
|
|
|
871
871
|
b.display_name,
|
|
872
872
|
b.avatar_url,
|
|
873
873
|
b.rank,
|
|
874
|
-
b.status,
|
|
874
|
+
b.status, b.is_tester,
|
|
875
875
|
b.total_credits,
|
|
876
876
|
b.karma,
|
|
877
877
|
b.created_at,
|
|
@@ -1445,7 +1445,7 @@ async function mergeTask({ taskId, intoTaskId, reason }, deps = {}) {
|
|
|
1445
1445
|
|
|
1446
1446
|
// Abandoned blocks its dependents forever (owner ruling 2026-08-21, see this
|
|
1447
1447
|
// module's CLAUDE.md), so the merge must say who it just stranded — the same
|
|
1448
|
-
// report scripts/
|
|
1448
|
+
// report scripts/bongos/abandon.js prints. Live dependents only; read inside the
|
|
1449
1449
|
// txn so it agrees with the row we just flipped.
|
|
1450
1450
|
const { rows: stranded } = await client.query(
|
|
1451
1451
|
`SELECT t.id, t.title, t.status
|
|
@@ -849,7 +849,7 @@ async function listTasks({ versionId, status, kind, discipline, goalId, createdB
|
|
|
849
849
|
|
|
850
850
|
// task 1002827 — the candidate pool for the dependency advisory (POST /tasks'
|
|
851
851
|
// `dependency_advisory` + the periodic sweep): OPEN tasks in this version that
|
|
852
|
-
// carry touches[], the same OPEN set scripts/
|
|
852
|
+
// carry touches[], the same OPEN set scripts/bongos/audit-deps.js already treats
|
|
853
853
|
// as "auditable" (ready, backlog, active, blocked). Bounded and cheap —
|
|
854
854
|
// measured 2026-09-22, BONGOS-V2 carries ~51 such rows, since most tasks
|
|
855
855
|
// declare no touches[] at all (ADR 0049 demoted the field to advisory, so
|
|
@@ -1203,7 +1203,7 @@ function taskTouchesProtectedPath(task) {
|
|
|
1203
1203
|
// 3. est_minutes ASC — shorter wins the tiebreak (easier to try)
|
|
1204
1204
|
// 4. id ASC — stable final tiebreak
|
|
1205
1205
|
//
|
|
1206
|
-
// scripts/
|
|
1206
|
+
// scripts/bongos/start.js keeps a hand-copied mirror of this function (it is a
|
|
1207
1207
|
// pure HTTP client and cannot import this module). The two are a documented
|
|
1208
1208
|
// mirror pair: tests/cross_discipline_priority_direction.mjs executes BOTH and
|
|
1209
1209
|
// fails if either drifts. Change one, change the other.
|
|
@@ -230,7 +230,7 @@ async function createVersion({ id, name, status = 'planning', scopeDocPath = nul
|
|
|
230
230
|
// THE TIEBREAK IS NOT NEW. More than one version may sit at 'building' — ADR 0250
|
|
231
231
|
// D5 closes the PLANNING slot only, and refusing a second building version is
|
|
232
232
|
// still unshipped work (task 1003606, BV1.R19) — so a rule was needed, and the
|
|
233
|
-
// project already has one: scripts/
|
|
233
|
+
// project already has one: scripts/bongos/version-select.js pickDefaultVersion,
|
|
234
234
|
// extracted to end nine hardcoded version literals and pinned by
|
|
235
235
|
// tests/version_literals.mjs. This is that rule in SQL: building only, most
|
|
236
236
|
// recently started first, a null started_at sorting LAST so a half-filled row
|
package/modules/lifecycle/db.js
CHANGED
|
@@ -179,6 +179,7 @@ const {
|
|
|
179
179
|
recentGradesForBuilder,
|
|
180
180
|
recentShippedTasks,
|
|
181
181
|
recentShippedTasksByBuilder,
|
|
182
|
+
countListedShipsByBuilder,
|
|
182
183
|
releaseMergeLease,
|
|
183
184
|
rollingAvgGrade,
|
|
184
185
|
tallyPeerVotes,
|
|
@@ -353,6 +354,7 @@ module.exports = {
|
|
|
353
354
|
releaseClaimOnBehalf,
|
|
354
355
|
recentShippedTasks,
|
|
355
356
|
recentShippedTasksByBuilder,
|
|
357
|
+
countListedShipsByBuilder,
|
|
356
358
|
getEstVsActualRatio,
|
|
357
359
|
estimationDriftSummary,
|
|
358
360
|
recentGradesForBuilder,
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
// actual bug: the CLI used to answer a dead edge with "Ship those first (or
|
|
20
20
|
// release them) and try again", advice that can never be followed.
|
|
21
21
|
//
|
|
22
|
-
// Pure + DB-free so the CLI (scripts/
|
|
23
|
-
// (modules/lifecycle/routes/claims.js) and the detector (scripts/
|
|
22
|
+
// Pure + DB-free so the CLI (scripts/bongos/claim.js), the route
|
|
23
|
+
// (modules/lifecycle/routes/claims.js) and the detector (scripts/bongos/audit-deps.js)
|
|
24
24
|
// all speak from ONE definition — the goal-authz.js precedent.
|
|
25
25
|
|
|
26
26
|
// The one terminal task status that can gate a dependency edge. 'shipped' is the
|
|
@@ -155,7 +155,7 @@ function deadDepHint(deps, taskId = null) {
|
|
|
155
155
|
+ tail;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
// Detector core (scripts/
|
|
158
|
+
// Detector core (scripts/bongos/audit-deps.js --stranded): which LIVE tasks are
|
|
159
159
|
// gated by an abandoned dependency? `tasks` are rows carrying { id, status,
|
|
160
160
|
// title, blocked_by: [{ id, status, title }] } — the GET /tasks?include=deps
|
|
161
161
|
// shape. A dependent that is itself terminal is NOT stranded (nothing is
|