@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
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-07-29
5
5
  - **Deciders:** Lars (owner / Archon), Claude
6
6
 
7
- **Builds on / amends:** [ADR 0086](<redacted>.md) (the goal tier — this ADR extends its owner/manager authority to the goal's criteria), [ADR 0090](<redacted>.md) (Metic task authoring), [ADR 0106](<redacted>.md) (owner vs manager), [ADR 0105](<redacted>.md) (why this route exists at all), [ADR 0016](<redacted>.md) (server-enforced rank boundary — unchanged), [ADR 0151](<redacted>.md) (permissions-as-atom — and see §5, which corrects one of its rows).
7
+ **Builds on / amends:** [ADR 0086](0086-goal-scoped-work-hierarchy.md) (the goal tier — this ADR extends its owner/manager authority to the goal's criteria), [ADR 0090](0090-metic-task-authoring.md) (Metic task authoring), [ADR 0106](0106-goal-owner-manager-authority.md) (owner vs manager), [ADR 0105](0105-instance-seed-migrations-out-of-core.md) (why this route exists at all), [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) (server-enforced rank boundary — unchanged), [ADR 0151](0151-governance-permissions-as-atom-ranks-as-roles.md) (permissions-as-atom — and see §5, which corrects one of its rows).
8
8
 
9
9
  **Track:** `internal` (GDS / methodology). Task [1002538](https://cloudbongos.com/builders#/task/1002538), under the **Builder experience** goal [1000025](https://cloudbongos.com/builders#/goal/1000025).
10
10
 
@@ -12,7 +12,7 @@
12
12
 
13
13
  ## Context
14
14
 
15
- The Metic planning loop is complete except in one place. A Metic may create a goal ([ADR 0086](<redacted>.md): `POST /goals` is `requireRank('metic','archon')`), author the tasks under it ([ADR 0090](<redacted>.md)), wire their dependencies and criterion links, and **confirm** a criterion when the work lands ([ADR 0086](<redacted>.md) §6 re-ranked `POST /done-when/:criterionId/satisfy` to Metic+ "so the planner — not only the Archon — closes the criterion/goal loop").
15
+ The Metic planning loop is complete except in one place. A Metic may create a goal ([ADR 0086](0086-goal-scoped-work-hierarchy.md): `POST /goals` is `requireRank('metic','archon')`), author the tasks under it ([ADR 0090](0090-metic-task-authoring.md)), wire their dependencies and criterion links, and **confirm** a criterion when the work lands ([ADR 0086](0086-goal-scoped-work-hierarchy.md) §6 re-ranked `POST /done-when/:criterionId/satisfy` to Metic+ "so the planner — not only the Archon — closes the criterion/goal loop").
16
16
 
17
17
  But they could not **create** the criteria those tasks are measured against: `POST /versions/:id/done-when` was `requireRank('archon')`. So a Metic could stand up a goal, fill it with work, and close its criteria out — but had to ask an Archon to write them in the first place. That is the one Archon-shaped hole in an otherwise Metic-complete loop, and it is what blocked `/goal-create` ([1002540](https://cloudbongos.com/builders#/task/1002540)) from being a skill a Metic can actually run end to end.
18
18
 
@@ -27,7 +27,7 @@ The tempting move is symmetry: a Metic may confirm a criterion, so let them crea
27
27
 
28
28
  That is operationally the same effect as `POST /done-when/:criterionId/unsatisfy` — which is Archon-only, and which `docs/governance/<redacted>.md` lists in the same Archon "Lifecycle disposition" line as this route. And there is **no DELETE route for a criterion**: descoping is direct SQL under a claim. A mistake is not correctable through the API by anyone.
29
29
 
30
- **The create path also had no ownership check whatsoever.** Its entire authorization surface was `requireBuilder` → `requireRank` → version exists → (if `goal_id` given) the goal belongs to that version. That last one is referential integrity, not authority. Every *other* goal-touching write in the module runs `authorizeGoalManagement` (owner | manager | Archon) or `authorizeGoalTaskCreate` (membership + scope wall). A flat re-rank would therefore have let any Metic attach a permanent, un-deletable criterion to **any goal on any version**, including goals they had never joined and private goals ([ADR 0112](<redacted>.md)) — published to the anonymous status feed.
30
+ **The create path also had no ownership check whatsoever.** Its entire authorization surface was `requireBuilder` → `requireRank` → version exists → (if `goal_id` given) the goal belongs to that version. That last one is referential integrity, not authority. Every *other* goal-touching write in the module runs `authorizeGoalManagement` (owner | manager | Archon) or `authorizeGoalTaskCreate` (membership + scope wall). A flat re-rank would therefore have let any Metic attach a permanent, un-deletable criterion to **any goal on any version**, including goals they had never joined and private goals ([ADR 0112](0112-private-goals-invitations-join-requests.md)) — published to the anonymous status feed.
31
31
 
32
32
  `docs/canonical-permissions.md` named "set version scope (`done-when`)" as Archon-exclusive. A flat re-rank contradicts that flatly; the decision below narrows it instead.
33
33
 
@@ -52,7 +52,7 @@ The authority predicate is `isGoalOwnerOrManager` — the **same** owner-or-mana
52
52
 
53
53
  Ordering matters here in a way it does not for the sibling goal routes. Those are reached by callers who already know the goal exists (they are looking at it); this one takes an arbitrary integer `goal_id` from any Metic.
54
54
 
55
- If the refusals were distinguishable — `400 bad_goal_id` (no such goal) vs `403 not_owner_or_manager` (exists, not yours) vs `409 goal_not_open` (exists, settled) — the route would be an **existence oracle**: a Metic could enumerate `goal_id`s and learn which exist on a version, including **private goals** ([ADR 0112](<redacted>.md)). That surface did not exist while the route was Archon-only, because an Archon can already read every goal. Re-ranking it creates the surface, so the re-rank has to close it.
55
+ If the refusals were distinguishable — `400 bad_goal_id` (no such goal) vs `403 not_owner_or_manager` (exists, not yours) vs `409 goal_not_open` (exists, settled) — the route would be an **existence oracle**: a Metic could enumerate `goal_id`s and learn which exist on a version, including **private goals** ([ADR 0112](0112-private-goals-invitations-join-requests.md)). That surface did not exist while the route was Archon-only, because an Archon can already read every goal. Re-ranking it creates the surface, so the re-rank has to close it.
56
56
 
57
57
  So the ownership test runs **ahead of** both state checks, and a caller who fails it gets byte-identical `400 bad_goal_id` to one naming a goal that does not exist — same code, same message, same envelope, rendered by the same `badGoalId()` helper the genuine-absence branch uses. Only someone who already holds the goal learns anything further about it. This mirrors the O1 no-leak ordering the goal abuse matrix already pins (`not_a_member` is returned before any scope hint).
58
58
 
@@ -71,7 +71,7 @@ Creating a criterion inside a goal you own is not scope-*truth* authorship in th
71
71
 
72
72
  ## §5 — A correction to ADR 0151's catalog
73
73
 
74
- [ADR 0151](<redacted>.md)'s "floor `metic` today" table bundles three routes into one row:
74
+ [ADR 0151](0151-governance-permissions-as-atom-ranks-as-roles.md)'s "floor `metic` today" table bundles three routes into one row:
75
75
 
76
76
  > `criterion.satisfy` / `criterion.review` | `POST /done-when/:id/satisfy`, `GET /done-when/pending-review`, `POST /versions/:id/done-when`
77
77
 
@@ -81,6 +81,6 @@ This ADR makes the row's *outcome* correct but for a different reason, so the ro
81
81
 
82
82
  ## Alternatives considered
83
83
 
84
- - **Leave it Archon; use the proposal queue.** Rejected: it keeps the Archon in the loop for a Metic describing a goal they own, which is the janitorial-delegation problem [ADR 0152](<redacted>.md) already named. The queue survives for the cases that genuinely need adjudication.
84
+ - **Leave it Archon; use the proposal queue.** Rejected: it keeps the Archon in the loop for a Metic describing a goal they own, which is the janitorial-delegation problem [ADR 0152](0152-metic-task-abandonment.md) already named. The queue survives for the cases that genuinely need adjudication.
85
85
  - **Flat re-rank to Metic+.** Rejected — §Context.
86
- - **Add a DELETE for criteria so the ratchet has an undo** (the [ADR 0152](<redacted>.md) "pair the grant with its inverse" pattern). Deferred, not rejected: it is the honest completion of "manage," and it would neutralise the no-undo objection directly. It is a new capability nobody has today — including Archons — and deleting a criterion with linked `task_criteria` rows needs its own cascade decision. Worth its own task.
86
+ - **Add a DELETE for criteria so the ratchet has an undo** (the [ADR 0152](0152-metic-task-abandonment.md) "pair the grant with its inverse" pattern). Deferred, not rejected: it is the honest completion of "manage," and it would neutralise the no-undo objection directly. It is a new capability nobody has today — including Archons — and deleting a criterion with linked `task_criteria` rows needs its own cascade decision. Worth its own task.
@@ -3,8 +3,8 @@
3
3
  - **Status:** Accepted — built in task [#1002561](https://example.com/builders#/task/1002561).
4
4
  - **Date:** 2026-08-04
5
5
  - **Deciders:** the owner chose the credential approach after being shown the trade-off; Claude diagnosed + built.
6
- - **Amends:** [ADR 0143](<redacted>.md) §1 (its Decision 1 — scope choice). 0143 otherwise stands unchanged: opt-in per sign-in, lazy consent, encrypted short-TTL token store, personal repos only, 503-degrade. Per 0143's own append-only rule, this is a new ADR, not an edit.
7
- - **Related:** [ADR 0121](<redacted>.md) (greenfield vs brownfield onboarding).
6
+ - **Amends:** [ADR 0143](0143-onboarding-repo-picker-oauth-scope.md) §1 (its Decision 1 — scope choice). 0143 otherwise stands unchanged: opt-in per sign-in, lazy consent, encrypted short-TTL token store, personal repos only, 503-degrade. Per 0143's own append-only rule, this is a new ADR, not an edit.
7
+ - **Related:** [ADR 0121](0121-greenfield-vs-brownfield-onboarding-adopt-existing-repo.md) (greenfield vs brownfield onboarding).
8
8
 
9
9
  ## Context
10
10
 
@@ -56,7 +56,7 @@ The chosen fix costs one boolean-shaped column and keeps both behaviours correct
56
56
 
57
57
  ## Consequences
58
58
 
59
- - **New core column.** `builders.display_name_source`. Core, not `modules/builder-settings/migrations/`: the column sits on the core `builders` table and the guard that reads it lives in core `db-kernel.js` on the auth path. A module migration may only touch its own namespaced objects ([ADR 0083](<redacted>.md) §Decision #5), and core schema must not depend on whether a module is enabled. Same placement as the other `builders`-table preference columns (037, 075, 119, 164).
59
+ - **New core column.** `builders.display_name_source`. Core, not `modules/builder-settings/migrations/`: the column sits on the core `builders` table and the guard that reads it lives in core `db-kernel.js` on the auth path. A module migration may only touch its own namespaced objects ([ADR 0083](0083-modular-architecture-strangler-build-plan.md) §Decision #5), and core schema must not depend on whether a module is enabled. Same placement as the other `builders`-table preference columns (037, 075, 119, 164).
60
60
  - **Not surfaced in the API.** `GET /me/display-name` and `docs/api/openapi.json` are unchanged. The flag is internal persistence state; no UI copy branches on whether a name is GitHub-derived, so exposing it would be surface with no consumer.
61
61
  - **The federated hub needs no matching guard.** `modules/platform-identity/platform-identity.js`'s `upsertAccount` does the same unconditional re-sync on `platform_identity_accounts`, and its `display_name` reaches an instance through `completeIdpFlow`. It does not need changing: the `CASE` above runs regardless of what `EXCLUDED` carries, so an instance's `builders.display_name` is protected no matter which login path supplied the value. And `platform_identity_accounts` is identity-only with no self-service editor — there is no user-set value there to protect.
62
62
  - **Regression-tested where it broke.** `tests/display_name.mjs` previously covered only the pure validator, which is exactly why this shipped: the half that was correct was the half under test. It now also reads the real SQL both halves emit and asserts the conflict branch's behaviour — a renamed builder keeps their name against a different incoming GitHub name, and a never-renamed builder still picks up a GitHub rename.
@@ -4,19 +4,19 @@
4
4
  - **Date:** 2026-08-05
5
5
  - **Deciders:** Lars (Archon), Claude
6
6
 
7
- **Builds on / amends:** [ADR 0016](<redacted>.md) (server-enforced trust boundary — **unchanged**, this ADR moves floors inside it, never the enforcement point), [ADR 0151](<redacted>.md) (permissions-as-atom — this ADR is only possible because the floor is declared once, in `catalog.js`), [ADR 0090](<redacted>.md) / [ADR 0152](<redacted>.md) (the two earlier one-power delegations this generalises), [ADR 0154](<redacted>.md) (**amends** — its "unsatisfy stays Archon" carve-out is superseded), [ADR 0086](<redacted>.md) (protected-scope goals — **unchanged**, `goal.scope.manage` stays Archon).
7
+ **Builds on / amends:** [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) (server-enforced trust boundary — **unchanged**, this ADR moves floors inside it, never the enforcement point), [ADR 0151](0151-governance-permissions-as-atom-ranks-as-roles.md) (permissions-as-atom — this ADR is only possible because the floor is declared once, in `catalog.js`), [ADR 0090](0090-metic-task-authoring.md) / [ADR 0152](0152-metic-task-abandonment.md) (the two earlier one-power delegations this generalises), [ADR 0154](0154-goal-owner-criterion-authoring.md) (**amends** — its "unsatisfy stays Archon" carve-out is superseded), [ADR 0086](0086-goal-scoped-work-hierarchy.md) (protected-scope goals — **unchanged**, `goal.scope.manage` stays Archon).
8
8
 
9
9
  **Track:** `internal` (GDS / methodology). Task [1002584](https://cloudbongos.com/builders#/task/1002584).
10
10
 
11
- > **Amended by [ADR 0250](<redacted>.md) §6 for exactly one key** (2026-09-07, task [1003608](https://cloudbongos.com/builders#/task/1003608)): **`version.create` returns to the Archon floor.** The argument below — *authoring delegates, disposition does not* — was right about what a version **was**. ADR 0250 D1 makes the version boundary the scope gate, and once it does, cutting a new version is no longer authoring: it is the way **around** the gate, because a builder refused a goal on a building version need only cut a fresh version to put it somewhere. Create therefore joins `version.close` as a disposition over scope. **Every other key in this ADR stands.**
11
+ > **Amended by [ADR 0250](0250-strict-versioning-the-version-boundary-is-the-scope-gate.md) §6 for exactly one key** (2026-09-07, task [1003608](https://cloudbongos.com/builders#/task/1003608)): **`version.create` returns to the Archon floor.** The argument below — *authoring delegates, disposition does not* — was right about what a version **was**. ADR 0250 D1 makes the version boundary the scope gate, and once it does, cutting a new version is no longer authoring: it is the way **around** the gate, because a builder refused a goal on a building version need only cut a fresh version to put it somewhere. Create therefore joins `version.close` as a disposition over scope. **Every other key in this ADR stands.**
12
12
 
13
13
  ---
14
14
 
15
15
  ## Context
16
16
 
17
- The Archon rank had accumulated 50 route gates. Almost none of them were about *authority*; they were about **administration** — reading the roster, listing dev boxes, viewing the audit log, adjudicating a vulnerability report, tearing down an idle droplet, reordering a queue, ratifying an idea. Each arrived Archon-gated for the same defensible reason: [ADR 0016](<redacted>.md) sets the default posture for any new privileged route to `requireRank('archon')` until a lower rank is explicitly granted — fail closed. Nothing ever came back to lower them, so "fail closed" quietly became "the owner is the only operator."
17
+ The Archon rank had accumulated 50 route gates. Almost none of them were about *authority*; they were about **administration** — reading the roster, listing dev boxes, viewing the audit log, adjudicating a vulnerability report, tearing down an idle droplet, reordering a queue, ratifying an idea. Each arrived Archon-gated for the same defensible reason: [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) sets the default posture for any new privileged route to `requireRank('archon')` until a lower rank is explicitly granted — fail closed. Nothing ever came back to lower them, so "fail closed" quietly became "the owner is the only operator."
18
18
 
19
- Two earlier ADRs had already delegated one power each on the same reasoning — [ADR 0090](<redacted>.md) (a rank trusted to *triage* ideas is trusted to *seed* the work they become) and [ADR 0152](<redacted>.md) (a rank trusted to author work is trusted to retire it). This ADR generalises that argument instead of relitigating it one route at a time.
19
+ Two earlier ADRs had already delegated one power each on the same reasoning — [ADR 0090](0090-metic-task-authoring.md) (a rank trusted to *triage* ideas is trusted to *seed* the work they become) and [ADR 0152](0152-metic-task-abandonment.md) (a rank trusted to author work is trusted to retire it). This ADR generalises that argument instead of relitigating it one route at a time.
20
20
 
21
21
  Lars's directive (2026-08-05): **"Move all of these to metic, and make archon just responsible for rank and identity."**
22
22
 
@@ -40,7 +40,7 @@ Once every gate reads `requirePermission('<atom>')`, the rank floor is declared
40
40
  | `gate_approval.decide` | escalation key (below) |
41
41
  | `goal.scope.manage` | escalation key (below) |
42
42
  | `governance.manage` | escalation key (below) |
43
- | `deploy.push_main`, `path.protected.modify`, `infra.ssh` | substrate-enforced (pre-push hook, `main-audit.js`), outside the HTTP boundary — [ADR 0043](<redacted>.md). Not reachable to delegate here. |
43
+ | `deploy.push_main`, `path.protected.modify`, `infra.ssh` | substrate-enforced (pre-push hook, `main-audit.js`), outside the HTTP boundary — [ADR 0043](0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md). Not reachable to delegate here. |
44
44
  | `version.close` | see §3 |
45
45
 
46
46
  ### 2. The four escalation keys, and why a literal reading of the directive was refused
@@ -48,7 +48,7 @@ Once every gate reads `requirePermission('<atom>')`, the rank floor is declared
48
48
  `builder.rank.set` staying Archon is **not sufficient** to keep "only the Archon sets rank" true. Four other atoms form a chain that ends in self-promotion, and every link was Archon-gated, which is why the chain was closed:
49
49
 
50
50
  1. Create a goal scoped to a **protected** module — the permission core itself (`goal.scope.manage`).
51
- 2. Claim a task in it. **Already allowed**: `PROTECTED_GLOBS` floors at *metic*, by [ADR 0043](<redacted>.md)'s design.
51
+ 2. Claim a task in it. **Already allowed**: `PROTECTED_GLOBS` floors at *metic*, by [ADR 0043](0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md)'s design.
52
52
  3. Write code deleting the rank check, then confirm past the failed grade (`task.confirm.grade_bypass`).
53
53
  4. Approve your own red CI deploy gate (`gate_approval.decide`) → it lands on `main`.
54
54
 
@@ -82,14 +82,14 @@ Left alone, a Metic would open `/gate` and get a page rendering nothing but a 40
82
82
  **Two consequences worth a second look** (both flagged to the owner, neither blocking):
83
83
 
84
84
  1. **The exploit cookbook widened.** `security.report.adjudicate` guards `/security/docs` — the engagement-report store holding attacker-usable exploit detail — so that is now Metic-readable. Every other delegated atom widens who may *act*; this one widens who may *read*. If unwanted, the fix mirrors §4: split a `security.docs.read` at archon and let adjudication delegate. Recorded in `tests/security_docs.mjs` at the assertion that used to guard it.
85
- 2. **The backward ratchet delegated.** [ADR 0154](<redacted>.md) made "unsatisfy stays Archon" the explicit safety argument for delegating criterion *create* — the forward ratchet moved, the backward one did not. `criterion.unsatisfy` is neither rank/identity nor an escalation key, so under this directive it moved, superseding that carve-out. What still holds is the part that never depended on rank: satisfy and unsatisfy remain **separate atoms**, so confirming a criterion never confers the power to un-confirm one.
85
+ 2. **The backward ratchet delegated.** [ADR 0154](0154-goal-owner-criterion-authoring.md) made "unsatisfy stays Archon" the explicit safety argument for delegating criterion *create* — the forward ratchet moved, the backward one did not. `criterion.unsatisfy` is neither rank/identity nor an escalation key, so under this directive it moved, superseding that carve-out. What still holds is the part that never depended on rank: satisfy and unsatisfy remain **separate atoms**, so confirming a criterion never confers the power to un-confirm one.
86
86
 
87
- **A floor change needs a migration.** `governance_002`'s compat seed is run-once, so an edited `floor:` never reaches an already-migrated database. [`<redacted>.sql`](../../modules/government/migrations/<redacted>.sql) grants the 20 to `metic` (+ `gate_approval.read` to both, since it is new). Lowering a floor is additive, so `tests/governance_seed.mjs`'s union model handles it and revokes nothing.
87
+ **A floor change needs a migration.** `governance_002`'s compat seed is run-once, so an edited `floor:` never reaches an already-migrated database. [`governance_007_delegate_archon_ops_to_metic.sql`](../../modules/government/migrations/governance_007_delegate_archon_ops_to_metic.sql) grants the 20 to `metic` (+ `gate_approval.read` to both, since it is new). Lowering a floor is additive, so `tests/governance_seed.mjs`'s union model handles it and revokes nothing.
88
88
 
89
89
  **`requireArchonPage` is now a misnomer** — it resolves `page.view.governance`, floor metic. Renaming it touches serve-internal, auth, and several test files; left deliberately to keep this diff small in authz code, and filed separately. The hall nav group was relabelled **Archon → Governance**, because a header reading "Archon" over items a Metic can open misdescribes the ladder to exactly the builders still learning it.
90
90
 
91
- > **Resolved (2026-08-05, [#1002588](https://cloudbongos.com/builders#/task/1002588)).** That follow-up landed: the gate is now `requireGovernancePage`. It is a pure rename — same `page.view.governance` permission, same `deniedTo`, same audience. References to `requireArchonPage` in this ADR and in ADRs [0036](<redacted>.md) / [0058](<redacted>.md) / [0151](<redacted>.md) are left as written, since they describe what was true at the time; `src/bongos/auth.js` carries a comment naming the old spelling so a grep from any of them lands on the trail.
91
+ > **Resolved (2026-08-05, [#1002588](https://cloudbongos.com/builders#/task/1002588)).** That follow-up landed: the gate is now `requireGovernancePage`. It is a pure rename — same `page.view.governance` permission, same `deniedTo`, same audience. References to `requireArchonPage` in this ADR and in ADRs [0036](0036-builders-subdomain-and-ui-reorg.md) / [0058](0058-automatic-gate-surface-gatekeeper.md) / [0151](0151-governance-permissions-as-atom-ranks-as-roles.md) are left as written, since they describe what was true at the time; `src/bongos/auth.js` carries a comment naming the old spelling so a grep from any of them lands on the trail.
92
92
 
93
- **What did not change.** [ADR 0016](<redacted>.md) end to end: authority is still resolved server-side, per request, uncached, from `builders.rank` via the seeded rank-roles. A builder editing their checkout still cannot grant themselves anything. This ADR moves floors *inside* that boundary; it does not touch the boundary.
93
+ **What did not change.** [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) end to end: authority is still resolved server-side, per request, uncached, from `builders.rank` via the seeded rank-roles. A builder editing their checkout still cannot grant themselves anything. This ADR moves floors *inside* that boundary; it does not touch the boundary.
94
94
 
95
95
  **The ADR 0016 default posture still stands** for *new* routes: start at `requireRank('archon')` / an archon-floored atom and delegate deliberately. This ADR is that deliberate step taken in bulk for the accumulated backlog — not a licence to skip it.
@@ -6,7 +6,7 @@
6
6
  - **Track:** `internal` (GDS / methodology)
7
7
  - **Task:** [1002598](https://cloudbongos.com/builders#/task/1002598), under goal [1000024](https://cloudbongos.com/builders#/goal/1000024) (Build-pipeline integrity)
8
8
 
9
- **Builds on:** [ADR 0016](<redacted>.md) (the server-enforced trust boundary — **unchanged**), [ADR 0043](<redacted>.md) (the out-of-band substrate), [ADR 0151](<redacted>.md) (permissions as atoms), [ADR 0157](<redacted>.md) (the delegation this taxonomy generalises the *reasoning* of).
9
+ **Builds on:** [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) (the server-enforced trust boundary — **unchanged**), [ADR 0043](0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md) (the out-of-band substrate), [ADR 0151](0151-governance-permissions-as-atom-ranks-as-roles.md) (permissions as atoms), [ADR 0157](0157-archon-is-rank-and-identity-only.md) (the delegation this taxonomy generalises the *reasoning* of).
10
10
 
11
11
  **Produces:** [`docs/governance/<redacted>.md`](../governance/<redacted>.md).
12
12
 
@@ -6,7 +6,7 @@
6
6
  - **Track:** `internal` (build pipeline / governance)
7
7
  - **Task:** [1002611](https://cloudbongos.com/builders#/task/1002611), under goal [1000024](https://cloudbongos.com/builders#/goal/1000024) (Build-pipeline integrity)
8
8
 
9
- **Builds on:** [ADR 0042](<redacted>.md) (CI auto-merge; described Code-Owner review as a live control), [ADR 0058](<redacted>.md) (the gate-review phase plan — **unchanged**; its workflows remain planned), [ADR 0158](<redacted>.md) (the verdict taxonomy; findings D-12 and G-5 in the [choke-point map](../governance/<redacted>.md)).
9
+ **Builds on:** [ADR 0042](0042-builder-self-deploy-ci-auto-merge.md) (CI auto-merge; described Code-Owner review as a live control), [ADR 0058](0058-automatic-gate-surface-gatekeeper.md) (the gate-review phase plan — **unchanged**; its workflows remain planned), [ADR 0158](0158-choke-point-verdict-taxonomy.md) (the verdict taxonomy; findings D-12 and G-5 in the [choke-point map](../governance/<redacted>.md)).
10
10
 
11
11
  ---
12
12
 
@@ -6,7 +6,7 @@
6
6
  - **Track:** `internal` (build pipeline / governance)
7
7
  - **Task:** [1002612](https://cloudbongos.com/builders#/task/1002612), under goal [1000024](https://cloudbongos.com/builders#/goal/1000024) (Build-pipeline integrity)
8
8
 
9
- **Builds on:** [ADR 0043](<redacted>.md) (designates the post-push audit the authoritative layer — **unchanged**), [ADR 0159](<redacted>.md) (the merge-gate reconciliation this is the detective-lane companion to), [ADR 0158](<redacted>.md) (findings G-3, G-8, S-1).
9
+ **Builds on:** [ADR 0043](0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md) (designates the post-push audit the authoritative layer — **unchanged**), [ADR 0159](0159-merge-gate-reconciliation.md) (the merge-gate reconciliation this is the detective-lane companion to), [ADR 0158](0158-choke-point-verdict-taxonomy.md) (findings G-3, G-8, S-1).
10
10
 
11
11
  ---
12
12
 
@@ -4,8 +4,8 @@
4
4
  - **Date:** 2026-08-08
5
5
  - **Deciders:** the owner (Archon), Claude. The owner chose this directly after reviewing the pipeline end-to-end: "any merge can publish, we can add in more complexity later."
6
6
  - **Task:** task 1002620 (BONGOS-V1, goal 1000024 — build-pipeline integrity)
7
- - **Supersedes:** [ADR 0137](<redacted>.md) (manual owner-gated publish)
8
- - **Builds on:** [ADR 0134](<redacted>.md) (private-first npm), [ADR 0136](<redacted>.md) (channel policy), [ADR 0159](<redacted>.md) (the required `unit` check)
7
+ - **Supersedes:** [ADR 0137](0137-upstream-publish-policy-manual-owner-gated.md) (manual owner-gated publish)
8
+ - **Builds on:** [ADR 0134](0134-private-first-npm-distribution.md) (private-first npm), [ADR 0136](0136-update-channel-subscription-policy.md) (channel policy), [ADR 0159](0159-merge-gate-reconciliation.md) (the required `unit` check)
9
9
 
10
10
  ## Context
11
11
 
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-08-11
5
5
  - **Deciders:** Claude (jaxri session), under the bug-wave mandate
6
6
 
7
- **Track:** `internal` (GDS / builder experience). Task [1002643](https://cloudbongos.com/builders#/task/1002643), from idea 1000659. Extends [ADR 0156](<redacted>.md).
7
+ **Track:** `internal` (GDS / builder experience). Task [1002643](https://cloudbongos.com/builders#/task/1002643), from idea 1000659. Extends [ADR 0156](0156-user-set-display-name-wins.md).
8
8
 
9
9
  ---
10
10
 
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-08-11
5
5
  - **Deciders:** Claude (jaxri session), under the bug-wave mandate — flagged owner-adjacent; the ADR is the revisit point
6
6
 
7
- **Track:** `internal` (provisioning / trust boundary). Task [1002641](https://cloudbongos.com/builders#/task/1002641), from idea 1000655. Relates to [ADR 0043](<redacted>.md) (Layer 1), [ADR 0055](<redacted>.md) (server-mediated publish), [ADR 0162](<redacted>.md) (CI-only gates).
7
+ **Track:** `internal` (provisioning / trust boundary). Task [1002641](https://cloudbongos.com/builders#/task/1002641), from idea 1000655. Relates to [ADR 0043](0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md) (Layer 1), [ADR 0055](0055-server-mediated-branch-publish.md) (server-mediated publish), [ADR 0162](0162-review-gates-retired-rank-consistent-ci-only.md) (CI-only gates).
8
8
 
9
9
  ---
10
10
 
@@ -4,8 +4,8 @@
4
4
  - **Date:** 2026-08-11
5
5
  - **Track:** internal
6
6
  - **Task:** [#1001773](https://cloudbongos.com/builders#/task/1001773) (BONGOS-V1) — "Module upstreaming: maintenance & deprecation policy for accepted modules".
7
- - **Implements:** [ADR 0107](<redacted>.md) §7, which named the problem and deferred the mechanics to a follow-up. This is that follow-up.
8
- - **Builds on:** [ADR 0083](<redacted>.md) (the manifest + loader + `coreVersion` check), [ADR 0107](<redacted>.md) §§1/4/6 (submit → review → accept, the AGPL pre-check, default-off acceptance), [ADR 0135](<redacted>.md) (where submissions queue).
7
+ - **Implements:** [ADR 0107](0107-module-upstreaming-contribution-to-core-catalog.md) §7, which named the problem and deferred the mechanics to a follow-up. This is that follow-up.
8
+ - **Builds on:** [ADR 0083](0083-modular-architecture-strangler-build-plan.md) (the manifest + loader + `coreVersion` check), [ADR 0107](0107-module-upstreaming-contribution-to-core-catalog.md) §§1/4/6 (submit → review → accept, the AGPL pre-check, default-off acceptance), [ADR 0135](0135-module-upstream-submission-interim-queue.md) (where submissions queue).
9
9
 
10
10
  ## Context
11
11
 
@@ -88,4 +88,4 @@ The 17 modules that ship inside `@bongos/core` are core-maintained by definition
88
88
  - **`bongos upgrade` gets noisier, on purpose.** An instance carrying rotted disabled modules now sees a line per module per bump. That is the intended pressure: the cure is to fix, deprecate, or delete the module, and each of those makes the line go away honestly.
89
89
  - **Submitting a module upstream now requires one more field.** `bongos module new` scaffolds `{"status": "maintained"}` (the author is the maintainer — the honest default), so the friction lands only on modules scaffolded before this ADR.
90
90
  - **`orphaned` is now sayable, which means it will be said.** Expect the catalog to acquire visibly-unowned entries. That is the policy working: a labelled orphan is a candidate for adoption or deletion, an unlabelled one is a trap.
91
- - **`removeAfter` is declarative, not enforced.** Nothing deletes a module automatically — `expired` only reports that the core has advanced past the declared date. Automatic removal would need the review/accept flow to own module deletion, which is [ADR 0107](<redacted>.md) §1 territory and a separate decision.
91
+ - **`removeAfter` is declarative, not enforced.** Nothing deletes a module automatically — `expired` only reports that the core has advanced past the declared date. Automatic removal would need the review/accept flow to own module deletion, which is [ADR 0107](0107-module-upstreaming-contribution-to-core-catalog.md) §1 territory and a separate decision.
@@ -9,11 +9,11 @@
9
9
 
10
10
  The /create gate's "open source" trust link pointed at `github.com/example-owner/Claude-OTB` — a 404 even authenticated (the real core repo is private). Task 1002705's brief said to "default to the npm link so the 404 dies now," on the premise that `@cloudbongos/core` is public on the registry.
11
11
 
12
- That premise is false, verified 2026-08-12 against `registry.npmjs.org`: **both `@cloudbongos/core` and `@bongos/core` 404 anonymously** — they are private scoped packages (ADR 0134 publishes the core privately; npm shows private packages as 404 to signed-out visitors). The [ADR 0099](<redacted>.md) public mirror is deliberately dormant until history clears the 180-day redaction window (~2026-11). So today there is **no browsable public code artifact at all** — following the brief literally would swap one dead link for another.
12
+ That premise is false, verified 2026-08-12 against `registry.npmjs.org`: **both `@cloudbongos/core` and `@bongos/core` 404 anonymously** — they are private scoped packages (ADR 0134 publishes the core privately; npm shows private packages as 404 to signed-out visitors). The [ADR 0099](0099-delayed-redacted-mirror-export.md) public mirror is deliberately dormant until history clears the 180-day redaction window (~2026-11). So today there is **no browsable public code artifact at all** — following the brief literally would swap one dead link for another.
13
13
 
14
14
  ## Decision
15
15
 
16
- Point the gate's "open source" link at the **AGPL-3.0 license text** (`https://www.gnu.org/licenses/agpl-3.0.html`) and tighten the copy to "open source (AGPL-3.0)". The license is the one live, instance-neutral artifact behind the claim today ([ADR 0065](<redacted>.md) — AGPL is the governance keystone), and the link carries no instance identity into the portable core.
16
+ Point the gate's "open source" link at the **AGPL-3.0 license text** (`https://www.gnu.org/licenses/agpl-3.0.html`) and tighten the copy to "open source (AGPL-3.0)". The license is the one live, instance-neutral artifact behind the claim today ([ADR 0065](0065-agpl-nonprofit-ai-first-governance.md) — AGPL is the governance keystone), and the link carries no instance identity into the portable core.
17
17
 
18
18
  The upgrade to a *browsable-code* link is the owner's call, filed as **idea 1000700** with three options: flip the repo public now (forfeits the redaction window — weigh ADR 0065 §4), publish a public npm package, or wait for the ADR 0099 mirror (~2026-11, zero extra work). When one lands, repoint the `finePrint` link in `public-landing/create.html`; the pin is `tests/onboard.mjs` "the /create gate trust link points at a live artifact".
19
19
 
@@ -4,7 +4,7 @@
4
4
  - **Date:** 2026-08-12
5
5
  - **Track:** internal
6
6
  - **Task:** [#1001772](https://cloudbongos.com/builders#/task/1001772) (BONGOS-V1, goal 1000029) — the browsable module catalog with author + origin credit.
7
- - **Builds on:** [ADR 0107](<redacted>.md) §2/§3/§6/§9 (upstreaming, attribution-as-portable-record, credit-now-money-later, default-off, the hall Modules tab), [ADR 0108](<redacted>.md) §1 (the loader discovers across BOTH the core package's `modules/` and the instance's own), [ADR 0083](<redacted>.md) (the manifest + loader), [ADR 0166](<redacted>.md) (the `maintenance` block the catalog surfaces).
7
+ - **Builds on:** [ADR 0107](0107-module-upstreaming-contribution-to-core-catalog.md) §2/§3/§6/§9 (upstreaming, attribution-as-portable-record, credit-now-money-later, default-off, the hall Modules tab), [ADR 0108](0108-instance-composition-configurable-root.md) §1 (the loader discovers across BOTH the core package's `modules/` and the instance's own), [ADR 0083](0083-modular-architecture-strangler-build-plan.md) (the manifest + loader), [ADR 0166](0166-module-maintenance-and-deprecation-policy.md) (the `maintenance` block the catalog surfaces).
8
8
 
9
9
  ## Context
10
10
 
@@ -34,11 +34,11 @@ A second, smaller problem: a catalog whose author/origin columns are blank for m
34
34
  - **Stamp `author`/`origin` into all ~15 core manifests.** Rejected: a repetitive diff that states the same fact fifteen times, and nothing keeps module sixteen from omitting it. The fallback derives it once, for every module, forever. (A module that *wants* a specific credit still declares one and wins — the fallback only fills a hole.)
35
35
  - **Overload `origin` to also mean "core-shipped".** Rejected — it is the attribution record ADR 0107 §2 deliberately defined as portable metadata, and `tests/modules_route.mjs` correctly pins provenance to the declared value. Writing a derived value into it would silently reclassify every core module as *core-loaded* and destroy the credit axis to fix the catalog one.
36
36
  - **Decide `source` from `default: true`** (core modules mostly ship default-on). Rejected as a coincidence, not a rule: ADR 0107 §6 requires *accepted* catalog modules to ship `default: false`, so the newest and most interesting catalog entries are exactly the ones this heuristic gets wrong.
37
- - **A `catalog` table in the DB.** Rejected as premature — the on-disk manifests already are the catalog, and a table would need writing at deploy time and could disagree with what actually mounted. Revisit if/when accepted submissions land from a real cross-repo channel ([ADR 0135](<redacted>.md)'s open question).
37
+ - **A `catalog` table in the DB.** Rejected as premature — the on-disk manifests already are the catalog, and a table would need writing at deploy time and could disagree with what actually mounted. Revisit if/when accepted submissions land from a real cross-repo channel ([ADR 0135](0135-module-upstream-submission-interim-queue.md)'s open question).
38
38
 
39
39
  ## Consequences
40
40
 
41
41
  - **The hall's Modules tab sections by `source`, not `provenance`** — "Module catalog" (what the core ships, opt-in) and "Built by this project". The credit axis moved to the per-card chips where it belongs, and the "Submit for review" list is now drawn from `source: 'instance'`: a module that already ships with the core is by definition already in the catalog and cannot be submitted into it.
42
42
  - **The catalog is browsable from both surfaces with the same filter rule** — `searchCatalog()` over key/title/description/credit/licence, mirrored in the page's `matchesQuery()`. The hall filters client-side (the whole payload is already there); the CLI takes `--search`.
43
43
  - **`GET /modules` grew a `catalog` roll-up** and each row grew `source` + `credit`. Every pre-existing field is byte-identical, so an un-redeployed hall keeps working — `modules.js` falls back to the credit axis when `source` is absent.
44
- - **The credit fallback names the platform, not the host instance.** That string is the core's own name (like `CORE_PKG`), not host identity, so it does not cross the [ADR 0062](<redacted>.md) §7 core/host line and the BV1.R76 hardcoded-identity fitness check stays green.
44
+ - **The credit fallback names the platform, not the host instance.** That string is the core's own name (like `CORE_PKG`), not host identity, so it does not cross the [ADR 0062](0062-medusa-instance-model-decoupling.md) §7 core/host line and the BV1.R76 hardcoded-identity fitness check stays green.
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-13
5
5
  - **Task:** [#1002398](https://cloudbongos.com/builders#/task/1002398) (goal 1000052 — first-run onboarding), depends on [#1002397](https://cloudbongos.com/builders#/task/1002397).
6
- - **Extends:** [ADR 0149](<redacted>.md) (`bongos dev`, the local launcher). Sibling of [ADR 0108 §4](<redacted>.md) / [`instance-deploy.md`](../recipes/instance-deploy.md) (the *pinned-core consumer* deploy) and `provision.js` (the *control-plane* cloud path).
6
+ - **Extends:** [ADR 0149](0149-bongos-dev-local-launcher.md) (`bongos dev`, the local launcher). Sibling of [ADR 0108 §4](0108-instance-composition-configurable-root.md) / [`instance-deploy.md`](../recipes/instance-deploy.md) (the *pinned-core consumer* deploy) and `provision.js` (the *control-plane* cloud path).
7
7
 
8
8
  ## Context
9
9
 
@@ -25,7 +25,7 @@ Five facts found during this spike shape the decisions:
25
25
 
26
26
  **2. One safe read path, enforced next to the data.** The port exposes `getPublicProfileExtras(githubId)`: `null` unless the account exists, is publicly addressable (Decision 3), and `hide_stats` is false — otherwise `{ totals: { projects, credits, works_shipped, karma }, disciplines, last_active, projects: [{ name, origin, rank_held }...], more_projects }`, whitelist-shaped **inside the module** (`client_id` and raw rows never cross the port; non-numeric `github_id` values like the `system:*` principals return `null` instead of hitting a bigint cast error). Every surface that shows cross-project numbers reads through the module's filtered functions at render time, never from a stored copy — and that includes the two that already exist: **`listScoutingRollup` itself gains the `profile_state = 'active' AND NOT hide_stats` predicate and a whitelisted projection**, so `/people` and `/scouting` (live today at Metic floor) honor hide by construction, not by memory. The hub hall profile, the `/u/<handle>` page, recruiting (R14/R15) and applications (R09) all sit on the same functions, which is what makes C2's "honored live everywhere, including pending applications" structural. Two deliberate side doors, both narrow: `getOwnProfileExtras(githubId)` serves the builder their own numbers regardless of flags (Settings), and spike 1002785's recruiter flow is expected to add a second **authorization-scoped** read for its opt-in discoverability sliver — `hide_stats` is the invariant every reader honors; public addressability is not.
27
27
 
28
- **3. Consent is a fail-closed `profile_state` on `platform_identity_accounts`, with one discriminator.** Migration `<redacted>.sql` (lands with R02) adds `profile_state text NOT NULL DEFAULT 'provisional' CHECK (profile_state IN ('provisional','active'))` and `hide_stats boolean NOT NULL DEFAULT false`. The single rule: **an account is `active` iff it was touched by a hub-session `/sso/authorize`** — the one path where a human is demonstrably at the hub (and where T&C acceptance can later be captured, task 1002913). Device-poll and check-in create `provisional`; the rollup endpoint creates nothing (orphan activity rows are never publicly addressable). Backfill: **all existing accounts start `provisional`** and lazily upgrade on their next hub-session authorize — no join to core `builders` (that join is type-unsafe against `system:*` text ids and would put a core-table read inside a module migration; the price is that existing hub builders' profiles publish on their next sign-in rather than immediately). Public surfaces read only `active` accounts. **R02 ships this fail-closed default without waiting on P03**, because the asymmetry only runs one way: P03 can then only ever *widen* exposure, never claw back something already published. This deliberately narrows the Phase-4 interview's "no extra consent gate" to the accounts whose consent premise actually holds; P03 is the owner either ratifying that boundary (recommended) or reverting to the interview decision verbatim — and the revert branch has a named precondition: check-in/device-created identities have **no self-serve hide path** (no hub builder session exists for them; hub admission is invite-gated), so rejecting P03 first requires an assertion-authenticated hide path or open hub enrollment. Task 1002799 carries this full decision payload.
28
+ **3. Consent is a fail-closed `profile_state` on `platform_identity_accounts`, with one discriminator.** Migration `platform_identity_007_profile_consent.sql` (lands with R02) adds `profile_state text NOT NULL DEFAULT 'provisional' CHECK (profile_state IN ('provisional','active'))` and `hide_stats boolean NOT NULL DEFAULT false`. The single rule: **an account is `active` iff it was touched by a hub-session `/sso/authorize`** — the one path where a human is demonstrably at the hub (and where T&C acceptance can later be captured, task 1002913). Device-poll and check-in create `provisional`; the rollup endpoint creates nothing (orphan activity rows are never publicly addressable). Backfill: **all existing accounts start `provisional`** and lazily upgrade on their next hub-session authorize — no join to core `builders` (that join is type-unsafe against `system:*` text ids and would put a core-table read inside a module migration; the price is that existing hub builders' profiles publish on their next sign-in rather than immediately). Public surfaces read only `active` accounts. **R02 ships this fail-closed default without waiting on P03**, because the asymmetry only runs one way: P03 can then only ever *widen* exposure, never claw back something already published. This deliberately narrows the Phase-4 interview's "no extra consent gate" to the accounts whose consent premise actually holds; P03 is the owner either ratifying that boundary (recommended) or reverting to the interview decision verbatim — and the revert branch has a named precondition: check-in/device-created identities have **no self-serve hide path** (no hub builder session exists for them; hub admission is invite-gated), so rejecting P03 first requires an assertion-authenticated hide path or open hub enrollment. Task 1002799 carries this full decision payload.
29
29
 
30
30
  > **P03 outcome — RATIFIED (owner, 2026-08-16, task 1002799).** The fail-closed boundary stands: check-in/device-created accounts stay `provisional` (not publicly listed, not at `/u/<handle>`, not in the sitemap or hub search) until their human signs in at the hub at least once. The owner's rationale: in the intended product flow a builder passes through cloudbongos.com at least once anyway — to find or create the projects they join — so the activation gate is satisfied naturally and costs nothing; the cloudbongos builders hall predating the hub flow is a one-time bootstrap exception, and those accounts lazily activate on their next hub sign-in exactly as the backfill rule above already provides (no backfill activation). Tasks 1002913 (T&C artifact) and 1002914 (criterion text amendments) unblock on this ship.
31
31
 
@@ -7,7 +7,7 @@
7
7
  - **Related:** ADR 0016 (trust boundary — server-enforced, uncached, per request), 0043 (git/ssh trust boundary + the rank floor on protected paths), 0157 (the archon→metic delegation of nineteen operational keys)
8
8
 
9
9
 
10
- > **⚠ VOCABULARY AMENDED by [ADR 0174](<redacted>.md) (owner directive, 2026-08-16) — the DECISIONS below are unchanged.**
10
+ > **⚠ VOCABULARY AMENDED by [ADR 0174](0174-government-terminology-ranks-not-roles.md) (owner directive, 2026-08-16) — the DECISIONS below are unchanged.**
11
11
  > What this ADR calls *governance* is now the **government**; what it calls *seeded roles* / *rank-roles* are now simply **ranks**. The word *role* is reserved for the three Cloud Bongos crafts — Artist, Ideator, Builder — and appears nowhere on the government side.
12
12
  > Concretely: `governance_roles` → `government_ranks`, `governance_builder_roles` → `government_builder_ranks`, `governance_role_permissions` → `government_rank_permissions`, `role_key` → `rank_key`, `governance.manage` → `government.manage`, `page.view.governance` → `page.view.government`, `/governance/roles/*` → `/government/ranks/*`, and `modules/governance/` → `modules/government/`.
13
13
  > **The body below is deliberately left in the old vocabulary.** An ADR records what was decided and why at a point in time; rewriting it to match today's words would erase the evidence that the words changed — which is the one thing a reader who hits "rank-role" in an old session log actually needs. Every decision it makes still holds; only the nouns moved. A `fitness.js` check now enforces the new vocabulary, and excludes this file by construction.
@@ -19,7 +19,7 @@ The governance tab (BV1.R110/R111) let an Archon build custom roles and toggle t
19
19
 
20
20
  Three facts made this cheaper and narrower than the read-only rendering suggested:
21
21
 
22
- 1. **The rank roles' grants were already ordinary rows.** `<redacted>.sql` writes them into `governance_role_permissions` exactly like a custom role's. The immutability was a route-level refusal (`loadMutableRole` → `seeded_role_immutable`) plus a disabled toggle — policy, not structure. Nothing had to be remodelled to make them editable.
22
+ 1. **The rank roles' grants were already ordinary rows.** `governance_002_seed_and_backfill.sql` writes them into `governance_role_permissions` exactly like a custom role's. The immutability was a route-level refusal (`loadMutableRole` → `seeded_role_immutable`) plus a disabled toggle — policy, not structure. Nothing had to be remodelled to make them editable.
23
23
  2. **The `system` flag was carrying two different meanings.** ADR 0151 used one boolean for "trust-boundary power," but the twelve `system:true` keys split cleanly in two. Seven are **in-app**: a real route reads them through `requirePermission`, so a grant row genuinely confers them (`builder.rank.set`, `version.close`, `task.confirm.grade_bypass`, `dependency.cross_tier.manage`, `goal.scope.manage`, `governance.manage`, `gate_approval.decide`). Three are **substrate**: `deploy.push_main`, `path.protected.modify`, `infra.ssh` are enforced entirely outside the app by the pre-push hook, `main-audit.js`, the grader pre-pass and credential placement (ADR 0043) — `tests/government_abuse_matrix.mjs` V10 asserts *no route consumes them* at all. Two are **principal** keys, held by an exact `builders.system_role` identity and by no role ever.
24
24
  3. **A grant row for a substrate key is inert.** It resolves honestly and admits nothing (abuse matrix V8/V10/V11). So the interesting question was never "is it dangerous to allow" but "would allowing it be *true*" — and it would not be.
25
25
 
@@ -5,7 +5,7 @@
5
5
  - **Deciders:** Lars (owner / Archon), Claude (Opus 5)
6
6
  - **Track:** `internal` (Cloud Bongos — economy)
7
7
  - **Task:** BV1.R171 ([#1002995](https://cloudbongos.com/builders#/task/1002995)) — the foundation of the **Ideator compensation** goal ([#1000067](https://cloudbongos.com/builders#/goal/1000067)).
8
- - **Builds on:** [ADR 0054](<redacted>.md) (cost-plus session reward), [ADR 0146](<redacted><redacted>.md) (`rewardPolicy` + the `cost-plus-only` mode), [ADR 0023](<redacted>.md) (kind multipliers + the 25% idea-promotion slice), [ADR 0120](<redacted>.md) (pay-on-land).
8
+ - **Builds on:** [ADR 0054](0054-session-token-reward-cost-plus.md) (cost-plus session reward), [ADR 0146](<redacted><redacted>.md) (`rewardPolicy` + the `cost-plus-only` mode), [ADR 0023](0023-kind-multipliers-and-idea-bonus.md) (kind multipliers + the 25% idea-promotion slice), [ADR 0120](0120-pay-on-land-and-builder-owned-rebase-gate.md) (pay-on-land).
9
9
  - **Relates to:** goal 1000062 (three grades of idea — R141/R142/R143 shipped), idea 1000738 (the Board Room).
10
10
  - **Gates:** IC2 ([#1002996](https://cloudbongos.com/builders#/task/1002996)) · IC3 ([#1002997](https://cloudbongos.com/builders#/task/1002997)) · IC4 ([#1002998](https://cloudbongos.com/builders#/task/1002998)) · IC5 ([#1002999](https://cloudbongos.com/builders#/task/1002999)) · IC6 ([#1003000](https://cloudbongos.com/builders#/task/1003000)).
11
11
 
@@ -14,9 +14,9 @@
14
14
  ## Context
15
15
 
16
16
  Cloud Bongos pays **one kind of worker one way**. The equity stream is the
17
- cost-plus session reward ([ADR 0054](<redacted>.md)):
17
+ cost-plus session reward ([ADR 0054](0054-session-token-reward-cost-plus.md)):
18
18
  `round(true_cost_usd × (1 + margin))`, booked when a shipped session lands. On
19
- top of that, [ADR 0023](<redacted>.md) pays the
19
+ top of that, [ADR 0023](0023-kind-multipliers-and-idea-bonus.md) pays the
20
20
  capturer of a promoted idea a **25% slice** of the resulting task's estimate
21
21
  when it ships, and [ADR 0146](<redacted><redacted>.md)
22
22
  lets an instance switch to `cost-plus-only`, which **withholds every per-task
@@ -50,7 +50,7 @@ lane, because that lane is a different craft's pay.
50
50
 
51
51
  The reward model gains a **named lane per craft**, not a single tunable payout:
52
52
 
53
- - **Builder (engineer)** — the cost-plus session reward ([ADR 0054](<redacted>.md)) plus, where `mode !== 'cost-plus-only'`, the per-task estimate ([ADR 0146](<redacted><redacted>.md)). Unchanged.
53
+ - **Builder (engineer)** — the cost-plus session reward ([ADR 0054](0054-session-token-reward-cost-plus.md)) plus, where `mode !== 'cost-plus-only'`, the per-task estimate ([ADR 0146](<redacted><redacted>.md)). Unchanged.
54
54
  - **Ideator** — the **idea credit lane** defined here (three streams, §3). Governed by its **own** policy flag, **never** by `perTaskCredit`.
55
55
  - **Artist** — a lane of its own, **deliberately left unspecified here** (the artist craft — grading, copy, voice — is scoped in later ABI work). This ADR reserves the *shape* (a named lane) so the artist lane slots in the same way; it does not define the artist's pay.
56
56
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-16
5
5
  - **Task:** [#1002520](https://cloudbongos.com/builders#/task/1002520) (goal 1000037 — pay-on-land incentive alignment)
6
- - **Related:** ADR 0054 (cost-plus reward — `round(true_cost_usd × 1.20)`), ADR 0120 (pay-on-land), ADR 0146 (cost-plus-only), core migration `<redacted>.sql` (the `reward_basis` watermark)
6
+ - **Related:** ADR 0054 (cost-plus reward — `round(true_cost_usd × 1.20)`), ADR 0120 (pay-on-land), ADR 0146 (cost-plus-only), core migration `core_196_session_reward_topup.sql` (the `reward_basis` watermark)
7
7
 
8
8
  ## Context
9
9
 
@@ -46,7 +46,7 @@ This was the closest call in the directive, and it was decided against the alter
46
46
 
47
47
  **The database rename and the constant rename must land in the same deploy.** `government_rank_permissions.permission_key` stores `governance.manage` as text, and `catalog.js` holds the same string as a code constant. If the rows change while the old code is still serving, every `governance.manage` check fails closed — and because that key is what gates the Government tab, the failure mode is the Owner locked out of the surface they would use to investigate. R03 and R05 are sequenced accordingly, and R03 takes a backup first.
48
48
 
49
- **Two ADRs currently claim the number 0172**, so "ADR 0172" no longer identifies a decision on its own. This ADR amends `<redacted>.md`; the other is `<redacted>.md`. Filed as idea 1000753 with a proposed guard (fail CI on a duplicate ADR number); deliberately not fixed here, because renumbering an ADR mid-rename would put two independent reference churns in the same diff.
49
+ **Two ADRs currently claim the number 0172**, so "ADR 0172" no longer identifies a decision on its own. This ADR amends `0172-editable-rank-roles-substrate-axis.md`; the other is `0172-per-craft-compensation-ideator-credit-lane.md`. Filed as idea 1000753 with a proposed guard (fail CI on a duplicate ADR number); deliberately not fixed here, because renumbering an ADR mid-rename would put two independent reference churns in the same diff.
50
50
 
51
51
  **ADR 0151 and ADR 0172 get amendment notes, not rewrites.** Their bodies stay in the old vocabulary. An ADR records what was decided and why at a point in time; editing the prose to match today's words would quietly erase the evidence that the words changed — which is the one thing a reader hitting "rank-role" in an old session log will need.
52
52
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-18
5
5
  - **Tasks:** [#1003013](https://cloudbongos.com/builders#/task/1003013) (goal 1000068 — government terminology; unlinked from the goal's criteria on 2026-08-18 because it is a live-column migration, not a naming pass)
6
- - **Extends:** [ADR 0174](<redacted>.md) — the reserved-word rule, applied to the fourth use it did not cover
6
+ - **Extends:** [ADR 0174](0174-government-terminology-ranks-not-roles.md) — the reserved-word rule, applied to the fourth use it did not cover
7
7
  - **Related:** ADR 0016 (authority resolved server-side, per request, uncached), 0086 (goals + scope walls), 0154 (goal owner/manager authors criteria), 0137/0161 (land → release → deploy are three gates)
8
8
 
9
9
  ## Context
@@ -51,7 +51,7 @@ previous release querying a column that no longer exists — every goal-membersh
51
51
  authz path. `tests/migrations_forward_safe.mjs` exists to catch precisely this, and it would have caught
52
52
  it here. So:
53
53
 
54
- - **Step 1 (`<redacted>.sql`, this task)** — ADD `membership_kind`, backfill
54
+ - **Step 1 (`core_220_goal_members_membership_kind.sql`, this task)** — ADD `membership_kind`, backfill
55
55
  it from `role`, copy the `CHECK`, and keep the two columns in lockstep with a **BEFORE INSERT OR
56
56
  UPDATE trigger** whose direction is decided by which side changed. Both names therefore work for one
57
57
  release: new code writes `membership_kind`; the historical `lifecycle_001` seed and any older release
@@ -131,7 +131,7 @@ one is still written (NULL then means exactly "not written"), and `DEFAULT` + `N
131
131
  arrive together in step 2. `core_220` shipped with the defective form and was corrected
132
132
  the same day under task [#1003093](https://cloudbongos.com/builders#/task/1003093) — there
133
133
  the same statement demoted a goal's first lead to `member` on a fresh install
134
- (`<redacted>.sql` runs after the core migrations), and no production
134
+ (`lifecycle_001_goal_first_leads.sql` runs after the core migrations), and no production
135
135
  row was ever affected because the pin still served 1.19.218; the invariant is
136
136
  pinned statically by `tests/membership_kind_lockstep.mjs`, since the trigger only
137
137
  misbehaves against a live Postgres and CI has none.
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-19
5
5
  - **Tasks:** [#1003113](https://cloudbongos.com/builders#/task/1003113) (R02 of goal 1000074, the artist's loop) — builds on [#1003112](https://cloudbongos.com/builders#/task/1003112) (R01, the copy registry)
6
- - **Extends:** [ADR 0081](<redacted>.md) — the repo is the source of truth for design, with swappable tool adapters. This is the same claim for TEXT.
6
+ - **Extends:** [ADR 0081](0081-tool-agnostic-design-layer.md) — the repo is the source of truth for design, with swappable tool adapters. This is the same claim for TEXT.
7
7
  - **Related:** ADR 0083 (module system, module-owned migrations), 0086 (goals + scope walls), 0016 (authority resolved server-side), 0162 (grader verdicts are advisory, never self-executing), 0175 (an objection requires a reason)
8
8
 
9
9
  ## Context
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-19
5
5
  - **Tasks:** [#1003094](https://cloudbongos.com/builders#/task/1003094) (goal 1000069, the Board Room). Blocks R25's sign-off ([#1003038](https://cloudbongos.com/builders#/task/1003038)); unblocks the charter-library fix ([#1003095](https://cloudbongos.com/builders#/task/1003095))
6
- - **Amends:** [ADR 0175](<redacted>.md) §7 — the constitution's `board.membership` predicate
6
+ - **Amends:** [ADR 0175](0175-the-board-room-full-idea-ratification.md) §7 — the constitution's `board.membership` predicate
7
7
  - **Related:** ADR 0016 (authority server-side, per request, uncached), 0034 (rank inheritance), 0174 (ranks are ranks), 0083 (a module may not import a sibling)
8
8
 
9
9
  ## Context
@@ -5,7 +5,7 @@
5
5
  - **Task:** [task 1003042](https://cloudbongos.com/builders#/task/1003042) (BONGOS-V1, goal 1000058 — *Non-cloudbongos project lifecycle*)
6
6
  - **Deciders:** jaxri (Archon), Claude
7
7
  - **Supersedes nothing. Bounds:** [task 1002897](https://cloudbongos.com/builders#/task/1002897) (address reclaim) owns the half this ADR deliberately does not do.
8
- - **Related:** [ADR 0111](<redacted>.md) (the provisioning module + intent/runner split), [ADR 0157](<redacted>.md) (permission floors)
8
+ - **Related:** [ADR 0111](0111-instance-hosting-provisioning-module.md) (the provisioning module + intent/runner split), [ADR 0157](0157-archon-is-rank-and-identity-only.md) (permission floors)
9
9
 
10
10
  ---
11
11
 
@@ -6,7 +6,7 @@
6
6
  - **Deciders:** IAMMASTERQUA (Archon), Claude
7
7
  - **Confirms R04–R18** — the full accounting is in *Scope* below, including the two that this ADR deliberately does **not** govern.
8
8
  - **Bounds — deliberately NOT decided here:** the self-hosted→hub *reporting and trust* mechanics ([task 1002321](https://cloudbongos.com/builders#/task/1002321), R02) · the applications/invite *model* (`docs/specs/<redacted>.md` D2, already decided) · project *authority* (same spec, D1)
9
- - **Related:** [ADR 0141](<redacted>.md) (hub = identity + relay, authority stays local) · [ADR 0112](<redacted>.md) (`goals.visibility`, the precedent this copies) · [ADR 0108](<redacted>.md) (the instance IS the project) · [ADR 0174](<redacted>.md) (one word, one meaning)
9
+ - **Related:** [ADR 0141](<redacted>.md) (hub = identity + relay, authority stays local) · [ADR 0112](0112-private-goals-invitations-join-requests.md) (`goals.visibility`, the precedent this copies) · [ADR 0108](0108-instance-composition-configurable-root.md) (the instance IS the project) · [ADR 0174](0174-government-terminology-ranks-not-roles.md) (one word, one meaning)
10
10
 
11
11
  ---
12
12
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** accepted
4
4
  - **Date:** 2026-08-21
5
5
  - **Task:** 1002069 (owner request 2026-07-05, scope owner-confirmed)
6
- - **Supersedes part of:** [ADR 0086](<redacted>.md) §6 / BV1.R63 — the criterion auto-flag stays, but confirming it is no longer the only way a criterion closes.
6
+ - **Supersedes part of:** [ADR 0086](0086-goal-scoped-work-hierarchy.md) §6 / BV1.R63 — the criterion auto-flag stays, but confirming it is no longer the only way a criterion closes.
7
7
 
8
8
  ## Context
9
9
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-19
5
5
  - **Tasks:** [#1002483](https://cloudbongos.com/builders#/task/1002483) (goal 1000024, build-pipeline integrity). Carried forward from blocker 1000047
6
- - **Extends:** [ADR 0120](<redacted>.md) — pay on land. This makes "land" checkable at the write.
6
+ - **Extends:** [ADR 0120](0120-pay-on-land-and-builder-owned-rebase-gate.md) — pay on land. This makes "land" checkable at the write.
7
7
  - **Related:** ADR 0055 (server-mediated publish), 0137 (land → release → deploy are three gates), 0082 (generated-file conflict resolver); tasks 1313 / 1547 / 1002615 / 1002724 (the per-task land proof), [#1002478](https://cloudbongos.com/builders#/task/1002478) (the no-artifact dead end)
8
8
 
9
9
  ## Context
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-22
5
5
  - **Tasks:** [#1002923](https://cloudbongos.com/builders#/task/1002923) (BV1.R147, goal 1000062 — three grades of idea). Completes the spark chain: [#1002920](https://cloudbongos.com/builders#/task/1002920) (the mark), [#1002921](https://cloudbongos.com/builders#/task/1002921) (the queue), [#1002922](https://cloudbongos.com/builders#/task/1002922) (the pickup)
6
- - **Extends:** [ADR 0172](<redacted>.md) — the ideator credit lane. That ADR built the streams and paid `captured_by`; this one decides what happens when `captured_by` is not the only person who made the idea.
6
+ - **Extends:** [ADR 0172](0172-per-craft-compensation-ideator-credit-lane.md) — the ideator credit lane. That ADR built the streams and paid `captured_by`; this one decides what happens when `captured_by` is not the only person who made the idea.
7
7
  - **Related:** ADR 0023 (the original idea-promotion slice), 0146 (reward-mode machinery), 0054 (cost-plus)
8
8
 
9
9
  ## Context
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted (spike outcome — decisions below; no implementation in this task)
4
4
  - **Date:** 2026-08-23
5
5
  - **Tasks:** [#1002932](https://cloudbongos.com/builders#/task/1002932) (BV1.R156, goal 1000062 — three grades of idea). Spike output: this ADR plus the downstream task list in §7. Gates criterion `abi-full-idea-base-template`.
6
- - **Builds on:** [ADR 0172](<redacted>.md) (the ideator credit lane), [ADR 0185](<redacted>.md) (the 70/30 split), [ADR 0083](<redacted>.md) (module boundary + module-owned migrations)
6
+ - **Builds on:** [ADR 0172](0172-per-craft-compensation-ideator-credit-lane.md) (the ideator credit lane), [ADR 0185](0185-spark-handoff-credit-split.md) (the 70/30 split), [ADR 0083](0083-modular-architecture-strangler-build-plan.md) (module boundary + module-owned migrations)
7
7
  - **Related:** R141 (`modules/ideas/templates.js` — the template declaration), R142 (`modules/ideas/completeness.js` — the deterministic scorer)
8
8
 
9
9
  ## 1. Context
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-24
5
5
  - **Tasks:** [#1003170](https://cloudbongos.com/builders#/task/1003170) (goal 1000075 — collaboration and the social hall). Settles the questions criteria `collab-pass-a-task`, `collab-closeness-consented` and `collab-mingle-two-switches` were each carrying.
6
- - **Related:** [ADR 0171](<redacted>.md) (fail-closed consent in the READ path), ADR 0032 / 0033 (Discord as a one-way mirror, outside the trust boundary), [ADR 0120](<redacted>.md) (pay on land)
6
+ - **Related:** [ADR 0171](0171-profile-rollup-join-and-consent.md) (fail-closed consent in the READ path), ADR 0032 / 0033 (Discord as a one-way mirror, outside the trust boundary), [ADR 0120](0120-pay-on-land-and-builder-owned-rebase-gate.md) (pay on land)
7
7
 
8
8
  ## 1. Why this ADR exists at all
9
9
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-24
5
5
  - **Tasks:** [#1003234](https://cloudbongos.com/builders#/task/1003234) (goal 1000058 — the non-cloudbongos project lifecycle; a walk finding from the 2026-08-24 stranger's-walk review, task 1003232)
6
- - **Builds on:** [ADR 0143](<redacted>.md) (the `gds_oauth_repos` opt-in cookie), #726/#734 (the `gds_return` return cookie and the apex-scoped state)
6
+ - **Builds on:** [ADR 0143](0143-onboarding-repo-picker-oauth-scope.md) (the `gds_oauth_repos` opt-in cookie), #726/#734 (the `gds_return` return cookie and the apex-scoped state)
7
7
  - **Related:** [ADR 0141](<redacted>.md) (the federated leg shares the same state cookie)
8
8
 
9
9
  ## 1. Context
@@ -3,8 +3,8 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-24
5
5
  - **Tasks:** [#1003209](https://cloudbongos.com/builders#/task/1003209) (goal 1000079 — pay down the frozen debt and make enforcement durable; criterion C4 `reduction-durable`)
6
- - **Builds on:** [ADR 0078](<redacted>.md) (deterministic-first routines + the `run-routine.js` dispatcher), [ADR 0180](<redacted>.md) §3 (the patrol's dependency checks), [ADR 0022](0022-secrets-policy.md) (the prevent → gate → patrol layering)
7
- - **Related:** [ADR 0162](<redacted>.md) (patrol findings are advisory — verdicts never self-execute), [ADR 0093](<redacted>.md) §1 (where `routine-timers.js` landed — the in-process poller seam this deliberately does *not* use)
6
+ - **Builds on:** [ADR 0078](0078-deterministic-first-cron.md) (deterministic-first routines + the `run-routine.js` dispatcher), [ADR 0180](0180-dependency-intake-and-drift-policy.md) §3 (the patrol's dependency checks), [ADR 0022](0022-secrets-policy.md) (the prevent → gate → patrol layering)
7
+ - **Related:** [ADR 0162](0162-review-gates-retired-rank-consistent-ci-only.md) (patrol findings are advisory — verdicts never self-execute), [ADR 0093](0093-tranche-2-core-carve-sequence.md) §1 (where `routine-timers.js` landed — the in-process poller seam this deliberately does *not* use)
8
8
 
9
9
  ## 1. Context
10
10
 
@@ -3,8 +3,8 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-24
5
5
  - **Tasks:** [#1003210](https://cloudbongos.com/builders#/task/1003210) (goal 1000079 — criterion C4 `reduction-durable`)
6
- - **Builds on:** [ADR 0180](<redacted>.md) (shrink-only baselines), [ADR 0188](<redacted>.md) (the weekly patrol that now files this)
7
- - **Related:** [ADR 0091](<redacted>.md) §2 (the boundary-forced duplication that gets the first declared floor), [ADR 0162](<redacted>.md) (findings are advisory)
6
+ - **Builds on:** [ADR 0180](0180-dependency-intake-and-drift-policy.md) (shrink-only baselines), [ADR 0188](0188-patrol-runs-on-ci-not-the-server.md) (the weekly patrol that now files this)
7
+ - **Related:** [ADR 0091](0091-bounding-the-kernel-and-db-carve.md) §2 (the boundary-forced duplication that gets the first declared floor), [ADR 0162](0162-review-gates-retired-rank-consistent-ci-only.md) (findings are advisory)
8
8
 
9
9
  ## 1. Context
10
10
 
@@ -3,7 +3,7 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-08-25
5
5
  - **Tasks:** [#1003273](https://cloudbongos.com/builders#/task/1003273). Diagnosis and companion fix: [#1003271](https://cloudbongos.com/builders#/task/1003271) (the summons), [#1003269](https://cloudbongos.com/builders#/task/1003269) (the Government tab order).
6
- - **Supersedes, in part:** [ADR 0175](<redacted>.md) — §3's pass-rule set (`first_ratifier | consent`) and §§7/11's flat anti-self-vote rule. Everything else in 0175 stands, including §8 (Discord is outbound-only, never a ballot), which this decision explicitly re-affirms.
6
+ - **Supersedes, in part:** [ADR 0175](0175-the-board-room-full-idea-ratification.md) — §3's pass-rule set (`first_ratifier | consent`) and §§7/11's flat anti-self-vote rule. Everything else in 0175 stands, including §8 (Discord is outbound-only, never a ballot), which this decision explicitly re-affirms.
7
7
 
8
8
  ## 1. The report, and why the obvious diagnosis was wrong
9
9