@bongos/core 1.19.714 → 1.19.724

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.
Files changed (422) hide show
  1. package/.bongos-core.json +488 -413
  2. package/.claude/skills/backlog-review/SKILL.md +3 -3
  3. package/.claude/skills/blocker-review/SKILL.md +1 -1
  4. package/.claude/skills/blocker-solve/SKILL.md +2 -2
  5. package/.claude/skills/builder-reauth/SKILL.md +1 -1
  6. package/.claude/skills/builder-redteam/SKILL.md +1 -1
  7. package/.claude/skills/builder-ship/SKILL.md +1 -1
  8. package/.claude/skills/builder-start/SKILL.md +1 -1
  9. package/.claude/skills/design/SKILL.md +2 -2
  10. package/.claude/skills/feedback/SKILL.md +1 -1
  11. package/.claude/skills/goal-create/SKILL.md +1 -1
  12. package/.claude/skills/goal-review/SKILL.md +2 -2
  13. package/.claude/skills/idea-triage/SKILL.md +5 -5
  14. package/.claude/skills/merge-mode/SKILL.md +4 -4
  15. package/.claude/skills/new-project/SKILL.md +17 -17
  16. package/.claude/skills/planning-session/SKILL.md +11 -11
  17. package/.claude/skills/recall/SKILL.md +2 -2
  18. package/.claude/skills/strand-fix/SKILL.md +1 -1
  19. package/.devcontainer/README.md +2 -2
  20. package/CONTRIBUTING.md +2 -2
  21. package/GOVERNANCE.md +4 -4
  22. package/clients/bongos-client/README.md +1 -1
  23. package/clients/bongos-client/bongos-client.global.js +4 -0
  24. package/clients/bongos-client/index.cjs +4 -0
  25. package/clients/bongos-client/index.d.ts +5 -0
  26. package/clients/bongos-client/index.mjs +4 -0
  27. package/config/branding.neutral.json +4 -2
  28. package/docs/adr/0001-stack-choice-single-vps.md +2 -2
  29. package/docs/adr/0002-digitalocean-over-hetzner.md +1 -1
  30. package/docs/adr/0008-google-chat-oauth-user-auth.md +1 -1
  31. package/docs/adr/0009-autotile-architecture.md +1 -1
  32. package/docs/adr/0011-terrain-id-rendering-model.md +3 -3
  33. package/docs/adr/0013-paths-as-object-overlays-with-autotile-dispatch.md +1 -1
  34. package/docs/adr/0014-families-canonical-over-vocabulary.md +1 -1
  35. package/docs/adr/0015-task-dependencies-and-auto-promotion.md +1 -1
  36. package/docs/adr/0016-trust-boundary-server-enforced-permissions.md +1 -1
  37. package/docs/adr/0018-three-rank-model-goes-live.md +3 -3
  38. package/docs/adr/0020-security-model-public-stub.md +9 -9
  39. package/docs/adr/0021-per-builder-skill-model-preferences.md +2 -2
  40. package/docs/adr/0022-secrets-policy.md +5 -5
  41. package/docs/adr/0024-cloneable-repo-local-first-memory.md +3 -3
  42. package/docs/adr/0024-multi-agent-system-architecture.md +10 -10
  43. package/docs/adr/0025-offsite-backup-vendor-digitalocean-spaces.md +1 -1
  44. package/docs/adr/0025-structured-criterion-task-link.md +1 -1
  45. package/docs/adr/0026-bfg-memory-hygiene-and-cross-builder-learning.md +13 -13
  46. package/docs/adr/0027-bfg-session-inefficiency-evaluator.md +14 -14
  47. package/docs/adr/0029-status-page-outage-resilience.md +1 -1
  48. package/docs/adr/0030-builders-hall-live-updates.md +1 -1
  49. package/docs/adr/0031-cloud-dev-environments-for-builders.md +7 -7
  50. package/docs/adr/0032-discord-mirror-of-gds.md +3 -3
  51. package/docs/adr/0033-discord-bot-service-principal.md +4 -4
  52. package/docs/adr/0034-thetes-graduated-newcomer-rank.md +1 -1
  53. package/docs/adr/0035-builder-onboarding-three-paths.md +4 -4
  54. package/docs/adr/0036-builders-subdomain-and-ui-reorg.md +1 -1
  55. package/docs/adr/0037-discord-channel-management.md +1 -1
  56. package/docs/adr/0038-chromebook-ttyd-cloudflare-tunnel.md +5 -5
  57. package/docs/adr/0039-setup-first-onboarding-ux.md +6 -6
  58. package/docs/adr/0040-remote-control-default-browser-onramp.md +3 -3
  59. package/docs/adr/0041-temporary-grader-bypass-killswitch.md +2 -2
  60. package/docs/adr/0042-builder-self-deploy-ci-auto-merge.md +5 -5
  61. package/docs/adr/0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md +2 -2
  62. package/docs/adr/0044-mediterranean-palette-replacement.md +1 -1
  63. package/docs/adr/0044-per-box-live-game-preview.md +1 -1
  64. package/docs/adr/0046-sandbox-first-review-gate.md +1 -1
  65. package/docs/adr/0047-discord-bugs-intake-anti-abuse.md +1 -1
  66. package/docs/adr/0049-split-parallel-safety-contract.md +1 -1
  67. package/docs/adr/0050-device-flow-admission-invite-gated-by-default.md +2 -2
  68. package/docs/adr/0051-full-session-transcript-corpus.md +2 -2
  69. package/docs/adr/0052-sandbox-for-everyone-game-only-preview.md +1 -1
  70. package/docs/adr/0053-scoped-dev-box-session.md +1 -1
  71. package/docs/adr/0054-session-token-reward-cost-plus.md +7 -7
  72. package/docs/adr/0055-server-mediated-branch-publish.md +2 -2
  73. package/docs/adr/0056-prod-deploy-script-mirror-and-healthcheck-retry.md +3 -3
  74. package/docs/adr/0057-container-cost-ledger.md +1 -1
  75. package/docs/adr/0057-discord-archon-approval-channels.md +2 -2
  76. package/docs/adr/0058-automatic-gate-surface-gatekeeper.md +6 -6
  77. package/docs/adr/0059-single-approval-remove-devbox-approval-gate.md +11 -11
  78. package/docs/adr/0060-gds-retrieval-layer.md +3 -3
  79. package/docs/adr/0061-context-layer-decomposition.md +2 -2
  80. package/docs/adr/0062-medusa-instance-model-decoupling.md +5 -5
  81. package/docs/adr/0063-generated-repo-map-symbol-skeleton.md +2 -2
  82. package/docs/adr/0064-rename-medusa-to-cloud-bongos.md +3 -3
  83. package/docs/adr/0065-agpl-nonprofit-ai-first-governance.md +5 -5
  84. package/docs/adr/0066-generated-file-map-sections.md +2 -2
  85. package/docs/adr/0067-session-start-fast-forward-pull.md +1 -1
  86. package/docs/adr/0068-shared-art-key-for-newcomers.md +1 -1
  87. package/docs/adr/0069-hall-live-channel-sse-decouple.md +3 -3
  88. package/docs/adr/0070-deterministic-session-card-delivery.md +1 -1
  89. package/docs/adr/0071-box-confirm-before-destroyed-and-drift-reconcile.md +2 -2
  90. package/docs/adr/0072-bongos-app-mac-signed-first-windows-deferred.md +2 -2
  91. package/docs/adr/0072-dev-box-code-staleness-visibility.md +2 -2
  92. package/docs/adr/0073-builder-needs-signal-and-byok-gemini-key.md +3 -3
  93. package/docs/adr/0073-secrets-scan-exclude-uri-detector.md +2 -2
  94. package/docs/adr/0076-in-session-deterministic-compaction.md +2 -2
  95. package/docs/adr/0077-content-addressed-llm-cache.md +2 -2
  96. package/docs/adr/0078-deterministic-first-cron.md +3 -3
  97. package/docs/adr/0079-value-gated-autonomous-engagement.md +2 -2
  98. package/docs/adr/0080-llm-cache-api-transport-and-trust-model.md +3 -3
  99. package/docs/adr/0081-tool-agnostic-design-layer.md +3 -3
  100. package/docs/adr/0082-server-side-merge-conflict-auto-resolution.md +2 -2
  101. package/docs/adr/0083-modular-architecture-strangler-build-plan.md +3 -3
  102. package/docs/adr/0085-remove-default-per-builder-spend-cap.md +2 -2
  103. package/docs/adr/0086-goal-scoped-work-hierarchy.md +15 -15
  104. package/docs/adr/0087-bongos-app-architecture-and-handoff-contract.md +5 -5
  105. package/docs/adr/0087-compete-on-governance-not-tooling-cursor.md +1 -1
  106. package/docs/adr/0088-consistent-character-generative-animation.md +5 -5
  107. package/docs/adr/0089-modular-multi-model-adversarial-grader.md +15 -15
  108. package/docs/adr/0090-metic-task-authoring.md +8 -8
  109. package/docs/adr/0091-bounding-the-kernel-and-db-carve.md +3 -3
  110. package/docs/adr/0092-hosting-module-and-on-prem-target.md +11 -11
  111. package/docs/adr/0093-tranche-2-core-carve-sequence.md +5 -5
  112. package/docs/adr/0094-repo-atlas-self-drawing-codebase-map.md +1 -1
  113. package/docs/adr/0095-borrowed-memory-and-retrieval-concepts.md +6 -6
  114. package/docs/adr/0095-cross-agent-context-management.md +5 -5
  115. package/docs/adr/0096-require-reward-before-workable.md +5 -5
  116. package/docs/adr/0097-one-active-claim-per-session-and-worktree-binding.md +2 -2
  117. package/docs/adr/0097-retroactive-reward-backfill.md +4 -4
  118. package/docs/adr/0098-public-mirror-publish-manifest.md +3 -3
  119. package/docs/adr/0099-delayed-redacted-mirror-export.md +1 -1
  120. package/docs/adr/0100-two-repo-instance-model.md +6 -6
  121. package/docs/adr/0101-goal-hierarchy-phase-5-judge-membership-reward.md +9 -9
  122. package/docs/adr/0102-finish-bounding-the-kernel.md +1 -1
  123. package/docs/adr/0103-core-first-extraction-cloud-bongos-trunk.md +6 -6
  124. package/docs/adr/0103-gdsv4-bongos-consolidation.md +3 -3
  125. package/docs/adr/0104-trust-gds-api-channel-in-auto-mode.md +3 -3
  126. package/docs/adr/0105-instance-seed-migrations-out-of-core.md +2 -2
  127. package/docs/adr/0106-goal-owner-manager-authority.md +2 -2
  128. package/docs/adr/0107-module-upstreaming-contribution-to-core-catalog.md +6 -6
  129. package/docs/adr/0108-instance-composition-configurable-root.md +6 -6
  130. package/docs/adr/0109-self-describing-openapi-and-hosted-docs.md +3 -3
  131. package/docs/adr/0110-untrack-whole-file-generated-nav-docs.md +1 -1
  132. package/docs/adr/0111-instance-hosting-provisioning-module.md +18 -18
  133. package/docs/adr/0112-private-goals-invitations-join-requests.md +7 -7
  134. package/docs/adr/0113-sandbox-studio-descope-superseded-by-0044-0052.md +1 -1
  135. package/docs/adr/0114-instance-docs-discovery-contract.md +4 -4
  136. package/docs/adr/0115-scheduled-routines-portability.md +1 -1
  137. package/docs/adr/0117-api-versioning-and-deprecation-policy.md +1 -1
  138. package/docs/adr/0118-api-contract-source-of-truth-code-first.md +1 -1
  139. package/docs/adr/0120-pay-on-land-and-builder-owned-rebase-gate.md +2 -2
  140. package/docs/adr/0121-greenfield-vs-brownfield-onboarding-adopt-existing-repo.md +1 -1
  141. package/docs/adr/0122-onboarding-diagram-renders-deploy-rendered-off-git.md +3 -3
  142. package/docs/adr/0123-box-idle-sweep-autosave-before-destroy.md +1 -1
  143. package/docs/adr/0124-typed-api-response-bodies.md +2 -2
  144. package/docs/adr/0125-control-plane-scaffolds-standalone-instance-repo.md +2 -2
  145. package/docs/adr/0126-dedicated-cloudbongos-control-plane-droplet.md +3 -3
  146. package/docs/adr/0127-cross-box-fleet-observability.md +1 -1
  147. package/docs/adr/0128-provisioning-runner-privilege-and-db-auth-model.md +3 -3
  148. package/docs/adr/0129-cloudbongos-control-plane-pull-deploy.md +4 -4
  149. package/docs/adr/0130-provision-remote-exec-over-ssh.md +4 -4
  150. package/docs/adr/0131-rank-scoped-skill-visibility.md +2 -2
  151. package/docs/adr/0132-cohost-fleet-control-plane-migration.md +2 -2
  152. package/docs/adr/0133-github-app-manifest-onboarding-signin.md +1 -1
  153. package/docs/adr/0134-private-first-npm-distribution.md +3 -3
  154. package/docs/adr/0135-module-upstream-submission-interim-queue.md +1 -1
  155. package/docs/adr/0136-update-channel-subscription-policy.md +2 -2
  156. package/docs/adr/0137-upstream-publish-policy-manual-owner-gated.md +6 -6
  157. package/docs/adr/0138-bundled-module-deps-declared-per-module.md +4 -4
  158. package/docs/adr/0142-project-context-is-prose-only.md +2 -2
  159. package/docs/adr/0143-onboarding-repo-picker-oauth-scope.md +2 -2
  160. package/docs/adr/0144-devbox-rehome-onto-cloudbongos-plane.md +2 -2
  161. package/docs/adr/0145-free-hosted-project-tier-isolation-and-domain-separation.md +2 -2
  162. package/docs/adr/0146-configurable-reward-mode-cost-plus-only.md +4 -4
  163. package/docs/adr/0147-standalone-live-docs-regen.md +1 -1
  164. package/docs/adr/0149-bongos-dev-local-launcher.md +1 -1
  165. package/docs/adr/0150-box-first-boot-bringup-vendored-instances.md +3 -3
  166. package/docs/adr/0151-governance-permissions-as-atom-ranks-as-roles.md +20 -20
  167. package/docs/adr/0152-landing-gate-served-by-the-core-app.md +2 -2
  168. package/docs/adr/0152-metic-task-abandonment.md +7 -7
  169. package/docs/adr/0153-sequential-chain-runner.md +1 -1
  170. package/docs/adr/0154-goal-owner-criterion-authoring.md +7 -7
  171. package/docs/adr/0155-adopt-private-repo-widen-oauth-scope.md +2 -2
  172. package/docs/adr/0156-user-set-display-name-wins.md +1 -1
  173. package/docs/adr/0157-archon-is-rank-and-identity-only.md +10 -10
  174. package/docs/adr/0158-choke-point-verdict-taxonomy.md +1 -1
  175. package/docs/adr/0159-merge-gate-reconciliation.md +1 -1
  176. package/docs/adr/0160-main-audit-repo-verifiable-caller.md +1 -1
  177. package/docs/adr/0161-publish-on-merge.md +2 -2
  178. package/docs/adr/0163-legacy-display-name-resolution.md +1 -1
  179. package/docs/adr/0165-instances-hookless-by-default.md +1 -1
  180. package/docs/adr/0166-module-maintenance-and-deprecation-policy.md +3 -3
  181. package/docs/adr/0167-gate-trust-link-agpl-default.md +2 -2
  182. package/docs/adr/0167-module-catalog-source-vs-provenance.md +3 -3
  183. package/docs/adr/0169-bongos-serve-server-bring-up.md +1 -1
  184. package/docs/adr/0171-profile-rollup-join-and-consent.md +1 -1
  185. package/docs/adr/0172-editable-rank-roles-substrate-axis.md +2 -2
  186. package/docs/adr/0172-per-craft-compensation-ideator-credit-lane.md +4 -4
  187. package/docs/adr/0173-legacy-multi-ship-shortfall-not-backfilled.md +1 -1
  188. package/docs/adr/0174-government-terminology-ranks-not-roles.md +1 -1
  189. package/docs/adr/0177-goal-membership-kind.md +3 -3
  190. package/docs/adr/0178-the-copy-desk-flag-and-queue.md +1 -1
  191. package/docs/adr/0179-board-membership-predicate-grammar.md +1 -1
  192. package/docs/adr/0181-teardown-state-gate-and-address-retention.md +1 -1
  193. package/docs/adr/0182-project-visibility-two-axes.md +1 -1
  194. package/docs/adr/0183-criteria-close-themselves.md +1 -1
  195. package/docs/adr/0184-ship-requires-an-assurance.md +1 -1
  196. package/docs/adr/0185-spark-handoff-credit-split.md +1 -1
  197. package/docs/adr/0186-per-project-idea-templates.md +1 -1
  198. package/docs/adr/0187-collab-four-decisions.md +1 -1
  199. package/docs/adr/0187-oauth-handshake-cookie-lifetime.md +1 -1
  200. package/docs/adr/0188-patrol-runs-on-ci-not-the-server.md +2 -2
  201. package/docs/adr/0189-baseline-floors-and-the-freeze-detector.md +2 -2
  202. package/docs/adr/0191-majority-and-the-author-who-may-not-decide-alone.md +1 -1
  203. package/docs/adr/0192-a-category-orients-and-authorises-nothing.md +2 -2
  204. package/docs/adr/0193-pause-task-scoped-box-slices.md +1 -1
  205. package/docs/adr/0195-adr-numbers-are-checked-like-migration-numbers.md +2 -2
  206. package/docs/adr/0196-chrome-world-token-contract-and-the-landing-sheets.md +2 -2
  207. package/docs/adr/0197-the-ui-design-module.md +1 -1
  208. package/docs/adr/0198-third-party-skill-vendoring-policy.md +1 -1
  209. package/docs/adr/0203-doorway-changelog-out-of-module-api.md +2 -2
  210. package/docs/adr/0204-the-apex-is-dark-only.md +2 -2
  211. package/docs/adr/0205-federated-checkin-needs-the-hubs-own-signin-witness.md +1 -1
  212. package/docs/adr/0206-own-scoped-session-revocation-no-absolute-ceiling.md +1 -1
  213. package/docs/adr/0207-connections-implementation-departures-and-honest-limits.md +1 -1
  214. package/docs/adr/0208-application-lifecycle-the-handle-waits-and-the-vouch-has-no-minter.md +2 -2
  215. package/docs/adr/0209-one-budget-for-the-account-existence-oracle.md +1 -1
  216. package/docs/adr/0210-scouting-graduates-on-an-instance-asserted-owner-claim.md +1 -1
  217. package/docs/adr/0212-connections-on-the-profile-surface-and-addressing.md +1 -1
  218. package/docs/adr/0213-platform-terms-acceptance-is-the-hubs-own-witness.md +2 -2
  219. package/docs/adr/0215-the-recruiter-sliver-is-a-ceiling-not-a-step.md +6 -6
  220. package/docs/adr/0216-a-fake-pool-interpreter-must-fail-loudly-not-silently-ignore.md +2 -2
  221. package/docs/adr/0217-rank-gates-inviting-not-viewing.md +1 -1
  222. package/docs/adr/0218-the-apex-root-web-surface.md +2 -2
  223. package/docs/adr/0219-a-look-is-a-branding-pack-the-style-library.md +1 -1
  224. package/docs/adr/0220-an-in-house-rebuilt-skill-is-a-first-party-skill.md +1 -1
  225. package/docs/adr/0221-the-impeccable-method-is-one-skill-with-sub-command-playbooks.md +2 -2
  226. package/docs/adr/0222-the-image-family-under-the-hero-only-rule.md +2 -2
  227. package/docs/adr/0223-the-detector-is-two-tiers-in-the-kit.md +3 -3
  228. package/docs/adr/0224-module-skills-reach-the-core-checkout-as-untracked-self-ignored-copies.md +1 -1
  229. package/docs/adr/0225-privacy-suppresses-cross-project-surfaces-only.md +1 -1
  230. package/docs/adr/0226-one-stale-timer-reporting-degrades-enforcement-refuses.md +1 -1
  231. package/docs/adr/0227-a-task-network-map-is-refused-the-goal-graph-is-the-map.md +1 -1
  232. package/docs/adr/0230-a-look-skill-is-a-composition-grammar-the-palette-is-the-pack.md +1 -1
  233. package/docs/adr/0231-the-style-session-an-owner-authors-a-look-inside-the-contract.md +2 -2
  234. package/docs/adr/0232-rot-is-derived-not-swept-and-water-is-the-only-new-verb.md +2 -2
  235. package/docs/adr/0233-a-copy-proposal-is-a-task-carrying-a-patch.md +2 -2
  236. package/docs/adr/0234-idea-routing-capture-time-promotion-landing-matrix-homeless-inbox.md +2 -2
  237. package/docs/adr/0235-a-fix-category-is-kindbug-under-a-goal-no-column-required.md +11 -11
  238. package/docs/adr/0236-many-ideas-one-task-the-lineage-key-is-the-pair.md +5 -5
  239. package/docs/adr/0237-a-starter-bundle-is-a-preset-over-the-always-on-core-keyed-by-declared-type.md +5 -5
  240. package/docs/adr/0238-the-join-door-is-a-provisioning-settings-policy-key.md +1 -1
  241. package/docs/adr/0239-a-recommendation-is-a-table-that-carries-its-own-reason.md +4 -4
  242. package/docs/adr/0240-a-skipped-module-picker-stores-nothing-and-resolves-the-bundle-on-read.md +4 -4
  243. package/docs/adr/0241-the-artist-gate-is-a-per-project-deploy-gate-that-reads-a-state.md +1 -1
  244. package/docs/adr/0242-a-cascade-is-a-declaration-table-on-the-event-that-already-exists.md +2 -2
  245. package/docs/adr/0243-a-bundle-adjustment-belongs-to-the-bundle-not-the-advice-about-it.md +4 -4
  246. package/docs/adr/0244-a-catalog-search-is-a-view-over-the-rows-never-an-edit-to-the-selection.md +3 -3
  247. package/docs/adr/0245-the-way-back-into-an-optional-step-is-that-step-s-own-answer-route.md +7 -7
  248. package/docs/adr/0246-catalog-membership-is-a-projection-not-a-federation-side-effect.md +1 -1
  249. package/docs/adr/0247-the-join-door-is-one-composed-answer-and-dark-matter-has-no-live-verdict-yet.md +2 -2
  250. package/docs/adr/0248-a-hub-project-s-owner-is-the-provisioning-row-carried-on-a-port.md +3 -3
  251. package/docs/adr/0249-the-invite-step-is-the-done-panel-s-first-act-not-a-rail-step.md +3 -3
  252. package/docs/adr/0250-strict-versioning-the-version-boundary-is-the-scope-gate.md +6 -6
  253. package/docs/adr/0251-a-suggestion-of-who-to-invite-is-a-recruiting-surface-and-owes-the-opt-out.md +5 -5
  254. package/docs/adr/0252-the-self-hosted-visibility-report-is-a-pull-and-auto-appear-buys-a-retraction-lever.md +19 -19
  255. package/docs/adr/0253-the-takedown-lever-has-two-writers-and-provenance-is-a-column.md +2 -2
  256. package/docs/adr/0254-a-relayed-link-is-contained-downward-or-it-is-not-published.md +6 -6
  257. package/docs/adr/0255-a-public-lists-ordering-is-part-of-its-payload.md +2 -2
  258. package/docs/adr/0256-the-visibility-ceiling-is-the-sign-in-gate-too-and-the-reader-moves-to-the-composer.md +3 -3
  259. package/docs/adr/0257-auth-resolves-before-the-hall-mounts-anything.md +1 -1
  260. package/docs/adr/0258-the-public-cli-is-a-generated-client-package-not-the-published-core.md +1 -1
  261. package/docs/adr/0259-a-projects-departure-from-the-public-list-is-public.md +7 -7
  262. package/docs/adr/0260-the-application-is-the-consent-and-the-echo-is-the-gate.md +4 -4
  263. package/docs/adr/0261-a-preselect-always-carries-a-reason-the-bundle-summary-is-the-floor.md +1 -1
  264. package/docs/adr/0262-a-bug-never-lands-in-the-inbox.md +1 -1
  265. package/docs/adr/0263-how-a-version-closes.md +3 -3
  266. package/docs/adr/0264-the-ten-working-areas.md +3 -3
  267. package/docs/adr/0265-work-with-no-goal-and-the-order-the-cut-needs.md +5 -5
  268. package/docs/adr/0266-the-board-room-is-its-own-surface-reachable-by-whoever-may-vote.md +2 -2
  269. package/docs/adr/0267-unanimity-and-the-revise-and-re-sit-loop.md +1 -1
  270. package/docs/adr/0268-the-constitution-comes-from-two-roots.md +3 -3
  271. package/docs/adr/0269-the-cli-session-store-is-host-keyed-at-a-fixed-anchor.md +1 -1
  272. package/docs/adr/0270-rank-floor-derives-without-a-prediction.md +2 -2
  273. package/docs/adr/0271-the-ideator-surface-is-two-halves.md +3 -3
  274. package/docs/adr/0272-a-craft-is-an-identity-not-a-toolchain.md +4 -4
  275. package/docs/adr/0273-hall-nav-can-gate-on-a-permission.md +1 -1
  276. package/docs/adr/0274-one-kernel-three-role-packs.md +1 -1
  277. package/docs/adr/0275-one-source-for-a-written-role-responsibility.md +1 -1
  278. package/docs/adr/0276-the-skill-listing-budget-cannot-hold-every-trigger.md +1 -1
  279. package/docs/adr/0277-a-box-is-in-use-only-while-a-human-is-attached.md +1 -1
  280. package/docs/adr/0278-a-gated-project-still-takes-applications.md +2 -2
  281. package/docs/adr/0279-an-upgrade-is-proven-by-the-served-version-not-the-health-check.md +1 -1
  282. package/docs/adr/0280-the-unattended-lane-may-drive-a-co-tenant-because-the-roster-is-the-decision.md +1 -1
  283. package/docs/adr/0281-an-instance-identity-is-its-own-unix-account-and-pg-role.md +2 -2
  284. package/docs/adr/README.md +294 -294
  285. package/docs/api/openapi.json +72 -5
  286. package/docs/api-reference.md +8 -2
  287. package/docs/architecture.md +22 -22
  288. package/docs/branding-contract.md +5 -5
  289. package/docs/canonical-permissions.md +22 -22
  290. package/docs/copy-inventory.md +15 -13
  291. package/docs/copy-registry.json +35 -17
  292. package/docs/design/hall-direction-v2.md +3 -3
  293. package/docs/design/landing-page-direction-v2.md +1 -1
  294. package/docs/design/projects-hub-direction-v2.md +1 -1
  295. package/docs/file-map.md +3 -1
  296. package/docs/module-api-changelog.md +36 -1
  297. package/docs/modules-contract.md +25 -25
  298. package/docs/onboarding/browser-terminal-guide.md +1 -1
  299. package/docs/onboarding/diagrams/README.md +3 -3
  300. package/docs/onboarding/drachmae-and-karma.md +13 -13
  301. package/docs/onboarding/primer.md +7 -7
  302. package/docs/packs/artist.md +1 -1
  303. package/docs/packs/ideator.md +1 -1
  304. package/docs/project-context.template.md +3 -3
  305. package/docs/recipes/builder-box-lifecycle.md +5 -5
  306. package/docs/recipes/claude-design-loop.md +1 -1
  307. package/docs/recipes/core-release-pipeline.md +55 -14
  308. package/docs/recipes/figma-design-loop.md +1 -1
  309. package/docs/recipes/gds-db-backup.md +2 -2
  310. package/docs/recipes/instance-deploy.md +2 -2
  311. package/docs/recipes/instance-service-restart.md +3 -3
  312. package/docs/recipes/local-dev.md +2 -2
  313. package/docs/recipes/managed-settings-remote-control.md +3 -3
  314. package/docs/recipes/memory-backup.md +4 -4
  315. package/docs/recipes/memory-sync-conflicts.md +2 -2
  316. package/docs/recipes/multi-builder-merge.md +2 -2
  317. package/docs/recipes/ops-gotchas.md +4 -4
  318. package/docs/recipes/overnight-builder.md +1 -1
  319. package/docs/recipes/packaging-the-core.md +6 -6
  320. package/docs/recipes/private-npm-distribution.md +5 -5
  321. package/docs/recipes/search-index-ingestion.md +3 -3
  322. package/docs/recipes/self-host.md +5 -5
  323. package/docs/recipes/server-bring-up.md +1 -1
  324. package/docs/recipes/ship-and-regrade.md +2 -2
  325. package/docs/recipes/standalone-live-docs.md +1 -1
  326. package/docs/recipes/ui-look-before-you-ship.md +1 -1
  327. package/docs/recipes/upgrading-the-core.md +2 -2
  328. package/docs/recipes/work-on-a-task-from-your-dev-box.md +6 -6
  329. package/docs/research/cursor-competitive-analysis.md +3 -3
  330. package/docs/research/llm-model-agnostic-and-cheaper-grader.md +7 -7
  331. package/migrations/core_240_artist_gate_indexes.sql +48 -0
  332. package/migrations/core_240_goal_members_drop_legacy_role.sql +79 -0
  333. package/modules/dev-box/app/src/vendor/bongos-client.cjs +4 -0
  334. package/modules/hall-ui/public/watch.css +6 -0
  335. package/modules/hall-ui/public/watch.js +52 -6
  336. package/modules/lifecycle/cascade.js +37 -9
  337. package/modules/lifecycle/db-claims.js +5 -2
  338. package/modules/lifecycle/db-goals.js +4 -3
  339. package/modules/lifecycle/db-overrides.js +117 -4
  340. package/modules/lifecycle/db-tasks.js +63 -0
  341. package/modules/lifecycle/migrations/lifecycle_001_goal_first_leads.sql +12 -4
  342. package/modules/lifecycle/module.json +2 -1
  343. package/modules/lifecycle/pg-constraint-fail.js +49 -0
  344. package/modules/lifecycle/routes/artist-gate.js +101 -0
  345. package/modules/lifecycle/routes/claims.js +13 -1
  346. package/modules/lifecycle/routes/lifecycle.js +6 -0
  347. package/modules/lifecycle/routes/task-write-routes.js +7 -0
  348. package/modules/lifecycle/routes/tasks.js +24 -0
  349. package/modules/lifecycle/task-classifier.js +10 -1
  350. package/modules/lifecycle/tests/cascade.mjs +43 -0
  351. package/modules/provisioning/provisioning.js +79 -3
  352. package/modules/provisioning/routes/provisioning.js +6 -1
  353. package/modules/provisioning/tests/provisioning.mjs +8 -8
  354. package/modules/security/secret-scrub.js +40 -4
  355. package/modules/status-ui/public/README.md +1 -1
  356. package/modules/ui-design/docs/design-contract.md +2 -2
  357. package/modules/ui-design/kit/README.md +1 -1
  358. package/modules/ui-design/kit/serve.js +1 -0
  359. package/modules/ui-design/skills/README.md +6 -6
  360. package/modules/ui-design/skills/brandkit/SKILL.md +1 -1
  361. package/modules/ui-design/skills/design-taste-frontend/SKILL.md +1 -1
  362. package/modules/ui-design/skills/design-taste-frontend-v1/SKILL.md +1 -1
  363. package/modules/ui-design/skills/gpt-taste/SKILL.md +1 -1
  364. package/modules/ui-design/skills/high-end-visual-design/SKILL.md +1 -1
  365. package/modules/ui-design/skills/image-to-code/SKILL.md +1 -1
  366. package/modules/ui-design/skills/imagegen-frontend-mobile/SKILL.md +1 -1
  367. package/modules/ui-design/skills/imagegen-frontend-web/SKILL.md +1 -1
  368. package/modules/ui-design/skills/impeccable/SKILL.md +1 -1
  369. package/modules/ui-design/skills/industrial-brutalist-ui/SKILL.md +1 -1
  370. package/modules/ui-design/skills/minimalist-ui/SKILL.md +1 -1
  371. package/modules/ui-design/skills/redesign-existing-projects/SKILL.md +1 -1
  372. package/modules/ui-design/skills/stitch-design-taste/SKILL.md +1 -1
  373. package/modules/ui-design/skills/style/SKILL.md +2 -2
  374. package/modules/ui-design/styles/README.md +3 -3
  375. package/modules/ui-design/styles/blueprint/DESIGN.md +1 -1
  376. package/modules/ui-design/styles/chrome-world/DESIGN.md +1 -1
  377. package/package-lock.json +2 -2
  378. package/package.json +1 -1
  379. package/scripts/gds/audit-rank-roles.js +172 -0
  380. package/scripts/gds/backfill-task-rewards.js +9 -4
  381. package/scripts/gds/build-cli-package.js +1 -0
  382. package/scripts/gds/claim.js +94 -9
  383. package/scripts/gds/fitness.js +8 -8
  384. package/scripts/gds/go-live.js +139 -5
  385. package/scripts/gds/land-watch.js +13 -5
  386. package/scripts/gds/mirror-redact.js +13 -2
  387. package/scripts/gds/package-core.js +11 -3
  388. package/scripts/gds/release.js +55 -0
  389. package/scripts/gds/ship-land.js +10 -2
  390. package/scripts/gds/ship-regen.js +41 -8
  391. package/scripts/gds/start.js +7 -4
  392. package/scripts/gds/worktree-claim-guard.js +27 -1
  393. package/scripts/public-mirror-export.js +17 -4
  394. package/src/bongos/api-errors.js +9 -0
  395. package/src/bongos/artist-gate.js +204 -0
  396. package/src/branding.js +15 -0
  397. package/src/module-api.js +34 -1
  398. package/tests/api_path_404.mjs +28 -0
  399. package/tests/artist_gate.mjs +234 -0
  400. package/tests/artist_gate_release.mjs +283 -0
  401. package/tests/artist_gate_route.mjs +174 -0
  402. package/tests/box_scope_predicate.mjs +117 -0
  403. package/tests/claim_error_surface.mjs +163 -1
  404. package/tests/cli_exit_no_abort.mjs +256 -3
  405. package/tests/credit_log_single_writer.mjs +94 -0
  406. package/tests/currency_label.mjs +11 -4
  407. package/tests/go_live.mjs +144 -0
  408. package/tests/helpers.mjs +8 -0
  409. package/tests/main_worktree_busy_reason.mjs +167 -0
  410. package/tests/membership_kind_lockstep.mjs +88 -0
  411. package/tests/mirror_redact.mjs +14 -0
  412. package/tests/module_api.mjs +6 -0
  413. package/tests/provision_settings_apply.mjs +13 -5
  414. package/tests/provisioning_settings.mjs +11 -7
  415. package/tests/provisioning_settings_apply.mjs +4 -4
  416. package/tests/provisioning_settings_env.mjs +59 -7
  417. package/tests/public_mirror_export.mjs +12 -0
  418. package/tests/rank_roles_audit.mjs +114 -0
  419. package/tests/scrubber_corpus.mjs +70 -2
  420. package/tests/start_rebase_warning.mjs +50 -0
  421. package/tests/task_field_bounds_match_db.mjs +140 -0
  422. package/tests/watch_roster_self_row.mjs +289 -0
