@bongos/core 1.21.175 → 1.21.177
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bongos-core.json +3371 -1636
- package/.claude/skills/ask-for-help/SKILL.md +4 -4
- package/.claude/skills/backlog-review/SKILL.md +1 -1
- package/.claude/skills/blocker-review/SKILL.md +2 -2
- package/.claude/skills/blocker-solve/SKILL.md +4 -4
- package/.claude/skills/bongos-feedback/SKILL.md +1 -1
- package/.claude/skills/bug-triage/SKILL.md +8 -8
- package/.claude/skills/builder-backup/SKILL.md +3 -3
- package/.claude/skills/builder-claim/SKILL.md +5 -5
- package/.claude/skills/builder-cost/SKILL.md +5 -5
- package/.claude/skills/builder-end/SKILL.md +6 -6
- package/.claude/skills/builder-exit/SKILL.md +2 -2
- package/.claude/skills/builder-key/SKILL.md +6 -6
- package/.claude/skills/builder-reauth/SKILL.md +4 -4
- package/.claude/skills/builder-redteam/SKILL.md +3 -3
- package/.claude/skills/builder-release/SKILL.md +3 -3
- package/.claude/skills/builder-sequence/SKILL.md +8 -8
- package/.claude/skills/builder-setup/SKILL.md +4 -4
- package/.claude/skills/builder-ship/SKILL.md +7 -7
- package/.claude/skills/builder-stage/SKILL.md +8 -8
- package/.claude/skills/builder-start/SKILL.md +4 -4
- package/.claude/skills/collab-review/SKILL.md +5 -5
- package/.claude/skills/design/SKILL.md +6 -4
- package/.claude/skills/design-sync/SKILL.md +3 -3
- package/.claude/skills/figma-design-sync/SKILL.md +4 -4
- package/.claude/skills/fix-task/SKILL.md +8 -8
- package/.claude/skills/goal-close/SKILL.md +9 -9
- package/.claude/skills/goal-create/SKILL.md +18 -18
- package/.claude/skills/grade-recover/SKILL.md +8 -8
- package/.claude/skills/grade-sweep/SKILL.md +15 -15
- package/.claude/skills/idea-triage/SKILL.md +15 -15
- package/.claude/skills/merge-mode/SKILL.md +14 -14
- package/.claude/skills/new-project/SKILL.md +5 -5
- package/.claude/skills/owner-review/SKILL.md +1 -1
- package/.claude/skills/planning-session/SKILL.md +15 -15
- package/.claude/skills/priority-session/SKILL.md +6 -6
- package/.claude/skills/read-session-export/SKILL.md +3 -3
- package/.claude/skills/recall/SKILL.md +7 -7
- package/.claude/skills/scan-before-install/SKILL.md +3 -3
- package/.claude/skills/session-handoff/SKILL.md +1 -1
- package/.claude/skills/ship-check/SKILL.md +3 -3
- package/.claude/skills/status/SKILL.md +3 -3
- package/.claude/skills/strand-fix/SKILL.md +6 -6
- package/.claude/skills/worktree-clean/SKILL.md +4 -4
- package/.gitattributes +12 -32
- package/GOVERNMENT.md +1 -1
- package/README.md +8 -8
- package/bin/bongos.js +23 -23
- package/clients/bongos-client/README.md +2 -2
- package/clients/bongos-client/bongos-client.global.js +22 -4
- package/clients/bongos-client/index.cjs +22 -4
- package/clients/bongos-client/index.d.ts +33 -4
- package/clients/bongos-client/index.mjs +21 -3
- package/config/branding.neutral.json +1 -1
- package/config/design-tokens.schema.json +1 -1
- package/config/modules.neutral.json +1 -3
- package/config/scheduled-routines.json +3 -8
- package/docs/adr/0029-status-page-outage-resilience.md +6 -6
- package/docs/adr/0091-bounding-the-kernel-and-db-carve.md +1 -1
- package/docs/adr/0093-tranche-2-core-carve-sequence.md +1 -1
- package/docs/adr/0227-a-task-network-map-is-refused-the-goal-graph-is-the-map.md +1 -1
- package/docs/adr/0294-cli-sessions-do-not-expire.md +1 -1
- package/docs/adr/0383-sessions-end-after-ten-idle-days.md +35 -0
- package/docs/adr/0384-the-raise-page-is-a-hub-module-builders-edit-in-place.md +31 -0
- package/docs/adr/README.md +2 -0
- package/docs/api/openapi.json +606 -44
- package/docs/api-reference.md +25 -12
- package/docs/architecture.md +8 -7
- package/docs/canonical-permissions.md +4 -4
- package/docs/copy-inventory.md +1370 -1411
- package/docs/copy-registry.json +2136 -2536
- package/docs/design/demonolith-plan.md +6 -6
- package/docs/design/modular-architecture/00-research-report.md +1 -1
- package/docs/design/project-startup-direction.md +2 -2
- package/docs/design/projects-hub-direction-v2.md +1 -1
- package/docs/design/reviews/hall-v2/README.md +2 -2
- package/docs/design/vanilla-hall-ui-redesign-scope.md +1 -1
- package/docs/file-map.md +92 -96
- package/docs/handoff-template.md +5 -5
- package/docs/module-api-changelog.md +7 -3
- package/docs/modules-contract.md +8 -7
- package/docs/onboarding/diagrams/01-task-lifecycle.mmd +1 -1
- package/docs/onboarding/diagrams/02-rank-ladder.mmd +1 -1
- package/docs/onboarding/diagrams/03-drachmae-karma.mmd +1 -1
- package/docs/onboarding/diagrams/04-architecture.mmd +1 -1
- package/docs/onboarding/diagrams/05-versioning.mmd +1 -1
- package/docs/onboarding/diagrams/README.md +5 -9
- package/docs/onboarding/diagrams/assertions.json +3 -3
- package/docs/onboarding/slash-commands.md +2 -2
- package/docs/packs/artist.md +4 -4
- package/docs/packs/engineer.md +11 -10
- package/docs/packs/ideator.md +7 -7
- package/docs/page-inventory.json +20 -1
- package/docs/page-readings.json +4387 -4603
- package/docs/recipes/README.md +1 -1
- package/docs/recipes/audit-replay.md +4 -4
- package/docs/recipes/autobongos-windows-host.md +6 -6
- package/docs/recipes/bongos-cli-release.md +2 -2
- package/docs/recipes/claude-design-loop.md +7 -7
- package/docs/recipes/core-release-pipeline.md +19 -19
- package/docs/recipes/failed-ship-recovery-proof.md +2 -2
- package/docs/recipes/figma-design-loop.md +6 -6
- package/docs/recipes/gds-db-backup.md +9 -9
- package/docs/recipes/instance-deploy.md +3 -3
- package/docs/recipes/instance-first-run.md +1 -1
- package/docs/recipes/multi-builder-merge.md +2 -2
- package/docs/recipes/ops-gotchas.md +13 -10
- package/docs/recipes/packaging-the-core.md +6 -6
- package/docs/recipes/parallel-goal-waves.md +4 -4
- package/docs/recipes/private-npm-distribution.md +9 -9
- package/docs/recipes/redteam-patrol.md +5 -5
- package/docs/recipes/render-pilot.md +2 -2
- package/docs/recipes/reranking-a-goals-board.md +2 -2
- package/docs/recipes/search-index-ingestion.md +5 -5
- package/docs/recipes/self-host.md +1 -1
- package/docs/recipes/ship-and-regrade.md +4 -4
- package/docs/recipes/staging-environment.md +1 -1
- package/docs/recipes/standalone-live-docs.md +1 -1
- package/docs/recipes/ui-look-before-you-ship.md +2 -2
- package/docs/recipes/upgrading-the-core.md +11 -11
- package/docs/recipes/windows-builders.md +18 -18
- package/docs/research/llm-model-agnostic-and-cheaper-grader.md +6 -6
- package/docs/research/task-network-map-readability.md +3 -3
- package/migrations/core_278_builder_tester_tag.sql +18 -0
- package/migrations/core_279_bongos_shipper_new_scripts_path.sql +13 -0
- package/modules/agents/lib/answer-hold.js +1 -1
- package/modules/agents/lib/gate.js +1 -1
- package/modules/agents/lib/validate.js +1 -1
- package/modules/autonomy/db.js +9 -0
- package/modules/autonomy/gauge.js +1 -1
- package/modules/autonomy/governor-docket.js +2 -2
- package/modules/autonomy/module.json +2 -2
- package/modules/autonomy/pollers/daily-checks.js +262 -0
- package/modules/autonomy/pollers/routine-timers.js +9 -7
- package/modules/autonomy/rank-roles.js +64 -0
- package/modules/autonomy/routes/autonomy.js +3 -3
- package/modules/autonomy/server-schedule.js +37 -0
- package/modules/builder-settings/interaction-prefs.js +1 -1
- package/modules/builder-settings/render-prefs.js +1 -1
- package/modules/builder-settings/routes/settings.js +1 -1
- package/modules/builder-settings/skill-prefs.js +2 -2
- package/modules/builder-settings/wandering-prefs.js +2 -2
- package/modules/copy-desk/module.json +2 -2
- package/modules/copy-desk/page-data.js +5 -5
- package/modules/copy-desk/page-decisions.js +13 -1
- package/modules/copy-desk/proposals.js +4 -4
- package/modules/copy-desk/registry.js +2 -2
- package/modules/copy-desk/routes/copy-desk-release.js +119 -0
- package/modules/copy-desk/routes/copy-desk.js +3 -12
- package/modules/copy-desk/skills/tweak/SKILL.md +12 -12
- package/modules/copy-desk/tests/copy_flags.mjs +1 -1
- package/modules/copy-desk/tests/copy_no_cms.mjs +7 -3
- package/modules/copy-desk/tests/copy_proposals.mjs +2 -2
- package/modules/copy-desk/tests/copy_queue.mjs +1 -1
- package/modules/design-styles/skills/README.md +4 -4
- package/modules/design-styles/skills/imagegen-frontend-mobile/SKILL.md +1 -1
- package/modules/design-styles/skills/imagegen-frontend-web/SKILL.md +1 -1
- package/modules/discord/bug-attachments.js +1 -1
- package/modules/discord/ship-broadcast.js +1 -1
- package/modules/economy/achievements.js +49 -7
- package/modules/economy/cost-classify.js +6 -6
- package/modules/economy/cost-report.js +1 -1
- package/modules/economy/cost.js +1 -1
- package/modules/economy/credits.js +2 -1
- package/modules/economy/idea-size.js +2 -2
- package/modules/economy/reward.js +2 -0
- package/modules/economy/routes/cost.js +1 -1
- package/modules/economy/streak.js +43 -4
- package/modules/government/asks.js +1 -1
- package/modules/government/board.js +19 -2
- package/modules/government/catalog.js +3 -0
- package/modules/government/migrations/government_033_idea_vote.sql +46 -0
- package/modules/government/protected-surfaces.json +48 -47
- package/modules/government/recommendations.js +6 -2
- package/modules/government/routes/government.js +1 -1
- package/modules/grading/generated-provenance.js +13 -5
- package/modules/grading/grade-engine.js +1 -1
- package/modules/grading/grader-rubric.json +1 -1
- package/modules/grading/grader-score.js +1 -1
- package/modules/grading/grader-workers/index.js +1 -1
- package/modules/grading/grader.js +1 -1
- package/modules/grading/routes/grade.js +1 -1
- package/modules/hall-ui/public/atlas.html +5 -7
- package/modules/hall-ui/public/atlas.js +1 -1
- package/modules/hall-ui/public/atlas.states.json +1 -1
- package/modules/hall-ui/public/blockers.css +9 -0
- package/modules/hall-ui/public/blockers.html +4 -4
- package/modules/hall-ui/public/blockers.js +29 -30
- package/modules/hall-ui/public/board-room.css +5 -17
- package/modules/hall-ui/public/board-room.html +5 -6
- package/modules/hall-ui/public/board-room.js +41 -23
- package/modules/hall-ui/public/board-room.states.json +1 -1
- package/modules/hall-ui/public/brand-apply.js +1 -1
- package/modules/hall-ui/public/brand-holes.js +1 -1
- package/modules/hall-ui/public/builders.js +40 -86
- package/modules/hall-ui/public/city-decide.js +18 -4
- package/modules/hall-ui/public/city.html +1 -1
- package/modules/hall-ui/public/collab.html +1 -1
- package/modules/hall-ui/public/commands.html +6 -9
- package/modules/hall-ui/public/copy-desk.html +1 -1
- package/modules/hall-ui/public/copy-desk.js +2 -2
- package/modules/hall-ui/public/craft-mode.js +4 -0
- package/modules/hall-ui/public/deploy.html +6 -2
- package/modules/hall-ui/public/deploy.js +21 -13
- package/modules/hall-ui/public/diagrams.css +1 -1
- package/modules/hall-ui/public/diagrams.html +5 -8
- package/modules/hall-ui/public/diagrams.states.json +1 -1
- package/modules/hall-ui/public/drachmae.html +3 -7
- package/modules/hall-ui/public/fleet.html +3 -2
- package/modules/hall-ui/public/fleet.js +0 -4
- package/modules/hall-ui/public/gate.html +7 -7
- package/modules/hall-ui/public/gate.js +58 -77
- package/modules/hall-ui/public/goal-map.html +1 -1
- package/modules/hall-ui/public/goals-page.js +5 -5
- package/modules/hall-ui/public/goals-render.js +10 -11
- package/modules/hall-ui/public/goals.css +10 -0
- package/modules/hall-ui/public/goals.html +14 -7
- package/modules/hall-ui/public/government.html +3 -5
- package/modules/hall-ui/public/government.js +1 -5
- package/modules/hall-ui/public/hall-render.js +117 -57
- package/modules/hall-ui/public/hall-widgets.js +11 -11
- package/modules/hall-ui/public/idea.html +1 -1
- package/modules/hall-ui/public/ideas.html +3 -1
- package/modules/hall-ui/public/ideas.js +1 -0
- package/modules/hall-ui/public/index.html +12 -6
- package/modules/hall-ui/public/index.states.json +1 -1
- package/modules/hall-ui/public/mine-lens.js +1 -1
- package/modules/hall-ui/public/modules.html +7 -10
- package/modules/hall-ui/public/modules.js +0 -2
- package/modules/hall-ui/public/my-agents.html +1 -1
- package/modules/hall-ui/public/palette.js +5 -5
- package/modules/hall-ui/public/primer.html +4 -9
- package/modules/hall-ui/public/profile-connections.js +10 -2
- package/modules/hall-ui/public/profile-roles.js +3 -10
- package/modules/hall-ui/public/profile.html +12 -10
- package/modules/hall-ui/public/profile.js +13 -17
- package/modules/hall-ui/public/project-settings.html +3 -4
- package/modules/hall-ui/public/project-settings.js +0 -3
- package/modules/hall-ui/public/ranks.html +5 -11
- package/modules/hall-ui/public/ranks.js +6 -8
- package/modules/hall-ui/public/roadmap.css +0 -2
- package/modules/hall-ui/public/roadmap.html +1 -1
- package/modules/hall-ui/public/roadmap.js +16 -51
- package/modules/hall-ui/public/roster.html +1 -1
- package/modules/hall-ui/public/sessions.html +6 -8
- package/modules/hall-ui/public/sessions.js +7 -7
- package/modules/hall-ui/public/settings.html +1 -1
- package/modules/hall-ui/public/shell-trail.js +1 -1
- package/modules/hall-ui/public/shell.js +17 -17
- package/modules/hall-ui/public/street-deck.css +2 -1
- package/modules/hall-ui/public/street-deck.js +10 -2
- package/modules/hall-ui/public/street-desk.js +16 -5
- package/modules/hall-ui/public/street.html +1 -1
- package/modules/hall-ui/public/studio-lib.js +4 -0
- package/modules/hall-ui/public/studio.css +2 -0
- package/modules/hall-ui/public/studio.html +1 -1
- package/modules/hall-ui/public/studio.js +27 -1
- package/modules/hall-ui/public/style.css +43 -26
- package/modules/hall-ui/public/task-detail.js +10 -7
- package/modules/hall-ui/public/task.css +2 -0
- package/modules/hall-ui/public/task.html +3 -1
- package/modules/hall-ui/public/task.js +23 -7
- package/modules/hall-ui/public/thinking.html +1 -1
- package/modules/hall-ui/public/tweak-editor.html +1 -1
- package/modules/hall-ui/public/vote-control.js +208 -0
- package/modules/hall-ui/public/watch.html +3 -5
- package/modules/hall-ui/public/watch.js +5 -4
- package/modules/hall-ui/public/welcome-boot.css +130 -0
- package/modules/hall-ui/public/welcome-boot.js +334 -0
- package/modules/hall-ui/public/welcome-day.webp +0 -0
- package/modules/hall-ui/public/welcome-night.webp +0 -0
- package/modules/hall-ui/public/work-summary.js +1 -1
- package/modules/hall-ui/public/work.css +1 -0
- package/modules/hall-ui/public/work.html +3 -1
- package/modules/hall-ui/public/work.js +2 -1
- package/modules/hall-ui/records/accomplishments.md +16 -0
- package/modules/hall-ui/records/hall-ask-card.md +9 -0
- package/modules/hall-ui/records/karma-vote-control.md +13 -0
- package/modules/hall-ui/records/oversight-family.md +1 -1
- package/modules/hall-ui/records/profile-connections.md +2 -0
- package/modules/hall-ui/records/profile-roles.md +1 -1
- package/modules/hall-ui/records/reading-rooms.md +1 -1
- package/modules/hall-ui/records/welcome-tower.md +50 -0
- package/modules/ideas/migrations/ideas_011_idea_votes.sql +31 -0
- package/modules/ideas/projection.js +1 -1
- package/modules/ideas/routes/blockers.js +3 -3
- package/modules/ideas/routes/inbox.js +29 -1
- package/modules/ideas/routes/ratify-goal.js +1 -1
- package/modules/ideas/routing.js +1 -1
- package/modules/ideas/templates.js +1 -1
- package/modules/ideas/trail-descent.js +1 -1
- package/modules/ideas/trail-size.js +1 -1
- package/modules/ideas/votes.js +93 -0
- package/modules/lifecycle/abandon-leftovers.js +1 -1
- package/modules/lifecycle/cascade.js +1 -1
- package/modules/lifecycle/conflict-resolve.js +13 -21
- package/modules/lifecycle/criterion-ref.js +1 -1
- package/modules/lifecycle/db-analytics.js +57 -4
- package/modules/lifecycle/db-deps-criteria.js +1 -1
- package/modules/lifecycle/db-ship.js +2 -2
- package/modules/lifecycle/db-tasks.js +2 -2
- package/modules/lifecycle/db-versions.js +1 -1
- package/modules/lifecycle/db.js +2 -0
- package/modules/lifecycle/dead-deps.js +3 -3
- package/modules/lifecycle/dependency-advisory.js +3 -3
- package/modules/lifecycle/goal-category.js +1 -1
- package/modules/lifecycle/goal-forest.js +1 -1
- package/modules/lifecycle/goal-task-relevance-advisory.js +1 -1
- package/modules/lifecycle/kickoff-checklist.js +1 -1
- package/modules/lifecycle/kickoff-seed.js +1 -1
- package/modules/lifecycle/lifecycle.js +2 -0
- package/modules/lifecycle/merge-reach.js +29 -15
- package/modules/lifecycle/missing-dep-classify.js +3 -3
- package/modules/lifecycle/module.json +2 -1
- package/modules/lifecycle/page-tweak-approve.js +85 -1
- package/modules/lifecycle/page-tweak-hold.js +1 -1
- package/modules/lifecycle/publish-reconciler.js +1 -2
- package/modules/lifecycle/rot.js +1 -1
- package/modules/lifecycle/routes/artist-gate.js +1 -1
- package/modules/lifecycle/routes/gate-approvals.js +22 -1
- package/modules/lifecycle/routes/goals.js +1 -1
- package/modules/lifecycle/routes/task-route-helpers.js +1 -1
- package/modules/lifecycle/routes/task-votes.js +54 -0
- package/modules/lifecycle/routes/task-write-routes.js +1 -1
- package/modules/lifecycle/routes/tasks.js +2 -2
- package/modules/lifecycle/routes/versions.js +2 -2
- package/modules/lifecycle/ship-card.js +4 -4
- package/modules/lifecycle/ship-preflight.js +1 -1
- package/modules/lifecycle/task-classifier.js +1 -1
- package/modules/lifecycle/task-status.js +1 -1
- package/modules/lifecycle/task-visual-db.js +1 -1
- package/modules/memory/learnings.js +1 -1
- package/modules/memory/pollers/search-index.js +2 -2
- package/modules/memory/routes/learnings.js +1 -1
- package/modules/memory/routes/memory.js +1 -1
- package/modules/memory/search.js +2 -2
- package/modules/npm-release/release.js +1 -1
- package/modules/onboarding/howto-moments.js +1 -1
- package/modules/onboarding/newcomer-restock.js +3 -3
- package/modules/onboarding/onboarding.js +1 -1
- package/modules/pixel-art/skills/otb-tile-generate/SKILL.md +1 -1
- package/modules/platform-identity/origin-containment.js +1 -1
- package/modules/platform-identity/publish-gate.js +1 -1
- package/modules/platform-identity/tests/platform-identity.mjs +1 -1
- package/modules/provisioning/capacity.js +1 -1
- package/modules/provisioning/core-upgrade.js +15 -9
- package/modules/provisioning/credential-preflight.js +3 -3
- package/modules/provisioning/disconnect.js +1 -1
- package/modules/provisioning/dns-resolves.js +1 -1
- package/modules/provisioning/module.json +1 -1
- package/modules/provisioning/onboard-plan.js +1 -1
- package/modules/provisioning/paid-shape-gate.js +2 -2
- package/modules/provisioning/planet-physics.js +11 -2
- package/modules/provisioning/pollers/liveness-sweep.js +1 -1
- package/modules/provisioning/pollers/runner-drift-notify.js +5 -5
- package/modules/provisioning/provisioning.js +2 -2
- package/modules/provisioning/render-lookup.js +1 -1
- package/modules/provisioning/render-standup.js +3 -3
- package/modules/provisioning/repo-private.js +1 -1
- package/modules/provisioning/routes/callback-page.js +1 -1
- package/modules/provisioning/routes/core-upgrade.js +23 -3
- package/modules/provisioning/routes/provisioning.js +2 -2
- package/modules/provisioning/routes/render-standup.js +1 -1
- package/modules/provisioning/routes/repo-private.js +1 -1
- package/modules/provisioning/soft-limits.js +1 -1
- package/modules/provisioning/starter-bundles.js +4 -2
- package/modules/provisioning/tests/provisioning.mjs +1 -1
- package/modules/public-landing/public/account.html +4 -6
- package/modules/public-landing/public/assets/cosmos.css +13 -6
- package/modules/public-landing/public/connections.html +4 -6
- package/modules/public-landing/public/contact.html +4 -6
- package/modules/public-landing/public/guild.html +4 -6
- package/modules/public-landing/public/index.html +11 -9
- package/modules/public-landing/public/invitations.html +4 -6
- package/modules/public-landing/public/privacy.html +4 -6
- package/modules/public-landing/public/projects.html +168 -46
- package/modules/public-landing/public/terms.html +4 -6
- package/modules/raise/content/copy.json +40 -0
- package/modules/raise/content/nda.html +39 -0
- package/modules/raise/content/settings.json +49 -0
- package/modules/raise/db.js +95 -0
- package/modules/raise/migrations/raise_001_tables.sql +71 -0
- package/modules/raise/module.json +28 -0
- package/modules/raise/page.js +194 -0
- package/modules/raise/public/edit.js +152 -0
- package/modules/raise/public/favicon.svg +1 -0
- package/modules/raise/public/logo-ink.svg +1 -0
- package/modules/raise/public/logo-night.svg +1 -0
- package/modules/raise/public/mode.js +8 -0
- package/modules/raise/public/raise.css +234 -0
- package/modules/raise/public/raise.js +91 -0
- package/modules/raise/raise.js +174 -0
- package/modules/raise/routes/raise.js +152 -0
- package/modules/raise/views/gate.html +39 -0
- package/modules/raise/views/nda.html +21 -0
- package/modules/raise/views/page.html +133 -0
- package/modules/raise/web.js +72 -0
- package/modules/render-deploy/deploys.js +1 -1
- package/modules/render-deploy/render.js +2 -2
- package/modules/security/secret-scrub.js +3 -3
- package/modules/security/security.js +1 -1
- package/modules/security/tests/artifact_scan.mjs +1 -1
- package/modules/security/tests/mirror.mjs +1 -1
- package/modules/security/tests/scan_store.mjs +1 -1
- package/modules/sessions/db.js +2 -2
- package/modules/sessions/pulse.js +2 -2
- package/modules/sessions/routes/sessions.js +1 -1
- package/modules/specialities/specialities.js +1 -1
- package/modules/status-ui/public/README.md +3 -4
- package/modules/status-ui/public/index.html +5 -31
- package/modules/status-ui/public/status.js +6 -174
- package/modules/status-ui/public/style.css +4 -133
- package/modules/ui-design/docs/design-contract.md +3 -3
- package/modules/ui-design/kit/README.md +1 -1
- package/modules/ui-design/kit/serve.js +13 -4
- package/modules/ui-design/scripts/design-sync.js +1 -1
- package/modules/ui-design/scripts/figma-design-sync.js +1 -1
- package/modules/ui-design/scripts/validate-design.js +1 -1
- package/package-lock.json +27 -11
- package/package.json +2 -3
- package/release-notes.json +186 -0
- package/scripts/bongos/CLAUDE.md +15 -0
- package/scripts/bongos/abandon.js +137 -0
- package/scripts/bongos/accessibility-replay.js +195 -0
- package/scripts/bongos/address-park-sweep.sh +91 -0
- package/scripts/bongos/adopt-detect.js +123 -0
- package/scripts/bongos/adopt-import.js +111 -0
- package/scripts/bongos/adopt-preflight.js +187 -0
- package/scripts/bongos/adr-namespace.js +273 -0
- package/scripts/bongos/agent-invoke.js +689 -0
- package/scripts/bongos/agents-sync.js +502 -0
- package/scripts/bongos/api-alias-caller-scan.js +256 -0
- package/scripts/bongos/api-artifacts.js +91 -0
- package/scripts/bongos/api.js +86 -0
- package/scripts/bongos/api.ps1 +26 -0
- package/scripts/bongos/architect-audit.js +294 -0
- package/scripts/bongos/artifact-audit.js +326 -0
- package/scripts/bongos/artifact-format.js +203 -0
- package/scripts/bongos/ask.js +231 -0
- package/scripts/bongos/audit-authorship.sh +324 -0
- package/scripts/bongos/audit-deps.js +189 -0
- package/scripts/bongos/audit-gate.js +121 -0
- package/scripts/bongos/audit-rank-roles.js +131 -0
- package/scripts/bongos/audit-replay.sh +205 -0
- package/scripts/bongos/autobongos-digest.js +123 -0
- package/scripts/bongos/autobongos-grade-cap.js +187 -0
- package/scripts/bongos/autobongos-loop.js +210 -0
- package/scripts/bongos/autobongos-run.js +1361 -0
- package/scripts/bongos/autobongos-service.cmd +50 -0
- package/scripts/bongos/autobongos-service.ps1 +270 -0
- package/scripts/bongos/autobongos-tweak-lane.js +262 -0
- package/scripts/bongos/autobongos-verify.js +618 -0
- package/scripts/bongos/autonomy-gate.js +135 -0
- package/scripts/bongos/autonomy-gauge-statusline.js +124 -0
- package/scripts/bongos/autonomy-gauge.js +84 -0
- package/scripts/bongos/backfill-cost.js +176 -0
- package/scripts/bongos/backfill-disciplines.js +144 -0
- package/scripts/bongos/backfill-session-earnings.js +123 -0
- package/scripts/bongos/backfill-session-types.js +87 -0
- package/scripts/bongos/backfill-sessions.js +411 -0
- package/scripts/bongos/backfill-subagent-rewards.js +485 -0
- package/scripts/bongos/backfill-task-rewards.js +413 -0
- package/scripts/bongos/backlog-review.js +399 -0
- package/scripts/bongos/backup-dropin-sweep.sh +95 -0
- package/scripts/bongos/backup.js +116 -0
- package/scripts/bongos/baseline-staleness.js +217 -0
- package/scripts/bongos/bfg-principal-token.js +65 -0
- package/scripts/bongos/bug-attachment-audit.js +149 -0
- package/scripts/bongos/bug-attachment-recover.js +198 -0
- package/scripts/bongos/bug-triage.js +292 -0
- package/scripts/bongos/build-bongos.js +94 -0
- package/scripts/bongos/bump-version.js +221 -0
- package/scripts/bongos/capture.js +481 -0
- package/scripts/bongos/category-advisory-guard.js +206 -0
- package/scripts/bongos/ci-grade.js +82 -0
- package/scripts/bongos/claim-recall.js +112 -0
- package/scripts/bongos/claim.js +789 -0
- package/scripts/bongos/claude-materialize.js +1200 -0
- package/scripts/bongos/claude-md-template.js +142 -0
- package/scripts/bongos/cleanup-orphans.js +74 -0
- package/scripts/bongos/cli-lib.js +1226 -0
- package/scripts/bongos/client-baseurl-guard.js +116 -0
- package/scripts/bongos/codemod-rename-scripts-gds.js +380 -0
- package/scripts/bongos/conductor-dispatch.js +535 -0
- package/scripts/bongos/context-pack.js +326 -0
- package/scripts/bongos/control-manifest.js +199 -0
- package/scripts/bongos/copy-apply.js +758 -0
- package/scripts/bongos/copy-inventory.js +571 -0
- package/scripts/bongos/core-origin-follow.js +185 -0
- package/scripts/bongos/core-pin-sync.js +260 -0
- package/scripts/bongos/cost-report.js +63 -0
- package/scripts/bongos/cost.js +47 -0
- package/scripts/bongos/credential-presence.js +296 -0
- package/scripts/bongos/cutover-codemod.js +240 -0
- package/scripts/bongos/db-backup-nightly.sh +232 -0
- package/scripts/bongos/db-backup-offsite.sh +267 -0
- package/scripts/bongos/demote.js +45 -0
- package/scripts/bongos/deploy-divergence.js +454 -0
- package/scripts/bongos/deploy-main-audit-gate.sh +97 -0
- package/scripts/bongos/design-sync.js +12 -0
- package/scripts/bongos/dev-box-guard.js +166 -0
- package/scripts/bongos/dev-lib.js +722 -0
- package/scripts/bongos/dev.js +645 -0
- package/scripts/bongos/device-flow-help.js +72 -0
- package/scripts/bongos/diagnose-achievements.js +118 -0
- package/scripts/bongos/diagram-facts.js +355 -0
- package/scripts/bongos/discord-channels.js +77 -0
- package/scripts/bongos/do-api.js +109 -0
- package/scripts/bongos/doc-cli-guard.js +274 -0
- package/scripts/bongos/doc-comment-coverage.js +139 -0
- package/scripts/bongos/doc-control-claims.js +170 -0
- package/scripts/bongos/docs-entropy.js +453 -0
- package/scripts/bongos/doctor.js +493 -0
- package/scripts/bongos/enroll-control-plane.js +101 -0
- package/scripts/bongos/exec-path-guard.js +564 -0
- package/scripts/bongos/feedback-send.js +249 -0
- package/scripts/bongos/fetch-art-key.js +106 -0
- package/scripts/bongos/fetch-sound-prefs.js +126 -0
- package/scripts/bongos/figma-design-sync.js +11 -0
- package/scripts/bongos/find-untested.js +371 -0
- package/scripts/bongos/fitness-checks-error-envelope.js +134 -0
- package/scripts/bongos/fitness-checks-identity.js +332 -0
- package/scripts/bongos/fitness-checks-packaging.js +132 -0
- package/scripts/bongos/fitness-checks-route-pins.js +76 -0
- package/scripts/bongos/fitness-checks-vocabulary.js +392 -0
- package/scripts/bongos/fitness-checks-write-validation.js +157 -0
- package/scripts/bongos/fitness-lib.js +127 -0
- package/scripts/bongos/fitness-migration-contraction.js +50 -0
- package/scripts/bongos/fitness-ratchets.js +594 -0
- package/scripts/bongos/fitness.js +1498 -0
- package/scripts/bongos/forwarder.js +80 -0
- package/scripts/bongos/gate-review.js +330 -0
- package/scripts/bongos/gating.js +348 -0
- package/scripts/{gds → bongos}/gds-db-backup.service +6 -6
- package/scripts/{gds → bongos}/gds-db-backup.timer +4 -4
- package/scripts/{gds → bongos}/gds-db-offsite.service +4 -4
- package/scripts/{gds → bongos}/gds-db-offsite.timer +4 -4
- package/scripts/bongos/gds-literal-scan.js +196 -0
- package/scripts/bongos/gen-api-client.js +576 -0
- package/scripts/bongos/gen-api-docs.js +1111 -0
- package/scripts/bongos/gen-atlas.js +366 -0
- package/scripts/bongos/gen-diagrams.js +608 -0
- package/scripts/bongos/gen-file-map.js +337 -0
- package/scripts/bongos/gen-freshness.js +32 -0
- package/scripts/bongos/gen-interaction-posture.js +122 -0
- package/scripts/bongos/gen-repo-map.js +540 -0
- package/scripts/bongos/gen-role-responsibilities.js +134 -0
- package/scripts/bongos/gen-session-index.js +243 -0
- package/scripts/bongos/gen-sounds.js +176 -0
- package/scripts/bongos/git-merge-regen.js +254 -0
- package/scripts/bongos/go-live.js +1071 -0
- package/scripts/bongos/goal.js +272 -0
- package/scripts/bongos/government-walk.js +1477 -0
- package/scripts/bongos/grade-correlation-audit.js +310 -0
- package/scripts/bongos/grade-replay.js +237 -0
- package/scripts/bongos/grade-smoke.js +205 -0
- package/scripts/bongos/home-isolation-guard.js +126 -0
- package/scripts/bongos/hooks/pre-push.js +211 -0
- package/scripts/bongos/howto.js +145 -0
- package/scripts/bongos/http-api-client.js +81 -0
- package/scripts/bongos/identity-strip.js +75 -0
- package/scripts/bongos/init.js +1159 -0
- package/scripts/bongos/install-git-hooks.js +200 -0
- package/scripts/bongos/instance-apex.js +38 -0
- package/scripts/bongos/intent-retry.js +52 -0
- package/scripts/bongos/key-card.js +222 -0
- package/scripts/bongos/key-status.js +126 -0
- package/scripts/bongos/land-watch.js +201 -0
- package/scripts/bongos/leak-scan-allowlist.js +293 -0
- package/scripts/bongos/learning-capture.js +145 -0
- package/scripts/bongos/lib.sh +74 -0
- package/scripts/bongos/linkify-refs.js +655 -0
- package/scripts/bongos/lint-infra-exec.js +70 -0
- package/scripts/bongos/lint-migrations.js +102 -0
- package/scripts/bongos/lint-workflow-exec.js +63 -0
- package/scripts/bongos/local-preview-lib.js +128 -0
- package/scripts/bongos/local-preview.js +82 -0
- package/scripts/bongos/login.js +360 -0
- package/scripts/bongos/main-audit.js +625 -0
- package/scripts/bongos/me.js +97 -0
- package/scripts/bongos/memory-map.js +176 -0
- package/scripts/bongos/merge-lock.js +71 -0
- package/scripts/bongos/migration-namespace.js +313 -0
- package/scripts/bongos/mirror-lineage-check.js +343 -0
- package/scripts/bongos/mirror-redact.js +350 -0
- package/scripts/bongos/module-artifact.js +289 -0
- package/scripts/bongos/module-assess-docs.js +238 -0
- package/scripts/bongos/module-assess-installs.js +228 -0
- package/scripts/bongos/module-assess-score.js +111 -0
- package/scripts/bongos/module-assess-security.js +252 -0
- package/scripts/bongos/module-assess-tests.js +278 -0
- package/scripts/bongos/module-assess-version.js +92 -0
- package/scripts/bongos/module-error-report.js +148 -0
- package/scripts/{gds → bongos}/module-test-runner/README.md +3 -3
- package/scripts/{gds → bongos}/module-test-runner/module-tests.yml +2 -2
- package/scripts/bongos/module-test-runner.js +414 -0
- package/scripts/bongos/module.js +1376 -0
- package/scripts/bongos/move-escalation.js +141 -0
- package/scripts/{gds → bongos}/newcomer-floor.config.json +1 -1
- package/scripts/bongos/newcomer-floor.js +421 -0
- package/scripts/{gds → bongos}/newcomer-floor.templates.json +13 -13
- package/scripts/bongos/newcomer-floor.test.js +235 -0
- package/scripts/bongos/next-number.js +163 -0
- package/scripts/bongos/oauth-secret.js +202 -0
- package/scripts/bongos/onboard.js +267 -0
- package/scripts/bongos/onboarding-analyze.js +226 -0
- package/scripts/bongos/onboarding-config.js +179 -0
- package/scripts/bongos/onboarding-ship.js +92 -0
- package/scripts/bongos/pack-env-prefix.js +73 -0
- package/scripts/bongos/package-core.js +1200 -0
- package/scripts/bongos/page-inventory.js +348 -0
- package/scripts/bongos/page-reader.js +722 -0
- package/scripts/bongos/paste-token.js +212 -0
- package/scripts/bongos/plain-cards.js +351 -0
- package/scripts/bongos/portability-smoke-art.sh +85 -0
- package/scripts/bongos/portability-smoke-memory.sh +176 -0
- package/scripts/bongos/preflight.js +214 -0
- package/scripts/bongos/probe-cache.js +246 -0
- package/scripts/bongos/prove-strict-versioning.js +284 -0
- package/scripts/bongos/provision-auto-upgrade.js +162 -0
- package/scripts/bongos/provision-byo-host.js +68 -0
- package/scripts/bongos/provision-capacity.js +79 -0
- package/scripts/bongos/provision-caps.js +63 -0
- package/scripts/bongos/provision-config.js +233 -0
- package/scripts/bongos/provision-core-upgrade.js +1166 -0
- package/scripts/bongos/provision-disconnect.js +88 -0
- package/scripts/bongos/provision-github-setup.js +168 -0
- package/scripts/bongos/provision-net.js +357 -0
- package/scripts/bongos/provision-pin-key.js +176 -0
- package/scripts/bongos/provision-pin-replay.js +126 -0
- package/scripts/bongos/provision-process.js +170 -0
- package/scripts/bongos/provision-render.js +201 -0
- package/scripts/bongos/provision-repo-auth.js +164 -0
- package/scripts/bongos/provision-repo-private.js +98 -0
- package/scripts/bongos/provision-repo.js +1337 -0
- package/scripts/bongos/provision-teardown.js +106 -0
- package/scripts/bongos/provision-units.js +469 -0
- package/scripts/bongos/provision.js +1479 -0
- package/scripts/bongos/publish-credential-check.js +66 -0
- package/scripts/bongos/publish-integration-gate.js +142 -0
- package/scripts/bongos/publish-manifest.js +440 -0
- package/scripts/bongos/publish-watch.js +268 -0
- package/scripts/bongos/pulse.js +338 -0
- package/scripts/bongos/push-main.js +56 -0
- package/scripts/bongos/push-path-brief.js +100 -0
- package/scripts/bongos/read-session-export.js +359 -0
- package/scripts/bongos/reauth.js +155 -0
- package/scripts/bongos/recall.js +183 -0
- package/scripts/bongos/redteam-patrol.js +437 -0
- package/scripts/bongos/regen-instance-docs.js +47 -0
- package/scripts/bongos/release-core.js +80 -0
- package/scripts/bongos/release-notes.js +271 -0
- package/scripts/bongos/release.js +139 -0
- package/scripts/bongos/rename-history-check.js +369 -0
- package/scripts/bongos/rename-ledger-prose.js +482 -0
- package/scripts/bongos/render-api.js +197 -0
- package/scripts/bongos/render-check.js +206 -0
- package/scripts/bongos/render-ideas.js +226 -0
- package/scripts/bongos/render-payload.js +85 -0
- package/scripts/bongos/repo-metrics.js +363 -0
- package/scripts/bongos/review-sheet.js +108 -0
- package/scripts/bongos/role-pack-guard.js +142 -0
- package/scripts/bongos/route-shadow-guard.js +175 -0
- package/scripts/bongos/routine-schedule.js +318 -0
- package/scripts/bongos/run-routine.js +257 -0
- package/scripts/bongos/run-unit-tests.js +654 -0
- package/scripts/bongos/runner-drift.js +151 -0
- package/scripts/bongos/sandbox-stage.js +459 -0
- package/scripts/bongos/scope-map-guard.js +300 -0
- package/scripts/bongos/scope-roster-guard.js +118 -0
- package/scripts/bongos/seam-wiring-guard.js +275 -0
- package/scripts/bongos/search-ingest-db.js +288 -0
- package/scripts/bongos/search-ingest-md.js +269 -0
- package/scripts/bongos/seed-bongos-v1-idea-routing-tasks.js +152 -0
- package/scripts/bongos/seed-bv1-profiles-tasks.js +135 -0
- package/scripts/bongos/seed-bv2-ideator-surface-tasks.js +390 -0
- package/scripts/bongos/seed-staging.sh +117 -0
- package/scripts/bongos/seed-verify-criteria.js +124 -0
- package/scripts/bongos/sequence.js +597 -0
- package/scripts/bongos/session-cost.js +430 -0
- package/scripts/bongos/session-digest-build.js +293 -0
- package/scripts/bongos/session-digest.js +200 -0
- package/scripts/bongos/session-eval.js +631 -0
- package/scripts/bongos/session-transcript-build.js +155 -0
- package/scripts/bongos/session-transcript-upload.js +29 -0
- package/scripts/bongos/session.js +404 -0
- package/scripts/bongos/setup.js +646 -0
- package/scripts/bongos/ship-check.js +89 -0
- package/scripts/bongos/ship-deploy-target.js +393 -0
- package/scripts/bongos/ship-escalation.js +167 -0
- package/scripts/bongos/ship-finish.js +420 -0
- package/scripts/bongos/ship-flow.js +1217 -0
- package/scripts/bongos/ship-git.js +100 -0
- package/scripts/bongos/ship-grade-steps.js +547 -0
- package/scripts/bongos/ship-grade.js +426 -0
- package/scripts/bongos/ship-honesty.js +314 -0
- package/scripts/bongos/ship-io.js +139 -0
- package/scripts/bongos/ship-land.js +1130 -0
- package/scripts/bongos/ship-memory-sync.js +249 -0
- package/scripts/bongos/ship-merge-gate.js +225 -0
- package/scripts/bongos/ship-merge.js +466 -0
- package/scripts/bongos/ship-mode-ask.js +138 -0
- package/scripts/bongos/ship-mode-manual.js +54 -0
- package/scripts/bongos/ship-preflight-steps.js +399 -0
- package/scripts/bongos/ship-regen.js +291 -0
- package/scripts/bongos/ship-resume.js +201 -0
- package/scripts/bongos/ship-session-upload.js +313 -0
- package/scripts/bongos/ship-state.js +110 -0
- package/scripts/bongos/ship-surprise.js +84 -0
- package/scripts/bongos/ship-visual.js +75 -0
- package/scripts/bongos/ship.js +382 -0
- package/scripts/bongos/shipping-mode.js +71 -0
- package/scripts/bongos/skill-lint.js +250 -0
- package/scripts/bongos/skill-preflight.js +361 -0
- package/scripts/bongos/smoke-batch-claim.sh +238 -0
- package/scripts/bongos/smoke-batch-release.sh +316 -0
- package/scripts/bongos/smoke-claim-consistency.sh +222 -0
- package/scripts/bongos/smoke-dependencies.sh +143 -0
- package/scripts/bongos/smoke-gds.js +256 -0
- package/scripts/bongos/smoke-write.sh +275 -0
- package/scripts/bongos/source-text-test-scan.js +106 -0
- package/scripts/bongos/spark.js +294 -0
- package/scripts/bongos/stale-worktrees.js +212 -0
- package/scripts/bongos/start-goals.js +102 -0
- package/scripts/bongos/start.js +1090 -0
- package/scripts/bongos/status.js +545 -0
- package/scripts/bongos/strand-watch.js +315 -0
- package/scripts/bongos/stranded-rows.js +200 -0
- package/scripts/bongos/stray-unit-sweep.sh +71 -0
- package/scripts/bongos/surface.js +101 -0
- package/scripts/bongos/task.js +273 -0
- package/scripts/bongos/test-path-guard.js +99 -0
- package/scripts/bongos/triage.js +742 -0
- package/scripts/bongos/turn-end-sound.js +74 -0
- package/scripts/bongos/tweak-halt.js +70 -0
- package/scripts/bongos/tweak-renders.js +200 -0
- package/scripts/bongos/uat.js +120 -0
- package/scripts/bongos/ui-kit-transform.js +43 -0
- package/scripts/bongos/update-channel.js +512 -0
- package/scripts/bongos/update-sweep.js +829 -0
- package/scripts/bongos/upgrade-artist-gate.js +46 -0
- package/scripts/bongos/upgrade-commit-identity.js +32 -0
- package/scripts/bongos/upgrade-migrate.js +224 -0
- package/scripts/bongos/upgrade-operator.js +73 -0
- package/scripts/bongos/upgrade-outcome.js +174 -0
- package/scripts/bongos/upgrade.js +1499 -0
- package/scripts/bongos/validate-design.js +12 -0
- package/scripts/bongos/version-close.js +621 -0
- package/scripts/bongos/version-literal-guard.js +140 -0
- package/scripts/bongos/version-select.js +79 -0
- package/scripts/bongos/visual-review-nudge.js +39 -0
- package/scripts/bongos/wedge-remedy.js +174 -0
- package/scripts/bongos/worktree-claim-guard.js +130 -0
- package/scripts/bongos/worktree.js +449 -0
- package/scripts/discord/post.js +1 -1
- package/scripts/gds/README.md +9 -0
- package/scripts/gds/abandon.js +6 -136
- package/scripts/gds/accessibility-replay.js +5 -194
- package/scripts/gds/address-park-sweep.sh +7 -90
- package/scripts/gds/adopt-detect.js +5 -121
- package/scripts/gds/adopt-import.js +5 -109
- package/scripts/gds/adopt-preflight.js +5 -185
- package/scripts/gds/adr-namespace.js +5 -271
- package/scripts/gds/agent-invoke.js +5 -687
- package/scripts/gds/agents-sync.js +5 -500
- package/scripts/gds/api-alias-caller-scan.js +5 -255
- package/scripts/gds/api-artifacts.js +6 -0
- package/scripts/gds/api.js +6 -85
- package/scripts/gds/api.ps1 +8 -26
- package/scripts/gds/architect-audit.js +6 -293
- package/scripts/gds/artifact-audit.js +5 -324
- package/scripts/gds/artifact-format.js +6 -203
- package/scripts/gds/ask.js +5 -229
- package/scripts/gds/audit-authorship.sh +7 -328
- package/scripts/gds/audit-deps.js +6 -188
- package/scripts/gds/audit-gate.js +5 -119
- package/scripts/gds/audit-rank-roles.js +6 -171
- package/scripts/gds/audit-replay.sh +7 -204
- package/scripts/gds/autobongos-digest.js +5 -121
- package/scripts/gds/autobongos-grade-cap.js +5 -186
- package/scripts/gds/autobongos-loop.js +5 -208
- package/scripts/gds/autobongos-run.js +5 -1359
- package/scripts/gds/autobongos-service.cmd +8 -49
- package/scripts/gds/autobongos-service.ps1 +8 -270
- package/scripts/gds/autobongos-tweak-lane.js +5 -261
- package/scripts/gds/autobongos-verify.js +5 -616
- package/scripts/gds/autonomy-gate.js +5 -133
- package/scripts/gds/autonomy-gauge-statusline.js +5 -122
- package/scripts/gds/autonomy-gauge.js +5 -82
- package/scripts/gds/backfill-cost.js +6 -175
- package/scripts/gds/backfill-disciplines.js +5 -142
- package/scripts/gds/backfill-session-earnings.js +5 -121
- package/scripts/gds/backfill-session-types.js +5 -85
- package/scripts/gds/backfill-sessions.js +5 -409
- package/scripts/gds/backfill-subagent-rewards.js +5 -483
- package/scripts/gds/backfill-task-rewards.js +5 -411
- package/scripts/gds/backlog-review.js +6 -398
- package/scripts/gds/backup-dropin-sweep.sh +7 -94
- package/scripts/gds/backup.js +6 -115
- package/scripts/gds/baseline-staleness.js +5 -215
- package/scripts/gds/bfg-principal-token.js +6 -64
- package/scripts/gds/bug-attachment-audit.js +5 -147
- package/scripts/gds/bug-attachment-recover.js +5 -196
- package/scripts/gds/bug-triage.js +6 -291
- package/scripts/gds/build-bongos.js +5 -92
- package/scripts/gds/bump-version.js +5 -219
- package/scripts/gds/capture.js +6 -480
- package/scripts/gds/category-advisory-guard.js +5 -205
- package/scripts/gds/ci-grade.js +6 -81
- package/scripts/gds/claim-recall.js +6 -111
- package/scripts/gds/claim.js +6 -788
- package/scripts/gds/claude-materialize.js +5 -1198
- package/scripts/gds/claude-md-template.js +5 -140
- package/scripts/gds/cleanup-orphans.js +6 -73
- package/scripts/gds/cli-lib.js +6 -1204
- package/scripts/gds/client-baseurl-guard.js +5 -114
- package/scripts/gds/conductor-dispatch.js +6 -534
- package/scripts/gds/context-pack.js +6 -325
- package/scripts/gds/control-manifest.js +5 -197
- package/scripts/gds/copy-apply.js +5 -756
- package/scripts/gds/copy-inventory.js +5 -569
- package/scripts/gds/core-origin-follow.js +5 -184
- package/scripts/gds/core-pin-sync.js +5 -258
- package/scripts/gds/cost-report.js +6 -62
- package/scripts/gds/cost.js +6 -46
- package/scripts/gds/credential-presence.js +5 -294
- package/scripts/gds/cutover-codemod.js +5 -239
- package/scripts/gds/db-backup-nightly.sh +7 -231
- package/scripts/gds/db-backup-offsite.sh +7 -266
- package/scripts/gds/demote.js +6 -44
- package/scripts/gds/deploy-divergence.js +6 -445
- package/scripts/gds/deploy-main-audit-gate.sh +7 -96
- package/scripts/gds/design-sync.js +5 -10
- package/scripts/gds/dev-box-guard.js +5 -164
- package/scripts/gds/dev-lib.js +5 -721
- package/scripts/gds/dev.js +5 -643
- package/scripts/gds/device-flow-help.js +5 -70
- package/scripts/gds/diagnose-achievements.js +5 -116
- package/scripts/gds/diagram-facts.js +6 -355
- package/scripts/gds/discord-channels.js +5 -75
- package/scripts/gds/do-api.js +6 -109
- package/scripts/gds/doc-cli-guard.js +5 -266
- package/scripts/gds/doc-comment-coverage.js +5 -137
- package/scripts/gds/doc-control-claims.js +5 -166
- package/scripts/gds/docs-entropy.js +5 -443
- package/scripts/gds/doctor.js +6 -492
- package/scripts/gds/enroll-control-plane.js +5 -99
- package/scripts/gds/exec-path-guard.js +5 -562
- package/scripts/gds/feedback-send.js +5 -247
- package/scripts/gds/fetch-art-key.js +5 -104
- package/scripts/gds/fetch-sound-prefs.js +5 -124
- package/scripts/gds/figma-design-sync.js +5 -9
- package/scripts/gds/find-untested.js +5 -369
- package/scripts/gds/fitness-checks-error-envelope.js +5 -133
- package/scripts/gds/fitness-checks-identity.js +5 -342
- package/scripts/gds/fitness-checks-packaging.js +5 -131
- package/scripts/gds/fitness-checks-route-pins.js +5 -75
- package/scripts/gds/fitness-checks-vocabulary.js +5 -391
- package/scripts/gds/fitness-checks-write-validation.js +5 -156
- package/scripts/gds/fitness-lib.js +5 -126
- package/scripts/gds/fitness-migration-contraction.js +5 -49
- package/scripts/gds/fitness-ratchets.js +5 -563
- package/scripts/gds/fitness.js +5 -1493
- package/scripts/gds/gate-review.js +5 -328
- package/scripts/gds/gating.js +5 -346
- package/scripts/gds/gds-literal-scan.js +5 -194
- package/scripts/gds/gen-api-client.js +5 -555
- package/scripts/gds/gen-api-docs.js +5 -1100
- package/scripts/gds/gen-atlas.js +5 -364
- package/scripts/gds/gen-diagrams.js +6 -607
- package/scripts/gds/gen-file-map.js +5 -335
- package/scripts/gds/gen-freshness.js +5 -31
- package/scripts/gds/gen-interaction-posture.js +5 -120
- package/scripts/gds/gen-repo-map.js +5 -538
- package/scripts/gds/gen-role-responsibilities.js +5 -133
- package/scripts/gds/gen-session-index.js +5 -241
- package/scripts/gds/gen-sounds.js +5 -174
- package/scripts/gds/git-merge-regen.js +6 -291
- package/scripts/gds/go-live.js +5 -1069
- package/scripts/gds/goal.js +6 -271
- package/scripts/gds/government-walk.js +5 -1475
- package/scripts/gds/grade-correlation-audit.js +5 -308
- package/scripts/gds/grade-replay.js +5 -235
- package/scripts/gds/grade-smoke.js +6 -204
- package/scripts/gds/home-isolation-guard.js +5 -125
- package/scripts/gds/hooks/pre-push.js +5 -209
- package/scripts/gds/howto.js +5 -143
- package/scripts/gds/http-api-client.js +6 -81
- package/scripts/gds/identity-strip.js +5 -74
- package/scripts/gds/init.js +5 -1157
- package/scripts/gds/install-git-hooks.js +5 -198
- package/scripts/gds/instance-apex.js +5 -37
- package/scripts/gds/intent-retry.js +5 -51
- package/scripts/gds/key-card.js +6 -221
- package/scripts/gds/key-status.js +5 -124
- package/scripts/gds/land-watch.js +5 -199
- package/scripts/gds/leak-scan-allowlist.js +5 -291
- package/scripts/gds/learning-capture.js +6 -144
- package/scripts/gds/lib.sh +7 -73
- package/scripts/gds/linkify-refs.js +6 -654
- package/scripts/gds/lint-infra-exec.js +5 -68
- package/scripts/gds/lint-migrations.js +5 -100
- package/scripts/gds/lint-workflow-exec.js +5 -61
- package/scripts/gds/local-preview-lib.js +6 -128
- package/scripts/gds/local-preview.js +6 -81
- package/scripts/gds/login.js +5 -358
- package/scripts/gds/main-audit.js +5 -623
- package/scripts/gds/me.js +6 -96
- package/scripts/gds/memory-map.js +5 -174
- package/scripts/gds/merge-lock.js +6 -70
- package/scripts/gds/migration-namespace.js +5 -311
- package/scripts/gds/mirror-lineage-check.js +5 -341
- package/scripts/gds/mirror-redact.js +5 -348
- package/scripts/gds/module-artifact.js +6 -289
- package/scripts/gds/module-assess-docs.js +6 -237
- package/scripts/gds/module-assess-installs.js +6 -227
- package/scripts/gds/module-assess-score.js +6 -110
- package/scripts/gds/module-assess-security.js +6 -251
- package/scripts/gds/module-assess-tests.js +6 -277
- package/scripts/gds/module-assess-version.js +6 -91
- package/scripts/gds/module-error-report.js +5 -146
- package/scripts/gds/module-test-runner.js +6 -413
- package/scripts/gds/module.js +5 -1374
- package/scripts/gds/move-escalation.js +5 -140
- package/scripts/gds/newcomer-floor.js +6 -420
- package/scripts/gds/newcomer-floor.test.js +6 -234
- package/scripts/gds/next-number.js +6 -162
- package/scripts/gds/oauth-secret.js +5 -200
- package/scripts/gds/onboard.js +5 -265
- package/scripts/gds/onboarding-analyze.js +6 -225
- package/scripts/gds/onboarding-config.js +6 -179
- package/scripts/gds/onboarding-ship.js +6 -91
- package/scripts/gds/pack-env-prefix.js +5 -72
- package/scripts/gds/package-core.js +5 -1102
- package/scripts/gds/page-inventory.js +5 -346
- package/scripts/gds/page-reader.js +5 -720
- package/scripts/gds/paste-token.js +6 -211
- package/scripts/gds/plain-cards.js +5 -350
- package/scripts/gds/portability-smoke-art.sh +7 -84
- package/scripts/gds/portability-smoke-memory.sh +7 -175
- package/scripts/gds/preflight.js +5 -212
- package/scripts/gds/probe-cache.js +5 -244
- package/scripts/gds/prove-strict-versioning.js +6 -283
- package/scripts/gds/provision-auto-upgrade.js +5 -161
- package/scripts/gds/provision-byo-host.js +5 -67
- package/scripts/gds/provision-capacity.js +5 -78
- package/scripts/gds/provision-caps.js +5 -62
- package/scripts/gds/provision-config.js +5 -232
- package/scripts/gds/provision-core-upgrade.js +5 -1165
- package/scripts/gds/provision-disconnect.js +5 -87
- package/scripts/gds/provision-github-setup.js +5 -167
- package/scripts/gds/provision-net.js +5 -356
- package/scripts/gds/provision-pin-key.js +5 -175
- package/scripts/gds/provision-pin-replay.js +5 -125
- package/scripts/gds/provision-process.js +5 -169
- package/scripts/gds/provision-render.js +5 -200
- package/scripts/gds/provision-repo-auth.js +5 -163
- package/scripts/gds/provision-repo-private.js +5 -97
- package/scripts/gds/provision-repo.js +5 -1336
- package/scripts/gds/provision-teardown.js +5 -105
- package/scripts/gds/provision-units.js +5 -468
- package/scripts/gds/provision.js +5 -1477
- package/scripts/gds/publish-credential-check.js +6 -65
- package/scripts/gds/publish-integration-gate.js +5 -140
- package/scripts/gds/publish-manifest.js +5 -437
- package/scripts/gds/publish-watch.js +5 -266
- package/scripts/gds/pulse.js +6 -335
- package/scripts/gds/push-main.js +5 -54
- package/scripts/gds/push-path-brief.js +5 -98
- package/scripts/gds/read-session-export.js +5 -357
- package/scripts/gds/reauth.js +6 -154
- package/scripts/gds/recall.js +6 -182
- package/scripts/gds/redteam-patrol.js +5 -435
- package/scripts/gds/regen-instance-docs.js +5 -45
- package/scripts/gds/release-core.js +5 -78
- package/scripts/gds/release-notes.js +5 -270
- package/scripts/gds/release.js +6 -138
- package/scripts/gds/rename-history-check.js +5 -367
- package/scripts/gds/rename-ledger-prose.js +5 -480
- package/scripts/gds/render-api.js +5 -196
- package/scripts/gds/render-check.js +5 -204
- package/scripts/gds/render-ideas.js +6 -225
- package/scripts/gds/render-payload.js +5 -84
- package/scripts/gds/repo-metrics.js +6 -362
- package/scripts/gds/review-sheet.js +5 -106
- package/scripts/gds/role-pack-guard.js +5 -141
- package/scripts/gds/route-shadow-guard.js +5 -173
- package/scripts/gds/routine-schedule.js +5 -281
- package/scripts/gds/run-routine.js +5 -255
- package/scripts/gds/run-unit-tests.js +6 -659
- package/scripts/gds/runner-drift.js +5 -149
- package/scripts/gds/sandbox-stage.js +6 -458
- package/scripts/gds/scope-map-guard.js +5 -299
- package/scripts/gds/scope-roster-guard.js +5 -117
- package/scripts/gds/seam-wiring-guard.js +5 -274
- package/scripts/gds/search-ingest-db.js +6 -287
- package/scripts/gds/search-ingest-md.js +6 -268
- package/scripts/gds/seed-bongos-v1-idea-routing-tasks.js +6 -152
- package/scripts/gds/seed-bv1-profiles-tasks.js +6 -135
- package/scripts/gds/seed-bv2-ideator-surface-tasks.js +6 -390
- package/scripts/gds/seed-staging.sh +7 -116
- package/scripts/gds/seed-verify-criteria.js +6 -124
- package/scripts/gds/sequence.js +6 -596
- package/scripts/gds/session-cost.js +6 -429
- package/scripts/gds/session-digest-build.js +6 -293
- package/scripts/gds/session-digest.js +6 -199
- package/scripts/gds/session-eval.js +6 -630
- package/scripts/gds/session-transcript-build.js +6 -155
- package/scripts/gds/session-transcript-upload.js +6 -29
- package/scripts/gds/session.js +6 -403
- package/scripts/gds/setup.js +6 -645
- package/scripts/gds/ship-check.js +5 -85
- package/scripts/gds/ship-deploy-target.js +5 -392
- package/scripts/gds/ship-escalation.js +5 -166
- package/scripts/gds/ship-finish.js +5 -419
- package/scripts/gds/ship-flow.js +5 -1216
- package/scripts/gds/ship-git.js +5 -99
- package/scripts/gds/ship-grade-steps.js +5 -546
- package/scripts/gds/ship-grade.js +5 -425
- package/scripts/gds/ship-honesty.js +5 -312
- package/scripts/gds/ship-io.js +5 -138
- package/scripts/gds/ship-land.js +5 -1129
- package/scripts/gds/ship-memory-sync.js +5 -248
- package/scripts/gds/ship-merge-gate.js +5 -224
- package/scripts/gds/ship-merge.js +5 -465
- package/scripts/gds/ship-mode-ask.js +5 -137
- package/scripts/gds/ship-mode-manual.js +5 -53
- package/scripts/gds/ship-preflight-steps.js +5 -398
- package/scripts/gds/ship-regen.js +5 -313
- package/scripts/gds/ship-resume.js +5 -200
- package/scripts/gds/ship-session-upload.js +5 -312
- package/scripts/gds/ship-state.js +5 -109
- package/scripts/gds/ship-surprise.js +5 -83
- package/scripts/gds/ship-visual.js +5 -74
- package/scripts/gds/ship.js +5 -380
- package/scripts/gds/shipping-mode.js +5 -69
- package/scripts/gds/skill-lint.js +5 -248
- package/scripts/gds/skill-preflight.js +5 -359
- package/scripts/gds/smoke-batch-claim.sh +7 -237
- package/scripts/gds/smoke-batch-release.sh +7 -315
- package/scripts/gds/smoke-claim-consistency.sh +7 -221
- package/scripts/gds/smoke-dependencies.sh +7 -142
- package/scripts/gds/smoke-gds.js +6 -255
- package/scripts/gds/smoke-write.sh +7 -274
- package/scripts/gds/source-text-test-scan.js +7 -0
- package/scripts/gds/spark.js +6 -293
- package/scripts/gds/stale-worktrees.js +5 -210
- package/scripts/gds/start-goals.js +5 -101
- package/scripts/gds/start.js +6 -1089
- package/scripts/gds/status.js +6 -544
- package/scripts/gds/strand-watch.js +5 -313
- package/scripts/gds/stranded-rows.js +5 -198
- package/scripts/gds/stray-unit-sweep.sh +7 -70
- package/scripts/gds/surface.js +5 -100
- package/scripts/gds/task.js +6 -272
- package/scripts/gds/test-path-guard.js +5 -97
- package/scripts/gds/triage.js +6 -741
- package/scripts/gds/turn-end-sound.js +5 -72
- package/scripts/gds/tweak-halt.js +5 -68
- package/scripts/gds/tweak-renders.js +5 -198
- package/scripts/gds/uat.js +6 -119
- package/scripts/gds/ui-kit-transform.js +5 -41
- package/scripts/gds/update-channel.js +5 -510
- package/scripts/gds/update-sweep.js +5 -827
- package/scripts/gds/upgrade-artist-gate.js +5 -45
- package/scripts/gds/upgrade-commit-identity.js +5 -31
- package/scripts/gds/upgrade-migrate.js +5 -223
- package/scripts/gds/upgrade-operator.js +6 -73
- package/scripts/gds/upgrade-outcome.js +5 -173
- package/scripts/gds/upgrade.js +5 -1497
- package/scripts/gds/validate-design.js +5 -10
- package/scripts/gds/version-close.js +6 -620
- package/scripts/gds/version-literal-guard.js +5 -138
- package/scripts/gds/version-select.js +5 -77
- package/scripts/gds/visual-review-nudge.js +5 -38
- package/scripts/gds/wedge-remedy.js +5 -173
- package/scripts/gds/worktree-claim-guard.js +5 -129
- package/scripts/gds/worktree.js +6 -448
- package/scripts/hall-preview/refresh-fixtures.js +1 -1
- package/scripts/hall-preview/server.js +2 -2
- package/scripts/migrate.sh +3 -3
- package/scripts/public-mirror-export.js +3 -3
- package/scripts/security/dep-audit.js +50 -124
- package/scripts/setup-builder.js +7 -7
- package/src/bongos/api-errors.js +1 -0
- package/src/bongos/api-prefix.js +1 -1
- package/src/bongos/auth-github.js +19 -3
- package/src/bongos/auth-idp.js +7 -0
- package/src/bongos/claim-attribution.js +2 -2
- package/src/bongos/core-moves.js +1 -1
- package/src/bongos/core-update.js +3 -3
- package/src/bongos/craft-mode.js +2 -2
- package/src/bongos/db-kernel.js +15 -3
- package/src/bongos/db.js +30 -4
- package/src/bongos/github-repos.js +1 -1
- package/src/bongos/llm-cache.js +1 -1
- package/src/bongos/llm-pricing.js +1 -1
- package/src/bongos/metrics.js +1 -1
- package/src/bongos/middleware/rate-limit.js +2 -2
- package/src/bongos/module-listing.js +93 -1
- package/src/bongos/module-scope-map.js +90 -85
- package/src/bongos/module-store.js +1 -1
- package/src/bongos/module-submissions.js +1 -1
- package/src/bongos/optimizer.js +1 -1
- package/src/bongos/package-registry.js +1 -1
- package/src/bongos/path-match.js +1 -1
- package/src/bongos/permission-path-check.js +3 -3
- package/src/bongos/platform-visibility-gate.js +3 -5
- package/src/bongos/prelaunch-gate.js +7 -6
- package/src/bongos/route-rank-check.js +2 -2
- package/src/bongos/routes/auth.js +15 -2
- package/src/bongos/routes/backup.js +1 -1
- package/src/bongos/routes/builders.js +29 -1
- package/src/bongos/routes/me.js +49 -18
- package/src/bongos/routes/modules.js +29 -9
- package/src/bongos/routes/public.js +3 -72
- package/src/bongos/schema-lag.js +1 -1
- package/src/bongos/sensitive-surfaces.js +1 -1
- package/src/bongos/serve-internal.js +65 -16
- package/src/bongos/software-update.js +2 -2
- package/src/bongos/upgrade-hold.js +3 -3
- package/src/hall-look.js +6 -5
- package/src/module-api.js +3 -3
- package/src/module-loader/catalog.js +1 -1
- package/src/module-loader/error-tally.js +3 -3
- package/src/module-loader/manifest-schema.js +3 -3
- package/src/platform-server.js +10 -0
- package/src/role-responsibilities.js +1 -1
- package/src/stale-timer.js +2 -2
- package/tests/accessibility_replay.mjs +1 -1
- package/tests/activity_rollup_order_db.mjs +1 -1
- package/tests/activity_snapshots_db.mjs +1 -1
- package/tests/adopt_detect.mjs +1 -1
- package/tests/adopt_import.mjs +1 -1
- package/tests/adopt_preflight.mjs +1 -1
- package/tests/adr_0089_scope.mjs +10 -7
- package/tests/adr_0162_citation.mjs +1 -1
- package/tests/adr_0162_gate_citation.mjs +1 -1
- package/tests/agent_invoke.mjs +1 -1
- package/tests/agent_invoke_live.mjs +3 -3
- package/tests/agents_cron_trigger.mjs +2 -2
- package/tests/agents_roster.mjs +1 -1
- package/tests/agents_sync.mjs +4 -4
- package/tests/allow_rule_guard.mjs +20 -20
- package/tests/api_alias_caller_ratchet.mjs +9 -10
- package/tests/api_alias_exceptions.mjs +7 -6
- package/tests/api_artifacts.mjs +214 -0
- package/tests/api_cli_flags.mjs +3 -3
- package/tests/api_client.mjs +56 -54
- package/tests/api_docs.mjs +30 -9
- package/tests/api_error_envelope_buildcheck.mjs +1 -1
- package/tests/api_msys_path_repair.mjs +2 -2
- package/tests/architect.mjs +1 -1
- package/tests/art_stage.mjs +2 -2
- package/tests/artifact_audit.mjs +2 -2
- package/tests/atlas.mjs +1 -1
- package/tests/audit_deps.mjs +1 -1
- package/tests/audit_gate.mjs +1 -1
- package/tests/auth_flow_slice1.mjs +3 -3
- package/tests/auth_inactive_builder.mjs +43 -5
- package/tests/auth_session_expiry_db.mjs +16 -4
- package/tests/auth_session_ttl.mjs +23 -0
- package/tests/authorship_audit.mjs +2 -2
- package/tests/autobongos_cadence.mjs +1 -1
- package/tests/autobongos_fence.mjs +1 -1
- package/tests/autobongos_grade_cap.mjs +2 -2
- package/tests/autobongos_heartbeat_head.mjs +1 -1
- package/tests/autobongos_host_access.mjs +3 -3
- package/tests/autobongos_loop.mjs +17 -17
- package/tests/autobongos_service_ps1.mjs +3 -3
- package/tests/autobongos_tweak_lane.mjs +2 -2
- package/tests/autobongos_verify.mjs +2 -2
- package/tests/autonomous_fit_protected_paths.mjs +3 -3
- package/tests/autonomy_config_idle.mjs +1 -1
- package/tests/autonomy_daily_checks.mjs +201 -0
- package/tests/autonomy_digest.mjs +1 -1
- package/tests/autonomy_gate.mjs +1 -1
- package/tests/autonomy_gauge.mjs +2 -2
- package/tests/autonomy_runner_identity.mjs +1 -1
- package/tests/backfill_sessions.mjs +8 -8
- package/tests/backfill_subagent_rewards.mjs +1 -1
- package/tests/backfill_task_rewards.mjs +2 -2
- package/tests/backlog_review.mjs +3 -3
- package/tests/baseline_staleness.mjs +2 -2
- package/tests/bfg.mjs +11 -5
- package/tests/bfg_write.mjs +20 -11
- package/tests/blockers_hall.mjs +14 -4
- package/tests/blockers_page_ui.mjs +56 -12
- package/tests/bongos_dispatch.mjs +5 -5
- package/tests/bongos_login.mjs +2 -2
- package/tests/bug_attachment_audit.mjs +1 -1
- package/tests/bug_attachment_recover.mjs +2 -2
- package/tests/bug_triage.mjs +3 -3
- package/tests/build_info.mjs +1 -1
- package/tests/builder_tester_tag.mjs +184 -0
- package/tests/bump_version.mjs +3 -3
- package/tests/canonical_profile_url.mjs +1 -1
- package/tests/capture_error_format.mjs +1 -1
- package/tests/capture_goal_routing.mjs +2 -2
- package/tests/category_advisory_guard.mjs +3 -3
- package/tests/claim_error_surface.mjs +2 -2
- package/tests/claim_from_task_and_home.mjs +1 -1
- package/tests/claim_gate_open_blocker.mjs +7 -4
- package/tests/claim_gate_rebase.mjs +12 -8
- package/tests/claim_recall.mjs +4 -4
- package/tests/claim_resolve_worktree_lock.mjs +1 -1
- package/tests/claude_materialize.mjs +68 -68
- package/tests/clawback_confirmed_backlog.mjs +8 -5
- package/tests/cli_allowlist_permissions.mjs +11 -11
- package/tests/cli_dispatcher.mjs +2 -2
- package/tests/cli_err_code.mjs +6 -6
- package/tests/cli_exit_no_abort.mjs +7 -7
- package/tests/cli_lib_formatters.mjs +2 -2
- package/tests/cli_sessions.mjs +5 -5
- package/tests/cli_surface.mjs +15 -15
- package/tests/cli_token_reissue.mjs +2 -2
- package/tests/client_baseurl_guard.mjs +1 -1
- package/tests/client_bundle_route.mjs +35 -4
- package/tests/cloud_bongos_pack.mjs +1 -1
- package/tests/community_leaderboard_db.mjs +1 -1
- package/tests/conductor.mjs +18 -18
- package/tests/conflict_resolve.mjs +14 -16
- package/tests/consumer_layout_boot.mjs +12 -12
- package/tests/context_pack.mjs +6 -6
- package/tests/control_manifest.mjs +4 -4
- package/tests/copy_desk_page_reads.mjs +1 -1
- package/tests/copy_desk_page_release.mjs +192 -0
- package/tests/copy_inventory.mjs +2 -2
- package/tests/core_auto_upgrade.mjs +1 -1
- package/tests/core_move_notice.mjs +2 -2
- package/tests/core_origin_follow.mjs +7 -7
- package/tests/core_pin_sync.mjs +3 -3
- package/tests/core_upgrade_door.mjs +2 -2
- package/tests/core_upgrade_owner_door.mjs +34 -1
- package/tests/core_upgrade_runner.mjs +19 -19
- package/tests/credential_presence.mjs +2 -2
- package/tests/credit_grant.mjs +3 -3
- package/tests/credit_log_single_writer.mjs +5 -5
- package/tests/criterion_ref_status.mjs +2 -2
- package/tests/cross_discipline_priority_direction.mjs +3 -3
- package/tests/cutover_codemod.mjs +2 -4
- package/tests/db_backup_nightly.mjs +1 -1
- package/tests/db_backup_offsite.mjs +1 -1
- package/tests/db_ownership_handover.mjs +2 -2
- package/tests/dead_deps.mjs +3 -3
- package/tests/dependency_advisory.mjs +1 -1
- package/tests/deploy_audit_gate.mjs +4 -4
- package/tests/deploy_divergence_line.mjs +36 -16
- package/tests/deploy_page_projects.mjs +35 -4
- package/tests/dev_lib.mjs +2 -2
- package/tests/dev_windows.mjs +2 -2
- package/tests/diagram_facts_offset.mjs +1 -1
- package/tests/diagram_repo_slug.mjs +1 -1
- package/tests/diff_derived_signals.mjs +2 -2
- package/tests/dns_preflight.mjs +2 -2
- package/tests/do_api.mjs +3 -3
- package/tests/doc_cli_guard.mjs +28 -28
- package/tests/doc_comment_coverage.mjs +1 -1
- package/tests/doc_control_claims.mjs +11 -11
- package/tests/docs_entropy.mjs +2 -2
- package/tests/docs_openapi_route.mjs +8 -6
- package/tests/doctor_hooks.mjs +1 -1
- package/tests/edit_hints.mjs +3 -2
- package/tests/effective_visibility_predicate.mjs +1 -19
- package/tests/env_knobs_neutral_prefix.mjs +13 -13
- package/tests/exec_path_guard.mjs +4 -4
- package/tests/executed_closure.mjs +18 -12
- package/tests/file_map.mjs +1 -1
- package/tests/find_untested.mjs +13 -13
- package/tests/first_admin_bootstrap.mjs +1 -1
- package/tests/fitness.mjs +16 -16
- package/tests/fitness_gds_ratchet.mjs +2 -2
- package/tests/fitness_installed_core.mjs +3 -3
- package/tests/fitness_no_raw_nul.mjs +1 -1
- package/tests/fitness_ratchets.mjs +3 -3
- package/tests/fitness_scope_roster.mjs +2 -2
- package/tests/fitness_two_root.mjs +8 -8
- package/tests/fixtures/accessibility-replay.json +5 -5
- package/tests/fixtures/grade-replay/recorded-panel-grades.json +1 -1
- package/tests/fixtures/ideator-prefold/README.md +1 -1
- package/tests/fixtures/page-ledger.mjs +22 -0
- package/tests/fixtures/session-506-digest.json +5 -5
- package/tests/gate_approvals.mjs +50 -0
- package/tests/gate_review.mjs +8 -8
- package/tests/gating_review_retired.mjs +2 -2
- package/tests/gen_freshness.mjs +3 -3
- package/tests/git_guard.mjs +3 -3
- package/tests/git_merge_regen.mjs +41 -65
- package/tests/github_one_trip.mjs +4 -4
- package/tests/github_pick_up.mjs +2 -2
- package/tests/github_push_merge_driver.mjs +1 -1
- package/tests/go_live.mjs +3 -2
- package/tests/goal_category.mjs +1 -1
- package/tests/goal_cli.mjs +2 -2
- package/tests/goal_create_spec_entry.mjs +1 -1
- package/tests/goal_invite_consent.mjs +3 -1
- package/tests/goal_move.mjs +1 -1
- package/tests/goal_working_area.mjs +1 -1
- package/tests/government_agent_asks.mjs +7 -7
- package/tests/government_board_room_copy.mjs +6 -1
- package/tests/government_board_view.mjs +39 -0
- package/tests/government_board_vote_ui.mjs +39 -1
- package/tests/government_config.mjs +2 -2
- package/tests/government_live_proof_shape.mjs +1 -1
- package/tests/government_protected_surfaces.mjs +54 -53
- package/tests/government_require_permission.mjs +9 -1
- package/tests/government_vanilla_boot.mjs +1 -1
- package/tests/government_vocabulary.mjs +2 -2
- package/tests/government_walk.mjs +2 -2
- package/tests/grade_body_limit.mjs +6 -4
- package/tests/grade_correlation_audit.mjs +3 -3
- package/tests/grade_diff_hash.mjs +1 -1
- package/tests/grade_engine_replay.mjs +2 -2
- package/tests/grade_server_authoritative.mjs +1 -1
- package/tests/grade_unavailable_display.mjs +1 -1
- package/tests/grader.mjs +8 -24
- package/tests/grader_generated_provenance.mjs +14 -14
- package/tests/grader_no_artifact.mjs +1 -1
- package/tests/grader_prompt_fencing.mjs +1 -1
- package/tests/grader_quality_window_overflow.mjs +1 -1
- package/tests/grader_reader_lens.mjs +3 -3
- package/tests/grader_regrade_delta.mjs +1 -1
- package/tests/grader_unbacked_score.mjs +2 -2
- package/tests/hall_acclaim_vote_control.mjs +113 -0
- package/tests/hall_asset_cache.mjs +127 -0
- package/tests/hall_audit.mjs +63 -0
- package/tests/hall_board_world.mjs +20 -0
- package/tests/hall_city_card_words.mjs +61 -0
- package/tests/hall_client_request_shape.mjs +5 -1
- package/tests/hall_home_ships_bounded.mjs +160 -0
- package/tests/hall_landing_boot.mjs +15 -2
- package/tests/hall_nav.mjs +33 -0
- package/tests/hall_onboarding_bongos_setup.mjs +1 -1
- package/tests/hall_oversight_world.mjs +44 -4
- package/tests/hall_palette.mjs +12 -9
- package/tests/hall_preview_security.mjs +1 -1
- package/tests/hall_profile_world.mjs +17 -0
- package/tests/hall_reading_world.mjs +16 -1
- package/tests/hall_roster_world.mjs +2 -1
- package/tests/hall_studio_world.mjs +4 -1
- package/tests/hall_work_history_id.mjs +39 -0
- package/tests/held_tweak_reporting.mjs +4 -4
- package/tests/helpers.mjs +3 -3
- package/tests/home_bounded_reads.mjs +1 -1
- package/tests/home_isolation_guard.mjs +1 -1
- package/tests/hook_core_resolve.mjs +7 -7
- package/tests/hook_user_agents.mjs +1 -1
- package/tests/hooks_drain.mjs +2 -2
- package/tests/host_topology_skips.mjs +1 -1
- package/tests/howto_guide.mjs +1 -1
- package/tests/howto_moments.mjs +3 -3
- package/tests/hub_account_page.mjs +1 -1
- package/tests/idea_capture_grades.mjs +2 -2
- package/tests/idea_develop_spark.mjs +1 -1
- package/tests/idea_filed_via.mjs +2 -2
- package/tests/idea_ideate_full.mjs +1 -1
- package/tests/idea_spark_mark.mjs +1 -1
- package/tests/idea_spark_queue.mjs +1 -1
- package/tests/idea_triage.mjs +1 -1
- package/tests/idea_triage_grade.mjs +3 -3
- package/tests/idea_vote_permission.mjs +113 -0
- package/tests/idea_votes_fold_db.mjs +123 -0
- package/tests/infra_exec_paths.mjs +12 -12
- package/tests/init.mjs +2 -2
- package/tests/instance_db_migrated_on_code_move.mjs +5 -5
- package/tests/instance_feedback.mjs +9 -9
- package/tests/instance_mismatch_guard.mjs +2 -2
- package/tests/integration_parked_ratchet.mjs +24 -2
- package/tests/intent_retry.mjs +1 -1
- package/tests/interaction_posture.mjs +3 -3
- package/tests/invite_expiry_db.mjs +1 -1
- package/tests/joinability_invite_only.mjs +1 -1
- package/tests/karma_vote_lists.mjs +270 -0
- package/tests/key-card.mjs +2 -2
- package/tests/key-status.mjs +2 -2
- package/tests/knip_ratchet_ambient.mjs +2 -2
- package/tests/known_failing_ratchet.mjs +1 -1
- package/tests/land_watch.mjs +2 -2
- package/tests/landing_legal_pages.mjs +1 -1
- package/tests/landing_page.mjs +2 -2
- package/tests/leaderboard_roles.mjs +4 -1
- package/tests/leak_scan_allowlist.mjs +8 -8
- package/tests/leak_scan_fail_closed.mjs +1 -1
- package/tests/lib_sh_resolution.mjs +9 -9
- package/tests/lifecycle-card.mjs +7 -7
- package/tests/linkify_check.mjs +2 -2
- package/tests/linkify_refs.mjs +1 -1
- package/tests/llm-cache-route.mjs +1 -1
- package/tests/local_preview.mjs +2 -2
- package/tests/main_audit.mjs +3 -3
- package/tests/main_audit_attestation.mjs +1 -1
- package/tests/main_audit_db_roster.mjs +2 -2
- package/tests/main_worktree_busy_reason.mjs +3 -3
- package/tests/markdown_line_endings.mjs +2 -2
- package/tests/me_streak_leaderboard_queries.mjs +193 -0
- package/tests/membership_kind_lockstep.mjs +1 -1
- package/tests/memory_isolation.mjs +16 -8
- package/tests/memory_map.mjs +2 -2
- package/tests/memory_pull.mjs +33 -25
- package/tests/merge_driver_register.mjs +3 -3
- package/tests/migration_allocation.mjs +2 -2
- package/tests/migration_namespace.mjs +1 -1
- package/tests/migrations_forward_safe.mjs +1 -1
- package/tests/mingle.mjs +1 -1
- package/tests/mirror_lineage_fulltree.mjs +3 -3
- package/tests/mirror_lineage_proof.mjs +2 -2
- package/tests/mirror_redact.mjs +4 -4
- package/tests/missing_dep_classify.mjs +3 -3
- package/tests/module-scope-map.mjs +22 -22
- package/tests/module_api_lazy.mjs +1 -1
- package/tests/module_assess_docs.mjs +2 -2
- package/tests/module_assess_installs.mjs +3 -3
- package/tests/module_assess_price_parity.mjs +5 -5
- package/tests/module_assess_score.mjs +5 -5
- package/tests/module_assess_security.mjs +4 -4
- package/tests/module_assess_tests.mjs +3 -3
- package/tests/module_assessments_migration.mjs +1 -1
- package/tests/module_catalog.mjs +2 -2
- package/tests/module_cli.mjs +3 -3
- package/tests/module_entitlements.mjs +1 -1
- package/tests/module_error_counts.mjs +1 -1
- package/tests/module_install.mjs +4 -4
- package/tests/module_loader.mjs +3 -1
- package/tests/module_owned_tests.mjs +1 -1
- package/tests/module_release_channels.mjs +1 -1
- package/tests/module_store_howto.mjs +3 -3
- package/tests/module_store_listing.mjs +139 -2
- package/tests/module_store_publish.mjs +4 -4
- package/tests/module_store_publish_route.mjs +1 -1
- package/tests/module_store_reassess.mjs +1 -1
- package/tests/module_store_registry_migration.mjs +1 -1
- package/tests/module_test_runner.mjs +3 -3
- package/tests/module_update.mjs +4 -4
- package/tests/module_upgrade_updates.mjs +1 -1
- package/tests/move_escalation.mjs +2 -2
- package/tests/nav_permission_atoms.mjs +3 -2
- package/tests/needs_rebase.mjs +7 -3
- package/tests/newcomer_floor.mjs +1 -1
- package/tests/next_number.mjs +1 -1
- package/tests/no_artifact_escalation.mjs +3 -3
- package/tests/npm_release_where.mjs +1 -1
- package/tests/oauth_secret.mjs +2 -2
- package/tests/onboard.mjs +6 -6
- package/tests/onboarding_gate.mjs +2 -2
- package/tests/opt_in_skill_modules.mjs +3 -3
- package/tests/own_scope_guard.mjs +1 -1
- package/tests/own_session_revoke.mjs +4 -1
- package/tests/package_core.mjs +10 -11
- package/tests/page_inventory.mjs +5 -5
- package/tests/page_reader.mjs +7 -7
- package/tests/page_tweak_hold.mjs +6 -6
- package/tests/parallel-load.mjs +1 -1
- package/tests/paste_token_api_base.mjs +1 -1
- package/tests/paste_token_session_store.mjs +2 -2
- package/tests/pending_invite_purge_db.mjs +1 -1
- package/tests/permission_path.mjs +1 -1
- package/tests/pin_replay.mjs +1 -1
- package/tests/pin_write_key.mjs +7 -7
- package/tests/plain_cards.mjs +15 -15
- package/tests/pr_assign.mjs +1 -1
- package/tests/pre_push_hook.mjs +3 -3
- package/tests/preflight_checks.mjs +2 -2
- package/tests/prelaunch_gate.mjs +1 -1
- package/tests/privacy_matrix.mjs +1 -1
- package/tests/probe_cache.mjs +6 -6
- package/tests/profile_connections_ui.mjs +4 -3
- package/tests/profile_fields.mjs +11 -1
- package/tests/profile_privacy_owner_view.mjs +1 -1
- package/tests/profile_role_headline.mjs +10 -9
- package/tests/project_admin_console_model.mjs +1 -1
- package/tests/projects_hub.mjs +1 -1
- package/tests/projects_hub_cloud_hop.mjs +1 -1
- package/tests/promote_goal_id.mjs +6 -6
- package/tests/promotion_sweep.mjs +1 -1
- package/tests/provision.mjs +24 -24
- package/tests/provision_account_identity.mjs +2 -2
- package/tests/provision_byo_host.mjs +1 -1
- package/tests/provision_caddy_wiring.mjs +2 -2
- package/tests/provision_disconnect.mjs +2 -2
- package/tests/provision_dns_first.mjs +1 -1
- package/tests/provision_render.mjs +9 -9
- package/tests/provision_repo_private.mjs +3 -3
- package/tests/provision_resource_caps.mjs +5 -5
- package/tests/provision_restart.mjs +3 -3
- package/tests/provision_settings_apply.mjs +7 -7
- package/tests/provision_teardown_address.mjs +2 -2
- package/tests/provisioning_capacity.mjs +5 -5
- package/tests/provisioning_credential_preflight.mjs +1 -1
- package/tests/provisioning_disconnect.mjs +1 -1
- package/tests/provisioning_error_note_scope.mjs +4 -4
- package/tests/provisioning_paid_shape_gate.mjs +2 -2
- package/tests/provisioning_planet_physics.mjs +16 -0
- package/tests/provisioning_runner_drift_notice.mjs +2 -2
- package/tests/provisioning_settings_env.mjs +1 -1
- package/tests/pruned_lockfile_integrity.mjs +1 -1
- package/tests/public_mirror_export.mjs +1 -1
- package/tests/publish_integration_gate.mjs +2 -2
- package/tests/publish_manifest.mjs +6 -6
- package/tests/publish_watch.mjs +1 -1
- package/tests/push_path_brief.mjs +2 -2
- package/tests/raise.mjs +248 -0
- package/tests/rank_roles_audit.mjs +1 -1
- package/tests/rank_tier_single_source.mjs +2 -2
- package/tests/rate_limit_public.mjs +1 -1
- package/tests/read_default_meter.mjs +2 -2
- package/tests/read_session_export.mjs +1 -1
- package/tests/rebase_gate_set_aside.mjs +1 -1
- package/tests/recall_cli.mjs +1 -1
- package/tests/recall_corpus_health.mjs +3 -2
- package/tests/recall_hints.mjs +1 -1
- package/tests/recruiter_sliver_boundary.mjs +1 -1
- package/tests/redteam_patrol.mjs +2 -2
- package/tests/regrade_actual_minutes.mjs +2 -2
- package/tests/regrade_eligibility.mjs +2 -2
- package/tests/release_core.mjs +2 -2
- package/tests/release_notes.mjs +4 -4
- package/tests/rename_history_restraint.mjs +3 -3
- package/tests/rename_ledger_prose.mjs +6 -6
- package/tests/render_api.mjs +1 -1
- package/tests/render_check.mjs +4 -4
- package/tests/render_deploy.mjs +1 -1
- package/tests/repo_info_binding.mjs +1 -1
- package/tests/repo_map.mjs +5 -5
- package/tests/reward_mode_cost_plus_only.mjs +7 -3
- package/tests/reward_mode_surfacing.mjs +1 -1
- package/tests/role_responsibilities.mjs +1 -1
- package/tests/route_permission_check.mjs +1 -1
- package/tests/route_shadow_guard.mjs +1 -1
- package/tests/route_validation.mjs +1 -1
- package/tests/routine_capture_kind.mjs +24 -13
- package/tests/routine_schedule.mjs +51 -9
- package/tests/run_routine.mjs +5 -5
- package/tests/run_routine_two_root.mjs +5 -5
- package/tests/runner_drift.mjs +17 -17
- package/tests/sandbox_stage.mjs +5 -5
- package/tests/scope_map_guard.mjs +7 -7
- package/tests/scouting_owner_access_and_reach.mjs +1 -1
- package/tests/scripts_gds_forwarders.mjs +224 -0
- package/tests/scrubber_corpus.mjs +2 -2
- package/tests/seam_wiring_guard.mjs +1 -1
- package/tests/search_ingest.mjs +2 -2
- package/tests/search_ingest_db.mjs +1 -1
- package/tests/search_ingest_nul.mjs +6 -6
- package/tests/seed_verify_criteria.mjs +3 -3
- package/tests/sequence.mjs +3 -3
- package/tests/served_paths_shipped.mjs +3 -3
- package/tests/session_506_regression.mjs +1 -1
- package/tests/session_accessibility.mjs +1 -1
- package/tests/session_caps.mjs +1 -1
- package/tests/session_cost.mjs +1 -1
- package/tests/session_digest.mjs +2 -2
- package/tests/session_eval.mjs +6 -6
- package/tests/session_index.mjs +1 -1
- package/tests/session_records.mjs +4 -4
- package/tests/session_rename_fallback.mjs +2 -2
- package/tests/session_reward_on_land.mjs +7 -149
- package/tests/session_reward_on_land_db.mjs +191 -0
- package/tests/session_reward_reconcile.mjs +6 -88
- package/tests/session_reward_reconcile_db.mjs +132 -0
- package/tests/session_transcript.mjs +1 -1
- package/tests/sessions_kit_pager.mjs +2 -1
- package/tests/setup_device_flow_fallback.mjs +2 -2
- package/tests/setup_smoke.mjs +12 -5
- package/tests/setup_status_facts.mjs +54 -12
- package/tests/ship_autolinkify.mjs +2 -2
- package/tests/ship_automerge_injection.mjs +1 -1
- package/tests/ship_base_flag.mjs +1 -1
- package/tests/ship_broadcast_routing.mjs +1 -1
- package/tests/ship_broadcast_server.mjs +2 -2
- package/tests/ship_builder_model.mjs +1 -1
- package/tests/ship_cannot_lie.mjs +9 -9
- package/tests/ship_card.mjs +2 -2
- package/tests/ship_ci_deploy.mjs +7 -7
- package/tests/ship_error_shape.mjs +1 -1
- package/tests/ship_land_ci_not_started.mjs +3 -3
- package/tests/ship_land_conflict.mjs +3 -3
- package/tests/ship_land_proof.mjs +3 -3
- package/tests/ship_land_red_pr.mjs +5 -5
- package/tests/ship_merge_gate.mjs +14 -14
- package/tests/ship_mode.mjs +1 -1
- package/tests/ship_mode_first_ship.mjs +4 -4
- package/tests/ship_mode_hands_off.mjs +8 -8
- package/tests/ship_post_land_verify.mjs +1 -1
- package/tests/ship_preflight.mjs +19 -19
- package/tests/ship_premerge.mjs +1 -1
- package/tests/ship_publish_error.mjs +2 -2
- package/tests/ship_push_diagnosis.mjs +1 -1
- package/tests/ship_regen_copy_inventory.mjs +3 -3
- package/tests/ship_resume.mjs +4 -4
- package/tests/ship_smoke_gate.mjs +1 -1
- package/tests/ship_upload_skip.mjs +1 -1
- package/tests/ship_upstream_deletion.mjs +1 -1
- package/tests/ship_vendored_instance.mjs +8 -8
- package/tests/ship_visual_regrade.mjs +3 -3
- package/tests/ship_zero_commit.mjs +1 -1
- package/tests/skill_docs_unavailable_regrade.mjs +3 -3
- package/tests/skill_friction_kind.mjs +1 -1
- package/tests/skill_grade_recover.mjs +1 -1
- package/tests/skill_grader_health.mjs +1 -1
- package/tests/skill_lint.mjs +1 -1
- package/tests/skill_menu_ruling.mjs +1 -1
- package/tests/skill_preflight.mjs +7 -7
- package/tests/skip_is_not_pass.mjs +22 -1
- package/tests/smoke_dependencies_witness.mjs +2 -2
- package/tests/smoke_preflight.mjs +1 -1
- package/tests/smoke_target.mjs +2 -2
- package/tests/smoke_write_contract.mjs +2 -2
- package/tests/sound_player.mjs +8 -8
- package/tests/source_text_test_ratchet.mjs +97 -0
- package/tests/speciality_corpus_scope.mjs +1 -1
- package/tests/speciality_session_skills.mjs +1 -1
- package/tests/sso_checkin_legacy_field_gone.mjs +4 -2
- package/tests/stale_timer.mjs +3 -3
- package/tests/stale_worktrees.mjs +1 -1
- package/tests/start_env_guard.mjs +1 -1
- package/tests/start_goal_first.mjs +3 -3
- package/tests/start_inbox_count.mjs +1 -1
- package/tests/start_rebase_warning.mjs +1 -1
- package/tests/status_default_version.mjs +3 -3
- package/tests/status_mirror_sync.mjs +1 -1
- package/tests/status_page_no_dead_uptime.mjs +80 -0
- package/tests/stop_refcheck.mjs +1 -1
- package/tests/strand_watch.mjs +1 -1
- package/tests/stranded_rows.mjs +1 -1
- package/tests/stuck_detector.mjs +14 -14
- package/tests/sweep_app_account.mjs +3 -3
- package/tests/task_cli.mjs +2 -2
- package/tests/task_detail_ui.mjs +11 -1
- package/tests/task_discipline_required.mjs +2 -2
- package/tests/task_list_paging.mjs +1 -1
- package/tests/task_visual_slots.mjs +2 -2
- package/tests/terms_acceptance.mjs +1 -1
- package/tests/terms_grandfather_db.mjs +1 -1
- package/tests/test_path_guard.mjs +1 -1
- package/tests/triage_development.mjs +1 -1
- package/tests/tweak_batch_apply.mjs +2 -2
- package/tests/tweak_land_heal.mjs +3 -3
- package/tests/tweak_unattended.mjs +3 -3
- package/tests/ui_design_skills.mjs +2 -2
- package/tests/unit_report_status.mjs +2 -2
- package/tests/unit_runner_serial.mjs +2 -2
- package/tests/unit_runner_teardown_abort.mjs +1 -1
- package/tests/update_channel.mjs +2 -2
- package/tests/update_channel_db.mjs +4 -4
- package/tests/update_subscription_engine.mjs +26 -26
- package/tests/update_sweep_home.mjs +14 -14
- package/tests/upgrade.mjs +11 -11
- package/tests/upgrade_artist_gate.mjs +4 -4
- package/tests/upgrade_commit_identity.mjs +2 -2
- package/tests/upgrade_migrate.mjs +7 -7
- package/tests/upgrade_operator.mjs +2 -2
- package/tests/upgrade_outcome.mjs +2 -2
- package/tests/upgrade_persist_pin.mjs +5 -5
- package/tests/upkeep_home.mjs +1 -1
- package/tests/version_close.mjs +2 -2
- package/tests/version_close_cli.mjs +2 -2
- package/tests/version_close_route.mjs +1 -1
- package/tests/version_literals.mjs +23 -23
- package/tests/visual_review.mjs +5 -5
- package/tests/wedge_remedy.mjs +5 -5
- package/tests/welcome_boot.mjs +116 -0
- package/tests/welcome_boot_browser.mjs +271 -0
- package/tests/wizard_born_first_board.mjs +3 -3
- package/tests/wizard_demo.mjs +1 -1
- package/tests/wizard_one_page.mjs +4 -3
- package/tests/wizard_physics.mjs +3 -1
- package/tests/wizard_physics_more.mjs +42 -3
- package/tests/work_title_wrap.mjs +1 -1
- package/tests/workflow_exec_paths.mjs +6 -6
- package/tests/worktree_claim_guard.mjs +1 -1
- package/tests/worktree_helper.mjs +2 -2
- package/tests/write_validation_gaps.mjs +3 -3
- package/scripts/gds/api.sh +0 -6
- package/scripts/gds/artifact-staleness.js +0 -267
- package/scripts/gds/audit-exports.js +0 -128
- package/scripts/gds/classify-discipline.js +0 -153
- package/scripts/gds/codemod-rename-src-gds.js +0 -145
- package/scripts/gds/coreB-carve-proof.sh +0 -725
- package/scripts/gds/goal-names.js +0 -102
- package/scripts/gds/rename-goals.js +0 -109
- package/scripts/gds/resolve-skill-model.js +0 -57
- package/scripts/gds/security-baseline-check.sh +0 -180
- package/scripts/gds/seed-adopt-tasks.js +0 -75
- package/scripts/gds/seed-api-contract-goal-tasks.js +0 -141
- package/scripts/gds/seed-board-room-tasks.js +0 -196
- package/scripts/gds/seed-bongos-app-tasks.js +0 -294
- package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +0 -81
- package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +0 -100
- package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +0 -307
- package/scripts/gds/seed-bongos-module-system-tasks.js +0 -346
- package/scripts/gds/seed-bongos-tasks.js +0 -214
- package/scripts/gds/seed-bongos-v1-seo-tasks.js +0 -104
- package/scripts/gds/seed-bv1-community-tasks.js +0 -131
- package/scripts/gds/seed-bv1-privacy-invites-tasks.js +0 -133
- package/scripts/gds/seed-bv1-profile-page-tasks.js +0 -161
- package/scripts/gds/seed-bv1-r01-delta-tasks.js +0 -154
- package/scripts/gds/seed-bv2-tweak-mode-tasks.js +0 -277
- package/scripts/gds/seed-gds-v4-tasks.js +0 -624
- package/scripts/gds/seed-governance-tasks.js +0 -340
- package/scripts/gds/seed-medusa-tasks.js +0 -440
- package/scripts/gds/seed-module-upstreaming.js +0 -219
- package/scripts/gds/seed-productization-tasks.js +0 -235
- package/scripts/gds/seed-project-admin-console-tasks.js +0 -88
- package/scripts/gds/seed-provisioning-tasks.js +0 -83
- package/scripts/gds/seed-strict-versioning-tasks.js +0 -275
- package/scripts/gds/seed-v2-world-tasks.js +0 -283
- package/scripts/gds/spike-task-map.js +0 -899
- package/scripts/migrate_cost_ledger.sh +0 -178
- package/scripts/status-probe.mjs +0 -213
- package/src/bongos/uptime-poller.js +0 -93
- package/tests/artifact_staleness.mjs +0 -207
- package/tests/goal_names.mjs +0 -120
- package/tests/government_fold_bench.mjs +0 -50
- package/tests/spike_task_map.mjs +0 -422
- package/tests/status-probe.mjs +0 -89
- /package/{scripts/gds → modules/raise}/CLAUDE.md +0 -0
- /package/scripts/{gds → bongos}/cloudbongos-token-isolation.conf +0 -0
- /package/scripts/{gds → bongos}/discipline-modes.json +0 -0
- /package/scripts/{gds → bongos}/retired-core-skills.json +0 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/* welcome-boot.css — the first-visit-of-the-day welcome (tasks 1004785, 1004818; welcome-boot.js).
|
|
2
|
+
The scene is the owner's painting of a circuit city (welcome-day.webp / welcome-night.webp) with
|
|
3
|
+
motion laid over it. Its palette is the painting's, by time of day rather than by hall theme, so its
|
|
4
|
+
ink is fixed here rather than --ink (which flips with the theme). */
|
|
5
|
+
html.wb-open { overflow: hidden; }
|
|
6
|
+
.wb {
|
|
7
|
+
position: fixed; inset: 0; z-index: 1000; overflow: hidden;
|
|
8
|
+
color: #f4f4f6; font-family: var(--font-body);
|
|
9
|
+
background: linear-gradient(180deg, #0b1230 0%, #1b2347 50%, #2b2c4a 100%);
|
|
10
|
+
}
|
|
11
|
+
.wb--day { color: #14161c; background: linear-gradient(180deg, #a9d6dc 0%, #f1d9d0 55%, #e9cfc6 100%); }
|
|
12
|
+
|
|
13
|
+
/* the painting: covers the screen at its own 1024x572 shape, so the motion layer stays on its marks */
|
|
14
|
+
.wb__art {
|
|
15
|
+
position: absolute; left: 50%; top: 50%; z-index: 1;
|
|
16
|
+
width: max(100vw, calc(100vh * 1024 / 572)); aspect-ratio: 1024 / 572;
|
|
17
|
+
transform: translate(-50%, -50%);
|
|
18
|
+
transition: transform 2.2s cubic-bezier(.45, 0, .25, 1);
|
|
19
|
+
}
|
|
20
|
+
.wb__pan { position: absolute; inset: 0; transform-origin: 62% 42%; animation: wb-pan 40s ease-in-out infinite alternate; }
|
|
21
|
+
@keyframes wb-pan { from { transform: scale(1); } to { transform: scale(1.07) translateX(-1.2%); } }
|
|
22
|
+
.wb__img, .wb__fx, .wb-motion { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
|
|
23
|
+
.wb__img { object-fit: cover; }
|
|
24
|
+
.wb__img[hidden] { display: none; }
|
|
25
|
+
|
|
26
|
+
/* the motion: pulses climb the circuit towers, cars cross, and at night the lights blink */
|
|
27
|
+
.wb-pulses { opacity: 0; transition: opacity 1.6s ease-out; }
|
|
28
|
+
.wb--live .wb-pulses { opacity: 1; }
|
|
29
|
+
.wb-pulse { fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-dasharray: 7 100; stroke-dashoffset: 7; animation: wb-climb linear infinite; }
|
|
30
|
+
@keyframes wb-climb { to { stroke-dashoffset: -100; } }
|
|
31
|
+
.wb--night .wb-pulse { filter: drop-shadow(0 0 3px currentColor); }
|
|
32
|
+
.wb--day .wb-pulse { opacity: .8; stroke-width: 1.8; }
|
|
33
|
+
.wb-car { animation: wb-car linear infinite; }
|
|
34
|
+
@keyframes wb-car {
|
|
35
|
+
0% { transform: translate(0, 0); opacity: 0; }
|
|
36
|
+
10%, 88% { opacity: 1; }
|
|
37
|
+
100% { transform: translate(var(--wb-dx), var(--wb-dy)); opacity: 0; }
|
|
38
|
+
}
|
|
39
|
+
.wb-beacon { animation: wb-beacon 1.8s steps(1) infinite; filter: drop-shadow(0 0 4px #ef4444); }
|
|
40
|
+
@keyframes wb-beacon { 0%, 60% { opacity: 1; } 61%, 100% { opacity: .15; } }
|
|
41
|
+
.wb-star { animation: wb-twinkle ease-in-out infinite alternate; }
|
|
42
|
+
@keyframes wb-twinkle { from { opacity: .15; } to { opacity: .9; } }
|
|
43
|
+
.wb-moon { animation: wb-moon 6s ease-in-out infinite alternate; filter: blur(6px); }
|
|
44
|
+
@keyframes wb-moon { from { opacity: .35; } to { opacity: .8; } }
|
|
45
|
+
.wb__cloud { position: absolute; z-index: 2; border-radius: 50%; background: rgba(255, 255, 255, .06); filter: blur(30px); animation: wb-drift linear infinite; pointer-events: none; }
|
|
46
|
+
.wb--day .wb__cloud { background: rgba(255, 255, 255, .35); filter: blur(28px); }
|
|
47
|
+
.wb__cloud--a { top: 8vh; width: 40vw; height: 7vh; animation-duration: 80s; animation-delay: -20s; }
|
|
48
|
+
.wb__cloud--b { top: 22vh; width: 50vw; height: 9vh; animation-duration: 110s; animation-delay: -70s; }
|
|
49
|
+
@keyframes wb-drift { from { transform: translateX(-30vw); } to { transform: translateX(130vw); } }
|
|
50
|
+
|
|
51
|
+
.wb__skip {
|
|
52
|
+
position: absolute; top: 18px; right: 20px; z-index: 7; min-height: 32px;
|
|
53
|
+
background: rgba(0, 0, 0, .35); border: 1px solid rgba(255, 255, 255, .25); color: #fff;
|
|
54
|
+
border-radius: 999px; padding: 6px 14px; font: inherit; cursor: pointer;
|
|
55
|
+
}
|
|
56
|
+
.wb__skip:hover, .wb__skip:focus-visible { border-color: rgba(255, 255, 255, .6); outline: none; }
|
|
57
|
+
.wb--day .wb__skip { background: rgba(255, 255, 255, .55); border-color: rgba(20, 22, 30, .2); color: #14161c; }
|
|
58
|
+
|
|
59
|
+
/* the banner: what is being built */
|
|
60
|
+
.wb__banner {
|
|
61
|
+
position: absolute; top: 20px; left: 50%; transform: translateX(-50%); z-index: 4;
|
|
62
|
+
display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 22px;
|
|
63
|
+
max-width: calc(100% - 140px); text-align: center;
|
|
64
|
+
background: rgba(10, 14, 32, .55); border: 1px solid rgba(94, 234, 212, .35); border-radius: 999px;
|
|
65
|
+
backdrop-filter: blur(6px);
|
|
66
|
+
transition: transform 2.2s cubic-bezier(.45, 0, .25, 1);
|
|
67
|
+
}
|
|
68
|
+
.wb__eyebrow { font-family: var(--font-display); font-size: clamp(15px, 2.2vw, 22px); font-weight: 500; letter-spacing: .01em; }
|
|
69
|
+
.wb__version { font-family: var(--font-mono); font-size: 12px; color: #a5b4cf; }
|
|
70
|
+
.wb--day .wb__banner { background: rgba(255, 255, 255, .7); border-color: rgba(15, 159, 143, .4); }
|
|
71
|
+
.wb--day .wb__version { color: #475569; }
|
|
72
|
+
|
|
73
|
+
/* the greeting and the choice */
|
|
74
|
+
.wb__after {
|
|
75
|
+
position: absolute; left: 0; right: 0; bottom: 8vh; z-index: 5;
|
|
76
|
+
display: flex; flex-direction: column; align-items: center; gap: 22px; padding: 0 16px;
|
|
77
|
+
opacity: 0; transform: translateY(12px); visibility: hidden; pointer-events: none;
|
|
78
|
+
transition: opacity .8s .35s, transform .8s .35s, visibility 0s .35s;
|
|
79
|
+
}
|
|
80
|
+
.wb__after::before {
|
|
81
|
+
content: ""; position: absolute; inset: -40px -10vw -8vh; z-index: -1; pointer-events: none;
|
|
82
|
+
background: radial-gradient(ellipse at 50% 55%, rgba(7, 10, 24, .8) 0%, rgba(7, 10, 24, .45) 45%, transparent 72%);
|
|
83
|
+
}
|
|
84
|
+
.wb--day .wb__after::before { background: radial-gradient(ellipse at 50% 55%, rgba(250, 246, 244, .85) 0%, rgba(250, 246, 244, .5) 45%, transparent 72%); }
|
|
85
|
+
.wb--done .wb__after { opacity: 1; transform: none; visibility: visible; pointer-events: auto; transition-delay: .35s, .35s, 0s; }
|
|
86
|
+
.wb__hi { font-family: var(--font-display); font-weight: 300; font-size: clamp(28px, 5vw, 46px); margin: 0; text-align: center; text-shadow: 0 2px 20px rgba(0, 0, 0, .7); }
|
|
87
|
+
.wb--day .wb__hi { text-shadow: 0 2px 18px rgba(255, 255, 255, .8); }
|
|
88
|
+
.wb__lede { margin: -12px 0 0; color: #c9c9d4; text-align: center; text-shadow: 0 1px 10px rgba(0, 0, 0, .7); }
|
|
89
|
+
.wb--day .wb__lede { color: #3b4252; text-shadow: 0 1px 10px rgba(255, 255, 255, .8); }
|
|
90
|
+
.wb__choices { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; width: min(620px, 100%); }
|
|
91
|
+
.wb__choice, .wb__role {
|
|
92
|
+
background: rgba(14, 18, 34, .86); border: 1px solid rgba(255, 255, 255, .13); border-radius: var(--radius);
|
|
93
|
+
color: #f4f4f6; font: inherit; cursor: pointer; text-align: left;
|
|
94
|
+
}
|
|
95
|
+
.wb--day .wb__choice, .wb--day .wb__role { background: rgba(255, 255, 255, .86); border-color: rgba(20, 22, 30, .12); color: #14161c; }
|
|
96
|
+
.wb__choice { padding: 18px 20px; display: flex; flex-direction: column; gap: 6px; backdrop-filter: blur(8px); }
|
|
97
|
+
.wb__choice:hover, .wb__choice:focus-visible, .wb__role:hover, .wb__role:focus-visible { border-color: var(--accent); outline: none; }
|
|
98
|
+
.wb__choice b { font-size: 16px; }
|
|
99
|
+
.wb__choice span, .wb__role small { color: #a9a9b6; font-size: 13px; }
|
|
100
|
+
.wb--day .wb__choice span, .wb--day .wb__role small { color: #4b5563; }
|
|
101
|
+
.wb__roles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; width: min(620px, 100%); }
|
|
102
|
+
.wb__roles[hidden] { display: none; }
|
|
103
|
+
.wb__roles:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, 1fr); }
|
|
104
|
+
.wb__role { padding: 12px 14px; min-height: 44px; }
|
|
105
|
+
.wb__role small { display: block; margin-top: 3px; }
|
|
106
|
+
.wb__role i { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 7px; }
|
|
107
|
+
|
|
108
|
+
/* the veil: white by day, black by night, lifting slowly once the painting is in */
|
|
109
|
+
.wb__veil { position: absolute; inset: 0; z-index: 6; pointer-events: none; background: #000; opacity: 1; transition: opacity 1.6s ease-out; }
|
|
110
|
+
.wb--day .wb__veil { background: #fff; }
|
|
111
|
+
.wb--lit .wb__veil { opacity: 0; }
|
|
112
|
+
|
|
113
|
+
/* the way out: the view sinks past the rooftops and the welcome fades into the hall underneath;
|
|
114
|
+
bound for another room, the veil comes back instead */
|
|
115
|
+
.wb--leaving { pointer-events: none; }
|
|
116
|
+
.wb--leaving .wb__art { transform: translate(-50%, calc(-50% - 30vh)) scale(1.12); }
|
|
117
|
+
.wb--leaving .wb__banner { transform: translate(-50%, -40vh); }
|
|
118
|
+
.wb--done.wb--leaving .wb__after { opacity: 0; transform: translateY(24px); transition: opacity .5s, transform .5s; }
|
|
119
|
+
.wb--leaving:not(.wb--to-room) { opacity: 0; transition: opacity 1.8s ease-in .5s; }
|
|
120
|
+
.wb--lit.wb--to-room .wb__veil { opacity: 1; transition: opacity 1.4s ease-in .8s; }
|
|
121
|
+
|
|
122
|
+
@media (prefers-reduced-motion: reduce) {
|
|
123
|
+
.wb, .wb * { animation: none !important; transition: none !important; }
|
|
124
|
+
}
|
|
125
|
+
@media (max-width: 600px) {
|
|
126
|
+
.wb__banner { top: 16px; max-width: calc(100% - 110px); border-radius: 18px; }
|
|
127
|
+
.wb__eyebrow { font-size: 14px; }
|
|
128
|
+
.wb__choices { grid-template-columns: 1fr; }
|
|
129
|
+
.wb__roles, .wb__roles:has(> :nth-child(3):last-child) { grid-template-columns: 1fr 1fr; }
|
|
130
|
+
}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
// welcome-boot.js — the welcome on a builder's first visit of the day (tasks 1004785, 1004818; idea 1001262).
|
|
2
|
+
//
|
|
3
|
+
// Home only. The scene is the owner's own painting of a circuit city (welcome-day.webp and
|
|
4
|
+
// welcome-night.webp, 2026-10-23), brought to life: a slow drift across the skyline, data pulses
|
|
5
|
+
// climbing the circuit towers, hover cars crossing, and by night blinking aircraft lights, a breathing
|
|
6
|
+
// moon and twinkling stars. A banner at the top says what is being built ("Working on the core of
|
|
7
|
+
// <project>"). The picture follows the local time of day: the day painting from 06:00 to 17:59, the
|
|
8
|
+
// night one otherwise. It opens from a white (day) or black (night) veil, then "Good morning, <name>"
|
|
9
|
+
// comes up with two choices. The way out is slow: the view sinks past the rooftops and fades into the
|
|
10
|
+
// hall underneath.
|
|
11
|
+
//
|
|
12
|
+
// Rules:
|
|
13
|
+
// - Once per builder per LOCAL day, remembered in localStorage. Storage that throws cannot
|
|
14
|
+
// remember, so such a browser is never shown it (it would replay on every visit).
|
|
15
|
+
// - Never for a visitor who is not signed in, and never over a deep link (#/task/N, #/idea/N).
|
|
16
|
+
// - shell.js asks onAccess() BEFORE the craft picker; a load where the welcome showed marks the
|
|
17
|
+
// picker asked (OTBCraftMode.markAsked), so the two never stack.
|
|
18
|
+
// - Picking a role also sets the hall's craft mode. Governing is a seat (craft-mode.js), so the
|
|
19
|
+
// Owner role shows only when OTBCraftMode offers it.
|
|
20
|
+
// - A painting that will not load leaves the sky gradient behind it, and the welcome works the same.
|
|
21
|
+
// - prefers-reduced-motion: no motion; the still painting and the greeting at once, leaving is immediate.
|
|
22
|
+
//
|
|
23
|
+
// The pure parts (the day rule, the banner, the roles, the motion layout) are exported for
|
|
24
|
+
// tests/welcome_boot.mjs; tests/welcome_boot_browser.mjs runs the overlay itself in a real browser.
|
|
25
|
+
(function () {
|
|
26
|
+
'use strict';
|
|
27
|
+
|
|
28
|
+
var DAY_KEY = 'hall-welcome-day:';
|
|
29
|
+
var ART = { day: '/builders/welcome-day.webp', night: '/builders/welcome-night.webp' };
|
|
30
|
+
var ART_WAIT = 1500; // the veil lifts once the painting is in, or after this long
|
|
31
|
+
var RUN_MS = 3400; // the city powering up before the greeting
|
|
32
|
+
var LEAVE_MS = 2400; // the way down into the hall
|
|
33
|
+
|
|
34
|
+
// ---------- the day rule ----------
|
|
35
|
+
function pad(n) { return (n < 10 ? '0' : '') + n; }
|
|
36
|
+
function localDay(d) { return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate()); }
|
|
37
|
+
function firstVisitToday(stored, now) { return stored !== localDay(now); }
|
|
38
|
+
function greetingFor(now) {
|
|
39
|
+
var h = now.getHours();
|
|
40
|
+
return h < 12 ? 'Good morning' : h < 18 ? 'Good afternoon' : 'Good evening';
|
|
41
|
+
}
|
|
42
|
+
// Day is 06:00 to 17:59 local: a white veil and the day painting. Night: a black veil and the night one.
|
|
43
|
+
function timeOfDay(now) { var h = now.getHours(); return h >= 6 && h < 18 ? 'day' : 'night'; }
|
|
44
|
+
function artFor(when) { return when === 'day' ? ART.day : ART.night; }
|
|
45
|
+
function nameOf(builder) {
|
|
46
|
+
return String((builder && (builder.display_name || builder.github_login)) || 'builder');
|
|
47
|
+
}
|
|
48
|
+
// The banner names the project from the branding pack (never a hardcoded word).
|
|
49
|
+
function projectName(branding) {
|
|
50
|
+
var id = branding && branding.identity;
|
|
51
|
+
return String((id && (id.worldName || id.productName)) || 'this project');
|
|
52
|
+
}
|
|
53
|
+
function bannerText(branding) { return 'Working on the core of ' + projectName(branding); }
|
|
54
|
+
|
|
55
|
+
// ---------- the roles (the owner's mapping) ----------
|
|
56
|
+
// `mode` is the craft mode the pick sets; `href` null means stay on Home.
|
|
57
|
+
var ROLES = [
|
|
58
|
+
{ id: 'owner', label: 'Owner', room: 'City', href: '/city', mode: 'governing', dot: '#f59e0b' },
|
|
59
|
+
{ id: 'ideator', label: 'Ideator', room: 'Your thinking', href: '/thinking', mode: 'ideating', dot: '#facc15' },
|
|
60
|
+
{ id: 'artist', label: 'Artist', room: 'Studio', href: '/studio', mode: 'artistry', dot: '#f472b6' },
|
|
61
|
+
{ id: 'engineer', label: 'Engineer', room: 'Home', href: null, mode: 'building', dot: '#60a5fa' },
|
|
62
|
+
];
|
|
63
|
+
function rolesFor(craft) {
|
|
64
|
+
return ROLES.filter(function (r) { return !craft || typeof craft.offered !== 'function' || craft.offered(r.mode); });
|
|
65
|
+
}
|
|
66
|
+
function roleById(id) { return ROLES.filter(function (r) { return r.id === id; })[0] || null; }
|
|
67
|
+
|
|
68
|
+
// ---------- the motion, laid over the painting ----------
|
|
69
|
+
// In the painting's own pixels (1024x572; both paintings share one layout), so every light sits on
|
|
70
|
+
// the thing it belongs to however the picture is cropped to the screen.
|
|
71
|
+
var AW = 1024, AH = 572;
|
|
72
|
+
// The circuit towers: a box each, and the colour its traces glow in the night painting.
|
|
73
|
+
var TOWERS = [
|
|
74
|
+
{ x: 140, y: 168, w: 62, h: 118, glow: '#60a5fa' },
|
|
75
|
+
{ x: 280, y: 150, w: 58, h: 200, glow: '#22d3ee' },
|
|
76
|
+
{ x: 184, y: 296, w: 100, h: 196, glow: '#fbbf24' },
|
|
77
|
+
{ x: 636, y: 222, w: 42, h: 140, glow: '#4ade80' },
|
|
78
|
+
{ x: 702, y: 212, w: 84, h: 190, glow: '#4ade80' },
|
|
79
|
+
{ x: 2, y: 196, w: 52, h: 150, glow: '#4ade80' },
|
|
80
|
+
{ x: 910, y: 410, w: 110, h: 160, glow: '#22d3ee' },
|
|
81
|
+
];
|
|
82
|
+
// Aircraft warning lights on the masts, and the hover-car lanes on the right.
|
|
83
|
+
var BEACONS = [[10, 157], [322, 103], [393, 198], [941, 251]];
|
|
84
|
+
var LANES = [
|
|
85
|
+
{ x1: 770, y1: 350, x2: 1040, y2: 362, dur: 5.5 },
|
|
86
|
+
{ x1: 1040, y1: 340, x2: 760, y2: 352, dur: 7 },
|
|
87
|
+
{ x1: 820, y1: 258, x2: 1040, y2: 254, dur: 6.5 },
|
|
88
|
+
];
|
|
89
|
+
var MOON = [665, 82];
|
|
90
|
+
function seeded(s) { return function () { s = (s * 16807) % 2147483647; return (s - 1) / 2147483646; }; }
|
|
91
|
+
// Where each data pulse climbs: a vertical run inside a tower, bottom to top. Pure, so it is testable.
|
|
92
|
+
function pulseRuns(towers, perTower, seed) {
|
|
93
|
+
var rnd = seeded(seed || 7), out = [];
|
|
94
|
+
towers.forEach(function (t, ti) {
|
|
95
|
+
for (var i = 0; i < perTower; i++) {
|
|
96
|
+
var x = Math.round((t.x + 6 + rnd() * (t.w - 12)) * 10) / 10;
|
|
97
|
+
var y1 = Math.round((t.y + t.h * (0.75 + rnd() * 0.25)) * 10) / 10;
|
|
98
|
+
var y0 = Math.round((t.y + t.h * rnd() * 0.3) * 10) / 10;
|
|
99
|
+
out.push({ tower: ti, x: x, y0: y0, y1: y1, glow: t.glow, dur: Math.round((2.2 + rnd() * 2.4) * 100) / 100, delay: Math.round(rnd() * 400) / 100 });
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
var NS = 'http://www.w3.org/2000/svg';
|
|
106
|
+
function el(t, a, p) { var e = document.createElementNS(NS, t); for (var k in a) e.setAttribute(k, a[k]); if (p) p.appendChild(e); return e; }
|
|
107
|
+
|
|
108
|
+
function drawMotion(host, when) {
|
|
109
|
+
var night = when !== 'day';
|
|
110
|
+
var rnd = seeded(11);
|
|
111
|
+
var svg = el('svg', { viewBox: '0 0 ' + AW + ' ' + AH, preserveAspectRatio: 'none', 'class': 'wb-motion' }, host);
|
|
112
|
+
if (night) {
|
|
113
|
+
// the moon breathes; stars twinkle in the open sky
|
|
114
|
+
el('circle', { 'class': 'wb-moon', cx: MOON[0], cy: MOON[1], r: 26, fill: 'rgba(226,232,255,.25)' }, svg);
|
|
115
|
+
for (var i = 0; i < 40; i++) {
|
|
116
|
+
var sx = rnd() * AW, sy = rnd() * 140;
|
|
117
|
+
if (Math.abs(sx - MOON[0]) < 50 && Math.abs(sy - MOON[1]) < 50) continue;
|
|
118
|
+
el('circle', { 'class': 'wb-star', cx: sx.toFixed(1), cy: sy.toFixed(1), r: (0.6 + rnd() * 0.9).toFixed(2), fill: '#e0e7ff',
|
|
119
|
+
style: 'animation-duration:' + (2 + rnd() * 3).toFixed(2) + 's;animation-delay:' + (-rnd() * 4).toFixed(2) + 's' }, svg);
|
|
120
|
+
}
|
|
121
|
+
BEACONS.forEach(function (b, i) {
|
|
122
|
+
el('circle', { 'class': 'wb-beacon', cx: b[0], cy: b[1], r: 3.2, fill: '#ef4444', style: 'animation-delay:' + (-i * 0.45) + 's' }, svg);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// data pulses climbing the circuit towers (the whole set brightens as the city powers up)
|
|
126
|
+
var pulses = el('g', { 'class': 'wb-pulses' }, svg);
|
|
127
|
+
pulseRuns(TOWERS, 3, 7).forEach(function (r) {
|
|
128
|
+
el('line', { 'class': 'wb-pulse', x1: r.x, y1: r.y1, x2: r.x, y2: r.y0, pathLength: 100, stroke: night ? r.glow : '#ffffff',
|
|
129
|
+
style: 'color:' + r.glow + ';animation-duration:' + r.dur + 's;animation-delay:' + (-r.delay) + 's' }, pulses);
|
|
130
|
+
});
|
|
131
|
+
// hover cars, each a light with a short trail, crossing on its lane
|
|
132
|
+
LANES.forEach(function (l, i) {
|
|
133
|
+
var g = el('g', { 'class': 'wb-car', style: '--wb-dx:' + (l.x2 - l.x1) + 'px;--wb-dy:' + (l.y2 - l.y1) + 'px;animation-duration:' + l.dur + 's;animation-delay:' + (-i * 1.7) + 's' }, svg);
|
|
134
|
+
var dir = l.x2 > l.x1 ? -1 : 1;
|
|
135
|
+
el('line', { x1: l.x1, y1: l.y1, x2: l.x1 + dir * 26, y2: l.y1, stroke: night ? 'rgba(125,211,252,.55)' : 'rgba(255,255,255,.7)', 'stroke-width': 2, 'stroke-linecap': 'round' }, g);
|
|
136
|
+
el('circle', { cx: l.x1, cy: l.y1, r: 2.4, fill: night ? '#e0f2fe' : '#ffffff' }, g);
|
|
137
|
+
});
|
|
138
|
+
return svg;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// ---------- the overlay ----------
|
|
142
|
+
function esc(s) {
|
|
143
|
+
return String(s == null ? '' : s).replace(/[&<>"']/g, function (c) {
|
|
144
|
+
return { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c];
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function craft() { return window.OTBCraftMode || null; }
|
|
148
|
+
function reducedMotion() {
|
|
149
|
+
return !!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
var root = null, timers = [], returnFocus = null, shown = false, leaving = false;
|
|
153
|
+
|
|
154
|
+
function overlayHtml(builder, now, when) {
|
|
155
|
+
return '<div class="wb__art" aria-hidden="true"><div class="wb__pan">' +
|
|
156
|
+
'<img class="wb__img" alt="" src="' + artFor(when) + '" decoding="async">' +
|
|
157
|
+
'<div class="wb__fx" id="wb-fx"></div>' +
|
|
158
|
+
'</div></div>' +
|
|
159
|
+
'<div class="wb__cloud wb__cloud--a" aria-hidden="true"></div><div class="wb__cloud wb__cloud--b" aria-hidden="true"></div>' +
|
|
160
|
+
'<div class="wb__banner"><span class="wb__eyebrow">' + esc(bannerText(window.__BRANDING__)) + '</span>' +
|
|
161
|
+
'<span class="wb__version" id="wb-version" hidden></span></div>' +
|
|
162
|
+
'<div class="wb__veil" aria-hidden="true"></div>' +
|
|
163
|
+
'<button class="wb__skip" type="button" data-wb-skip>Skip</button>' +
|
|
164
|
+
'<div class="wb__after">' +
|
|
165
|
+
'<h2 class="wb__hi" id="wb-hi">' + esc(greetingFor(now) + ', ' + nameOf(builder)) + '</h2>' +
|
|
166
|
+
'<p class="wb__lede">Where do you want to start the day?</p>' +
|
|
167
|
+
'<div class="wb__choices">' +
|
|
168
|
+
'<button class="wb__choice" type="button" data-wb-roles aria-expanded="false" aria-controls="wb-roles"><b>Start with your role</b><span>Pick today’s craft and go straight to its room.</span></button>' +
|
|
169
|
+
'<button class="wb__choice" type="button" data-wb-home><b>Your home page</b><span>Your work, what needs you, and what shipped.</span></button>' +
|
|
170
|
+
'</div>' +
|
|
171
|
+
'<div class="wb__roles" id="wb-roles" hidden></div>' +
|
|
172
|
+
'</div>';
|
|
173
|
+
}
|
|
174
|
+
function rolesHtml() {
|
|
175
|
+
return rolesFor(craft()).map(function (r) {
|
|
176
|
+
return '<button class="wb__role" type="button" data-wb-role="' + r.id + '"><i style="background:' + r.dot + '"></i>' +
|
|
177
|
+
esc(r.label) + '<small>→ ' + esc(r.room) + '</small></button>';
|
|
178
|
+
}).join('');
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function at(ms, fn) { timers.push(setTimeout(fn, ms)); }
|
|
182
|
+
function clearTimers() { timers.forEach(clearTimeout); timers = []; }
|
|
183
|
+
|
|
184
|
+
// The powering-up is over (ran out, skipped, or no motion): the city lit, the greeting in.
|
|
185
|
+
function finish() {
|
|
186
|
+
if (!root) return;
|
|
187
|
+
clearTimers();
|
|
188
|
+
root.classList.add('wb--live', 'wb--done');
|
|
189
|
+
var skip = root.querySelector('[data-wb-skip]');
|
|
190
|
+
if (skip) skip.hidden = true;
|
|
191
|
+
var first = root.querySelector('.wb__choice');
|
|
192
|
+
if (first && first.focus) first.focus();
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// The veil lifts once the painting is in (or after ART_WAIT), then the city powers up.
|
|
196
|
+
function begin() {
|
|
197
|
+
if (!root || root.classList.contains('wb--lit')) return;
|
|
198
|
+
root.classList.add('wb--lit');
|
|
199
|
+
if (reducedMotion()) { finish(); return; }
|
|
200
|
+
at(900, function () { if (root) root.classList.add('wb--live'); });
|
|
201
|
+
at(RUN_MS, finish);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// The core version under the banner, when the server says it (GET /version is public).
|
|
205
|
+
function loadVersion() {
|
|
206
|
+
if (typeof fetch !== 'function') return;
|
|
207
|
+
fetch('/version', { credentials: 'same-origin' }).then(function (r) { return r.ok ? r.json() : null; }).then(function (v) {
|
|
208
|
+
var slot = root && root.querySelector('#wb-version');
|
|
209
|
+
if (!slot || !v || typeof v.coreVersion !== 'string' || !/^\d+\.\d+\.\d+/.test(v.coreVersion)) return;
|
|
210
|
+
slot.textContent = 'core ' + v.coreVersion;
|
|
211
|
+
slot.hidden = false;
|
|
212
|
+
}, function () { /* no version: the banner stands alone */ });
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function close() {
|
|
216
|
+
if (!root) return;
|
|
217
|
+
clearTimers();
|
|
218
|
+
leaving = false;
|
|
219
|
+
document.removeEventListener('keydown', onKey, true);
|
|
220
|
+
if (root.parentNode) root.parentNode.removeChild(root);
|
|
221
|
+
root = null;
|
|
222
|
+
document.documentElement.classList.remove('wb-open');
|
|
223
|
+
if (returnFocus && returnFocus.focus) { try { returnFocus.focus(); } catch (_) { /* gone */ } }
|
|
224
|
+
returnFocus = null;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
function go(href) { try { window.location.assign(href); } catch (_) { close(); } }
|
|
228
|
+
|
|
229
|
+
// The way out: the view sinks past the rooftops while the welcome fades into the hall underneath.
|
|
230
|
+
// Bound for another room, the veil comes back instead and the room opens.
|
|
231
|
+
function leave(href) {
|
|
232
|
+
if (!root || leaving) return;
|
|
233
|
+
if (reducedMotion()) { if (href) go(href); else close(); return; }
|
|
234
|
+
leaving = true;
|
|
235
|
+
clearTimers();
|
|
236
|
+
document.removeEventListener('keydown', onKey, true);
|
|
237
|
+
document.documentElement.classList.remove('wb-open');
|
|
238
|
+
root.classList.add('wb--leaving');
|
|
239
|
+
if (href) root.classList.add('wb--to-room');
|
|
240
|
+
at(LEAVE_MS, function () { if (href) go(href); else close(); });
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function pickRole(id) {
|
|
244
|
+
var r = roleById(id), c = craft();
|
|
245
|
+
if (!r) return;
|
|
246
|
+
if (c && typeof c.choose === 'function') c.choose(r.mode);
|
|
247
|
+
leave(r.href);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
function onClick(e) {
|
|
251
|
+
var btn = e.target.closest && e.target.closest('button');
|
|
252
|
+
if (!btn || !root || leaving) return;
|
|
253
|
+
if (btn.hasAttribute('data-wb-skip')) { begin(); finish(); return; }
|
|
254
|
+
if (btn.hasAttribute('data-wb-home')) { leave(); return; }
|
|
255
|
+
if (btn.hasAttribute('data-wb-roles')) {
|
|
256
|
+
var box = root.querySelector('#wb-roles');
|
|
257
|
+
var open = box.hidden;
|
|
258
|
+
if (open) box.innerHTML = rolesHtml(); // asked now, when the seats are known
|
|
259
|
+
box.hidden = !open;
|
|
260
|
+
btn.setAttribute('aria-expanded', open ? 'true' : 'false');
|
|
261
|
+
if (open) { var r = box.querySelector('button'); if (r && r.focus) r.focus(); }
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
var role = btn.getAttribute('data-wb-role');
|
|
265
|
+
if (role) pickRole(role);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
function onKey(e) {
|
|
269
|
+
if (!root) return;
|
|
270
|
+
if (e.key === 'Escape') { e.preventDefault(); leave(); return; }
|
|
271
|
+
if (e.key !== 'Tab') return;
|
|
272
|
+
var f = Array.prototype.filter.call(root.querySelectorAll('button'), function (b) { return !b.hidden && b.offsetParent !== null; });
|
|
273
|
+
if (!f.length) return;
|
|
274
|
+
var first = f[0], last = f[f.length - 1];
|
|
275
|
+
if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }
|
|
276
|
+
else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
function show(builder) {
|
|
280
|
+
if (root || !document.body) return;
|
|
281
|
+
var now = new Date(), when = timeOfDay(now);
|
|
282
|
+
returnFocus = document.activeElement;
|
|
283
|
+
root = document.createElement('div');
|
|
284
|
+
root.className = 'wb wb--' + when;
|
|
285
|
+
root.id = 'welcome-boot';
|
|
286
|
+
root.setAttribute('role', 'dialog');
|
|
287
|
+
root.setAttribute('aria-modal', 'true');
|
|
288
|
+
root.setAttribute('aria-labelledby', 'wb-hi');
|
|
289
|
+
root.innerHTML = overlayHtml(builder, now, when);
|
|
290
|
+
root.addEventListener('click', onClick);
|
|
291
|
+
document.addEventListener('keydown', onKey, true);
|
|
292
|
+
document.body.appendChild(root);
|
|
293
|
+
document.documentElement.classList.add('wb-open');
|
|
294
|
+
drawMotion(root.querySelector('#wb-fx'), when);
|
|
295
|
+
var img = root.querySelector('.wb__img');
|
|
296
|
+
// A painting that fails to load is hidden, leaving the sky gradient; the welcome goes on regardless.
|
|
297
|
+
var go1 = function () { if (window.requestAnimationFrame) window.requestAnimationFrame(function () { window.requestAnimationFrame(begin); }); else begin(); };
|
|
298
|
+
img.addEventListener('load', go1);
|
|
299
|
+
img.addEventListener('error', function () { img.hidden = true; if (root) root.classList.add('wb--bare'); go1(); });
|
|
300
|
+
if (img.complete && img.naturalWidth) go1();
|
|
301
|
+
at(ART_WAIT, begin);
|
|
302
|
+
var skip = root.querySelector('[data-wb-skip]');
|
|
303
|
+
if (skip && skip.focus) skip.focus();
|
|
304
|
+
loadVersion();
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// A link straight to an overlay (#/task/N, #/idea/N, #/blocker/N) is not greeted over.
|
|
308
|
+
function deepLink() { return /^#\//.test((window.location && window.location.hash) || ''); }
|
|
309
|
+
|
|
310
|
+
// shell.js's call, before the craft picker's. True when the welcome is (or was) up on this load.
|
|
311
|
+
function onAccess(access, builder) {
|
|
312
|
+
if (shown) return true;
|
|
313
|
+
if (!access || access.authed !== true || !builder || builder.id == null || deepLink()) return false;
|
|
314
|
+
var key = DAY_KEY + builder.id, now = new Date();
|
|
315
|
+
try {
|
|
316
|
+
if (!firstVisitToday(window.localStorage.getItem(key), now)) return false;
|
|
317
|
+
window.localStorage.setItem(key, localDay(now));
|
|
318
|
+
} catch (_) { return false; }
|
|
319
|
+
shown = true;
|
|
320
|
+
var c = craft();
|
|
321
|
+
if (c && typeof c.markAsked === 'function') c.markAsked();
|
|
322
|
+
show(builder);
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
var api = {
|
|
327
|
+
DAY_KEY: DAY_KEY, ROLES: ROLES, ART: ART, TOWERS: TOWERS, BEACONS: BEACONS, LANES: LANES, AW: AW, AH: AH,
|
|
328
|
+
localDay: localDay, firstVisitToday: firstVisitToday, greetingFor: greetingFor, nameOf: nameOf, timeOfDay: timeOfDay,
|
|
329
|
+
artFor: artFor, projectName: projectName, bannerText: bannerText, rolesFor: rolesFor, pulseRuns: pulseRuns,
|
|
330
|
+
onAccess: onAccess, finish: finish, close: close,
|
|
331
|
+
};
|
|
332
|
+
if (typeof window !== 'undefined') window.OTBWelcome = api;
|
|
333
|
+
if (typeof module !== 'undefined' && module.exports) module.exports = api;
|
|
334
|
+
})();
|
|
Binary file
|
|
Binary file
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// the most recent ship — rendered as stat tiles above the Completed list.
|
|
12
12
|
// It shares no state with the claim path and reads no per-builder data.
|
|
13
13
|
// 2. work.js sits ON the fitness size ceiling (OVERSIZE_LINES = 1500 in
|
|
14
|
-
// scripts/
|
|
14
|
+
// scripts/bongos/fitness-ratchets.js, with the repo's baseline at zero
|
|
15
15
|
// oversized files). It had no headroom at all, so the Only-mine lens could
|
|
16
16
|
// not be added without something leaving, and the ratchet's own rule is to
|
|
17
17
|
// fix the regression rather than raise the baseline. This block is what
|
|
@@ -78,6 +78,7 @@
|
|
|
78
78
|
font-size: 12.5px;
|
|
79
79
|
color: var(--ink-faint);
|
|
80
80
|
font-variant-numeric: tabular-nums; min-width: 3.2em;
|
|
81
|
+
flex: none; white-space: nowrap; /* task 1004832: never shrink below the digits */
|
|
81
82
|
}
|
|
82
83
|
/* work.js breaks a title after each "/" (a slash-joined run ran 44px past its column
|
|
83
84
|
at 390, task 1004209); `anywhere` is the backstop for a run with no slash at all. */
|
|
@@ -173,11 +173,13 @@
|
|
|
173
173
|
time so the chrome exists before the deferred page scripts execute. -->
|
|
174
174
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
175
175
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
176
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
176
|
+
<script src="/builders/shell.js?v=2026-10-25-logo1"></script>
|
|
177
177
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
178
178
|
<script src="/builders/palette.js" defer></script>
|
|
179
179
|
<!-- shared frontend toolkit (window.OTB) — loaded FIRST so work.js can pull from it. -->
|
|
180
180
|
<script src="/builders/dom-utils.js?v=2026-06-14-domutils" defer></script>
|
|
181
|
+
<!-- task 1004727: the ONE karma vote control every task/idea list renders -->
|
|
182
|
+
<script src="/builders/vote-control.js"></script>
|
|
181
183
|
<!-- shared component kit (window.OTBKit) — tabs, pager, filter bar (task 2166). -->
|
|
182
184
|
<script src="/builders/hall-kit.js" defer></script>
|
|
183
185
|
<!-- shared TASK-DOMAIN helpers (window.OTBTaskLib) — priority/touches/prompt/refusal-copy, one copy for both boards (task 1002463). -->
|
|
@@ -790,6 +790,7 @@
|
|
|
790
790
|
<span class="history__id">#${escapeHtml(String(t.id))}</span>
|
|
791
791
|
<span class="history__title">${escapeHtml(t.title || '(untitled)').replace(/\//g, '/<wbr>')} ${ver}</span>
|
|
792
792
|
<span class="history__when" title="${escapeHtml(fmtDate(t.shipped_at))}">${escapeHtml(when)}</span>
|
|
793
|
+
${window.OTBVote ? window.OTBVote.taskHtml({ ...t, status: t.status || 'shipped' }) : ''}
|
|
793
794
|
</div>
|
|
794
795
|
`;
|
|
795
796
|
}).join('');
|
|
@@ -938,7 +939,7 @@
|
|
|
938
939
|
const sub = $('#work-sub');
|
|
939
940
|
if (sub) {
|
|
940
941
|
const name = me?.builder?.display_name || me?.builder?.github_login || 'builder';
|
|
941
|
-
sub.textContent = `Welcome, ${name}.
|
|
942
|
+
sub.textContent = `Welcome, ${name}. Pick up work, or follow what is moving.`;
|
|
942
943
|
}
|
|
943
944
|
|
|
944
945
|
// Recent history — public read surface, never gated. Independent of the
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Accomplishments — Standing renamed and rebuilt like Home (task 1004826)
|
|
2
|
+
|
|
3
|
+
Criterion `wa6-hall-reads-like-home` of goal 1000095 (owner, 2026-10-23: "very important").
|
|
4
|
+
|
|
5
|
+
- **One name for the reader.** The nav item, the jump palette group, the top bar, the Home chip's
|
|
6
|
+
label, the stat tiles, "All your work" and the page descriptions say **Accomplishments**, and the
|
|
7
|
+
links are `#accomplishments` / `#accomplishments-<group>` (work, karma, progress, achievements).
|
|
8
|
+
The view keeps its internal key `standing` (ids, `zone-standing`, widget `view:`/`group:` keys,
|
|
9
|
+
`STANDING_GROUPS`), so nothing that registers a widget changed. Every old `#standing*` hash is still
|
|
10
|
+
routed (`VIEWS` + `VIEW_ALIASES`), so bookmarks land. Its own glyph is a medal (`ICONS.accomplishments`).
|
|
11
|
+
- **No notices on the band.** The rebase-owed, needs and budget banners left the identity band: Home's
|
|
12
|
+
attention cards already carry all three (`renderSystemNotices`), so here they only repeated it.
|
|
13
|
+
- **Shorter words.** Each section's lede is one plain line; Peer recognition stays a plain +/− per row
|
|
14
|
+
(a rating, not a decision about the project, so no ask card).
|
|
15
|
+
- Tests: `tests/hall_nav.mjs` (the name, the links, old hashes still land; the band has no notices),
|
|
16
|
+
`tests/hall_palette.mjs` (sections are `#accomplishments-*`, aliased onto the view's anchors).
|
|
@@ -22,3 +22,12 @@ on inside the hall use the card template the city view built (`street-deck.css`
|
|
|
22
22
|
Left for the page tasks of the same criterion (1004821–1004829), which each re-lay a whole page: the
|
|
23
23
|
task page's lifecycle buttons, Goals' row claim/release, collab, gate, profile connections and the
|
|
24
24
|
government forms.
|
|
25
|
+
- **Roadmap (task 1004821)** has no ask card: only one version is built at a time, so the owner dropped the focus pick (2026-10-23); the stars only show the focus. Header shortened, filler lines cut.
|
|
26
|
+
- **Tasks (task 1004822).** Only the task page's two lifecycle decisions are cards: "Ship this task?" and the Archon's "Confirm this work?". Claim, Release, Copy prompt and Retire stay plain controls — the owner (2026-10-23): a card only where the page asks the reader to decide. Notes and the board's sub-line shortened.
|
|
27
|
+
- **No top block (task 1004836).** Every page but Home hides its page head; Goals' New goal and goal map moved onto the list line, the way back into the goal panel.
|
|
28
|
+
- **Goals (task 1004823).** A join request on a goal is the card ("Let Ana join?" — Let them in / Say no), shown only to people who may manage that goal; invitations, claim, join and the goal settings stay plain controls. Shorter page sub-lines.
|
|
29
|
+
- **Blockers (task 1004824).** A reviewer row is the card with ONE answer, "Resolve it"; "Link a task" is a plain button on its facts line. Both show only to a viewer holding `blocker.review` — the atom the routes check, now reported by `/me.permissions` — on the page and in the blocker overlay, never a rank guess. The list is "Requires project owner fix" (Home's name), the repeated "Waiting on the project owner" line and the hidden sub-line are gone, and the form copy is shorter.
|
|
30
|
+
- **Board Room (task 1004825).** The vote is the card ("Pass this idea?" / "Pass this change?" / "Close this stage?" — Vote yes / Object; Object opens the reason-and-section form under it). It shows only where the room's read says `viewer_may_vote` — the vote route's own check (board membership under the item's snapshot, clock not run out), computed per viewer in `boardRoomView`; a missing flag hides it. The sub-line and the intro line are gone; "One vote per member." and the long empty state shortened.
|
|
31
|
+
- **Profile (task 1004827).** A connection request someone sent you is the card on their profile ("Connect with @ana?" — Accept / Decline), drawn only from your own inbox, as before. Connect, Remove and the suggestions stay plain buttons. The head lost its eyebrow and sub-line (the identity section already names the person, rank and headline); the "no builder" and "could not load" messages moved into the body, since the hidden head reached nobody. "Your Bongoing." is "Activity", its lede and the Works lede are shorter, and "Standing there" is "Rank there".
|
|
32
|
+
- **Docs (task 1004828).** No ask card: nothing on Primer, Ranks, Economy, Commands, Diagrams, Repo Atlas or Modules asks the reader to decide something about the project — the primer's "I have read it" is personal, and the module switches and "submit for review" are settings the reader reaches for, not questions put to them. Every head lost its eyebrow and sub-line; Ranks' "could not load" message moved into "Where you stand", and Modules no longer hides a sub-line it no longer has. The diagrams' "drag to pan" hint moved into the legend's lede, and the ledes on Ranks, Commands, Diagrams, the atlas and Modules are shorter. `tests/hall_reading_world.mjs` pins every Docs head to its h1 alone.
|
|
33
|
+
- **Government (task 1004829).** Two decisions are cards. On **Gate**, a held PR is "Let PR #N through?" with one answer, Approve — the card is its own confirmation, so the modal that repeated the question is gone. It shows only where `GET /gate-approvals` says `viewer_may_approve`: the approve route's own two checks (`gate_approval.decide`, then act-alone at Release), fail-closed. Before this a Metic who may read the gate was offered an Approve the route refused. On **Deploy**, step two is "Move <project> to core X?" with Move as the answer and Cancel as a plain step back; it shows only where the preview says `viewer_may_move` (the read already took the move's two doors; this adds act-alone at Release, skipped for the project's owner as the move skips it). Everyone else is told the move is decided by the government. Watch, Sessions, Project settings, Fleet costs and Permissions hold settings and readings, not questions, so they have no card. Every head lost its sub-line; "could not load" and "could not check your access" moved into the sealed panel (Watch, Sessions) and the session count onto the ledger (`#ledger-status`). The Gate's tiles read Held / Hard floor / Needs trust. `tests/hall_oversight_world.mjs`, `tests/deploy_page_projects.mjs` and `tests/gate_approvals.mjs` pin it.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# The karma vote control — one up/down control on every task and idea list: work board, goals, profile, ideas, Home triage (task 1004727)
|
|
2
|
+
|
|
3
|
+
**What it is.** `public/vote-control.js` (`window.OTBVote`) is the ONE karma vote control the hall renders in a list. A page only calls `OTBVote.taskHtml(task)` or `OTBVote.ideaHtml(idea)` inside its row markup and loads the script. The control installs one capturing click listener and one MutationObserver, so a list that re-renders (pager, filter, tab) is hydrated with no page code. Hydration is ONE batched read per kind: `GET /tasks/peer-votes/lookup?ids=` (lifecycle, `routes/task-votes.js`) and `GET /inbox/votes?ids=` (ideas). A click posts to `POST /tasks/:id/vote` or `POST /inbox/:id/vote` and repaints that row in place from the server's answer.
|
|
4
|
+
|
|
5
|
+
**Owner decisions it carries (2026-10-23).**
|
|
6
|
+
- A task row offers the vote only where the server accepts one: `confirmed` or `shipped`. Any other row renders NOTHING, never a disabled button.
|
|
7
|
+
- An idea vote earns karma for the idea's SUBMITTER, weighs the same as a task vote, and has the same guards (Metic+ by default via its own `idea.vote` permission, seeded wherever `task.vote` is, task 1004834; no self-vote, frozen once folded, the same 7-day lag in the one weekly fold).
|
|
8
|
+
|
|
9
|
+
**Where it renders.** `/work` Completed rows (`work.js` renderHistory), the goal page's done ledger (`goals-render.js` taskRowsDone, inside the title cell so the five-column table and its colspans are unchanged), the profile's works ledger (`profile.js` worksRowHtml), the ideas page queue (`ideas.js` renderQueue), and Home's ideas-awaiting-triage list (`builders.js`). The click listener stops propagation, so voting inside a clickable row does not also open the task.
|
|
10
|
+
|
|
11
|
+
**Home's acclaim feed rides it too (task 1004833).** The feed's rows carry their own `net_votes` / `my_vote`, so `taskHtml` pre-paints them (marked ready, no batched read). After a vote the control raises a bubbling `otb-vote` event with the server's answer; the feed's `onAcclaimVote` writes it into the held, paged rows. The feed's old buttons, click handler and `.acclaim__btn/__vote/__net/__readonly` CSS are gone; the table is Work | By | Votes, and a viewer below the vote floor sees the net alone. `tests/hall_acclaim_vote_control.mjs` drives the real control into the feed's real handler.
|
|
12
|
+
|
|
13
|
+
**Look.** `.vote` in `style.css`: 24px targets on both axes, the net between the arrows, `flex: none` so it never shrinks inside a flex row. The harness serves `tasks__peer-votes__lookup.json` and `inbox__votes.json` (empty tallies) so the renders show the control at net 0. Tests: `tests/karma_vote_lists.mjs` (DB-free) and `tests/idea_votes_fold_db.mjs` (the real fold, integration set).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**The OVERSIGHT family landed next (task 1003469)** — government, watch, harbor and gate, then the four Metic+ pages behind `requireGovernmentPage`. This was the REDESIGN, not the re-skin: task 1003307 had put the four in the world token-wise and the owner read the result as "minimal effort reskins", so this pass changed composition. `oversight.css` is the third archetype sheet — what an oversight ROW is in this world, the figure band inside a panel (`.ov-figs`, the record family's band restated), the group head, the inline form, the grant toggle, and the ONE confirm modal harbor and gate now share on `--z-modal`. Five things it settled:
|
|
4
4
|
|
|
5
|
-
- **The sheet is named `oversight`, not `governance`, and that is the vocabulary wall, not taste.** `scripts/
|
|
5
|
+
- **The sheet is named `oversight`, not `governance`, and that is the vocabulary wall, not taste.** `scripts/bongos/fitness.js` `checkVocabularyWall` bans "governance" and "role" on the government surface (ADR 0174: it is the GOVERNMENT now), and a `<link href="governance.css">` in `government.html` reds the build. Name a thing this family shares for what the four pages do together — oversight — and keep the word out of `government.*` entirely, comments included.
|
|
6
6
|
- **The government copy test pins two class names by their literal markup.** `tests/government_board_room_copy.mjs` looks for `<h2 class="gov-h">Constitution</h2>` followed by `<p class="gov-grid-note">`, so those two names stay in `government.html` and `government.css` gives them the shell's own voice (`.scroll__h` / `.scroll__lede` recipes). Do not "converge" them onto the shell names — the test reads the markup, not the render.
|
|
7
7
|
- **Three pages threw a fact away, and the row now shows it.** A rank's `description` was collected by the create form and never rendered (it is the rank row's sub line); Watch fetched `/sessions/search?limit=5` and read only `totals` (the five rows are a ledger under the tally, in `#sessions-recent`); the box's `claude_active` was a suffix nobody scanned for (it is a fact on the row and a clause on the summary tile).
|
|
8
8
|
- **Every Watch list is the kit ledger, and a list that pages delegates its actions.** `renderTable` and `<table class="watch">` are gone; nine lists ride `makeLedger`, the six that can grow with a `makePager` (the bar hides itself under one page). A row the kit re-renders on a page flip has no listener of its own, so reports, overrides and the roster wire ONE listener on the section (`delegate()`), guarded so a reload does not stack a second.
|
|
@@ -8,3 +8,5 @@ The owner's call of 2026-09-25 (ADR 0337 D5.4) made the hub the home of connecti
|
|
|
8
8
|
- **"Builders you may know" stays.** ADR 0337 D4.2 puts it on both sides and D5.4 moved only connections and their requests, so it keeps its place under the list, unchanged.
|
|
9
9
|
- **Only the hub's own hall shows this tab.** The connections routes exist where `platform-identity` is on, which is the hub; a hosted project's hall never reveals the key. Giving hosted halls the cut needs a cross-site read and was left out on the owner's pick.
|
|
10
10
|
- **Looked at:** before/after full-page renders of `/profile#connections` against the hall-preview harness (own profile re-keyed to the `--fixture-me` builder, hub origin filled as the hub stamps it), 1440 dark and light, 390 light; floors probed at 1440/390/320 in both modes: no page-level sideways scroll, the link 236x38, no target under 24px. No new CSS; `.conn-req__state` went with the outbox that was its only user.
|
|
11
|
+
|
|
12
|
+
- **The incoming request is the ask card (task 1004827).** On another builder's profile, a request they sent you renders through `OTBAsk` ("Connect with @handle?" — Accept / Decline) with the same `data-act`/`data-id` the delegated handler reads; `profile.html` loads `hall-ask.js` + `hall-ask.css`, and the vm suite loads the real builder.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## What the page says now
|
|
6
6
|
|
|
7
|
-
- **The
|
|
7
|
+
- **The main craft's headline** — "N works shipped" (engineer), "N pages approved" (artist), "N thoughts filed" (ideator) — leads the tally. It was also the subtitle under the h1 until task 1004827 removed the page's sub-line (no top block).
|
|
8
8
|
- **The identity band** keeps the avatar, name, rank badge, handle, member-since and the "Answerable for" block unchanged. The "Preferred work:" line became **craft chips**, main role first ("Artist, main role"), then every other craft the server lists in `roles.shown`, which is a craft that has *earned* credits (the owner's 2026-09-30 rule; the server decides it, never this page).
|
|
9
9
|
- **The tally** replaces the credits/karma column: the studio's corner tally carried onto the profile, the total first and then the two numbers the main craft leads with (engineer: works shipped, karma; artist: pages approved, this week; ideator: thoughts filed, ignited).
|
|
10
10
|
- **By the numbers** is the main craft's set of tiles, then one headline tile per other shown craft. The artist adds the studio's "N of M tweaked" per surface underneath, on `OTBKit.barSeriesHtml` with this sheet only moving the three cells into the mock's layout (name and count on a line, the bar under them).
|
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
|
|
10
10
|
Also gone, and the one rule in that list: **a page-local `:root` is forbidden both ways** (`roadmap.css` had the hall's only one) — the pack's `:root` is spliced at the end of `<head>` at (0,1,0), so a page's own `:root` neither wins reliably nor loses cleanly.
|
|
11
11
|
|
|
12
|
-
**Two page-head voices, one per archetype, and that is the pick, not drift.** `.page-head--board` is quiet because a working surface's own name is the least interesting thing on it; `.page-head--room` is a lowercase display line over the ground
|
|
12
|
+
**Two page-head voices, one per archetype, and that is the pick, not drift.** `.page-head--board` is quiet because a working surface's own name is the least interesting thing on it; `.page-head--room` is a lowercase display line over the ground (its one-word eyebrow went in task 1004828 — no page shows its head since task 1004836), because in a reading room the document *is* the page. The roadmap deck takes the **board's** voice — it is a figure surface, not a document. The modifier carries the voice only; the room's WIDTH (`--room-max`, 1010px — past that a reading card is more empty ground than page) lives in `room.css`, so Ranks can take the voice without loading the archetype and never ends up with a 1010px head over 1120px cards.
|
|
13
13
|
|
|
14
14
|
**The figures follow the theme ([task 1003639](https://cloudbongos.com/builders#/task/1003639)).** mermaid-cli renders one LIGHT figure per diagram at deploy, so on dark mode the canvas was a white plate on black. The fix is two CSS twins and one JS line, not a second render: `diagram-viewer.js` drops the `background-color: white` mermaid bakes into the SVG root, and in dark `diagram-viewer.css` turns the inline SVG with `filter: invert(1) hue-rotate(180deg)` (invert, then turn the hues back, so dark ink reads light and a purple edge stays purple). `room.css` turns the fallback PNG the same way, so a dark reader gets no white flash before the SVG arrives. A second, dark render per diagram was the alternative; it was not taken because it doubles the deploy's headless-Chrome work on a small host and needs the viewer to swap files on a theme switch, where CSS follows the switch for free. Measured on the rendered page, dark, at 137%: 16.1:1 on a node, 11.4:1 on an edge label, 18.8:1 on the note. `tests/hall_reading_world.mjs` §7b pins both twins and the JS line.
|