@bongos/core 1.17.0 → 1.17.2
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 +363 -312
- package/.claude/skills/blocker-review/SKILL.md +1 -1
- package/.claude/skills/builder-claim/SKILL.md +2 -0
- package/.claude/skills/builder-exit/SKILL.md +2 -2
- package/.claude/skills/builder-redteam/SKILL.md +3 -3
- package/.claude/skills/builder-setup/SKILL.md +2 -2
- package/.claude/skills/builder-start/SKILL.md +1 -1
- package/.claude/skills/dev/SKILL.md +1 -1
- package/.claude/skills/idea-triage/SKILL.md +2 -2
- package/.claude/skills/ideate/SKILL.md +1 -1
- package/.claude/skills/merge-mode/SKILL.md +1 -1
- package/.claude/skills/new-project/SKILL.md +3 -0
- package/.claude/skills/paint/SKILL.md +1 -1
- package/CLAUDE.md +11 -238
- package/GOVERNANCE.md +1 -1
- package/README.md +1 -1
- package/bin/bongos.js +1 -0
- package/clients/bongos-client/README.md +4 -4
- package/clients/bongos-client/bongos-client.global.js +14 -1
- package/clients/bongos-client/index.cjs +14 -1
- package/clients/bongos-client/index.d.ts +19 -2
- package/clients/bongos-client/index.mjs +11 -1
- package/clients/bongos-client/package.json +1 -1
- package/docs/adr/0001-stack-choice-single-vps.md +1 -1
- package/docs/adr/0008-google-chat-oauth-user-auth.md +1 -1
- package/docs/adr/0019-red-team-bounty-payout-table.md +3 -3
- package/docs/adr/0020-security-model-public-stub.md +1 -1
- package/docs/adr/0023-kind-multipliers-and-idea-bonus.md +1 -1
- package/docs/adr/0024-cloneable-repo-local-first-memory.md +1 -1
- package/docs/adr/0026-bfg-memory-hygiene-and-cross-builder-learning.md +4 -4
- package/docs/adr/0027-bfg-session-inefficiency-evaluator.md +3 -3
- package/docs/adr/0030-builders-hall-live-updates.md +1 -1
- package/docs/adr/0031-cloud-dev-environments-for-builders.md +4 -4
- package/docs/adr/0032-discord-mirror-of-gds.md +2 -2
- package/docs/adr/0034-thetes-graduated-newcomer-rank.md +1 -1
- package/docs/adr/0044-mediterranean-palette-replacement.md +1 -1
- package/docs/adr/0044-per-box-live-game-preview.md +1 -1
- package/docs/adr/0054-session-token-reward-cost-plus.md +10 -10
- package/docs/adr/0057-container-cost-ledger.md +3 -3
- package/docs/adr/0062-medusa-instance-model-decoupling.md +4 -4
- package/docs/adr/0065-agpl-nonprofit-ai-first-governance.md +2 -2
- package/docs/adr/0085-remove-default-per-builder-spend-cap.md +1 -1
- package/docs/adr/0086-goal-scoped-work-hierarchy.md +1 -1
- package/docs/adr/0096-require-reward-before-workable.md +9 -9
- package/docs/adr/0097-retroactive-reward-backfill.md +3 -3
- package/docs/adr/0100-two-repo-instance-model.md +1 -1
- package/docs/adr/0101-goal-hierarchy-phase-5-judge-membership-reward.md +3 -3
- package/docs/adr/0103-core-first-extraction-cloud-bongos-trunk.md +3 -3
- package/docs/adr/0107-module-upstreaming-contribution-to-core-catalog.md +1 -1
- package/docs/adr/0120-pay-on-land-and-builder-owned-rebase-gate.md +6 -6
- package/docs/adr/0133-github-app-manifest-onboarding-signin.md +2 -0
- package/docs/adr/0134-private-first-npm-distribution.md +20 -6
- package/docs/adr/0135-module-upstream-submission-interim-queue.md +34 -0
- package/docs/adr/0136-update-channel-subscription-policy.md +51 -0
- package/docs/adr/0137-upstream-publish-policy-manual-owner-gated.md +40 -0
- package/docs/adr/0138-bundled-module-deps-declared-per-module.md +45 -0
- package/docs/adr/README.md +14 -10
- package/docs/api/openapi.json +315 -6
- package/docs/api-reference.md +10 -5
- package/docs/architecture.md +3 -3
- package/docs/branding-contract.md +5 -4
- package/docs/canonical-permissions.md +1 -1
- package/docs/design/vanilla-hall-ui-redesign-scope.md +1 -1
- package/docs/file-map.md +20 -19
- package/docs/handoff-template.md +2 -2
- package/docs/modules-contract.md +8 -1
- package/docs/onboarding/diagrams/README.md +7 -7
- package/docs/onboarding/drachmae-and-karma.md +18 -18
- package/docs/onboarding/primer.md +9 -9
- package/docs/recipes/audit-replay.md +2 -2
- package/docs/recipes/builder-box-lifecycle.md +2 -2
- package/docs/recipes/claude-design-loop.md +1 -1
- package/docs/recipes/instance-deploy.md +4 -4
- package/docs/recipes/instance-first-run.md +51 -0
- package/docs/recipes/ops-gotchas.md +1 -1
- package/docs/recipes/packaging-the-core.md +5 -5
- package/docs/recipes/private-npm-distribution.md +39 -12
- package/docs/recipes/self-host.md +1 -1
- package/docs/recipes/staging-environment.md +1 -1
- package/docs/recipes/upgrading-the-core.md +63 -8
- package/docs/research/cursor-competitive-analysis.md +1 -1
- package/docs/research/llm-model-agnostic-and-cheaper-grader.md +1 -1
- package/migrations/core_191_module_submissions.sql +45 -0
- package/modules/autonomy/CLAUDE.md +11 -45
- package/modules/builder-settings/CLAUDE.md +11 -54
- package/modules/dev-box/CLAUDE.md +11 -34
- package/modules/discord/CLAUDE.md +11 -46
- package/modules/discord/module.json +2 -1
- package/modules/economy/CLAUDE.md +11 -44
- package/modules/economy/achievements.js +9 -1
- package/modules/economy/credits.js +10 -1
- package/modules/grading/CLAUDE.md +11 -38
- package/modules/hall-ui/CLAUDE.md +11 -57
- package/modules/hall-ui/public/builders.js +71 -4
- package/modules/hall-ui/public/goal-inbox.js +191 -0
- package/modules/hall-ui/public/goals-page.js +227 -22
- package/modules/hall-ui/public/goals.html +16 -0
- package/modules/hall-ui/public/hall-widgets.js +14 -1
- package/modules/hall-ui/public/index.html +3 -0
- package/modules/hall-ui/public/new-project-wizard.js +6 -4
- package/modules/hall-ui/public/style.css +43 -0
- package/modules/ideas/CLAUDE.md +11 -33
- package/modules/lifecycle/CLAUDE.md +11 -59
- package/modules/lifecycle/routes/goals.js +80 -0
- package/modules/memory/CLAUDE.md +11 -36
- package/modules/onboarding/CLAUDE.md +11 -51
- package/modules/provisioning/CLAUDE.md +15 -0
- package/modules/provisioning/migrations/provisioning_001_tables.sql +160 -0
- package/modules/provisioning/migrations/provisioning_002_standalone_shape.sql +11 -0
- package/modules/provisioning/migrations/provisioning_003_github_app_manifest.sql +95 -0
- package/modules/provisioning/module.json +17 -0
- package/modules/provisioning/onboard-plan.js +37 -0
- package/modules/provisioning/provisioning.js +539 -0
- package/modules/provisioning/rate-limit.js +35 -0
- package/modules/provisioning/routes/provisioning.js +607 -0
- package/modules/provisioning/tests/provisioning.mjs +232 -0
- package/modules/provisioning/ui/.gitkeep +0 -0
- package/modules/security/CLAUDE.md +11 -40
- package/modules/security/secret-scrub.js +10 -0
- package/modules/sessions/CLAUDE.md +11 -35
- package/modules/status-ui/CLAUDE.md +11 -43
- package/package-lock.json +2 -2
- package/package.json +7 -2
- package/public-landing/create.html +58 -12
- package/public-landing/index.html +40 -21
- package/scripts/discord/README.md +1 -1
- package/scripts/gds/CLAUDE.md +11 -140
- package/scripts/gds/claim.js +98 -48
- package/scripts/gds/claude-materialize.js +174 -20
- package/scripts/gds/claude-md-template.js +84 -0
- package/scripts/gds/cli-lib.js +112 -2
- package/scripts/gds/cutover-codemod.js +241 -0
- package/scripts/gds/fitness.js +54 -0
- package/scripts/gds/gen-api-client.js +10 -10
- package/scripts/gds/init.js +112 -16
- package/scripts/gds/lint-infra-exec.js +70 -0
- package/scripts/gds/lint-workflow-exec.js +63 -0
- package/scripts/gds/migration-namespace.js +1 -1
- package/scripts/gds/mirror-lineage-check.js +14 -5
- package/scripts/gds/mirror-redact.js +8 -0
- package/scripts/gds/module.js +118 -4
- package/scripts/gds/npmrc.js +93 -0
- package/scripts/gds/onboard.js +17 -24
- package/scripts/gds/package-core.js +74 -17
- package/scripts/gds/provision.js +102 -17
- package/scripts/gds/publish-manifest.js +60 -2
- package/scripts/gds/run-routine.js +51 -13
- package/scripts/gds/run-unit-tests.js +4 -0
- package/scripts/gds/seed-adopt-tasks.js +1 -1
- package/scripts/gds/status.js +6 -1
- package/scripts/gds/task.js +166 -0
- package/scripts/gds/update-channel.js +186 -0
- package/scripts/gds/upgrade.js +172 -25
- package/src/bongos/CLAUDE.md +11 -60
- package/src/bongos/auth.js +24 -0
- package/src/bongos/module-submissions.js +56 -0
- package/src/bongos/route-rank-check.js +6 -0
- package/src/bongos/routes/CLAUDE.md +11 -39
- package/src/bongos/routes/auth.js +6 -1
- package/src/bongos/routes/modules.js +123 -21
- package/src/bongos/serve-internal.js +10 -1
- package/src/branding.js +1 -0
- package/src/instance-config.js +1 -1
- package/src/module-api.js +24 -1
- package/src/module-loader/loader.js +36 -4
- package/src/module-loader/manifest-schema.js +16 -1
- package/tests/branding.mjs +11 -0
- package/tests/claim_error_surface.mjs +107 -0
- package/tests/claude_materialize.mjs +125 -0
- package/tests/consumer_layout_boot.mjs +302 -0
- package/tests/cutover_codemod.mjs +184 -0
- package/tests/device_flow_start.mjs +96 -0
- package/tests/first_run_engine_check.mjs +79 -0
- package/tests/goal_membership_requests.mjs +33 -3
- package/tests/hook_core_resolve.mjs +125 -0
- package/tests/hook_user_agents.mjs +62 -0
- package/tests/infra_exec_paths.mjs +104 -0
- package/tests/init.mjs +106 -6
- package/tests/instance_mismatch_guard.mjs +101 -0
- package/tests/mirror_lineage_proof.mjs +14 -0
- package/tests/module_cli.mjs +130 -2
- package/tests/module_loader.mjs +42 -0
- package/tests/module_manifest.mjs +19 -0
- package/tests/module_submissions.mjs +135 -0
- package/tests/npmrc.mjs +105 -0
- package/tests/onboard.mjs +62 -0
- package/tests/package_core.mjs +76 -22
- package/tests/platform_boot.mjs +5 -2
- package/tests/provision.mjs +107 -8
- package/tests/provisioning_github_app_routes.mjs +44 -2
- package/tests/publish_manifest.mjs +52 -1
- package/tests/run_routine.mjs +26 -1
- package/tests/run_routine_two_root.mjs +77 -0
- package/tests/scrubber_corpus.mjs +17 -0
- package/tests/served_paths_shipped.mjs +2 -2
- package/tests/task_cli.mjs +99 -0
- package/tests/update_channel.mjs +186 -0
- package/tests/upgrade.mjs +220 -25
- package/tests/workflow_exec_paths.mjs +98 -0
- package/docs/design/container-exterior-tiles.md +0 -49
- package/docs/design/container-exterior.md +0 -81
- package/docs/design/container-interior.md +0 -77
- package/docs/design/world-map-scroll.md +0 -41
- package/docs/recipes/claude-gemini-bongos-doors.md +0 -155
- package/docs/recipes/cloudbongos-staging-gate.md +0 -139
- package/docs/recipes/cloudbongos-standup.md +0 -111
- package/docs/recipes/parallel-load-results-2026-05-30.md +0 -63
- package/docs/recipes/parallel-load-test.md +0 -32
- package/docs/recipes/pixel-art-pipeline.md +0 -411
- package/docs/recipes/staging-data.md +0 -50
- package/migrations/instance/018_pms_v3_planning_seed.sql +0 -131
- package/migrations/instance/080_gds_v4_planning_seed.sql +0 -75
- package/migrations/instance/110_medusa_planning_seed.sql +0 -70
- package/migrations/instance/120_bongos_v1_planning_seed.sql +0 -69
- package/migrations/instance/144_bongos_v1_module_system_criterion.sql +0 -26
- package/migrations/instance/159_bongos_v1_goal_hierarchy_criterion.sql +0 -29
- package/migrations/instance/172_v2_world_planning_seed.sql +0 -163
- package/migrations/instance/173_bongos_v1_c7_core_modularized.sql +0 -33
- package/migrations/instance/182_gdsv4_bongos_consolidation.sql +0 -132
- package/migrations/instance/183_gdsv4_carryover_themed_goals.sql +0 -116
- package/migrations/instance/186_bongos_v1_governance_planning_seed.sql +0 -69
- package/scripts/gds/art-stage.js +0 -152
- package/server.js +0 -212
- package/tests/art_key.mjs +0 -121
- package/tests/day_cycle.mjs +0 -197
- package/tests/snapshot_picker.mjs +0 -233
- package/tests/sprite_facing.mjs +0 -35
- package/tests/terrain_picker.mjs +0 -298
- package/tests/turn_in_place.mjs +0 -280
- package/tests/walkability.mjs +0 -188
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
-- GDS-V4 Planning Session #1 seed
|
|
2
|
-
-- Applied under claim 742 (task 937, V4.R00 — Planning Session #1).
|
|
3
|
-
-- Idempotent on re-run.
|
|
4
|
-
--
|
|
5
|
-
-- What this migration does:
|
|
6
|
-
-- 1. Updates versions.GDS-V4 name + done_when to match the 6 criteria
|
|
7
|
-
-- 2. Seeds 6 done_when_criteria rows for version_id='GDS-V4'
|
|
8
|
-
-- 3. Renames the 2 existing open GDS-V4 carry-over tasks (263, 594) with
|
|
9
|
-
-- their V4.R## prefix and sets their priorities per the ranking.
|
|
10
|
-
-- Existing descriptions are preserved.
|
|
11
|
-
--
|
|
12
|
-
-- Net-new tasks (38 of them) are created via scripts/gds/seed-gds-v4-tasks.js
|
|
13
|
-
-- which runs after this migration is applied (same split as the V3 planning
|
|
14
|
-
-- seed, migration 018: tasks have rich descriptions + dependency wiring that
|
|
15
|
-
-- the API handles more cleanly than a long SQL VALUES list).
|
|
16
|
-
--
|
|
17
|
-
-- Source research: 2026-06-12 retrieval-layer architecture report + BFG
|
|
18
|
-
-- session-corpus friction mining (1,349 session_records; ceremony +
|
|
19
|
-
-- failed-tool-use taxonomies).
|
|
20
|
-
|
|
21
|
-
BEGIN;
|
|
22
|
-
|
|
23
|
-
-- ============================================================================
|
|
24
|
-
-- 1. Version name + done_when text
|
|
25
|
-
-- ============================================================================
|
|
26
|
-
UPDATE versions
|
|
27
|
-
SET name = 'GDS V4 — recall, resumable pipeline, honest measurement',
|
|
28
|
-
done_when = 'When this is finished, a builder''s session answers "have we done this before?" in one call instead of an afternoon — project knowledge (markdown and database prose alike) is searchable in one rank-scoped query and pushed into sessions at claim time; a failed ship is one command from resume instead of a consumed claim; the recurring tool-error classes (wrong-tree writes, HTML 404s, phantom smoke servers) are engineered away; the BFG''s measurements reflect real friction so the improvement is provable against the 2026-06-12 baseline; and the city watches itself on one pane of glass.'
|
|
29
|
-
WHERE id = 'GDS-V4';
|
|
30
|
-
|
|
31
|
-
-- ============================================================================
|
|
32
|
-
-- 2. Seed 6 done_when_criteria rows for GDS-V4
|
|
33
|
-
-- UPSERT semantics via ON CONFLICT (version_id, criterion_id).
|
|
34
|
-
-- ============================================================================
|
|
35
|
-
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, sort_order)
|
|
36
|
-
SELECT * FROM (VALUES
|
|
37
|
-
('GDS-V4', 'one-call-recall',
|
|
38
|
-
'**Project knowledge is answerable in one call.** Any builder session — laptop, dev box, or browser — can ask one question and get back the relevant ADRs, recipes, session logs, learnings, ideas, and task notes, including the database prose nothing can search today. Done when: lexical search is live over repo markdown + DB prose; results are rank- and owner-scoped (Xenos never sees permission-core content; nobody sees another builder''s memory); every result cites its source so the agent can follow up; and a golden-question set mined from real sessions scores ≥80% recall@5 — whether plain text-search or embeddings gets there is decided by measurement, not taste.',
|
|
39
|
-
1),
|
|
40
|
-
('GDS-V4', 'sessions-start-knowing',
|
|
41
|
-
'**Sessions start knowing, not hunting.** What a session needs to act correctly is pushed at claim time instead of rediscovered: its worktree root, the claims it holds, the GDS API path prefix and field enums, OS environment facts, the next free ADR/migration number, and the top recall hits for the claimed task. Done when: the guess-and-retry API errors and worktree-path floods measured in the June 2026 corpus stop appearing in new sessions.',
|
|
42
|
-
2),
|
|
43
|
-
('GDS-V4', 'failed-ship-never-strands',
|
|
44
|
-
'**A failed ship never strands work.** Drift fails, grade failures, and merge bails leave the task one command from resume — no consumed claims, no reset-and-re-claim dance, no re-running an already-passing grader panel. Done when: a deliberately failed ship is resumed in one command, and claim_consumed_on_fail (which fired in 11 of 11 deep-dived sessions) goes quiet in new sessions.',
|
|
45
|
-
3),
|
|
46
|
-
('GDS-V4', 'machine-room-ergonomics',
|
|
47
|
-
'**Sessions stop fighting the machine room.** The recurring tool-error classes are engineered away: cross-tree writes guarded, API 404s/409s answer in JSON with a hint instead of an HTML page, laptop sessions stop smoke-testing against a server that isn''t running. Done when: the wrong-path class (84 hits, #1 in the June 2026 corpus) and its siblings drop measurably in new sessions.',
|
|
48
|
-
4),
|
|
49
|
-
('GDS-V4', 'bfg-measures-what-hurts',
|
|
50
|
-
'**The BFG measures what actually hurts.** The session evaluator''s numbers reflect real friction: ceremony is visible on cache-dominated marathon sessions (today they score ~99% efficient), the wrong-path footgun — the corpus''s #1 error class — is detected, harness guardrail retries stop inflating tool-error counts, and corpus coverage is reconciled. Done when: re-running the friction analysis produces numbers trustworthy enough to judge the other criteria.',
|
|
51
|
-
5),
|
|
52
|
-
('GDS-V4', 'one-pane-of-glass',
|
|
53
|
-
'**The city watches itself on one pane of glass.** The observability carry-overs land — Grafana dashboards as code, status surface v2 — plus staleness/health visibility for the new search index. Done when: those surfaces are live and the search index cannot silently go stale.',
|
|
54
|
-
6)
|
|
55
|
-
) AS v(version_id, criterion_id, criterion_md, sort_order)
|
|
56
|
-
WHERE EXISTS (SELECT 1 FROM versions WHERE id = 'GDS-V4')
|
|
57
|
-
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
58
|
-
SET criterion_md = EXCLUDED.criterion_md,
|
|
59
|
-
sort_order = EXCLUDED.sort_order;
|
|
60
|
-
|
|
61
|
-
-- ============================================================================
|
|
62
|
-
-- 3. Re-prefix + re-prioritize the 2 existing open carry-over tasks.
|
|
63
|
-
-- Guarded so re-runs (and already-renamed rows) are no-ops.
|
|
64
|
-
-- ============================================================================
|
|
65
|
-
UPDATE tasks
|
|
66
|
-
SET title = 'V4.R28 — ' || regexp_replace(title, '^V\d+\.R\d+\s*—\s*', ''),
|
|
67
|
-
priority = 3
|
|
68
|
-
WHERE id = 263 AND version_id = 'GDS-V4' AND title NOT LIKE 'V4.R%';
|
|
69
|
-
|
|
70
|
-
UPDATE tasks
|
|
71
|
-
SET title = 'V4.R29 — ' || regexp_replace(title, '^V\d+\.R\d+\s*—\s*', ''),
|
|
72
|
-
priority = 3
|
|
73
|
-
WHERE id = 594 AND version_id = 'GDS-V4' AND title NOT LIKE 'V4.R%';
|
|
74
|
-
|
|
75
|
-
COMMIT;
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
-- GDS-V4 Medusa Planning Session seed (2026-06-17)
|
|
2
|
-
-- Applied under claim 982 (task 1188 — "V4 — Medusa Planning Session").
|
|
3
|
-
-- Idempotent on re-run.
|
|
4
|
-
--
|
|
5
|
-
-- Adds the "Medusa" scope to GDS-V4: decouple the GDS from the Amazonprimea
|
|
6
|
-
-- game into a standalone, configurable, self-hostable, AGPL open-source,
|
|
7
|
-
-- non-profit, AI-first build platform. Amazonprimea becomes instance 1.
|
|
8
|
-
--
|
|
9
|
-
-- What this migration does:
|
|
10
|
-
-- 1. Appends a Medusa clause to versions.GDS-V4 done_when (guarded so it
|
|
11
|
-
-- only appends once).
|
|
12
|
-
-- 2. Seeds 2 done_when_criteria rows (C8 + C9) for version_id='GDS-V4'
|
|
13
|
-
-- at sort_order 8 and 9 (after the 7 existing criteria).
|
|
14
|
-
--
|
|
15
|
-
-- Net-new tasks (R50–R73, 24 of them) are created via
|
|
16
|
-
-- scripts/gds/seed-medusa-tasks.js which runs AFTER this migration is applied,
|
|
17
|
-
-- so the positional "C8"/"C9" criterion refs resolve. Same split as the
|
|
18
|
-
-- V4 Planning Session #1 seed (migration 080 + seed-gds-v4-tasks.js).
|
|
19
|
-
--
|
|
20
|
-
-- Locked owner decisions (this session): one project per install (no
|
|
21
|
-
-- multi-tenant project_id retrofit); migrate in place (OTB = instance 1, live
|
|
22
|
-
-- prod never breaks); AGPL-3.0 (anti-monopoly); keep the Greek rank ladder
|
|
23
|
-
-- (xenos<thetes<metic<archon) as the canonical enum (no rename); branding is a
|
|
24
|
-
-- per-instance config layer an owner's own LLM fills; feature-module selection
|
|
25
|
-
-- per instance; self-host canonical, managed hosting an optional later layer;
|
|
26
|
-
-- mobile contribution deferred to a later version; AI-first as a documented
|
|
27
|
-
-- norm (not a technical gate).
|
|
28
|
-
--
|
|
29
|
-
-- Source: 2026-06-17 Medusa decoupling codebase sweep (8-dimension audit +
|
|
30
|
-
-- synthesis + critique).
|
|
31
|
-
|
|
32
|
-
BEGIN;
|
|
33
|
-
|
|
34
|
-
-- ============================================================================
|
|
35
|
-
-- 1. Append a Medusa clause to the version-level done_when (once only).
|
|
36
|
-
-- ============================================================================
|
|
37
|
-
UPDATE versions
|
|
38
|
-
SET done_when = done_when ||
|
|
39
|
-
' And the build system itself becomes Medusa — a standalone, configurable, self-hostable, AGPL-licensed, non-profit, AI-first platform decoupled from any one project, with Amazonprimea running as its first instance.'
|
|
40
|
-
WHERE id = 'GDS-V4'
|
|
41
|
-
AND done_when NOT LIKE '%Medusa%';
|
|
42
|
-
|
|
43
|
-
-- ============================================================================
|
|
44
|
-
-- 2. Seed the 2 Medusa done_when_criteria rows for GDS-V4 (C8 + C9).
|
|
45
|
-
-- UPSERT via ON CONFLICT (version_id, criterion_id).
|
|
46
|
-
-- sort_order 8/9 → positional refs "C8"/"C9" for the seed script.
|
|
47
|
-
-- ============================================================================
|
|
48
|
-
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, sort_order)
|
|
49
|
-
SELECT * FROM (VALUES
|
|
50
|
-
('GDS-V4', 'medusa-standalone-instance',
|
|
51
|
-
'**Medusa runs as a configurable, self-hostable, branded instance — Amazonprimea is instance 1.** The build system is no longer a fixture of the game: it boots with no game code in the process, runs on its own database, and takes its identity, branding, and feature selection from per-instance config — Amazonprimea becomes instance 1, its surfaces (status/builders) unchanged because their look now comes from config rather than hard-coding. Done when: a Medusa-only entrypoint boots with no Colyseus/Phaser/game routes; a fresh instance''s database holds only build-system tables (game tables only when the game module is enabled); one command (docker compose) stands an instance up with zero hard-coded server IP / service name / deploy script; product name, domain, sign-in origin, repo binding, currency label and the full branding pack resolve from one config with a neutral starter an owner''s own LLM fills; the first admin is set at install time, not in a migration; core carries no hard-coded project branding (the deploy-time diagram generator reads instance branding too; Greek rank names stay by decision); an instance turns feature modules (game, art pipeline, Discord, dev boxes) on/off; an instance declares its core version and `medusa upgrade` applies new migrations + code while preserving instance config; and a second, differently-branded non-game instance is created via a generic init flow and ships one task claim->grade->ship end-to-end. Live Amazonprimea is unaffected throughout.',
|
|
52
|
-
8),
|
|
53
|
-
('GDS-V4', 'medusa-open-and-protected',
|
|
54
|
-
'**Medusa is open, free, and protected from capture.** The platform is released to the public as open source on a deliberate delay so the live edge stays ahead of would-be cloners, under a license that stops a company from running a closed hosted fork, with non-profit, AI-first governance so it cannot be quietly captured. Done when: an AGPL-3.0 LICENSE ships in the repo; a public mirror repository carries only the publishable subset (the build system — not the game, infra secrets, or trust-boundary internals); an automated pipeline publishes to the mirror on a ~6-month delay with a redaction layer that strips secrets and prod topology even from old commits; GOVERNANCE, CONTRIBUTING, and CODE_OF_CONDUCT define the non-profit, AI-first (AI always writes the code) anti-monopoly stance; and the private<->public lineages stay consistent (migration numbering and enum values do not diverge), verified by a no-leak check on the published mirror.',
|
|
55
|
-
9)
|
|
56
|
-
) AS v(version_id, criterion_id, criterion_md, sort_order)
|
|
57
|
-
WHERE EXISTS (SELECT 1 FROM versions WHERE id = 'GDS-V4')
|
|
58
|
-
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
59
|
-
SET criterion_md = EXCLUDED.criterion_md,
|
|
60
|
-
sort_order = EXCLUDED.sort_order;
|
|
61
|
-
|
|
62
|
-
-- ============================================================================
|
|
63
|
-
-- 3. Self-register so migrate.sh skips this file on the next deploy (it was
|
|
64
|
-
-- hot-applied via psql under the planning session). ON CONFLICT keeps it
|
|
65
|
-
-- safe if migrate.sh also registers it.
|
|
66
|
-
-- ============================================================================
|
|
67
|
-
INSERT INTO schema_migrations (version) VALUES ('110_medusa_planning_seed')
|
|
68
|
-
ON CONFLICT DO NOTHING;
|
|
69
|
-
|
|
70
|
-
COMMIT;
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
-- Bongos App — V1 planning seed (2026-06-20)
|
|
2
|
-
-- Owner-directed (archon). Idempotent on re-run.
|
|
3
|
-
--
|
|
4
|
-
-- Creates a NEW version line: BONGOS-V1 — the inaugural version of the "bongos"
|
|
5
|
-
-- platform line. Strategic intent (owner): bongos is the successor to the GDS;
|
|
6
|
-
-- the GDS deprecates after GDS-V4 and its infra/build-out migrates into bongos.
|
|
7
|
-
-- What V1 SHIPS is the Cloud Bongos desktop "Feedback Capture" tool: a Zoom-style
|
|
8
|
-
-- floating toolbar that captures narrated voice + ~1/sec snapshots and freehand
|
|
9
|
-
-- markup over ANY on-screen target, synthesizes them into one cheap, model-agnostic
|
|
10
|
-
-- prompt, and hands it to Claude Desktop + Claude Code. The existing Dev Box
|
|
11
|
-
-- desktop app (ADR 0045) is absorbed as a module of the bongos app (reusing its
|
|
12
|
-
-- Apple cert + distribution pipeline). Visual element-select is deferred to V2.
|
|
13
|
-
--
|
|
14
|
-
-- What this migration does:
|
|
15
|
-
-- 1. INSERT the BONGOS-V1 versions row (track=internal, status=planning).
|
|
16
|
-
-- 2. Seed 4 done_when_criteria (C1..C4) at sort_order 1..4.
|
|
17
|
-
-- Net-new tasks (R01..R17) are created AFTER this is applied via
|
|
18
|
-
-- scripts/gds/seed-bongos-app-tasks.js, so the positional C1..C4 refs resolve.
|
|
19
|
-
-- (Same split as migration 110 + seed-medusa-tasks.js.)
|
|
20
|
-
|
|
21
|
-
BEGIN;
|
|
22
|
-
|
|
23
|
-
-- ============================================================================
|
|
24
|
-
-- 1. Create the BONGOS-V1 version row.
|
|
25
|
-
-- ============================================================================
|
|
26
|
-
INSERT INTO versions (id, name, track, status, scope_doc_path, done_when, started_at)
|
|
27
|
-
VALUES (
|
|
28
|
-
'BONGOS-V1',
|
|
29
|
-
'Bongos App — V1',
|
|
30
|
-
'internal',
|
|
31
|
-
'planning',
|
|
32
|
-
'limitations/bongos-v1.md',
|
|
33
|
-
'Bongos App V1 ships the Cloud Bongos desktop feedback tool: a Zoom-style floating toolbar that captures narrated voice + ~1/sec snapshots and freehand markup over any on-screen target, synthesizes them into one cheap, model-agnostic prompt, and hands it to Claude Desktop and Claude Code. The Dev Box desktop app is absorbed as a module of the bongos app. This is the inaugural version of the bongos line, the successor the GDS migrates into after GDS-V4. Visual element-select is deferred to V2.',
|
|
34
|
-
now()
|
|
35
|
-
)
|
|
36
|
-
ON CONFLICT (id) DO NOTHING;
|
|
37
|
-
|
|
38
|
-
-- ============================================================================
|
|
39
|
-
-- 2. Seed the 4 done_when_criteria (C1..C4). UPSERT on (version_id, criterion_id).
|
|
40
|
-
-- sort_order 1..4 -> positional refs C1..C4 for the seed script.
|
|
41
|
-
-- ============================================================================
|
|
42
|
-
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, sort_order)
|
|
43
|
-
SELECT * FROM (VALUES
|
|
44
|
-
('BONGOS-V1', 'signed-installable',
|
|
45
|
-
'**Signed, installable, and permission-guided on Mac + Windows.** A code-signed, notarized macOS build and a signed Windows build install from a branded download and launch as a floating menu-bar/tray app, reusing the existing Dev Box app distribution + Apple Developer ID; the Dev Box switch is absorbed as a module of the bongos app rather than shipping as a separate install. Done when: the bongos app is one Electron app that contains the prior Dev Box functionality as a module; a signed+notarized Mac build and a signed Windows build install from the branded /downloads redirect and auto-update; a first-run permission wizard detects + deep-links Screen Recording and Microphone grants with live grant-state; and an unsigned dev-build path exists for local iteration.',
|
|
46
|
-
1),
|
|
47
|
-
('BONGOS-V1', 'captures-anywhere',
|
|
48
|
-
'**Captures narrated feedback over any on-screen target.** The floating toolbar overlays any window (the Zoom annotation model) and records the microphone plus time-aligned ~1/sec snapshots of the chosen target, with freehand/box/arrow/text markup and a freeze-frame, on macOS and Windows. Done when: a transparent, always-on-top, click-through overlay draws over arbitrary other apps (surviving macOS fullscreen/Spaces and Windows multi-monitor DPI); a global hotkey summons/dismisses the bar; Record captures mic + the chosen window/screen at ~1/sec with snapshot-on-change + perceptual dedup + a frame cap; and Markup draws and freezes over any pixels.',
|
|
49
|
-
2),
|
|
50
|
-
('BONGOS-V1', 'cheap-complete-synthesis',
|
|
51
|
-
'**Synthesizes one cheap, complete, model-agnostic prompt.** The capture is fused into a single LLM-ready bundle at a disciplined token envelope — frames dominate cost, so audio is transcribed on-device to text and frames are deduped + salience-escalated rather than sent 1/sec at full resolution. Done when: on-device transcription (whisper.cpp) yields word-timestamped text; transcript and frames are time-aligned and only transcript/markup-flagged frames escalate to full resolution; a deterministic prompt.md is assembled with inlined absolute image paths; and a typical multi-minute session lands at the disciplined envelope (~5-11k tokens), not the ~70k+ naive cost.',
|
|
52
|
-
3),
|
|
53
|
-
('BONGOS-V1', 'lands-in-claude',
|
|
54
|
-
'**Lands in Claude — Desktop and Code — reliably and model-agnostically.** The synthesized bundle reaches both Claude surfaces without a fragile step, under a documented contract that works for any agent. Done when: a file-bundle handoff (prompt.md + image files) plus clipboard text works for Claude Desktop; a /feedback path injects the prompt and loads the image paths in Claude Code; an optional local stdio MCP server exposes the latest bundle for a hands-free pull; and an ADR + README document the architecture and the model-agnostic prompt/handoff contract.',
|
|
55
|
-
4)
|
|
56
|
-
) AS v(version_id, criterion_id, criterion_md, sort_order)
|
|
57
|
-
WHERE EXISTS (SELECT 1 FROM versions WHERE id = 'BONGOS-V1')
|
|
58
|
-
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
59
|
-
SET criterion_md = EXCLUDED.criterion_md,
|
|
60
|
-
sort_order = EXCLUDED.sort_order;
|
|
61
|
-
|
|
62
|
-
-- ============================================================================
|
|
63
|
-
-- 3. Self-register so migrate.sh skips this file on the next deploy (it is
|
|
64
|
-
-- hot-applied via psql under this planning seed).
|
|
65
|
-
-- ============================================================================
|
|
66
|
-
INSERT INTO schema_migrations (version) VALUES ('120_bongos_v1_planning_seed')
|
|
67
|
-
ON CONFLICT DO NOTHING;
|
|
68
|
-
|
|
69
|
-
COMMIT;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
-- BONGOS-V1 — module-system done-when criterion (C5) — 2026-06-21
|
|
2
|
-
-- Owner-directed (archon), task 1405 (BV1.R36) / ADR 0083.
|
|
3
|
-
--
|
|
4
|
-
-- Adds a 5th done_when_criterion to BONGOS-V1: the project-extensible module
|
|
5
|
-
-- system (the design scoped in docs/design/modular-architecture/, epic #1388 /
|
|
6
|
-
-- BV1.R34). The module-system child tasks are seeded AFTER this is applied via
|
|
7
|
-
-- scripts/gds/seed-bongos-module-system-tasks.js, so the positional ref C5
|
|
8
|
-
-- resolves at task-create. (Same migration+seed split as 120 + seed-bongos-app-tasks.js.)
|
|
9
|
-
--
|
|
10
|
-
-- Idempotent on re-run: UPSERT on (version_id, criterion_id). The companion
|
|
11
|
-
-- migration 120 already seeded C1..C4 (sort_order 1..4); this adds sort_order 5.
|
|
12
|
-
|
|
13
|
-
BEGIN;
|
|
14
|
-
|
|
15
|
-
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, sort_order)
|
|
16
|
-
SELECT * FROM (VALUES
|
|
17
|
-
('BONGOS-V1', 'module-system-live',
|
|
18
|
-
'**The project-extensible module system is live — the whole product is `core + modules`.** Cloud Bongos''s closed four-module registry becomes self-describing packages the platform discovers, validates, and mounts; a host can ADD or CONFIGURE modules without forking core, and the trust boundary (ADR 0016) is ENFORCED across module routes, not trusted. Built as an incremental strangler migration (ADR 0083) — reorganize, not rewrite; single-package, single-process, no-bundler preserved. Done when: (1) `src/module-api.js` is the stable, semver''d doorway and the only core file a module may import; (2) a loader discovers/validates/mounts `modules/*/module.json` behind kernel-composed auth and replaces the hardcoded `KNOWN_MODULES` registry, with a kernel seam registry (ports + events) for cross-module capability; (3) the four feature modules (dev-box, game, discord, art-pipeline) are moved into `modules/<key>/` and the inline `if (isModuleEnabled())` gates are deleted, with OTB behaving byte-identically (the proof); (4) fitness functions fail the build on any boundary violation (core never imports a module, modules import only the published API, every module write-route is rank-gated, core carries no module code, module migrations are additive + namespaced); (5) module-owned migrations generalize the `migrations/game/` precedent to `modules/<key>/migrations/` (enabled-gated apply, disable-preserves-data); (6) `bongos module new <key>` scaffolds a module and `bongos upgrade` pre-checks coreVersion; and (7) docs/modules-contract.md documents the plugin-API contract + a module-author recipe.',
|
|
19
|
-
5)
|
|
20
|
-
) AS v(version_id, criterion_id, criterion_md, sort_order)
|
|
21
|
-
WHERE EXISTS (SELECT 1 FROM versions WHERE id = 'BONGOS-V1')
|
|
22
|
-
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
23
|
-
SET criterion_md = EXCLUDED.criterion_md,
|
|
24
|
-
sort_order = EXCLUDED.sort_order;
|
|
25
|
-
|
|
26
|
-
COMMIT;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
-- BONGOS-V1 — goal-scoped-work-hierarchy done-when criterion (C6) — 2026-06-24
|
|
2
|
-
-- Owner-directed (archon), task 1507 / ADR 0086 (docs/adr/0086-goal-scoped-work-hierarchy.md).
|
|
3
|
-
--
|
|
4
|
-
-- Adds a 6th done_when_criterion to BONGOS-V1: the goal-scoped work hierarchy —
|
|
5
|
-
-- assign module-scoped GOALS, not individual tasks, and let a goal's members
|
|
6
|
-
-- author their own tasks within the goal's module wall, enforced server-side.
|
|
7
|
-
-- A criterion cluster ALONGSIDE the ADR 0083 module work (C5). The build tasks
|
|
8
|
-
-- (BV1.R54..R66, the ADR's Phases 1-4 + a deferred Phase-5 ADR spike + the live
|
|
9
|
-
-- proof) are seeded AFTER this is applied via
|
|
10
|
-
-- scripts/gds/seed-bongos-goal-hierarchy-tasks.js, so the positional ref C6
|
|
11
|
-
-- resolves at task-create (same migration+seed split as 144 + the module seed).
|
|
12
|
-
--
|
|
13
|
-
-- Idempotent on re-run: UPSERT on (version_id, criterion_id). Migrations 120/144
|
|
14
|
-
-- already seeded C1..C5 (sort_order 1..5); this adds sort_order 6.
|
|
15
|
-
|
|
16
|
-
BEGIN;
|
|
17
|
-
|
|
18
|
-
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, sort_order)
|
|
19
|
-
SELECT * FROM (VALUES
|
|
20
|
-
('BONGOS-V1', 'goal-scoped-work-hierarchy',
|
|
21
|
-
'**Builders are assigned module-scoped goals, not individual tasks — and can author their own work within a goal''s wall, enforced server-side.** The owner stops hand-authoring every task; a builder joins a shared, module-scoped goal and gains bounded authority to create + organize tasks beneath it, never exceeding the goal''s module scope or touching the protected core. The six-tier hierarchy (Project → Version → Goal → Criteria → Task → Sub-task) is a per-instance config preset; enforcement is core (ADR 0086, building on ADR 0016/0043/0049/0083/0084). Done when: (1) a module-scope map (`module-scope-map.js`, importing `PROTECTED_GLOBS`) + a configurable hierarchy preset (`config/hierarchy.json` + `hierarchy-config.js`, onboarding-edited) exist; (2) a `goals` tier (shared, joinable, `scope_modules`) sits between versions and criteria, `done_when_criteria` re-parent under goals (backfilled under a per-version default goal), and `tasks` carry `goal_id`, with the `/status` rollup running Version → Goals → Criteria → Tasks; (3) a goal member can author a task via `POST /goals/:id/tasks` only if it is scope-subset + clears the protected-path gate + the auto-derived rank floor, with two fitness checks (goal routes pinned in `route-rank-check`; scope code imports `PROTECTED_GLOBS`) and an abuse-matrix test proving the wall holds; (4) a polymorphic dependency edge spans tasks/goals/criteria and resolves at the existing claim gate, a criterion auto-flags "met — pending review" when its tasks ship, a `/goal-review` cadence (Metic+) confirms → auto-achieves goals, and goals archive/reopen/carry-forward at rescope; and (5) a sub-Metic builder demonstrably authors, claims, and ships a task inside an assigned goal while being BLOCKED server-side from authoring one that touches a protected path outside scope (the live proof). Phase 5 of the ADR (an AI relevance judge + sub-Metic membership inside protected-scope goals) is deferred to its own security-reviewed ADR.',
|
|
22
|
-
6)
|
|
23
|
-
) AS v(version_id, criterion_id, criterion_md, sort_order)
|
|
24
|
-
WHERE EXISTS (SELECT 1 FROM versions WHERE id = 'BONGOS-V1')
|
|
25
|
-
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
26
|
-
SET criterion_md = EXCLUDED.criterion_md,
|
|
27
|
-
sort_order = EXCLUDED.sort_order;
|
|
28
|
-
|
|
29
|
-
COMMIT;
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
-- 172_v2_world_planning_seed.sql
|
|
2
|
-
-- Land Builder #25's world-building planning package (idea_inbox 416-427),
|
|
3
|
-
-- reviewed + adjusted with Lars, folded into the existing product version V2.
|
|
4
|
-
-- Backed by task 1569 (source_ref V2-world-planning-1).
|
|
5
|
-
--
|
|
6
|
-
-- Decisions baked in here:
|
|
7
|
-
-- * World-building folds into V2 — NO new version row.
|
|
8
|
-
-- * The warp stays in V2 (criterion connected-warps + its tasks).
|
|
9
|
-
-- * The in-house map editor (criterion map-editor + 6 tasks) defers to V3.
|
|
10
|
-
-- * Engineering/server lanes are split from design/art lanes (carried by the
|
|
11
|
-
-- per-task module_key + requires_rank set in the companion seed script).
|
|
12
|
-
--
|
|
13
|
-
-- This migration handles DB scope-truth only:
|
|
14
|
-
-- 1. 4 goals (3 on V2, 1 on V3)
|
|
15
|
-
-- 2. 7 done_when_criteria (6 on V2, 1 on V3), parented to their goals
|
|
16
|
-
-- 3. V2 + V3 versions.done_when text
|
|
17
|
-
-- 4. +5 karma x7 to builder #25 (the proposer), mirroring ratify
|
|
18
|
-
-- 5. idea_inbox bookkeeping (416-424 resolved; 427 left open as the durable
|
|
19
|
-
-- world-expansion reference)
|
|
20
|
-
--
|
|
21
|
-
-- The 16 V2 + 6 V3 + 2 GDS-V4 tasks (with deps + criterion links) are created
|
|
22
|
-
-- by scripts/gds/seed-v2-world-tasks.js, run against the API after this deploys.
|
|
23
|
-
--
|
|
24
|
-
-- Idempotent: goals guarded by NOT EXISTS (version_id,title); criteria via
|
|
25
|
-
-- ON CONFLICT (version_id,criterion_id); karma via NOT EXISTS on a per-idea
|
|
26
|
-
-- reason marker; idea updates are naturally idempotent.
|
|
27
|
-
|
|
28
|
-
BEGIN;
|
|
29
|
-
|
|
30
|
-
-- Vanilla-safe guard (task 1264 / hardware-verify R63): everything below seeds
|
|
31
|
-
-- OTB *product* scope-truth (V2/V3 game-world planning). A vanilla Cloud Bongos
|
|
32
|
-
-- instance has no V2/V3 version rows — no migration seeds them (they were created
|
|
33
|
-
-- via the API on the OTB instance) — so each INSERT below would violate the
|
|
34
|
-
-- versions foreign key on a fresh DB. Wrap the seed in a DO block that no-ops
|
|
35
|
-
-- unless the product versions exist. (On the OTB instance this migration is
|
|
36
|
-
-- already recorded in schema_migrations and never re-runs; the guard only bites
|
|
37
|
-
-- on a fresh self-host DB — see docker-compose.yml / self-host.)
|
|
38
|
-
DO $seed$
|
|
39
|
-
BEGIN
|
|
40
|
-
IF NOT EXISTS (SELECT 1 FROM versions WHERE id IN ('V2','V3')) THEN
|
|
41
|
-
RAISE NOTICE '172: V2/V3 product versions absent — vanilla instance, skipping OTB world-planning seed.';
|
|
42
|
-
RETURN;
|
|
43
|
-
END IF;
|
|
44
|
-
|
|
45
|
-
-- ---------------------------------------------------------------------------
|
|
46
|
-
-- 1. Goals (module-scoped workspaces, ADR 0086). created_by = 1 (Archon land).
|
|
47
|
-
-- ---------------------------------------------------------------------------
|
|
48
|
-
INSERT INTO goals (version_id, title, description, scope_modules, status, created_by)
|
|
49
|
-
SELECT 'V2', 'World engine (multi-map runtime)',
|
|
50
|
-
'File-based maps, depth rendering, and per-map warp rooms. Engineering — touches protected game code (Metic+).',
|
|
51
|
-
ARRAY['game']::text[], 'open', 1
|
|
52
|
-
WHERE NOT EXISTS (SELECT 1 FROM goals WHERE version_id='V2' AND title='World engine (multi-map runtime)');
|
|
53
|
-
|
|
54
|
-
INSERT INTO goals (version_id, title, description, scope_modules, status, created_by)
|
|
55
|
-
SELECT 'V2', 'Olympia art set',
|
|
56
|
-
'Terrain, temple kit, and decor for Olympia on the locked 64-color palette. Design — art pipeline, open to any builder.',
|
|
57
|
-
ARRAY['art-pipeline']::text[], 'open', 1
|
|
58
|
-
WHERE NOT EXISTS (SELECT 1 FROM goals WHERE version_id='V2' AND title='Olympia art set');
|
|
59
|
-
|
|
60
|
-
INSERT INTO goals (version_id, title, description, scope_modules, status, created_by)
|
|
61
|
-
SELECT 'V2', 'Olympia vertical slice',
|
|
62
|
-
'Compose the walkable Olympia map from engine + art, second connected map, and score vs the reference.',
|
|
63
|
-
ARRAY['game']::text[], 'open', 1
|
|
64
|
-
WHERE NOT EXISTS (SELECT 1 FROM goals WHERE version_id='V2' AND title='Olympia vertical slice');
|
|
65
|
-
|
|
66
|
-
INSERT INTO goals (version_id, title, description, scope_modules, status, created_by)
|
|
67
|
-
SELECT 'V3', 'Map authoring & editor',
|
|
68
|
-
'In-house map editor that round-trips maps into the game. Deferred out of V2; depends on the V2 engine shipping first.',
|
|
69
|
-
ARRAY['game']::text[], 'open', 1
|
|
70
|
-
WHERE NOT EXISTS (SELECT 1 FROM goals WHERE version_id='V3' AND title='Map authoring & editor');
|
|
71
|
-
|
|
72
|
-
-- ---------------------------------------------------------------------------
|
|
73
|
-
-- 2. done_when_criteria, parented to the goals above. criterion_md text is
|
|
74
|
-
-- lifted verbatim from the ratified proposals (ideas 416-422).
|
|
75
|
-
-- ---------------------------------------------------------------------------
|
|
76
|
-
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, sort_order, goal_id)
|
|
77
|
-
VALUES
|
|
78
|
-
('V2', 'world-data',
|
|
79
|
-
E'**The world loads from per-map data files, not hardcoded arrays — one source feeds both client render and server collision.**\n\n*Why:* retires the hand-mirrored map twins (`public/game/world/map.js` ↔ `src/world/map.js`, today''s top drift risk) and makes hand-designed maps possible.\n\n- A documented JSON map format at `public/assets/maps/<id>.json` with layers: ground (dense, drives autotile), decoration, objects, overlay; plus structures, warps, spawns.\n- A single shared parse + collision module (`mapFormat.js`) used by client and server; no duplicated map data.\n- Collision is *derived* from layers + structure solid-cells (generalizes today''s blocking-terrain / blocking-object rule).\n- ADR 0012 invariant intact: objects never pollute the ground autotile picker.\n- Today''s 26×20 room round-trips through the new format with identical render + walkability.',
|
|
80
|
-
100, (SELECT id FROM goals WHERE version_id='V2' AND title='World engine (multi-map runtime)')),
|
|
81
|
-
|
|
82
|
-
('V2', 'walk-olympia',
|
|
83
|
-
E'**A player can walk the Olympia Sanctuary in-game at the fidelity of the reference art.**\n\n*Why:* the vertical slice that proves the whole art + rendering direction before any expansion.\n\n- Temple of Zeus, Temple of Hera, the Altis grove, the plaza, and the stadium frontage are present and recognizable from the reference sheets.\n- The camera follows the player and scrolls a map larger than the viewport (canvas no longer equals map size).\n- Movement stays client-predicted / server-authoritative.\n- The scene is staged on the sandbox and walkable end-to-end.',
|
|
84
|
-
200, (SELECT id FROM goals WHERE version_id='V2' AND title='Olympia vertical slice')),
|
|
85
|
-
|
|
86
|
-
('V2', 'depth-sort',
|
|
87
|
-
E'**Tall structures render with correct depth — the player passes behind their tops and in front of their bases.**\n\n*Why:* 3/4-tilt temples, columns, and statues look wrong under today''s flat depth-0/1 layering.\n\n- 2.5D y-sort: player-plane objects and all character sprites share `depth = base*1000 + footY`.\n- An always-above overlay band carries structure tops (column capitals, roof crowns).\n- Reconciled with the existing autotile + interior-tile transform render path.\n- No z-fighting within a single structure''s footprint.',
|
|
88
|
-
300, (SELECT id FROM goals WHERE version_id='V2' AND title='World engine (multi-map runtime)')),
|
|
89
|
-
|
|
90
|
-
('V2', 'connected-warps',
|
|
91
|
-
E'**At least two connected maps with working warps — the player crosses between areas server-authoritatively.**\n\n*Why:* the classic Pokémon world model (overworld → enterable complex) the reference implies.\n\n- `mapId` in player state; one Colyseus room instance per map; per-map seating + queue.\n- Warp points move the player between maps at named spawns.\n- The 100-cap becomes per-map (overworld overflow can''t block Olympia).\n- Warping into a full destination map degrades gracefully (queue handoff).',
|
|
92
|
-
400, (SELECT id FROM goals WHERE version_id='V2' AND title='World engine (multi-map runtime)')),
|
|
93
|
-
|
|
94
|
-
('V2', 'olympia-art-set',
|
|
95
|
-
E'**The Olympia art set exists and passes the rubric on the locked 64-color palette.**\n\n*Why:* the slice cannot render without the terrain, building, and decor assets.\n\n- Terrain: marble plaza / flagstone, stone & cliff, river / water, forest + palm, grass variants — as autotile families where they tile.\n- Temple building kit: walls, columns / colonnade, orange-tile roof slopes, steps — authored as Pattern-B continuous illustrations sliced to the structure registry.\n- Decor: Zeus / Hera statues, altar-with-fire, amphorae, fountains.\n- All members land in the packed atlas + manifest; `tests/autotile_xverify.mjs` stays green.',
|
|
96
|
-
500, (SELECT id FROM goals WHERE version_id='V2' AND title='Olympia art set')),
|
|
97
|
-
|
|
98
|
-
('V2', 'scored-vs-reference',
|
|
99
|
-
E'**The Olympia slice is scored against the reference images, and the reference becomes the durable target.**\n\n*Why:* closes the loop — proves the criterion set actually produced the intended look.\n\n- The four reference sheets are ingested into `art/references/` as the durable target.\n- `otb-design-review` scores the new tiles ≥ the rubric threshold.\n- A before/after writeup lands in `docs/reviews/` with side-by-side screenshots vs the reference.',
|
|
100
|
-
700, (SELECT id FROM goals WHERE version_id='V2' AND title='Olympia vertical slice')),
|
|
101
|
-
|
|
102
|
-
('V3', 'map-editor',
|
|
103
|
-
E'**A lightweight in-house map editor lets a builder author maps that round-trip into the game.**\n\n*Why:* hand-editing JSON for scenes the size of Olympia doesn''t scale.\n\n- Paint ground with *live autotile preview* (imports the game''s `terrain.js`/`autotile.js` picker — no new autotile code).\n- Place objects + multi-tile structures; set warps, spawns, collision.\n- Save a valid map file (validated by the same `mapFormat` validator), persisted via the deploy-safe path (branch/PR per the save-model spike).\n- A map authored in the editor loads and plays in the game unchanged.',
|
|
104
|
-
50, (SELECT id FROM goals WHERE version_id='V3' AND title='Map authoring & editor'))
|
|
105
|
-
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
106
|
-
SET criterion_md = EXCLUDED.criterion_md,
|
|
107
|
-
sort_order = EXCLUDED.sort_order,
|
|
108
|
-
goal_id = EXCLUDED.goal_id;
|
|
109
|
-
|
|
110
|
-
-- ---------------------------------------------------------------------------
|
|
111
|
-
-- 3. Version done_when text (broaden V2 to cover the walkable world; note the
|
|
112
|
-
-- editor carry on V3).
|
|
113
|
-
-- ---------------------------------------------------------------------------
|
|
114
|
-
UPDATE versions
|
|
115
|
-
SET done_when = 'Other players are visible in a real, walkable world: a player walks the Olympia Sanctuary in-game at reference-art fidelity, with file-based multi-layer maps feeding both client render and server collision, correct depth-sorting on tall structures, at least two connected maps with server-authoritative warps, and the Olympia art set passing the rubric on the locked palette.'
|
|
116
|
-
WHERE id = 'V2';
|
|
117
|
-
|
|
118
|
-
UPDATE versions
|
|
119
|
-
SET done_when = COALESCE(done_when, '') ||
|
|
120
|
-
E'\n\nAlso (folded in from the world-building plan): a lightweight in-house map editor lets a builder author maps that round-trip into the game (depends on the V2 world engine shipping first).'
|
|
121
|
-
WHERE id = 'V3'
|
|
122
|
-
AND done_when NOT LIKE '%in-house map editor%';
|
|
123
|
-
|
|
124
|
-
-- ---------------------------------------------------------------------------
|
|
125
|
-
-- 4. Karma to the proposer (#25), mirroring the ratify path (+5 each, x7).
|
|
126
|
-
-- Guarded per-idea so a re-run can't double-credit.
|
|
127
|
-
-- ---------------------------------------------------------------------------
|
|
128
|
-
INSERT INTO karma_log (builder_id, delta, reason, granted_by)
|
|
129
|
-
SELECT 25, 5, m.reason, 1
|
|
130
|
-
FROM (VALUES
|
|
131
|
-
('proposal_ratified:idea-416'),
|
|
132
|
-
('proposal_ratified:idea-417'),
|
|
133
|
-
('proposal_ratified:idea-418'),
|
|
134
|
-
('proposal_ratified:idea-419'),
|
|
135
|
-
('proposal_ratified:idea-420'),
|
|
136
|
-
('proposal_ratified:idea-421'),
|
|
137
|
-
('proposal_ratified:idea-422')
|
|
138
|
-
) AS m(reason)
|
|
139
|
-
WHERE NOT EXISTS (
|
|
140
|
-
SELECT 1 FROM karma_log k WHERE k.builder_id = 25 AND k.reason = m.reason
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
-- ---------------------------------------------------------------------------
|
|
144
|
-
-- 5. idea_inbox bookkeeping.
|
|
145
|
-
-- 416-422 (criterion proposals) + 424 (the umbrella) -> promoted.
|
|
146
|
-
-- 423 (superseded umbrella v1) -> discarded.
|
|
147
|
-
-- 427 (reference manifest, future world-scale) -> LEFT OPEN on purpose as
|
|
148
|
-
-- the durable expansion reference; 425/426 are promoted by the seed.
|
|
149
|
-
-- ---------------------------------------------------------------------------
|
|
150
|
-
UPDATE idea_inbox
|
|
151
|
-
SET status = 'promoted', reviewed_at = now()
|
|
152
|
-
WHERE id IN (416,417,418,419,420,421,422,424)
|
|
153
|
-
AND status = 'open';
|
|
154
|
-
|
|
155
|
-
UPDATE idea_inbox
|
|
156
|
-
SET status = 'discarded', reviewed_at = now()
|
|
157
|
-
WHERE id = 423
|
|
158
|
-
AND status = 'open';
|
|
159
|
-
|
|
160
|
-
END
|
|
161
|
-
$seed$;
|
|
162
|
-
|
|
163
|
-
COMMIT;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
-- 173_bongos_v1_c7_core_modularized.sql
|
|
2
|
-
-- Adds BONGOS-V1 criterion C7 (gds-core-modularized) — the "Config B" core
|
|
3
|
-
-- decomposition wave seeded by planning session 2026-06-26 (task 1567).
|
|
4
|
-
-- The four feature modules (C5) shipped; this criterion owns breaking the GDS
|
|
5
|
-
-- *core* into kernel-mediated modules. Parented under goal 10 (GDS core
|
|
6
|
-
-- modularization). Idempotent on the (version_id, criterion_id) unique key.
|
|
7
|
-
-- Vanilla-safe guard (task 1264 / hardware-verify R63): this criterion parents to
|
|
8
|
-
-- goal id 10 (OTB's "GDS core modularization" goal). Goal ids aren't migration-seeded,
|
|
9
|
-
-- so a fresh self-host DB has no goal #10 and this INSERT would violate the goal_id
|
|
10
|
-
-- foreign key. Skip unless that goal exists. (Already applied on the OTB instance;
|
|
11
|
-
-- guard only bites on a fresh vanilla DB.)
|
|
12
|
-
DO $c7$
|
|
13
|
-
BEGIN
|
|
14
|
-
IF NOT EXISTS (SELECT 1 FROM goals WHERE id = 10) THEN
|
|
15
|
-
RAISE NOTICE '173: goal 10 (GDS core modularization) absent — vanilla instance, skipping BONGOS-V1 C7 criterion seed.';
|
|
16
|
-
RETURN;
|
|
17
|
-
END IF;
|
|
18
|
-
|
|
19
|
-
INSERT INTO done_when_criteria (version_id, criterion_id, criterion_md, sort_order, goal_id)
|
|
20
|
-
VALUES (
|
|
21
|
-
'BONGOS-V1',
|
|
22
|
-
'gds-core-modularized',
|
|
23
|
-
'**The GDS core is itself decomposed into cohesive, kernel-mediated modules — not just the four feature modules.** A bounded ~3.5k-LOC kernel (auth · rank · pool · audit · trust primitives · loader · seams) is the *only* thing core domains import, through the published doorway; the ~6k-LOC shared `db.js` is carved per-domain so each module owns its SQL; capabilities the lifecycle invokes (grade, reward) resolve through kernel **ports**, never direct imports. **Proven when ≥2 core domains live as modules with their `db.js` slices extracted, the kernel is bounded + fitness-enforced, and OTB behaves byte-identically.** The lifecycle state machine (tasks/claims/versions) is NOT split — only the capabilities it calls are extracted behind seams. (ADR 0083 §"the four module moves" + design doc 02-module-map.md §3/§6; planning 2026-06-26, task 1567.)',
|
|
24
|
-
7,
|
|
25
|
-
10
|
|
26
|
-
)
|
|
27
|
-
ON CONFLICT (version_id, criterion_id) DO UPDATE
|
|
28
|
-
SET criterion_md = EXCLUDED.criterion_md,
|
|
29
|
-
sort_order = EXCLUDED.sort_order,
|
|
30
|
-
goal_id = EXCLUDED.goal_id;
|
|
31
|
-
|
|
32
|
-
END
|
|
33
|
-
$c7$;
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
-- Migration 182 — Consolidate GDS-V4 into BONGOS-V1 + split out the Bongos desktop app
|
|
2
|
-
-- ============================================================================
|
|
3
|
-
-- Archon-directed project cleanup, 2026-07-02 (task 1709, ADR 0103; with Lars).
|
|
4
|
-
--
|
|
5
|
-
-- GDS-V4 and BONGOS-V1 were two parallel internal / Cloud-Bongos versions with
|
|
6
|
-
-- no clean divide. This migration makes BONGOS-V1 the single go-forward internal
|
|
7
|
-
-- (Cloud Bongos platform) version, carries GDS-V4's still-relevant open work
|
|
8
|
-
-- into it, splits the Bongos DESKTOP APP into its own goal, prunes superseded
|
|
9
|
-
-- work, and freezes GDS-V4.
|
|
10
|
-
--
|
|
11
|
-
-- REVERSIBLE by construction: no destructive drops — only status / version_id /
|
|
12
|
-
-- goal_id / one dependency-edge mutations. The exact before-state is snapshotted
|
|
13
|
-
-- in the task-1709 session notes. See ADR 0103 for the full rationale + the
|
|
14
|
-
-- ADR-0095 (grep-over-embeddings) decision that retires the C1 recall arm.
|
|
15
|
-
--
|
|
16
|
-
-- Idempotency: migrate.sh applies each numbered migration once; the goal INSERT
|
|
17
|
-
-- is additionally NOT-EXISTS-guarded so a manual re-run cannot double-create it.
|
|
18
|
-
-- ============================================================================
|
|
19
|
-
|
|
20
|
-
BEGIN;
|
|
21
|
-
|
|
22
|
-
-- 1. Create the "Bongos desktop app" goal under BONGOS-V1 and reparent the app
|
|
23
|
-
-- tasks (mascot/brand, branded download + auto-update, the cloudbongos.com
|
|
24
|
-
-- landing/download page, the feedback-capture app, the absorbed Dev Box
|
|
25
|
-
-- switch). scope_modules stays empty until the code carve (bongos-app/ ->
|
|
26
|
-
-- modules/bongos-app/) creates the module, at which point the goal is scoped
|
|
27
|
-
-- to it. See ADR 0087 (the app absorbs Dev Box).
|
|
28
|
-
DO $$
|
|
29
|
-
DECLARE app_goal_id bigint;
|
|
30
|
-
BEGIN
|
|
31
|
-
SELECT id INTO app_goal_id
|
|
32
|
-
FROM goals
|
|
33
|
-
WHERE version_id = 'BONGOS-V1' AND title = 'Bongos desktop app'
|
|
34
|
-
LIMIT 1;
|
|
35
|
-
|
|
36
|
-
IF app_goal_id IS NULL THEN
|
|
37
|
-
INSERT INTO goals (version_id, title, description, scope_modules, created_by, status)
|
|
38
|
-
VALUES (
|
|
39
|
-
'BONGOS-V1',
|
|
40
|
-
'Bongos desktop app',
|
|
41
|
-
'The Cloud Bongos DESKTOP APP (bongos-app/): a Zoom-style feedback-capture '
|
|
42
|
-
|| 'walkthrough tool that produces one model-agnostic prompt bundle for a coding '
|
|
43
|
-
|| 'agent, and the umbrella app that absorbs the Dev Box switch (ADR 0045/0072/0087). '
|
|
44
|
-
|| 'Distinct from the Cloud Bongos PLATFORM (the GDS engine, modules, grader, hosting). '
|
|
45
|
-
|| 'Covers: mascot/brand (Bongo Buddha), branded download + auto-update, the '
|
|
46
|
-
|| 'cloudbongos.com landing/download page, and the dev-box desktop client. The code '
|
|
47
|
-
|| 'carve bongos-app/ -> modules/bongos-app/ is tracked as a task under this goal.',
|
|
48
|
-
'{}',
|
|
49
|
-
1,
|
|
50
|
-
'open'
|
|
51
|
-
)
|
|
52
|
-
RETURNING id INTO app_goal_id;
|
|
53
|
-
END IF;
|
|
54
|
-
|
|
55
|
-
-- App tasks currently in GDS-V4: rebind version AND attach to the app goal.
|
|
56
|
-
-- 1523 interactive mascot · 1294 devbox-app go-live bump ·
|
|
57
|
-
-- 1463 devbox-app build workflow · 1484 dev-box host-key / app re-pin
|
|
58
|
-
UPDATE tasks
|
|
59
|
-
SET version_id = 'BONGOS-V1', goal_id = app_goal_id, updated_at = now()
|
|
60
|
-
WHERE id IN (1523, 1294, 1463, 1484)
|
|
61
|
-
AND version_id = 'GDS-V4';
|
|
62
|
-
|
|
63
|
-
-- App tasks already in BONGOS-V1: attach to the app goal.
|
|
64
|
-
-- 1311 branded download + auto-update · 1682/1700/1701 Bongo Buddha anim ·
|
|
65
|
-
-- 1702 cloudbongos.com landing/download page
|
|
66
|
-
UPDATE tasks
|
|
67
|
-
SET goal_id = app_goal_id, updated_at = now()
|
|
68
|
-
WHERE id IN (1311, 1682, 1700, 1701, 1702)
|
|
69
|
-
AND version_id = 'BONGOS-V1';
|
|
70
|
-
END $$;
|
|
71
|
-
|
|
72
|
-
-- 2. Abandon 19 superseded tasks:
|
|
73
|
-
-- C1 recall/embeddings arm (939,962,966-971,1221) — retired by ADR 0095's
|
|
74
|
-
-- grep-over-embeddings decision (Anthropic + Sourcegraph removed embedding
|
|
75
|
-
-- indexes; the endorsed path is meaning-in-source, tracked separately).
|
|
76
|
-
-- Old V3.R## grader tasks (201,202,242,292,388,490,492) — superseded by the
|
|
77
|
-
-- shipped 4-worker grader panel + ADR 0089.
|
|
78
|
-
-- T-NNN task-ref migration (753,754,755) — the current hall-link convention
|
|
79
|
-
-- already works and is enforced.
|
|
80
|
-
UPDATE tasks
|
|
81
|
-
SET status = 'abandoned', updated_at = now()
|
|
82
|
-
WHERE id IN (939,962,966,967,968,969,970,971,1221,
|
|
83
|
-
201,202,242,292,388,490,492,
|
|
84
|
-
753,754,755)
|
|
85
|
-
AND version_id = 'GDS-V4'
|
|
86
|
-
AND status IN ('backlog', 'ready');
|
|
87
|
-
|
|
88
|
-
-- 3. Sever the 758 -> 753 dependency edge. 753 (T-NNN ADR) is being abandoned;
|
|
89
|
-
-- 758 ("document the hall as the canonical doc surface") is kept and must not
|
|
90
|
-
-- be left permanently unclaimable (DEPS_NOT_SHIPPED) by a dead dependency.
|
|
91
|
-
-- Delete from both the polymorphic table (the gate read) and the legacy one.
|
|
92
|
-
DELETE FROM dependencies
|
|
93
|
-
WHERE from_kind = 'task' AND from_id = 758 AND to_kind = 'task' AND to_id = 753;
|
|
94
|
-
DELETE FROM task_dependencies
|
|
95
|
-
WHERE task_id = 758 AND depends_on_task_id = 753;
|
|
96
|
-
|
|
97
|
-
-- 4. Move two misfiled game-art tasks to product V2 (they are world art, not
|
|
98
|
-
-- internal-track work): 586 grass_on_sand variety, 587 player_walk family.
|
|
99
|
-
UPDATE tasks
|
|
100
|
-
SET version_id = 'V2', updated_at = now()
|
|
101
|
-
WHERE id IN (586, 587)
|
|
102
|
-
AND version_id = 'GDS-V4';
|
|
103
|
-
|
|
104
|
-
-- 5. Carry every remaining NON-TERMINAL GDS-V4 task (the platform work) forward
|
|
105
|
-
-- to BONGOS-V1. Non-terminal = backlog/ready/completed/blocked. This leaves
|
|
106
|
-
-- the in-flight tail (10 confirmed + 1 active) and terminal history
|
|
107
|
-
-- (shipped/abandoned) attributed to GDS-V4, exactly like a normal
|
|
108
|
-
-- version-close carry-over. Runs AFTER steps 1/2/4 so the app / abandoned /
|
|
109
|
-
-- product tasks are already out of scope; self-correcting for the remainder.
|
|
110
|
-
UPDATE tasks
|
|
111
|
-
SET version_id = 'BONGOS-V1', updated_at = now()
|
|
112
|
-
WHERE version_id = 'GDS-V4'
|
|
113
|
-
AND status IN ('backlog', 'ready', 'completed', 'blocked');
|
|
114
|
-
|
|
115
|
-
-- 6. BONGOS-V1 becomes the single go-forward internal version: rename it off the
|
|
116
|
-
-- misleading "Bongos App" title (the app is now a GOAL inside it, step 1) and
|
|
117
|
-
-- mark it 'building' (it is actively being built).
|
|
118
|
-
UPDATE versions
|
|
119
|
-
SET name = 'Cloud Bongos — platform (V1)', status = 'building'
|
|
120
|
-
WHERE id = 'BONGOS-V1';
|
|
121
|
-
|
|
122
|
-
-- 7. Freeze GDS-V4 — sealed to new planning. Its 11 in-flight tasks land as its
|
|
123
|
-
-- final shipped history; its 358 shipped + 51 abandoned rows stay as the
|
|
124
|
-
-- archive of what GDS-V4 delivered. ('frozen', not 'shipped': GDS-V4 did not
|
|
125
|
-
-- ship — it was absorbed — and 'shipped' would falsely read 100% + could gate
|
|
126
|
-
-- the in-flight tail.)
|
|
127
|
-
UPDATE versions
|
|
128
|
-
SET status = 'frozen'
|
|
129
|
-
WHERE id = 'GDS-V4'
|
|
130
|
-
AND status <> 'shipped';
|
|
131
|
-
|
|
132
|
-
COMMIT;
|