@@ -2,9 +2,9 @@
2
2
 
3
3
  - **Status:** accepted
4
4
  - **Date:** 2026-09-06
5
- - **Task:** [task 1003670](https://cloudbongos.com/builders#/task/1003670) (BONGOS-V1, goal 1000046 — *Project creation*, criterion `proj-visibility-states` / C1) — the gap [ADR 0252](<redacted>.md) §5 named and filed rather than left
5
+ - **Task:** [task 1003670](https://cloudbongos.com/builders#/task/1003670) (BONGOS-V1, goal 1000046 — *Project creation*, criterion `proj-visibility-states` / C1) — the gap [ADR 0252](0252-the-self-hosted-visibility-report-is-a-pull-and-auto-appear-buys-a-retraction-lever.md) §5 named and filed rather than left
6
6
  - **Deciders:** Claude, building the task ADR 0252 §5 opened
7
- - **Related:** [ADR 0252](<redacted>.md) §3/§5 (auto-appear, and the condition it was granted on) · [ADR 0253](<redacted>.md) §2 (*narrowing is free; widening is what costs* — the asymmetry this applies again) · [ADR 0182](<redacted>.md) D2a (redaction is server-side, because the page cannot be the gate) · [ADR 0171](<redacted>.md) D7 (validation lives next to the data, where no caller can forget it) · [ADR 0114](<redacted>.md) (the discovery index this value arrives on) · [ADR 0083](<redacted>.md) (the module boundary the shared file sits inside)
7
+ - **Related:** [ADR 0252](0252-the-self-hosted-visibility-report-is-a-pull-and-auto-appear-buys-a-retraction-lever.md) §3/§5 (auto-appear, and the condition it was granted on) · [ADR 0253](0253-the-takedown-lever-has-two-writers-and-provenance-is-a-column.md) §2 (*narrowing is free; widening is what costs* — the asymmetry this applies again) · [ADR 0182](0182-project-visibility-two-axes.md) D2a (redaction is server-side, because the page cannot be the gate) · [ADR 0171](0171-profile-rollup-join-and-consent.md) D7 (validation lives next to the data, where no caller can forget it) · [ADR 0114](0114-instance-docs-discovery-contract.md) (the discovery index this value arrives on) · [ADR 0083](0083-modular-architecture-strangler-build-plan.md) (the module boundary the shared file sits inside)
8
8
 
9
9
  ---
10
10
 
@@ -31,7 +31,7 @@ owner decision (a): *a door only where it opens somewhere else*) and it answers
31
31
  question correctly. Nothing was ever asked to answer the security one.
32
32
 
33
33
  **Why it stopped being survivable.** Under control-plane provisioning the set of origins the
34
- hub would ever fetch was bounded by whom the operator had provisioned. [ADR 0252](<redacted>.md)
34
+ hub would ever fetch was bounded by whom the operator had provisioned. [ADR 0252](0252-the-self-hosted-visibility-report-is-a-pull-and-auto-appear-buys-a-retraction-lever.md)
35
35
  §3 replaced that bound with *whoever points a domain at the hub*, and §5 named this gap in
36
36
  the same breath — auto-appear turns a curated-origin risk into a phishing hop anyone can
37
37
  mint. Auto-appear was granted on the condition that its guards ship; this is one of them.
@@ -58,7 +58,7 @@ as `urlWithinOrigin(raw, origin, max)` and required by both callers. This is not
58
58
  the defect *was* two surfaces answering one question differently, and leaving the answer
59
59
  where only one of them could reach it is what let them differ. (The rename is why ADR 0252
60
60
  §5's `shipUrlWithinClientOrigin` no longer greps; ADR 0252 is left as written, per the
61
- [ADR 0253](<redacted>.md) §1
61
+ [ADR 0253](0253-the-takedown-lever-has-two-writers-and-provenance-is-a-column.md) §1
62
62
  convention that a decision record is not edited after the fact.)
63
63
 
64
64
  Its own file, rather than a shared symbol left in place, for the reason a row of siblings in
@@ -78,7 +78,7 @@ every neighbour under it. The upward direction is not offered, here or for ship
78
78
  **What that costs, named rather than discovered later:** a project whose hall is a *sibling*
79
79
  of its site — site `www.example.com`, hall `builders.example.com` — loses the hall glyph on
80
80
  the hub. The hall is still reachable and the project is otherwise unaffected; the hub simply
81
- stops vouching for the address. That is [ADR 0253](<redacted>.md)
81
+ stops vouching for the address. That is [ADR 0253](0253-the-takedown-lever-has-two-writers-and-provenance-is-a-column.md)
82
82
  §2's asymmetry applied again — **narrowing is free; widening is what costs** — and the only
83
83
  rule that would admit the sibling is the one that hands away the apex.
84
84
 
@@ -86,7 +86,7 @@ rule that would admit the sibling is the one that hands away the apex.
86
86
 
87
87
  - **Mirroring the check in the browser** (`modules/public-landing/public/projects.html`
88
88
  already scheme-checks and re-applies the door test client-side). Rejected: the page is not
89
- the gate ([ADR 0182](<redacted>.md) D2a — a client-side filter still
89
+ the gate ([ADR 0182](0182-project-visibility-two-axes.md) D2a — a client-side filter still
90
90
  ships the value to anyone who opens a network tab), the server is now the only producer of
91
91
  the field, and a second copy of a containment rule is precisely the drift this ADR exists
92
92
  to end. The existing client-side scheme check stays as cheap defence in depth.
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-09-06
5
5
  - **Task:** [task 1003561](https://cloudbongos.com/builders#/task/1003561) (BONGOS-V1, goal 1000046 — *Project creation*), which absorbed [task 1003560](https://cloudbongos.com/builders#/task/1003560)
6
6
  - **Deciders:** Claude, building against ADR 0182 D2a
7
- - **Related:** [ADR 0182](<redacted>.md) D1/D2a/D3 (the join door, the stealth redaction, and `featured`'s remaining ranking job) · [ADR 0252](<redacted>.md) §5.3 (the per-IP ceiling on this route) · [ADR 0253](<redacted>.md) (`visibility_source` / `visibility_reported_at`, the `DOOR_KNOWN_SQL` predicate this feed joins) · [ADR 0119](0119-api-pagination-contract.md) (the `?limit=&offset=` contract this feed was the last public list to hold out on)
7
+ - **Related:** [ADR 0182](0182-project-visibility-two-axes.md) D1/D2a/D3 (the join door, the stealth redaction, and `featured`'s remaining ranking job) · [ADR 0252](0252-the-self-hosted-visibility-report-is-a-pull-and-auto-appear-buys-a-retraction-lever.md) §5.3 (the per-IP ceiling on this route) · [ADR 0253](0253-the-takedown-lever-has-two-writers-and-provenance-is-a-column.md) (`visibility_source` / `visibility_reported_at`, the `DOOR_KNOWN_SQL` predicate this feed joins) · [ADR 0119](0119-api-pagination-contract.md) (the `?limit=&offset=` contract this feed was the last public list to hold out on)
8
8
 
9
9
  ---
10
10
 
@@ -151,7 +151,7 @@ Stated plainly, because a privacy fix that oversells itself is worse than none:
151
151
  at all, and closing it needs a different mechanism (a delay, a decoy, or accepting that a
152
152
  project's *departure* from the public list is public). Filed separately rather than
153
153
  silently implied to be fixed — and **now decided**: the owner chose to accept it and say
154
- so in the copy ([ADR 0259](<redacted>.md),
154
+ so in the copy ([ADR 0259](0259-a-projects-departure-from-the-public-list-is-public.md),
155
155
  [task 1003672](https://cloudbongos.com/builders#/task/1003672)), which also carries the
156
156
  §6.3 residual below.
157
157
  3. **Position is stable within one epoch.** Two snapshots taken the same day can still tell
@@ -4,9 +4,9 @@
4
4
  - **Date:** 2026-09-06
5
5
  - **Task:** [task 1003579](https://cloudbongos.com/builders#/task/1003579) (BONGOS-V1, goal 1000046 — *Project creation*, criterion `proj-join-policy`)
6
6
  - **Deciders:** Claude, under the Archon's standing scope
7
- - **Closes:** [ADR 0247](<redacted>.md)'s written *KNOWN LIMIT* — *"the door narrows, the sign-in gate does not"*
8
- - **Implements:** [ADR 0182](<redacted>.md) D6's **Self-join** column (the half ADR 0247 enforced was the *Applications* column)
9
- - **Related:** [ADR 0194](<redacted>.md) (the one-reader move this repeats one level up; D2's fail-closed rule) · [ADR 0192](<redacted>.md) §2 (where that fail-closed rule comes from) · [ADR 0050](<redacted>.md) (the legacy `OPEN_XENOS_ENROLLMENT` flag) · [ADR 0190](<redacted>.md) (how a knob reaches the instance)
7
+ - **Closes:** [ADR 0247](0247-the-join-door-is-one-composed-answer-and-dark-matter-has-no-live-verdict-yet.md)'s written *KNOWN LIMIT* — *"the door narrows, the sign-in gate does not"*
8
+ - **Implements:** [ADR 0182](0182-project-visibility-two-axes.md) D6's **Self-join** column (the half ADR 0247 enforced was the *Applications* column)
9
+ - **Related:** [ADR 0194](0194-joinability-one-door-decision.md) (the one-reader move this repeats one level up; D2's fail-closed rule) · [ADR 0192](0192-platform-visibility-member-door.md) §2 (where that fail-closed rule comes from) · [ADR 0050](0050-device-flow-admission-invite-gated-by-default.md) (the legacy `OPEN_XENOS_ENROLLMENT` flag) · [ADR 0190](0190-settings-apply-in-place-env-patch.md) (how a knob reaches the instance)
10
10
 
11
11
  ---
12
12
 
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-09-06
5
5
  - **Task:** [task 1003673](https://cloudbongos.com/builders#/task/1003673) (BONGOS-V1, goal 1000063 — *The front door*)
6
6
  - **Deciders:** Claude, under the Archon's standing scope
7
- - **Related:** [ADR 0050](<redacted>.md) (admission is invite-gated by default — the posture this defect made unusable) · [ADR 0194](<redacted>.md) + [ADR 0247](<redacted>.md) (the door the landing form renders) · [ADR 0062 §4](<redacted>.md) (the hall-widget registry)
7
+ - **Related:** [ADR 0050](0050-device-flow-admission-invite-gated-by-default.md) (admission is invite-gated by default — the posture this defect made unusable) · [ADR 0194](0194-joinability-one-door-decision.md) + [ADR 0247](0247-the-join-door-is-one-composed-answer-and-dark-matter-has-no-live-verdict-yet.md) (the door the landing form renders) · [ADR 0062 §4](0062-medusa-instance-model-decoupling.md) (the hall-widget registry)
8
8
 
9
9
  ---
10
10
 
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-09-07
5
5
  - **Task:** [task 1003679](https://cloudbongos.com/builders#/task/1003679) (BONGOS-V1, goal 1000054 — *A newcomer can build without the UI*)
6
6
  - **Deciders:** Claude, under the Archon's standing scope
7
- - **Related:** [ADR 0083](<redacted>.md) (a module may import only `src/module-api.js` — the reason a static closure cannot answer this question) · [ADR 0099](<redacted>.md) (the lagged, redacted public mirror — still dormant) · [ADR 0108](<redacted>.md) (the core ships as a private versioned dependency) · [ADR 0118](<redacted>.md) (the generated client this package vendors) · [ADR 0161](<redacted>.md) (why the core's version moves many times a day)
7
+ - **Related:** [ADR 0083](0083-modular-architecture-strangler-build-plan.md) (a module may import only `src/module-api.js` — the reason a static closure cannot answer this question) · [ADR 0099](0099-delayed-redacted-mirror-export.md) (the lagged, redacted public mirror — still dormant) · [ADR 0108](0108-instance-composition-configurable-root.md) (the core ships as a private versioned dependency) · [ADR 0118](0118-api-contract-source-of-truth-code-first.md) (the generated client this package vendors) · [ADR 0161](0161-publish-on-merge.md) (why the core's version moves many times a day)
8
8
 
9
9
  ---
10
10
 
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-09-07
5
5
  - **Task:** [task 1003672](https://cloudbongos.com/builders#/task/1003672) (BONGOS-V1, goal 1000046 — *Project creation*)
6
6
  - **Deciders:** the owner (choosing between accept / delay / decoys), Claude
7
- - **Related:** [ADR 0255](<redacted>.md) §6.2 (which filed this leak rather than implying it fixed) · [ADR 0182](<redacted>.md) D2a (the stealth redaction and its `STEALTH_ANONYMOUS_KEEPS` allow-list) · [ADR 0253](<redacted>.md) (the `visibility_source` provenance this feed joins)
7
+ - **Related:** [ADR 0255](0255-a-public-lists-ordering-is-part-of-its-payload.md) §6.2 (which filed this leak rather than implying it fixed) · [ADR 0182](0182-project-visibility-two-axes.md) D2a (the stealth redaction and its `STEALTH_ANONYMOUS_KEEPS` allow-list) · [ADR 0253](0253-the-takedown-lever-has-two-writers-and-provenance-is-a-column.md) (the `visibility_source` provenance this feed joins)
8
8
 
9
9
  ---
10
10
 
@@ -26,7 +26,7 @@ is an allow-list precisely so a column added next year is anonymous without anyo
26
26
  remembering to come back to it. But the identity was never carried *on* the anonymous row.
27
27
  It is carried by the **absence** of the named row that used to sit beside it.
28
28
 
29
- **It is larger than the leak [ADR 0255](<redacted>.md)
29
+ **It is larger than the leak [ADR 0255](0255-a-public-lists-ordering-is-part-of-its-payload.md)
30
30
  closed.** The ordering channel needed repeated sampling and correlation to be useful. This
31
31
  one is a single diff of two snapshots and it is exact.
32
32
 
@@ -75,7 +75,7 @@ The owner-facing copy for Stealth previously read:
75
75
  Every clause is true and the paragraph as a whole still oversells, because a reader takes
76
76
  "its name stays yours" to cover the switch itself. The copy now names the boundary in both
77
77
  places an owner meets this setting — the choice's blurb and the explanatory fold — in the
78
- plain register [ADR 0182](<redacted>.md)'s interview fixed for this
78
+ plain register [ADR 0182](0182-project-visibility-two-axes.md)'s interview fixed for this
79
79
  card (the space metaphor belongs to the drawn orb, never to the words).
80
80
 
81
81
  **A privacy control that oversells is worse than one that admits a limit**, which is the
@@ -86,18 +86,18 @@ same standard 0255 §6 set for itself.
86
86
  Recorded so a later attempt does not undo the two guarantees that *are* held:
87
87
 
88
88
  - **No stable per-project key on an anonymous row** — the `STEALTH_ANONYMOUS_KEEPS`
89
- allow-list ([ADR 0182](<redacted>.md) D2a). A decoy scheme that
89
+ allow-list ([ADR 0182](0182-project-visibility-two-axes.md) D2a). A decoy scheme that
90
90
  needs to tell its own padding apart from real rows is the classic way this gets
91
91
  reintroduced.
92
92
  - **No anonymous ordering an observer can predict or correlate**
93
- ([ADR 0255](<redacted>.md) §3) — the trailing
93
+ ([ADR 0255](0255-a-public-lists-ordering-is-part-of-its-payload.md) §3) — the trailing
94
94
  block's keyed, rotating permutation.
95
95
 
96
96
  ## 5. The residual this does not address either
97
97
 
98
98
  Within one 24h epoch the anonymous block's permutation is stable, so two snapshots taken the
99
99
  same day can tell black holes apart — though not name them. Bounded by the rotation, and
100
- carried here from [ADR 0255](<redacted>.md) §6.3 so
100
+ carried here from [ADR 0255](0255-a-public-lists-ordering-is-part-of-its-payload.md) §6.3 so
101
101
  both residuals live in one place. Accepted on the same reasoning: the fix is a per-request
102
102
  permutation, which breaks pagination exactly the way `ORDER BY random()` was rejected for in
103
103
  0255.
@@ -110,7 +110,7 @@ permutation, which breaks pagination exactly the way `ORDER BY random()` was rej
110
110
  - The Stealth copy carries the boundary in both surfaces, and
111
111
  `tests/projects_hub.mjs` pins that it does, so the sentence cannot quietly drop out of a
112
112
  future copy edit and leave the page overselling again.
113
- - [ADR 0255](<redacted>.md) §6.2's "filed
113
+ - [ADR 0255](0255-a-public-lists-ordering-is-part-of-its-payload.md) §6.2's "filed
114
114
  separately" is now resolved, and points here.
115
115
 
116
116
  ## Alternatives rejected
@@ -3,7 +3,7 @@
3
3
  - **Status:** accepted
4
4
  - **Date:** 2026-09-03
5
5
  - **Task:** [task 1002972](https://cloudbongos.com/builders#/task/1002972) (PV7, goal 1000045 — criterion C4)
6
- - **Relates to:** `docs/specs/<redacted>.md` **D7** (owner-signed 2026-08-16), [ADR 0215](<redacted>.md) (the D3 sliver this reuses), [ADR 0205](<redacted>.md) + security report 1000027 (client credentials name a project, never a person), [ADR 0201](<redacted>.md) D1.2/D1.3 (the vouch mark and the statusless echo), [ADR 0171](<redacted>.md) D4/D5 (indistinguishable nulls, no-store), [ADR 0016](<redacted>.md) (descriptive, never authority), [ADR 0083](<redacted>.md) (the doorway)
6
+ - **Relates to:** `docs/specs/<redacted>.md` **D7** (owner-signed 2026-08-16), [ADR 0215](0215-the-recruiter-sliver-is-a-ceiling-not-a-step.md) (the D3 sliver this reuses), [ADR 0205](0205-federated-checkin-needs-the-hubs-own-signin-witness.md) + security report 1000027 (client credentials name a project, never a person), [ADR 0201](0201-cross-project-application-vouched-row-live-record.md) D1.2/D1.3 (the vouch mark and the statusless echo), [ADR 0171](0171-profile-rollup-join-and-consent.md) D4/D5 (indistinguishable nulls, no-store), [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) (descriptive, never authority), [ADR 0083](0083-modular-architecture-strangler-build-plan.md) (the doorway)
7
7
 
8
8
  ## Context
9
9
 
@@ -15,7 +15,7 @@ profile view. Private account → the D3 sliver. No new disclosure class.
15
15
  Two halves of that already existed when this task opened. The applicant's note
16
16
  reaches the project's queue through the join relay (task 1002330,
17
17
  `relayApplicationNote`). The D3 projection exists and is proved
18
- ([ADR 0215](<redacted>.md)). What did not
18
+ ([ADR 0215](0215-the-recruiter-sliver-is-a-ceiling-not-a-step.md)). What did not
19
19
  exist was the **rule** — which of the two views an applicant gets — and the
20
20
  **path** by which a project's reviewer queue could ask the hub for it.
21
21
 
@@ -78,7 +78,7 @@ tempting refactor cannot pass quietly.
78
78
  like its two siblings. **That authentication is not sufficient on its own**, and
79
79
  this is the whole security argument for the route.
80
80
 
81
- [ADR 0205](<redacted>.md) / security
81
+ [ADR 0205](0205-federated-checkin-needs-the-hubs-own-signin-witness.md) / security
82
82
  report 1000027 is the lesson `/sso/membership/check-in` and `/sso/activity/rollup`
83
83
  both had to learn: credentials prove *which project* is calling and say **nothing
84
84
  about who the `github_id` in the body is**. Without a per-subject witness, this
@@ -89,7 +89,7 @@ would mirror.
89
89
 
90
90
  The witness is `platform_identity_application_echoes` — the statusless
91
91
  "you applied to this project on this date" row from
92
- [ADR 0201](<redacted>.md) D1.3. It is
92
+ [ADR 0201](0201-cross-project-application-vouched-row-live-record.md) D1.3. It is
93
93
  the right witness because **the hub writes it itself**, in its own join relay,
94
94
  only after the project answered the relayed application with a success. A client
95
95
  cannot assert itself into that table. `applicationBacksProfileRead` is the exact
@@ -1,7 +1,7 @@
1
1
  # ADR 0261 — A preselect always carries a reason; the bundle's summary is the floor
2
2
 
3
3
  **Status:** Accepted · 2026-09-07 · task 1003684
4
- **Supersedes nothing. Resolves a tension between [ADR 0237](<redacted>.md) and [ADR 0243](<redacted>.md).**
4
+ **Supersedes nothing. Resolves a tension between [ADR 0237](0237-a-starter-bundle-is-a-preset-over-the-always-on-core-keyed-by-declared-type.md) and [ADR 0243](0243-a-bundle-adjustment-belongs-to-the-bundle-not-the-advice-about-it.md).**
5
5
 
6
6
  ## Context
7
7
 
@@ -1,7 +1,7 @@
1
1
  # ADR 0262 — A bug never lands in the inbox: the system names the home the reporter didn't
2
2
 
3
3
  **Status:** Accepted · 2026-09-07 · task 1003691
4
- **Supersedes nothing. Amends nothing.** It makes the explicit decision [ADR 0235](<redacted>.md) §6 said would be needed, and it keeps [ADR 0234](<redacted>.md)'s `#ideas` interview decision and [ADR 0250](<redacted>.md) D4's invariant both intact.
4
+ **Supersedes nothing. Amends nothing.** It makes the explicit decision [ADR 0235](0235-a-fix-category-is-kindbug-under-a-goal-no-column-required.md) §6 said would be needed, and it keeps [ADR 0234](0234-idea-routing-capture-time-promotion-landing-matrix-homeless-inbox.md)'s `#ideas` interview decision and [ADR 0250](0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) D4's invariant both intact.
5
5
 
6
6
  ## Context
7
7
 
@@ -4,11 +4,11 @@
4
4
  - **Date:** 2026-09-07
5
5
  - **Tasks:** [#1003593](https://cloudbongos.com/builders#/task/1003593) (this design pass, BV1.R06). Implemented by BV1.R12 ([#1003599](https://cloudbongos.com/builders#/task/1003599)), R16 ([#1003603](https://cloudbongos.com/builders#/task/1003603)), R17 ([#1003604](https://cloudbongos.com/builders#/task/1003604)), R18 ([#1003605](https://cloudbongos.com/builders#/task/1003605)), R20 ([#1003607](https://cloudbongos.com/builders#/task/1003607)) and R23 ([#1003610](https://cloudbongos.com/builders#/task/1003610)).
6
6
  - **Goal:** [#1000086](https://cloudbongos.com/builders#/goal/1000086) — Strict versioning.
7
- - **Implements:** [ADR 0250](<redacted>.md) D5. That decision says a version *can* close; this one says *how*, so the five build tasks under it are mechanical.
7
+ - **Implements:** [ADR 0250](0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) D5. That decision says a version *can* close; this one says *how*, so the five build tasks under it are mechanical.
8
8
 
9
9
  ## 1. Why a second ADR
10
10
 
11
- [ADR 0250](<redacted>.md) is the
11
+ [ADR 0250](0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) is the
12
12
  decision: the version boundary is the scope gate, and a version must be able to
13
13
  reach done. It deliberately stops at the rule. Closing a version is the widest
14
14
  write in the system — it flips a version, dispositions every goal still standing,
@@ -65,7 +65,7 @@ where the weight is.
65
65
 
66
66
  ## 4. Auto-close: where it fires, and why it cannot fail a ship
67
67
 
68
- Goal achievement has **two writers**, and [ADR 0250](<redacted>.md) D2 already made them a deliberate,
68
+ Goal achievement has **two writers**, and [ADR 0250](0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) D2 already made them a deliberate,
69
69
  documented duplicate rather than one helper, because collapsing them creates a
70
70
  require cycle (`db-goals` → `done-when` → `db-goals`):
71
71
 
@@ -5,7 +5,7 @@
5
5
  - **Tasks:** [#1003696](https://cloudbongos.com/builders#/task/1003696) (this record). Executed by BV1.R25 ([#1003612](https://cloudbongos.com/builders#/task/1003612)), R26 ([#1003613](https://cloudbongos.com/builders#/task/1003613)), R27 ([#1003614](https://cloudbongos.com/builders#/task/1003614)), R28 ([#1003615](https://cloudbongos.com/builders#/task/1003615)) and R29 ([#1003617](https://cloudbongos.com/builders#/task/1003617)).
6
6
  - **Goal:** [#1000086](https://cloudbongos.com/builders#/goal/1000086) — Strict versioning, criterion `sv-cutover-proven-live`.
7
7
  - **Decided by:** the owner and the full team, in a manual goal review on 2026-09-07.
8
- - **Builds on:** [ADR 0250](<redacted>.md) (the version boundary is the scope gate — this is the scope that boundary will hold), [ADR 0086](<redacted>.md) (the goal tier).
8
+ - **Builds on:** [ADR 0250](0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) (the version boundary is the scope gate — this is the scope that boundary will hold), [ADR 0086](0086-goal-scoped-work-hierarchy.md) (the goal tier).
9
9
 
10
10
  ## 1. The decision
11
11
 
@@ -30,7 +30,7 @@ these ten.
30
30
  ## 2. Why ten, and why now
31
31
 
32
32
  Thirty-eight open goals is not a plan; it is a list of everything anyone has ever
33
- wanted. [ADR 0250](<redacted>.md) measured what that costs — 523 open tasks, fourteen goals
33
+ wanted. [ADR 0250](0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) measured what that costs — 523 open tasks, fourteen goals
34
34
  reporting done while holding thirty-five unfinished tasks — and built the
35
35
  machinery to stop the drift. But **enforcement alone cannot shrink a scope that
36
36
  is already too large**: D1 closes the goal set of a *building* version, which
@@ -145,7 +145,7 @@ is the system working as designed, one task ahead of its own remedy.
145
145
 
146
146
  ## 6. What actually executed, 2026-09-08
147
147
 
148
- The cut ran to completion in one pass under [#1003728](https://cloudbongos.com/builders#/task/1003728), in the order [ADR 0265](<redacted>.md) §3 requires. **BONGOS-V1 is `shipped`, BONGOS-V2 is `building`, and the board is eleven rows: the ten working areas plus the maintenance goal.** All six strict-versioning invariants hold; 532 non-terminal tasks are homed and none are orphaned.
148
+ The cut ran to completion in one pass under [#1003728](https://cloudbongos.com/builders#/task/1003728), in the order [ADR 0265](0265-work-with-no-goal-and-the-order-the-cut-needs.md) §3 requires. **BONGOS-V1 is `shipped`, BONGOS-V2 is `building`, and the board is eleven rows: the ten working areas plus the maintenance goal.** All six strict-versioning invariants hold; 532 non-terminal tasks are homed and none are orphaned.
149
149
 
150
150
  **The close** dispositioned all 21 open non-maintenance goals — 20 `roll_forward`, and `abandon` for [#1000067](https://cloudbongos.com/builders#/goal/1000067) (Ideator compensation), which held no unfinished work. 391 tasks moved onto BONGOS-V2 with their goals; the maintenance queue's 50 carried into a fresh goal, [#1000118](https://cloudbongos.com/builders#/goal/1000118).
151
151
 
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-09-08
5
5
  - **Tasks:** [#1003713](https://cloudbongos.com/builders#/task/1003713) (this record + the fix). Found while re-basing the cutover plan in [#1003711](https://cloudbongos.com/builders#/task/1003711).
6
6
  - **Goal:** [#1000086](https://cloudbongos.com/builders#/goal/1000086) — Strict versioning, criteria `sv-every-task-has-a-goal` and `sv-cutover-proven-live`.
7
- - **Builds on:** [ADR 0250](<redacted>.md) (D3, D4, D5), [ADR 0263](<redacted>.md) (§5–§8), [ADR 0264](<redacted>.md) (the cut this order executes).
7
+ - **Builds on:** [ADR 0250](0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) (D3, D4, D5), [ADR 0263](0263-how-a-version-closes.md) (§5–§8), [ADR 0264](0264-the-ten-working-areas.md) (the cut this order executes).
8
8
 
9
9
  ## 1. The defect
10
10
 
@@ -21,7 +21,7 @@ it, the goal re-count cannot see it, and the version flips to `shipped` with the
21
21
  task still stamped with it. It is then permanently non-terminal on a version that
22
22
  is over, and invisible to every surface that reasons per goal.
23
23
 
24
- [ADR 0250](<redacted>.md) D3 shut this door one tier down — R10 and R14 made a *goal* refuse to
24
+ [ADR 0250](0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) D3 shut this door one tier down — R10 and R14 made a *goal* refuse to
25
25
  close while holding unfinished tasks. The version tier never got the same
26
26
  treatment, and D4 ("every task has a goal") was written as a property of the data
27
27
  rather than as a gate anything enforced at the boundary.
@@ -52,7 +52,7 @@ discover which ones is how forty-seven went unnoticed.
52
52
  Two exemptions, both forced rather than chosen:
53
53
 
54
54
  - **The maintenance goal's tasks.** `carryBugsForward` runs in the `onClosed`
55
- hook, which fires *after* this check and after the flip ([ADR 0263](<redacted>.md) §8), so
55
+ hook, which fires *after* this check and after the flip ([ADR 0263](0263-how-a-version-closes.md) §8), so
56
56
  maintenance work is legitimately still on the version at check time. Exempted
57
57
  through `maintenanceGoalExemptSql` — the **same** predicate the goal count
58
58
  uses, never a second copy. R18 replaced that function's body once already (a
@@ -71,7 +71,7 @@ dispositions were about to move anyway.
71
71
  ## 3. The consequence: the cut needs roll-forward, *then* fold
72
72
 
73
73
  Verifying the above surfaced two facts that together determine how
74
- [ADR 0264](<redacted>.md)'s thirty-eight-goals-to-ten cut can be executed at all:
74
+ [ADR 0264](0264-the-ten-working-areas.md)'s thirty-eight-goals-to-ten cut can be executed at all:
75
75
 
76
76
  1. **A task cannot cross a version boundary by hand.** `PATCH /tasks/:id { goal_id }`
77
77
  refuses with 409 `goal_version_mismatch` — "a task can only join a goal in its
@@ -92,7 +92,7 @@ because the area goals live on BONGOS-V2 and the tasks live on BONGOS-V1.
92
92
 
93
93
  1. **Give every homeless task a goal on its own version.** The 47 null-goal rows
94
94
  and the two catch-alls' populations go to any real goal on the version they
95
- are already on — bugs to that version's maintenance goal ([ADR 0262](<redacted>.md)), the rest
95
+ are already on — bugs to that version's maintenance goal ([ADR 0262](0262-a-bug-never-lands-in-the-inbox.md)), the rest
96
96
  to whichever existing goal fits. This is the step the new invariant makes
97
97
  mandatory rather than optional.
98
98
  2. **Close the building version, rolling every goal that still holds work
@@ -5,8 +5,8 @@
5
5
  - **Tasks:** [#1003734](https://cloudbongos.com/builders#/task/1003734) (this record). Executed by [#1003735](https://cloudbongos.com/builders#/task/1003735) (the carve), [#1003736](https://cloudbongos.com/builders#/task/1003736) (the deep links), [#1003737](https://cloudbongos.com/builders#/task/1003737) (the waiting-vote count).
6
6
  - **Goal:** [#1000111](https://cloudbongos.com/builders#/goal/1000111) — Working area 7, Government; criterion `wa7-government`.
7
7
  - **Decided by:** the owner (Masterqua / `IAMMASTERQUA`, Archon, member of area 7), 2026-09-08.
8
- - **Builds on:** [ADR 0175](<redacted>.md) (the Board Room, and §6 — who governs is configuration), [ADR 0157](<redacted>.md) (the `page.view.government` floor at metic), [ADR 0151](<redacted>.md) (permissions as the atom), [ADR 0016](<redacted>.md) (server-enforced, uncached, per request).
9
- - **Related:** [ADR 0174](<redacted>.md) (government, not governance).
8
+ - **Builds on:** [ADR 0175](0175-the-board-room-full-idea-ratification.md) (the Board Room, and §6 — who governs is configuration), [ADR 0157](0157-archon-is-rank-and-identity-only.md) (the `page.view.government` floor at metic), [ADR 0151](0151-governance-permissions-as-atom-ranks-as-roles.md) (permissions as the atom), [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) (server-enforced, uncached, per request).
9
+ - **Related:** [ADR 0174](0174-government-terminology-ranks-not-roles.md) (government, not governance).
10
10
 
11
11
  ## 1. Context — the room with no door
12
12
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-09-08
5
5
  - **Tasks:** [#1003733](https://cloudbongos.com/builders#/task/1003733) (goal [#1000111](https://cloudbongos.com/builders#/goal/1000111) — Government).
6
- - **Amends:** [ADR 0175](<redacted>.md) §3 (the pass-rule set) and [ADR 0191](<redacted>.md) §2 (the same set, and the clock argument in §4). Everything else in both stands — in particular 0191 §3, the author who may vote and may never decide alone, which this decision leans on rather than touches, and 0175 §8, Discord is outbound-only and never a ballot.
6
+ - **Amends:** [ADR 0175](0175-the-board-room-full-idea-ratification.md) §3 (the pass-rule set) and [ADR 0191](0191-majority-and-the-author-who-may-not-decide-alone.md) §2 (the same set, and the clock argument in §4). Everything else in both stands — in particular 0191 §3, the author who may vote and may never decide alone, which this decision leans on rather than touches, and 0175 §8, Discord is outbound-only and never a ballot.
7
7
 
8
8
  ## 1. The decision
9
9
 
@@ -2,8 +2,8 @@
2
2
 
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-09-09
5
- - **Tasks:** [#1003739](https://cloudbongos.com/builders#/task/1003739) (goal [#1000111](https://cloudbongos.com/builders#/goal/1000111) — Government). Found while shipping [#1003733](https://cloudbongos.com/builders#/task/1003733) ([ADR 0267](<redacted>.md)).
6
- - **Builds on:** [ADR 0108](<redacted>.md) §1 (the two configurable roots), [ADR 0175](<redacted>.md) §7 (a passed amendment becomes the live constitution), [ADR 0083](<redacted>.md) (a module reaches core only through the doorway).
5
+ - **Tasks:** [#1003739](https://cloudbongos.com/builders#/task/1003739) (goal [#1000111](https://cloudbongos.com/builders#/goal/1000111) — Government). Found while shipping [#1003733](https://cloudbongos.com/builders#/task/1003733) ([ADR 0267](0267-unanimity-and-the-revise-and-re-sit-loop.md)).
6
+ - **Builds on:** [ADR 0108](0108-instance-composition-configurable-root.md) §1 (the two configurable roots), [ADR 0175](0175-the-board-room-full-idea-ratification.md) §7 (a passed amendment becomes the live constitution), [ADR 0083](0083-modular-architecture-strangler-build-plan.md) (a module reaches core only through the doorway).
7
7
 
8
8
  ## 1. What happened
9
9
 
@@ -15,7 +15,7 @@ day-one monarchy, with the passed amendment sitting in its own `history` array
15
15
  directly beneath the `board` block that contradicted it.
16
16
 
17
17
  Every Board Room sitting in those two weeks was decided under a rule the board
18
- had voted to replace. It also quietly un-shipped [ADR 0191](<redacted>.md)
18
+ had voted to replace. It also quietly un-shipped [ADR 0191](0191-majority-and-the-author-who-may-not-decide-alone.md)
19
19
  (majority) and would have un-shipped ADR 0267 (unanimity) the same way: both
20
20
  shipped as code, and neither could reach anybody.
21
21
 
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-09-09
5
5
  - **Task:** [task 1003741](https://cloudbongos.com/builders#/task/1003741) (BONGOS-V2, goal 1000090 — *Working area 4, Bongos Core distribution*)
6
6
  - **Deciders:** Claude, under the Archon's standing scope
7
- - **Related:** [ADR 0258](<redacted>.md) (the public CLI, which is where this bites) · [ADR 0108](<redacted>.md) (each instance its own checkout) · [ADR 0083](<redacted>.md) (why the store directory may not be called `sessions`)
7
+ - **Related:** [ADR 0258](0258-the-public-cli-is-a-generated-client-package-not-the-published-core.md) (the public CLI, which is where this bites) · [ADR 0108](0108-instance-composition-configurable-root.md) (each instance its own checkout) · [ADR 0083](0083-modular-architecture-strangler-build-plan.md) (why the store directory may not be called `sessions`)
8
8
 
9
9
  ---
10
10
 
@@ -1,7 +1,7 @@
1
1
  # ADR 0270 — The rank floor derives from facts, not from a prediction
2
2
 
3
3
  **Date:** 2026-09-09
4
- **Context:** BONGOS-V2, goal [1000111](https://cloudbongos.com/builders#/task/1003663) (Working area 7 — Government), task [1003663](https://cloudbongos.com/builders#/task/1003663). Repairs an interaction between [ADR 0084](<redacted>.md) (the per-task `requires_rank` floor) and [ADR 0049](<redacted>.md) (the split parallel-safety contract, which retired predictive `touches[]`). Generalises the protected-scope floor task 1003066 (BV1.R05) shipped for the ideas vector.
4
+ **Context:** BONGOS-V2, goal [1000111](https://cloudbongos.com/builders#/task/1003663) (Working area 7 — Government), task [1003663](https://cloudbongos.com/builders#/task/1003663). Repairs an interaction between [ADR 0084](0084-auto-derived-per-task-rank-floor.md) (the per-task `requires_rank` floor) and [ADR 0049](0049-split-parallel-safety-contract.md) (the split parallel-safety contract, which retired predictive `touches[]`). Generalises the protected-scope floor task 1003066 (BV1.R05) shipped for the ideas vector.
5
5
  **Status:** Accepted.
6
6
 
7
7
  ## Problem
@@ -54,6 +54,6 @@ Three properties travel with the decision:
54
54
 
55
55
  - **A protected goal wall is blunt, and that is accepted.** `scopeIncludesProtected` is true when *any* module in the wall is protected, so a purely `hall-ui` task inside goal 1000111 (`hall-ui` + `kernel` + `lifecycle` + `government`) also floors at `metic`. This is the same semantics the ideas vector has enforced since task 1003066, it fails in the safe direction, and `metic` is the first *trusted working* rank rather than a rare one. The cost is a smaller Xenos queue in mixed-scope goals. The remedy, when it bites, is to narrow the goal's wall — which is the honest fix anyway.
56
56
  - **The newcomer queue is unaffected today** — there are currently **zero** claimable `newcomer_friendly` tasks, in protected-scope goals or otherwise. Worth re-checking if the beginner queue is ever restocked inside a protected-scope goal; a `newcomer_friendly` carve-out was deliberately **not** added, because an exception that lowers a safety floor is exactly the kind of thing that should require a decision rather than exist by default.
57
- - **A one-time backfill**, `migrations/<redacted>.sql`, raises still-claimable (`backlog`/`ready`) `xenos` rows that meet either new condition. It is scoped to claimable work because the floor is a claim-time gate — rewriting shipped or abandoned rows would change no decision that has not already been made. It raises only, and there is no down-migration, for the reason ADR 0084 gave: lowering a safety floor is never automatic.
57
+ - **A one-time backfill**, `migrations/core_236_rank_floor_backfill.sql`, raises still-claimable (`backlog`/`ready`) `xenos` rows that meet either new condition. It is scoped to claimable work because the floor is a claim-time gate — rewriting shipped or abandoned rows would change no decision that has not already been made. It raises only, and there is no down-migration, for the reason ADR 0084 gave: lowering a safety floor is never automatic.
58
58
  - **The protected-module list is spelled once in that migration**, as a point-in-time snapshot. A migration cannot call into JS, and a historical backfill should record the roster as it stood the day it ran. The live authority remains `module-scope-map.scopeIncludesProtected` over `PROTECTED_GLOBS`.
59
59
  - **`goal-create/SKILL.md` now tells authors to set `needs_migration: true`** on any task that will alter the live database. It is the input that floors such a task, and omitting it is how a schema change reaches the open queue.
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-09-09
5
5
  - **Tasks:** [#1003506](https://cloudbongos.com/builders#/task/1003506) (this record and the prose half). Promoted from idea 1000732 (owner, 2026-08-16).
6
6
  - **Goal:** [#1000095](https://cloudbongos.com/builders#/goal/1000095) — Working area 6 (Governor / Builder / Artist / Ideator experience), criterion `wa6-kernel-and-packs`.
7
- - **Builds on:** [ADR 0264](<redacted>.md) §1 (the area and its owner), [ADR 0016](<redacted>.md) (the trust boundary — why the permission prompt was never the gate), [ADR 0104](<redacted>.md) (the existing bypass posture on dev boxes).
7
+ - **Builds on:** [ADR 0264](0264-the-ten-working-areas.md) §1 (the area and its owner), [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) (the trust boundary — why the permission prompt was never the gate), [ADR 0104](0104-trust-gds-api-channel-in-auto-mode.md) (the existing bypass posture on dev boxes).
8
8
  - **Answers** the ideator half of the argument the `artist-mode` criterion answered for artists with the Studio (goal [#1000074](https://cloudbongos.com/builders#/goal/1000074)).
9
9
 
10
10
  ## 1. The decision
@@ -72,7 +72,7 @@ flag wins, for three reasons in increasing order of force:
72
72
  1. **The least technical role is the worst audience for removing confirmations.**
73
73
  Shipping bypass *to ideators specifically* concentrates the one change that
74
74
  removes review on the people least equipped to review.
75
- 2. **The permission prompt was never the gate.** [ADR 0016](<redacted>.md)
75
+ 2. **The permission prompt was never the gate.** [ADR 0016](0016-trust-boundary-server-enforced-permissions.md)
76
76
  is load-bearing: authority is `builders.rank`, checked server-side per request
77
77
  with no caching. The client prompt is a speed bump, not a boundary. The
78
78
  protected-path globs and pre-push hook are what actually bound a sub-Metic
@@ -214,7 +214,7 @@ project's `.claude/settings.json` or `.claude/settings.local.json` *does not tak
214
214
  effect* — the session starts in Manual. There is no channel by which a project
215
215
  repo can ship a bypass default to be mitigated. And the "narrower blast radius"
216
216
  the CAUTION asked to pair it with **already exists**, server-side and
217
- independently of the prompt: rank checked per request ([ADR 0016](<redacted>.md)) plus the
217
+ independently of the prompt: rank checked per request ([ADR 0016](0016-trust-boundary-server-enforced-permissions.md)) plus the
218
218
  sub-Metic protected-path globs. So there was no mitigation left to deliver and
219
219
  nothing to attach it to. Rejecting was the honest reading of the CAUTION, not a
220
220
  reversal of it.
@@ -1,7 +1,7 @@
1
1
  # ADR 0272 — A craft is an identity, not a toolchain: `artist` becomes core
2
2
 
3
3
  **Date:** 2026-09-09
4
- **Context:** BONGOS-V2, goal [1000111](https://cloudbongos.com/builders#/task/1003719) (Working area 7 — Government), task [1003719](https://cloudbongos.com/builders#/task/1003719), re-filed from task 1002908 under [ADR 0265](<redacted>.md). Supersedes the R59 (task 1198) decision that `artist` rides the `art-pipeline` module. Neighbour of [ADR 0098](<redacted>.md) (the publish manifest) and task 1003487 (module-contributed disciplines).
4
+ **Context:** BONGOS-V2, goal [1000111](https://cloudbongos.com/builders#/task/1003719) (Working area 7 — Government), task [1003719](https://cloudbongos.com/builders#/task/1003719), re-filed from task 1002908 under [ADR 0265](0265-work-with-no-goal-and-the-order-the-cut-needs.md). Supersedes the R59 (task 1198) decision that `artist` rides the `art-pipeline` module. Neighbour of [ADR 0098](0098-public-mirror-publish-manifest.md) (the publish manifest) and task 1003487 (module-contributed disciplines).
5
5
  **Status:** Accepted.
6
6
 
7
7
  ## Problem
@@ -25,7 +25,7 @@ The API hands a builder a value and then refuses to accept it back. A builder co
25
25
  enabledDisciplines() → ["engineer","ideator","ui"]
26
26
  ```
27
27
 
28
- So `artist` was offered by **no instance in any configuration** — not a vanilla one, not a full checkout, not production. It is also unreachable by construction on a *published* core: [ADR 0098](<redacted>.md)'s manifest excludes `modules/art-pipeline/` outright for a hard copyright reason (it carries ripped reference maps), so no registry install could ever carry that manifest even if someone wrote one.
28
+ So `artist` was offered by **no instance in any configuration** — not a vanilla one, not a full checkout, not production. It is also unreachable by construction on a *published* core: [ADR 0098](0098-public-mirror-publish-manifest.md)'s manifest excludes `modules/art-pipeline/` outright for a hard copyright reason (it carries ripped reference maps), so no registry install could ever carry that manifest even if someone wrote one.
29
29
 
30
30
  Meanwhile the craft stayed first-class in every other core surface:
31
31
 
@@ -52,7 +52,7 @@ The offered set is now a superset of what the DB CHECK accepts, which is the inv
52
52
 
53
53
  - **Enable `art-pipeline` on cloudbongos.com.** Impossible, not merely undesirable: the module is not in the published package, and `src/modules.js` throws at boot when a config enables an absent module. The owner's intent ("artist should exist here") could not have been delivered this way.
54
54
  - **Write the missing `modules/art-pipeline/module.json`.** It would work only in a full repo checkout and never on a published instance, re-creating the same invisible divergence one layer down.
55
- - **An instance-declared discipline list in `config/modules.json`.** More architecturally tidy on paper — which crafts an instance recognises is host context ([ADR 0062](<redacted>.md) §7) — but it puts the fix in the *instance* repo, leaving the core's own DB CHECK still describing a craft the core cannot offer. It also would not have fixed the vanilla case, where the craft is equally unofferable.
55
+ - **An instance-declared discipline list in `config/modules.json`.** More architecturally tidy on paper — which crafts an instance recognises is host context ([ADR 0062](0062-medusa-instance-model-decoupling.md) §7) — but it puts the fix in the *instance* repo, leaving the core's own DB CHECK still describing a craft the core cannot offer. It also would not have fixed the vanilla case, where the craft is equally unofferable.
56
56
  - **Strip unofferable crafts from stored rows.** This deletes a builder's stated identity to make a validator's mistake look consistent. The owner was asked and chose that artists should exist here.
57
57
 
58
58
  ## Consequences
@@ -61,4 +61,4 @@ The offered set is now a superset of what the DB CHECK accepts, which is the inv
61
61
  - **Existing stored values round-trip again.** No migration or backfill: the rows were always valid per the CHECK: only the validator disagreed. Builders holding `artist` (the owner among them) can save their profile without losing it.
62
62
  - **The copyright exclusion is untouched.** `modules/art-pipeline/` stays out of the published core; nothing here moves art *tooling* anywhere.
63
63
  - **The R59 rationale is formally retired.** Its premise — that the craft exists to serve the game's pixel art — no longer holds: `modules/game/` is likewise excluded from the published core, while the craft remained wired into help requests, task classification and the DB.
64
- - **Not yet visible to users.** cloudbongos.com serves core 1.19.608; this reaches builders only when the instance pin moves (gate 3 of [ADR 0137](<redacted>.md)).
64
+ - **Not yet visible to users.** cloudbongos.com serves core 1.19.608; this reaches builders only when the instance pin moves (gate 3 of [ADR 0137](0137-upstream-publish-policy-manual-owner-gated.md)).
@@ -5,7 +5,7 @@
5
5
  - **Tasks:** [#1003744](https://cloudbongos.com/builders#/task/1003744) (this record and the work).
6
6
  - **Goal:** [#1000111](https://cloudbongos.com/builders#/goal/1000111) — Working area 7, Government; criterion `wa7-government`.
7
7
  - **Decided by:** the owner (Masterqua / `IAMMASTERQUA`, Archon, member of area 7), 2026-09-09 — the placement question in §3.
8
- - **Builds on:** [ADR 0266](<redacted>.md) (the carve that surfaced this gap), [ADR 0175](<redacted>.md) §6 (who governs is configuration), [ADR 0151](<redacted>.md) (permissions as the atom), [ADR 0157](<redacted>.md) (`page.view.government` floors at metic), [ADR 0016](<redacted>.md) (the server enforces; the client decorates).
8
+ - **Builds on:** [ADR 0266](0266-the-board-room-is-its-own-surface-reachable-by-whoever-may-vote.md) (the carve that surfaced this gap), [ADR 0175](0175-the-board-room-full-idea-ratification.md) §6 (who governs is configuration), [ADR 0151](0151-governance-permissions-as-atom-ranks-as-roles.md) (permissions as the atom), [ADR 0157](0157-archon-is-rank-and-identity-only.md) (`page.view.government` floors at metic), [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) (the server enforces; the client decorates).
9
9
 
10
10
  ## 1. Context — a sidebar that could only speak rank
11
11
 
@@ -1,7 +1,7 @@
1
1
  # ADR 0274 — One kernel, three role packs: the always-loaded instructions stop being an engineer's
2
2
 
3
3
  **Date:** 2026-09-10
4
- **Context:** BONGOS-V2, goal [1000095](https://cloudbongos.com/builders#/goal/1000095) (Working area 6 — Governor / Builder / Artist / Ideator experience), criterion `wa6-kernel-and-packs`, task [1002990](https://cloudbongos.com/builders#/task/1002990). Builds on [ADR 0061](<redacted>.md) (the CLAUDE.md context budget), [ADR 0062](<redacted>.md) §7 (the core ↔ host split), [ADR 0272](<redacted>.md) (a craft is an identity, not a toolchain) and [ADR 0271](<redacted>.md) (which predicted this move: *"when declaration lands the contract MOVES into the Ideator pack"*). Its dependency, task 1002989, widened the module map to cover the methodology surfaces so this work had a wall to stand in.
4
+ **Context:** BONGOS-V2, goal [1000095](https://cloudbongos.com/builders#/goal/1000095) (Working area 6 — Governor / Builder / Artist / Ideator experience), criterion `wa6-kernel-and-packs`, task [1002990](https://cloudbongos.com/builders#/task/1002990). Builds on [ADR 0061](<redacted>.md) (the CLAUDE.md context budget), [ADR 0062](0062-medusa-instance-model-decoupling.md) §7 (the core ↔ host split), [ADR 0272](0272-a-craft-is-an-identity-not-a-toolchain.md) (a craft is an identity, not a toolchain) and [ADR 0271](0271-the-ideator-surface-is-two-halves.md) (which predicted this move: *"when declaration lands the contract MOVES into the Ideator pack"*). Its dependency, task 1002989, widened the module map to cover the methodology surfaces so this work had a wall to stand in.
5
5
  **Status:** Accepted.
6
6
 
7
7
  ## Problem
@@ -1,7 +1,7 @@
1
1
  # ADR 0275 — A role's written responsibility has one source, and the pack's copy is generated
2
2
 
3
3
  **Date:** 2026-09-10
4
- **Context:** BONGOS-V2, goal [1000095](https://cloudbongos.com/builders#/goal/1000095) (Working area 6), criterion `wa6-written-responsibilities`, task [1003732](https://cloudbongos.com/builders#/task/1003732). Depends on [ADR 0274](<redacted>.md) (the kernel/pack split, which reserved the seam this fills) and [ADR 0272](<redacted>.md) (`CORE_DISCIPLINES`). The three sentences were fixed by the area owner on 2026-09-08.
4
+ **Context:** BONGOS-V2, goal [1000095](https://cloudbongos.com/builders#/goal/1000095) (Working area 6), criterion `wa6-written-responsibilities`, task [1003732](https://cloudbongos.com/builders#/task/1003732). Depends on [ADR 0274](0274-one-kernel-three-role-packs.md) (the kernel/pack split, which reserved the seam this fills) and [ADR 0272](0272-a-craft-is-an-identity-not-a-toolchain.md) (`CORE_DISCIPLINES`). The three sentences were fixed by the area owner on 2026-09-08.
5
5
  **Status:** Accepted.
6
6
 
7
7
  ## Problem
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Status:** Accepted (the ratchet). The budget question itself is **open and owner-gated** — [blocker #1000139](https://cloudbongos.com/builders#/blocker/1000139), see §5.
4
4
  **Task:** [#1003620](https://cloudbongos.com/builders#/task/1003620) · goal 1000095 — *Working area 6*, criterion `wa6-role-experience`
5
- **Builds on:** [ADR 0274](<redacted>.md) (which measured the listing at 27,022 chars against a ~8,000 budget and sequenced this task behind it), tasks 1003548 and 1003587 (the two earlier trims)
5
+ **Builds on:** [ADR 0274](0274-one-kernel-three-role-packs.md) (which measured the listing at 27,022 chars against a ~8,000 budget and sequenced this task behind it), tasks 1003548 and 1003587 (the two earlier trims)
6
6
 
7
7
  ## 1. The problem, and why trimming keeps not solving it
8
8
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** accepted
4
4
  - **Date:** 2026-09-10
5
5
  - **Task:** [1003507](https://cloudbongos.com/builders#/task/1003507) (goal 1000095 — *Working area 6*, criterion `wa6-role-experience`)
6
- - **Supersedes the "never touch a box with a claude process" rule** in [ADR 0031](<redacted>.md) §5(a); the park/preserve guarantee of tasks 1002726/1002727 is unchanged and is what makes this safe.
6
+ - **Supersedes the "never touch a box with a claude process" rule** in [ADR 0031](0031-cloud-dev-environments-for-builders.md) §5(a); the park/preserve guarantee of tasks 1002726/1002727 is unchanged and is what makes this safe.
7
7
 
8
8
  ## Context
9
9
 
@@ -4,8 +4,8 @@
4
4
  - **Date:** 2026-09-11
5
5
  - **Tasks:** [task 1003525](https://cloudbongos.com/builders#/task/1003525) (this decision + the applicant's poll), with the apply write itself in [task 1003624](https://cloudbongos.com/builders#/task/1003624).
6
6
  - **Goal:** [#1000106](https://cloudbongos.com/builders#/goal/1000106) — Working area 1, Project creation.
7
- - **Decider:** the owner, 2026-09-11. The question was raised as an owner decision by task 1003525's own body and by [ADR 0192](<redacted>.md) §3, and is answered here rather than by whoever held the task.
8
- - **Extends, does not amend:** [ADR 0192](<redacted>.md) (the member door and its exempt list), [ADR 0194](<redacted>.md) (the join door), [ADR 0209](<redacted>.md) (one budget across the two account-existence reads; the response-collapse question, still open).
7
+ - **Decider:** the owner, 2026-09-11. The question was raised as an owner decision by task 1003525's own body and by [ADR 0192](0192-platform-visibility-member-door.md) §3, and is answered here rather than by whoever held the task.
8
+ - **Extends, does not amend:** [ADR 0192](0192-platform-visibility-member-door.md) (the member door and its exempt list), [ADR 0194](0194-joinability-one-door-decision.md) (the join door), [ADR 0209](0209-one-budget-for-the-account-existence-oracle.md) (one budget across the two account-existence reads; the response-collapse question, still open).
9
9
 
10
10
  ## Context
11
11
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** accepted
4
4
  - **Date:** 2026-09-11
5
5
  - **Task:** [task 1002884](https://cloudbongos.com/builders#/task/1002884) (BONGOS-V2, goal 1000090 — *Working area 4, Bongos Core distribution*), from idea 1000682
6
- - **Extends** the mandatory post-restart health check of task 1002222 (audit H9, finding F5) and the auto-rollback of task 2149, whose unattended policy is [ADR 0136](<redacted>.md) §3. The health check stays; this says why it was never sufficient on its own.
6
+ - **Extends** the mandatory post-restart health check of task 1002222 (audit H9, finding F5) and the auto-rollback of task 2149, whose unattended policy is [ADR 0136](0136-update-channel-subscription-policy.md) §3. The health check stays; this says why it was never sufficient on its own.
7
7
 
8
8
  ## Context
9
9
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** accepted
4
4
  - **Date:** 2026-09-12
5
5
  - **Task:** [1003843](https://cloudbongos.com/builders#/task/1003843) (goal 1000106) — from [task 1003521](https://cloudbongos.com/builders#/task/1003521), which built co-tenant mode into `go-live.js` and deliberately left this caller alone.
6
- - **Adjacent:** [ADR 0279](<redacted>.md) (why this lane prefers `go-live.js` at all) · [ADR 0136](<redacted>.md) (the subscription policy core).
6
+ - **Adjacent:** [ADR 0279](0279-an-upgrade-is-proven-by-the-served-version-not-the-health-check.md) (why this lane prefers `go-live.js` at all) · [ADR 0136](0136-update-channel-subscription-policy.md) (the subscription policy core).
7
7
 
8
8
  ## Context
9
9
 
@@ -4,11 +4,11 @@
4
4
 
5
5
  ## Context
6
6
 
7
- [ADR 0111](<redacted>.md) made instance standup automatic and [ADR 0128](<redacted>.md) settled how the *runner* escalates to perform it. Neither settled who the *instance* is once it is running, and the answer was: everybody is the same person.
7
+ [ADR 0111](0111-instance-hosting-provisioning-module.md) made instance standup automatic and [ADR 0128](0128-provisioning-runner-privilege-and-db-auth-model.md) settled how the *runner* escalates to perform it. Neither settled who the *instance* is once it is running, and the answer was: everybody is the same person.
8
8
 
9
9
  `serviceUnit` hardcoded `User=lars` / `Group=lars`, and **co-tenant is the default shape** — so on a shared box every instance's Node process ran under one uid. Two consequences, both reachable by any code an instance runs, neither of them a bug in any route:
10
10
 
11
- - **Sibling environments.** A unix user may read `/proc/<pid>/environ` of its own processes. Every instance's `EnvironmentFile` carries `GITHUB_APP_PRIVATE_KEY`, `<PREFIX>_HUB_CLIENT_SECRET` and its OAuth client secret ([ADR 0141](<redacted>.md) §4, [ADR 0133](<redacted>.md)). One uid meant every instance could read every sibling's.
11
+ - **Sibling environments.** A unix user may read `/proc/<pid>/environ` of its own processes. Every instance's `EnvironmentFile` carries `GITHUB_APP_PRIVATE_KEY`, `<PREFIX>_HUB_CLIENT_SECRET` and its OAuth client secret ([ADR 0141](<redacted>.md) §4, [ADR 0133](0133-github-app-manifest-onboarding-signin.md)). One uid meant every instance could read every sibling's.
12
12
  - **Sibling databases.** `src/bongos/pool.js` connected by **passwordless peer auth** over the local socket, with `PGDATABASE` supplied as a systemd `Environment=` default. Peer auth answers "which unix user are you", so any code running as `lars` could open a pool against **any** database on the box by naming it — including the control plane's own `builders` and `builder_sessions`.
13
13
 
14
14
  The per-instance `web.env` (`chmod 600`) and the per-instance database were already correct. They were sound walls with one door, and every instance had the key.