@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,540 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
// gen-repo-map.js — Path B (ADR 0062 §9 / ADR 0063, task 1224).
|
|
4
|
+
//
|
|
5
|
+
// A committed, CI-regenerated SYMBOL SKELETON for this instance's codebase:
|
|
6
|
+
// (1) docs/repo-map.md — an "altitude map" so an agent can navigate without reading every
|
|
7
|
+
// file: top symbols ranked by reference frequency (à la Aider's repo map) + per-directory
|
|
8
|
+
// exported signatures.
|
|
9
|
+
// (2) refreshes the FACTUAL half of the nested per-module CLAUDE.md docs (ADR 0061) — a
|
|
10
|
+
// generated, delimited block of the directory's exported signatures, so the hand-written
|
|
11
|
+
// interpretive prose stays put while the file list / signatures can't silently drift.
|
|
12
|
+
//
|
|
13
|
+
// Zero-dependency on purpose: the codebase is CommonJS JS, and a portable-core capability must
|
|
14
|
+
// regenerate in CI and on any checkout with no native build / no node-gyp / no WASM grammar to
|
|
15
|
+
// fetch (the whole point of Paths B+C is keeping every instance navigable cheaply). A line+regex
|
|
16
|
+
// extractor is accurate enough for an *advisory* navigation aid (it is not a compiler input). A
|
|
17
|
+
// richer tree-sitter/WASM backend can slot in behind extractFile() later for polyglot instances
|
|
18
|
+
// (ADR 0063 Alternatives).
|
|
19
|
+
//
|
|
20
|
+
// Deterministic: no timestamps, stable sort — so `--check` is a clean idempotent CI gate.
|
|
21
|
+
//
|
|
22
|
+
// Usage:
|
|
23
|
+
// node scripts/bongos/gen-repo-map.js # regenerate docs/repo-map.md + nested-doc blocks
|
|
24
|
+
// node scripts/bongos/gen-repo-map.js --check # write nothing; exit 2 if EITHER bucket would change
|
|
25
|
+
// node scripts/bongos/gen-repo-map.js --check-block # exit 2 only if a TRACKED nested block would change (the CI gate)
|
|
26
|
+
// node scripts/bongos/gen-repo-map.js --check-whole # exit 2 only if docs/repo-map.md would change
|
|
27
|
+
// node scripts/bongos/gen-repo-map.js --whole-only # WRITE docs/repo-map.md only; never touch the
|
|
28
|
+
// # tracked nested blocks (what a SPARSE
|
|
29
|
+
// # checkout must use — task 1002962)
|
|
30
|
+
// docs/repo-map.md is GITIGNORED + regenerated at deploy since ADR 0110 (task 1926);
|
|
31
|
+
// only the nested-doc symbol blocks stay tracked, so CI gates the block bucket, not the whole file.
|
|
32
|
+
// node scripts/bongos/gen-repo-map.js --json # print the extracted model as JSON (debug)
|
|
33
|
+
|
|
34
|
+
const fs = require('node:fs');
|
|
35
|
+
const path = require('node:path');
|
|
36
|
+
const { resolveCoreRoot, resolveInstanceRoot } = require('../../src/instance-config'); // ADR 0108 §1: configurable-root
|
|
37
|
+
// task 2013: reuse docs-entropy's link/staleness detectors (single source) to
|
|
38
|
+
// build the doc link-graph + staleness flags. Requiring it is side-effect-free
|
|
39
|
+
// (its CLI body is require.main-guarded).
|
|
40
|
+
const docsEntropy = require('./docs-entropy');
|
|
41
|
+
const { sameContent } = require('./gen-freshness'); // eol-insensitive freshness (CRLF checkouts)
|
|
42
|
+
|
|
43
|
+
// ADR 0108 §Consequences #4 (configurable-root W6 / task 1886) — the generator scans TWO trees.
|
|
44
|
+
// CORE code + the core-owned nested docs live under the core PACKAGE (resolveCoreRoot); the
|
|
45
|
+
// instance's .claude/hooks are materialized under the host REPO (resolveInstanceRoot); modules
|
|
46
|
+
// ship from BOTH. Today both resolve to the same checkout, so the scan is byte-identical; once the
|
|
47
|
+
// core installs from node_modules they diverge and the map covers the right trees. A NEW hardcoded
|
|
48
|
+
// `path.resolve(__dirname,'..','..')` reintroduces the bug.
|
|
49
|
+
const CORE_ROOT = resolveCoreRoot();
|
|
50
|
+
const INSTANCE_ROOT = resolveInstanceRoot();
|
|
51
|
+
const REPO_ROOT = CORE_ROOT; // alias for the purely-core scan/write sites; instance/module sites route explicitly
|
|
52
|
+
const MODULE_ROOTS = [...new Set([CORE_ROOT, INSTANCE_ROOT])];
|
|
53
|
+
|
|
54
|
+
// Source roots scanned for both symbol extraction AND reference counting, grouped by which root
|
|
55
|
+
// each resolves against. The build-system core (server-side JS) — the Cloud Bongos decoupling
|
|
56
|
+
// target. Extend here to map more of an instance.
|
|
57
|
+
const CORE_SCAN_ROOTS = ['server.js', 'src', 'scripts'];
|
|
58
|
+
const INSTANCE_SCAN_ROOTS = ['.claude/hooks'];
|
|
59
|
+
const MODULE_SCAN_ROOT = 'modules';
|
|
60
|
+
const SCAN_ROOTS = [...CORE_SCAN_ROOTS, ...INSTANCE_SCAN_ROOTS, MODULE_SCAN_ROOT]; // combined list, for the scope header
|
|
61
|
+
|
|
62
|
+
// Directories whose nested CLAUDE.md gets a generated symbol-skeleton block (must already exist —
|
|
63
|
+
// they are authored in Path A / ADR 0061; this only refreshes the factual half). All CORE dirs.
|
|
64
|
+
// scripts/bongos dropped (task 1003548): its block had grown to ~40k chars — 76% of a file every builder
|
|
65
|
+
// session loads when it touches claim/ship. docs/repo-map.md still carries the full index.
|
|
66
|
+
const NESTED_DIRS = ['src/bongos', 'src/bongos/routes'];
|
|
67
|
+
|
|
68
|
+
const EXCLUDE_DIR = new Set(['node_modules', '.git', 'tests', 'test', 'vendor']);
|
|
69
|
+
const TOP_GLOBAL = 50; // global "most-referenced" table cap
|
|
70
|
+
const PER_FILE = 10; // exported symbols listed per file
|
|
71
|
+
const SIG_MAX = 90; // signature truncation
|
|
72
|
+
|
|
73
|
+
const BEGIN = '<!-- BEGIN GENERATED REPO-MAP (scripts/bongos/gen-repo-map.js — do not hand-edit) -->';
|
|
74
|
+
const END = '<!-- END GENERATED REPO-MAP -->';
|
|
75
|
+
|
|
76
|
+
// Generic per-file local-helper / boilerplate names. They dominate a raw token tally (every script
|
|
77
|
+
// has a `main`, a `log`, an `err`) but say nothing about cross-file centrality, so they are noise
|
|
78
|
+
// for an altitude map. CommonJS reachability means real cross-file centrality ⟺ being exported, so
|
|
79
|
+
// the global ranking is exported-only; this list trims the few generic names that still leak in.
|
|
80
|
+
const NOISE = new Set([
|
|
81
|
+
'main', 'run', 'log', 'err', 'warn', 'fail', 'ok', 'info', 'debug', 'usage', 'help', 'sleep',
|
|
82
|
+
'noop', 'status', 'client', 'pool', 'res', 'req', 'next', 'data', 'result', 'val', 'value',
|
|
83
|
+
'fn', 'cb', 'msg', 'out', 'ret', 'args', 'opts', 'options', 'ctx', 'app', 'router', 'init',
|
|
84
|
+
]);
|
|
85
|
+
const isNoise = (name) => NOISE.has(name) || name.length <= 2;
|
|
86
|
+
|
|
87
|
+
// macOS Finder / iCloud Drive sync-conflict copies are named "<base> 2.js",
|
|
88
|
+
// "<base> 3.js", … (a space + digits before the extension). They are untracked,
|
|
89
|
+
// stale duplicates that must NEVER enter the symbol skeleton: left in, they
|
|
90
|
+
// double-count a module's symbols and bump file/symbol totals, so a ship from an
|
|
91
|
+
// iCloud-synced checkout bakes phantom entries into the committed repo-map — and
|
|
92
|
+
// CI's `repo_map --check` (run on a clean checkout that has no such copies) then
|
|
93
|
+
// flags it STALE and fails the required `unit` gate. Skip them at the walk so the
|
|
94
|
+
// generator is deterministic regardless of the working tree's sync artifacts
|
|
95
|
+
// (task 1236; first hit on PR #165, the task 1233 ship).
|
|
96
|
+
const CONFLICT_COPY_RE = / \d+\.js$/;
|
|
97
|
+
const isConflictCopy = (name) => CONFLICT_COPY_RE.test(name);
|
|
98
|
+
|
|
99
|
+
// Choose the symbols to surface for one file: exported public surface (ranked by reference
|
|
100
|
+
// frequency); for an entry-point script with no exports, its declared fns/classes in source order.
|
|
101
|
+
function pickForFile(f) {
|
|
102
|
+
const exAll = f.symbols.filter((s) => s.exported);
|
|
103
|
+
const ex = exAll.filter((s) => !isNoise(s.name));
|
|
104
|
+
if (ex.length) {
|
|
105
|
+
const list = [...ex].sort((a, b) => b.refs - a.refs || a.name.localeCompare(b.name));
|
|
106
|
+
return { list: list.slice(0, PER_FILE), pool: exAll.length };
|
|
107
|
+
}
|
|
108
|
+
const decl = f.symbols.filter((s) => (s.kind === 'fn' || s.kind === 'class') && !isNoise(s.name));
|
|
109
|
+
return { list: decl.slice(0, PER_FILE), pool: decl.length };
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ---- file walk -------------------------------------------------------------
|
|
113
|
+
|
|
114
|
+
function walk(absRoot, out) {
|
|
115
|
+
let st;
|
|
116
|
+
try { st = fs.statSync(absRoot); } catch { return; }
|
|
117
|
+
if (st.isFile()) {
|
|
118
|
+
const base = path.basename(absRoot);
|
|
119
|
+
if (absRoot.endsWith('.js') && !isConflictCopy(base)) out.push(absRoot);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (!st.isDirectory()) return;
|
|
123
|
+
for (const ent of fs.readdirSync(absRoot, { withFileTypes: true })) {
|
|
124
|
+
if (ent.isDirectory()) {
|
|
125
|
+
if (EXCLUDE_DIR.has(ent.name)) continue;
|
|
126
|
+
walk(path.join(absRoot, ent.name), out);
|
|
127
|
+
} else if (ent.isFile() && ent.name.endsWith('.js') && !isConflictCopy(ent.name)) {
|
|
128
|
+
out.push(path.join(absRoot, ent.name));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// repo-relative POSIX path for an abs file under EITHER root (core package or instance repo).
|
|
134
|
+
const relOf = (abs) => {
|
|
135
|
+
for (const base of [CORE_ROOT, INSTANCE_ROOT]) {
|
|
136
|
+
const r = path.relative(base, abs);
|
|
137
|
+
if (r && !r.startsWith('..') && !path.isAbsolute(r)) return r.split(path.sep).join('/');
|
|
138
|
+
}
|
|
139
|
+
return path.relative(CORE_ROOT, abs).split(path.sep).join('/');
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
function collectFiles() {
|
|
143
|
+
const files = [];
|
|
144
|
+
for (const root of CORE_SCAN_ROOTS) walk(path.join(CORE_ROOT, root), files);
|
|
145
|
+
for (const root of INSTANCE_SCAN_ROOTS) walk(path.join(INSTANCE_ROOT, root), files);
|
|
146
|
+
for (const r of MODULE_ROOTS) walk(path.join(r, MODULE_SCAN_ROOT), files); // modules ship from both roots
|
|
147
|
+
// stable, de-duped BY repo-relative path (a shared checkout would otherwise list a module twice)
|
|
148
|
+
const seen = new Set();
|
|
149
|
+
const uniq = [];
|
|
150
|
+
for (const abs of [...new Set(files)].sort()) {
|
|
151
|
+
const r = relOf(abs);
|
|
152
|
+
if (seen.has(r)) continue;
|
|
153
|
+
seen.add(r);
|
|
154
|
+
uniq.push(abs);
|
|
155
|
+
}
|
|
156
|
+
return uniq;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// ---- symbol extraction (col-0 declarations + exports) ----------------------
|
|
160
|
+
|
|
161
|
+
const RE_FUNC = /^(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\(([^)]*)\)?/;
|
|
162
|
+
const RE_CLASS = /^class\s+([A-Za-z_$][\w$]*)/;
|
|
163
|
+
// const NAME = (a,b) => | function(a,b) | async (a,b) => | require(...) | value | {…}
|
|
164
|
+
const RE_DECL = /^(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*(.*)$/;
|
|
165
|
+
|
|
166
|
+
function rhsKindAndSig(rhs) {
|
|
167
|
+
let m;
|
|
168
|
+
if ((m = rhs.match(/^async\s+function\s*\(([^)]*)\)?/)) || (m = rhs.match(/^function\s*\(([^)]*)\)?/))) {
|
|
169
|
+
return { kind: 'fn', sig: m[1] };
|
|
170
|
+
}
|
|
171
|
+
if ((m = rhs.match(/^async\s*\(([^)]*)\)?\s*=>/)) || (m = rhs.match(/^\(([^)]*)\)?\s*=>/))) {
|
|
172
|
+
return { kind: 'fn', sig: m[1] };
|
|
173
|
+
}
|
|
174
|
+
if ((m = rhs.match(/^async\s+([A-Za-z_$][\w$]*)\s*=>/)) || (m = rhs.match(/^([A-Za-z_$][\w$]*)\s*=>/))) {
|
|
175
|
+
return { kind: 'fn', sig: m[1] };
|
|
176
|
+
}
|
|
177
|
+
if (/^require\(/.test(rhs)) return { kind: 'import', sig: '' };
|
|
178
|
+
if (/^\{/.test(rhs)) return { kind: 'obj', sig: '' };
|
|
179
|
+
if (/^(?:new\s+)?[A-Za-z_$][\w$.]*\s*\(/.test(rhs)) return { kind: 'val', sig: '' };
|
|
180
|
+
return { kind: 'const', sig: '' };
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function parseExports(src) {
|
|
184
|
+
const exported = new Set();
|
|
185
|
+
let m;
|
|
186
|
+
// module.exports.NAME = / exports.NAME =
|
|
187
|
+
const reDot = /(?:module\.)?exports\.([A-Za-z_$][\w$]*)\s*=/g;
|
|
188
|
+
while ((m = reDot.exec(src))) exported.add(m[1]);
|
|
189
|
+
// module.exports = { a, b: x, c } (also handles multi-line object)
|
|
190
|
+
const reObj = /module\.exports\s*=\s*\{([\s\S]*?)\}/g;
|
|
191
|
+
while ((m = reObj.exec(src))) {
|
|
192
|
+
for (const part of m[1].split(',')) {
|
|
193
|
+
const key = part.split(':')[0].trim().replace(/^\.\.\./, '').trim();
|
|
194
|
+
if (/^[A-Za-z_$][\w$]*$/.test(key)) exported.add(key);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// module.exports = NAME
|
|
198
|
+
const reSingle = /module\.exports\s*=\s*([A-Za-z_$][\w$]*)\s*;/g;
|
|
199
|
+
while ((m = reSingle.exec(src))) exported.add(m[1]);
|
|
200
|
+
return exported;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function extractFile(abs) {
|
|
204
|
+
const src = fs.readFileSync(abs, 'utf8');
|
|
205
|
+
const lines = src.split('\n');
|
|
206
|
+
const exported = parseExports(src);
|
|
207
|
+
const symbols = [];
|
|
208
|
+
for (const raw of lines) {
|
|
209
|
+
// col-0 declarations only — commented-out / nested code is indented or comment-led
|
|
210
|
+
if (/^[\s/*]/.test(raw)) continue;
|
|
211
|
+
let m;
|
|
212
|
+
if ((m = raw.match(RE_FUNC))) {
|
|
213
|
+
symbols.push({ name: m[1], kind: 'fn', sig: (m[2] || '').trim() });
|
|
214
|
+
} else if ((m = raw.match(RE_CLASS))) {
|
|
215
|
+
symbols.push({ name: m[1], kind: 'class', sig: '' });
|
|
216
|
+
} else if ((m = raw.match(RE_DECL))) {
|
|
217
|
+
const { kind, sig } = rhsKindAndSig(m[2].trim());
|
|
218
|
+
if (kind === 'import') continue; // requires aren't navigation symbols
|
|
219
|
+
symbols.push({ name: m[1], kind, sig: (sig || '').trim() });
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// de-dupe by name (keep first), tag exported
|
|
223
|
+
const seen = new Set();
|
|
224
|
+
const uniq = [];
|
|
225
|
+
for (const s of symbols) {
|
|
226
|
+
if (seen.has(s.name)) continue;
|
|
227
|
+
seen.add(s.name);
|
|
228
|
+
uniq.push({ ...s, exported: exported.has(s.name) });
|
|
229
|
+
}
|
|
230
|
+
return uniq;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// ---- reference frequency (token tally across the whole corpus) -------------
|
|
234
|
+
|
|
235
|
+
function buildRefCounts(files) {
|
|
236
|
+
const counts = new Map();
|
|
237
|
+
const reId = /[A-Za-z_$][\w$]*/g;
|
|
238
|
+
for (const abs of files) {
|
|
239
|
+
const src = fs.readFileSync(abs, 'utf8');
|
|
240
|
+
let m;
|
|
241
|
+
while ((m = reId.exec(src))) {
|
|
242
|
+
const id = m[0];
|
|
243
|
+
counts.set(id, (counts.get(id) || 0) + 1);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return counts;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// ---- model -----------------------------------------------------------------
|
|
250
|
+
|
|
251
|
+
function buildModel() {
|
|
252
|
+
const files = collectFiles();
|
|
253
|
+
const refs = buildRefCounts(files);
|
|
254
|
+
const byFile = []; // {rel, symbols:[{name,kind,sig,exported,refs}]}
|
|
255
|
+
const allSyms = [];
|
|
256
|
+
for (const abs of files) {
|
|
257
|
+
const rel = relOf(abs); // root-aware: a module file may live under the instance repo post-split
|
|
258
|
+
const syms = extractFile(abs).map((s) => ({ ...s, refs: refs.get(s.name) || 0, file: rel }));
|
|
259
|
+
byFile.push({ rel, symbols: syms });
|
|
260
|
+
allSyms.push(...syms);
|
|
261
|
+
}
|
|
262
|
+
return { files, byFile, allSyms };
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
function fmtSig(s) {
|
|
266
|
+
if (s.kind === 'fn') {
|
|
267
|
+
let sig = s.sig || '';
|
|
268
|
+
if (sig.length > SIG_MAX) sig = sig.slice(0, SIG_MAX) + '…';
|
|
269
|
+
return `${s.name}(${sig})`;
|
|
270
|
+
}
|
|
271
|
+
if (s.kind === 'class') return `class ${s.name}`;
|
|
272
|
+
return s.name;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// ---- rendering: docs/repo-map.md -------------------------------------------
|
|
276
|
+
|
|
277
|
+
function renderRepoMap(model) {
|
|
278
|
+
const L = [];
|
|
279
|
+
L.push('# Repo map — generated symbol skeleton');
|
|
280
|
+
L.push('');
|
|
281
|
+
L.push('> **AUTO-GENERATED — do not hand-edit.** Regenerate with `node scripts/bongos/gen-repo-map.js` (runs on deploy, like `gen-diagrams.js`). Path B of the 2026-06-18 context-cliff plan — a portable-core altitude map ([ADR 0062](adr/0062-medusa-instance-model-decoupling.md) §9 · [ADR 0063](adr/0063-generated-repo-map-symbol-skeleton.md)). Complements the lexical recall layer ([ADR 0060](adr/0060-gds-retrieval-layer.md)), which indexes *prose*; this indexes *code*.');
|
|
282
|
+
L.push('>');
|
|
283
|
+
L.push(`> **Scope:** \`${SCAN_ROOTS.join('`, `')}\` — ${model.files.length} JS files, ${model.allSyms.length} top-level symbols. (Tests + \`node_modules\` + vendored libs excluded.) Symbols ranked by reference frequency across the scanned corpus.`);
|
|
284
|
+
L.push('');
|
|
285
|
+
|
|
286
|
+
// Global top-N: exported surface (cross-file reachable in CommonJS), minus generic noise.
|
|
287
|
+
const top = model.allSyms
|
|
288
|
+
.filter((s) => s.exported && !isNoise(s.name))
|
|
289
|
+
.sort((a, b) => b.refs - a.refs || a.name.localeCompare(b.name) || a.file.localeCompare(b.file))
|
|
290
|
+
.slice(0, TOP_GLOBAL);
|
|
291
|
+
L.push(`## Top ${TOP_GLOBAL} exported symbols by reference frequency`);
|
|
292
|
+
L.push('');
|
|
293
|
+
L.push('| symbol | kind | file | refs |');
|
|
294
|
+
L.push('|---|---|---|---|');
|
|
295
|
+
for (const s of top) L.push(`| \`${fmtSig(s)}\` | ${s.kind} | \`${s.file}\` | ${s.refs} |`);
|
|
296
|
+
L.push('');
|
|
297
|
+
|
|
298
|
+
// Per-directory exported signatures
|
|
299
|
+
L.push('## By directory — exported signatures');
|
|
300
|
+
L.push('');
|
|
301
|
+
const dirs = new Map();
|
|
302
|
+
for (const f of model.byFile) {
|
|
303
|
+
const dir = f.rel.includes('/') ? f.rel.slice(0, f.rel.lastIndexOf('/')) : '.';
|
|
304
|
+
if (!dirs.has(dir)) dirs.set(dir, []);
|
|
305
|
+
dirs.get(dir).push(f);
|
|
306
|
+
}
|
|
307
|
+
for (const dir of [...dirs.keys()].sort()) {
|
|
308
|
+
const fileEntries = dirs.get(dir).sort((a, b) => a.rel.localeCompare(b.rel));
|
|
309
|
+
const rendered = [];
|
|
310
|
+
for (const f of fileEntries) {
|
|
311
|
+
const { list, pool } = pickForFile(f);
|
|
312
|
+
if (!list.length) continue;
|
|
313
|
+
const base = f.rel.slice(f.rel.lastIndexOf('/') + 1);
|
|
314
|
+
const more = pool - list.length;
|
|
315
|
+
rendered.push(`- \`${base}\` — ${list.map((s) => '`' + fmtSig(s) + '`').join(', ')}${more > 0 ? ` _(+${more} more)_` : ''}`);
|
|
316
|
+
}
|
|
317
|
+
if (!rendered.length) continue;
|
|
318
|
+
L.push(`### \`${dir}/\``);
|
|
319
|
+
L.push('');
|
|
320
|
+
L.push(...rendered);
|
|
321
|
+
L.push('');
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// task 2013 — the DOCUMENTATION map: a link-graph for the key navigational docs
|
|
325
|
+
// (bullet 193: "click architecture.md → see the docs it links to") + STALENESS
|
|
326
|
+
// FLAGS (docs whose internal links/anchors docs-entropy can't resolve). This is
|
|
327
|
+
// the anti-drift mechanism that replaces the manual "remember to update the
|
|
328
|
+
// detail files" session-end chores (bullets 223/224/226): the flag surfaces
|
|
329
|
+
// mechanically what needs a touch-up, so it isn't left to memory.
|
|
330
|
+
L.push(...renderDocMapLines());
|
|
331
|
+
|
|
332
|
+
return L.join('\n').replace(/\n+$/, '') + '\n';
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// The curated set of top navigational docs whose outbound doc-links are worth
|
|
336
|
+
// graphing (the whole 399-file graph would be noise). An agent lands on one of
|
|
337
|
+
// these and can see, without opening it, which docs it points at.
|
|
338
|
+
const KEY_DOCS = [
|
|
339
|
+
'CLAUDE.md',
|
|
340
|
+
'docs/architecture.md',
|
|
341
|
+
'docs/project-context.md',
|
|
342
|
+
'docs/file-map.md',
|
|
343
|
+
'docs/branding-contract.md',
|
|
344
|
+
'docs/api-reference.md',
|
|
345
|
+
'docs/adr/README.md',
|
|
346
|
+
'docs/canonical-permissions.md',
|
|
347
|
+
];
|
|
348
|
+
|
|
349
|
+
// Resolve a markdown link href (relative to the doc it appears in) to a
|
|
350
|
+
// repo-relative .md path, or null if it isn't an internal .md target.
|
|
351
|
+
function resolveDocLink(fromRel, href) {
|
|
352
|
+
const noAnchor = String(href).split('#')[0];
|
|
353
|
+
if (!noAnchor || !/\.md$/i.test(noAnchor)) return null;
|
|
354
|
+
const fromDir = fromRel.includes('/') ? fromRel.slice(0, fromRel.lastIndexOf('/')) : '.';
|
|
355
|
+
const resolved = path.posix.normalize(path.posix.join(fromDir, noAnchor));
|
|
356
|
+
return resolved.startsWith('..') ? null : resolved;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
function renderDocMapLines() {
|
|
360
|
+
const L = [];
|
|
361
|
+
let files;
|
|
362
|
+
try { files = docsEntropy.collectMarkdownFiles(); } catch { return L; }
|
|
363
|
+
const fileSet = new Set(files);
|
|
364
|
+
|
|
365
|
+
L.push('');
|
|
366
|
+
L.push('## Documentation map — link-graph + staleness (task 2013)');
|
|
367
|
+
L.push('');
|
|
368
|
+
L.push('> Generated from the same detectors as `docs-entropy.js`. The link-graph lets an agent see a key doc\'s outbound doc-links without opening it; the staleness flags surface docs whose internal links/anchors no longer resolve — the anti-drift signal that replaces the manual "remember to update the detail files" chore.');
|
|
369
|
+
L.push('');
|
|
370
|
+
|
|
371
|
+
// Link-graph for the curated key docs.
|
|
372
|
+
L.push('### Key-doc link-graph');
|
|
373
|
+
L.push('');
|
|
374
|
+
L.push('| doc | links to |');
|
|
375
|
+
L.push('|---|---|');
|
|
376
|
+
for (const doc of KEY_DOCS) {
|
|
377
|
+
if (!fileSet.has(doc)) continue;
|
|
378
|
+
let parsed;
|
|
379
|
+
try { parsed = docsEntropy.parseFile(path.join(INSTANCE_ROOT, doc)); } catch { parsed = null; }
|
|
380
|
+
if (!parsed) { try { parsed = docsEntropy.parseFile(path.join(CORE_ROOT, doc)); } catch { parsed = null; } }
|
|
381
|
+
const targets = new Set();
|
|
382
|
+
for (const lk of (parsed && parsed.links) || []) {
|
|
383
|
+
const t = resolveDocLink(doc, lk.href);
|
|
384
|
+
if (t && t !== doc && fileSet.has(t)) targets.add(t);
|
|
385
|
+
}
|
|
386
|
+
const list = [...targets].sort();
|
|
387
|
+
const shown = list.slice(0, 12).map((t) => `\`${t}\``).join(', ');
|
|
388
|
+
const more = list.length > 12 ? ` _(+${list.length - 12} more)_` : '';
|
|
389
|
+
L.push(`| \`${doc}\` | ${list.length ? shown + more : '—'} |`);
|
|
390
|
+
}
|
|
391
|
+
L.push('');
|
|
392
|
+
|
|
393
|
+
// Staleness flags: docs with unresolved internal links/anchors.
|
|
394
|
+
let findings = [];
|
|
395
|
+
try { findings = docsEntropy.scanStaleLinks(files) || []; } catch { findings = []; }
|
|
396
|
+
const byFile = new Map();
|
|
397
|
+
for (const f of findings) {
|
|
398
|
+
if (!byFile.has(f.file)) byFile.set(f.file, []);
|
|
399
|
+
byFile.get(f.file).push(f);
|
|
400
|
+
}
|
|
401
|
+
L.push('### Docs needing a touch-up (staleness flags)');
|
|
402
|
+
L.push('');
|
|
403
|
+
if (byFile.size === 0) {
|
|
404
|
+
L.push('_None — every tracked doc\'s internal links + anchors resolve._');
|
|
405
|
+
} else {
|
|
406
|
+
L.push(`${byFile.size} doc(s) carry an unresolved internal link or anchor (top 25 by count):`);
|
|
407
|
+
L.push('');
|
|
408
|
+
L.push('| doc | unresolved links |');
|
|
409
|
+
L.push('|---|---|');
|
|
410
|
+
const rows = [...byFile.entries()].sort((a, b) => b[1].length - a[1].length).slice(0, 25);
|
|
411
|
+
for (const [file, fs2] of rows) L.push(`| \`${file}\` | ${fs2.length} |`);
|
|
412
|
+
}
|
|
413
|
+
L.push('');
|
|
414
|
+
return L;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
// ---- rendering: nested-doc generated block ---------------------------------
|
|
418
|
+
|
|
419
|
+
function renderNestedBlock(model, dir) {
|
|
420
|
+
const prefix = dir.endsWith('/') ? dir : dir + '/';
|
|
421
|
+
const here = model.byFile
|
|
422
|
+
.filter((f) => {
|
|
423
|
+
const d = f.rel.includes('/') ? f.rel.slice(0, f.rel.lastIndexOf('/')) : '.';
|
|
424
|
+
return d === dir; // non-recursive: files directly in this dir
|
|
425
|
+
})
|
|
426
|
+
.sort((a, b) => a.rel.localeCompare(b.rel));
|
|
427
|
+
const L = [];
|
|
428
|
+
L.push(BEGIN);
|
|
429
|
+
L.push(`**Symbol skeleton (generated from the code — do not hand-edit; refresh: \`node scripts/bongos/gen-repo-map.js\`).** Exported signatures, most-referenced first. The interpretive notes above are hand-written; this factual list is regenerated on deploy so it can't drift ([ADR 0063](${path.relative(path.join(REPO_ROOT, dir), path.join(REPO_ROOT, 'docs/adr/0063-generated-repo-map-symbol-skeleton.md')).split(path.sep).join('/')})).`);
|
|
430
|
+
L.push('');
|
|
431
|
+
for (const f of here) {
|
|
432
|
+
const { list, pool } = pickForFile(f);
|
|
433
|
+
if (!list.length) continue;
|
|
434
|
+
const base = f.rel.slice(prefix.length);
|
|
435
|
+
const more = pool - list.length;
|
|
436
|
+
L.push(`- \`${base}\` — ${list.map((s) => '`' + fmtSig(s) + '`').join(', ')}${more > 0 ? ` _(+${more} more)_` : ''}`);
|
|
437
|
+
}
|
|
438
|
+
L.push(END);
|
|
439
|
+
return L.join('\n');
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
function injectBlock(existing, block) {
|
|
443
|
+
const b = existing.indexOf(BEGIN);
|
|
444
|
+
const e = existing.indexOf(END);
|
|
445
|
+
if (b !== -1 && e !== -1 && e > b) {
|
|
446
|
+
return existing.slice(0, b) + block + existing.slice(e + END.length);
|
|
447
|
+
}
|
|
448
|
+
// insert before "**See also.**" if present, else append
|
|
449
|
+
const anchor = existing.indexOf('**See also.**');
|
|
450
|
+
if (anchor !== -1) {
|
|
451
|
+
return existing.slice(0, anchor) + block + '\n\n' + existing.slice(anchor);
|
|
452
|
+
}
|
|
453
|
+
return existing.replace(/\n*$/, '') + '\n\n' + block + '\n';
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
// ---- main ------------------------------------------------------------------
|
|
457
|
+
|
|
458
|
+
function main() {
|
|
459
|
+
// Two artifact BUCKETS, gated separately since ADR 0110 (task 1926):
|
|
460
|
+
// • 'whole' — docs/repo-map.md, which is now GITIGNORED and regenerated at
|
|
461
|
+
// deploy (the gen-atlas.js model), so it carries no
|
|
462
|
+
// committed copy and two parallel branches can never collide on it.
|
|
463
|
+
// • 'block' — the generated symbol BLOCK inside each nested CLAUDE.md, which
|
|
464
|
+
// stays hand-written prose + a tracked block, so it MUST stay fresh in git.
|
|
465
|
+
// `--check` → both buckets (back-compat; a full local sanity check).
|
|
466
|
+
// `--check-block` → block bucket only (the HARD per-PR CI gate in fitness.js).
|
|
467
|
+
// `--check-whole` → whole-file bucket only (used by nothing hard; deploy owns it).
|
|
468
|
+
const checkAll = process.argv.includes('--check');
|
|
469
|
+
const checkWhole = process.argv.includes('--check-whole');
|
|
470
|
+
const checkBlock = process.argv.includes('--check-block');
|
|
471
|
+
// WRITE-side bucket selection, the sibling of the --check-* flags above (task
|
|
472
|
+
// 1002962). --whole-only regenerates the GITIGNORED docs/repo-map.md and leaves
|
|
473
|
+
// the TRACKED nested blocks alone.
|
|
474
|
+
//
|
|
475
|
+
// WHY a caller ever needs this: a SPARSE checkout materializes only part of the
|
|
476
|
+
// tree. The block ordering is `b.refs - a.refs || name`, and `refs` counts
|
|
477
|
+
// references across the VISIBLE corpus — so a checkout with 7 of 20 modules
|
|
478
|
+
// computes different counts and emits a legitimately different block. Written
|
|
479
|
+
// into a tracked file that dirties the working tree, and the NEXT `git pull`
|
|
480
|
+
// aborts with "local changes would be overwritten" — a silent, permanent sync
|
|
481
|
+
// deadlock (one checkout sat 257 commits behind for three days). A sparse
|
|
482
|
+
// checkout CONSUMES these blocks; they arrive correct with the pull, generated
|
|
483
|
+
// by CI from the whole tree. Only a full checkout may produce them.
|
|
484
|
+
const wholeOnly = process.argv.includes('--whole-only');
|
|
485
|
+
const model = buildModel();
|
|
486
|
+
|
|
487
|
+
if (process.argv.includes('--json')) {
|
|
488
|
+
process.stdout.write(JSON.stringify(model, null, 2) + '\n');
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
const writes = [];
|
|
493
|
+
// 1) docs/repo-map.md (whole-file; gitignored since ADR 0110 — a `write` here on a
|
|
494
|
+
// fresh checkout just means "absent, would be created", which is expected)
|
|
495
|
+
const mapPath = path.join(REPO_ROOT, 'docs', 'repo-map.md');
|
|
496
|
+
const mapNext = renderRepoMap(model);
|
|
497
|
+
const mapCur = fs.existsSync(mapPath) ? fs.readFileSync(mapPath, 'utf8') : '';
|
|
498
|
+
if (!sameContent(mapCur, mapNext)) writes.push({ full: mapPath, content: mapNext, rel: 'docs/repo-map.md', bucket: 'whole' });
|
|
499
|
+
|
|
500
|
+
// 2) nested CLAUDE.md generated blocks (tracked; the HARD-gated bucket).
|
|
501
|
+
// Skipped entirely under --whole-only — see the flag's rationale above.
|
|
502
|
+
for (const dir of (wholeOnly ? [] : NESTED_DIRS)) {
|
|
503
|
+
const docPath = path.join(REPO_ROOT, dir, 'CLAUDE.md');
|
|
504
|
+
if (!fs.existsSync(docPath)) {
|
|
505
|
+
console.error(`gen-repo-map: WARN nested doc missing, skipping: ${dir}/CLAUDE.md`);
|
|
506
|
+
continue;
|
|
507
|
+
}
|
|
508
|
+
const cur = fs.readFileSync(docPath, 'utf8');
|
|
509
|
+
const next = injectBlock(cur, renderNestedBlock(model, dir));
|
|
510
|
+
if (!sameContent(cur, next)) writes.push({ full: docPath, content: next, rel: `${dir}/CLAUDE.md`, bucket: 'block' });
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
if (checkAll || checkWhole || checkBlock) {
|
|
514
|
+
const wantBlock = checkAll || checkBlock;
|
|
515
|
+
const wantWhole = checkAll || checkWhole;
|
|
516
|
+
const stale = writes.filter((w) => (w.bucket === 'block' && wantBlock) || (w.bucket === 'whole' && wantWhole));
|
|
517
|
+
if (stale.length) {
|
|
518
|
+
console.error(`gen-repo-map ${checkBlock ? '--check-block' : checkWhole ? '--check-whole' : '--check'}: STALE — would update ${stale.map((w) => w.rel).join(', ')}`);
|
|
519
|
+
console.error(' run: node scripts/bongos/gen-repo-map.js (and commit any TRACKED files it changes)');
|
|
520
|
+
process.exit(2);
|
|
521
|
+
}
|
|
522
|
+
console.log(`gen-repo-map ${checkBlock ? '--check-block' : checkWhole ? '--check-whole' : '--check'}: up to date.`);
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
if (!writes.length) {
|
|
527
|
+
console.log('gen-repo-map: repo map already current — no changes.');
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
for (const w of writes) fs.writeFileSync(w.full, w.content);
|
|
531
|
+
console.log(`gen-repo-map: wrote ${writes.length} file(s): ${writes.map((w) => w.rel).join(', ')}`);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
if (require.main === module) main();
|
|
535
|
+
|
|
536
|
+
// Exported so the git merge driver / ship self-heal (scripts/bongos/git-merge-regen.js,
|
|
537
|
+
// task 1243) can regenerate a generated file's content from the MERGED working-tree
|
|
538
|
+
// code WITHOUT shelling out or re-parsing stdout. The require.main guard above keeps
|
|
539
|
+
// `require('./gen-repo-map')` side-effect-free (it no longer runs main()).
|
|
540
|
+
module.exports = { BEGIN, END, NESTED_DIRS, buildModel, renderRepoMap, renderNestedBlock, injectBlock };
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// scripts/bongos/gen-role-responsibilities.js
|
|
2
|
+
//
|
|
3
|
+
// WHAT. Writes each craft's written responsibility into its role pack under
|
|
4
|
+
// docs/packs/, between markers, from the ONE source at src/role-responsibilities.js.
|
|
5
|
+
//
|
|
6
|
+
// WHY A GENERATOR AND NOT A PARAGRAPH SOMEONE TYPES. Criterion
|
|
7
|
+
// wa6-written-responsibilities (goal 1000095) says there is one source "shown on
|
|
8
|
+
// the profile, injected into the pack, referenced by grading". The profile and the
|
|
9
|
+
// grader read the source at runtime, so they cannot drift. A markdown pack cannot
|
|
10
|
+
// require a JS module, so its copy is the only one that CAN drift — and the drift
|
|
11
|
+
// would be invisible and consequential: the pack is what a session is actually
|
|
12
|
+
// instructed by, so a stale sentence there means the project teaches one standard,
|
|
13
|
+
// shows a second on the profile, and grades against a third. This is the
|
|
14
|
+
// gen-diagrams / gen-session-index pattern (ADR 0062 §8): generate the block, gate
|
|
15
|
+
// its freshness in CI, never hand-edit it.
|
|
16
|
+
//
|
|
17
|
+
// USAGE
|
|
18
|
+
// node scripts/bongos/gen-role-responsibilities.js # write the blocks
|
|
19
|
+
// node scripts/bongos/gen-role-responsibilities.js --check # exit 2 if any block drifted (the CI gate)
|
|
20
|
+
//
|
|
21
|
+
// A pack with no markers is a WARNING, not a failure — a host instance may carry a
|
|
22
|
+
// pack this core does not know about. A pack whose marker block is STALE is the
|
|
23
|
+
// hard failure, because that is the drift the whole file exists to prevent.
|
|
24
|
+
'use strict';
|
|
25
|
+
|
|
26
|
+
const fs = require('node:fs');
|
|
27
|
+
const path = require('node:path');
|
|
28
|
+
|
|
29
|
+
const { ROLE_RESPONSIBILITIES, RESPONSIBILITIES_SOURCE } = require('../../src/role-responsibilities');
|
|
30
|
+
const { resolveCoreRoot } = require('../../src/instance-config');
|
|
31
|
+
|
|
32
|
+
// The packs are CORE content (they ship in the package alongside the registry that
|
|
33
|
+
// names them), so resolve them against the core root the same way the role-pack
|
|
34
|
+
// guard does — never the instance root.
|
|
35
|
+
const CORE_ROOT = resolveCoreRoot();
|
|
36
|
+
const REGISTRY_REL = 'scripts/bongos/discipline-modes.json';
|
|
37
|
+
|
|
38
|
+
const BEGIN = '<!-- BEGIN GENERATED ROLE RESPONSIBILITY (scripts/bongos/gen-role-responsibilities.js — do not hand-edit) -->';
|
|
39
|
+
const END = '<!-- END GENERATED ROLE RESPONSIBILITY -->';
|
|
40
|
+
|
|
41
|
+
// The block a pack carries. Deliberately short: the pack teaches the craft, this
|
|
42
|
+
// states the standard, and the provenance line is there so a reader knows the
|
|
43
|
+
// sentence is the owner's and not the platform's opinion.
|
|
44
|
+
function blockFor(discipline) {
|
|
45
|
+
const text = ROLE_RESPONSIBILITIES[discipline];
|
|
46
|
+
if (!text) return null;
|
|
47
|
+
const s = RESPONSIBILITIES_SOURCE;
|
|
48
|
+
return [
|
|
49
|
+
BEGIN,
|
|
50
|
+
'## What this craft is answerable for',
|
|
51
|
+
'',
|
|
52
|
+
`> ${text}`,
|
|
53
|
+
'',
|
|
54
|
+
`*The ${discipline}'s written responsibility — one source (\`src/role-responsibilities.js\`), shown on the hall profile, taught here, and referenced by the grader. Fixed by ${s.authoredBy} on ${s.authoredOn}, criterion \`${s.criterion}\`. Generated: do not hand-edit, and do not paraphrase it elsewhere.*`,
|
|
55
|
+
END,
|
|
56
|
+
].join('\n');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Replace the marked region, or report that the pack has no markers. Mirrors
|
|
60
|
+
// gen-session-index.injectBlock: bounded by the two literal markers, so a pack may
|
|
61
|
+
// put the block anywhere and move it later without touching this file.
|
|
62
|
+
//
|
|
63
|
+
// THE BLOCK TAKES THE FILE'S OWN LINE ENDING. These packs are `.md` and check out
|
|
64
|
+
// CRLF on Windows while CI checks out LF. A generator that always wrote '\n' would
|
|
65
|
+
// splice LF lines into a CRLF file, so the committed bytes and the bytes `--check`
|
|
66
|
+
// recomputes would differ by platform — the check would be red on one checkout and
|
|
67
|
+
// green on the other, for a file nobody touched. Detecting the file's ending makes
|
|
68
|
+
// the generator idempotent on both.
|
|
69
|
+
function inject(text, block) {
|
|
70
|
+
const i = text.indexOf(BEGIN);
|
|
71
|
+
const j = text.indexOf(END);
|
|
72
|
+
if (i === -1 || j === -1 || j < i) return null;
|
|
73
|
+
const eol = text.includes('\r\n') ? '\r\n' : '\n';
|
|
74
|
+
return text.slice(0, i) + block.replace(/\n/g, eol) + text.slice(j + END.length);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Every discipline the role registry binds to a pack. Reading the registry rather
|
|
78
|
+
// than hardcoding three filenames means a pack that is renamed, or a fourth craft
|
|
79
|
+
// that is added later (Governor, when the owner decides), is picked up here with no
|
|
80
|
+
// edit — the same single-declaration rule the registry already enforces for claim.js.
|
|
81
|
+
function packTargets() {
|
|
82
|
+
const abs = path.join(CORE_ROOT, REGISTRY_REL);
|
|
83
|
+
const modes = (JSON.parse(fs.readFileSync(abs, 'utf8')) || {}).modes || {};
|
|
84
|
+
const out = [];
|
|
85
|
+
for (const [discipline, mode] of Object.entries(modes)) {
|
|
86
|
+
if (!mode || !mode.pack) continue;
|
|
87
|
+
out.push({ discipline, rel: mode.pack, abs: path.join(CORE_ROOT, mode.pack) });
|
|
88
|
+
}
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function plan() {
|
|
93
|
+
const writes = [];
|
|
94
|
+
const warnings = [];
|
|
95
|
+
for (const t of packTargets()) {
|
|
96
|
+
const block = blockFor(t.discipline);
|
|
97
|
+
if (!block) {
|
|
98
|
+
// A pack whose craft has no statement is legitimate (a module-contributed
|
|
99
|
+
// craft that grew a pack). Say so; never write an empty quote into it.
|
|
100
|
+
warnings.push(`${t.rel}: no written responsibility for '${t.discipline}' — leaving the pack alone.`);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
let cur;
|
|
104
|
+
try { cur = fs.readFileSync(t.abs, 'utf8'); } catch {
|
|
105
|
+
warnings.push(`${t.rel}: named by the role registry but not readable — the role-pack guard is the check that fails on this.`);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const next = inject(cur, block);
|
|
109
|
+
if (next === null) { warnings.push(`${t.rel}: no marker block — add the BEGIN/END pair to carry the statement.`); continue; }
|
|
110
|
+
if (next !== cur) writes.push({ abs: t.abs, rel: t.rel, content: next });
|
|
111
|
+
}
|
|
112
|
+
return { writes, warnings };
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function main() {
|
|
116
|
+
const check = process.argv.includes('--check');
|
|
117
|
+
const { writes, warnings } = plan();
|
|
118
|
+
for (const w of warnings) console.error(`gen-role-responsibilities: WARN ${w}`);
|
|
119
|
+
if (check) {
|
|
120
|
+
if (writes.length) {
|
|
121
|
+
for (const w of writes) console.error(`gen-role-responsibilities: STALE ${w.rel}`);
|
|
122
|
+
console.error('Run `node scripts/bongos/gen-role-responsibilities.js` and commit.');
|
|
123
|
+
process.exit(2);
|
|
124
|
+
}
|
|
125
|
+
console.log('gen-role-responsibilities --check: up to date.');
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
for (const w of writes) fs.writeFileSync(w.abs, w.content);
|
|
129
|
+
console.log(writes.length ? `gen-role-responsibilities: wrote ${writes.length} pack(s): ${writes.map((w) => w.rel).join(', ')}` : 'gen-role-responsibilities: already up to date.');
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (require.main === module) main();
|
|
133
|
+
|
|
134
|
+
module.exports = { BEGIN, END, blockFor, inject, packTargets, plan };
|