@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,624 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Seed the 38 net-new GDS-V4 tasks defined in V4 Planning Session #1
|
|
3
|
+
// (2026-06-12, task 937 / V4.R00).
|
|
4
|
+
//
|
|
5
|
+
// Idempotent: skips tasks whose source_ref already exists; dependency wiring
|
|
6
|
+
// is idempotent on (task_id, depends_on_task_id).
|
|
7
|
+
//
|
|
8
|
+
// Companion migration 080_gds_v4_planning_seed.sql handles:
|
|
9
|
+
// - 6 done_when_criteria seed rows
|
|
10
|
+
// - versions.GDS-V4 name + done_when text
|
|
11
|
+
// - 2 existing-task (263, 594) priority + V4.R## title-prefix updates
|
|
12
|
+
//
|
|
13
|
+
// This script handles the 38 net-new task creates, the 5 idea-promotion
|
|
14
|
+
// PATCH calls (ideas 148+175 → V4.R03; 226 → V4.R15; 225 → V4.R16;
|
|
15
|
+
// 178 → V4.R27), and the dependency-edge POSTs.
|
|
16
|
+
//
|
|
17
|
+
// Ranking convention: priority is 1-5 (CHECK constraint). Fine-grained
|
|
18
|
+
// ordering lives in the V4.R## title prefix (zero-padded for sort).
|
|
19
|
+
// Tier mapping: T1/T2=P5, T3/T4=P4, T5=P3, T6=P2, T7=P1.
|
|
20
|
+
//
|
|
21
|
+
// Usage: node scripts/gds/seed-gds-v4-tasks.js [--dry-run]
|
|
22
|
+
|
|
23
|
+
const { cliClient, requireSession } = require('./cli-lib');
|
|
24
|
+
|
|
25
|
+
const DRY = process.argv.includes('--dry-run');
|
|
26
|
+
|
|
27
|
+
// Each entry: { ref, title, description, kind, discipline, priority,
|
|
28
|
+
// est_minutes, manual_degree, credits_reward, touches,
|
|
29
|
+
// deps: ['R##', ...], promoted_idea_id?, also_promote_ideas? }
|
|
30
|
+
// `ref` doubles as source_ref ("gds-v4-r##") and as the V4.R## title prefix.
|
|
31
|
+
|
|
32
|
+
const TASKS = [
|
|
33
|
+
// =========================================================================
|
|
34
|
+
// TIER 1/2 — Roots of both tracks (P5)
|
|
35
|
+
// =========================================================================
|
|
36
|
+
{
|
|
37
|
+
ref: 'R01',
|
|
38
|
+
title: 'Golden-question recall eval set, mined from session_records',
|
|
39
|
+
description: `**Criterion:** one-call-recall (also the yardstick for sessions-start-knowing).
|
|
40
|
+
|
|
41
|
+
Build the 25–40-question golden set that every retrieval phase is measured against. Source the questions from REAL rediscovery moments in the session corpus (e.g. "does the Discord auto-join flow already exist?", "where is recordApplause defined?", "what is the next free ADR number?", "has anyone shipped an ed25519-pin fix recently?"), each with known-correct source documents/rows.
|
|
42
|
+
|
|
43
|
+
**Done when:** a checked-in eval file (questions + expected sources) + a tiny runner that scores recall@5 against any search endpoint. Spike: output reshapes V4.R24's go/no-go bar.`,
|
|
44
|
+
kind: 'spike', discipline: 'engineering', priority: 5,
|
|
45
|
+
est_minutes: 120, manual_degree: 3, credits_reward: 20,
|
|
46
|
+
touches: ['tests/', 'docs/'], deps: [],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
ref: 'R02',
|
|
50
|
+
title: 'ADR: GDS retrieval layer — Postgres-resident, lexical-first, rank-scoped, fail-open',
|
|
51
|
+
description: `**Criterion:** one-call-recall.
|
|
52
|
+
|
|
53
|
+
Lock the architecture from the 2026-06-12 research report: everything in the existing Postgres (no new services); lexical FTS first, embeddings only after a measured gap (V4.R24 gate); per-chunk min_rank + builder scoping so the index can never become a read-side bypass of ADR 0016/0043; semantic layer fails open to lexical-only.
|
|
54
|
+
|
|
55
|
+
**Done when:** ADR merged covering schema, chunking (heading-aware + breadcrumbs), ingestion paths (deploy hook + nightly timer), query fusion (RRF), scoping rules, and the rejected alternatives (ParadeDB, standalone vector DBs, local models, rerankers).`,
|
|
56
|
+
kind: 'decision', discipline: 'engineering', priority: 5,
|
|
57
|
+
est_minutes: 180, manual_degree: 3, credits_reward: 40,
|
|
58
|
+
touches: ['docs/adr/'], deps: [],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
ref: 'R03',
|
|
62
|
+
title: 'Idempotent ship re-drive — a failed/drifted ship leaves the task one command from resume',
|
|
63
|
+
description: `**Criterion:** failed-ship-never-strands. Promotes ideas 148 + 175.
|
|
64
|
+
|
|
65
|
+
The June corpus shows claim_consumed_on_fail firing in 11/11 deep-dived sessions: drift fail → claim consumed → task stuck at completed → can't reclaim → manual confirm or reset-to-ready dance. Fix the state machine: a failed verify/grade/merge leg must NOT consume the claim; ship.js re-run on a completed task with the same builder resumes from the failed leg.
|
|
66
|
+
|
|
67
|
+
**Done when:** forced-drift and forced-grade-fail both leave the task resumable via one ship.js invocation, with the claim intact; covered by hermetic tests on the ship state transitions.`,
|
|
68
|
+
kind: 'feature', discipline: 'engineering', priority: 5,
|
|
69
|
+
est_minutes: 300, manual_degree: 2, credits_reward: 60,
|
|
70
|
+
touches: ['scripts/gds/ship.js', 'src/bongos/routes/tasks.js', 'src/bongos/db.js'],
|
|
71
|
+
deps: [], promoted_idea_id: 148, also_promote_ideas: [175],
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
ref: 'R04',
|
|
75
|
+
title: 'Claim-time context pack (static): worktree root, held claims, API enums, OS facts',
|
|
76
|
+
description: `**Criterion:** sessions-start-knowing.
|
|
77
|
+
|
|
78
|
+
On /builder-claim (and surfaced by /builder-start), print a compact context pack: the session's worktree absolute root (kills the 84-hit wrong-path class), the claims this builder currently holds (kills claim-ownership mix-ups), the GDS API path prefix + task-creation enums (kind list, priority 1-5 — kills the BAD_KIND/P2 guess-and-retry class), and OS toolchain facts (no \`timeout\` on macOS, psql path).
|
|
79
|
+
|
|
80
|
+
**Done when:** claim.js emits the pack; content is generated from the live route validators (not hand-maintained); recall hits arrive later via V4.R18.`,
|
|
81
|
+
kind: 'feature', discipline: 'engineering', priority: 5,
|
|
82
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
83
|
+
touches: ['scripts/gds/claim.js', 'scripts/gds/start.js', 'scripts/gds/cli-lib.js'],
|
|
84
|
+
deps: [],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
ref: 'R05',
|
|
88
|
+
title: 'Grader bypass ordering — a 0/10 worker-spawn false-FAIL must never reach the builder',
|
|
89
|
+
description: `**Criterion:** failed-ship-never-strands.
|
|
90
|
+
|
|
91
|
+
Session 1659 (2026-06-12) shows a "FAIL · blended 0/10 · low confidence" verdict reaching the builder while GRADER_BYPASS_ENABLED=1 — the bypass check appears to sit downstream of the failing subagent spawn. Reorder so bypass (and any future outage detection) short-circuits BEFORE worker spawn; a worker-infra failure must surface as "grader unavailable", never as a 0/10 grade.
|
|
92
|
+
|
|
93
|
+
**Done when:** bypass short-circuits pre-spawn; worker-spawn failure yields a distinct non-grade outcome; regression test.`,
|
|
94
|
+
kind: 'bug', discipline: 'engineering', priority: 5,
|
|
95
|
+
est_minutes: 90, manual_degree: 2, credits_reward: 20,
|
|
96
|
+
touches: ['src/bongos/grader.js'], deps: [],
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
ref: 'R06',
|
|
100
|
+
title: 'Migration: search_chunks table + tsvector + pg_trgm (lexical substrate)',
|
|
101
|
+
description: `**Criterion:** one-call-recall. Cross-ref: design in V4.R02.
|
|
102
|
+
|
|
103
|
+
search_chunks(id, source_type, source_ref, builder_id NULL, min_rank, track, breadcrumb, content, content_hash, tsv GENERATED, metadata jsonb, indexed_at) + GIN on tsv + CREATE EXTENSION pg_trgm. No pgvector yet (that is V4.R32, gated).
|
|
104
|
+
|
|
105
|
+
**Done when:** migration applies cleanly on prod + fresh restore; columns support the scoping rules in the ADR.`,
|
|
106
|
+
kind: 'infra', discipline: 'engineering', priority: 5,
|
|
107
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 30,
|
|
108
|
+
touches: ['migrations/'], deps: ['R02'],
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
ref: 'R07',
|
|
112
|
+
title: 'Heading-aware markdown chunker (breadcrumbs, front-matter handling)',
|
|
113
|
+
description: `**Criterion:** one-call-recall. Cross-ref: V4.R02 design.
|
|
114
|
+
|
|
115
|
+
Pure module: split md by heading structure into ~300–500-token chunks, prefix each with its breadcrumb path (file > H1 > H2), strip YAML front-matter from the body but keep it as metadata. No fs/network in the core (hermetic tests per the tests/boxes.mjs pattern).
|
|
116
|
+
|
|
117
|
+
**Done when:** chunker handles CLAUDE.md, ADRs, recipes, session logs; hermetic test suite green.`,
|
|
118
|
+
kind: 'feature', discipline: 'engineering', priority: 5,
|
|
119
|
+
est_minutes: 180, manual_degree: 2, credits_reward: 30,
|
|
120
|
+
touches: ['src/bongos/search-chunker.js', 'tests/'], deps: ['R02'],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
ref: 'R08',
|
|
124
|
+
title: 'Grade-record reuse on re-ship — never re-run a panel that already passed this diff',
|
|
125
|
+
description: `**Criterion:** failed-ship-never-strands. Cross-ref: V4.R03 (re-drive).
|
|
126
|
+
|
|
127
|
+
When a ship re-drive (V4.R03) reaches the grade leg and a stored PASS grade exists for the same diff hash, reuse it instead of burning another panel run (session 1660 did this by hand). Store/compare a diff fingerprint with the grade record.
|
|
128
|
+
|
|
129
|
+
**Done when:** re-ship with unchanged diff skips the panel and cites the stored grade; changed diff re-grades; tests cover both.`,
|
|
130
|
+
kind: 'feature', discipline: 'engineering', priority: 5,
|
|
131
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
132
|
+
touches: ['src/bongos/grader.js', 'scripts/gds/ship.js', 'src/bongos/db.js'],
|
|
133
|
+
deps: ['R03'],
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
// =========================================================================
|
|
137
|
+
// TIER 3/4 — Build-out (P4)
|
|
138
|
+
// =========================================================================
|
|
139
|
+
{
|
|
140
|
+
ref: 'R09',
|
|
141
|
+
title: 'Repo-markdown ingester + deploy-hook step (content-hash deltas)',
|
|
142
|
+
description: `**Criterion:** one-call-recall. Cross-refs: V4.R06 (table), V4.R07 (chunker).
|
|
143
|
+
|
|
144
|
+
Index all repo md into search_chunks, delta-driven by content hash. Hook: a step in the droplet deploy flow (~/deploy.sh, mirrored in deploy-prod.yml), where new md content + server env are both on disk. Tag chunks from permission-path-protected surfaces (src/bongos/permission-path-check.js globs) with min_rank=metic.
|
|
145
|
+
|
|
146
|
+
**Done when:** deploy reindexes only changed files; full corpus (~196 files) indexed; protected-surface tagging verified.`,
|
|
147
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
148
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
149
|
+
touches: ['scripts/gds/search-ingest-md.js', 'docs/recipes/'], deps: ['R06', 'R07'],
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
ref: 'R10',
|
|
153
|
+
title: 'DB-prose ingester + nightly timer — incl. recent commits + shipped-task summaries with recency boost',
|
|
154
|
+
description: `**Criterion:** one-call-recall. Cross-refs: V4.R06, V4.R07.
|
|
155
|
+
|
|
156
|
+
Nightly sweep (systemd timer modeled on gds-db-backup) indexing: tasks.description/value_summary, session_logs.notes_md, learnings.body_md, idea_inbox.body_md, task_grades.notes_md, done_when_criteria, blockers — plus recent git commit subjects and freshly-shipped task summaries so "has a parallel session already fixed this?" is answerable (the romantic-gauss redundant-work case). Recency boost in metadata. Session-derived text passes through the ship.js scrubSecrets patterns. builder_memory rows tagged builder_id (owner-scoped); vulnerability_reports excluded.
|
|
157
|
+
|
|
158
|
+
**Done when:** timer live on the droplet; all listed surfaces indexed; scrubbing + scoping tags verified.`,
|
|
159
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
160
|
+
est_minutes: 300, manual_degree: 2, credits_reward: 50,
|
|
161
|
+
touches: ['scripts/gds/search-ingest-db.js', 'infra/'], deps: ['R06', 'R07'],
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
ref: 'R11',
|
|
165
|
+
title: 'POST /api/gds/search — lexical hybrid (FTS + trgm) fused with RRF',
|
|
166
|
+
description: `**Criterion:** one-call-recall. Cross-ref: V4.R06.
|
|
167
|
+
|
|
168
|
+
requireBuilder-gated search endpoint: websearch_to_tsquery leg + pg_trgm leg fused with Reciprocal Rank Fusion in one SQL CTE; k, filters (source_type, track), source citations in results. Per-builder read limiter (memory.js pattern — the global limiter doesn't cap GETs). Add to smoke-gds.js CHECKS (401 unauth).
|
|
169
|
+
|
|
170
|
+
**Done when:** endpoint live + rate-limited + in smoke; passes the route-rank pre-pass.`,
|
|
171
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
172
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
173
|
+
touches: ['src/bongos/routes/search.js', 'src/bongos/routes.js', 'scripts/gds/smoke-gds.js'],
|
|
174
|
+
deps: ['R06'],
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
ref: 'R12',
|
|
178
|
+
title: 'Search rank/owner scoping enforcement + isolation test suite',
|
|
179
|
+
description: `**Criterion:** one-call-recall (the trust-boundary task). Cross-ref: V4.R11.
|
|
180
|
+
|
|
181
|
+
Server-side result filtering: min_rank chunks (permission-core content) never served below Metic (ADR 0016/0043 read posture); builder_memory chunks only to their owner; no public/unauthenticated surface. Dedicated isolation suite in the style of tests/memory_isolation.mjs.
|
|
182
|
+
|
|
183
|
+
**Done when:** isolation suite green, incl. xenos-vs-protected-chunk and cross-builder-memory cases; route-rank pre-pass clean.`,
|
|
184
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
185
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 50,
|
|
186
|
+
touches: ['src/bongos/routes/search.js', 'tests/search_isolation.mjs'], deps: ['R11'],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
ref: 'R13',
|
|
190
|
+
title: 'Worktree guard — block or loudly warn on writes/git ops crossing worktree ↔ main checkout',
|
|
191
|
+
description: `**Criterion:** machine-room-ergonomics.
|
|
192
|
+
|
|
193
|
+
The #1 tool-error class (84 hits): edits/git ops landing in the wrong tree. Add a guard (hook or wrapper) that detects when a write or git command targets a different tree than the session's claimed worktree and refuses/warns with the correct root path.
|
|
194
|
+
|
|
195
|
+
**Done when:** the wrong-tree write scenario from sessions 196/415/1507 is caught at the moment it happens; opt-out documented for legitimate cross-tree ops.`,
|
|
196
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
197
|
+
est_minutes: 180, manual_degree: 2, credits_reward: 30,
|
|
198
|
+
touches: ['.claude/hooks/', 'scripts/gds/hooks/'], deps: [],
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
ref: 'R14',
|
|
202
|
+
title: 'JSON 404 + hint on API-shaped paths; promote-hint on TASK_NOT_READY 409',
|
|
203
|
+
description: `**Criterion:** machine-room-ergonomics.
|
|
204
|
+
|
|
205
|
+
Two self-describing-error fixes: (1) requests to API-shaped paths (/tasks, /gds/*, /api/*) that miss the /api/gds mount get a JSON 404 with a hint instead of the HTML island page (which today causes a secondary JSON.parse fault); (2) the TASK_NOT_READY 409 names the promote endpoint.
|
|
206
|
+
|
|
207
|
+
**Done when:** both error shapes verified by tests; smoke unaffected.`,
|
|
208
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
209
|
+
est_minutes: 90, manual_degree: 2, credits_reward: 15,
|
|
210
|
+
touches: ['server.js', 'src/bongos/routes/tasks.js'], deps: [],
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
ref: 'R15',
|
|
214
|
+
title: 'Bug: dep-ship auto-promotion flips a BLOCKED task to ready',
|
|
215
|
+
description: `**Criterion:** failed-ship-never-strands. Promotes idea 226.
|
|
216
|
+
|
|
217
|
+
The dependency auto-promotion trigger promotes backlog tasks when their last dep ships — but it also flips tasks at status=blocked, silently un-blocking work that is waiting on a blocker. Promotion must only apply to backlog.
|
|
218
|
+
|
|
219
|
+
**Done when:** trigger guarded; regression test on the blocked case.`,
|
|
220
|
+
kind: 'bug', discipline: 'engineering', priority: 4,
|
|
221
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
222
|
+
touches: ['migrations/', 'src/bongos/db.js'], deps: [], promoted_idea_id: 226,
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
ref: 'R16',
|
|
226
|
+
title: 'Bug: grader_panel.mjs — 2 failing assertions on a clean main',
|
|
227
|
+
description: `**Criterion:** failed-ship-never-strands (quality-gate brain must be green). Promotes idea 225.
|
|
228
|
+
|
|
229
|
+
tests/grader_panel.mjs fails 2/7 on a clean baseline (noted in the 2026-06-08 security-audit session log). Diagnose: stale test vs real grader regression; fix whichever it is.
|
|
230
|
+
|
|
231
|
+
**Done when:** suite green on main; root cause captured as a learning.`,
|
|
232
|
+
kind: 'bug', discipline: 'engineering', priority: 4,
|
|
233
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
234
|
+
touches: ['tests/grader_panel.mjs', 'src/bongos/grader.js'], deps: [], promoted_idea_id: 225,
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
ref: 'R17',
|
|
238
|
+
title: '/recall skill — one-call project-knowledge search from any session',
|
|
239
|
+
description: `**Criterion:** one-call-recall. Cross-refs: V4.R11, V4.R12.
|
|
240
|
+
|
|
241
|
+
New slash skill wrapping POST /api/gds/search via the cross-platform scripts/gds/api.js: query in, cited sources out, with guidance to follow up by reading the real source. Works identically on laptop, dev box, and browser-only sessions.
|
|
242
|
+
|
|
243
|
+
**Done when:** skill shipped + documented in CLAUDE.md quick-nav; round-trip verified against prod.`,
|
|
244
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
245
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
246
|
+
touches: ['.claude/skills/recall/', 'CLAUDE.md'], deps: ['R11', 'R12'],
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
ref: 'R18',
|
|
250
|
+
title: 'Claim-time recall hits — top-5 relevant sources printed on /builder-claim',
|
|
251
|
+
description: `**Criterion:** sessions-start-knowing. Cross-refs: V4.R04 (pack), V4.R11 (endpoint).
|
|
252
|
+
|
|
253
|
+
Extend the claim-time context pack: query the search endpoint with the claimed task's title + description and print the top-5 hits (ADRs, recipes, session logs, learnings), merged with the existing learnings-by-touches surface.
|
|
254
|
+
|
|
255
|
+
**Done when:** every claim prints relevant sources; degrades silently when search is unavailable.`,
|
|
256
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
257
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
258
|
+
touches: ['scripts/gds/claim.js'], deps: ['R04', 'R11'],
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
ref: 'R19',
|
|
262
|
+
title: 'Stale-claim auto-expiry/flagging — worktree-less, commit-less claims stop blocking work',
|
|
263
|
+
description: `**Criterion:** failed-ship-never-strands.
|
|
264
|
+
|
|
265
|
+
Parallel sessions leave zombie claims (no worktree, no branch, no commits) that block touches-overlapping work and burn reconciliation turns (session 1407). Flag or auto-expire claims with no activity signal after a threshold; surface staleness in /builder-start.
|
|
266
|
+
|
|
267
|
+
**Done when:** stale claims visibly flagged + reclaimable; expiry policy documented; idle legitimate claims unharmed.`,
|
|
268
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
269
|
+
est_minutes: 180, manual_degree: 3, credits_reward: 30,
|
|
270
|
+
touches: ['src/bongos/db.js', 'src/bongos/routes/claims.js', 'scripts/gds/start.js'], deps: [],
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
ref: 'R20',
|
|
274
|
+
title: 'Laptop smoke preflight — skip or stub server-dependent checks when :3000 is not listening',
|
|
275
|
+
description: `**Criterion:** machine-room-ergonomics.
|
|
276
|
+
|
|
277
|
+
Smoke/test legs assume a local game server; laptop sessions hit connection-refused floods (sessions 328, 1113) or missing-module faults. Preflight: detect no listener on 127.0.0.1:3000 and skip server-dependent checks with a clear message (or boot the existing stub).
|
|
278
|
+
|
|
279
|
+
**Done when:** ship.js smoke leg on a laptop with no server passes with an explicit SKIPPED notice; droplet behavior unchanged.`,
|
|
280
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
281
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
282
|
+
touches: ['scripts/gds/ship.js', 'scripts/gds/smoke-gds.js'], deps: [],
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
ref: 'R21',
|
|
286
|
+
title: 'Digest-time harness-retry sub-count — stop read_before_write/blocked-sleep inflating tool_error_count',
|
|
287
|
+
description: `**Criterion:** bfg-measures-what-hurts.
|
|
288
|
+
|
|
289
|
+
Harness guardrail messages (File has not been read yet; Blocked: sleep) are counted as tool errors in session digests, inflating tool_error_count and skewing order=tool_errors (top-2 sessions rank on benign retries). Classify them into a separate harness_retry sub-count at digest build time.
|
|
290
|
+
|
|
291
|
+
**Done when:** new digests carry the split counts; search ordering uses the net figure; documented in ADR 0027 lineage.`,
|
|
292
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
293
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
294
|
+
touches: ['scripts/gds/ship.js'], deps: [],
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
ref: 'R22',
|
|
298
|
+
title: 'session-eval.js: wrong_path_worktree footgun detector + finding template',
|
|
299
|
+
description: `**Criterion:** bfg-measures-what-hurts.
|
|
300
|
+
|
|
301
|
+
The detector misses the corpus's #1 error class entirely. Add WRONG_PATH_RE (File does not exist + cwd note / EISDIR / Cannot find module / command not found: psql|timeout), a wrong_path_worktree footgun type, and a FINDING_TEMPLATES entry routing to idea_inbox.
|
|
302
|
+
|
|
303
|
+
**Done when:** detector fires on sessions 196/415 fixtures; template produces an actionable finding.`,
|
|
304
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
305
|
+
est_minutes: 90, manual_degree: 2, credits_reward: 15,
|
|
306
|
+
touches: ['scripts/gds/session-eval.js', 'tests/'], deps: [],
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
ref: 'R23',
|
|
310
|
+
title: 'computeOverhead: turn/tool-sequence weighting for cache-dominated sessions',
|
|
311
|
+
description: `**Criterion:** bfg-measures-what-hurts.
|
|
312
|
+
|
|
313
|
+
Token-weighted overhead scores 150M+-token cache-heavy marathons as 97–99% "work" even when snippets show hours of ceremony — the BFG is blind to exactly the sessions that bleed most. Add a turn-count/tool-sequence-weighted overhead metric alongside the token one.
|
|
314
|
+
|
|
315
|
+
**Done when:** the 11 June deep-dive sessions re-score with visible ceremony; both metrics reported; verdict logic uses the turn-weighted one.`,
|
|
316
|
+
kind: 'feature', discipline: 'engineering', priority: 4,
|
|
317
|
+
est_minutes: 180, manual_degree: 2, credits_reward: 30,
|
|
318
|
+
touches: ['scripts/gds/session-eval.js', 'tests/'], deps: [],
|
|
319
|
+
},
|
|
320
|
+
|
|
321
|
+
// =========================================================================
|
|
322
|
+
// TIER 5 — Measure + close the loop (P3)
|
|
323
|
+
// =========================================================================
|
|
324
|
+
{
|
|
325
|
+
ref: 'R24',
|
|
326
|
+
title: 'Recall eval run + embeddings go/no-go gate',
|
|
327
|
+
description: `**Criterion:** one-call-recall (the proof + the gate). Cross-refs: V4.R01 (questions), V4.R09–V4.R12 (lexical layer).
|
|
328
|
+
|
|
329
|
+
Run the golden-question set against the lexical search. If recall@5 ≥ 80%, the semantic arm (V4.R30–R35) may not be worth building — that is a finding, not a failure; Archon decides at this gate. Spike: output reshapes the P2 tier.
|
|
330
|
+
|
|
331
|
+
**Done when:** scored results published in the task notes + a go/no-go recommendation for V4.R30.`,
|
|
332
|
+
kind: 'spike', discipline: 'engineering', priority: 3,
|
|
333
|
+
est_minutes: 180, manual_degree: 3, credits_reward: 30,
|
|
334
|
+
touches: ['tests/', 'docs/'], deps: ['R01', 'R09', 'R10', 'R11', 'R12'],
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
ref: 'R25',
|
|
338
|
+
title: 'Session-start recall hints (kill-switched, like the memory pull)',
|
|
339
|
+
description: `**Criterion:** sessions-start-knowing. Cross-refs: V4.R11, V4.R17.
|
|
340
|
+
|
|
341
|
+
SessionStart hook addition: when a session opens with an active claim, fetch top recall hits for it (kill-switches mirroring OTB_MEMORY_PULL_OFF / OTB_SUBAGENT; silent on failure).
|
|
342
|
+
|
|
343
|
+
**Done when:** hook live, kill-switched, and adds <2s to session start.`,
|
|
344
|
+
kind: 'feature', discipline: 'engineering', priority: 3,
|
|
345
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
346
|
+
touches: ['.claude/hooks/session-start.js'], deps: ['R11', 'R17'],
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
ref: 'R26',
|
|
350
|
+
title: 'Next-free-number helper for ADRs + migrations (kills the numbering-collision class)',
|
|
351
|
+
description: `**Criterion:** sessions-start-knowing. Absorbs the evidence in idea 122 (ADR 0024 collision) + the triple-ADR-0044 collision (sessions 1660/1629) + the stale claim-time migration reservation observed in this planning session (claim 742 was handed 079, already applied on prod).
|
|
352
|
+
|
|
353
|
+
One deterministic command (and claim-time print) that returns the next free ADR number and the next free migration number, checked against origin/main + applied schema_migrations, not just local files.
|
|
354
|
+
|
|
355
|
+
**Done when:** helper shipped + wired into the claim-time context pack; reservation logic fixed or superseded.`,
|
|
356
|
+
kind: 'feature', discipline: 'engineering', priority: 3,
|
|
357
|
+
est_minutes: 60, manual_degree: 2, credits_reward: 10,
|
|
358
|
+
touches: ['scripts/gds/next-number.js', 'scripts/gds/claim.js'], deps: [],
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
ref: 'R27',
|
|
362
|
+
title: 'Session-corpus coverage reconciliation — flag shipped-vs-logged delta',
|
|
363
|
+
description: `**Criterion:** bfg-measures-what-hurts. Promotes idea 178.
|
|
364
|
+
|
|
365
|
+
Reconcile shipped tasks against uploaded session records (BFG 6D follow-up to tasks 608/617): every ship should have a digest; flag the delta so corpus gaps can't silently bias the evaluator.
|
|
366
|
+
|
|
367
|
+
**Done when:** nightly check reports coverage %; gaps listed with task ids.`,
|
|
368
|
+
kind: 'feature', discipline: 'engineering', priority: 3,
|
|
369
|
+
est_minutes: 180, manual_degree: 2, credits_reward: 30,
|
|
370
|
+
touches: ['scripts/gds/session-eval.js', '.claude/scheduled-tasks/bfg-session-eval/'],
|
|
371
|
+
deps: [], promoted_idea_id: 178,
|
|
372
|
+
},
|
|
373
|
+
|
|
374
|
+
// =========================================================================
|
|
375
|
+
// TIER 6 — Gated semantic arm + observability build-out (P2)
|
|
376
|
+
// =========================================================================
|
|
377
|
+
{
|
|
378
|
+
ref: 'R30',
|
|
379
|
+
title: 'Embedding provider decision + key provisioning (Archon go-ahead)',
|
|
380
|
+
description: `**Criterion:** one-call-recall (gated by V4.R24's go/no-go).
|
|
381
|
+
|
|
382
|
+
If the eval gate says GO: pick the provider (research recommendation: Voyage voyage-4-lite — $0.02/M tokens, 200M free tier, Matryoshka dims; fallback OpenAI text-embedding-3-small), create the account, provision EMBEDDINGS_API_KEY into /etc/amazonprimea/secrets.env per ADR 0022. New external account = Lars's explicit go-ahead per the budget rules.
|
|
383
|
+
|
|
384
|
+
**Done when:** decision recorded (ADR addendum), key live on the droplet, cost expectations logged.`,
|
|
385
|
+
kind: 'decision', discipline: 'engineering', priority: 2,
|
|
386
|
+
est_minutes: 60, manual_degree: 4, credits_reward: 10,
|
|
387
|
+
touches: ['docs/adr/'], deps: ['R24'],
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
ref: 'R31',
|
|
391
|
+
title: 'EmbeddingsApi client (do-api.js shape: injectable fetch, dry-run default)',
|
|
392
|
+
description: `**Criterion:** one-call-recall. Cross-ref: V4.R30.
|
|
393
|
+
|
|
394
|
+
Thin client mirroring src/bongos/do-api.js: token from env (EMBEDDINGS_API_KEY, ~/.config/otb fallback), injectable fetchImpl, dry-run default, typed error class, batching.
|
|
395
|
+
|
|
396
|
+
**Done when:** hermetic tests green; no network in tests.`,
|
|
397
|
+
kind: 'feature', discipline: 'engineering', priority: 2,
|
|
398
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
399
|
+
touches: ['src/bongos/embeddings-api.js', 'tests/'], deps: ['R30'],
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
ref: 'R32',
|
|
403
|
+
title: 'pgvector migration (halfvec + HNSW) + apt-install operator recipe',
|
|
404
|
+
description: `**Criterion:** one-call-recall. Cross-refs: V4.R06, V4.R30.
|
|
405
|
+
|
|
406
|
+
ALTER search_chunks ADD embedding halfvec(1024); HNSW index built with bounded maintenance_work_mem (~256MB — never multi-GB on the 2GB box). CREATE EXTENSION vector requires the postgresql-16-pgvector apt package — an out-of-band operator step migrations cannot do; write the recipe.
|
|
407
|
+
|
|
408
|
+
**Done when:** migration + recipe shipped; extension live on prod; index built off-peak.`,
|
|
409
|
+
kind: 'infra', discipline: 'engineering', priority: 2,
|
|
410
|
+
est_minutes: 120, manual_degree: 3, credits_reward: 25,
|
|
411
|
+
touches: ['migrations/', 'docs/recipes/'], deps: ['R06', 'R30'],
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
ref: 'R33',
|
|
415
|
+
title: 'Embedding backfill + incremental embedding in both ingesters',
|
|
416
|
+
description: `**Criterion:** one-call-recall. Cross-refs: V4.R31, V4.R32.
|
|
417
|
+
|
|
418
|
+
Batch-embed the existing corpus (one-time, ~free under the provider free tier) and wire incremental embedding (hash-gated) into the md + DB ingesters.
|
|
419
|
+
|
|
420
|
+
**Done when:** all chunks embedded; deltas embed on the next ingest run; cost logged via /builder-cost.`,
|
|
421
|
+
kind: 'feature', discipline: 'engineering', priority: 2,
|
|
422
|
+
est_minutes: 180, manual_degree: 2, credits_reward: 30,
|
|
423
|
+
touches: ['scripts/gds/search-ingest-md.js', 'scripts/gds/search-ingest-db.js'],
|
|
424
|
+
deps: ['R31', 'R32'],
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
ref: 'R34',
|
|
428
|
+
title: 'Hybrid search: vector leg in the RRF fusion + lexical fail-open',
|
|
429
|
+
description: `**Criterion:** one-call-recall. Cross-refs: V4.R11, V4.R32, V4.R33.
|
|
430
|
+
|
|
431
|
+
Add the vector leg (embed the query, cosine top-k) to the RRF fusion. HARD requirement: if the embeddings API is down/unconfigured, the endpoint serves lexical-only — semantic is an enhancement, never a single point of failure.
|
|
432
|
+
|
|
433
|
+
**Done when:** hybrid live; fail-open verified by pulling the key in a test environment.`,
|
|
434
|
+
kind: 'feature', discipline: 'engineering', priority: 2,
|
|
435
|
+
est_minutes: 240, manual_degree: 2, credits_reward: 40,
|
|
436
|
+
touches: ['src/bongos/routes/search.js'], deps: ['R11', 'R32', 'R33'],
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
ref: 'R35',
|
|
440
|
+
title: 'Eval re-run: hybrid vs lexical on the golden set',
|
|
441
|
+
description: `**Criterion:** one-call-recall. Cross-refs: V4.R24, V4.R34.
|
|
442
|
+
|
|
443
|
+
Re-score the golden questions against hybrid; publish the delta vs the lexical baseline. If hybrid doesn't beat lexical meaningfully, recommend reverting to lexical-only (keep the layer honest).
|
|
444
|
+
|
|
445
|
+
**Done when:** comparison published in task notes; recommendation recorded.`,
|
|
446
|
+
kind: 'feature', discipline: 'engineering', priority: 2,
|
|
447
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
448
|
+
touches: ['tests/', 'docs/'], deps: ['R24', 'R34'],
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
ref: 'R36',
|
|
452
|
+
title: 'Search-index staleness monitoring + /watch tile',
|
|
453
|
+
description: `**Criterion:** one-pane-of-glass. Cross-refs: V4.R09, V4.R10 (the task-608 staleness pattern).
|
|
454
|
+
|
|
455
|
+
Visible signals when the index goes stale (last ingest age, chunk counts by source, ingest failures) + a tile on the Archon /watch page.
|
|
456
|
+
|
|
457
|
+
**Done when:** a deliberately-stalled ingest is visible within a day; tile live.`,
|
|
458
|
+
kind: 'feature', discipline: 'engineering', priority: 2,
|
|
459
|
+
est_minutes: 180, manual_degree: 2, credits_reward: 30,
|
|
460
|
+
touches: ['src/bongos/routes/search.js', 'public-builders/'], deps: ['R09', 'R10'],
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
ref: 'R37',
|
|
464
|
+
title: 'Nightly-dump size threshold review (search_chunks fattens the backup)',
|
|
465
|
+
description: `**Criterion:** one-pane-of-glass. Cross-ref: V4.R06.
|
|
466
|
+
|
|
467
|
+
The chunks (+ later embeddings) table inflates the nightly pg_dump from <1MB to tens of MB. Revisit the dump-size expectations/alerts in the backup scripts + recipe so growth is intentional, not silent.
|
|
468
|
+
|
|
469
|
+
**Done when:** thresholds updated; offsite-copy budget rechecked (ADR 0025).`,
|
|
470
|
+
kind: 'infra', discipline: 'engineering', priority: 2,
|
|
471
|
+
est_minutes: 60, manual_degree: 2, credits_reward: 10,
|
|
472
|
+
touches: ['scripts/gds/db-backup-nightly.sh', 'docs/recipes/gds-db-backup.md'], deps: ['R06'],
|
|
473
|
+
},
|
|
474
|
+
|
|
475
|
+
// =========================================================================
|
|
476
|
+
// TIER 7 — Proofs + lockdown (P1)
|
|
477
|
+
// =========================================================================
|
|
478
|
+
{
|
|
479
|
+
ref: 'R38',
|
|
480
|
+
title: 'Proof: forced-drift + forced-grade-fail walkthrough resumes in ≤1 command',
|
|
481
|
+
description: `**Criterion:** failed-ship-never-strands (the live proof). Cross-refs: V4.R03, V4.R08.
|
|
482
|
+
|
|
483
|
+
On a staged throwaway task: force a touches[] drift fail, then a grade fail, and demonstrate both resume via a single ship.js invocation with the claim intact and the stored grade reused where valid. Capture the transcript in the task notes.
|
|
484
|
+
|
|
485
|
+
**Done when:** walkthrough documented; claim_consumed_on_fail does not fire.`,
|
|
486
|
+
kind: 'feature', discipline: 'engineering', priority: 1,
|
|
487
|
+
est_minutes: 120, manual_degree: 3, credits_reward: 25,
|
|
488
|
+
touches: ['docs/'], deps: ['R03', 'R08'],
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
ref: 'R39',
|
|
492
|
+
title: 'Proof: re-run the 2026-06-12 friction analysis — rediscovery, wrong-path, claim-consumed rates drop',
|
|
493
|
+
description: `**Criterion:** bfg-measures-what-hurts (proving sessions-start-knowing + machine-room-ergonomics too).
|
|
494
|
+
|
|
495
|
+
Re-run the BFG corpus friction analysis on post-V4 sessions and compare against the 2026-06-12 baseline (1,349 records; taxonomies in the V4.R00 session log): wrong-path hits, guess-and-retry API errors, claim_consumed_on_fail, rediscovery turns. Publish the before/after.
|
|
496
|
+
|
|
497
|
+
**Done when:** comparison published; criteria 2–4 judged satisfied or follow-ups filed.`,
|
|
498
|
+
kind: 'feature', discipline: 'engineering', priority: 1,
|
|
499
|
+
est_minutes: 240, manual_degree: 3, credits_reward: 40,
|
|
500
|
+
touches: ['docs/'], deps: ['R04', 'R03', 'R13', 'R14', 'R21', 'R22', 'R23'],
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
ref: 'R40',
|
|
504
|
+
title: 'End-of-version docs/index honesty sweep (CLAUDE.md, file-map, architecture, primer)',
|
|
505
|
+
description: `**Criterion:** cross-cutting lockdown (the task-552 pattern).
|
|
506
|
+
|
|
507
|
+
CLAUDE.md quick-nav row for /recall + the search layer, file-map entries for the new modules, architecture.md section, builder primer mention, ADR README index. Keep the diagrams honest if any rank/status surface changed.
|
|
508
|
+
|
|
509
|
+
**Done when:** all indexes reference the shipped V4 surfaces; no stale claims about retrieval.`,
|
|
510
|
+
kind: 'infra', discipline: 'engineering', priority: 1,
|
|
511
|
+
est_minutes: 120, manual_degree: 2, credits_reward: 20,
|
|
512
|
+
touches: ['CLAUDE.md', 'docs/file-map.md', 'docs/architecture.md', 'docs/adr/README.md'],
|
|
513
|
+
deps: ['R17', 'R38', 'R39'],
|
|
514
|
+
},
|
|
515
|
+
];
|
|
516
|
+
|
|
517
|
+
// ---------------------------------------------------------------------------
|
|
518
|
+
// Main: post each task; PATCH idea_inbox promotions; wire dependencies.
|
|
519
|
+
// ---------------------------------------------------------------------------
|
|
520
|
+
|
|
521
|
+
async function main() {
|
|
522
|
+
await requireSession();
|
|
523
|
+
const api = await cliClient();
|
|
524
|
+
|
|
525
|
+
const list = await api.tasks.getTasks({ query: { version: 'GDS-V4' } });
|
|
526
|
+
const bySourceRef = {};
|
|
527
|
+
for (const t of list.data?.tasks || []) {
|
|
528
|
+
if (t.source_ref) bySourceRef[t.source_ref] = t;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
const idByRef = {};
|
|
532
|
+
let created = 0, skipped = 0, errors = 0, promoted = 0;
|
|
533
|
+
|
|
534
|
+
for (const def of TASKS) {
|
|
535
|
+
const source_ref = `gds-v4-${def.ref.toLowerCase()}`;
|
|
536
|
+
if (bySourceRef[source_ref]) {
|
|
537
|
+
idByRef[def.ref] = Number(bySourceRef[source_ref].id);
|
|
538
|
+
console.log(`SKIP ${def.ref} (already exists: id=${bySourceRef[source_ref].id})`);
|
|
539
|
+
skipped++;
|
|
540
|
+
continue;
|
|
541
|
+
}
|
|
542
|
+
const body = {
|
|
543
|
+
version_id: 'GDS-V4',
|
|
544
|
+
title: `V4.${def.ref} — ${def.title}`,
|
|
545
|
+
description: def.description,
|
|
546
|
+
kind: def.kind,
|
|
547
|
+
discipline: def.discipline,
|
|
548
|
+
status: 'backlog',
|
|
549
|
+
priority: def.priority,
|
|
550
|
+
est_minutes: def.est_minutes,
|
|
551
|
+
manual_degree: def.manual_degree,
|
|
552
|
+
credits_reward: def.credits_reward,
|
|
553
|
+
touches: def.touches || [],
|
|
554
|
+
source: 'planning-session',
|
|
555
|
+
source_ref,
|
|
556
|
+
};
|
|
557
|
+
if (DRY) {
|
|
558
|
+
console.log(`DRY ${def.ref} P${def.priority} ${def.kind} deps=[${(def.deps || []).join(',')}] ${def.title.slice(0, 60)}`);
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
const res = await api.tasks.postTasks({ body });
|
|
562
|
+
if (res.status !== 201) {
|
|
563
|
+
console.error(`FAIL ${def.ref}: status=${res.status} ${JSON.stringify(res.data).slice(0, 200)}`);
|
|
564
|
+
errors++;
|
|
565
|
+
continue;
|
|
566
|
+
}
|
|
567
|
+
const newId = Number(res.data.task.id);
|
|
568
|
+
idByRef[def.ref] = newId;
|
|
569
|
+
console.log(`OK ${def.ref} → task id=${newId}`);
|
|
570
|
+
created++;
|
|
571
|
+
|
|
572
|
+
const ideaIds = [
|
|
573
|
+
...(def.promoted_idea_id ? [def.promoted_idea_id] : []),
|
|
574
|
+
...(def.also_promote_ideas || []),
|
|
575
|
+
];
|
|
576
|
+
for (const ideaId of ideaIds) {
|
|
577
|
+
const patch = await api.inbox.patchInboxId({ id: ideaId, body: {
|
|
578
|
+
status: 'promoted',
|
|
579
|
+
promoted_to_task_id: newId,
|
|
580
|
+
} });
|
|
581
|
+
if (patch.status === 200) {
|
|
582
|
+
console.log(` promoted idea_inbox #${ideaId} → task ${newId}`);
|
|
583
|
+
promoted++;
|
|
584
|
+
} else {
|
|
585
|
+
console.error(` FAIL promote idea #${ideaId}: ${patch.status} ${JSON.stringify(patch.data).slice(0, 200)}`);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
// Dependency wiring (skipped entirely in dry-run).
|
|
591
|
+
let depsWired = 0, depErrors = 0;
|
|
592
|
+
if (!DRY) {
|
|
593
|
+
for (const def of TASKS) {
|
|
594
|
+
const deps = def.deps || [];
|
|
595
|
+
if (deps.length === 0) continue;
|
|
596
|
+
const taskId = idByRef[def.ref];
|
|
597
|
+
if (!taskId) { console.error(`DEPS ${def.ref}: no task id resolved, skipping`); depErrors++; continue; }
|
|
598
|
+
const depIds = deps.map((r) => idByRef[r]).filter((n) => Number.isFinite(n));
|
|
599
|
+
if (depIds.length !== deps.length) {
|
|
600
|
+
console.error(`DEPS ${def.ref}: unresolved refs in [${deps.join(',')}]`);
|
|
601
|
+
depErrors++;
|
|
602
|
+
continue;
|
|
603
|
+
}
|
|
604
|
+
const res = await api.tasks.postTasksIdDependencies({ id: taskId, body: {
|
|
605
|
+
depends_on_task_ids: depIds,
|
|
606
|
+
} });
|
|
607
|
+
if (res.status === 200) {
|
|
608
|
+
console.log(`DEPS ${def.ref} ← [${deps.join(',')}]`);
|
|
609
|
+
depsWired++;
|
|
610
|
+
} else {
|
|
611
|
+
console.error(`DEPS FAIL ${def.ref}: ${res.status} ${JSON.stringify(res.data).slice(0, 200)}`);
|
|
612
|
+
depErrors++;
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
console.log(`\nDONE created=${created} skipped=${skipped} errors=${errors} ideas_promoted=${promoted} deps_wired=${depsWired} dep_errors=${depErrors} (manifest: ${TASKS.length})`);
|
|
618
|
+
process.exit(errors === 0 && depErrors === 0 ? 0 : 1);
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
main().catch((err) => {
|
|
622
|
+
console.error('FATAL', err);
|
|
623
|
+
process.exit(1);
|
|
624
|
+
});
|