@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,440 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Seed the 24 net-new "Medusa" tasks (R50–R73) added to GDS-V4 in the
|
|
3
|
+
// 2026-06-17 Medusa Planning Session (meta task 1188 / claim 982).
|
|
4
|
+
//
|
|
5
|
+
// Medusa = decouple the GDS from the Amazonprimea game into a standalone,
|
|
6
|
+
// configurable, self-hostable, AGPL open-source, non-profit, AI-first build
|
|
7
|
+
// platform. Amazonprimea becomes instance 1.
|
|
8
|
+
//
|
|
9
|
+
// Companion migration 110_medusa_planning_seed.sql handles:
|
|
10
|
+
// - the 2 done_when_criteria rows (C8 = medusa-standalone-instance,
|
|
11
|
+
// C9 = medusa-open-and-protected) at sort_order 8/9
|
|
12
|
+
// - the Medusa clause appended to versions.GDS-V4 done_when
|
|
13
|
+
//
|
|
14
|
+
// This script handles the 24 net-new task creates (with their criterion_ids,
|
|
15
|
+
// resolved positionally as "C8"/"C9" against GDS-V4) and the dependency edges.
|
|
16
|
+
//
|
|
17
|
+
// Idempotent: skips tasks whose source_ref already exists; criterion links are
|
|
18
|
+
// inserted at create (idempotent on (task_id, criterion_id)); dependency wiring
|
|
19
|
+
// is idempotent on (task_id, depends_on_task_id).
|
|
20
|
+
//
|
|
21
|
+
// Ranking convention: priority is 1-5 (CHECK constraint). Fine-grained order
|
|
22
|
+
// lives in the V4.R## title prefix (zero-padded for sort). Tier→priority:
|
|
23
|
+
// roots P5, main build P4, advanced P3, long-pole P2, proofs/lockdown P1.
|
|
24
|
+
//
|
|
25
|
+
// Usage: node scripts/gds/seed-medusa-tasks.js [--dry-run]
|
|
26
|
+
|
|
27
|
+
const { cliClient, requireSession } = require('./cli-lib');
|
|
28
|
+
|
|
29
|
+
const DRY = process.argv.includes('--dry-run');
|
|
30
|
+
|
|
31
|
+
// Each entry: { ref, title, description, kind, discipline, priority,
|
|
32
|
+
// est_minutes, manual_degree, credits_reward, touches, criteria: ['C8'|'C9'],
|
|
33
|
+
// deps: ['R##', ...] }
|
|
34
|
+
// `ref` doubles as the V4.R## title prefix and (lowercased) as source_ref.
|
|
35
|
+
|
|
36
|
+
const TASKS = [
|
|
37
|
+
// =========================================================================
|
|
38
|
+
// C8 — Medusa stands on its own, unbranded (instance model)
|
|
39
|
+
// ----- Foundation (P5 roots) --------------------------------------------
|
|
40
|
+
{
|
|
41
|
+
ref: 'R50',
|
|
42
|
+
title: 'SPIKE — Medusa decoupling + instance-model architecture ADR',
|
|
43
|
+
description: `Part of Medusa (C8). First-principles architecture pass; output an ADR before the structural epics build.
|
|
44
|
+
|
|
45
|
+
Locks: the exact GDS/game boundary; the per-instance branding-contract schema (config/branding.json shape + resolution precedence + neutral starter); the feature-module selection mechanism (config-flag gating of route mounts, UI sections, skills, disciplines); the standalone entrypoint + GDS-owned DB-pool contract; the instance-config/upgrade contract; and the publishable-subtree boundary for the open mirror (C9). Confirms the decisions: one project per install, migrate-in-place (OTB = instance 1), keep Greek ranks, self-host canonical.
|
|
46
|
+
|
|
47
|
+
**Done when:** ADR merged covering boundary, branding contract, feature modules, entrypoint/DB contract, upgrade contract, publishable boundary, and rejected alternatives (multi-tenant, fork, plugin-registry-now). Gates R51/R52/R53/R71.`,
|
|
48
|
+
kind: 'spike', discipline: 'engineer', priority: 5,
|
|
49
|
+
est_minutes: 240, manual_degree: 3, credits_reward: 50,
|
|
50
|
+
touches: ['docs/adr/'], criteria: ['C8'], deps: [],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
ref: 'R51',
|
|
54
|
+
title: 'GDS-only entrypoint — boot Medusa with no game in the process',
|
|
55
|
+
description: `Part of Medusa (C8). Cross-ref: R50 design.
|
|
56
|
+
|
|
57
|
+
A Medusa-only boot (sibling to src/preview-server.js) that builds the Express app, mounts buildGdsRouter() + public-builders/ + public-status/, and constructs NO Colyseus game server and NO Phaser/tile static mounts. The existing game boot (server.js) stays untouched.
|
|
58
|
+
|
|
59
|
+
**Done when:** a smoke test boots Medusa, reaches /api/gds/health + the hall, and asserts no game route/asset is reachable in the process.`,
|
|
60
|
+
kind: 'infra', discipline: 'engineer', priority: 5,
|
|
61
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
62
|
+
touches: ['server.js', 'src/'], criteria: ['C8'], deps: ['R50'],
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
ref: 'R52',
|
|
66
|
+
title: 'GDS-owned DB pool + migration carve-out + drop the track enum',
|
|
67
|
+
description: `Part of Medusa (C8). Cross-ref: R50 design.
|
|
68
|
+
|
|
69
|
+
A GDS-owned pool reading DATABASE_URL/PG* (not hard-defaulting to the amazonprimea DB name); a GDS-only migration sequence (game migrations 001/002 simply not applied on a fresh non-game instance); drop the product/internal 'track' distinction. Live prod keeps its existing DB. Zero cross-FKs exist between game and GDS tables, so the split is clean.
|
|
70
|
+
|
|
71
|
+
**Done when:** a fresh-DB migration run produces only the build-system schema; a query asserts the game tables (world_events, players, seats) are absent; live prod unaffected.`,
|
|
72
|
+
kind: 'infra', discipline: 'engineer', priority: 5,
|
|
73
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
74
|
+
touches: ['src/db.js', 'src/bongos/db.js', 'migrations/'], criteria: ['C8'], deps: ['R50'],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
ref: 'R53',
|
|
78
|
+
title: 'Instance config + branding-contract layer (neutral starter, owner-LLM-filled)',
|
|
79
|
+
description: `Part of Medusa (C8). Cross-ref: R50 design. The keystone of the de-brand work.
|
|
80
|
+
|
|
81
|
+
A per-instance config layer (config/branding.json + a documented schema + a neutral starter + a fill-it-in prompt an owner's own LLM uses) supplying product name, domain/cookie apex, sign-in (OAuth) origin, repo binding, currency label, copy, fonts, palette, icons/favicon/cursors. Core reads identity + branding from this layer; defaults preserve live OTB exactly. NOT a vanilla strip — branding becomes per-instance config; OTB's look becomes instance 1's pack (extracted in R57).
|
|
82
|
+
|
|
83
|
+
**Done when:** core resolves all identity + branding from config; booting under a non-amazonprimea.com domain + a non-game name needs config only, no source edits. Gates most de-brand + self-host tasks.`,
|
|
84
|
+
kind: 'feature', discipline: 'engineer', priority: 5,
|
|
85
|
+
est_minutes: 360, manual_degree: 2, credits_reward: 60,
|
|
86
|
+
touches: ['config/', 'src/bongos/', 'public-builders/'], criteria: ['C8'], deps: ['R50'],
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
ref: 'R54',
|
|
90
|
+
title: 'Feature-module selection system — instances turn modules on/off',
|
|
91
|
+
description: `Part of Medusa (C8). Cross-ref: R50 design.
|
|
92
|
+
|
|
93
|
+
A config-flag layer that gates feature mounts per instance: route mounts (routes.js), hall/status UI sections, skills, and discipline/achievement sets all become modules an instance enables. OTB's instance enables the game/art/Discord/dev-box modules; a fresh instance enables none of them. (Config-flag exclusion, not a full plugin registry — that is the cheaper near-term mechanism.)
|
|
94
|
+
|
|
95
|
+
**Done when:** a fresh instance boots with a minimal default module set (vanilla = engineer discipline only); a module can be toggled via config and its routes/UI/skills appear or disappear accordingly.`,
|
|
96
|
+
kind: 'feature', discipline: 'engineer', priority: 5,
|
|
97
|
+
est_minutes: 300, manual_degree: 2, credits_reward: 60,
|
|
98
|
+
touches: ['src/bongos/routes.js', 'config/', 'src/bongos/'], criteria: ['C8'], deps: ['R51', 'R53'],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
ref: 'R55',
|
|
102
|
+
title: 'Non-Colyseus live channel for the hall (WS/SSE over the pg NOTIFY relay)',
|
|
103
|
+
description: `Part of Medusa (C8). Cross-ref: R51.
|
|
104
|
+
|
|
105
|
+
The hall's only realtime feature is a Colyseus room (BuildersHallRoom). A Medusa-only boot has no Colyseus, so the hall's live updates would be dead. Build a minimal standalone WS or SSE endpoint over the existing pg NOTIFY relay (src/bongos/live-channel.js) and rewire the hall client (public-builders/builders.js). REQUIRED for v1 — not a graceful static fallback.
|
|
106
|
+
|
|
107
|
+
**Done when:** the hall receives live updates on a Medusa-only boot with no game server in the process.`,
|
|
108
|
+
kind: 'feature', discipline: 'engineer', priority: 4,
|
|
109
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
110
|
+
touches: ['src/bongos/live-channel.js', 'public-builders/builders.js'], criteria: ['C8'], deps: ['R51'],
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
// ----- Instance-ize / de-brand (P4) -------------------------------------
|
|
114
|
+
{
|
|
115
|
+
ref: 'R56',
|
|
116
|
+
title: 'Currency → configurable label (drachmae becomes instance 1 config)',
|
|
117
|
+
description: `Part of Medusa (C8). Cross-ref: R53.
|
|
118
|
+
|
|
119
|
+
Make the reward currency a configurable label (neutral default; OTB's instance = "drachmae"). Touches the columns + UI copy that name the unit; keep the cost-plus reward MATH unchanged. Mind the idempotent per-session reward path (migration 091) and the credit_log restatement history — rename the label, do not disturb the idempotency key or the ledger math.
|
|
120
|
+
|
|
121
|
+
**Done when:** the currency label everywhere resolves from instance config; OTB still shows "drachmae"; reward math + idempotency untouched (existing reward tests green).`,
|
|
122
|
+
kind: 'refactor', discipline: 'engineer', priority: 4,
|
|
123
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
124
|
+
touches: ['migrations/', 'src/bongos/', 'public-builders/'], criteria: ['C8'], deps: ['R53'],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
ref: 'R57',
|
|
128
|
+
title: "Extract OTB's look into instance 1's branding pack (not a vanilla strip)",
|
|
129
|
+
description: `Part of Medusa (C8). Cross-ref: R53, R56.
|
|
130
|
+
|
|
131
|
+
Move the ~272 archaic strings, the Greek fonts, the parchment palette, favicon/cursors/SVG sigils, and the page copy out of the hall + status code and into instance 1's branding pack; core renders from the R53 branding layer with a neutral starter as the fallback. status.amazonprimea.com + builders.amazonprimea.com look IDENTICAL afterward — their look just comes from config now. Add a rank display-label map so the Greek rank LABELS are presentation (the enum stays Greek by decision).
|
|
132
|
+
|
|
133
|
+
**Done when:** no project branding is hard-coded in public-builders/ or public-status/; OTB's surfaces render unchanged from instance 1's pack; a fresh instance renders the neutral starter.`,
|
|
134
|
+
kind: 'refactor', discipline: 'engineer', priority: 4,
|
|
135
|
+
est_minutes: 360, manual_degree: 2, credits_reward: 60,
|
|
136
|
+
touches: ['public-builders/', 'public-status/', 'config/'], criteria: ['C8'], deps: ['R53', 'R56'],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
ref: 'R58',
|
|
140
|
+
title: 'Diagram generator reads instance branding (no re-brand on deploy)',
|
|
141
|
+
description: `Part of Medusa (C8). Cross-ref: R53.
|
|
142
|
+
|
|
143
|
+
scripts/gds/gen-diagrams.js auto-generates the onboarding diagrams + assertions.json on every deploy. Make its template strings + assertions read the instance branding config so deploy-time regeneration emits neutral (instance-correct) branding. Rank names stay Greek by decision. This prevents the "we de-branded but Greek text reappeared after the next deploy" regression.
|
|
144
|
+
|
|
145
|
+
**Done when:** running gen-diagrams.js under a neutral instance config produces diagrams + assertions.json with no hard-coded OTB/Amazonprimea tokens; OTB's instance still renders its own branding.`,
|
|
146
|
+
kind: 'refactor', discipline: 'engineer', priority: 4,
|
|
147
|
+
est_minutes: 180, manual_degree: 2, credits_reward: 30,
|
|
148
|
+
touches: ['scripts/gds/gen-diagrams.js'], criteria: ['C8'], deps: ['R53'],
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
ref: 'R59',
|
|
152
|
+
title: 'Game + art pipeline become OTB-enabled feature modules (kept, not deleted)',
|
|
153
|
+
description: `Part of Medusa (C8). Cross-ref: R54.
|
|
154
|
+
|
|
155
|
+
Move the game world/rooms, the art/ pixel-art pipeline, the 4 otb-* skills, the game-preview sandbox gate, and the game-flavored disciplines/achievements behind the R54 feature-module system as modules OTB's instance ENABLES. Strip "hermeslines" from the core task-classifier (becomes module config). Game tests run only when the game module is enabled. A fresh instance carries none of this.
|
|
156
|
+
|
|
157
|
+
**Done when:** OTB's instance enables the game/art modules and behaves as today; a fresh instance has no game/art routes, skills, disciplines, or tests active.`,
|
|
158
|
+
kind: 'refactor', discipline: 'engineer', priority: 4,
|
|
159
|
+
est_minutes: 300, manual_degree: 2, credits_reward: 50,
|
|
160
|
+
touches: ['src/bongos/', 'art/', '.claude/skills/'], criteria: ['C8'], deps: ['R54'],
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
ref: 'R60',
|
|
164
|
+
title: 'Discord + dev-box become instance modules (off by default)',
|
|
165
|
+
description: `Part of Medusa (C8). Cross-ref: R54.
|
|
166
|
+
|
|
167
|
+
Gate the Discord integration (routes.js mounts + the discord-*.js modules + channels.json/webhooks) and the DigitalOcean dev-box provisioning behind the R54 feature-module flags. Vanilla Medusa = no chat integration and no managed dev boxes (BYO-machine + server-mediated publish remains the default path). OTB's instance keeps both enabled.
|
|
168
|
+
|
|
169
|
+
**Done when:** a fresh instance boots with Discord + dev-box modules off and no related routes/config required; OTB's instance keeps them on.`,
|
|
170
|
+
kind: 'refactor', discipline: 'engineer', priority: 4,
|
|
171
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
172
|
+
touches: ['src/bongos/routes.js', 'src/bongos/discord-bot.js', 'src/bongos/boxes.js'], criteria: ['C8'], deps: ['R54'],
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
ref: 'R61',
|
|
176
|
+
title: 'Config-namespace + env-var rename (~/.config/otb + OTB_*/PMS_*/GDS_*)',
|
|
177
|
+
description: `Part of Medusa (C8). Cross-ref: R53.
|
|
178
|
+
|
|
179
|
+
The CLI config root (~/.config/otb/: gds-session.json, env, discord-webhooks.json, cost_ledger) and the OTB_*/PMS_*/GDS_* env-var prefixes are an instance-identity leak. Consolidate to a neutral product namespace driven by instance config, keeping back-compat shims for existing local sessions (the pms_session / PMS_* / ~/.config/otb read-side shims already set the precedent).
|
|
180
|
+
|
|
181
|
+
**Done when:** a fresh instance uses the neutral config dir + env prefix; existing OTB local sessions keep working via shims; docs + scripts updated.`,
|
|
182
|
+
kind: 'refactor', discipline: 'engineer', priority: 4,
|
|
183
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
184
|
+
touches: ['scripts/gds/', 'src/bongos/'], criteria: ['C8'], deps: ['R53'],
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
// ----- Self-host + adopt -------------------------------------------------
|
|
188
|
+
{
|
|
189
|
+
ref: 'R62',
|
|
190
|
+
title: 'Config-driven owner bootstrap + per-instance repo/OAuth binding',
|
|
191
|
+
description: `Part of Medusa (C8). Cross-ref: R52, R53.
|
|
192
|
+
|
|
193
|
+
Replace migration 023's hard-coded founding-Archon literal (UPDATE builders SET rank='archon' WHERE github_login='lars589') with an install-time first-admin bootstrap from instance config. Make the GitHub repo binding (repo-info.js — the OTB_GITHUB_OWNER/REPO seam already exists) and the OAuth/App config per-instance. Single-project model keeps the global economy fine — only the owner literal + repo/OAuth need to generalize.
|
|
194
|
+
|
|
195
|
+
**Done when:** grep over migrations/ returns zero login literals; a fresh install seats the configured first admin; repo + OAuth resolve from instance config.`,
|
|
196
|
+
kind: 'feature', discipline: 'engineer', priority: 4,
|
|
197
|
+
est_minutes: 300, manual_degree: 2, credits_reward: 50,
|
|
198
|
+
touches: ['migrations/', 'src/bongos/repo-info.js', 'src/bongos/auth.js'], criteria: ['C8'], deps: ['R52', 'R53'],
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
ref: 'R63',
|
|
202
|
+
title: 'Containerized self-host instance (Dockerfile + docker-compose)',
|
|
203
|
+
description: `Part of Medusa (C8). Cross-ref: R51, R52.
|
|
204
|
+
|
|
205
|
+
A Dockerfile + docker-compose (app + Postgres) that brings a Medusa instance up from clean state with ZERO hard-coded droplet IP (104.236.254.243), amazonprimea systemd unit, or hand-maintained ~/deploy.sh. This is the self-host artifact; it does not touch prod's existing laptop/CI deploy path.
|
|
206
|
+
|
|
207
|
+
**Done when:** \`docker compose up\` on a machine that has never seen our droplet brings up Medusa + Postgres and the hall is reachable; no prod topology referenced anywhere in the path.`,
|
|
208
|
+
kind: 'infra', discipline: 'engineer', priority: 4,
|
|
209
|
+
est_minutes: 300, manual_degree: 2, credits_reward: 50,
|
|
210
|
+
touches: ['Dockerfile', 'docker-compose.yml', 'infra/'], criteria: ['C8'], deps: ['R51', 'R52'],
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
ref: 'R64',
|
|
214
|
+
title: 'Platform-version + `medusa upgrade` path (config survives updates)',
|
|
215
|
+
description: `Part of Medusa (C8). Cross-ref: R63. This is what delivers "instances receive platform updates".
|
|
216
|
+
|
|
217
|
+
A core-version stamp per instance + an upgrade path (\`medusa upgrade\`) that pulls a new release and applies new migrations + code while PRESERVING the instance's config (branding pack, feature flags, identity, data). Pull-based by default (can be automated); managed/push hosting is a deferred optional layer on the same artifact.
|
|
218
|
+
|
|
219
|
+
**Done when:** an instance on core vN upgrades to vN+1 (migrations + code) with its branding + feature config + data intact.`,
|
|
220
|
+
kind: 'feature', discipline: 'engineer', priority: 3,
|
|
221
|
+
est_minutes: 300, manual_degree: 2, credits_reward: 50,
|
|
222
|
+
touches: ['scripts/', 'migrations/'], criteria: ['C8'], deps: ['R63'],
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
ref: 'R65',
|
|
226
|
+
title: 'Generic `medusa init` project onboarding (scaffold a new instance)',
|
|
227
|
+
description: `Part of Medusa (C8). Cross-ref: R53, R62.
|
|
228
|
+
|
|
229
|
+
A scaffold flow that stands up a new instance: identity + branding pack (via the owner's-own-LLM fill-it-in prompt) + feature-module selection + the project's first version, criteria, and invariants — replacing the bespoke 35–83KB seed-*.js-per-version pattern with a self-serve init. Enables the C8 dogfood proof (R67).
|
|
230
|
+
|
|
231
|
+
**Done when:** \`medusa init\` produces a working instance config + first version/criteria for a new project with no hand-written seed script.`,
|
|
232
|
+
kind: 'feature', discipline: 'engineer', priority: 3,
|
|
233
|
+
est_minutes: 360, manual_degree: 2, credits_reward: 60,
|
|
234
|
+
touches: ['scripts/gds/'], criteria: ['C8'], deps: ['R53', 'R62'],
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
ref: 'R66',
|
|
238
|
+
title: 'CLAUDE.md split — portable methodology core vs host-project context',
|
|
239
|
+
description: `Part of Medusa (C8). Cross-ref: R53.
|
|
240
|
+
|
|
241
|
+
Separate the portable methodology core Medusa ships (the working rules, the session protocol, the claim->ship lifecycle) from a host-project-authored project-context template (what CLAUDE.md is today for OTB). Fold in the AI-first documented norm (AI always writes the code) here. A new project authors its own context file against the template; Medusa ships the core.
|
|
242
|
+
|
|
243
|
+
**Done when:** Medusa ships a generic methodology core + a project-context template; OTB's CLAUDE.md becomes "instance 1's context" composed with the core; the AI-first norm is stated.`,
|
|
244
|
+
kind: 'refactor', discipline: 'engineer', priority: 3,
|
|
245
|
+
est_minutes: 240, manual_degree: 3, credits_reward: 40,
|
|
246
|
+
touches: ['CLAUDE.md', 'docs/'], criteria: ['C8'], deps: ['R53'],
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
ref: 'R67',
|
|
250
|
+
title: 'PROOF — Medusa dogfood: a second, differently-branded non-game instance ships a task',
|
|
251
|
+
description: `Part of Medusa (C8) — the proof-task that satisfies C8 ("the GDS builds itself"). Customer 0 = Medusa itself, running on the vanilla brand pack (R74); customer 1 = Amazonprimea.
|
|
252
|
+
|
|
253
|
+
Stand Medusa up as customer 0 (its own database, vanilla brand, no game code) and take one real task through the full lifecycle on it: claim -> grade -> merge -> ship with credits awarded. Medusa building Medusa, on Medusa. (A separate non-game third project is an acceptable alternative proof, but customer-0 self-build is the truest.)
|
|
254
|
+
|
|
255
|
+
**Done when:** a task reaches 'shipped' with credits on the customer-0 Medusa instance carrying zero game code; documented as the C8 acceptance.`,
|
|
256
|
+
kind: 'spike', discipline: 'engineer', priority: 1,
|
|
257
|
+
est_minutes: 240, manual_degree: 3, credits_reward: 60,
|
|
258
|
+
touches: ['docs/'], criteria: ['C8'], deps: ['R63', 'R64', 'R65', 'R74'],
|
|
259
|
+
},
|
|
260
|
+
|
|
261
|
+
// =========================================================================
|
|
262
|
+
// C9 — Medusa is open, free, and protected from capture
|
|
263
|
+
// =========================================================================
|
|
264
|
+
{
|
|
265
|
+
ref: 'R68',
|
|
266
|
+
title: 'DECISION/ADR — AGPL-3.0 license + non-profit, AI-first governance model',
|
|
267
|
+
description: `Part of Medusa (C9). Foundational decision for the open-source track.
|
|
268
|
+
|
|
269
|
+
Record the rationale: AGPL-3.0 (closes the hosted-closed-fork loophole; the only license consistent with the anti-monopoly goal), the non-profit posture (not monetized from contributors), and the AI-first norm (AI always writes the code — a documented expectation, not a technical gate, per this session's decision). Defines the publishable-subtree boundary jointly with R50.
|
|
270
|
+
|
|
271
|
+
**Done when:** ADR merged covering license choice + rejected alternatives (MIT/Apache/GPL), non-profit governance, AI-first norm, and the public-mirror boundary.`,
|
|
272
|
+
kind: 'decision', discipline: 'engineer', priority: 5,
|
|
273
|
+
est_minutes: 120, manual_degree: 3, credits_reward: 30,
|
|
274
|
+
touches: ['docs/adr/'], criteria: ['C9'], deps: [],
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
ref: 'R69',
|
|
278
|
+
title: 'AGPL-3.0 LICENSE file',
|
|
279
|
+
description: `Part of Medusa (C9). Cross-ref: R68.
|
|
280
|
+
|
|
281
|
+
Add the AGPL-3.0 LICENSE to the repo (and to the public mirror's publishable subtree). Add SPDX headers / NOTICE as the ADR specifies.
|
|
282
|
+
|
|
283
|
+
**Done when:** LICENSE present and correct; any required attribution/NOTICE in place.`,
|
|
284
|
+
kind: 'infra', discipline: 'engineer', priority: 4,
|
|
285
|
+
est_minutes: 30, manual_degree: 1, credits_reward: 15,
|
|
286
|
+
touches: ['LICENSE'], criteria: ['C9'], deps: ['R68'],
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
ref: 'R70',
|
|
290
|
+
title: 'Governance docs — GOVERNANCE + CONTRIBUTING + CODE_OF_CONDUCT',
|
|
291
|
+
description: `Part of Medusa (C9). Cross-ref: R68.
|
|
292
|
+
|
|
293
|
+
Author the non-profit, AI-first, anti-monopoly governance: GOVERNANCE.md (how decisions are made, who can do what — maps to the rank ladder), CONTRIBUTING.md (how a builder contributes AI-first via the GDS itself; how a new project adopts Medusa), CODE_OF_CONDUCT.md.
|
|
294
|
+
|
|
295
|
+
**Done when:** the three docs exist, state the non-profit + AI-first + anti-monopoly stance, and reference the rank ladder + claim->ship flow.`,
|
|
296
|
+
kind: 'feature', discipline: 'engineer', priority: 3,
|
|
297
|
+
est_minutes: 180, manual_degree: 3, credits_reward: 30,
|
|
298
|
+
touches: ['GOVERNANCE.md', 'CONTRIBUTING.md', 'CODE_OF_CONDUCT.md'], criteria: ['C9'], deps: ['R68'],
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
ref: 'R71',
|
|
302
|
+
title: 'Public mirror repo + publishable-subtree carve-out',
|
|
303
|
+
description: `Part of Medusa (C9). Cross-ref: R50 (boundary), R59 (game excised to a module).
|
|
304
|
+
|
|
305
|
+
Define the publishable boundary (the build system: src/bongos, scripts/gds, public-builders, migrations, skills, docs — EXCLUDING the game, art, infra/, scripts/deploy/, and trust-boundary/security internals) reusing the existing PROTECTED_GLOBS / SENSITIVE_DOC_GLOBS inventory, and create the public 'medusa' mirror repo. Extends the off-repo publish precedents (status mirror, devbox releases).
|
|
306
|
+
|
|
307
|
+
**Done when:** a public 'medusa' repo exists; a documented carve-out lists exactly what is publishable vs permanently excluded.`,
|
|
308
|
+
kind: 'infra', discipline: 'engineer', priority: 3,
|
|
309
|
+
est_minutes: 300, manual_degree: 3, credits_reward: 50,
|
|
310
|
+
touches: ['scripts/', '.github/'], criteria: ['C9'], deps: ['R50', 'R59'],
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
ref: 'R72',
|
|
314
|
+
title: 'Time-delayed (6-month) export pipeline + source-level redaction',
|
|
315
|
+
description: `Part of Medusa (C9). Cross-ref: R71. The XL long-pole of C9.
|
|
316
|
+
|
|
317
|
+
An automated pipeline that publishes commits/snapshots >= ~180 days old to the public mirror, with a redaction layer that strips secrets + prod topology (droplet IP, scripts/deploy/*, infra/, security internals) even from old commits — the 6-month delay alone does NOT scrub secrets. Reuse the scoped-deploy-key + status-mirror-sync precedent.
|
|
318
|
+
|
|
319
|
+
**Done when:** the pipeline publishes a redacted, ~6-month-lagged snapshot to the mirror on a schedule; a check proves no secret/topology string reaches the public repo.`,
|
|
320
|
+
kind: 'feature', discipline: 'engineer', priority: 2,
|
|
321
|
+
est_minutes: 480, manual_degree: 2, credits_reward: 80,
|
|
322
|
+
touches: ['scripts/', '.github/'], criteria: ['C9'], deps: ['R71'],
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
ref: 'R73',
|
|
326
|
+
title: 'PROOF — private<->public lineage consistency + no-leak check',
|
|
327
|
+
description: `Part of Medusa (C9) — the proof-task that satisfies C9.
|
|
328
|
+
|
|
329
|
+
Verify the private and public lineages stay consistent: migration numbering (the claim-time next_number allocator state) and enum values do not diverge between the private repo and the delayed public mirror. Add the no-leak assertion on the published mirror (no secrets, no prod topology).
|
|
330
|
+
|
|
331
|
+
**Done when:** a check confirms numbering/enum consistency private<->public AND the published mirror contains zero secret/topology strings; documented as the C9 acceptance.`,
|
|
332
|
+
kind: 'infra', discipline: 'engineer', priority: 1,
|
|
333
|
+
est_minutes: 180, manual_degree: 2, credits_reward: 40,
|
|
334
|
+
touches: ['scripts/', 'tests/'], criteria: ['C9'], deps: ['R72'],
|
|
335
|
+
},
|
|
336
|
+
|
|
337
|
+
// =========================================================================
|
|
338
|
+
// C8 (added 2026-06-17, task 1215) — the Medusa vanilla brand pack (customer 0)
|
|
339
|
+
// =========================================================================
|
|
340
|
+
{
|
|
341
|
+
ref: 'R74',
|
|
342
|
+
title: 'Medusa vanilla brand pack — the plain "customer 0" identity (Substack-like)',
|
|
343
|
+
description: `Part of Medusa (C8). Cross-ref: R53 (branding-contract layer), R57 (customer 1 / OTB pack).
|
|
344
|
+
|
|
345
|
+
Design + build the canonical Medusa VANILLA brand pack — the identity Medusa itself runs on as **customer 0** (Amazonprimea is customer 1). Deliberately PLAIN, clean, modern, professional — restrained palette, clean sans-serif type, minimal wordmark, plain-English product copy, simple favicon/icons. Aesthetic touchstone: Substack-plain; take INSPIRATION from planetscale.com's simplicity (do NOT copy). Delivered as a branding pack against the R53 contract; it is the default the hall + status render under when no other pack is supplied, and the brand Medusa ships on. Distinct from R57 (extracting customer 1 / OTB's Greek look) — this is customer 0's identity. No game/Greek flavor.
|
|
346
|
+
|
|
347
|
+
**Done when:** a complete Medusa vanilla brand pack (name/wordmark, restrained palette, clean type, plain copy, favicon/icons) renders the hall + status as a plain, professional dev toolkit; it is the pack customer 0 (Medusa) runs on; verified on the standalone boot.`,
|
|
348
|
+
kind: 'feature', discipline: 'artist', priority: 4,
|
|
349
|
+
est_minutes: 360, manual_degree: 3, credits_reward: 60,
|
|
350
|
+
touches: ['config/', 'public-builders/', 'public-status/'], criteria: ['C8'], deps: ['R53'],
|
|
351
|
+
},
|
|
352
|
+
];
|
|
353
|
+
|
|
354
|
+
async function main() {
|
|
355
|
+
await requireSession();
|
|
356
|
+
const api = await cliClient();
|
|
357
|
+
|
|
358
|
+
const list = await api.tasks.getTasks({ query: { version: 'GDS-V4' } });
|
|
359
|
+
const bySourceRef = {};
|
|
360
|
+
for (const t of list.data?.tasks || []) {
|
|
361
|
+
if (t.source_ref) bySourceRef[t.source_ref] = t;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
const idByRef = {};
|
|
365
|
+
let created = 0, skipped = 0, errors = 0;
|
|
366
|
+
|
|
367
|
+
for (const def of TASKS) {
|
|
368
|
+
const source_ref = `gds-v4-${def.ref.toLowerCase()}`;
|
|
369
|
+
if (bySourceRef[source_ref]) {
|
|
370
|
+
idByRef[def.ref] = Number(bySourceRef[source_ref].id);
|
|
371
|
+
console.log(`SKIP ${def.ref} (already exists: id=${bySourceRef[source_ref].id})`);
|
|
372
|
+
skipped++;
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
const body = {
|
|
376
|
+
version_id: 'GDS-V4',
|
|
377
|
+
title: `V4.${def.ref} — ${def.title}`,
|
|
378
|
+
description: def.description,
|
|
379
|
+
kind: def.kind,
|
|
380
|
+
discipline: def.discipline,
|
|
381
|
+
status: 'backlog',
|
|
382
|
+
priority: def.priority,
|
|
383
|
+
est_minutes: def.est_minutes,
|
|
384
|
+
manual_degree: def.manual_degree,
|
|
385
|
+
credits_reward: def.credits_reward,
|
|
386
|
+
touches: def.touches || [],
|
|
387
|
+
criterion_ids: def.criteria || [],
|
|
388
|
+
source: 'planning-session',
|
|
389
|
+
source_ref,
|
|
390
|
+
};
|
|
391
|
+
if (DRY) {
|
|
392
|
+
console.log(`DRY ${def.ref} P${def.priority} ${def.kind} crit=${(def.criteria || []).join('/')} deps=[${(def.deps || []).join(',')}] ${def.title.slice(0, 56)}`);
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
const res = await api.tasks.postTasks({ body });
|
|
396
|
+
if (res.status !== 201) {
|
|
397
|
+
console.error(`FAIL ${def.ref}: status=${res.status} ${JSON.stringify(res.data).slice(0, 220)}`);
|
|
398
|
+
errors++;
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
idByRef[def.ref] = Number(res.data.task.id);
|
|
402
|
+
console.log(`OK ${def.ref} → task id=${idByRef[def.ref]} (crit ${(def.criteria || []).join('/')})`);
|
|
403
|
+
created++;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// Dependency wiring (skipped in dry-run).
|
|
407
|
+
let depsWired = 0, depErrors = 0;
|
|
408
|
+
if (!DRY) {
|
|
409
|
+
for (const def of TASKS) {
|
|
410
|
+
const deps = def.deps || [];
|
|
411
|
+
if (deps.length === 0) continue;
|
|
412
|
+
const taskId = idByRef[def.ref];
|
|
413
|
+
if (!taskId) { console.error(`DEPS ${def.ref}: no task id resolved, skipping`); depErrors++; continue; }
|
|
414
|
+
const depIds = deps.map((r) => idByRef[r]).filter((n) => Number.isFinite(n));
|
|
415
|
+
if (depIds.length !== deps.length) {
|
|
416
|
+
console.error(`DEPS ${def.ref}: unresolved refs in [${deps.join(',')}]`);
|
|
417
|
+
depErrors++;
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
const res = await api.tasks.postTasksIdDependencies({ id: taskId, body: {
|
|
421
|
+
depends_on_task_ids: depIds,
|
|
422
|
+
} });
|
|
423
|
+
if (res.status === 200) {
|
|
424
|
+
console.log(`DEPS ${def.ref} ← [${deps.join(',')}]`);
|
|
425
|
+
depsWired++;
|
|
426
|
+
} else {
|
|
427
|
+
console.error(`DEPS FAIL ${def.ref}: ${res.status} ${JSON.stringify(res.data).slice(0, 220)}`);
|
|
428
|
+
depErrors++;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
console.log(`\nDONE created=${created} skipped=${skipped} errors=${errors} deps_wired=${depsWired} dep_errors=${depErrors} (manifest: ${TASKS.length})`);
|
|
434
|
+
process.exit(errors === 0 && depErrors === 0 ? 0 : 1);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
main().catch((err) => {
|
|
438
|
+
console.error('FATAL', err);
|
|
439
|
+
process.exit(1);
|
|
440
|
+
});
|