@bongos/core 1.17.0
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 +5727 -0
- package/.claude/skills/blocker-review/SKILL.md +91 -0
- package/.claude/skills/blocker-solve/SKILL.md +96 -0
- package/.claude/skills/builder-backup/SKILL.md +54 -0
- package/.claude/skills/builder-box/SKILL.md +45 -0
- package/.claude/skills/builder-claim/SKILL.md +76 -0
- package/.claude/skills/builder-connect/SKILL.md +59 -0
- package/.claude/skills/builder-cost/SKILL.md +47 -0
- package/.claude/skills/builder-end/SKILL.md +81 -0
- package/.claude/skills/builder-exit/SKILL.md +88 -0
- package/.claude/skills/builder-key/SKILL.md +40 -0
- package/.claude/skills/builder-reauth/SKILL.md +50 -0
- package/.claude/skills/builder-redteam/SKILL.md +109 -0
- package/.claude/skills/builder-release/SKILL.md +41 -0
- package/.claude/skills/builder-setup/SKILL.md +62 -0
- package/.claude/skills/builder-ship/SKILL.md +79 -0
- package/.claude/skills/builder-stage/SKILL.md +51 -0
- package/.claude/skills/builder-start/SKILL.md +46 -0
- package/.claude/skills/close-box/SKILL.md +43 -0
- package/.claude/skills/design-sync/SKILL.md +69 -0
- package/.claude/skills/dev/SKILL.md +49 -0
- package/.claude/skills/feedback/SKILL.md +32 -0
- package/.claude/skills/figma-design-sync/SKILL.md +74 -0
- package/.claude/skills/goal-review/SKILL.md +89 -0
- package/.claude/skills/idea-triage/SKILL.md +144 -0
- package/.claude/skills/ideate/SKILL.md +82 -0
- package/.claude/skills/merge-mode/SKILL.md +169 -0
- package/.claude/skills/new-project/SKILL.md +108 -0
- package/.claude/skills/otb-character-review/SKILL.md +71 -0
- package/.claude/skills/otb-design-review/SKILL.md +47 -0
- package/.claude/skills/otb-feedback-capture/SKILL.md +45 -0
- package/.claude/skills/otb-figma-sync/SKILL.md +54 -0
- package/.claude/skills/otb-tile-generate/SKILL.md +45 -0
- package/.claude/skills/paint/SKILL.md +70 -0
- package/.claude/skills/planning-session/SKILL.md +299 -0
- package/.claude/skills/priority-session/SKILL.md +134 -0
- package/.claude/skills/read-session-export/SKILL.md +58 -0
- package/.claude/skills/recall/SKILL.md +52 -0
- package/.claude/skills/session-handoff/SKILL.md +46 -0
- package/.claude/skills/status/SKILL.md +33 -0
- package/.devcontainer/Dockerfile +69 -0
- package/.devcontainer/README.md +73 -0
- package/.devcontainer/devcontainer-lock.json +19 -0
- package/.devcontainer/devcontainer.json +93 -0
- package/.devcontainer/healthcheck.sh +84 -0
- package/.devcontainer/init-firewall.sh +198 -0
- package/.devcontainer/post-create.sh +153 -0
- package/.dockerignore +36 -0
- package/.env.local.example +32 -0
- package/.gitattributes +83 -0
- package/.gitignore +91 -0
- package/CLAUDE.md +242 -0
- package/CODE_OF_CONDUCT.md +46 -0
- package/CONTRIBUTING.md +51 -0
- package/Dockerfile +46 -0
- package/GOVERNANCE.md +44 -0
- package/LICENSE +661 -0
- package/README.md +88 -0
- package/bin/bongos.js +222 -0
- package/clients/bongos-client/README.md +48 -0
- package/clients/bongos-client/bongos-client.global.js +617 -0
- package/clients/bongos-client/examples/hello-world.mjs +62 -0
- package/clients/bongos-client/index.cjs +619 -0
- package/clients/bongos-client/index.d.ts +793 -0
- package/clients/bongos-client/index.mjs +614 -0
- package/clients/bongos-client/package.json +32 -0
- package/config/branding.neutral.json +60 -0
- package/config/design-tokens.neutral.json +51 -0
- package/config/design-tokens.schema.json +96 -0
- package/config/modules.neutral.json +9 -0
- package/docker-compose.yml +52 -0
- package/docker-entrypoint.sh +30 -0
- package/docs/adr/0001-stack-choice-single-vps.md +45 -0
- package/docs/adr/0002-digitalocean-over-hetzner.md +27 -0
- package/docs/adr/0003-cloudflare-origin-cert-over-letsencrypt.md +35 -0
- package/docs/adr/0004-amazonprimea-name-and-trademark-acceptance.md +45 -0
- package/docs/adr/0005-invisible-other-players-in-v1.md +37 -0
- package/docs/adr/0006-singleton-worldroom-plus-queueroom.md +30 -0
- package/docs/adr/0007-persistent-identity-via-localstorage-uuid.md +31 -0
- package/docs/adr/0008-family-based-tile-generation.md +86 -0
- package/docs/adr/0008-google-chat-oauth-user-auth.md +37 -0
- package/docs/adr/0009-autotile-architecture.md +181 -0
- package/docs/adr/0010-pms-architecture.md +70 -0
- package/docs/adr/0011-terrain-id-rendering-model.md +174 -0
- package/docs/adr/0012-ground-object-cell-split.md +208 -0
- package/docs/adr/0013-paths-as-object-overlays-with-autotile-dispatch.md +158 -0
- package/docs/adr/0014-families-canonical-over-vocabulary.md +103 -0
- package/docs/adr/0015-task-dependencies-and-auto-promotion.md +125 -0
- package/docs/adr/0016-trust-boundary-server-enforced-permissions.md +132 -0
- package/docs/adr/0017-code-simplification-and-repo-cleanliness.md +74 -0
- package/docs/adr/0018-three-rank-model-goes-live.md +97 -0
- package/docs/adr/0019-red-team-bounty-payout-table.md +52 -0
- package/docs/adr/0020-security-model-public-stub.md +70 -0
- package/docs/adr/0021-per-builder-skill-model-preferences.md +99 -0
- package/docs/adr/0022-secrets-policy.md +124 -0
- package/docs/adr/0023-kind-multipliers-and-idea-bonus.md +118 -0
- package/docs/adr/0024-cloneable-repo-local-first-memory.md +277 -0
- package/docs/adr/0024-multi-agent-system-architecture.md +125 -0
- package/docs/adr/0025-offsite-backup-vendor-digitalocean-spaces.md +59 -0
- package/docs/adr/0025-structured-criterion-task-link.md +44 -0
- package/docs/adr/0026-bfg-memory-hygiene-and-cross-builder-learning.md +117 -0
- package/docs/adr/0027-bfg-session-inefficiency-evaluator.md +170 -0
- package/docs/adr/0028-honest-llm-spend-accounting.md +109 -0
- package/docs/adr/0029-status-page-outage-resilience.md +59 -0
- package/docs/adr/0030-builders-hall-live-updates.md +59 -0
- package/docs/adr/0031-cloud-dev-environments-for-builders.md +222 -0
- package/docs/adr/0032-discord-mirror-of-gds.md +50 -0
- package/docs/adr/0033-discord-bot-service-principal.md +82 -0
- package/docs/adr/0034-thetes-graduated-newcomer-rank.md +53 -0
- package/docs/adr/0035-builder-onboarding-three-paths.md +128 -0
- package/docs/adr/0036-builders-subdomain-and-ui-reorg.md +40 -0
- package/docs/adr/0037-discord-channel-management.md +51 -0
- package/docs/adr/0038-chromebook-ttyd-cloudflare-tunnel.md +111 -0
- package/docs/adr/0039-setup-first-onboarding-ux.md +49 -0
- package/docs/adr/0040-remote-control-default-browser-onramp.md +47 -0
- package/docs/adr/0041-temporary-grader-bypass-killswitch.md +40 -0
- package/docs/adr/0042-builder-self-deploy-ci-auto-merge.md +82 -0
- package/docs/adr/0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md +74 -0
- package/docs/adr/0044-mediterranean-palette-replacement.md +73 -0
- package/docs/adr/0044-per-box-live-game-preview.md +57 -0
- package/docs/adr/0045-devbox-desktop-app.md +133 -0
- package/docs/adr/0046-sandbox-first-review-gate.md +72 -0
- package/docs/adr/0047-discord-bugs-intake-anti-abuse.md +36 -0
- package/docs/adr/0048-works-in-progress-ia-split.md +32 -0
- package/docs/adr/0049-split-parallel-safety-contract.md +46 -0
- package/docs/adr/0050-device-flow-admission-invite-gated-by-default.md +43 -0
- package/docs/adr/0051-full-session-transcript-corpus.md +57 -0
- package/docs/adr/0052-sandbox-for-everyone-game-only-preview.md +70 -0
- package/docs/adr/0053-scoped-dev-box-session.md +55 -0
- package/docs/adr/0054-session-token-reward-cost-plus.md +63 -0
- package/docs/adr/0055-server-mediated-branch-publish.md +47 -0
- package/docs/adr/0056-prod-deploy-script-mirror-and-healthcheck-retry.md +62 -0
- package/docs/adr/0057-container-cost-ledger.md +28 -0
- package/docs/adr/0057-discord-archon-approval-channels.md +64 -0
- package/docs/adr/0058-automatic-gate-surface-gatekeeper.md +64 -0
- package/docs/adr/0059-single-approval-remove-devbox-approval-gate.md +37 -0
- package/docs/adr/0060-gds-retrieval-layer.md +97 -0
- package/docs/adr/0061-context-layer-decomposition.md +61 -0
- package/docs/adr/0062-medusa-instance-model-decoupling.md +107 -0
- package/docs/adr/0063-generated-repo-map-symbol-skeleton.md +44 -0
- package/docs/adr/0064-rename-medusa-to-cloud-bongos.md +49 -0
- package/docs/adr/0065-agpl-nonprofit-ai-first-governance.md +69 -0
- package/docs/adr/0066-generated-file-map-sections.md +51 -0
- package/docs/adr/0067-session-start-fast-forward-pull.md +43 -0
- package/docs/adr/0068-shared-art-key-for-newcomers.md +38 -0
- package/docs/adr/0069-hall-live-channel-sse-decouple.md +35 -0
- package/docs/adr/0070-deterministic-session-card-delivery.md +44 -0
- package/docs/adr/0071-box-confirm-before-destroyed-and-drift-reconcile.md +59 -0
- package/docs/adr/0072-bongos-app-mac-signed-first-windows-deferred.md +35 -0
- package/docs/adr/0072-dev-box-code-staleness-visibility.md +39 -0
- package/docs/adr/0073-builder-needs-signal-and-byok-gemini-key.md +64 -0
- package/docs/adr/0073-secrets-scan-exclude-uri-detector.md +37 -0
- package/docs/adr/0074-memory-map-stays-light.md +32 -0
- package/docs/adr/0075-per-system-cost-attribution.md +37 -0
- package/docs/adr/0076-in-session-deterministic-compaction.md +58 -0
- package/docs/adr/0077-content-addressed-llm-cache.md +32 -0
- package/docs/adr/0078-deterministic-first-cron.md +48 -0
- package/docs/adr/0079-value-gated-autonomous-engagement.md +39 -0
- package/docs/adr/0080-llm-cache-api-transport-and-trust-model.md +46 -0
- package/docs/adr/0081-tool-agnostic-design-layer.md +62 -0
- package/docs/adr/0082-productized-key-storage-provisioning.md +32 -0
- package/docs/adr/0082-server-side-merge-conflict-auto-resolution.md +55 -0
- package/docs/adr/0083-modular-architecture-strangler-build-plan.md +143 -0
- package/docs/adr/0084-auto-derived-per-task-rank-floor.md +86 -0
- package/docs/adr/0085-remove-default-per-builder-spend-cap.md +39 -0
- package/docs/adr/0086-goal-scoped-work-hierarchy.md +123 -0
- package/docs/adr/0087-bongos-app-architecture-and-handoff-contract.md +49 -0
- package/docs/adr/0087-compete-on-governance-not-tooling-cursor.md +65 -0
- package/docs/adr/0088-consistent-character-generative-animation.md +169 -0
- package/docs/adr/0089-modular-multi-model-adversarial-grader.md +179 -0
- package/docs/adr/0090-metic-task-authoring.md +73 -0
- package/docs/adr/0091-bounding-the-kernel-and-db-carve.md +106 -0
- package/docs/adr/0092-hosting-module-and-on-prem-target.md +117 -0
- package/docs/adr/0093-tranche-2-core-carve-sequence.md +72 -0
- package/docs/adr/0094-repo-atlas-self-drawing-codebase-map.md +49 -0
- package/docs/adr/0095-borrowed-memory-and-retrieval-concepts.md +65 -0
- package/docs/adr/0095-cross-agent-context-management.md +58 -0
- package/docs/adr/0096-require-reward-before-workable.md +209 -0
- package/docs/adr/0097-one-active-claim-per-session-and-worktree-binding.md +46 -0
- package/docs/adr/0097-retroactive-reward-backfill.md +124 -0
- package/docs/adr/0098-public-mirror-publish-manifest.md +92 -0
- package/docs/adr/0099-delayed-redacted-mirror-export.md +55 -0
- package/docs/adr/0100-two-repo-instance-model.md +60 -0
- package/docs/adr/0101-goal-hierarchy-phase-5-judge-membership-reward.md +90 -0
- package/docs/adr/0102-finish-bounding-the-kernel.md +36 -0
- package/docs/adr/0103-core-first-extraction-cloud-bongos-trunk.md +70 -0
- package/docs/adr/0103-gdsv4-bongos-consolidation.md +28 -0
- package/docs/adr/0104-trust-gds-api-channel-in-auto-mode.md +42 -0
- package/docs/adr/0105-instance-seed-migrations-out-of-core.md +47 -0
- package/docs/adr/0106-goal-owner-manager-authority.md +84 -0
- package/docs/adr/0107-module-upstreaming-contribution-to-core-catalog.md +83 -0
- package/docs/adr/0108-instance-composition-configurable-root.md +87 -0
- package/docs/adr/0109-self-describing-openapi-and-hosted-docs.md +44 -0
- package/docs/adr/0110-untrack-whole-file-generated-nav-docs.md +49 -0
- package/docs/adr/0111-instance-hosting-provisioning-module.md +135 -0
- package/docs/adr/0112-private-goals-invitations-join-requests.md +72 -0
- package/docs/adr/0113-sandbox-studio-descope-superseded-by-0044-0052.md +41 -0
- package/docs/adr/0114-instance-docs-discovery-contract.md +32 -0
- package/docs/adr/0115-scheduled-routines-portability.md +31 -0
- package/docs/adr/0116-api-error-envelope-and-code-taxonomy.md +62 -0
- package/docs/adr/0117-api-versioning-and-deprecation-policy.md +50 -0
- package/docs/adr/0118-api-contract-source-of-truth-code-first.md +47 -0
- package/docs/adr/0119-api-pagination-contract.md +34 -0
- package/docs/adr/0120-pay-on-land-and-builder-owned-rebase-gate.md +108 -0
- package/docs/adr/0121-greenfield-vs-brownfield-onboarding-adopt-existing-repo.md +97 -0
- package/docs/adr/0122-onboarding-diagram-renders-deploy-rendered-off-git.md +43 -0
- package/docs/adr/0123-box-idle-sweep-autosave-before-destroy.md +36 -0
- package/docs/adr/0124-typed-api-response-bodies.md +37 -0
- package/docs/adr/0125-control-plane-scaffolds-standalone-instance-repo.md +36 -0
- package/docs/adr/0126-dedicated-cloudbongos-control-plane-droplet.md +30 -0
- package/docs/adr/0127-cross-box-fleet-observability.md +64 -0
- package/docs/adr/0128-provisioning-runner-privilege-and-db-auth-model.md +46 -0
- package/docs/adr/0129-cloudbongos-control-plane-pull-deploy.md +34 -0
- package/docs/adr/0130-provision-remote-exec-over-ssh.md +61 -0
- package/docs/adr/0131-rank-scoped-skill-visibility.md +47 -0
- package/docs/adr/0132-cohost-fleet-control-plane-migration.md +54 -0
- package/docs/adr/0133-github-app-manifest-onboarding-signin.md +42 -0
- package/docs/adr/0134-private-first-npm-distribution.md +38 -0
- package/docs/adr/README.md +208 -0
- package/docs/api/openapi.json +13720 -0
- package/docs/api-reference.md +437 -0
- package/docs/architecture.md +244 -0
- package/docs/branding-contract.md +66 -0
- package/docs/branding-fill-prompt.md +25 -0
- package/docs/canonical-permissions.md +241 -0
- package/docs/design/container-exterior-tiles.md +49 -0
- package/docs/design/container-exterior.md +81 -0
- package/docs/design/container-interior.md +77 -0
- package/docs/design/modular-architecture/00-research-report.md +107 -0
- package/docs/design/modular-architecture/01-architecture.md +125 -0
- package/docs/design/modular-architecture/02-module-map.md +116 -0
- package/docs/design/modular-architecture/03-builder-flows.md +104 -0
- package/docs/design/modular-architecture/04-module-lifecycle.md +62 -0
- package/docs/design/modular-architecture/README.md +27 -0
- package/docs/design/vanilla-hall-ui-redesign-scope.md +284 -0
- package/docs/design/world-map-scroll.md +41 -0
- package/docs/design-contract.md +320 -0
- package/docs/file-map.md +418 -0
- package/docs/handoff-template.md +92 -0
- package/docs/modules-contract.md +293 -0
- package/docs/onboarding/browser-terminal-guide.md +73 -0
- package/docs/onboarding/diagrams/01-task-lifecycle.mmd +28 -0
- package/docs/onboarding/diagrams/02-rank-ladder.mmd +54 -0
- package/docs/onboarding/diagrams/03-drachmae-karma.mmd +37 -0
- package/docs/onboarding/diagrams/04-architecture.mmd +51 -0
- package/docs/onboarding/diagrams/05-versioning.mmd +29 -0
- package/docs/onboarding/diagrams/README.md +94 -0
- package/docs/onboarding/diagrams/assertions.json +170 -0
- package/docs/onboarding/diagrams/puppeteer-config.json +1 -0
- package/docs/onboarding/diagrams/render-config.json +9 -0
- package/docs/onboarding/drachmae-and-karma.md +178 -0
- package/docs/onboarding/primer.md +202 -0
- package/docs/project-context.template.md +67 -0
- package/docs/recipes/README.md +35 -0
- package/docs/recipes/audit-replay.md +100 -0
- package/docs/recipes/bongos-cli-release.md +66 -0
- package/docs/recipes/builder-box-lifecycle.md +152 -0
- package/docs/recipes/claude-design-loop.md +143 -0
- package/docs/recipes/claude-gemini-bongos-doors.md +155 -0
- package/docs/recipes/cloudbongos-staging-gate.md +139 -0
- package/docs/recipes/cloudbongos-standup.md +111 -0
- package/docs/recipes/devbox-app-release.md +93 -0
- package/docs/recipes/devbox-app-windows-test.md +128 -0
- package/docs/recipes/failed-ship-recovery-proof.md +102 -0
- package/docs/recipes/figma-design-loop.md +129 -0
- package/docs/recipes/gds-db-backup.md +255 -0
- package/docs/recipes/instance-deploy.md +37 -0
- package/docs/recipes/managed-settings-remote-control.md +416 -0
- package/docs/recipes/memory-backup.md +71 -0
- package/docs/recipes/memory-sync-conflicts.md +98 -0
- package/docs/recipes/multi-builder-merge.md +78 -0
- package/docs/recipes/ops-gotchas.md +212 -0
- package/docs/recipes/overnight-builder.md +53 -0
- package/docs/recipes/packaging-the-core.md +49 -0
- package/docs/recipes/parallel-load-results-2026-05-30.md +63 -0
- package/docs/recipes/parallel-load-test.md +32 -0
- package/docs/recipes/pixel-art-pipeline.md +411 -0
- package/docs/recipes/private-npm-distribution.md +79 -0
- package/docs/recipes/search-index-ingestion.md +67 -0
- package/docs/recipes/self-host.md +60 -0
- package/docs/recipes/ship-and-regrade.md +72 -0
- package/docs/recipes/staging-data.md +50 -0
- package/docs/recipes/staging-environment.md +215 -0
- package/docs/recipes/upgrading-the-core.md +58 -0
- package/docs/research/cursor-competitive-analysis.md +255 -0
- package/docs/research/llm-model-agnostic-and-cheaper-grader.md +227 -0
- package/migrations/003_pms.sql +284 -0
- package/migrations/004_pms_cost_idempotency.sql +13 -0
- package/migrations/005_pms_smoke_filter.sql +44 -0
- package/migrations/006_pms_v2.sql +378 -0
- package/migrations/007_pms_v2_hierarchy_trigger.sql +59 -0
- package/migrations/008_pms_v2_migration_allocator.sql +27 -0
- package/migrations/009_pms_v2_blockers_table.sql +68 -0
- package/migrations/010_uptime.sql +29 -0
- package/migrations/011_backfill_v2_v3_done_when.sql +20 -0
- package/migrations/012_pms_v2_task_lifecycle_states.sql +82 -0
- package/migrations/013_claim_locking.sql +22 -0
- package/migrations/014_pms_task_discipline.sql +86 -0
- package/migrations/015_pms_estimation_calibration.sql +140 -0
- package/migrations/016_pms_task_grades.sql +60 -0
- package/migrations/017_version_progress_exclude_abandoned.sql +49 -0
- package/migrations/019_rename_pms_v3_to_gds_v3.sql +65 -0
- package/migrations/020_task_dependencies.sql +99 -0
- package/migrations/021_v3_renumber_and_deps.sql +224 -0
- package/migrations/022_v3_reconcile_dep_gated_status.sql +41 -0
- package/migrations/023_pms_rank.sql +30 -0
- package/migrations/025_builder_exit_status.sql +15 -0
- package/migrations/027_builders_preferred_disciplines.sql +46 -0
- package/migrations/028_tasks_parallel_safe.sql +71 -0
- package/migrations/029_rank_three_live.sql +32 -0
- package/migrations/030_vulnerability_reports.sql +61 -0
- package/migrations/031_reward_simplification.sql +57 -0
- package/migrations/032_repo_health_snapshots.sql +56 -0
- package/migrations/033_audit_log.sql +64 -0
- package/migrations/034_lifecycle_breakdown_leaf_only.sql +62 -0
- package/migrations/035_auth_token_hygiene.sql +66 -0
- package/migrations/037_builder_skill_model_prefs.sql +44 -0
- package/migrations/038_task_override_requests.sql +51 -0
- package/migrations/039_newcomer_friendly_column.sql +124 -0
- package/migrations/040_builder_karma.sql +58 -0
- package/migrations/041_kind_multipliers_and_idea_bonus.sql +42 -0
- package/migrations/042_criterion_proposal_workflow.sql +78 -0
- package/migrations/043_builder_onboarding_observability.sql +66 -0
- package/migrations/044_tasks_requires_rank.sql +97 -0
- package/migrations/045_builder_onboarding_state.sql +147 -0
- package/migrations/046_cost_log_builder_attribution.sql +42 -0
- package/migrations/054_builder_memory.sql +108 -0
- package/migrations/055_task_criteria.sql +90 -0
- package/migrations/058_peer_votes.sql +41 -0
- package/migrations/059_onboarding_pick_disciplines.sql +59 -0
- package/migrations/060_access_requests.sql +46 -0
- package/migrations/061_backfill_override_ship_attribution.sql +29 -0
- package/migrations/062_session_records.sql +34 -0
- package/migrations/063_session_records_tool_errors_idx.sql +11 -0
- package/migrations/064_grade_attempts.sql +18 -0
- package/migrations/065_bfg_principal.sql +58 -0
- package/migrations/066_live_notify_triggers.sql +69 -0
- package/migrations/067_builder_boxes.sql +117 -0
- package/migrations/067_discord_bot_foundation.sql +69 -0
- package/migrations/068_thetes_requires_rank.sql +27 -0
- package/migrations/069_builder_ssh_keys.sql +66 -0
- package/migrations/070_box_intents.sql +101 -0
- package/migrations/071_box_first_provision_approval.sql +46 -0
- package/migrations/072_onboarding_ship_three_remove_primer.sql +80 -0
- package/migrations/073_box_terminal_access.sql +46 -0
- package/migrations/075_builder_sound_prefs.sql +28 -0
- package/migrations/078_box_claude_active.sql +22 -0
- package/migrations/079_box_first_connected_at.sql +20 -0
- package/migrations/081_tasks_needs_migration.sql +34 -0
- package/migrations/084_tasks_security_sensitive.sql +24 -0
- package/migrations/085_security_engagement_docs.sql +34 -0
- package/migrations/086_rename_disciplines.sql +125 -0
- package/migrations/088_builders_anthropic_link.sql +28 -0
- package/migrations/089_builders_monthly_budget.sql +19 -0
- package/migrations/090_box_scoped_sessions.sql +38 -0
- package/migrations/091_session_token_reward.sql +44 -0
- package/migrations/093_tasks_sandbox_review.sql +22 -0
- package/migrations/102_remove_box_first_provision_approval.sql +58 -0
- package/migrations/103_search_chunks.sql +90 -0
- package/migrations/104_builder_box_blocked.sql +34 -0
- package/migrations/105_box_host_keys.sql +35 -0
- package/migrations/111_medusa_customer0_framing.sql +35 -0
- package/migrations/112_drop_track_check.sql +25 -0
- package/migrations/113_merge_lease.sql +16 -0
- package/migrations/114_cloudbongos_rename_live_strings.sql +32 -0
- package/migrations/118_currency_label_decoupling.sql +23 -0
- package/migrations/119_builder_behavior_prefs.sql +31 -0
- package/migrations/121_box_code_version.sql +37 -0
- package/migrations/122_builder_gemini_key.sql +30 -0
- package/migrations/123_cost_log_tiers.sql +33 -0
- package/migrations/124_cost_baseline.sql +45 -0
- package/migrations/125_llm_cache.sql +54 -0
- package/migrations/126_autonomy_runs.sql +33 -0
- package/migrations/143_cost_calibration.sql +63 -0
- package/migrations/145_backfill_task_requires_rank.sql +84 -0
- package/migrations/160_goal_tier.sql +88 -0
- package/migrations/163_polymorphic_dependencies.sql +187 -0
- package/migrations/164_event_sound_prefs.sql +20 -0
- package/migrations/165_task_module_key.sql +15 -0
- package/migrations/171_claims_published_head_sha.sql +24 -0
- package/migrations/174_close_orphaned_claims_on_terminal_tasks.sql +30 -0
- package/migrations/175_task_grades_diff_hash.sql +9 -0
- package/migrations/176_promotion_respects_open_blockers.sql +58 -0
- package/migrations/176_ui_discipline.sql +40 -0
- package/migrations/177_require_reward_before_workable.sql +76 -0
- package/migrations/178_reward_gate_auto_assign_revert_autopromote.sql +61 -0
- package/migrations/179_search_chunk_usefulness.sql +33 -0
- package/migrations/180_one_active_claim_per_session.sql +54 -0
- package/migrations/181_cost_log_skill_name.sql +33 -0
- package/migrations/184_claim_release_requested.sql +25 -0
- package/migrations/185_module_upstreaming_goal_wiring.sql +59 -0
- package/migrations/187_goal_sort_order.sql +30 -0
- package/migrations/187_tasks_kind_check_add_verify.sql +21 -0
- package/migrations/README.md +88 -0
- package/migrations/core_188_goal_visibility_and_membership_requests.sql +71 -0
- package/migrations/core_189_core_upgrades_ledger.sql +37 -0
- package/migrations/core_189_credit_log_task_id_index.sql +19 -0
- package/migrations/core_190_rebuild_claimable_task_views.sql +71 -0
- package/migrations/instance/018_pms_v3_planning_seed.sql +131 -0
- package/migrations/instance/080_gds_v4_planning_seed.sql +75 -0
- package/migrations/instance/110_medusa_planning_seed.sql +70 -0
- package/migrations/instance/120_bongos_v1_planning_seed.sql +69 -0
- package/migrations/instance/144_bongos_v1_module_system_criterion.sql +26 -0
- package/migrations/instance/159_bongos_v1_goal_hierarchy_criterion.sql +29 -0
- package/migrations/instance/172_v2_world_planning_seed.sql +163 -0
- package/migrations/instance/173_bongos_v1_c7_core_modularized.sql +33 -0
- package/migrations/instance/182_gdsv4_bongos_consolidation.sql +132 -0
- package/migrations/instance/183_gdsv4_carryover_themed_goals.sql +116 -0
- package/migrations/instance/186_bongos_v1_governance_planning_seed.sql +69 -0
- package/modules/autonomy/CLAUDE.md +49 -0
- package/modules/autonomy/db.js +50 -0
- package/modules/autonomy/module.json +13 -0
- package/modules/autonomy/pollers/routine-timers.js +146 -0
- package/modules/autonomy/routes/autonomy.js +37 -0
- package/modules/builder-settings/CLAUDE.md +58 -0
- package/modules/builder-settings/builder-needs.js +115 -0
- package/modules/builder-settings/db.js +168 -0
- package/modules/builder-settings/display-name.js +84 -0
- package/modules/builder-settings/event-sound-prefs.js +169 -0
- package/modules/builder-settings/interaction-prefs.js +201 -0
- package/modules/builder-settings/model-alloc-prefs.js +147 -0
- package/modules/builder-settings/module.json +10 -0
- package/modules/builder-settings/render-prefs.js +103 -0
- package/modules/builder-settings/routes/settings.js +417 -0
- package/modules/builder-settings/settings.js +52 -0
- package/modules/builder-settings/skill-prefs.js +196 -0
- package/modules/builder-settings/sound-prefs.js +178 -0
- package/modules/builder-settings/wandering-prefs.js +282 -0
- package/modules/dev-box/CLAUDE.md +38 -0
- package/modules/dev-box/box-access.js +275 -0
- package/modules/dev-box/box-credential.js +94 -0
- package/modules/dev-box/box-onboard.js +486 -0
- package/modules/dev-box/boxes.js +842 -0
- package/modules/dev-box/db.js +39 -0
- package/modules/dev-box/module.json +14 -0
- package/modules/dev-box/routes/box.js +977 -0
- package/modules/discord/CLAUDE.md +50 -0
- package/modules/discord/auth.js +54 -0
- package/modules/discord/bug-attachments.js +210 -0
- package/modules/discord/db.js +96 -0
- package/modules/discord/discord-approvals.js +145 -0
- package/modules/discord/discord-audit.js +29 -0
- package/modules/discord/discord-bot.js +545 -0
- package/modules/discord/discord-bugs.js +257 -0
- package/modules/discord/discord-channels.js +412 -0
- package/modules/discord/discord-inbound.js +147 -0
- package/modules/discord/discord-message-buffer.js +54 -0
- package/modules/discord/discord-reaction.js +186 -0
- package/modules/discord/discord-role-sync.js +318 -0
- package/modules/discord/module.json +14 -0
- package/modules/discord/pollers/discord-bot.js +19 -0
- package/modules/discord/routes/bug-attachments.js +44 -0
- package/modules/discord/routes/discord.js +102 -0
- package/modules/discord/ship-broadcast.js +78 -0
- package/modules/discord/webhook.js +74 -0
- package/modules/economy/CLAUDE.md +48 -0
- package/modules/economy/achievements.js +594 -0
- package/modules/economy/cost-classify.js +331 -0
- package/modules/economy/cost-summary-shape.js +90 -0
- package/modules/economy/cost.js +438 -0
- package/modules/economy/credits.js +430 -0
- package/modules/economy/migrations/economy_001_fix_gds_shipper_description.sql +91 -0
- package/modules/economy/module.json +10 -0
- package/modules/economy/reward.js +61 -0
- package/modules/economy/routes/cost.js +97 -0
- package/modules/economy/routes/leaderboard.js +26 -0
- package/modules/economy/routes/reward.js +42 -0
- package/modules/economy/streak.js +285 -0
- package/modules/grading/CLAUDE.md +42 -0
- package/modules/grading/db.js +39 -0
- package/modules/grading/grader-rubric.json +151 -0
- package/modules/grading/grader-workers/efficiency.js +213 -0
- package/modules/grading/grader-workers/extract-json.js +80 -0
- package/modules/grading/grader-workers/fence.js +100 -0
- package/modules/grading/grader-workers/hacker.js +239 -0
- package/modules/grading/grader-workers/index.js +183 -0
- package/modules/grading/grader-workers/narc.js +207 -0
- package/modules/grading/grader-workers/quality.js +198 -0
- package/modules/grading/grader-workers/rubric.js +20 -0
- package/modules/grading/grader-workers/worker-prompt.js +89 -0
- package/modules/grading/grader-workers/worker-verdict.js +50 -0
- package/modules/grading/grader.js +1790 -0
- package/modules/grading/module.json +12 -0
- package/modules/grading/routes/grade.js +51 -0
- package/modules/hall-ui/CLAUDE.md +61 -0
- package/modules/hall-ui/module.json +14 -0
- package/modules/hall-ui/public/atlas.html +180 -0
- package/modules/hall-ui/public/atlas.js +336 -0
- package/modules/hall-ui/public/box-panel.js +423 -0
- package/modules/hall-ui/public/brand-apply.js +117 -0
- package/modules/hall-ui/public/builders.js +3028 -0
- package/modules/hall-ui/public/chime.wav +0 -0
- package/modules/hall-ui/public/copy-on-click.js +174 -0
- package/modules/hall-ui/public/cursors/arrow.png +0 -0
- package/modules/hall-ui/public/cursors/hand-pointer.png +0 -0
- package/modules/hall-ui/public/cursors/magnifier-out.png +0 -0
- package/modules/hall-ui/public/cursors/magnifier.png +0 -0
- package/modules/hall-ui/public/diagram-viewer.css +125 -0
- package/modules/hall-ui/public/diagram-viewer.js +330 -0
- package/modules/hall-ui/public/diagrams.html +113 -0
- package/modules/hall-ui/public/dom-utils.js +212 -0
- package/modules/hall-ui/public/drachmae.html +68 -0
- package/modules/hall-ui/public/drachmae.js +136 -0
- package/modules/hall-ui/public/gate.html +143 -0
- package/modules/hall-ui/public/gate.js +228 -0
- package/modules/hall-ui/public/goals-page.js +1297 -0
- package/modules/hall-ui/public/goals.html +376 -0
- package/modules/hall-ui/public/goals.js +119 -0
- package/modules/hall-ui/public/hall-widgets.js +189 -0
- package/modules/hall-ui/public/harbor.html +167 -0
- package/modules/hall-ui/public/harbor.js +335 -0
- package/modules/hall-ui/public/index.html +116 -0
- package/modules/hall-ui/public/instances-panel.js +172 -0
- package/modules/hall-ui/public/md-reader.js +234 -0
- package/modules/hall-ui/public/modules.html +119 -0
- package/modules/hall-ui/public/modules.js +154 -0
- package/modules/hall-ui/public/new-project-wizard.js +186 -0
- package/modules/hall-ui/public/not-ready.html +48 -0
- package/modules/hall-ui/public/pair.html +119 -0
- package/modules/hall-ui/public/pair.js +132 -0
- package/modules/hall-ui/public/primer.css +404 -0
- package/modules/hall-ui/public/primer.html +85 -0
- package/modules/hall-ui/public/primer.js +641 -0
- package/modules/hall-ui/public/profile.html +85 -0
- package/modules/hall-ui/public/profile.js +236 -0
- package/modules/hall-ui/public/ranks.html +69 -0
- package/modules/hall-ui/public/ranks.js +206 -0
- package/modules/hall-ui/public/roadmap.html +209 -0
- package/modules/hall-ui/public/roadmap.js +375 -0
- package/modules/hall-ui/public/sessions.html +92 -0
- package/modules/hall-ui/public/sessions.js +222 -0
- package/modules/hall-ui/public/settings.html +640 -0
- package/modules/hall-ui/public/settings.js +1219 -0
- package/modules/hall-ui/public/shell.js +495 -0
- package/modules/hall-ui/public/style.css +1748 -0
- package/modules/hall-ui/public/task-detail.js +253 -0
- package/modules/hall-ui/public/task.html +83 -0
- package/modules/hall-ui/public/task.js +326 -0
- package/modules/hall-ui/public/watch.html +333 -0
- package/modules/hall-ui/public/watch.js +859 -0
- package/modules/hall-ui/public/work.html +469 -0
- package/modules/hall-ui/public/work.js +1292 -0
- package/modules/ideas/CLAUDE.md +37 -0
- package/modules/ideas/blockers.js +100 -0
- package/modules/ideas/inbox.js +459 -0
- package/modules/ideas/module.json +10 -0
- package/modules/ideas/routes/blockers.js +120 -0
- package/modules/ideas/routes/inbox.js +230 -0
- package/modules/lifecycle/CLAUDE.md +63 -0
- package/modules/lifecycle/conflict-resolve.js +436 -0
- package/modules/lifecycle/db.js +4970 -0
- package/modules/lifecycle/done-when.js +355 -0
- package/modules/lifecycle/github-push.js +969 -0
- package/modules/lifecycle/goal-conflicts.js +133 -0
- package/modules/lifecycle/hierarchy.js +104 -0
- package/modules/lifecycle/lifecycle.js +58 -0
- package/modules/lifecycle/merge-lock.js +261 -0
- package/modules/lifecycle/migrations/lifecycle_001_goal_first_leads.sql +28 -0
- package/modules/lifecycle/migrations/lifecycle_002_backfill_orphan_task_goals.sql +36 -0
- package/modules/lifecycle/module.json +13 -0
- package/modules/lifecycle/pollers/publish-reconciler.js +20 -0
- package/modules/lifecycle/publish-reconciler.js +418 -0
- package/modules/lifecycle/routes/analytics.js +63 -0
- package/modules/lifecycle/routes/claims.js +506 -0
- package/modules/lifecycle/routes/dependencies.js +82 -0
- package/modules/lifecycle/routes/done-when.js +136 -0
- package/modules/lifecycle/routes/gate-approvals.js +197 -0
- package/modules/lifecycle/routes/goals.js +1419 -0
- package/modules/lifecycle/routes/lifecycle.js +43 -0
- package/modules/lifecycle/routes/tasks.js +1703 -0
- package/modules/lifecycle/routes/versions.js +128 -0
- package/modules/lifecycle/ship-card.js +505 -0
- package/modules/lifecycle/ship-preflight.js +225 -0
- package/modules/lifecycle/task-classifier.js +512 -0
- package/modules/lifecycle/version-close.js +106 -0
- package/modules/memory/CLAUDE.md +40 -0
- package/modules/memory/learnings.js +275 -0
- package/modules/memory/memory.js +572 -0
- package/modules/memory/module.json +12 -0
- package/modules/memory/routes/learnings.js +90 -0
- package/modules/memory/routes/memory.js +916 -0
- package/modules/memory/routes/search.js +188 -0
- package/modules/memory/search-chunker.js +252 -0
- package/modules/memory/search.js +320 -0
- package/modules/onboarding/CLAUDE.md +55 -0
- package/modules/onboarding/approval-broadcast.js +59 -0
- package/modules/onboarding/db.js +54 -0
- package/modules/onboarding/module.json +10 -0
- package/modules/onboarding/newcomer-restock.js +212 -0
- package/modules/onboarding/onboarding-state.js +532 -0
- package/modules/onboarding/onboarding.js +508 -0
- package/modules/onboarding/port.js +63 -0
- package/modules/onboarding/routes/access-requests.js +208 -0
- package/modules/onboarding/routes/onboarding.js +54 -0
- package/modules/security/CLAUDE.md +44 -0
- package/modules/security/module.json +10 -0
- package/modules/security/routes/reports.js +251 -0
- package/modules/security/secret-scrub.js +201 -0
- package/modules/security/security.js +294 -0
- package/modules/sessions/CLAUDE.md +39 -0
- package/modules/sessions/bfg.js +357 -0
- package/modules/sessions/db.js +326 -0
- package/modules/sessions/module.json +10 -0
- package/modules/sessions/pulse.js +149 -0
- package/modules/sessions/routes/sessions.js +331 -0
- package/modules/status-ui/CLAUDE.md +47 -0
- package/modules/status-ui/module.json +14 -0
- package/modules/status-ui/public/README.md +29 -0
- package/modules/status-ui/public/cursors/arrow.png +0 -0
- package/modules/status-ui/public/cursors/hand-pointer.png +0 -0
- package/modules/status-ui/public/index.html +363 -0
- package/modules/status-ui/public/snapshots/.gitkeep +0 -0
- package/modules/status-ui/public/status.js +1375 -0
- package/modules/status-ui/public/style.css +1342 -0
- package/package-lock.json +975 -0
- package/package.json +28 -0
- package/public-docs/index.html +35 -0
- package/public-docs/redoc.standalone.js +1838 -0
- package/public-docs/redoc.standalone.js.LICENSE.txt +102 -0
- package/public-landing/buddha.png +0 -0
- package/public-landing/create.html +868 -0
- package/public-landing/index.html +168 -0
- package/scripts/bongos-mcp.js +28 -0
- package/scripts/cron/style_guide_audit.sh +134 -0
- package/scripts/discord/README.md +52 -0
- package/scripts/discord/lib.js +80 -0
- package/scripts/discord/post.js +51 -0
- package/scripts/gds/CLAUDE.md +144 -0
- package/scripts/gds/abandon.js +58 -0
- package/scripts/gds/adopt-detect.js +123 -0
- package/scripts/gds/adopt-import.js +111 -0
- package/scripts/gds/adopt-preflight.js +121 -0
- package/scripts/gds/api.js +78 -0
- package/scripts/gds/architect-audit.js +288 -0
- package/scripts/gds/art-stage.js +152 -0
- package/scripts/gds/audit-authorship.sh +243 -0
- package/scripts/gds/audit-deps.js +121 -0
- package/scripts/gds/audit-exports.js +128 -0
- package/scripts/gds/audit-replay.sh +161 -0
- package/scripts/gds/audit-ships.js +251 -0
- package/scripts/gds/autonomy-gate.js +135 -0
- package/scripts/gds/backfill-cost.js +165 -0
- package/scripts/gds/backfill-sessions.js +351 -0
- package/scripts/gds/backfill-task-rewards.js +408 -0
- package/scripts/gds/backup.js +94 -0
- package/scripts/gds/bfg-principal-token.js +65 -0
- package/scripts/gds/box-auth-check.js +160 -0
- package/scripts/gds/box-connect-lib.js +453 -0
- package/scripts/gds/box.js +1258 -0
- package/scripts/gds/build-bongos.js +94 -0
- package/scripts/gds/capture.js +123 -0
- package/scripts/gds/cf-tunnel.js +419 -0
- package/scripts/gds/ci-grade.js +82 -0
- package/scripts/gds/claim-recall.js +112 -0
- package/scripts/gds/claim.js +333 -0
- package/scripts/gds/classify-discipline.js +153 -0
- package/scripts/gds/claude-materialize.js +176 -0
- package/scripts/gds/cleanup-orphans.js +74 -0
- package/scripts/gds/cli-lib.js +518 -0
- package/scripts/gds/code.js +101 -0
- package/scripts/gds/codemod-rename-src-gds.js +145 -0
- package/scripts/gds/conductor-dispatch.js +426 -0
- package/scripts/gds/context-pack.js +228 -0
- package/scripts/gds/coreB-carve-proof.sh +716 -0
- package/scripts/gds/cost.js +47 -0
- package/scripts/gds/db-backup-nightly.sh +160 -0
- package/scripts/gds/db-backup-offsite.sh +152 -0
- package/scripts/gds/demote.js +40 -0
- package/scripts/gds/design-sync.js +62 -0
- package/scripts/gds/diagnose-achievements.js +118 -0
- package/scripts/gds/diagram-facts.js +319 -0
- package/scripts/gds/discipline-modes.json +25 -0
- package/scripts/gds/discord-channels.js +66 -0
- package/scripts/gds/do-api.js +176 -0
- package/scripts/gds/docs-entropy.js +403 -0
- package/scripts/gds/doctor.js +389 -0
- package/scripts/gds/feedback-latest.js +94 -0
- package/scripts/gds/fetch-art-key.js +106 -0
- package/scripts/gds/fetch-sound-prefs.js +88 -0
- package/scripts/gds/figma-design-sync.js +61 -0
- package/scripts/gds/fitness.js +1446 -0
- package/scripts/gds/gate-review.js +322 -0
- package/scripts/gds/gating.js +325 -0
- package/scripts/gds/gds-db-backup.service +24 -0
- package/scripts/gds/gds-db-backup.timer +20 -0
- package/scripts/gds/gds-db-offsite.service +29 -0
- package/scripts/gds/gds-db-offsite.timer +18 -0
- package/scripts/gds/gen-api-client.js +508 -0
- package/scripts/gds/gen-api-docs.js +1037 -0
- package/scripts/gds/gen-atlas.js +366 -0
- package/scripts/gds/gen-diagrams.js +608 -0
- package/scripts/gds/gen-file-map.js +196 -0
- package/scripts/gds/gen-repo-map.js +519 -0
- package/scripts/gds/gen-session-index.js +210 -0
- package/scripts/gds/git-merge-regen.js +147 -0
- package/scripts/gds/grade-smoke.js +205 -0
- package/scripts/gds/hooks/pre-push.js +169 -0
- package/scripts/gds/http-api-client.js +88 -0
- package/scripts/gds/init.js +903 -0
- package/scripts/gds/install-git-hooks.js +114 -0
- package/scripts/gds/key-card.js +213 -0
- package/scripts/gds/key-status.js +126 -0
- package/scripts/gds/land-watch.js +168 -0
- package/scripts/gds/learning-capture.js +145 -0
- package/scripts/gds/lib.sh +44 -0
- package/scripts/gds/linkify-refs.js +473 -0
- package/scripts/gds/local-preview-lib.js +159 -0
- package/scripts/gds/local-preview.js +95 -0
- package/scripts/gds/login.js +225 -0
- package/scripts/gds/main-audit.js +279 -0
- package/scripts/gds/me.js +88 -0
- package/scripts/gds/memory-map.js +174 -0
- package/scripts/gds/merge-lock.js +71 -0
- package/scripts/gds/migration-namespace.js +200 -0
- package/scripts/gds/mirror-lineage-check.js +319 -0
- package/scripts/gds/mirror-redact.js +305 -0
- package/scripts/gds/module.js +482 -0
- package/scripts/gds/newcomer-floor.config.json +13 -0
- package/scripts/gds/newcomer-floor.js +415 -0
- package/scripts/gds/newcomer-floor.templates.json +86 -0
- package/scripts/gds/newcomer-floor.test.js +235 -0
- package/scripts/gds/next-number.js +163 -0
- package/scripts/gds/oauth-secret.js +197 -0
- package/scripts/gds/onboard.js +217 -0
- package/scripts/gds/onboarding-analyze.js +226 -0
- package/scripts/gds/onboarding-config.js +178 -0
- package/scripts/gds/onboarding-ship.js +92 -0
- package/scripts/gds/package-core.js +684 -0
- package/scripts/gds/paste-token.js +131 -0
- package/scripts/gds/portability-smoke-art.sh +85 -0
- package/scripts/gds/portability-smoke-memory.sh +147 -0
- package/scripts/gds/provision.js +1324 -0
- package/scripts/gds/publish-manifest.js +307 -0
- package/scripts/gds/pulse.js +309 -0
- package/scripts/gds/push-main.js +45 -0
- package/scripts/gds/read-session-export.js +359 -0
- package/scripts/gds/reauth.js +149 -0
- package/scripts/gds/recall.js +135 -0
- package/scripts/gds/release.js +71 -0
- package/scripts/gds/render-ideas.js +173 -0
- package/scripts/gds/repo-metrics.js +363 -0
- package/scripts/gds/resolve-skill-model.js +57 -0
- package/scripts/gds/run-routine.js +197 -0
- package/scripts/gds/run-unit-tests.js +178 -0
- package/scripts/gds/sandbox-stage.js +653 -0
- package/scripts/gds/search-ingest-db.js +209 -0
- package/scripts/gds/search-ingest-md.js +225 -0
- package/scripts/gds/security-baseline-check.sh +180 -0
- package/scripts/gds/seed-adopt-tasks.js +75 -0
- package/scripts/gds/seed-api-contract-goal-tasks.js +141 -0
- package/scripts/gds/seed-bongos-app-tasks.js +294 -0
- package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +81 -0
- package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +100 -0
- package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +307 -0
- package/scripts/gds/seed-bongos-module-system-tasks.js +346 -0
- package/scripts/gds/seed-bongos-tasks.js +214 -0
- package/scripts/gds/seed-gds-v4-tasks.js +624 -0
- package/scripts/gds/seed-governance-tasks.js +340 -0
- package/scripts/gds/seed-medusa-tasks.js +440 -0
- package/scripts/gds/seed-module-upstreaming.js +219 -0
- package/scripts/gds/seed-productization-tasks.js +235 -0
- package/scripts/gds/seed-provisioning-tasks.js +83 -0
- package/scripts/gds/seed-staging.sh +104 -0
- package/scripts/gds/seed-v2-world-tasks.js +283 -0
- package/scripts/gds/seed-v3-tasks.js +1981 -0
- package/scripts/gds/session-cost.js +393 -0
- package/scripts/gds/session-digest.js +179 -0
- package/scripts/gds/session-eval.js +576 -0
- package/scripts/gds/session.js +404 -0
- package/scripts/gds/setup.js +504 -0
- package/scripts/gds/shell.js +100 -0
- package/scripts/gds/ship.js +3618 -0
- package/scripts/gds/smoke-batch-claim.sh +213 -0
- package/scripts/gds/smoke-batch-release.sh +296 -0
- package/scripts/gds/smoke-box.sh +150 -0
- package/scripts/gds/smoke-claim-consistency.sh +212 -0
- package/scripts/gds/smoke-dependencies.sh +84 -0
- package/scripts/gds/smoke-gds.js +125 -0
- package/scripts/gds/smoke-write.sh +168 -0
- package/scripts/gds/start.js +782 -0
- package/scripts/gds/status.js +365 -0
- package/scripts/gds/triage.js +366 -0
- package/scripts/gds/upgrade.js +421 -0
- package/scripts/gds/validate-design.js +254 -0
- package/scripts/gds/version-close.js +549 -0
- package/scripts/migrate.sh +183 -0
- package/scripts/migrate_cost_ledger.sh +178 -0
- package/scripts/public-mirror-export.js +291 -0
- package/scripts/render-diagrams.sh +88 -0
- package/scripts/security/dep-audit.js +276 -0
- package/scripts/setup-builder.js +274 -0
- package/scripts/setup-builder.sh +28 -0
- package/scripts/snapshots/backfill-history.mjs +292 -0
- package/scripts/snapshots/maybe-render-on-deploy.sh +66 -0
- package/scripts/snapshots/render-pre-art-eras.mjs +329 -0
- package/scripts/snapshots/render-world.mjs +322 -0
- package/scripts/status-mirror-sync.js +192 -0
- package/scripts/status-probe.mjs +185 -0
- package/server.js +212 -0
- package/src/asset-version.js +71 -0
- package/src/bongos/CLAUDE.md +64 -0
- package/src/bongos/api-errors.js +281 -0
- package/src/bongos/api-path-404.js +67 -0
- package/src/bongos/api-prefix.js +38 -0
- package/src/bongos/app-pair.js +172 -0
- package/src/bongos/auth.js +979 -0
- package/src/bongos/cascade-dispatch.js +123 -0
- package/src/bongos/db-kernel.js +252 -0
- package/src/bongos/db.js +911 -0
- package/src/bongos/goal-scope-check.js +120 -0
- package/src/bongos/hierarchy-config.js +189 -0
- package/src/bongos/live-channel.js +145 -0
- package/src/bongos/llm-cache.js +260 -0
- package/src/bongos/llm-pricing.js +220 -0
- package/src/bongos/metrics.js +286 -0
- package/src/bongos/middleware/audit.js +274 -0
- package/src/bongos/middleware/error-envelope.js +93 -0
- package/src/bongos/middleware/rate-limit.js +195 -0
- package/src/bongos/module-scope-map.js +271 -0
- package/src/bongos/optimizer.js +166 -0
- package/src/bongos/path-match.js +47 -0
- package/src/bongos/permission-path-check.js +248 -0
- package/src/bongos/pool.js +55 -0
- package/src/bongos/repo-info.js +91 -0
- package/src/bongos/route-rank-check.js +420 -0
- package/src/bongos/routes/CLAUDE.md +43 -0
- package/src/bongos/routes/_helpers.js +369 -0
- package/src/bongos/routes/audit-log.js +59 -0
- package/src/bongos/routes/auth.js +755 -0
- package/src/bongos/routes/backup.js +104 -0
- package/src/bongos/routes/builders.js +526 -0
- package/src/bongos/routes/healthz.js +16 -0
- package/src/bongos/routes/instance.js +129 -0
- package/src/bongos/routes/live.js +125 -0
- package/src/bongos/routes/llm-cache.js +119 -0
- package/src/bongos/routes/me.js +380 -0
- package/src/bongos/routes/modules.js +131 -0
- package/src/bongos/routes/optimizer.js +54 -0
- package/src/bongos/routes/public.js +476 -0
- package/src/bongos/routes/security.js +207 -0
- package/src/bongos/routes.js +166 -0
- package/src/bongos/secret-box.js +177 -0
- package/src/bongos/sensitive-surfaces.js +30 -0
- package/src/bongos/serve-internal.js +889 -0
- package/src/bongos/uptime-poller.js +90 -0
- package/src/bongos-downloads.js +70 -0
- package/src/branding.js +182 -0
- package/src/build-info.js +77 -0
- package/src/devbox-downloads.js +67 -0
- package/src/instance-config.js +200 -0
- package/src/module-api.js +366 -0
- package/src/module-loader/loader.js +268 -0
- package/src/module-loader/manifest-schema.js +140 -0
- package/src/module-loader/provenance.js +28 -0
- package/src/module-loader/semver.js +100 -0
- package/src/module-seams.js +291 -0
- package/src/modules.js +254 -0
- package/src/platform-server.js +135 -0
- package/src/ui/adapters/claude-design/index.js +333 -0
- package/src/ui/adapters/figma/index.js +328 -0
- package/tests/abandon_task.mjs +138 -0
- package/tests/achievements_reconcile.mjs +167 -0
- package/tests/adopt_detect.mjs +141 -0
- package/tests/adopt_import.mjs +132 -0
- package/tests/adopt_preflight.mjs +105 -0
- package/tests/anti_grid.mjs +89 -0
- package/tests/api_client.mjs +231 -0
- package/tests/api_docs.mjs +283 -0
- package/tests/api_error_envelope_buildcheck.mjs +56 -0
- package/tests/api_error_envelope_middleware.mjs +99 -0
- package/tests/api_error_registry.mjs +108 -0
- package/tests/api_pagination_contract.mjs +51 -0
- package/tests/api_path_404.mjs +96 -0
- package/tests/app_pair.mjs +168 -0
- package/tests/architect.mjs +140 -0
- package/tests/art_key.mjs +121 -0
- package/tests/art_stage.mjs +121 -0
- package/tests/asset_version.mjs +94 -0
- package/tests/atlas.mjs +69 -0
- package/tests/audit_deps.mjs +74 -0
- package/tests/audit_middleware.mjs +385 -0
- package/tests/auth_admission_gate.mjs +164 -0
- package/tests/auth_anthropic_identity.mjs +95 -0
- package/tests/auth_duplicate_cookie.mjs +56 -0
- package/tests/auth_error_brand.mjs +77 -0
- package/tests/auth_flow_slice1.mjs +223 -0
- package/tests/auth_inactive_builder.mjs +94 -0
- package/tests/auth_page_gate.mjs +92 -0
- package/tests/auth_session_ttl.mjs +155 -0
- package/tests/autonomous_fit_protected_paths.mjs +115 -0
- package/tests/autonomy_gate.mjs +85 -0
- package/tests/autotile_variants.mjs +256 -0
- package/tests/autotile_xverify.mjs +133 -0
- package/tests/backfill_sessions.mjs +101 -0
- package/tests/backfill_task_rewards.mjs +152 -0
- package/tests/backup_cli.mjs +104 -0
- package/tests/bfg.mjs +327 -0
- package/tests/bfg_write.mjs +423 -0
- package/tests/bongos_box_connect.mjs +89 -0
- package/tests/bongos_dispatch.mjs +74 -0
- package/tests/bongos_downloads.mjs +118 -0
- package/tests/bongos_login.mjs +34 -0
- package/tests/box_access.mjs +186 -0
- package/tests/box_auth_check.mjs +114 -0
- package/tests/box_code_staleness.mjs +116 -0
- package/tests/box_connect_e2e.mjs +196 -0
- package/tests/box_cost.mjs +70 -0
- package/tests/box_dns_repoint.mjs +151 -0
- package/tests/box_host_keys.mjs +102 -0
- package/tests/box_onboard.mjs +317 -0
- package/tests/box_scope_session.mjs +115 -0
- package/tests/box_ship_permissions.mjs +71 -0
- package/tests/box_terminal_ssrf.mjs +90 -0
- package/tests/boxes.mjs +1255 -0
- package/tests/branding.mjs +88 -0
- package/tests/bug_attachments.mjs +189 -0
- package/tests/build_info.mjs +88 -0
- package/tests/builder_needs.mjs +99 -0
- package/tests/cap_newcomer_tasks.mjs +114 -0
- package/tests/cascade-dispatch.mjs +95 -0
- package/tests/cf_tunnel.mjs +459 -0
- package/tests/claim_recall.mjs +150 -0
- package/tests/claims_bind_session.mjs +47 -0
- package/tests/claude_materialize.mjs +148 -0
- package/tests/cli_box_scope.mjs +52 -0
- package/tests/cli_lib_formatters.mjs +87 -0
- package/tests/cli_token_reissue.mjs +147 -0
- package/tests/client_bundle_route.mjs +47 -0
- package/tests/cloud_bongos_pack.mjs +85 -0
- package/tests/conductor.mjs +496 -0
- package/tests/confirm_attribution.mjs +156 -0
- package/tests/conflict_resolve.mjs +462 -0
- package/tests/context_pack.mjs +240 -0
- package/tests/cost.mjs +94 -0
- package/tests/cost_audit.mjs +122 -0
- package/tests/cost_budget_status.mjs +78 -0
- package/tests/cost_reconcile.mjs +102 -0
- package/tests/cost_summary_shape.mjs +94 -0
- package/tests/credit_grant.mjs +376 -0
- package/tests/criterion_progress.mjs +220 -0
- package/tests/criterion_proposal.mjs +109 -0
- package/tests/criterion_ref_parse.mjs +53 -0
- package/tests/currency_label.mjs +119 -0
- package/tests/day_cycle.mjs +197 -0
- package/tests/dependencies_migration.mjs +77 -0
- package/tests/dependencies_polymorphic.mjs +212 -0
- package/tests/deploy_instance.mjs +78 -0
- package/tests/devbox_downloads.mjs +122 -0
- package/tests/diff_derived_signals.mjs +115 -0
- package/tests/discord_approvals.mjs +174 -0
- package/tests/discord_autojoin.mjs +158 -0
- package/tests/discord_bot.mjs +94 -0
- package/tests/discord_bugs.mjs +297 -0
- package/tests/discord_channels.mjs +337 -0
- package/tests/discord_foundation.mjs +76 -0
- package/tests/discord_inbound.mjs +190 -0
- package/tests/discord_message_buffer.mjs +87 -0
- package/tests/discord_oauth.mjs +55 -0
- package/tests/discord_reaction.mjs +170 -0
- package/tests/discord_role_sync.mjs +151 -0
- package/tests/display_name.mjs +123 -0
- package/tests/dns_preflight.mjs +74 -0
- package/tests/event_sound_prefs.mjs +194 -0
- package/tests/eviction_policy.mjs +279 -0
- package/tests/figma_adapter.mjs +199 -0
- package/tests/file_map.mjs +91 -0
- package/tests/first_admin_bootstrap.mjs +40 -0
- package/tests/fitness.mjs +435 -0
- package/tests/fitness_two_root.mjs +104 -0
- package/tests/fixtures/session-506-digest.json +34 -0
- package/tests/gate_approvals.mjs +451 -0
- package/tests/gate_review.mjs +152 -0
- package/tests/git_merge_regen.mjs +151 -0
- package/tests/github_push_ancestry.mjs +119 -0
- package/tests/github_push_land_proof.mjs +127 -0
- package/tests/github_push_merge_driver.mjs +175 -0
- package/tests/goal_abuse_matrix.mjs +187 -0
- package/tests/goal_achievement.mjs +146 -0
- package/tests/goal_conflicts.mjs +305 -0
- package/tests/goal_dependencies_read.mjs +73 -0
- package/tests/goal_member_roles.mjs +420 -0
- package/tests/goal_membership_requests.mjs +332 -0
- package/tests/goal_routes.mjs +203 -0
- package/tests/goal_scope_check.mjs +167 -0
- package/tests/goal_tier.mjs +312 -0
- package/tests/goal_wall_proof.mjs +112 -0
- package/tests/grade_attempts.mjs +73 -0
- package/tests/grade_attribution.mjs +117 -0
- package/tests/grade_diff_hash.mjs +191 -0
- package/tests/grade_server_authoritative.mjs +305 -0
- package/tests/grade_unavailable_display.mjs +66 -0
- package/tests/grader.mjs +1960 -0
- package/tests/grader_bypass.mjs +57 -0
- package/tests/grader_panel.mjs +252 -0
- package/tests/grader_prompt_fencing.mjs +192 -0
- package/tests/helpers.mjs +52 -0
- package/tests/hierarchy-config.mjs +81 -0
- package/tests/init.mjs +463 -0
- package/tests/instance_config.mjs +76 -0
- package/tests/instance_manifest.mjs +110 -0
- package/tests/interaction_prefs.mjs +72 -0
- package/tests/key-card.mjs +110 -0
- package/tests/key-status.mjs +45 -0
- package/tests/land_watch.mjs +115 -0
- package/tests/lifecycle-card.mjs +145 -0
- package/tests/lifecycle_breakdown_view.mjs +236 -0
- package/tests/linkify_refs.mjs +264 -0
- package/tests/live_channel.mjs +128 -0
- package/tests/live_sse.mjs +122 -0
- package/tests/llm-cache-route.mjs +110 -0
- package/tests/llm-cache.mjs +140 -0
- package/tests/llm-pricing.mjs +152 -0
- package/tests/local_preview.mjs +136 -0
- package/tests/main_audit.mjs +137 -0
- package/tests/memory_isolation.mjs +431 -0
- package/tests/memory_map.mjs +107 -0
- package/tests/memory_pull.mjs +429 -0
- package/tests/merge_lease.mjs +100 -0
- package/tests/merge_lock.mjs +312 -0
- package/tests/metrics.mjs +147 -0
- package/tests/migration_allocation.mjs +146 -0
- package/tests/migration_namespace.mjs +185 -0
- package/tests/migrations_fresh_replay_guard.mjs +38 -0
- package/tests/mirror_lineage_fulltree.mjs +45 -0
- package/tests/mirror_lineage_proof.mjs +72 -0
- package/tests/mirror_redact.mjs +193 -0
- package/tests/model_alloc_prefs.mjs +63 -0
- package/tests/module-scope-map.mjs +88 -0
- package/tests/module_api.mjs +110 -0
- package/tests/module_cli.mjs +292 -0
- package/tests/module_contributions.mjs +148 -0
- package/tests/module_loader.mjs +286 -0
- package/tests/module_manifest.mjs +194 -0
- package/tests/module_owned_tests.mjs +105 -0
- package/tests/module_provenance.mjs +34 -0
- package/tests/module_route_rank.mjs +147 -0
- package/tests/module_seams.mjs +68 -0
- package/tests/modules.mjs +156 -0
- package/tests/modules_route.mjs +38 -0
- package/tests/newcomer_floor.mjs +17 -0
- package/tests/newcomer_restock.mjs +80 -0
- package/tests/next_number.mjs +154 -0
- package/tests/oauth_secret.mjs +60 -0
- package/tests/onboard.mjs +70 -0
- package/tests/onboarding_gate.mjs +267 -0
- package/tests/onboarding_observability.mjs +344 -0
- package/tests/onboarding_route_signals.mjs +175 -0
- package/tests/onboarding_state.mjs +346 -0
- package/tests/one_active_claim_per_session.mjs +111 -0
- package/tests/orphaned_claim_ship.mjs +135 -0
- package/tests/override_attribution.mjs +142 -0
- package/tests/override_request_ownership.mjs +235 -0
- package/tests/package_core.mjs +435 -0
- package/tests/parallel-load.mjs +402 -0
- package/tests/path_match.mjs +62 -0
- package/tests/permission_path.mjs +151 -0
- package/tests/platform_boot.mjs +167 -0
- package/tests/pre_compact.mjs +60 -0
- package/tests/preview_server.mjs +127 -0
- package/tests/profile_route.mjs +197 -0
- package/tests/provision.mjs +805 -0
- package/tests/provisioning_github_app_routes.mjs +98 -0
- package/tests/public_mirror_export.mjs +124 -0
- package/tests/public_task_resolver.mjs +112 -0
- package/tests/publish_branch_route.mjs +422 -0
- package/tests/publish_manifest.mjs +184 -0
- package/tests/publish_reconciler.mjs +728 -0
- package/tests/rank_gate.mjs +463 -0
- package/tests/rate_limit_public.mjs +217 -0
- package/tests/read_session_export.mjs +89 -0
- package/tests/recall_cli.mjs +82 -0
- package/tests/recall_hints.mjs +119 -0
- package/tests/recent_shipped_window.mjs +80 -0
- package/tests/regrade_eligibility.mjs +202 -0
- package/tests/render_prefs.mjs +122 -0
- package/tests/repo_map.mjs +92 -0
- package/tests/reward_gate.mjs +284 -0
- package/tests/route_rank_check.mjs +243 -0
- package/tests/route_validation.mjs +490 -0
- package/tests/routine_timers.mjs +72 -0
- package/tests/rubric_fixtures.mjs +140 -0
- package/tests/run_routine.mjs +69 -0
- package/tests/sandbox_stage.mjs +582 -0
- package/tests/scrubber_corpus.mjs +257 -0
- package/tests/search_chunker.mjs +209 -0
- package/tests/search_ingest.mjs +96 -0
- package/tests/search_ingest_db.mjs +88 -0
- package/tests/search_isolation.mjs +204 -0
- package/tests/search_route.mjs +95 -0
- package/tests/secret_box.mjs +189 -0
- package/tests/security_docs.mjs +186 -0
- package/tests/security_route.mjs +108 -0
- package/tests/served_paths_shipped.mjs +118 -0
- package/tests/session-cards.mjs +142 -0
- package/tests/session_506_regression.mjs +69 -0
- package/tests/session_caps.mjs +238 -0
- package/tests/session_cost.mjs +133 -0
- package/tests/session_digest.mjs +73 -0
- package/tests/session_eval.mjs +386 -0
- package/tests/session_index.mjs +105 -0
- package/tests/session_records.mjs +369 -0
- package/tests/session_search.mjs +78 -0
- package/tests/session_start_freshness.mjs +123 -0
- package/tests/setup_smoke.mjs +154 -0
- package/tests/ship_autolinkify.mjs +60 -0
- package/tests/ship_automerge_injection.mjs +174 -0
- package/tests/ship_broadcast_routing.mjs +125 -0
- package/tests/ship_broadcast_server.mjs +175 -0
- package/tests/ship_card.mjs +280 -0
- package/tests/ship_ci_deploy.mjs +374 -0
- package/tests/ship_preflight.mjs +368 -0
- package/tests/ship_premerge.mjs +75 -0
- package/tests/ship_resume.mjs +129 -0
- package/tests/ship_upload_skip.mjs +89 -0
- package/tests/ship_zero_commit.mjs +60 -0
- package/tests/single_host_hall.mjs +98 -0
- package/tests/skill_prefs.mjs +150 -0
- package/tests/smoke_preflight.mjs +66 -0
- package/tests/snapshot_picker.mjs +233 -0
- package/tests/sound_prefs.mjs +198 -0
- package/tests/sprite_facing.mjs +35 -0
- package/tests/status-probe.mjs +89 -0
- package/tests/status_backfill.mjs +94 -0
- package/tests/stop_refcheck.mjs +127 -0
- package/tests/streak.mjs +175 -0
- package/tests/subdomain_auth.mjs +58 -0
- package/tests/task_classifier_vocab.mjs +41 -0
- package/tests/task_create_idempotency.mjs +96 -0
- package/tests/task_goal_link.mjs +93 -0
- package/tests/task_ownership_gate.mjs +125 -0
- package/tests/terrain_picker.mjs +298 -0
- package/tests/touches_overlap.mjs +75 -0
- package/tests/triage_development.mjs +140 -0
- package/tests/turn_in_place.mjs +280 -0
- package/tests/upgrade.mjs +357 -0
- package/tests/verify_task_guard.mjs +64 -0
- package/tests/version_close.mjs +76 -0
- package/tests/versions_route.mjs +93 -0
- package/tests/walkability.mjs +188 -0
- package/tests/wandering_prefs.mjs +176 -0
- package/tests/worktree_disambiguation.mjs +105 -0
- package/tests/worktree_guard.mjs +90 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
-- 172_v2_world_planning_seed.sql
|
|
2
|
+
-- Land Builder #25's world-building planning package (idea_inbox 416-427),
|
|
3
|
+
-- reviewed + adjusted with Lars, folded into the existing product version V2.
|
|
4
|
+
-- Backed by task 1569 (source_ref V2-world-planning-1).
|
|
5
|
+
--
|
|
6
|
+
-- Decisions baked in here:
|
|
7
|
+
-- * World-building folds into V2 — NO new version row.
|
|
8
|
+
-- * The warp stays in V2 (criterion connected-warps + its tasks).
|
|
9
|
+
-- * The in-house map editor (criterion map-editor + 6 tasks) defers to V3.
|
|
10
|
+
-- * Engineering/server lanes are split from design/art lanes (carried by the
|
|
11
|
+
-- per-task module_key + requires_rank set in the companion seed script).
|
|
12
|
+
--
|
|
13
|
+
-- This migration handles DB scope-truth only:
|
|
14
|
+
-- 1. 4 goals (3 on V2, 1 on V3)
|
|
15
|
+
-- 2. 7 done_when_criteria (6 on V2, 1 on V3), parented to their goals
|
|
16
|
+
-- 3. V2 + V3 versions.done_when text
|
|
17
|
+
-- 4. +5 karma x7 to builder #25 (the proposer), mirroring ratify
|
|
18
|
+
-- 5. idea_inbox bookkeeping (416-424 resolved; 427 left open as the durable
|
|
19
|
+
-- world-expansion reference)
|
|
20
|
+
--
|
|
21
|
+
-- The 16 V2 + 6 V3 + 2 GDS-V4 tasks (with deps + criterion links) are created
|
|
22
|
+
-- by scripts/gds/seed-v2-world-tasks.js, run against the API after this deploys.
|
|
23
|
+
--
|
|
24
|
+
-- Idempotent: goals guarded by NOT EXISTS (version_id,title); criteria via
|
|
25
|
+
-- ON CONFLICT (version_id,criterion_id); karma via NOT EXISTS on a per-idea
|
|
26
|
+
-- reason marker; idea updates are naturally idempotent.
|
|
27
|
+
|
|
28
|
+
BEGIN;
|
|
29
|
+
|
|
30
|
+
-- Vanilla-safe guard (task 1264 / hardware-verify R63): everything below seeds
|
|
31
|
+
-- OTB *product* scope-truth (V2/V3 game-world planning). A vanilla Cloud Bongos
|
|
32
|
+
-- instance has no V2/V3 version rows — no migration seeds them (they were created
|
|
33
|
+
-- via the API on the OTB instance) — so each INSERT below would violate the
|
|
34
|
+
-- versions foreign key on a fresh DB. Wrap the seed in a DO block that no-ops
|
|
35
|
+
-- unless the product versions exist. (On the OTB instance this migration is
|
|
36
|
+
-- already recorded in schema_migrations and never re-runs; the guard only bites
|
|
37
|
+
-- on a fresh self-host DB — see docker-compose.yml / self-host.)
|
|
38
|
+
DO $seed$
|
|
39
|
+
BEGIN
|
|
40
|
+
IF NOT EXISTS (SELECT 1 FROM versions WHERE id IN ('V2','V3')) THEN
|
|
41
|
+
RAISE NOTICE '172: V2/V3 product versions absent — vanilla instance, skipping OTB world-planning seed.';
|
|
42
|
+
RETURN;
|
|
43
|
+
END IF;
|
|
44
|
+
|
|
45
|
+
-- ---------------------------------------------------------------------------
|
|
46
|
+
-- 1. Goals (module-scoped workspaces, ADR 0086). created_by = 1 (Archon land).
|
|
47
|
+
-- ---------------------------------------------------------------------------
|
|
48
|
+
INSERT INTO goals (version_id, title, description, scope_modules, status, created_by)
|
|
49
|
+
SELECT 'V2', 'World engine (multi-map runtime)',
|
|
50
|
+
'File-based maps, depth rendering, and per-map warp rooms. Engineering — touches protected game code (Metic+).',
|
|
51
|
+
ARRAY['game']::text[], 'open', 1
|
|
52
|
+
WHERE NOT EXISTS (SELECT 1 FROM goals WHERE version_id='V2' AND title='World engine (multi-map runtime)');
|
|
53
|
+
|
|
54
|
+
INSERT INTO goals (version_id, title, description, scope_modules, status, created_by)
|
|
55
|
+
SELECT 'V2', 'Olympia art set',
|
|
56
|
+
'Terrain, temple kit, and decor for Olympia on the locked 64-color palette. Design — art pipeline, open to any builder.',
|
|
57
|
+
ARRAY['art-pipeline']::text[], 'open', 1
|
|
58
|
+
WHERE NOT EXISTS (SELECT 1 FROM goals WHERE version_id='V2' AND title='Olympia art set');
|
|
59
|
+
|
|
60
|
+
INSERT INTO goals (version_id, title, description, scope_modules, status, created_by)
|
|
61
|
+
SELECT 'V2', 'Olympia vertical slice',
|
|
62
|
+
'Compose the walkable Olympia map from engine + art, second connected map, and score vs the reference.',
|
|
63
|
+
ARRAY['game']::text[], 'open', 1
|
|
64
|
+
WHERE NOT EXISTS (SELECT 1 FROM goals WHERE version_id='V2' AND title='Olympia vertical slice');
|
|
65
|
+
|
|
66
|
+
INSERT INTO goals (version_id, title, description, scope_modules, status, created_by)
|
|
67
|
+
SELECT 'V3', 'Map authoring & editor',
|
|
68
|
+
'In-house map editor that round-trips maps into the game. Deferred out of V2; depends on the V2 engine shipping first.',
|
|
69
|
+
ARRAY['game']::text[], 'open', 1
|
|
70
|
+
WHERE NOT EXISTS (SELECT 1 FROM goals WHERE version_id='V3' AND title='Map authoring & editor');
|
|
71
|
+
|
|
72
|
+
-- ---------------------------------------------------------------------------
|
|
73
|
+
-- 2. done_when_criteria, parented to the goals above. criterion_md text is
|
|
74
|
+
-- lifted verbatim from the ratified proposals (ideas 416-422).
|
|
75
|
+
-- ---------------------------------------------------------------------------
|
|
76
|
+
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, sort_order, goal_id)
|
|
77
|
+
VALUES
|
|
78
|
+
('V2', 'world-data',
|
|
79
|
+
E'**The world loads from per-map data files, not hardcoded arrays — one source feeds both client render and server collision.**\n\n*Why:* retires the hand-mirrored map twins (`public/game/world/map.js` ↔ `src/world/map.js`, today''s top drift risk) and makes hand-designed maps possible.\n\n- A documented JSON map format at `public/assets/maps/<id>.json` with layers: ground (dense, drives autotile), decoration, objects, overlay; plus structures, warps, spawns.\n- A single shared parse + collision module (`mapFormat.js`) used by client and server; no duplicated map data.\n- Collision is *derived* from layers + structure solid-cells (generalizes today''s blocking-terrain / blocking-object rule).\n- ADR 0012 invariant intact: objects never pollute the ground autotile picker.\n- Today''s 26×20 room round-trips through the new format with identical render + walkability.',
|
|
80
|
+
100, (SELECT id FROM goals WHERE version_id='V2' AND title='World engine (multi-map runtime)')),
|
|
81
|
+
|
|
82
|
+
('V2', 'walk-olympia',
|
|
83
|
+
E'**A player can walk the Olympia Sanctuary in-game at the fidelity of the reference art.**\n\n*Why:* the vertical slice that proves the whole art + rendering direction before any expansion.\n\n- Temple of Zeus, Temple of Hera, the Altis grove, the plaza, and the stadium frontage are present and recognizable from the reference sheets.\n- The camera follows the player and scrolls a map larger than the viewport (canvas no longer equals map size).\n- Movement stays client-predicted / server-authoritative.\n- The scene is staged on the sandbox and walkable end-to-end.',
|
|
84
|
+
200, (SELECT id FROM goals WHERE version_id='V2' AND title='Olympia vertical slice')),
|
|
85
|
+
|
|
86
|
+
('V2', 'depth-sort',
|
|
87
|
+
E'**Tall structures render with correct depth — the player passes behind their tops and in front of their bases.**\n\n*Why:* 3/4-tilt temples, columns, and statues look wrong under today''s flat depth-0/1 layering.\n\n- 2.5D y-sort: player-plane objects and all character sprites share `depth = base*1000 + footY`.\n- An always-above overlay band carries structure tops (column capitals, roof crowns).\n- Reconciled with the existing autotile + interior-tile transform render path.\n- No z-fighting within a single structure''s footprint.',
|
|
88
|
+
300, (SELECT id FROM goals WHERE version_id='V2' AND title='World engine (multi-map runtime)')),
|
|
89
|
+
|
|
90
|
+
('V2', 'connected-warps',
|
|
91
|
+
E'**At least two connected maps with working warps — the player crosses between areas server-authoritatively.**\n\n*Why:* the classic Pokémon world model (overworld → enterable complex) the reference implies.\n\n- `mapId` in player state; one Colyseus room instance per map; per-map seating + queue.\n- Warp points move the player between maps at named spawns.\n- The 100-cap becomes per-map (overworld overflow can''t block Olympia).\n- Warping into a full destination map degrades gracefully (queue handoff).',
|
|
92
|
+
400, (SELECT id FROM goals WHERE version_id='V2' AND title='World engine (multi-map runtime)')),
|
|
93
|
+
|
|
94
|
+
('V2', 'olympia-art-set',
|
|
95
|
+
E'**The Olympia art set exists and passes the rubric on the locked 64-color palette.**\n\n*Why:* the slice cannot render without the terrain, building, and decor assets.\n\n- Terrain: marble plaza / flagstone, stone & cliff, river / water, forest + palm, grass variants — as autotile families where they tile.\n- Temple building kit: walls, columns / colonnade, orange-tile roof slopes, steps — authored as Pattern-B continuous illustrations sliced to the structure registry.\n- Decor: Zeus / Hera statues, altar-with-fire, amphorae, fountains.\n- All members land in the packed atlas + manifest; `tests/autotile_xverify.mjs` stays green.',
|
|
96
|
+
500, (SELECT id FROM goals WHERE version_id='V2' AND title='Olympia art set')),
|
|
97
|
+
|
|
98
|
+
('V2', 'scored-vs-reference',
|
|
99
|
+
E'**The Olympia slice is scored against the reference images, and the reference becomes the durable target.**\n\n*Why:* closes the loop — proves the criterion set actually produced the intended look.\n\n- The four reference sheets are ingested into `art/references/` as the durable target.\n- `otb-design-review` scores the new tiles ≥ the rubric threshold.\n- A before/after writeup lands in `docs/reviews/` with side-by-side screenshots vs the reference.',
|
|
100
|
+
700, (SELECT id FROM goals WHERE version_id='V2' AND title='Olympia vertical slice')),
|
|
101
|
+
|
|
102
|
+
('V3', 'map-editor',
|
|
103
|
+
E'**A lightweight in-house map editor lets a builder author maps that round-trip into the game.**\n\n*Why:* hand-editing JSON for scenes the size of Olympia doesn''t scale.\n\n- Paint ground with *live autotile preview* (imports the game''s `terrain.js`/`autotile.js` picker — no new autotile code).\n- Place objects + multi-tile structures; set warps, spawns, collision.\n- Save a valid map file (validated by the same `mapFormat` validator), persisted via the deploy-safe path (branch/PR per the save-model spike).\n- A map authored in the editor loads and plays in the game unchanged.',
|
|
104
|
+
50, (SELECT id FROM goals WHERE version_id='V3' AND title='Map authoring & editor'))
|
|
105
|
+
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
106
|
+
SET criterion_md = EXCLUDED.criterion_md,
|
|
107
|
+
sort_order = EXCLUDED.sort_order,
|
|
108
|
+
goal_id = EXCLUDED.goal_id;
|
|
109
|
+
|
|
110
|
+
-- ---------------------------------------------------------------------------
|
|
111
|
+
-- 3. Version done_when text (broaden V2 to cover the walkable world; note the
|
|
112
|
+
-- editor carry on V3).
|
|
113
|
+
-- ---------------------------------------------------------------------------
|
|
114
|
+
UPDATE versions
|
|
115
|
+
SET done_when = 'Other players are visible in a real, walkable world: a player walks the Olympia Sanctuary in-game at reference-art fidelity, with file-based multi-layer maps feeding both client render and server collision, correct depth-sorting on tall structures, at least two connected maps with server-authoritative warps, and the Olympia art set passing the rubric on the locked palette.'
|
|
116
|
+
WHERE id = 'V2';
|
|
117
|
+
|
|
118
|
+
UPDATE versions
|
|
119
|
+
SET done_when = COALESCE(done_when, '') ||
|
|
120
|
+
E'\n\nAlso (folded in from the world-building plan): a lightweight in-house map editor lets a builder author maps that round-trip into the game (depends on the V2 world engine shipping first).'
|
|
121
|
+
WHERE id = 'V3'
|
|
122
|
+
AND done_when NOT LIKE '%in-house map editor%';
|
|
123
|
+
|
|
124
|
+
-- ---------------------------------------------------------------------------
|
|
125
|
+
-- 4. Karma to the proposer (#25), mirroring the ratify path (+5 each, x7).
|
|
126
|
+
-- Guarded per-idea so a re-run can't double-credit.
|
|
127
|
+
-- ---------------------------------------------------------------------------
|
|
128
|
+
INSERT INTO karma_log (builder_id, delta, reason, granted_by)
|
|
129
|
+
SELECT 25, 5, m.reason, 1
|
|
130
|
+
FROM (VALUES
|
|
131
|
+
('proposal_ratified:idea-416'),
|
|
132
|
+
('proposal_ratified:idea-417'),
|
|
133
|
+
('proposal_ratified:idea-418'),
|
|
134
|
+
('proposal_ratified:idea-419'),
|
|
135
|
+
('proposal_ratified:idea-420'),
|
|
136
|
+
('proposal_ratified:idea-421'),
|
|
137
|
+
('proposal_ratified:idea-422')
|
|
138
|
+
) AS m(reason)
|
|
139
|
+
WHERE NOT EXISTS (
|
|
140
|
+
SELECT 1 FROM karma_log k WHERE k.builder_id = 25 AND k.reason = m.reason
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
-- ---------------------------------------------------------------------------
|
|
144
|
+
-- 5. idea_inbox bookkeeping.
|
|
145
|
+
-- 416-422 (criterion proposals) + 424 (the umbrella) -> promoted.
|
|
146
|
+
-- 423 (superseded umbrella v1) -> discarded.
|
|
147
|
+
-- 427 (reference manifest, future world-scale) -> LEFT OPEN on purpose as
|
|
148
|
+
-- the durable expansion reference; 425/426 are promoted by the seed.
|
|
149
|
+
-- ---------------------------------------------------------------------------
|
|
150
|
+
UPDATE idea_inbox
|
|
151
|
+
SET status = 'promoted', reviewed_at = now()
|
|
152
|
+
WHERE id IN (416,417,418,419,420,421,422,424)
|
|
153
|
+
AND status = 'open';
|
|
154
|
+
|
|
155
|
+
UPDATE idea_inbox
|
|
156
|
+
SET status = 'discarded', reviewed_at = now()
|
|
157
|
+
WHERE id = 423
|
|
158
|
+
AND status = 'open';
|
|
159
|
+
|
|
160
|
+
END
|
|
161
|
+
$seed$;
|
|
162
|
+
|
|
163
|
+
COMMIT;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
-- 173_bongos_v1_c7_core_modularized.sql
|
|
2
|
+
-- Adds BONGOS-V1 criterion C7 (gds-core-modularized) — the "Config B" core
|
|
3
|
+
-- decomposition wave seeded by planning session 2026-06-26 (task 1567).
|
|
4
|
+
-- The four feature modules (C5) shipped; this criterion owns breaking the GDS
|
|
5
|
+
-- *core* into kernel-mediated modules. Parented under goal 10 (GDS core
|
|
6
|
+
-- modularization). Idempotent on the (version_id, criterion_id) unique key.
|
|
7
|
+
-- Vanilla-safe guard (task 1264 / hardware-verify R63): this criterion parents to
|
|
8
|
+
-- goal id 10 (OTB's "GDS core modularization" goal). Goal ids aren't migration-seeded,
|
|
9
|
+
-- so a fresh self-host DB has no goal #10 and this INSERT would violate the goal_id
|
|
10
|
+
-- foreign key. Skip unless that goal exists. (Already applied on the OTB instance;
|
|
11
|
+
-- guard only bites on a fresh vanilla DB.)
|
|
12
|
+
DO $c7$
|
|
13
|
+
BEGIN
|
|
14
|
+
IF NOT EXISTS (SELECT 1 FROM goals WHERE id = 10) THEN
|
|
15
|
+
RAISE NOTICE '173: goal 10 (GDS core modularization) absent — vanilla instance, skipping BONGOS-V1 C7 criterion seed.';
|
|
16
|
+
RETURN;
|
|
17
|
+
END IF;
|
|
18
|
+
|
|
19
|
+
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, sort_order, goal_id)
|
|
20
|
+
VALUES (
|
|
21
|
+
'BONGOS-V1',
|
|
22
|
+
'gds-core-modularized',
|
|
23
|
+
'**The GDS core is itself decomposed into cohesive, kernel-mediated modules — not just the four feature modules.** A bounded ~3.5k-LOC kernel (auth · rank · pool · audit · trust primitives · loader · seams) is the *only* thing core domains import, through the published doorway; the ~6k-LOC shared `db.js` is carved per-domain so each module owns its SQL; capabilities the lifecycle invokes (grade, reward) resolve through kernel **ports**, never direct imports. **Proven when ≥2 core domains live as modules with their `db.js` slices extracted, the kernel is bounded + fitness-enforced, and OTB behaves byte-identically.** The lifecycle state machine (tasks/claims/versions) is NOT split — only the capabilities it calls are extracted behind seams. (ADR 0083 §"the four module moves" + design doc 02-module-map.md §3/§6; planning 2026-06-26, task 1567.)',
|
|
24
|
+
7,
|
|
25
|
+
10
|
|
26
|
+
)
|
|
27
|
+
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
28
|
+
SET criterion_md = EXCLUDED.criterion_md,
|
|
29
|
+
sort_order = EXCLUDED.sort_order,
|
|
30
|
+
goal_id = EXCLUDED.goal_id;
|
|
31
|
+
|
|
32
|
+
END
|
|
33
|
+
$c7$;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
-- Migration 182 — Consolidate GDS-V4 into BONGOS-V1 + split out the Bongos desktop app
|
|
2
|
+
-- ============================================================================
|
|
3
|
+
-- Archon-directed project cleanup, 2026-07-02 (task 1709, ADR 0103; with Lars).
|
|
4
|
+
--
|
|
5
|
+
-- GDS-V4 and BONGOS-V1 were two parallel internal / Cloud-Bongos versions with
|
|
6
|
+
-- no clean divide. This migration makes BONGOS-V1 the single go-forward internal
|
|
7
|
+
-- (Cloud Bongos platform) version, carries GDS-V4's still-relevant open work
|
|
8
|
+
-- into it, splits the Bongos DESKTOP APP into its own goal, prunes superseded
|
|
9
|
+
-- work, and freezes GDS-V4.
|
|
10
|
+
--
|
|
11
|
+
-- REVERSIBLE by construction: no destructive drops — only status / version_id /
|
|
12
|
+
-- goal_id / one dependency-edge mutations. The exact before-state is snapshotted
|
|
13
|
+
-- in the task-1709 session notes. See ADR 0103 for the full rationale + the
|
|
14
|
+
-- ADR-0095 (grep-over-embeddings) decision that retires the C1 recall arm.
|
|
15
|
+
--
|
|
16
|
+
-- Idempotency: migrate.sh applies each numbered migration once; the goal INSERT
|
|
17
|
+
-- is additionally NOT-EXISTS-guarded so a manual re-run cannot double-create it.
|
|
18
|
+
-- ============================================================================
|
|
19
|
+
|
|
20
|
+
BEGIN;
|
|
21
|
+
|
|
22
|
+
-- 1. Create the "Bongos desktop app" goal under BONGOS-V1 and reparent the app
|
|
23
|
+
-- tasks (mascot/brand, branded download + auto-update, the cloudbongos.com
|
|
24
|
+
-- landing/download page, the feedback-capture app, the absorbed Dev Box
|
|
25
|
+
-- switch). scope_modules stays empty until the code carve (bongos-app/ ->
|
|
26
|
+
-- modules/bongos-app/) creates the module, at which point the goal is scoped
|
|
27
|
+
-- to it. See ADR 0087 (the app absorbs Dev Box).
|
|
28
|
+
DO $$
|
|
29
|
+
DECLARE app_goal_id bigint;
|
|
30
|
+
BEGIN
|
|
31
|
+
SELECT id INTO app_goal_id
|
|
32
|
+
FROM goals
|
|
33
|
+
WHERE version_id = 'BONGOS-V1' AND title = 'Bongos desktop app'
|
|
34
|
+
LIMIT 1;
|
|
35
|
+
|
|
36
|
+
IF app_goal_id IS NULL THEN
|
|
37
|
+
INSERT INTO goals (version_id, title, description, scope_modules, created_by, status)
|
|
38
|
+
VALUES (
|
|
39
|
+
'BONGOS-V1',
|
|
40
|
+
'Bongos desktop app',
|
|
41
|
+
'The Cloud Bongos DESKTOP APP (bongos-app/): a Zoom-style feedback-capture '
|
|
42
|
+
|| 'walkthrough tool that produces one model-agnostic prompt bundle for a coding '
|
|
43
|
+
|| 'agent, and the umbrella app that absorbs the Dev Box switch (ADR 0045/0072/0087). '
|
|
44
|
+
|| 'Distinct from the Cloud Bongos PLATFORM (the GDS engine, modules, grader, hosting). '
|
|
45
|
+
|| 'Covers: mascot/brand (Bongo Buddha), branded download + auto-update, the '
|
|
46
|
+
|| 'cloudbongos.com landing/download page, and the dev-box desktop client. The code '
|
|
47
|
+
|| 'carve bongos-app/ -> modules/bongos-app/ is tracked as a task under this goal.',
|
|
48
|
+
'{}',
|
|
49
|
+
1,
|
|
50
|
+
'open'
|
|
51
|
+
)
|
|
52
|
+
RETURNING id INTO app_goal_id;
|
|
53
|
+
END IF;
|
|
54
|
+
|
|
55
|
+
-- App tasks currently in GDS-V4: rebind version AND attach to the app goal.
|
|
56
|
+
-- 1523 interactive mascot · 1294 devbox-app go-live bump ·
|
|
57
|
+
-- 1463 devbox-app build workflow · 1484 dev-box host-key / app re-pin
|
|
58
|
+
UPDATE tasks
|
|
59
|
+
SET version_id = 'BONGOS-V1', goal_id = app_goal_id, updated_at = now()
|
|
60
|
+
WHERE id IN (1523, 1294, 1463, 1484)
|
|
61
|
+
AND version_id = 'GDS-V4';
|
|
62
|
+
|
|
63
|
+
-- App tasks already in BONGOS-V1: attach to the app goal.
|
|
64
|
+
-- 1311 branded download + auto-update · 1682/1700/1701 Bongo Buddha anim ·
|
|
65
|
+
-- 1702 cloudbongos.com landing/download page
|
|
66
|
+
UPDATE tasks
|
|
67
|
+
SET goal_id = app_goal_id, updated_at = now()
|
|
68
|
+
WHERE id IN (1311, 1682, 1700, 1701, 1702)
|
|
69
|
+
AND version_id = 'BONGOS-V1';
|
|
70
|
+
END $$;
|
|
71
|
+
|
|
72
|
+
-- 2. Abandon 19 superseded tasks:
|
|
73
|
+
-- C1 recall/embeddings arm (939,962,966-971,1221) — retired by ADR 0095's
|
|
74
|
+
-- grep-over-embeddings decision (Anthropic + Sourcegraph removed embedding
|
|
75
|
+
-- indexes; the endorsed path is meaning-in-source, tracked separately).
|
|
76
|
+
-- Old V3.R## grader tasks (201,202,242,292,388,490,492) — superseded by the
|
|
77
|
+
-- shipped 4-worker grader panel + ADR 0089.
|
|
78
|
+
-- T-NNN task-ref migration (753,754,755) — the current hall-link convention
|
|
79
|
+
-- already works and is enforced.
|
|
80
|
+
UPDATE tasks
|
|
81
|
+
SET status = 'abandoned', updated_at = now()
|
|
82
|
+
WHERE id IN (939,962,966,967,968,969,970,971,1221,
|
|
83
|
+
201,202,242,292,388,490,492,
|
|
84
|
+
753,754,755)
|
|
85
|
+
AND version_id = 'GDS-V4'
|
|
86
|
+
AND status IN ('backlog', 'ready');
|
|
87
|
+
|
|
88
|
+
-- 3. Sever the 758 -> 753 dependency edge. 753 (T-NNN ADR) is being abandoned;
|
|
89
|
+
-- 758 ("document the hall as the canonical doc surface") is kept and must not
|
|
90
|
+
-- be left permanently unclaimable (DEPS_NOT_SHIPPED) by a dead dependency.
|
|
91
|
+
-- Delete from both the polymorphic table (the gate read) and the legacy one.
|
|
92
|
+
DELETE FROM dependencies
|
|
93
|
+
WHERE from_kind = 'task' AND from_id = 758 AND to_kind = 'task' AND to_id = 753;
|
|
94
|
+
DELETE FROM task_dependencies
|
|
95
|
+
WHERE task_id = 758 AND depends_on_task_id = 753;
|
|
96
|
+
|
|
97
|
+
-- 4. Move two misfiled game-art tasks to product V2 (they are world art, not
|
|
98
|
+
-- internal-track work): 586 grass_on_sand variety, 587 player_walk family.
|
|
99
|
+
UPDATE tasks
|
|
100
|
+
SET version_id = 'V2', updated_at = now()
|
|
101
|
+
WHERE id IN (586, 587)
|
|
102
|
+
AND version_id = 'GDS-V4';
|
|
103
|
+
|
|
104
|
+
-- 5. Carry every remaining NON-TERMINAL GDS-V4 task (the platform work) forward
|
|
105
|
+
-- to BONGOS-V1. Non-terminal = backlog/ready/completed/blocked. This leaves
|
|
106
|
+
-- the in-flight tail (10 confirmed + 1 active) and terminal history
|
|
107
|
+
-- (shipped/abandoned) attributed to GDS-V4, exactly like a normal
|
|
108
|
+
-- version-close carry-over. Runs AFTER steps 1/2/4 so the app / abandoned /
|
|
109
|
+
-- product tasks are already out of scope; self-correcting for the remainder.
|
|
110
|
+
UPDATE tasks
|
|
111
|
+
SET version_id = 'BONGOS-V1', updated_at = now()
|
|
112
|
+
WHERE version_id = 'GDS-V4'
|
|
113
|
+
AND status IN ('backlog', 'ready', 'completed', 'blocked');
|
|
114
|
+
|
|
115
|
+
-- 6. BONGOS-V1 becomes the single go-forward internal version: rename it off the
|
|
116
|
+
-- misleading "Bongos App" title (the app is now a GOAL inside it, step 1) and
|
|
117
|
+
-- mark it 'building' (it is actively being built).
|
|
118
|
+
UPDATE versions
|
|
119
|
+
SET name = 'Cloud Bongos — platform (V1)', status = 'building'
|
|
120
|
+
WHERE id = 'BONGOS-V1';
|
|
121
|
+
|
|
122
|
+
-- 7. Freeze GDS-V4 — sealed to new planning. Its 11 in-flight tasks land as its
|
|
123
|
+
-- final shipped history; its 358 shipped + 51 abandoned rows stay as the
|
|
124
|
+
-- archive of what GDS-V4 delivered. ('frozen', not 'shipped': GDS-V4 did not
|
|
125
|
+
-- ship — it was absorbed — and 'shipped' would falsely read 100% + could gate
|
|
126
|
+
-- the in-flight tail.)
|
|
127
|
+
UPDATE versions
|
|
128
|
+
SET status = 'frozen'
|
|
129
|
+
WHERE id = 'GDS-V4'
|
|
130
|
+
AND status <> 'shipped';
|
|
131
|
+
|
|
132
|
+
COMMIT;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
-- Migration 183 — Five themed goals for the GDS-V4 carryover (BONGOS-V1)
|
|
2
|
+
-- ============================================================================
|
|
3
|
+
-- Follow-up to ADR 0103 (migration 182): the ~72 still-relevant GDS-V4 tasks
|
|
4
|
+
-- carried into BONGOS-V1 were left goal-less. This gives the platform debt a
|
|
5
|
+
-- spine — five OUTCOME goals (ADR 0086 goal tier), each with done-when criteria,
|
|
6
|
+
-- and reparents the tasks under them. Evergreen chores + grader/economy/misc +
|
|
7
|
+
-- recent non-debt work are deliberately LEFT goal-less (they are not carryover
|
|
8
|
+
-- outcomes). Owner-directed 2026-07-02 (with Lars).
|
|
9
|
+
--
|
|
10
|
+
-- Goals are Archon-owned (created_by = 1), scope_modules empty (grouping goals,
|
|
11
|
+
-- not scope-walled; tasks attach here via this migration, not the API route).
|
|
12
|
+
-- Criteria start satisfied=false, so each goal stays 'open' until its work lands.
|
|
13
|
+
--
|
|
14
|
+
-- REVERSIBLE: only INSERTs (goals + criteria) and task goal_id UPDATEs. To undo,
|
|
15
|
+
-- NULL the goal_id on the affected tasks and DELETE the 5 goals + their criteria.
|
|
16
|
+
-- Idempotent: goal INSERTs are title-guarded, criteria use ON CONFLICT DO NOTHING,
|
|
17
|
+
-- task UPDATEs only touch still-goal-less rows.
|
|
18
|
+
-- ============================================================================
|
|
19
|
+
|
|
20
|
+
BEGIN;
|
|
21
|
+
|
|
22
|
+
DO $$
|
|
23
|
+
DECLARE gid bigint;
|
|
24
|
+
BEGIN
|
|
25
|
+
-- ---- G1: Build-pipeline integrity --------------------------------------
|
|
26
|
+
SELECT id INTO gid FROM goals WHERE version_id='BONGOS-V1' AND title='Build-pipeline integrity' LIMIT 1;
|
|
27
|
+
IF gid IS NULL THEN
|
|
28
|
+
INSERT INTO goals (version_id, title, description, scope_modules, created_by, status)
|
|
29
|
+
VALUES ('BONGOS-V1', 'Build-pipeline integrity',
|
|
30
|
+
'GDS-V4 carryover (ADR 0103): the system that builds Cloud Bongos never fails silently or carries known integrity holes — ship/merge/deploy, CI, the nightly backup, and the SEC-863 deploy-gate.',
|
|
31
|
+
'{}', 1, 'open')
|
|
32
|
+
RETURNING id INTO gid;
|
|
33
|
+
END IF;
|
|
34
|
+
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, goal_id, sort_order) VALUES
|
|
35
|
+
('BONGOS-V1','gcarry-pipe-loud','Every stage of ship->merge->deploy and the nightly DB backup fails LOUDLY (surfaces in CI or journald), never silently.',gid,10),
|
|
36
|
+
('BONGOS-V1','gcarry-pipe-sec863','The SEC-863 deploy-gate has no known bypass: audit range anchored to last-successful-deploy, sub-Metic protected-path claims blocked at claim time, and each protected-path commit tied to a task in the main audit.',gid,20),
|
|
37
|
+
('BONGOS-V1','gcarry-pipe-smoke','A full-stack integration smoke (server + Postgres) runs as a required PR check, and the flaky unit harness is isolated so a green run is trustworthy.',gid,30)
|
|
38
|
+
ON CONFLICT (version_id, criterion_id) DO NOTHING;
|
|
39
|
+
UPDATE tasks SET goal_id=gid, updated_at=now()
|
|
40
|
+
WHERE version_id='BONGOS-V1' AND goal_id IS NULL
|
|
41
|
+
AND id IN (1426,1427,1429,1431,1432,1433,1435,1436,1462,1479,1641,1703,1219,861,862,1140,1437,1440,1461,1434,723);
|
|
42
|
+
|
|
43
|
+
-- ---- G2: Builder experience — hall, dev box, and skills ----------------
|
|
44
|
+
SELECT id INTO gid FROM goals WHERE version_id='BONGOS-V1' AND title='Builder experience — hall, dev box, and skills' LIMIT 1;
|
|
45
|
+
IF gid IS NULL THEN
|
|
46
|
+
INSERT INTO goals (version_id, title, description, scope_modules, created_by, status)
|
|
47
|
+
VALUES ('BONGOS-V1', 'Builder experience — hall, dev box, and skills',
|
|
48
|
+
'GDS-V4 carryover (ADR 0103): everything a builder directly touches — the builders hall UI, the dev box + sandbox, and the day-to-day skills — works without needing Claude for routine actions.',
|
|
49
|
+
'{}', 1, 'open')
|
|
50
|
+
RETURNING id INTO gid;
|
|
51
|
+
END IF;
|
|
52
|
+
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, goal_id, sort_order) VALUES
|
|
53
|
+
('BONGOS-V1','gcarry-bx-hall','Core task actions (claim, release, ship-trigger, triage) and a task board work in the builders hall WITHOUT invoking the LLM.',gid,10),
|
|
54
|
+
('BONGOS-V1','gcarry-bx-identity','A builder can view and edit their own profile, see works-completed, and read an efficiency-aware leaderboard.',gid,20),
|
|
55
|
+
('BONGOS-V1','gcarry-bx-onramp','Newcomers never dead-end: auth/re-auth is browser-clickable and self-explanatory, and the dev box + sandbox are discoverable.',gid,30),
|
|
56
|
+
('BONGOS-V1','gcarry-bx-box','A builder dev box + sandbox is robust: uncommitted work is not lost on reclaim, host-keys survive rebuilds, and staging is cross-platform.',gid,40)
|
|
57
|
+
ON CONFLICT (version_id, criterion_id) DO NOTHING;
|
|
58
|
+
UPDATE tasks SET goal_id=gid, updated_at=now()
|
|
59
|
+
WHERE version_id='BONGOS-V1' AND goal_id IS NULL
|
|
60
|
+
AND id IN (758,751,759,424,1466,1467,1468,1469,1471,1473,1474,1475,1476,1481,1482,594,1472,1715,1696,1650,1470,1391,1165,837,843,885,1477,1493,1430,1665);
|
|
61
|
+
|
|
62
|
+
-- ---- G3: Cloud Bongos productization and self-host ---------------------
|
|
63
|
+
SELECT id INTO gid FROM goals WHERE version_id='BONGOS-V1' AND title='Cloud Bongos productization and self-host' LIMIT 1;
|
|
64
|
+
IF gid IS NULL THEN
|
|
65
|
+
INSERT INTO goals (version_id, title, description, scope_modules, created_by, status)
|
|
66
|
+
VALUES ('BONGOS-V1', 'Cloud Bongos productization and self-host',
|
|
67
|
+
'GDS-V4 carryover (ADR 0103): someone other than the owner can run Cloud Bongos — a second instance, a real update channel, a clean vanilla boot, and hosting as a module.',
|
|
68
|
+
'{}', 1, 'open')
|
|
69
|
+
RETURNING id INTO gid;
|
|
70
|
+
END IF;
|
|
71
|
+
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, goal_id, sort_order) VALUES
|
|
72
|
+
('BONGOS-V1','gcarry-prod-customer2','A second instance (Mercury) runs live on a pinned Cloud Bongos core, with its own repo and GDS.',gid,10),
|
|
73
|
+
('BONGOS-V1','gcarry-prod-upgrade','bongos upgrade is a real update-consumption channel for a two-repo consumer (not a stub).',gid,20),
|
|
74
|
+
('BONGOS-V1','gcarry-prod-vanilla','A vanilla docker compose up boots clean: no instance/product seed data runs and no host-brand leaks, both gated in CI.',gid,30),
|
|
75
|
+
('BONGOS-V1','gcarry-prod-hosting','Instance hosting (provision, manage, cost read-out) is available as a Cloud Bongos module.',gid,40)
|
|
76
|
+
ON CONFLICT (version_id, criterion_id) DO NOTHING;
|
|
77
|
+
UPDATE tasks SET goal_id=gid, updated_at=now()
|
|
78
|
+
WHERE version_id='BONGOS-V1' AND goal_id IS NULL
|
|
79
|
+
AND id IN (1689,1690,1326,1704,1706,1485,1619,1620,1621,1388,1439);
|
|
80
|
+
|
|
81
|
+
-- ---- G4: Findability — the grep path (ADR 0095) ------------------------
|
|
82
|
+
SELECT id INTO gid FROM goals WHERE version_id='BONGOS-V1' AND title='Findability — the grep path (ADR 0095)' LIMIT 1;
|
|
83
|
+
IF gid IS NULL THEN
|
|
84
|
+
INSERT INTO goals (version_id, title, description, scope_modules, created_by, status)
|
|
85
|
+
VALUES ('BONGOS-V1', 'Findability — the grep path (ADR 0095)',
|
|
86
|
+
'GDS-V4 carryover (ADR 0103 / ADR 0095): a repo agents navigate by literal search, with meaning written into the source rather than an embedding index.',
|
|
87
|
+
'{}', 1, 'open')
|
|
88
|
+
RETURNING id INTO gid;
|
|
89
|
+
END IF;
|
|
90
|
+
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, goal_id, sort_order) VALUES
|
|
91
|
+
('BONGOS-V1','gcarry-find-docstrings','The docstring / module-header convention is rolled out across the codebase and guarded by a fitness/density check so it cannot rot.',gid,10),
|
|
92
|
+
('BONGOS-V1','gcarry-find-why','Code rationale (the why) is surfaced forward-facing, and the AST/tree-sitter repo-map upgrade is decided.',gid,20)
|
|
93
|
+
ON CONFLICT (version_id, criterion_id) DO NOTHING;
|
|
94
|
+
UPDATE tasks SET goal_id=gid, updated_at=now()
|
|
95
|
+
WHERE version_id='BONGOS-V1' AND goal_id IS NULL
|
|
96
|
+
AND id IN (1654,1655,1656,1657,1659,848);
|
|
97
|
+
|
|
98
|
+
-- ---- G5: Autonomy groundwork -------------------------------------------
|
|
99
|
+
SELECT id INTO gid FROM goals WHERE version_id='BONGOS-V1' AND title='Autonomy groundwork' LIMIT 1;
|
|
100
|
+
IF gid IS NULL THEN
|
|
101
|
+
INSERT INTO goals (version_id, title, description, scope_modules, created_by, status)
|
|
102
|
+
VALUES ('BONGOS-V1', 'Autonomy groundwork',
|
|
103
|
+
'GDS-V4 carryover (ADR 0103): safe unattended routines — guardrails first, then arm the safe set.',
|
|
104
|
+
'{}', 1, 'open')
|
|
105
|
+
RETURNING id INTO gid;
|
|
106
|
+
END IF;
|
|
107
|
+
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, goal_id, sort_order) VALUES
|
|
108
|
+
('BONGOS-V1','gcarry-auto-guardrails','An off-droplet spend ceiling, a scoped file-only automation token, and a hall kill-switch all exist.',gid,10),
|
|
109
|
+
('BONGOS-V1','gcarry-auto-armed','The cloud-routine execution environment is verified and the safe routine set is armed behind the autonomy flag.',gid,20)
|
|
110
|
+
ON CONFLICT (version_id, criterion_id) DO NOTHING;
|
|
111
|
+
UPDATE tasks SET goal_id=gid, updated_at=now()
|
|
112
|
+
WHERE version_id='BONGOS-V1' AND goal_id IS NULL
|
|
113
|
+
AND id IN (1393,1394,1395,1396);
|
|
114
|
+
END $$;
|
|
115
|
+
|
|
116
|
+
COMMIT;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
-- 186_bongos_v1_governance_planning_seed.sql (migrations/instance/ — OTB scope-truth)
|
|
2
|
+
-- Planning session (2026-07-03): the BONGOS-V1 "Governance — configurable roles &
|
|
3
|
+
-- permissions" goal + its six done-when criteria.
|
|
4
|
+
--
|
|
5
|
+
-- WHY THIS LIVES IN migrations/instance/ (ADR 0105 / selfhost-boot gate):
|
|
6
|
+
-- versions/goals/done_when_criteria are OTB scope-truth, NOT platform-universal
|
|
7
|
+
-- schema. In migrations/ root they would seed a vanilla third-party self-host with
|
|
8
|
+
-- OTB's governance criteria (the selfhost-boot VANILLA assertion: a fresh DB seeds
|
|
9
|
+
-- ZERO scope-truth). Here, migrate.sh applies the file only when the OWNING instance
|
|
10
|
+
-- opts in (GDS_APPLY_INSTANCE_SEEDS=1); a vanilla self-host skips the whole dir.
|
|
11
|
+
--
|
|
12
|
+
-- DR-SAFE: the goal was first created via the API (a runtime row), so a from-scratch
|
|
13
|
+
-- owning-instance replay would have no goal to parent the criteria under. This
|
|
14
|
+
-- migration recreates the goal idempotently (title-guard) so replay stays whole and
|
|
15
|
+
-- so it is a no-op on prod (where goal 30 already exists). Mirrors migration 183.
|
|
16
|
+
--
|
|
17
|
+
-- The 25 tasks (BV1.R90-R114) + dependency graph are seeded by
|
|
18
|
+
-- scripts/gds/seed-governance-tasks.js after this deploys (so the slugs resolve).
|
|
19
|
+
|
|
20
|
+
BEGIN;
|
|
21
|
+
|
|
22
|
+
DO $do$
|
|
23
|
+
DECLARE gid bigint;
|
|
24
|
+
BEGIN
|
|
25
|
+
SELECT id INTO gid FROM goals
|
|
26
|
+
WHERE version_id = 'BONGOS-V1'
|
|
27
|
+
AND title = 'Governance — configurable roles & permissions'
|
|
28
|
+
LIMIT 1;
|
|
29
|
+
|
|
30
|
+
IF gid IS NULL THEN
|
|
31
|
+
INSERT INTO goals (version_id, title, description, scope_modules, created_by, status)
|
|
32
|
+
VALUES (
|
|
33
|
+
'BONGOS-V1',
|
|
34
|
+
'Governance — configurable roles & permissions',
|
|
35
|
+
$desc$A core, Discord-style roles-and-permissions system where PERMISSIONS are the atomic primitive and ranks become seeded roles. Adds first-class principals (machine identities), session-scopes (box tokens), ownership-scoped permissions, and a governance-owned protected-surface registry (policy owns / substrate enforces). Capability lives in core (modules/governance/, default:true); per-project settings split config/governance.json (over neutral) + governance_* DB tables. Ships an Archon-only Governance hall tab (assign + toggle; system permissions locked). Preserves the ADR 0016 trust boundary end-to-end. Protected-scope (kernel/lifecycle) -> Archon-mediated.$desc$,
|
|
36
|
+
'{kernel,lifecycle,hall-ui}',
|
|
37
|
+
1,
|
|
38
|
+
'open'
|
|
39
|
+
)
|
|
40
|
+
RETURNING id INTO gid;
|
|
41
|
+
END IF;
|
|
42
|
+
|
|
43
|
+
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, goal_id, sort_order) VALUES
|
|
44
|
+
('BONGOS-V1', 'gov-perms-atom',
|
|
45
|
+
$md$**Permissions become the atom; ranks become seeded roles — with zero day-one behavior change.** Authority stops being a fixed rank threshold and becomes a resolved set of granular permissions. Done when: a code-defined permission catalog exists (each permission flagged `system` or not, since permissions map to real routes and cannot be UI-invented); a per-request, uncached resolver returns a builder's effective permission set as the union of their roles (preserving ADR 0016); four seeded roles (`xenos`/`thetes`/`metic`/`archon`) reproduce today's thresholds exactly; a `requirePermission()` gate exists alongside `requireRank`; and a parity test proves every builder resolves to exactly today's powers (behavior-identical at ship).$md$,
|
|
46
|
+
gid, 20),
|
|
47
|
+
('BONGOS-V1', 'gov-gates-permissioned',
|
|
48
|
+
$md$**Every DB-resolvable authority gate reads permissions, not rank.** Rank stops being special everywhere the server decides access. Done when: the ~60 HTTP route gates migrate `requireRank(...)` -> `requirePermission(...)`; claim eligibility (`xenosClaimAllowed`/`rankAllowsTask`/per-task floor), the page-level gates, and the wandering-prefs clamp are re-expressed as permissions; the ~6 duplicated numeric rank-tier maps collapse into the single resolver; and the `route-rank-check` fitness function is updated to assert permission gates so nothing silently regresses.$md$,
|
|
49
|
+
gid, 21),
|
|
50
|
+
('BONGOS-V1', 'gov-full-model',
|
|
51
|
+
$md$**The complete authority model is represented — not just role -> permission.** The 2026-07-03 authority sweep proved Cloud Bongos authority runs on ~7 mechanisms, not one. Done when: first-class **principals** (machine identities like the BFG memory-writer and the Discord bot, keyed on `system_role`, never UI-grantable) are modeled; **session-scopes** (box-scoped tokens, deny-by-default) are a first-class capability distinct from a builder's roles; **ownership-scoped** permissions ("act on *own* X" — own box/memory/credentials/claim) are expressible; and the **protected-surface registry** (today's `PROTECTED_GLOBS` / `EXPECTED_RANKS`) becomes governance-owned *data* while the out-of-band substrate (git hooks, CI, GitHub branch protection, SSH) stays the *enforcer* — policy owns, substrate enforces.$md$,
|
|
52
|
+
gid, 22),
|
|
53
|
+
('BONGOS-V1', 'gov-core-project-split',
|
|
54
|
+
$md$**Capability lives in core; settings live per project.** The governance engine is portable to any Cloud Bongos instance; each project keeps its own governance data. Done when: `modules/governance/` is a `default:true` core module with its own `governance_*` additive migrations and a resolver exposed through a kernel port; role *templates/defaults* ship as `config/governance.json` resolved over a `config/governance.neutral.json` (the branding pattern); live role/permission/assignment *data* lives in the DB; and a fresh vanilla instance boots with sane neutral defaults and no OTB identity.$md$,
|
|
55
|
+
gid, 23),
|
|
56
|
+
('BONGOS-V1', 'gov-archon-tab',
|
|
57
|
+
$md$**The Archon Governance tab — assign + toggle.** The owner can configure governance from the builders' hall, Discord-style. Done when: an Archon-only Governance tab lets you view/edit the ~12 operational permissions per role, create custom roles, and assign roles to builders; `system` permissions render **locked** (visible but not grantable); and the tab is gated in depth at the page layer (`serve-internal`), the API layer (`governance.manage`), and pinned in `route-rank-check`.$md$,
|
|
58
|
+
gid, 24),
|
|
59
|
+
('BONGOS-V1', 'gov-boundary-proof',
|
|
60
|
+
$md$**The trust boundary provably holds — with a live proof and the docs corrected.** This criterion de-risks the whole goal: no amount of governance configuration can weaken production safety. Done when: an abuse-matrix test proves no configurable role/permission can grant a low-trust builder deploy or protected-path access; a live demonstration creates a custom role granting an operational permission (it works) while a `system` permission stays enforced by substrate; an ADR records the "permissions-as-atom + principals + session-scopes + protected-surface registry, policy-owns/substrate-enforces" decision; and the stale ADR 0043 / canonical-permissions.md branch-protection claims are fixed (GitHub branch protection is now live).$md$,
|
|
61
|
+
gid, 25)
|
|
62
|
+
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
63
|
+
SET criterion_md = EXCLUDED.criterion_md,
|
|
64
|
+
goal_id = EXCLUDED.goal_id,
|
|
65
|
+
sort_order = EXCLUDED.sort_order;
|
|
66
|
+
END
|
|
67
|
+
$do$;
|
|
68
|
+
|
|
69
|
+
COMMIT;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# `autonomy` module — the Multi-Agent System (conductor · architect · gate · routine timers)
|
|
2
|
+
|
|
3
|
+
> A CORE-domain carve (BV1.R83, [ADR 0093](../../docs/adr/<redacted>.md) §1) — the eighth tranche-2 domain extracted from the GDS core, after sessions (R82). `default: true` — the autonomy machinery + the durable in-process routine timer ship to every instance (both inert/no-op until armed or the pool is reachable), so it mounts unconditionally unless an instance disables it.
|
|
4
|
+
|
|
5
|
+
Owns the **Multi-Agent System** surfaces ([ADR 0024](../../docs/adr/<redacted>.md)):
|
|
6
|
+
- the **autonomy gate** (System 3, task 1351) — the $0 deterministic precheck that decides go/no-go before any model boots; a precheck HTTP route + the gate CLI, **inert until `OTB_AUTONOMY_ENABLED=1`**;
|
|
7
|
+
- the **routine timers** (System 4 / [ADR 0078](../../docs/adr/<redacted>.md) amendment, task 1382) — the in-process weekly **peer-vote-tally** poller (no model, no external cron);
|
|
8
|
+
- the **Conductor** mid-flight dispatch CLI (Phase 4, task 439) and the **Architect** bounded first-principles `--scope` audit CLI (Phase 5, task 459) — domain commands.
|
|
9
|
+
|
|
10
|
+
## The boundary (the one rule)
|
|
11
|
+
|
|
12
|
+
The module's `src/`-scanned files (`db.js`, `pollers/`, `routes/`) reach core **only** through the published doorway `../../src/module-api.js` (`coreVersion ^1.11.0`). They must **never** `require()` a core internal (`../../src/bongos/db`, `../../src/bongos/auth`, …) directly, and **never** another module. Core, in turn, must never `require()` a file in here — the route mount + the timer-start both left `src/bongos/`/`server.js`; the loader (`mountModuleRoutes` + `startModulePollers`) wires them now. Both directions are enforced by the BV1.R44/R45 fitness checks.
|
|
13
|
+
|
|
14
|
+
## Cross-cutting: it OBSERVES lifecycle (the seams)
|
|
15
|
+
|
|
16
|
+
This is the cross-cutting domain the carve sequence flagged. Two inbound core→autonomy edges existed; each was inverted so the module is wired, not imported:
|
|
17
|
+
|
|
18
|
+
1. **The routine timer** (was `routineTimers.start()` in `server.js`) → now a **POLLER** (`contributes.pollers:["routine-timers"]`). The loader's `startModulePollers` requires `pollers/routine-timers.js` and calls `start()` at boot / `stop()` at shutdown — the module-agnostic successor to the hardcoded block (the Discord-bot-poller pattern, BV1.R47). server.js is the only `startModulePollers` caller (not `src/platform-server.js`), so a second always-on instance can't double-run. The timer's work is the lifecycle **`tallyPeerVotes`** capability (the SAME transaction `POST /tasks/peer-votes/tally` runs — route + timer share ONE path), reached through the **doorway** (`api.tallyPeerVotes`, a tracked lifecycle leak — it writes karma_log/peer_votes/tasks, all core-owned; relocates behind a `lifecycle.*` port at R86), never a core require.
|
|
19
|
+
2. **The autonomy precheck route** (was mounted in `src/bongos/routes.js`) → now a **module route** (`contributes.routes:["autonomy"]`, mounted by `mountModuleRoutes`). `GET /autonomy/precheck` (Archon-gated) calls the gate's `precheck`.
|
|
20
|
+
|
|
21
|
+
## No port (the sessions/memory shape)
|
|
22
|
+
|
|
23
|
+
Like `sessions`/`memory`, autonomy registers **no kernel port** (`provides: []`) — **core never calls back into it.** The timer is a loader-started poller, the precheck a module route, and the gate/conductor/architect are CLIs. There is nothing for a port to expose. (`consumes: []` too — `tallyPeerVotes` is a doorway export, not a seam port.)
|
|
24
|
+
|
|
25
|
+
## Files
|
|
26
|
+
|
|
27
|
+
| File | What |
|
|
28
|
+
|---|---|
|
|
29
|
+
| `db.js` | the `autonomy_runs` db slice — `recordAutonomyRun` (audit each precheck decision) + `lastAutonomyHead` (the stored last-`go` head the no-signal check compares origin/main against). Reaches Postgres through the doorway `pool`. |
|
|
30
|
+
| `pollers/routine-timers.js` | the in-process weekly **peer-vote-tally** timer (the loader's poller entry — `start`/`stop`). `runPeerVoteTally` resolves the lifecycle `tallyPeerVotes` via the doorway; pure w.r.t. injected `deps` (tests pass `deps.db`). Kill-switch `ROUTINE_TIMERS_DISABLED`; unref'd, best-effort. |
|
|
31
|
+
| `routes/autonomy.js` | `GET /autonomy/precheck` (Archon-gated) — the autonomy precheck over HTTP; wraps the gate CLI's `precheck`. Inert (always `go`) until `OTB_AUTONOMY_ENABLED=1`. |
|
|
32
|
+
|
|
33
|
+
## NOT in this module (the domain CLIs travel with the domain but stay under `scripts/`)
|
|
34
|
+
|
|
35
|
+
A command travels with its domain but stays a CLI (design 02§1; the sessions/memory precedent). These live under `scripts/gds/` — **outside** the kernel boundary (fitness scans `src/` + `modules/`, not `scripts/`), so they may still read the ideas/economy/lifecycle signals + the grader directly, which a `modules/` file may not:
|
|
36
|
+
|
|
37
|
+
- **`scripts/gds/autonomy-gate.js`** — the gate CLI (Step 0 of the nightly routines). Its pure decision logic (`decide`, `autofixAllowed`) is `$0`; its `gatherSignals` reads claimable tasks (core db), open ideas (`modules/ideas`), autonomous MTD spend (`modules/economy`), and the autonomy_runs head/record (**this module's `db.js`**). The precheck route + scheduled tasks invoke it.
|
|
38
|
+
- **`scripts/gds/conductor-dispatch.js`** — the Conductor mid-flight dispatch (runs grader specialists on the current diff; reuses `modules/grading/grader` + `src/bongos/sensitive-surfaces` + `src/bongos/path-match`).
|
|
39
|
+
- **`scripts/gds/architect-audit.js`** — the Architect's bounded `--scope` audit → `docs/audits/` + seed ideas (reuses the grader + `src/bongos/llm-cache`).
|
|
40
|
+
- **`scripts/gds/run-routine.js`** — the deterministic-first cron dispatcher (parses a routine's SKILL.md, runs steps at the cheapest sufficient tier).
|
|
41
|
+
- **`.claude/scheduled-tasks/`** — the cron routine SKILL.md files that invoke these CLIs (re-pointed at the moved gate; the scripts they call are unchanged paths).
|
|
42
|
+
|
|
43
|
+
## Tables (owned, not moved)
|
|
44
|
+
|
|
45
|
+
`autonomy_runs` (migration 126) was created before the module system and stays in core `migrations/` (the shared-schema additive rule the sessions/onboarding carves established). The module owns the *queries*; any **new** autonomy migration belongs in `modules/autonomy/migrations/` namespaced `autonomy_*`.
|
|
46
|
+
|
|
47
|
+
## Tests
|
|
48
|
+
|
|
49
|
+
`tests/autonomy_gate.mjs` (the pure gate decision — DB-free), `tests/routine_timers.mjs` (the peer-vote timer — pure w.r.t. injected deps), `tests/conductor.mjs`, `tests/architect.mjs`, `tests/run_routine.mjs` exercise the CLIs (which import from `scripts/gds/…`). The carve discovery-key membership is asserted in `tests/fitness.mjs` / `tests/module_loader.mjs` / `tests/modules.mjs`; the doorway `tallyPeerVotes` export in `tests/module_api.mjs`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// modules/autonomy/db.js — the autonomy_runs db slice (BV1.R83 / ADR 0093 §1).
|
|
4
|
+
//
|
|
5
|
+
// The Multi-Agent System's autonomy gate (System 3, task 1351) records every
|
|
6
|
+
// precheck decision to the `autonomy_runs` table — both as an audit trail and as
|
|
7
|
+
// the source of the "stored last_head" the no-signal check compares origin/main
|
|
8
|
+
// against. These two queries were carved out of the ~5k-LOC src/bongos/db.js
|
|
9
|
+
// monolith alongside the rest of the autonomy/MAS domain (the gate CLI, the
|
|
10
|
+
// conductor/architect CLIs, the routine timer + precheck route).
|
|
11
|
+
//
|
|
12
|
+
// THE BOUNDARY (the one rule): this slice reaches the kernel ONLY through the
|
|
13
|
+
// published doorway `../../src/module-api.js` — the shared `pool`. It must never
|
|
14
|
+
// `require()` a core internal directly, and never another module.
|
|
15
|
+
//
|
|
16
|
+
// The autonomy_runs TABLE (migration 126) was created before the module system
|
|
17
|
+
// and stays in core migrations/ (the shared-schema additive rule the sessions /
|
|
18
|
+
// onboarding carves established — a NEW autonomy migration belongs in
|
|
19
|
+
// modules/autonomy/migrations/ namespaced autonomy_*). The module owns the
|
|
20
|
+
// QUERIES; the schema stays put.
|
|
21
|
+
|
|
22
|
+
const { pool } = require('../../src/module-api');
|
|
23
|
+
|
|
24
|
+
// Record one autonomy-precheck decision (audit + the "stored last_head" source).
|
|
25
|
+
async function recordAutonomyRun({ routine, decision, reason = null, headSha = null, claimableCount = null, enabled = false }) {
|
|
26
|
+
const { rows } = await pool.query(
|
|
27
|
+
`INSERT INTO autonomy_runs (routine, decision, reason, head_sha, claimable_count, enabled)
|
|
28
|
+
VALUES ($1, $2, $3, $4, $5, $6)
|
|
29
|
+
RETURNING id, created_at`,
|
|
30
|
+
[routine, decision, reason, headSha, claimableCount, enabled === true]
|
|
31
|
+
);
|
|
32
|
+
return rows[0] || null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// The head_sha of this routine's most recent `go` — the baseline the next
|
|
36
|
+
// precheck compares origin/main against ("did anything land since we last ran?").
|
|
37
|
+
async function lastAutonomyHead(routine) {
|
|
38
|
+
const { rows } = await pool.query(
|
|
39
|
+
`SELECT head_sha FROM autonomy_runs
|
|
40
|
+
WHERE routine = $1 AND decision = 'go' AND head_sha IS NOT NULL
|
|
41
|
+
ORDER BY created_at DESC LIMIT 1`,
|
|
42
|
+
[routine]
|
|
43
|
+
);
|
|
44
|
+
return rows[0]?.head_sha || null;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
module.exports = {
|
|
48
|
+
recordAutonomyRun,
|
|
49
|
+
lastAutonomyHead,
|
|
50
|
+
};
|