@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
|
@@ -1,660 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// scripts/gds/run-unit-tests.js —
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// are picked up automatically (no allowlist to maintain) — only the two
|
|
9
|
-
// exclusion categories need upkeep.
|
|
10
|
-
//
|
|
11
|
-
// Exclusions:
|
|
12
|
-
// INTEGRATION — need a live Postgres/server/network. They belong in the
|
|
13
|
-
// integration-smoke gate (a separate task with a Postgres service container),
|
|
14
|
-
// not this DB-free unit gate. (Classified by a DB/network-marker scan +
|
|
15
|
-
// verified by running them: they fail standalone.)
|
|
16
|
-
// KNOWN_FAILING — currently red on main, tracked separately so this gate stays
|
|
17
|
-
// trustworthy (a gate that's already red gates nothing). See idea #225.
|
|
18
|
-
//
|
|
19
|
-
// Module-owned tests (ADR 0107 / task 1768): a contributed module may ALSO ship
|
|
20
|
-
// its own DB-free tests at modules/<key>/tests/*.mjs. These are discovered by
|
|
21
|
-
// directory the same way the loader discovers modules/*/module.json (no
|
|
22
|
-
// allowlist to maintain here either). main() runs every module's tests whether or
|
|
23
|
-
// not this instance enables it (a default:false module still ships in the repo);
|
|
24
|
-
// discoverModuleTests() keeps the isEnabled gate for callers that inject one.
|
|
25
|
-
|
|
26
|
-
const fs = require('node:fs');
|
|
27
|
-
const path = require('node:path');
|
|
28
|
-
const { execFileSync } = require('node:child_process');
|
|
29
|
-
const { isModuleEnabled } = require('../../src/modules');
|
|
30
|
-
|
|
31
|
-
const TESTS_DIR = path.resolve(__dirname, '..', '..', 'tests');
|
|
32
|
-
const MODULES_DIR = path.resolve(__dirname, '..', '..', 'modules');
|
|
33
|
-
const PER_TEST_TIMEOUT_MS = 90_000;
|
|
34
|
-
// Integration tests (package build + `npm install` + a spawned server) are far heavier than a
|
|
35
|
-
// DB-free unit file, so the `--integration` gate (task 1002221 / audit H1) gives each one a much
|
|
36
|
-
// longer budget than the 90s unit cap.
|
|
37
|
-
const INTEGRATION_TIMEOUT_MS = 300_000;
|
|
38
|
-
// A PARKED test is expected to fail, and a failing test fails fast — it throws or
|
|
39
|
-
// trips an assertion. Handing it the full run-to-completion budget only buys the
|
|
40
|
-
// right to burn five billable CPU-minutes per HUNG entry on every main push, and
|
|
41
|
-
// this set is re-checked on each one. A minute is ample for a verdict that is
|
|
42
|
-
// expected to arrive in seconds; an entry that needs longer than that to fail is
|
|
43
|
-
// itself the finding.
|
|
44
|
-
const PARKED_RECHECK_TIMEOUT_MS = 60_000;
|
|
45
|
-
|
|
46
|
-
// Feature-module test sets (R59 / task 1198). A test that exercises a feature
|
|
47
|
-
// MODULE runs only when this instance enables that module — a vanilla Cloud
|
|
48
|
-
// Bongos instance carries no game/art code, so those tests are not part of its
|
|
49
|
-
// suite. OTB enables both modules (config/modules.json), so nothing is skipped
|
|
50
|
-
// here in this repo's CI; the gating only takes effect on an instance that turns
|
|
51
|
-
// the module off. Curated like INTEGRATION/KNOWN_FAILING (not auto-derived) so a
|
|
52
|
-
// new test is opted in deliberately.
|
|
53
|
-
const MODULE_TESTS = {
|
|
54
|
-
game: [
|
|
55
|
-
'preview_server', 'sandbox_stage', 'walkability', 'snapshot_picker',
|
|
56
|
-
'terrain_picker', 'local_preview',
|
|
57
|
-
],
|
|
58
|
-
'art-pipeline': [
|
|
59
|
-
// task 1003207 deleted anti_grid / autotile_variants / autotile_xverify — the
|
|
60
|
-
// art pipeline is not a module of this core any more, so they targeted a
|
|
61
|
-
// directory that no longer exists. art_key / art_stage still gate on the
|
|
62
|
-
// module being enabled, which is what this map is for.
|
|
63
|
-
'art_key', 'art_stage',
|
|
64
|
-
],
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
// Tests skipped because their feature module is OFF on THIS instance.
|
|
68
|
-
const MODULE_DISABLED = new Set();
|
|
69
|
-
for (const [mod, names] of Object.entries(MODULE_TESTS)) {
|
|
70
|
-
let on = true;
|
|
71
|
-
try { on = isModuleEnabled(mod); } catch { on = true; } // resolve failure → don't skip
|
|
72
|
-
if (!on) for (const n of names) MODULE_DISABLED.add(n);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Shared test scaffolding (task 1096, C12) — exported helpers, not a test file;
|
|
76
|
-
// running it standalone is a no-op. Skip so it doesn't inflate the count.
|
|
77
|
-
const SUPPORT_MODULES = new Set(['helpers']);
|
|
78
|
-
|
|
79
|
-
// Need a live DB / server / network — run in the integration-smoke gate instead.
|
|
80
|
-
const INTEGRATION = new Set([
|
|
81
|
-
// task 1004004: the acclaim feed proves a claim about SQL semantics — that a
|
|
82
|
-
// grader outage nulls rather than scoring 0.0, and that a summed cost over no
|
|
83
|
-
// rows is NULL rather than a free ship. Only a transaction engine settles
|
|
84
|
-
// those, so this runs here and the DB-free sibling covers the renderer.
|
|
85
|
-
'acclaim_feed_evidence_db',
|
|
86
|
-
// task 1002977: proves the changed-totals skip rule (a single INSERT ...
|
|
87
|
-
// WHERE NOT EXISTS statement) and the upsertActivity wiring against real SQL —
|
|
88
|
-
// a fake pool can prove the query shape but not which reports it inserts.
|
|
89
|
-
'activity_snapshots_db',
|
|
90
|
-
// task 1004268: an older rollup report never overwrites a newer one — a WHERE on
|
|
91
|
-
// the upsert's conflict branch, whose NULL handling and racing-writer outcome only
|
|
92
|
-
// a real Postgres settles (the DB-free sibling is activity_rollup_as_of).
|
|
93
|
-
'activity_rollup_order_db',
|
|
94
|
-
// task 1002978: the windowed leaderboard against real SQL. Which snapshot
|
|
95
|
-
// becomes a window baseline (a LATERAL at-or-before probe), a missing baseline
|
|
96
|
-
// counting as zero, and the privacy matrix filtering are all planner facts the
|
|
97
|
-
// DB-free route test can only assert the shape of.
|
|
98
|
-
'community_leaderboard_db',
|
|
99
|
-
'asset_version', 'auth_flow_slice1', 'backfill_sessions', 'bfg', 'bfg_write',
|
|
100
|
-
'cli_token_reissue',
|
|
101
|
-
// consumer_layout_boot builds the core .tgz, `npm install`s it, and boots a live
|
|
102
|
-
// platform-server (task 2142), then installs the package from its own shipped lockfile,
|
|
103
|
-
// migrates brand-new EMPTY databases and serves a database-backed route from one (task
|
|
104
|
-
// 1002863) — network + package build + spawned servers + Postgres. It runs in the
|
|
105
|
-
// integration job of .github/workflows/integration.yml like the rest of this set; there
|
|
106
|
-
// never was a dedicated consumer-layout-boot workflow, whatever older notes say.
|
|
107
|
-
'consumer_layout_boot',
|
|
108
|
-
'claim_gate_open_blocker', 'claim_gate_rebase',
|
|
109
|
-
// task 1004585: a hall-made goal's spec task gates its other work — the edge, the
|
|
110
|
-
// claim gate's unsatisfiedDeps read, and the ship-time auto-promotion, on real Postgres.
|
|
111
|
-
'goal_spec_task_db',
|
|
112
|
-
// task 1003457: proves the blocker-resolve auto-promotion trigger (migration
|
|
113
|
-
// 009, tightened by core_223) fires on the HALL'S OWN write path — the real
|
|
114
|
-
// buildGdsRouter() HTTP routes, not a static SQL-text pin (blocker_resolve_guard.mjs,
|
|
115
|
-
// blocker_unlink.mjs) or a pure-predicate unit test (blocker_link.mjs, which never
|
|
116
|
-
// touches a database). Only a real transaction engine behind a real router proves
|
|
117
|
-
// that; self-skips without a reachable Postgres.
|
|
118
|
-
'blocker_hall_live_proof',
|
|
119
|
-
// task 1002709: core_221's re-keyed backstop index against a real Postgres.
|
|
120
|
-
// The DB-free sibling pins the guard and the migration's text; this proves the
|
|
121
|
-
// index actually refuses the commingling INSERT and still allows the parallel
|
|
122
|
-
// -worktree case. It self-skips without a DB, and refuses any database that
|
|
123
|
-
// has a `builders` table, since it TRUNCATEs claims.
|
|
124
|
-
// task 1004677: two marked auto-pickup claims racing for the last slot of the
|
|
125
|
-
// monthly cap; only real connections prove the advisory lock. Scratch DB only.
|
|
126
|
-
'autopickup_cap_db',
|
|
127
|
-
'claims_requested_worktree_db',
|
|
128
|
-
'clawback_confirmed_backlog',
|
|
129
|
-
// task 1003113: the copy_desk_flags schema half. The module's own tests are
|
|
130
|
-
// DB-free and cover the pure layer; the rules that MATTER here live in the
|
|
131
|
-
// schema — a CHECK-constraint reason floor whose whole argument is that no
|
|
132
|
-
// future write path evades it, a PARTIAL unique index whose partiality is the
|
|
133
|
-
// design, and a close guarded on the open status so two closers cannot both
|
|
134
|
-
// win. None of those are testable without a real transaction engine.
|
|
135
|
-
// (Prose here avoids single-quoted tokens: the pairing guard below parses this
|
|
136
|
-
// set out of the source, so a quoted word in a comment reads as an entry.)
|
|
137
|
-
'copy_desk_flags_db',
|
|
138
|
-
// task 1004362: core_258 against a real Postgres holding a claim created from a
|
|
139
|
-
// dev box session. The claims foreign key that failed the live upgrade is a
|
|
140
|
-
// schema fact only a transaction engine enforces. Always rolled back.
|
|
141
|
-
'core_258_box_session_claims_db',
|
|
142
|
-
// task 1004360: core_262 drops the four builders columns migration 104 added, against a real
|
|
143
|
-
// Postgres, with the foreign key live, then re-runs it. Always rolled back.
|
|
144
|
-
'core_262_drop_box_blocked_db',
|
|
145
|
-
'discord_autojoin', 'discord_oauth',
|
|
146
|
-
// task 1003000 (IC6): the three ideator credit streams against a real Postgres.
|
|
147
|
-
// The three DB-free sibling suites stub the client and SIMULATE the
|
|
148
|
-
// INSERT ... WHERE NOT EXISTS, so the whole no-double-pay argument of the lane
|
|
149
|
-
// is asserted against a fake there; here the statement meets a real transaction
|
|
150
|
-
// engine and the real credit trigger that moves a balance. Every fixture and
|
|
151
|
-
// credit row is written inside a transaction that is always rolled back, so it
|
|
152
|
-
// is safe against a dev database and never TRUNCATEs anything.
|
|
153
|
-
// (Prose here avoids apostrophes and single-quoted tokens: the review gate
|
|
154
|
-
// parses this set out of the source, so a quoted word in a comment reads as an
|
|
155
|
-
// entry — the same reason the copy_desk_flags_db note above is worded that way.)
|
|
156
|
-
'idea_credit_streams_db',
|
|
157
|
-
// task 1003634: the session earnings mirror against real SQL. The defect was
|
|
158
|
-
// never arithmetic — it was which credit_log rows a WHERE clause can reach, so
|
|
159
|
-
// a stubbed client would answer exactly the assumption under test. Here the
|
|
160
|
-
// two-key predicate meets a real planner, and the first test asserts the OLD
|
|
161
|
-
// predicate still returns 0 so the bug itself stays executable. Same
|
|
162
|
-
// always-rolled-back transaction discipline as the entry above.
|
|
163
|
-
'session_earnings_mirror_db',
|
|
164
|
-
// task 1004433: the credits-by-craft split and the per-person earnings
|
|
165
|
-
// fragment against real SQL. Both are questions about which ledger rows a LIKE
|
|
166
|
-
// pattern and a LATERAL unnest reach, which a stubbed client cannot answer.
|
|
167
|
-
// One transaction, always rolled back.
|
|
168
|
-
'role_stats_db',
|
|
169
|
-
// RENAMED by ADR 0174 (goal 1000068) — these entries said governance_* until task
|
|
170
|
-
// 1003091. A curated set keyed by a stem that no longer exists silently stops
|
|
171
|
-
// covering its file: both of these dropped OUT of the integration set and INTO the
|
|
172
|
-
// DB-free lane, where they only "passed" because they self-skip. The pairing guard
|
|
173
|
-
// is in tests/government_live_proof_shape.mjs — every curated entry must name a
|
|
174
|
-
// real test file.
|
|
175
|
-
// task 1003094: the board FRANCHISE against real SQL. The DB-free sibling covers
|
|
176
|
-
// the grammar; this covers what the task actually changed — the ANY() rewrite,
|
|
177
|
-
// the DISTINCT, and that a deactivated builder or a machine principal still
|
|
178
|
-
// never governs under the widened predicate.
|
|
179
|
-
'government_board_membership_db',
|
|
180
|
-
'government_fold_bench', 'government_live_proof',
|
|
181
|
-
// task 1002806: these three declare "in the INTEGRATION set" in their own headers
|
|
182
|
-
// and were never in it. Every one boots a real Postgres and self-skips without one,
|
|
183
|
-
// so in the DB-free lane they ran, skipped, exited 0 and asserted NOTHING — while
|
|
184
|
-
// the --integration lane never saw them either, because it runs only this set. A
|
|
185
|
-
// test that cannot fail in either lane is a file that looks like a gate.
|
|
186
|
-
'handle_machinery', 'hub_profile_leak', 'profile_fields',
|
|
187
|
-
// task 1004735: the schema ownership handover (provision-repo.js dbOwnershipSql) against a
|
|
188
|
-
// real engine — one DO block of catalog queries, so only Postgres can say it runs, what it
|
|
189
|
-
// reaches and that it leaves extension objects alone. Throwaway schema + role, dropped after.
|
|
190
|
-
'db_ownership_handover',
|
|
191
|
-
// task 1002300 (R24): guilds against real SQL. The DB-free sibling
|
|
192
|
-
// (guilds_api) pins the route layer and statement shapes; only a real engine
|
|
193
|
-
// proves the one-owner partial index, the expiry CTE drained before its insert,
|
|
194
|
-
// the cascade on dissolve and the two-statement transfer.
|
|
195
|
-
'guilds_db',
|
|
196
|
-
// task 1002303 (R27): guild engagements against real SQL — the FK that cascades
|
|
197
|
-
// a dissolved guild's engagements and the one that SETs NULL on the echo, the
|
|
198
|
-
// upsert restarting the 30-day window in place, and the joined_at rule. The
|
|
199
|
-
// DB-free sibling (guild_engagement) pins the routes and statement shapes.
|
|
200
|
-
'guild_engagement_db',
|
|
201
|
-
// task 1002302 (R26): a guild's weekly rounded totals against real SQL. Who is
|
|
202
|
-
// counted (three predicates and a FILTERed k count) and the upsert's week guard,
|
|
203
|
-
// re-evaluated against a racing writer's committed row, are planner facts; the
|
|
204
|
-
// DB-free sibling (guild_totals) pins the band scale and statement shapes.
|
|
205
|
-
'guild_totals_db',
|
|
206
|
-
// task 1002306 (R30): the guild map against real SQL — the INNER join that drops
|
|
207
|
-
// an empty public roster, the capped roster count, and NULLS LAST on a guild
|
|
208
|
-
// with no weekly record yet. guilds_api §3b pins the route and statement shape.
|
|
209
|
-
'guild_map_db',
|
|
210
|
-
// task 1003935: 'linkify_refs' was swept in with the three above without the
|
|
211
|
-
// no-DB check they were being fixed for. It touches no Postgres at all — pure
|
|
212
|
-
// string work plus a filesystem walk — so the DB-free lane skipped it and the
|
|
213
|
-
// --integration lane, which runs only this set, never had a reason to. It ran in
|
|
214
|
-
// NEITHER lane, which is the exact failure the comment above describes, and it
|
|
215
|
-
// is why one permanently-red Windows case sat unnoticed. It is now in the unit
|
|
216
|
-
// gate, where it is the only coverage linkifyText has.
|
|
217
|
-
'memory_isolation',
|
|
218
|
-
'memory_pull', 'needs_rebase', 'parallel-load', 'profile_rollup_consent',
|
|
219
|
-
// task 1003145: whether the PLANNER uses the migration 225 index for the recall
|
|
220
|
-
// freshness probe. The DB-free sibling (recall_corpus_health) pins the query
|
|
221
|
-
// shape and that the migration declares the index; only a real Postgres can
|
|
222
|
-
// answer whether the probe stops at the first visible row or reads the corpus —
|
|
223
|
-
// and an unverified claim about exactly that is the comment this task fixed.
|
|
224
|
-
'recall_freshness_plan_db',
|
|
225
|
-
'reward_mode_cost_plus_only',
|
|
226
|
-
// task 1002323 (BV1.R04): the project visibility half against real SQL. The DB-free
|
|
227
|
-
// sibling in the module pins the JS gate and the migration text; only a real engine can
|
|
228
|
-
// prove the CHECK actually refuses a stored fourth state, that the backfill lands on a
|
|
229
|
-
// pre-migration row, and that publishableSql and projectPublishability agree.
|
|
230
|
-
'project_visibility_db',
|
|
231
|
-
// task 1002969 (ADR 0356): the invite expiry against real SQL — the router's and the
|
|
232
|
-
// admission reads' statements run on Postgres, and the hub's notice restamp and
|
|
233
|
-
// listing. The DB-free sibling (application_lifecycle) interprets the same WHEREs.
|
|
234
|
-
'invite_expiry_db',
|
|
235
|
-
// task 1004750 (ADR 0382 D6): passkey tables from the real migration — single-use
|
|
236
|
-
// challenges, TTL sweep, unique credential id, sign-count regression.
|
|
237
|
-
'passkey_foundation_db',
|
|
238
|
-
// task 1004408: migration platform_identity_028 deletes the old hub invite's
|
|
239
|
-
// pending rows before a cutoff it reads from the core_upgrades ledger. Only a real
|
|
240
|
-
// engine runs the DO block, the numeric version compare and the one-shot guard.
|
|
241
|
-
'pending_invite_purge_db',
|
|
242
|
-
// task 1003956 (ADR 0294): that CLI sessions really never expire. The DB-free
|
|
243
|
-
// sibling (auth_session_ttl) pins the constant, createSession's value against a
|
|
244
|
-
// stub pool, and the TEXT of the refresh statement — but a regex over source
|
|
245
|
-
// proves the characters are there, not that Postgres does what they mean. Only a
|
|
246
|
-
// real engine can show the CASE guard leaving a NULL alone on an actual use,
|
|
247
|
-
// which is exactly where the removed timeout would come back.
|
|
248
|
-
'auth_session_expiry_db',
|
|
249
|
-
// task 1003372 (audit A1, core_249): that hashing the bearer at rest does not
|
|
250
|
-
// sign anybody out. The DB-free sibling (session_token_hash) stands in front of
|
|
251
|
-
// the pool and proves the plaintext never reaches a query — the negative that
|
|
252
|
-
// matters — but it cannot show that Postgres accepts the migration, nor that
|
|
253
|
-
// the digest the backfill computes in SQL equals the one the kernel computes in
|
|
254
|
-
// Node. That mismatch would leave every new session working and every migrated
|
|
255
|
-
// one dead, which is the failure a source-reading test walks straight past.
|
|
256
|
-
'session_token_hash_db',
|
|
257
|
-
// task 1002002: the no-false-alarm half of the schema-lag detector. The DB-free
|
|
258
|
-
// sibling (schema_lag) covers the arithmetic against a stub; only a database that
|
|
259
|
-
// migrate.sh has just run can show the expected stems (core + enabled modules) equal the recorded ones,
|
|
260
|
-
// so a healthy instance reads zero rather than a permanent SCHEMA BEHIND.
|
|
261
|
-
'schema_lag_db',
|
|
262
|
-
// task 1004137: migrate.sh's module set reads the hall's DB overrides — needs the
|
|
263
|
-
// override table and a database the real migrate.sh can connect to.
|
|
264
|
-
'migrate_module_overrides_db',
|
|
265
|
-
'scouting_rollup_fanout', 'session_records',
|
|
266
|
-
// task 1003217: the cost-row RAISE against real SQL. Every claim in it IS the
|
|
267
|
-
// SQL — an ON CONFLICT DO UPDATE guarded to move a row only upward, and a
|
|
268
|
-
// revisit predicate comparing cost_log.recorded_at to the digest upload. The
|
|
269
|
-
// DB-free siblings (session_records, session_cost) cover the transcript
|
|
270
|
-
// de-duplication half.
|
|
271
|
-
'session_cost_row_raise',
|
|
272
|
-
// task 1003360: the T&C grandfather migration against real SQL. The DB-free
|
|
273
|
-
// sibling (the T&C acceptance suite) pins the statement text and runs the conflict
|
|
274
|
-
// branch over a fake table; only a real engine runs the one-shot DO block and
|
|
275
|
-
// shows a legacy account published again and marked apart from a sign-in.
|
|
276
|
-
'terms_grandfather_db',
|
|
277
|
-
'setup_smoke',
|
|
278
|
-
'status-probe',
|
|
279
|
-
]);
|
|
280
|
-
|
|
281
|
-
// Excluded so this gate is trustworthy in a CLEAN checkout (the CI condition):
|
|
282
|
-
// - autotile_variants / autotile_xverify / anti_grid were parked here because they
|
|
283
|
-
// needed modules/art-pipeline artifacts. Task 1003207 DELETED all three: the
|
|
284
|
-
// art pipeline left this core with the game, so they targeted a module that no
|
|
285
|
-
// longer exists and could never have gone green again. A permanently-parked
|
|
286
|
-
// test is not a gate, it is a file that looks like one.
|
|
287
|
-
//
|
|
288
|
-
// grader_panel was excluded here (2 "failing" assertions, idea #225) until #954
|
|
289
|
-
// (V4.R16) diagnosed them as STALE — they predated #481's Narc-advisory change,
|
|
290
|
-
// NOT a grader regression. Now green and back under this gate so the quality-
|
|
291
|
-
// gate brain can't silently regress.
|
|
292
|
-
// EMPTY, and that is the intended steady state (task 1002617 closed the last entry).
|
|
293
|
-
//
|
|
294
|
-
// This set existed because the unit lane's first-ever runs (task 1002610) surfaced three
|
|
295
|
-
// tests red in every clean environment, and a gate that is already red gates nothing —
|
|
296
|
-
// so they were parked to make `unit` requireable while each was diagnosed. platform_boot
|
|
297
|
-
// and publish_manifest were fixed earlier; served_paths_shipped was the survivor, and its
|
|
298
|
-
// failure turned out to be its own self-guard correctly reporting that the source scan
|
|
299
|
-
// had gone blind when the OpenAPI serve moved to a root ladder (task 1002200).
|
|
300
|
-
//
|
|
301
|
-
// Adding an entry here is a real cost and should be rare: a parked test is invisible
|
|
302
|
-
// coverage, and this one sat parked long enough that its diagnosis had to be redone.
|
|
303
|
-
// PAIRING: tests/known_failing_ratchet.mjs keeps EXECUTING each parked test and fails the
|
|
304
|
-
// suite the moment one starts passing — so this set cannot rot silently.
|
|
305
|
-
const KNOWN_FAILING = new Set([]);
|
|
306
|
-
|
|
307
|
-
// Task 1003845: on Windows + Node 24 a suite that hard-exits after serving HTTP can
|
|
308
|
-
// print a clean verdict and THEN abort natively (the cliExit class in
|
|
309
|
-
// scripts/gds/CLAUDE.md), exiting 127 or 0xC0000409 depending on timing. Counted as
|
|
310
|
-
// FAILED, these swap in and out of a Windows baseline, so a new failure can hide
|
|
311
|
-
// behind a vanished one. Recognised by signature plus the suite's own verdict —
|
|
312
|
-
// never by a list of names, which docs/recipes/windows-builders.md shows goes stale
|
|
313
|
-
// in hours. Only the `N passed, M failed` summary counts as a verdict: node:test
|
|
314
|
-
// suites set exitCode rather than hard-exiting, so they do not hit this.
|
|
315
|
-
const LIBUV_TEARDOWN_ABORT = /Assertion failed: !\(handle->flags & UV_HANDLE_CLOSING\)/;
|
|
316
|
-
|
|
317
|
-
// A suite that reports honest skips ends `N passed, 0 failed, M skipped` (task 1003993), so
|
|
318
|
-
// the optional suffix is part of a clean verdict. Without it, the first suite to start telling
|
|
319
|
-
// the truth about unrun coverage would have its clean verdict read as unrecognised and its
|
|
320
|
-
// Windows teardown abort counted as a real failure — a fix for one honesty bug creating another.
|
|
321
|
-
const CLEAN_VERDICT_RE = /\b[1-9]\d* passed, 0 failed(?:, \d+ skipped)?\s*$/;
|
|
322
|
-
|
|
323
|
-
// ` SKIP <name>` from a suite's own stdout. Counted here rather than parsed out of the summary
|
|
324
|
-
// line so a suite that prints skips without a summary suffix is still surfaced.
|
|
325
|
-
const SKIP_LINE_RE = /^\s*SKIP\b/;
|
|
326
|
-
|
|
327
|
-
// node:test suites print no SKIP line at all — they report `ℹ skipped N` in their own summary
|
|
328
|
-
// (task 1004112). Until this, every skip in a node:test suite was INVISIBLE to the roll-up whose
|
|
329
|
-
// entire purpose is to say "a skipped case is not a passing one": the suite printed `ok`, the
|
|
330
|
-
// roll-up counted nothing, and the unrun coverage vanished without a trace.
|
|
331
|
-
//
|
|
332
|
-
// Found while fixing this counter's own subject. Gating four unevaluable cases in
|
|
333
|
-
// tests/skip_is_not_pass.mjs turned four honest FAILURES into four invisible skips — the 1003993
|
|
334
|
-
// defect reappearing one layer up, in the file written to prevent it. A skip that nothing counts
|
|
335
|
-
// is a pass with extra steps.
|
|
336
|
-
const NODE_TEST_SKIP_RE = /^\s*(?:ℹ|#)\s*skipped\s+(\d+)\s*$/m;
|
|
337
|
-
|
|
338
|
-
function countSkips(stdout) {
|
|
339
|
-
if (!stdout) return 0;
|
|
340
|
-
const lines = stdout.split('\n').filter((l) => SKIP_LINE_RE.test(l)).length;
|
|
341
|
-
// The two formats are mutually exclusive in practice (a suite is either the project's own
|
|
342
|
-
// harness or node:test), but SUM rather than branch: a suite that grew both would otherwise
|
|
343
|
-
// report whichever we happened to check first, and under-reporting is the failure mode here.
|
|
344
|
-
const m = stdout.match(NODE_TEST_SKIP_RE);
|
|
345
|
-
return lines + (m ? Number(m[1]) : 0);
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
function isCleanTeardownAbort(stdout, stderr) {
|
|
349
|
-
if (!LIBUV_TEARDOWN_ABORT.test(stderr)) return false;
|
|
350
|
-
// Line-leading only: a passing case titled "... is FAIL-CLOSED" is not a failure.
|
|
351
|
-
if (/^\s*FAIL\b/m.test(stdout)) return false;
|
|
352
|
-
const lastLine = stdout.trim().split('\n').pop();
|
|
353
|
-
return CLEAN_VERDICT_RE.test(lastLine);
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
// The failing tests as ONE line, for the `unit-report` commit status the workflow
|
|
357
|
-
// posts (task 1003988): a builder box cannot read check runs without Checks:read,
|
|
358
|
-
// but it can read a status, so this line is how it learns WHICH test failed.
|
|
359
|
-
// GitHub caps a status description at 140 chars; the count leads so a cut list
|
|
360
|
-
// still says how many. Whitespace is folded because the line is written to
|
|
361
|
-
// $GITHUB_OUTPUT, where a newline inside a test name would forge a second key.
|
|
362
|
-
const STATUS_DESCRIPTION_MAX = 140;
|
|
363
|
-
|
|
364
|
-
function describeFailures(failures) {
|
|
365
|
-
if (!failures.length) return '';
|
|
366
|
-
const line = `${failures.length} failed: ${failures.join(', ')}`.replace(/\s+/g, ' ');
|
|
367
|
-
return line.length <= STATUS_DESCRIPTION_MAX ? line : `${line.slice(0, STATUS_DESCRIPTION_MAX - 1)}…`;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
function reportToWorkflow(failures) {
|
|
371
|
-
if (!process.env.GITHUB_OUTPUT) return;
|
|
372
|
-
fs.appendFileSync(process.env.GITHUB_OUTPUT, `failures=${describeFailures(failures)}\n`);
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
// Discover modules/<key>/tests/*.mjs. Pure-ish (reads disk; `isEnabled` is
|
|
376
|
-
// injected so this is unit-testable with zero real modules/ or DB config —
|
|
377
|
-
// mirrors the injected-dependency pattern the module loader itself uses).
|
|
378
|
-
// Returns { included: [{key,name,file}], skippedDisabled: [{key,name}] }.
|
|
379
|
-
// A key that isEnabled() can't resolve (bad/missing manifest — not a real
|
|
380
|
-
// mounted module) is treated as disabled: it isn't mounted, so its tests
|
|
381
|
-
// don't run either.
|
|
382
|
-
function discoverModuleTests({ modulesDir = MODULES_DIR, isEnabled = isModuleEnabled } = {}) {
|
|
383
|
-
const included = [];
|
|
384
|
-
const skippedDisabled = [];
|
|
385
|
-
let entries;
|
|
386
|
-
try { entries = fs.readdirSync(modulesDir, { withFileTypes: true }); }
|
|
387
|
-
catch (e) { if (e.code === 'ENOENT') return { included, skippedDisabled }; throw e; }
|
|
388
|
-
|
|
389
|
-
for (const ent of entries) {
|
|
390
|
-
if (!ent.isDirectory()) continue;
|
|
391
|
-
const key = ent.name;
|
|
392
|
-
const testsDir = path.join(modulesDir, key, 'tests');
|
|
393
|
-
let files;
|
|
394
|
-
try { files = fs.readdirSync(testsDir).filter((f) => f.endsWith('.mjs')); }
|
|
395
|
-
catch (e) { if (e.code === 'ENOENT') continue; throw e; }
|
|
396
|
-
if (files.length === 0) continue;
|
|
397
|
-
|
|
398
|
-
let enabled;
|
|
399
|
-
try { enabled = isEnabled(key); } catch { enabled = false; }
|
|
400
|
-
|
|
401
|
-
for (const f of files) {
|
|
402
|
-
const entry = { key, name: f.replace(/\.mjs$/, ''), file: path.join(testsDir, f) };
|
|
403
|
-
(enabled ? included : skippedDisabled).push(entry);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
included.sort((a, b) => (a.key + a.name).localeCompare(b.key + b.name));
|
|
407
|
-
return { included, skippedDisabled };
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
// ── INTEGRATION_PARKED — the integration lane's known-failing set (task 1004034) ──
|
|
411
|
-
//
|
|
412
|
-
// The integration lane (task 1000862) gave these 20 their FIRST EVER run on
|
|
413
|
-
// 2026-09-17 and all 20 failed. None is a regression: nothing had ever executed
|
|
414
|
-
// them, in any lane, so nothing was keeping them honest. Parked by owner decision
|
|
415
|
-
// so the lane can gate the tests that DO pass — a gate that is already red gates
|
|
416
|
-
// nothing, the same argument task 1002617 made for the unit lane.
|
|
417
|
-
//
|
|
418
|
-
// WHY A SEPARATE SET, AND NOT KNOWN_FAILING. KNOWN_FAILING is paired with
|
|
419
|
-
// tests/known_failing_ratchet.mjs, which re-executes each parked test and reds the
|
|
420
|
-
// suite the moment one starts passing. That ratchet runs in the DB-FREE lane: an
|
|
421
|
-
// integration test executed there fails for want of a database, so `still fails`
|
|
422
|
-
// would be trivially true and a genuine fix would go unnoticed. Parking these there
|
|
423
|
-
// would have bought the appearance of tracking and none of it.
|
|
424
|
-
//
|
|
425
|
-
// So the guarantee is kept where it can actually hold: `--integration-parked` runs
|
|
426
|
-
// this set WITH the database and FAILS when one PASSES. Same ratchet semantics, in
|
|
427
|
-
// the only environment that can tell the difference. The integration workflow runs
|
|
428
|
-
// it as a blocking step, so fixing one of these reds the lane until its entry here
|
|
429
|
-
// is removed.
|
|
430
|
-
//
|
|
431
|
-
// Triage per test, and the owner decision, are on task 1004034. The causes are
|
|
432
|
-
// heterogeneous — stale post-de-branding expectations, unseeded fixtures, temp-dir
|
|
433
|
-
// assumptions, a missing core tarball, DB-state collisions — so these come off this
|
|
434
|
-
// list one at a time, not in a batch.
|
|
435
|
-
//
|
|
436
|
-
// acclaim_feed_evidence_db WAS LEFT OUT OF THE FIRST PASS, deliberately and on the
|
|
437
|
-
// evidence then available: it PASSED in CI run 35291948008, and parking a test that
|
|
438
|
-
// passes makes --integration-parked red the lane immediately. Two later readings
|
|
439
|
-
// reversed that — it fails 2/2 alone on a freshly migrated database, and it FAILED in
|
|
440
|
-
// run 35404478232, the first run after the parking landed. The single pass was the
|
|
441
|
-
// anomaly. It fails on `duplicate key value violates unique constraint
|
|
442
|
-
// "versions_one_planning_idx"`: the seeds create a version at status='planning', a
|
|
443
|
-
// partial unique index permits exactly one, and the test adds another — so it leans on
|
|
444
|
-
// the seeded state of `versions` rather than establishing its own, which is also how
|
|
445
|
-
// its verdict moves between runs. needs_rebase trips the same constraint and is
|
|
446
|
-
// already here. IF THE PARKED RATCHET EVER REDS NAMING THIS TEST, that is this known
|
|
447
|
-
// oscillation, not a fix: the real repair is to stop it colliding — give it its own
|
|
448
|
-
// version row, or roll back in a transaction the way the other DB-writing entries do.
|
|
449
|
-
//
|
|
450
|
-
// handle_machinery IS THE SAME DEFECT SEEN FROM THE OTHER SIDE, and it is why the
|
|
451
|
-
// ratchet moved to its own job with its own database (task 1004043). It PASSES once
|
|
452
|
-
// the suite has run and FAILS from a pristine one — verified by migrating an empty
|
|
453
|
-
// database and running it alone. So it is correctly parked: it fails from exactly the
|
|
454
|
-
// state the gate starts in. Do NOT unpark it on the strength of a green post-suite
|
|
455
|
-
// reading; that reading answers a different question. Like acclaim_feed_evidence_db
|
|
456
|
-
// above, the real repair is for the test to establish the state it needs instead of
|
|
457
|
-
// inheriting whatever ran before it.
|
|
458
|
-
//
|
|
459
|
-
// consumer_layout_boot LEFT THIS LIST under task 1002863. Its "missing core tarball" was
|
|
460
|
-
// package-core's fail-closed leak gate reading the lane's throwaway database password (the
|
|
461
|
-
// word postgres, present in hundreds of core files) as a leaked credential and refusing to
|
|
462
|
-
// build. The harness now withholds database settings from the packager, and it is the only
|
|
463
|
-
// test that proves the PUBLISHED package installs, migrates an empty database and serves
|
|
464
|
-
// from it — parking it again re-opens that gap, which tests/integration_parked_ratchet.mjs
|
|
465
|
-
// now says out loud.
|
|
466
|
-
const INTEGRATION_PARKED = new Set([
|
|
467
|
-
'acclaim_feed_evidence_db',
|
|
468
|
-
'bfg', 'bfg_write',
|
|
469
|
-
'claim_gate_open_blocker', 'claim_gate_rebase',
|
|
470
|
-
'clawback_confirmed_backlog', 'copy_desk_flags_db',
|
|
471
|
-
'government_board_membership_db', 'handle_machinery',
|
|
472
|
-
'idea_credit_streams_db', 'memory_isolation', 'memory_pull', 'needs_rebase',
|
|
473
|
-
'profile_fields', 'project_visibility_db', 'reward_mode_cost_plus_only',
|
|
474
|
-
'session_earnings_mirror_db', 'setup_smoke', 'status-probe',
|
|
475
|
-
]);
|
|
476
|
-
|
|
477
|
-
function main() {
|
|
478
|
-
// Two gates from one runner (task 1002221 / audit H1):
|
|
479
|
-
// default — the DB-free UNIT gate: every test file MINUS the integration set (+ known-
|
|
480
|
-
// failing / support / disabled-module). Fast, runs in a clean checkout / per PR.
|
|
481
|
-
// --integration — the standing INTEGRATION-SMOKE gate: ONLY the integration set (package build +
|
|
482
|
-
// `npm install` + live boot etc.). Heavier, longer per-test budget; run per
|
|
483
|
-
// release / on a schedule in an env that provides the services (DB/network). This
|
|
484
|
-
// is what promotes tests/consumer_layout_boot.mjs from "excluded + ad-hoc" to a
|
|
485
|
-
// first-class gate a release step can invoke with one command.
|
|
486
|
-
const integrationMode = process.argv.includes('--integration');
|
|
487
|
-
|
|
488
|
-
// --integration-parked — the ratchet for INTEGRATION_PARKED. Runs ONLY the parked
|
|
489
|
-
// set and inverts the verdict: a parked test that PASSES fails this run, because an
|
|
490
|
-
// allowlist that outlives the failures it documents is how a graveyard starts. Needs
|
|
491
|
-
// the same database the integration lane provides; running it DB-free would report
|
|
492
|
-
// every entry as still-failing and prove nothing.
|
|
493
|
-
if (process.argv.includes('--integration-parked')) {
|
|
494
|
-
const parked = [...INTEGRATION_PARKED].sort();
|
|
495
|
-
console.log(`run-unit-tests --integration-parked: re-checking ${parked.length} parked test(s)`);
|
|
496
|
-
const nowPassing = [];
|
|
497
|
-
for (const name of parked) {
|
|
498
|
-
const file = path.join(TESTS_DIR, `${name}.mjs`);
|
|
499
|
-
if (!fs.existsSync(file)) {
|
|
500
|
-
console.log(` GONE ${name} — parked but the file no longer exists; remove its entry`);
|
|
501
|
-
nowPassing.push(name);
|
|
502
|
-
continue;
|
|
503
|
-
}
|
|
504
|
-
try {
|
|
505
|
-
execFileSync(process.execPath, [file], {
|
|
506
|
-
stdio: ['ignore', 'ignore', 'ignore'],
|
|
507
|
-
timeout: PARKED_RECHECK_TIMEOUT_MS,
|
|
508
|
-
env: { ...process.env, NODE_ENV: 'test' },
|
|
509
|
-
});
|
|
510
|
-
console.log(` PASSES ${name} — fixed; remove it from INTEGRATION_PARKED`);
|
|
511
|
-
nowPassing.push(name);
|
|
512
|
-
} catch (_) {
|
|
513
|
-
console.log(` still red ${name}`);
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
if (nowPassing.length) {
|
|
517
|
-
console.error(`\nrun-unit-tests --integration-parked: ${nowPassing.length} parked test(s) no longer fail — ${nowPassing.join(', ')}.`);
|
|
518
|
-
console.error('Remove each from INTEGRATION_PARKED in scripts/gds/run-unit-tests.js so the lane starts gating it again (task 1004034).');
|
|
519
|
-
process.exit(1);
|
|
520
|
-
}
|
|
521
|
-
console.log('every parked test still fails — the list is current.');
|
|
522
|
-
process.exit(0);
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
const perTestTimeout = integrationMode ? INTEGRATION_TIMEOUT_MS : PER_TEST_TIMEOUT_MS;
|
|
526
|
-
|
|
527
|
-
const files = fs
|
|
528
|
-
.readdirSync(TESTS_DIR)
|
|
529
|
-
.filter((f) => f.endsWith('.mjs'))
|
|
530
|
-
.map((f) => f.replace(/\.mjs$/, ''))
|
|
531
|
-
.filter((name) => integrationMode
|
|
532
|
-
? (INTEGRATION.has(name) && !KNOWN_FAILING.has(name) && !INTEGRATION_PARKED.has(name) && !SUPPORT_MODULES.has(name))
|
|
533
|
-
: (!INTEGRATION.has(name) && !KNOWN_FAILING.has(name) && !SUPPORT_MODULES.has(name) && !MODULE_DISABLED.has(name)))
|
|
534
|
-
.sort();
|
|
535
|
-
|
|
536
|
-
// Module-owned tests are DB-free unit tests — only the default gate runs them.
|
|
537
|
-
// Run every module's tests, enabled here or not: the code ships in the repo either way, and
|
|
538
|
-
// a default:false module (provisioning) otherwise goes unexercised and rots unseen.
|
|
539
|
-
const { included: moduleTests, skippedDisabled: moduleTestsSkipped } = integrationMode
|
|
540
|
-
? { included: [], skippedDisabled: [] }
|
|
541
|
-
: discoverModuleTests({ isEnabled: () => true });
|
|
542
|
-
|
|
543
|
-
if (integrationMode) {
|
|
544
|
-
console.log(`run-unit-tests --integration: ${files.length} integration-smoke test file(s) (${files.join(', ') || 'none found'}); per-test budget ${INTEGRATION_TIMEOUT_MS / 1000}s`);
|
|
545
|
-
} else {
|
|
546
|
-
const moduleNote = MODULE_DISABLED.size
|
|
547
|
-
? ` + ${MODULE_DISABLED.size} disabled-module (${[...MODULE_DISABLED].sort().join(', ')})`
|
|
548
|
-
: '';
|
|
549
|
-
const modOwnedSkipNote = moduleTestsSkipped.length
|
|
550
|
-
? ` + ${moduleTestsSkipped.length} module-owned test(s) skipped (module disabled: ${[...new Set(moduleTestsSkipped.map((t) => t.key))].sort().join(', ')})`
|
|
551
|
-
: '';
|
|
552
|
-
console.log(`run-unit-tests: ${files.length + moduleTests.length} DB-free unit test file(s) (${files.length} core + ${moduleTests.length} module-owned; excluded ${INTEGRATION.size} integration + ${KNOWN_FAILING.size} known-failing${moduleNote}${modOwnedSkipNote})`);
|
|
553
|
-
}
|
|
554
|
-
const total = files.length + moduleTests.length;
|
|
555
|
-
|
|
556
|
-
const failures = [];
|
|
557
|
-
const teardownAborts = [];
|
|
558
|
-
// A GREEN suite that skipped cases is the shape this roll-up used to hide: the suite said so
|
|
559
|
-
// on its own stdout, which was discarded on success, so the only visible line was `ok` and a
|
|
560
|
-
// session reading the roll-up could not tell exercised coverage from absent coverage.
|
|
561
|
-
const skipped = [];
|
|
562
|
-
const runOne = (displayName, filePath) => {
|
|
563
|
-
try {
|
|
564
|
-
const out = execFileSync(process.execPath, [filePath], {
|
|
565
|
-
// task 1002644: stdout used to be IGNORED, so the failing assertion (test
|
|
566
|
-
// files print their FAIL lines to stdout) was discarded and the only
|
|
567
|
-
// context shown was the last 3 STDERR lines — often stale diagnostic
|
|
568
|
-
// noise from an EARLIER, PASSING test. The live example: gate_approvals'
|
|
569
|
-
// route-catch console.error dump made every failure in that file read as
|
|
570
|
-
// a GraphQL/network outage, and the real flaky assertion was invisible.
|
|
571
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
572
|
-
maxBuffer: 16 * 1024 * 1024,
|
|
573
|
-
timeout: perTestTimeout,
|
|
574
|
-
env: { ...process.env, NODE_ENV: 'test' },
|
|
575
|
-
});
|
|
576
|
-
const n = countSkips(out ? out.toString() : '');
|
|
577
|
-
if (n) skipped.push({ name: displayName, n });
|
|
578
|
-
console.log(` ok ${displayName}${n ? ` (${n} SKIPPED — not run on this platform)` : ''}`);
|
|
579
|
-
} catch (err) {
|
|
580
|
-
// `exit null` on its own is unreadable, and it is what a HANG looks like here: the
|
|
581
|
-
// signal that ended the process is the whole diagnosis, so say it (task 1004052 —
|
|
582
|
-
// a test that hung for the full budget reported `exit null` and nothing else).
|
|
583
|
-
const why = err.killed
|
|
584
|
-
? `TIMEOUT after ${perTestTimeout / 1000}s${err.signal ? `, ${err.signal}` : ''}`
|
|
585
|
-
: `exit ${err.status}${err.signal ? ` (${err.signal})` : ''}`;
|
|
586
|
-
const stdoutText = (err.stdout ? err.stdout.toString() : '').trim();
|
|
587
|
-
if (!err.killed && isCleanTeardownAbort(stdoutText, err.stderr ? err.stderr.toString() : '')) {
|
|
588
|
-
console.log(` ok ${displayName} (clean verdict, then libuv teardown abort, ${why})`);
|
|
589
|
-
teardownAborts.push(displayName);
|
|
590
|
-
return;
|
|
591
|
-
}
|
|
592
|
-
console.log(` FAIL ${displayName} (${why})`);
|
|
593
|
-
// The actual failures first: the file's own FAIL lines, then its stdout
|
|
594
|
-
// tail (the last failure's assertion detail + summary), both bounded.
|
|
595
|
-
// EMPTY STDOUT IS ITSELF THE CLUE, and it used to print as a blank gap. node:test
|
|
596
|
-
// buffers a file's whole report until the file finishes, so a suite that hangs
|
|
597
|
-
// mid-run emits NOTHING — which reads as "no detail available" when it actually
|
|
598
|
-
// means "it never got to the end". Name that, and name how to find the case.
|
|
599
|
-
if (!stdoutText) {
|
|
600
|
-
console.log(' (no output at all — node:test buffers a file\'s report until it finishes,');
|
|
601
|
-
console.log(' so this suite did not reach the end. To find which case: run it on the same');
|
|
602
|
-
console.log(' platform with each case writing its name to STDERR before it runs; stderr is');
|
|
603
|
-
console.log(' unbuffered, so the last name with no completion is the one that hung.)');
|
|
604
|
-
}
|
|
605
|
-
const failLines = stdoutText ? stdoutText.split('\n').filter((l) => /\bFAIL\b/.test(l)).slice(0, 5) : [];
|
|
606
|
-
for (const l of failLines) console.log(` ${l.trim()}`);
|
|
607
|
-
if (stdoutText) {
|
|
608
|
-
for (const l of stdoutText.split('\n').slice(-5)) console.log(` ${l}`);
|
|
609
|
-
}
|
|
610
|
-
const stderr = (err.stderr ? err.stderr.toString() : '').trim().split('\n').slice(-3).join('\n ');
|
|
611
|
-
if (stderr) console.log(` stderr: ${stderr}`);
|
|
612
|
-
failures.push(displayName);
|
|
613
|
-
}
|
|
614
|
-
};
|
|
615
|
-
|
|
616
|
-
// EXECUTION IS SERIAL, ONE PROCESS PER TEST — and that is load-bearing, not
|
|
617
|
-
// incidental (task 1001435). runOne uses execFileSync, which blocks, and these
|
|
618
|
-
// are plain sequential loops: no Promise.all, no worker pool, no concurrency
|
|
619
|
-
// anywhere in this file. Pinned by tests/unit_runner_serial.mjs.
|
|
620
|
-
//
|
|
621
|
-
// Why it is written down. A flaky-`unit` report (this task, from idea #353)
|
|
622
|
-
// diagnosed "parallel execution racing on shared global state" and asked whether
|
|
623
|
-
// the runner fans tests out concurrently in one process. It does not, and never
|
|
624
|
-
// has — so an in-process race is ruled out as a cause by construction, and any
|
|
625
|
-
// future flake investigation should start somewhere else. The three suites that
|
|
626
|
-
// report named were audited then:
|
|
627
|
-
// - fitness.mjs — writes only under mkdtempSync(os.tmpdir()); no repo
|
|
628
|
-
// writes, no env mutation. Clean.
|
|
629
|
-
// - session_index.mjs — mutates no global state at all. Clean.
|
|
630
|
-
// - secret_box.mjs — DID have a real hole, but not this one: it redirected
|
|
631
|
-
// only HOME, which os.homedir() ignores on Windows, so
|
|
632
|
-
// its sandbox was a no-op there. Fixed under this task.
|
|
633
|
-
// Collisions between separate processes remain possible through state OUTSIDE
|
|
634
|
-
// them — the real home directory, generated files in the repo, a second run on
|
|
635
|
-
// the same machine — which is where to look next, not here.
|
|
636
|
-
for (const name of files) runOne(name, path.join(TESTS_DIR, `${name}.mjs`));
|
|
637
|
-
for (const { key, name, file } of moduleTests) runOne(`${key}/${name}`, file);
|
|
638
|
-
|
|
639
|
-
const label = integrationMode ? 'run-unit-tests --integration' : 'run-unit-tests';
|
|
640
|
-
console.log('');
|
|
641
|
-
if (teardownAborts.length) {
|
|
642
|
-
console.log(`${label}: ${teardownAborts.length} passed but aborted in libuv teardown (not failures; task 1003845) — ${teardownAborts.join(', ')}`);
|
|
643
|
-
}
|
|
644
|
-
if (skipped.length) {
|
|
645
|
-
const n = skipped.reduce((sum, s) => sum + s.n, 0);
|
|
646
|
-
console.log(`${label}: ${n} case(s) NOT RUN on this platform — ${skipped.map((s) => `${s.name} (${s.n})`).join(', ')}`);
|
|
647
|
-
console.log(`${label}: a skipped case is not a passing one. Green here does not mean that coverage was exercised.`);
|
|
648
|
-
}
|
|
649
|
-
reportToWorkflow(failures);
|
|
650
|
-
if (failures.length === 0) {
|
|
651
|
-
console.log(`${label}: all ${total} passed.`);
|
|
652
|
-
process.exit(0);
|
|
653
|
-
}
|
|
654
|
-
console.log(`${label}: ${failures.length} FAILED — ${failures.join(', ')}`);
|
|
655
|
-
process.exit(1);
|
|
656
|
-
}
|
|
657
|
-
|
|
658
|
-
if (require.main === module) main();
|
|
659
|
-
|
|
660
|
-
module.exports = { discoverModuleTests, isCleanTeardownAbort, countSkips, describeFailures, STATUS_DESCRIPTION_MAX, INTEGRATION, INTEGRATION_PARKED, KNOWN_FAILING };
|
|
2
|
+
// scripts/gds/run-unit-tests.js — @bongos-forwarder (task 1004848). Generated by
|
|
3
|
+
// scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
|
|
4
|
+
// The real script is scripts/bongos/run-unit-tests.js. This forwarder keeps callers that still name
|
|
5
|
+
// the old path working, and warns once so they get repointed. Task 1003706 removes it.
|
|
6
|
+
'use strict';
|
|
7
|
+
require('../bongos/forwarder.js').forward(module, 'run-unit-tests.js');
|