@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,224 @@
|
|
|
1
|
+
-- 021_v3_renumber_and_deps.sql
|
|
2
|
+
-- GDS-V3 / task 309 / V3.R01b — Renumber the V3.R## prefix on every non-shipped
|
|
3
|
+
-- task to match topological dependency order, and write the dependency edges
|
|
4
|
+
-- into task_dependencies.
|
|
5
|
+
--
|
|
6
|
+
-- Idempotent: title rename is guarded by checking against the new prefix;
|
|
7
|
+
-- dep inserts use ON CONFLICT DO NOTHING.
|
|
8
|
+
--
|
|
9
|
+
-- After this migration applies, the auto-promotion trigger created in 020
|
|
10
|
+
-- is fully wired — when a task ships, its non-spike dependents auto-promote.
|
|
11
|
+
BEGIN;
|
|
12
|
+
|
|
13
|
+
-- ============================================================================
|
|
14
|
+
-- 1. Renumber V3.R## title prefix (topologically sorted)
|
|
15
|
+
-- Pattern: 'V3.R<old> — <rest>' becomes 'V3.R<new> — <rest>'
|
|
16
|
+
-- Idempotent: only updates if the prefix doesn't already match the new value.
|
|
17
|
+
-- ============================================================================
|
|
18
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R01b ', 'V3.R02 ') WHERE id = 309 AND title LIKE 'V3.R01b %';
|
|
19
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R02 ', 'V3.R03 ') WHERE id = 229 AND title LIKE 'V3.R02 %';
|
|
20
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R03 ', 'V3.R04 ') WHERE id = 230 AND title LIKE 'V3.R03 %';
|
|
21
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R04 ', 'V3.R05 ') WHERE id = 106 AND title LIKE 'V3.R04 %';
|
|
22
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R05 ', 'V3.R06 ') WHERE id = 231 AND title LIKE 'V3.R05 %';
|
|
23
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R06 ', 'V3.R07 ') WHERE id = 232 AND title LIKE 'V3.R06 %';
|
|
24
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R07 ', 'V3.R08 ') WHERE id = 233 AND title LIKE 'V3.R07 %';
|
|
25
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R08 ', 'V3.R09 ') WHERE id = 234 AND title LIKE 'V3.R08 %';
|
|
26
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R09 ', 'V3.R10 ') WHERE id = 235 AND title LIKE 'V3.R09 %';
|
|
27
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R10 ', 'V3.R11 ') WHERE id = 91 AND title LIKE 'V3.R10 %';
|
|
28
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R11 ', 'V3.R12 ') WHERE id = 236 AND title LIKE 'V3.R11 %';
|
|
29
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R12 ', 'V3.R13 ') WHERE id = 237 AND title LIKE 'V3.R12 %';
|
|
30
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R13 ', 'V3.R14 ') WHERE id = 238 AND title LIKE 'V3.R13 %';
|
|
31
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R14 ', 'V3.R15 ') WHERE id = 239 AND title LIKE 'V3.R14 %';
|
|
32
|
+
-- R16 → R16: no change (task id=240)
|
|
33
|
+
-- R17 → R17: no change (task id=241)
|
|
34
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R15 ', 'V3.R18 ') WHERE id = 222 AND title LIKE 'V3.R15 %';
|
|
35
|
+
-- R19 → R19: no change (task id=201)
|
|
36
|
+
-- R20 → R20: no change (task id=202)
|
|
37
|
+
-- R21 → R21: no change (task id=98)
|
|
38
|
+
-- R22 → R22: no change (task id=242)
|
|
39
|
+
-- R23 → R23: no change (task id=243)
|
|
40
|
+
-- R24 → R24: no change (task id=244)
|
|
41
|
+
-- R25 → R25: no change (task id=245)
|
|
42
|
+
-- R26 → R26: no change (task id=246)
|
|
43
|
+
-- R27 → R27: no change (task id=247)
|
|
44
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R29 ', 'V3.R28 ') WHERE id = 249 AND title LIKE 'V3.R29 %';
|
|
45
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R30 ', 'V3.R29 ') WHERE id = 250 AND title LIKE 'V3.R30 %';
|
|
46
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R31 ', 'V3.R30 ') WHERE id = 251 AND title LIKE 'V3.R31 %';
|
|
47
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R32 ', 'V3.R31 ') WHERE id = 252 AND title LIKE 'V3.R32 %';
|
|
48
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R28 ', 'V3.R32 ') WHERE id = 248 AND title LIKE 'V3.R28 %';
|
|
49
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R34 ', 'V3.R33 ') WHERE id = 254 AND title LIKE 'V3.R34 %';
|
|
50
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R35 ', 'V3.R34 ') WHERE id = 255 AND title LIKE 'V3.R35 %';
|
|
51
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R36 ', 'V3.R35 ') WHERE id = 256 AND title LIKE 'V3.R36 %';
|
|
52
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R37 ', 'V3.R36 ') WHERE id = 257 AND title LIKE 'V3.R37 %';
|
|
53
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R38 ', 'V3.R37 ') WHERE id = 258 AND title LIKE 'V3.R38 %';
|
|
54
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R39 ', 'V3.R38 ') WHERE id = 259 AND title LIKE 'V3.R39 %';
|
|
55
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R40 ', 'V3.R39 ') WHERE id = 260 AND title LIKE 'V3.R40 %';
|
|
56
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R41 ', 'V3.R40 ') WHERE id = 261 AND title LIKE 'V3.R41 %';
|
|
57
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R42 ', 'V3.R41 ') WHERE id = 262 AND title LIKE 'V3.R42 %';
|
|
58
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R43 ', 'V3.R42 ') WHERE id = 263 AND title LIKE 'V3.R43 %';
|
|
59
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R44 ', 'V3.R43 ') WHERE id = 264 AND title LIKE 'V3.R44 %';
|
|
60
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R33 ', 'V3.R44 ') WHERE id = 253 AND title LIKE 'V3.R33 %';
|
|
61
|
+
-- R45 → R45: no change (task id=265)
|
|
62
|
+
-- R46 → R46: no change (task id=224)
|
|
63
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R48 ', 'V3.R47 ') WHERE id = 266 AND title LIKE 'V3.R48 %';
|
|
64
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R49 ', 'V3.R48 ') WHERE id = 267 AND title LIKE 'V3.R49 %';
|
|
65
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R50 ', 'V3.R49 ') WHERE id = 268 AND title LIKE 'V3.R50 %';
|
|
66
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R51 ', 'V3.R50 ') WHERE id = 269 AND title LIKE 'V3.R51 %';
|
|
67
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R52 ', 'V3.R51 ') WHERE id = 270 AND title LIKE 'V3.R52 %';
|
|
68
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R53 ', 'V3.R52 ') WHERE id = 271 AND title LIKE 'V3.R53 %';
|
|
69
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R54 ', 'V3.R53 ') WHERE id = 272 AND title LIKE 'V3.R54 %';
|
|
70
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R55 ', 'V3.R54 ') WHERE id = 273 AND title LIKE 'V3.R55 %';
|
|
71
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R56 ', 'V3.R55 ') WHERE id = 274 AND title LIKE 'V3.R56 %';
|
|
72
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R57 ', 'V3.R56 ') WHERE id = 275 AND title LIKE 'V3.R57 %';
|
|
73
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R58 ', 'V3.R57 ') WHERE id = 276 AND title LIKE 'V3.R58 %';
|
|
74
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R59 ', 'V3.R58 ') WHERE id = 277 AND title LIKE 'V3.R59 %';
|
|
75
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R60 ', 'V3.R59 ') WHERE id = 278 AND title LIKE 'V3.R60 %';
|
|
76
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R61 ', 'V3.R60 ') WHERE id = 279 AND title LIKE 'V3.R61 %';
|
|
77
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R62 ', 'V3.R61 ') WHERE id = 280 AND title LIKE 'V3.R62 %';
|
|
78
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R63 ', 'V3.R62 ') WHERE id = 281 AND title LIKE 'V3.R63 %';
|
|
79
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R64 ', 'V3.R63 ') WHERE id = 282 AND title LIKE 'V3.R64 %';
|
|
80
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R65 ', 'V3.R64 ') WHERE id = 283 AND title LIKE 'V3.R65 %';
|
|
81
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R66 ', 'V3.R65 ') WHERE id = 284 AND title LIKE 'V3.R66 %';
|
|
82
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R67 ', 'V3.R66 ') WHERE id = 285 AND title LIKE 'V3.R67 %';
|
|
83
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R68 ', 'V3.R67 ') WHERE id = 286 AND title LIKE 'V3.R68 %';
|
|
84
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R69 ', 'V3.R68 ') WHERE id = 287 AND title LIKE 'V3.R69 %';
|
|
85
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R70 ', 'V3.R69 ') WHERE id = 288 AND title LIKE 'V3.R70 %';
|
|
86
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R71 ', 'V3.R70 ') WHERE id = 289 AND title LIKE 'V3.R71 %';
|
|
87
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R72 ', 'V3.R71 ') WHERE id = 290 AND title LIKE 'V3.R72 %';
|
|
88
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R73 ', 'V3.R72 ') WHERE id = 291 AND title LIKE 'V3.R73 %';
|
|
89
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R74 ', 'V3.R73 ') WHERE id = 292 AND title LIKE 'V3.R74 %';
|
|
90
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R75 ', 'V3.R74 ') WHERE id = 293 AND title LIKE 'V3.R75 %';
|
|
91
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R76 ', 'V3.R75 ') WHERE id = 294 AND title LIKE 'V3.R76 %';
|
|
92
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R77 ', 'V3.R76 ') WHERE id = 295 AND title LIKE 'V3.R77 %';
|
|
93
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R78 ', 'V3.R77 ') WHERE id = 296 AND title LIKE 'V3.R78 %';
|
|
94
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R79 ', 'V3.R78 ') WHERE id = 297 AND title LIKE 'V3.R79 %';
|
|
95
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R80 ', 'V3.R79 ') WHERE id = 298 AND title LIKE 'V3.R80 %';
|
|
96
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R82 ', 'V3.R80 ') WHERE id = 300 AND title LIKE 'V3.R82 %';
|
|
97
|
+
-- R81 → R81: no change (task id=299)
|
|
98
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R83 ', 'V3.R82 ') WHERE id = 301 AND title LIKE 'V3.R83 %';
|
|
99
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R85 ', 'V3.R83 ') WHERE id = 303 AND title LIKE 'V3.R85 %';
|
|
100
|
+
-- R84 → R84: no change (task id=302)
|
|
101
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R86 ', 'V3.R85 ') WHERE id = 304 AND title LIKE 'V3.R86 %';
|
|
102
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R87 ', 'V3.R86 ') WHERE id = 305 AND title LIKE 'V3.R87 %';
|
|
103
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R88 ', 'V3.R87 ') WHERE id = 306 AND title LIKE 'V3.R88 %';
|
|
104
|
+
UPDATE tasks SET title = regexp_replace(title, '^V3\.R89 ', 'V3.R88 ') WHERE id = 307 AND title LIKE 'V3.R89 %';
|
|
105
|
+
|
|
106
|
+
-- ============================================================================
|
|
107
|
+
-- 2. Insert task_dependencies rows
|
|
108
|
+
-- Each task gets one INSERT per dep edge. ON CONFLICT DO NOTHING makes the
|
|
109
|
+
-- migration safe to re-run.
|
|
110
|
+
--
|
|
111
|
+
-- FRESH-DB GUARD (task 1238 / ADR 0062 §5 + §8): the 86 edges below reference
|
|
112
|
+
-- THIS instance's V3 task rows, which are seeded by scripts/pms/seed-v3-tasks.js
|
|
113
|
+
-- (a JS seed run on prod AFTER migration 018) — NOT by any SQL migration. On a
|
|
114
|
+
-- fresh / empty instance DB those task rows don't exist, so the INSERTs would
|
|
115
|
+
-- violate task_dependencies' FK to tasks(id) — and ON CONFLICT does NOT suppress
|
|
116
|
+
-- an FK violation. This block is OTB-instance prod data, so skip it wholesale when
|
|
117
|
+
-- `tasks` is empty; the core migration history then replays cleanly on an empty DB
|
|
118
|
+
-- (the C8 customer-0 bringup). On prod the rows exist AND this migration is already
|
|
119
|
+
-- recorded in schema_migrations, so it never re-runs there regardless.
|
|
120
|
+
-- ============================================================================
|
|
121
|
+
DO $$
|
|
122
|
+
BEGIN
|
|
123
|
+
IF NOT EXISTS (SELECT 1 FROM tasks) THEN
|
|
124
|
+
RAISE NOTICE 'task 1238: tasks table empty — skipping the V3 dependency seed (fresh-DB replay)';
|
|
125
|
+
RETURN;
|
|
126
|
+
END IF;
|
|
127
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (106, 229) ON CONFLICT DO NOTHING; -- R04->R02
|
|
128
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (231, 229) ON CONFLICT DO NOTHING; -- R05->R02
|
|
129
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (231, 106) ON CONFLICT DO NOTHING; -- R05->R04
|
|
130
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (232, 106) ON CONFLICT DO NOTHING; -- R06->R04
|
|
131
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (232, 231) ON CONFLICT DO NOTHING; -- R06->R05
|
|
132
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (234, 233) ON CONFLICT DO NOTHING; -- R08->R07
|
|
133
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (235, 234) ON CONFLICT DO NOTHING; -- R09->R08
|
|
134
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (91, 234) ON CONFLICT DO NOTHING; -- R10->R08
|
|
135
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (238, 231) ON CONFLICT DO NOTHING; -- R13->R05
|
|
136
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (238, 232) ON CONFLICT DO NOTHING; -- R13->R06
|
|
137
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (239, 106) ON CONFLICT DO NOTHING; -- R14->R04
|
|
138
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (240, 106) ON CONFLICT DO NOTHING; -- R16->R04
|
|
139
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (241, 233) ON CONFLICT DO NOTHING; -- R17->R07
|
|
140
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (241, 234) ON CONFLICT DO NOTHING; -- R17->R08
|
|
141
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (241, 237) ON CONFLICT DO NOTHING; -- R17->R12
|
|
142
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (241, 238) ON CONFLICT DO NOTHING; -- R17->R13
|
|
143
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (241, 239) ON CONFLICT DO NOTHING; -- R17->R14
|
|
144
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (241, 240) ON CONFLICT DO NOTHING; -- R17->R16
|
|
145
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (222, 241) ON CONFLICT DO NOTHING; -- R15->R17
|
|
146
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (202, 201) ON CONFLICT DO NOTHING; -- R20->R19
|
|
147
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (98, 201) ON CONFLICT DO NOTHING; -- R21->R19
|
|
148
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (98, 202) ON CONFLICT DO NOTHING; -- R21->R20
|
|
149
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (242, 201) ON CONFLICT DO NOTHING; -- R22->R19
|
|
150
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (242, 202) ON CONFLICT DO NOTHING; -- R22->R20
|
|
151
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (245, 244) ON CONFLICT DO NOTHING; -- R25->R24
|
|
152
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (246, 244) ON CONFLICT DO NOTHING; -- R26->R24
|
|
153
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (249, 232) ON CONFLICT DO NOTHING; -- R29->R06
|
|
154
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (250, 231) ON CONFLICT DO NOTHING; -- R30->R05
|
|
155
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (251, 231) ON CONFLICT DO NOTHING; -- R31->R05
|
|
156
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (252, 229) ON CONFLICT DO NOTHING; -- R32->R02
|
|
157
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (248, 244) ON CONFLICT DO NOTHING; -- R28->R24
|
|
158
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (248, 252) ON CONFLICT DO NOTHING; -- R28->R32
|
|
159
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (255, 254) ON CONFLICT DO NOTHING; -- R35->R34
|
|
160
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (261, 260) ON CONFLICT DO NOTHING; -- R41->R40
|
|
161
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (262, 260) ON CONFLICT DO NOTHING; -- R42->R40
|
|
162
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (262, 261) ON CONFLICT DO NOTHING; -- R42->R41
|
|
163
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (263, 256) ON CONFLICT DO NOTHING; -- R43->R36
|
|
164
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (264, 229) ON CONFLICT DO NOTHING; -- R44->R02
|
|
165
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (264, 231) ON CONFLICT DO NOTHING; -- R44->R05
|
|
166
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (253, 254) ON CONFLICT DO NOTHING; -- R33->R34
|
|
167
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (253, 264) ON CONFLICT DO NOTHING; -- R33->R44
|
|
168
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (265, 264) ON CONFLICT DO NOTHING; -- R45->R44
|
|
169
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (271, 256) ON CONFLICT DO NOTHING; -- R53->R36
|
|
170
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (272, 260) ON CONFLICT DO NOTHING; -- R54->R40
|
|
171
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (272, 262) ON CONFLICT DO NOTHING; -- R54->R42
|
|
172
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (273, 230) ON CONFLICT DO NOTHING; -- R55->R03
|
|
173
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (274, 273) ON CONFLICT DO NOTHING; -- R56->R55
|
|
174
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (275, 273) ON CONFLICT DO NOTHING; -- R57->R55
|
|
175
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (275, 274) ON CONFLICT DO NOTHING; -- R57->R56
|
|
176
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (276, 273) ON CONFLICT DO NOTHING; -- R58->R55
|
|
177
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (277, 230) ON CONFLICT DO NOTHING; -- R59->R03
|
|
178
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (279, 257) ON CONFLICT DO NOTHING; -- R61->R37
|
|
179
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (280, 273) ON CONFLICT DO NOTHING; -- R62->R55
|
|
180
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (280, 275) ON CONFLICT DO NOTHING; -- R62->R57
|
|
181
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (281, 273) ON CONFLICT DO NOTHING; -- R63->R55
|
|
182
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (283, 254) ON CONFLICT DO NOTHING; -- R65->R34
|
|
183
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (283, 282) ON CONFLICT DO NOTHING; -- R65->R64
|
|
184
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (285, 256) ON CONFLICT DO NOTHING; -- R67->R36
|
|
185
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (285, 258) ON CONFLICT DO NOTHING; -- R67->R38
|
|
186
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (285, 282) ON CONFLICT DO NOTHING; -- R67->R64
|
|
187
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (286, 260) ON CONFLICT DO NOTHING; -- R68->R40
|
|
188
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (286, 262) ON CONFLICT DO NOTHING; -- R68->R42
|
|
189
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (286, 282) ON CONFLICT DO NOTHING; -- R68->R64
|
|
190
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (286, 284) ON CONFLICT DO NOTHING; -- R68->R66
|
|
191
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (286, 285) ON CONFLICT DO NOTHING; -- R68->R67
|
|
192
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (288, 282) ON CONFLICT DO NOTHING; -- R70->R64
|
|
193
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (288, 285) ON CONFLICT DO NOTHING; -- R70->R67
|
|
194
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (291, 202) ON CONFLICT DO NOTHING; -- R73->R20
|
|
195
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (292, 202) ON CONFLICT DO NOTHING; -- R74->R20
|
|
196
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (292, 242) ON CONFLICT DO NOTHING; -- R74->R22
|
|
197
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (292, 263) ON CONFLICT DO NOTHING; -- R74->R43
|
|
198
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (293, 285) ON CONFLICT DO NOTHING; -- R75->R67
|
|
199
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (294, 106) ON CONFLICT DO NOTHING; -- R76->R04
|
|
200
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (294, 238) ON CONFLICT DO NOTHING; -- R76->R13
|
|
201
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (296, 238) ON CONFLICT DO NOTHING; -- R78->R13
|
|
202
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (296, 294) ON CONFLICT DO NOTHING; -- R78->R76
|
|
203
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (297, 239) ON CONFLICT DO NOTHING; -- R79->R14
|
|
204
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (299, 300) ON CONFLICT DO NOTHING; -- R81->R82
|
|
205
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (301, 106) ON CONFLICT DO NOTHING; -- R83->R04
|
|
206
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (301, 239) ON CONFLICT DO NOTHING; -- R83->R14
|
|
207
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (303, 236) ON CONFLICT DO NOTHING; -- R85->R11
|
|
208
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (302, 303) ON CONFLICT DO NOTHING; -- R84->R85
|
|
209
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (305, 229) ON CONFLICT DO NOTHING; -- R87->R02
|
|
210
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (306, 231) ON CONFLICT DO NOTHING; -- R88->R05
|
|
211
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (306, 250) ON CONFLICT DO NOTHING; -- R88->R30
|
|
212
|
+
INSERT INTO task_dependencies (task_id, depends_on_task_id) VALUES (306, 251) ON CONFLICT DO NOTHING; -- R88->R31
|
|
213
|
+
END $$;
|
|
214
|
+
|
|
215
|
+
-- Total dependency edges inserted: 86
|
|
216
|
+
|
|
217
|
+
-- ============================================================================
|
|
218
|
+
-- 3. Bump migration counter + register migration
|
|
219
|
+
-- ============================================================================
|
|
220
|
+
UPDATE migration_counter SET next_number = GREATEST(next_number, 22) WHERE id = 1;
|
|
221
|
+
INSERT INTO schema_migrations (version) VALUES ('021_v3_renumber_and_deps')
|
|
222
|
+
ON CONFLICT (version) DO NOTHING;
|
|
223
|
+
|
|
224
|
+
COMMIT;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
-- 022_v3_reconcile_dep_gated_status.sql
|
|
2
|
+
-- GDS-V3 / task 347 / V3.R02-followup — Reconcile dep-gated task status.
|
|
3
|
+
--
|
|
4
|
+
-- Migration 021 wired dependency edges onto existing GDS-V3 tasks
|
|
5
|
+
-- retroactively, but did not demote tasks that were ALREADY 'ready' and now
|
|
6
|
+
-- carry an unshipped dependency. Result: ~51 tasks displayed as 'ready' in
|
|
7
|
+
-- /builder-start yet returned 409 DEPS_NOT_SHIPPED on claim (the claim-time
|
|
8
|
+
-- guard in src/bongos/db.js caught them). The queue lied about what was
|
|
9
|
+
-- actually claimable.
|
|
10
|
+
--
|
|
11
|
+
-- Fix: demote every 'ready' task that has at least one unshipped dependency
|
|
12
|
+
-- back to 'backlog'. The auto-promotion trigger from migration 020 then
|
|
13
|
+
-- re-promotes each one to 'ready' the moment its last dependency ships.
|
|
14
|
+
--
|
|
15
|
+
-- Invariant restored: a task is 'ready' only if all of its dependencies are
|
|
16
|
+
-- 'shipped'. Spikes are unaffected (they already live in backlog by policy).
|
|
17
|
+
--
|
|
18
|
+
-- Idempotent: the demotion is conditioned on the presence of an unshipped
|
|
19
|
+
-- dependency, so re-running after deps ship is a no-op. Tasks already in
|
|
20
|
+
-- backlog are not in scope (WHERE status = 'ready').
|
|
21
|
+
BEGIN;
|
|
22
|
+
|
|
23
|
+
UPDATE tasks t
|
|
24
|
+
SET status = 'backlog',
|
|
25
|
+
updated_at = now()
|
|
26
|
+
WHERE t.version_id = 'GDS-V3'
|
|
27
|
+
AND t.status = 'ready'
|
|
28
|
+
AND EXISTS (
|
|
29
|
+
SELECT 1
|
|
30
|
+
FROM task_dependencies d
|
|
31
|
+
JOIN tasks dep ON dep.id = d.depends_on_task_id
|
|
32
|
+
WHERE d.task_id = t.id
|
|
33
|
+
AND dep.status <> 'shipped'
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
-- Bump migration counter (021 left it at 22, which this file consumes) + register.
|
|
37
|
+
UPDATE migration_counter SET next_number = GREATEST(next_number, 23) WHERE id = 1;
|
|
38
|
+
INSERT INTO schema_migrations (version) VALUES ('022_v3_reconcile_dep_gated_status')
|
|
39
|
+
ON CONFLICT (version) DO NOTHING;
|
|
40
|
+
|
|
41
|
+
COMMIT;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
-- V3.R05 (#106): Builder rank system — ancient-Greek hierarchy.
|
|
2
|
+
--
|
|
3
|
+
-- Authority lives in ONE place: builders.rank, on the production DB, checked
|
|
4
|
+
-- server-side per request with no caching (see ADR 0016). This migration adds
|
|
5
|
+
-- the rank column; the FOUNDING admin is no longer hard-coded here. It is seated
|
|
6
|
+
-- at first enrollment from instance config (the configured firstAdmin), idempotent
|
|
7
|
+
-- and only while no Archon exists yet — see src/bongos/auth.js maybeSeatFirstAdmin
|
|
8
|
+
-- (ADR 0062 R62 / task 1201). This keeps the build-system core free of any one
|
|
9
|
+
-- instance's owner identity; the live instance was already seated by the original
|
|
10
|
+
-- form of this migration, so prod is unaffected.
|
|
11
|
+
--
|
|
12
|
+
-- Live ranks for V3: Archon + Thetes. The full enum is reserved up front so
|
|
13
|
+
-- future ranks (the reserved ladder in task #106) don't need a schema change —
|
|
14
|
+
-- adding a rank to the live set later is a code-only change (route grants),
|
|
15
|
+
-- never a migration.
|
|
16
|
+
|
|
17
|
+
ALTER TABLE builders
|
|
18
|
+
ADD COLUMN IF NOT EXISTS rank text NOT NULL DEFAULT 'thetes'
|
|
19
|
+
CHECK (rank IN (
|
|
20
|
+
-- Divine — above-the-system
|
|
21
|
+
'olympian', 'hermes', 'oracle', 'demigod',
|
|
22
|
+
-- Citizen — the working ladder (archon + thetes LIVE in V3)
|
|
23
|
+
'archon', 'strategos', 'boule', 'aristoi', 'hippeis', 'zeugitai', 'thetes',
|
|
24
|
+
-- Outsider / sub-citizen — sandboxed
|
|
25
|
+
'metic', 'xenos', 'periokoi', 'doulos', 'helot'
|
|
26
|
+
));
|
|
27
|
+
|
|
28
|
+
-- No founding-admin literal here (R62 / task 1201): a fresh install seats its
|
|
29
|
+
-- configured firstAdmin in code, at that account's first enrollment, only while
|
|
30
|
+
-- no Archon exists. Every builder defaults to 'thetes' via the column default.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-- V3.R88 (#307): Graceful builder exit.
|
|
2
|
+
--
|
|
3
|
+
-- A builder can be deactivated (they quit / are offboarded) without losing any
|
|
4
|
+
-- history. status gates whether they can claim new work; their drachmae
|
|
5
|
+
-- (credits) and credit_log stay untouched (preserved indefinitely), their
|
|
6
|
+
-- shipped tasks and session_logs stay attributed to them, and an Archon can
|
|
7
|
+
-- reactivate them later. On exit their rank drops to the sandboxed 'xenos'
|
|
8
|
+
-- tier and their active claims are released cleanly (handled in app code).
|
|
9
|
+
|
|
10
|
+
ALTER TABLE builders
|
|
11
|
+
ADD COLUMN IF NOT EXISTS status text NOT NULL DEFAULT 'active'
|
|
12
|
+
CHECK (status IN ('active', 'inactive')),
|
|
13
|
+
ADD COLUMN IF NOT EXISTS deactivated_at timestamptz,
|
|
14
|
+
ADD COLUMN IF NOT EXISTS reactivated_at timestamptz,
|
|
15
|
+
ADD COLUMN IF NOT EXISTS deactivated_reason text;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
-- 027_builders_preferred_disciplines.sql — adds builders.preferred_disciplines.
|
|
2
|
+
--
|
|
3
|
+
-- A builder's preferred_disciplines is the set of interest areas they want
|
|
4
|
+
-- the work queue tilted toward — the builder-side mirror of tasks.discipline
|
|
5
|
+
-- (migration 014). Valid elements are the *real* interest areas only:
|
|
6
|
+
--
|
|
7
|
+
-- creative — map/world, quests, narrative, visual art, pixel pipeline
|
|
8
|
+
-- engineering — gameplay mechanics, infra, the GDS itself, perf, bugs
|
|
9
|
+
--
|
|
10
|
+
-- Encoding:
|
|
11
|
+
-- {} — no preference stated (default)
|
|
12
|
+
-- {creative} — creative only
|
|
13
|
+
-- {engineering} — engineering only
|
|
14
|
+
-- {creative,engineering} — "both"
|
|
15
|
+
--
|
|
16
|
+
-- Note the enum here is intentionally narrower than tasks.discipline, which
|
|
17
|
+
-- also carries 'unclassified' for un-triaged work. A builder never *prefers*
|
|
18
|
+
-- unclassified — that's a state of a task, not an interest area — so it is
|
|
19
|
+
-- excluded from the CHECK. Empty array is the builder equivalent of "no
|
|
20
|
+
-- preference yet".
|
|
21
|
+
--
|
|
22
|
+
-- Pairs with V3.R81 (#299), which consumes this column to gate the queue and
|
|
23
|
+
-- surface cross-discipline recommendations.
|
|
24
|
+
--
|
|
25
|
+
-- Idempotent: safe to re-run.
|
|
26
|
+
|
|
27
|
+
ALTER TABLE builders
|
|
28
|
+
ADD COLUMN IF NOT EXISTS preferred_disciplines text[] NOT NULL DEFAULT '{}';
|
|
29
|
+
|
|
30
|
+
-- Validate every element against the discipline enum (creative|engineering).
|
|
31
|
+
-- Postgres forbids subqueries in CHECK constraints, so we use the array
|
|
32
|
+
-- containment operator `<@` ("is contained by"): the constraint holds iff
|
|
33
|
+
-- every element of preferred_disciplines is in the allowed set. The empty
|
|
34
|
+
-- array `<@` anything is true, so the default {} passes.
|
|
35
|
+
DO $$
|
|
36
|
+
BEGIN
|
|
37
|
+
IF NOT EXISTS (
|
|
38
|
+
SELECT 1 FROM pg_constraint WHERE conname = 'builders_preferred_disciplines_check'
|
|
39
|
+
) THEN
|
|
40
|
+
ALTER TABLE builders ADD CONSTRAINT builders_preferred_disciplines_check
|
|
41
|
+
CHECK (preferred_disciplines <@ ARRAY['creative', 'engineering']::text[]);
|
|
42
|
+
END IF;
|
|
43
|
+
END$$;
|
|
44
|
+
|
|
45
|
+
INSERT INTO schema_migrations (version) VALUES ('027_builders_preferred_disciplines')
|
|
46
|
+
ON CONFLICT (version) DO NOTHING;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
-- 028_tasks_parallel_safe.sql — adds tasks.parallel_safe.
|
|
2
|
+
--
|
|
3
|
+
-- The autonomous overnight session-runner (task #358) can run several tasks at
|
|
4
|
+
-- once in separate sub-agents when the operator opts into parallel mode
|
|
5
|
+
-- (--parallel N). `touches[]` disjointness already prevents *file* collisions
|
|
6
|
+
-- mechanically (claimable_tasks + the unique active-claim index), but some
|
|
7
|
+
-- tasks are unsafe to run concurrently for non-file reasons: they restart the
|
|
8
|
+
-- server, mutate shared infra/DB, or run long deploys. parallel_safe is the
|
|
9
|
+
-- human/planning judgment layered on top of the mechanical touches check.
|
|
10
|
+
--
|
|
11
|
+
-- Encoding (deliberately conservative — unset means "do NOT fan out"):
|
|
12
|
+
-- NULL — not yet judged (default). Treated as serial-only by the runner.
|
|
13
|
+
-- false — explicitly unsafe to run alongside other tasks.
|
|
14
|
+
-- true — safe to run concurrently (subject to touches[] disjointness too).
|
|
15
|
+
--
|
|
16
|
+
-- A task is eligible for a parallel slot iff it is autonomous-fit
|
|
17
|
+
-- (tasks_session_fit → 'autonomous' ∈ fits_session_modes, i.e.
|
|
18
|
+
-- automation_tag='overnight-safe' AND manual_degree<=2 AND no blocker) AND
|
|
19
|
+
-- parallel_safe = true. See src/bongos/db.js listClaimableTasks({ fit: 'parallel' }).
|
|
20
|
+
--
|
|
21
|
+
-- Idempotent: safe to re-run.
|
|
22
|
+
|
|
23
|
+
ALTER TABLE tasks
|
|
24
|
+
ADD COLUMN IF NOT EXISTS parallel_safe boolean;
|
|
25
|
+
|
|
26
|
+
-- Rebuild the two SELECT t.* views so the new column flows through. Same
|
|
27
|
+
-- bodies as migration 015 — only the implicit t.* column list changes (it now
|
|
28
|
+
-- includes parallel_safe). DROP+CREATE rather than OR REPLACE because the
|
|
29
|
+
-- column-list changes; mirrors how migration 014 added `discipline`. Neither
|
|
30
|
+
-- view has dependents (verified against pg_depend at migration-write time).
|
|
31
|
+
|
|
32
|
+
DROP VIEW IF EXISTS claimable_tasks;
|
|
33
|
+
CREATE VIEW claimable_tasks AS
|
|
34
|
+
SELECT t.*,
|
|
35
|
+
pms_calibrated_minutes(t.est_minutes, t.kind) AS est_minutes_calibrated
|
|
36
|
+
FROM tasks t
|
|
37
|
+
WHERE t.status = 'ready'
|
|
38
|
+
AND t.title NOT LIKE '\_\_smoke\_\_%' ESCAPE '\'
|
|
39
|
+
AND NOT EXISTS (
|
|
40
|
+
SELECT 1 FROM task_blockers tb WHERE tb.task_id = t.id
|
|
41
|
+
)
|
|
42
|
+
AND NOT EXISTS (
|
|
43
|
+
SELECT 1 FROM claims c
|
|
44
|
+
JOIN tasks t2 ON t2.id = c.task_id
|
|
45
|
+
WHERE c.released_at IS NULL
|
|
46
|
+
AND t2.touches && t.touches
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
DROP VIEW IF EXISTS tasks_session_fit;
|
|
50
|
+
CREATE VIEW tasks_session_fit AS
|
|
51
|
+
SELECT t.*,
|
|
52
|
+
CASE
|
|
53
|
+
WHEN t.automation_tag = 'overnight-safe' AND COALESCE(t.manual_degree, 5) <= 2
|
|
54
|
+
AND NOT EXISTS (SELECT 1 FROM task_blockers tb WHERE tb.task_id = t.id)
|
|
55
|
+
THEN ARRAY['autonomous','check-in','active']
|
|
56
|
+
WHEN t.automation_tag = 'live-only' OR COALESCE(t.manual_degree, 5) >= 4
|
|
57
|
+
THEN ARRAY['active']
|
|
58
|
+
ELSE ARRAY['check-in','active']
|
|
59
|
+
END AS fits_session_modes,
|
|
60
|
+
pms_calibrated_minutes(t.est_minutes, t.kind) AS est_minutes_calibrated,
|
|
61
|
+
CASE
|
|
62
|
+
WHEN t.credits_reward > 0
|
|
63
|
+
AND pms_calibrated_minutes(t.est_minutes, t.kind) IS NOT NULL
|
|
64
|
+
AND pms_calibrated_minutes(t.est_minutes, t.kind) > 0
|
|
65
|
+
THEN ROUND(t.credits_reward::numeric / pms_calibrated_minutes(t.est_minutes, t.kind), 3)
|
|
66
|
+
ELSE NULL
|
|
67
|
+
END AS credits_per_minute
|
|
68
|
+
FROM tasks t;
|
|
69
|
+
|
|
70
|
+
INSERT INTO schema_migrations (version) VALUES ('028_tasks_parallel_safe')
|
|
71
|
+
ON CONFLICT (version) DO NOTHING;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
-- 029_rank_three_live.sql — the three-rank model goes live (Xenos / Metic / Archon).
|
|
2
|
+
--
|
|
3
|
+
-- Context: task #360, follow-up to the V3.R86 (#305) CLAUDE.md audit, which
|
|
4
|
+
-- surfaced that the ENFORCED model (archon + thetes default, xenos = exit tier)
|
|
5
|
+
-- conflicted with the PLANNED model in V3 criterion C2 + the skills (xenos
|
|
6
|
+
-- default sandbox -> metic working rank -> archon). Lars chose to wire the
|
|
7
|
+
-- three-rank model for real. See ADR 0018.
|
|
8
|
+
--
|
|
9
|
+
-- This migration does the two SCHEMA pieces; the route-grant + claim-gate
|
|
10
|
+
-- pieces are code (src/bongos/*), not schema. Adding 'metic' to the live set is a
|
|
11
|
+
-- code change (it was already a reserved value in the migration 023 CHECK enum)
|
|
12
|
+
-- — no enum change is needed here.
|
|
13
|
+
--
|
|
14
|
+
-- Blast radius is zero: at the time this ran only the founding Archon existed. No thetes/metic/xenos
|
|
15
|
+
-- builders are live, so flipping the default affects only builders created from
|
|
16
|
+
-- now on. Existing rows are untouched (ALTER ... SET DEFAULT is not retroactive).
|
|
17
|
+
--
|
|
18
|
+
-- Idempotent: safe to re-run.
|
|
19
|
+
|
|
20
|
+
-- 1. New GitHub-authed builders now default to the sandboxed entry rank.
|
|
21
|
+
-- (Was 'thetes' in migration 023.) Metic is the Archon-approved working rank
|
|
22
|
+
-- a builder is deliberately promoted to; thetes joins the reserved ladder.
|
|
23
|
+
ALTER TABLE builders ALTER COLUMN rank SET DEFAULT 'xenos';
|
|
24
|
+
|
|
25
|
+
-- 2. The "explicitly-tagged-open" mechanism for the Xenos sandbox. A Xenos can
|
|
26
|
+
-- only claim tasks flagged open to them; everything else needs Metic+.
|
|
27
|
+
-- Default false = closed; an Archon opens a task by setting it true via
|
|
28
|
+
-- PATCH /api/gds/tasks/:id.
|
|
29
|
+
ALTER TABLE tasks ADD COLUMN IF NOT EXISTS xenos_claimable boolean NOT NULL DEFAULT false;
|
|
30
|
+
|
|
31
|
+
INSERT INTO schema_migrations (version) VALUES ('029_rank_three_live')
|
|
32
|
+
ON CONFLICT (version) DO NOTHING;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
-- 030_vulnerability_reports.sql — the red-team bounty intake table (V3.R63 / #282).
|
|
2
|
+
--
|
|
3
|
+
-- A builder who finds a security flaw files a vulnerability_report here. This is
|
|
4
|
+
-- the durable record of what was found, by whom, against what target, and how
|
|
5
|
+
-- the report was adjudicated (open → repro_attempted → confirmed/disputed →
|
|
6
|
+
-- fixed/wontfix). It is the foundation for:
|
|
7
|
+
-- R65 (#284, shipped) — the bounty payout table in src/bongos/security.js. The
|
|
8
|
+
-- `severity` CHECK below uses the SAME four tiers the bounty table keys
|
|
9
|
+
-- on (low/medium/high/critical) so a confirmed report maps cleanly to a
|
|
10
|
+
-- drachmae amount.
|
|
11
|
+
-- R67 — the Archon adjudication path (read ALL reports, change status).
|
|
12
|
+
-- R68 — auto-confirmation awards `drachmae_awarded` from the bounty table and
|
|
13
|
+
-- links a `fix_task_id` once the fix ships.
|
|
14
|
+
--
|
|
15
|
+
-- Unit convention: drachmae_awarded is the in-world currency (see credit_log in
|
|
16
|
+
-- 003_pms.sql) — a plain numeric count of drachmae, NULL until a report is
|
|
17
|
+
-- confirmed and paid out by R68. Stored numeric (not integer) to match the
|
|
18
|
+
-- task spec; the bounty defaults themselves are integers.
|
|
19
|
+
--
|
|
20
|
+
-- Idempotent: safe to re-run.
|
|
21
|
+
|
|
22
|
+
CREATE TABLE IF NOT EXISTS vulnerability_reports (
|
|
23
|
+
id bigserial PRIMARY KEY,
|
|
24
|
+
-- Who filed it. FK to builders, like every other ownership column in the GDS.
|
|
25
|
+
reporter_builder_id bigint NOT NULL REFERENCES builders(id),
|
|
26
|
+
-- What it's against (a component / route / surface). Free text, not an enum:
|
|
27
|
+
-- the attack surface isn't a closed set.
|
|
28
|
+
target text NOT NULL,
|
|
29
|
+
-- Severity tiers MUST match the bounty table keys in src/bongos/security.js
|
|
30
|
+
-- (SEVERITIES = ['low','medium','high','critical']). Keep these in sync — a
|
|
31
|
+
-- new tier is a coordinated change to both this CHECK and that module.
|
|
32
|
+
severity text NOT NULL CHECK (severity IN ('low', 'medium', 'high', 'critical')),
|
|
33
|
+
title text NOT NULL,
|
|
34
|
+
description text,
|
|
35
|
+
-- Reproduction steps as markdown (the report's evidence).
|
|
36
|
+
repro_steps_md text,
|
|
37
|
+
-- Adjudication lifecycle. open is the filing default; an Archon (R67) drives
|
|
38
|
+
-- it forward. confirmed/fixed are the payout-eligible terminal-ish states.
|
|
39
|
+
status text NOT NULL DEFAULT 'open'
|
|
40
|
+
CHECK (status IN ('open', 'repro_attempted', 'confirmed', 'disputed', 'fixed', 'wontfix')),
|
|
41
|
+
-- Adjudication timestamps — NULL until the corresponding transition happens.
|
|
42
|
+
confirmed_at timestamptz,
|
|
43
|
+
fixed_at timestamptz,
|
|
44
|
+
-- The task that fixes this vuln, once one exists (R68 links it).
|
|
45
|
+
fix_task_id bigint REFERENCES tasks(id),
|
|
46
|
+
-- Drachmae paid out on confirmation (R68 fills this from the bounty table).
|
|
47
|
+
-- NULL = not yet paid. numeric per the task spec.
|
|
48
|
+
drachmae_awarded numeric,
|
|
49
|
+
reported_at timestamptz NOT NULL DEFAULT now()
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
CREATE INDEX IF NOT EXISTS idx_vuln_reports_reporter ON vulnerability_reports (reporter_builder_id, reported_at DESC);
|
|
53
|
+
CREATE INDEX IF NOT EXISTS idx_vuln_reports_status ON vulnerability_reports (status, reported_at DESC);
|
|
54
|
+
CREATE INDEX IF NOT EXISTS idx_vuln_reports_severity ON vulnerability_reports (severity);
|
|
55
|
+
|
|
56
|
+
-- Bump the migration counter past 030 so the next claim that includes
|
|
57
|
+
-- 'migrations/' allocates 031.
|
|
58
|
+
UPDATE migration_counter SET next_number = GREATEST(next_number, 31) WHERE id = 1;
|
|
59
|
+
|
|
60
|
+
INSERT INTO schema_migrations (version) VALUES ('030_vulnerability_reports')
|
|
61
|
+
ON CONFLICT (version) DO NOTHING;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
-- 031_reward_simplification.sql — flip the simplification incentive (V3.R93 / #354).
|
|
2
|
+
--
|
|
3
|
+
-- Layer 2 (REWARD) of the code-simplification plan. Three coordinated changes,
|
|
4
|
+
-- all schema/seed (the streak un-exclusion + the net-negative credit path are
|
|
5
|
+
-- code changes in src/bongos/streak.js + src/bongos/db.js, not SQL):
|
|
6
|
+
--
|
|
7
|
+
-- 1. credit_log gains a nullable `description` column so the net-negative
|
|
8
|
+
-- ship bonus (db.js awardNetNegativeBonus) can record the raw
|
|
9
|
+
-- removed/added line counts and the reason inline, instead of cramming
|
|
10
|
+
-- everything into the short `reason` enum-ish string. Existing inserts use
|
|
11
|
+
-- explicit column lists and never touch `description`, so this is additive
|
|
12
|
+
-- and safe; old rows read back NULL.
|
|
13
|
+
--
|
|
14
|
+
-- 2. A new "Subtractor" achievement is seeded into the fixed catalog. It is
|
|
15
|
+
-- awarded via the EXISTING builder_achievements mechanism (see
|
|
16
|
+
-- src/bongos/achievements.js evaluateAfterShip) when a builder has earned the
|
|
17
|
+
-- net-negative ship bonus on >= 3 ships — i.e. they have, across multiple
|
|
18
|
+
-- ships, deleted more than they added. icon 🪓, credit_bonus 2 (same tier
|
|
19
|
+
-- as the other "ship a class of work" achievements).
|
|
20
|
+
--
|
|
21
|
+
-- 3. The streak-3 / streak-7 achievement descriptions are corrected: they
|
|
22
|
+
-- previously read "(>=15min, kind != cleanup)", but as of this task
|
|
23
|
+
-- cleanup/refactor ships DO count toward streaks (streak.js exclusion
|
|
24
|
+
-- removed). Keep the catalog text honest.
|
|
25
|
+
--
|
|
26
|
+
-- Idempotent: ADD COLUMN IF NOT EXISTS; achievement seed is upsert-on-id.
|
|
27
|
+
|
|
28
|
+
-- 1. credit_log.description ------------------------------------------------
|
|
29
|
+
ALTER TABLE credit_log ADD COLUMN IF NOT EXISTS description text;
|
|
30
|
+
|
|
31
|
+
-- 2. + 3. Achievement catalog ----------------------------------------------
|
|
32
|
+
-- New "Subtractor"; corrected streak descriptions. Upsert so re-running this
|
|
33
|
+
-- migration (or a later catalog edit) converges. credit_bonus / sort_order on
|
|
34
|
+
-- Subtractor mirror the other touches[]-class achievements (art/gds shippers).
|
|
35
|
+
INSERT INTO achievements (id, name, description, icon, credit_bonus, sort_order) VALUES
|
|
36
|
+
('subtractor', 'Subtractor',
|
|
37
|
+
'Earn the net-negative ship bonus on 3 ships — across your work you have deleted more than you have added.',
|
|
38
|
+
'🪓', 2, 65),
|
|
39
|
+
('streak-3', 'Streak: 3 Nights',
|
|
40
|
+
'Ship a task in 3 consecutive local-time nights (>=15min; cleanup/refactor now counts).',
|
|
41
|
+
'🔥', 2, 40),
|
|
42
|
+
('streak-7', 'Streak: 7 Nights',
|
|
43
|
+
'Ship a task in 7 consecutive local-time nights (>=15min; cleanup/refactor now counts).',
|
|
44
|
+
'🌋', 5, 50)
|
|
45
|
+
ON CONFLICT (id) DO UPDATE
|
|
46
|
+
SET name = EXCLUDED.name,
|
|
47
|
+
description = EXCLUDED.description,
|
|
48
|
+
icon = EXCLUDED.icon,
|
|
49
|
+
credit_bonus = EXCLUDED.credit_bonus,
|
|
50
|
+
sort_order = EXCLUDED.sort_order;
|
|
51
|
+
|
|
52
|
+
-- Bump the migration counter past 031 so the next claim that includes
|
|
53
|
+
-- 'migrations/' allocates 032.
|
|
54
|
+
UPDATE migration_counter SET next_number = GREATEST(next_number, 32) WHERE id = 1;
|
|
55
|
+
|
|
56
|
+
INSERT INTO schema_migrations (version) VALUES ('031_reward_simplification')
|
|
57
|
+
ON CONFLICT (version) DO NOTHING;
|