Home

boring / v2

publicBoring-Software-Inc/v2
Overview Code History Branches Pull requestsIssuesInsights Campfire Docs
main
HomeOverview Code PRsIssues

feat(core): repos.armed — a repo is gated only when explicitly armed (§4)

4 months ago

225a63e
Authored
grim7/14/2026, 3:50:51 AM
Product-safety floor. GitHub's install offers 'All repositories', and a synced
repo with no rule_configs runs the derived baseline gate — so installing on a
400-repo org would immediately block PRs everywhere with rules the maintainer
never chose. In prod, 4 synced repos were all being gated; only dither-kit was
intended.

- repos.armed bool NOT NULL DEFAULT false (migration 0003) — every existing repo,
  prod's four included, becomes unarmed; the owner re-arms deliberately.
- setRepoArmed is the ONLY writer; ensureRepo/syncInstallationRepos never touch
  armed, so re-sync/reinstall preserves the choice.
- runWorkflows skips an unarmed repo right after the repo fetch: no run/check/
  comment/action rows (the exemption shape), logged, before any forge reads.
- Events STILL ingest + normalize for unarmed repos — the append-only store stays
  complete for arm-time backfill (Unit 3). Proven by a dedicated test.
- armed surfaced on RepoLite for the UI; ensureDemoRepo arms demo repos so
  dev:demo is unbroken.

Checks: typecheck all, biome, boundaries, 239/239.

Parent461c615

15 files changed
  • DECISIONS.md+36−0
  • all-summaries.md+16−0
  • apps/web/src/lib/onboarding.functions.ts+1−0
  • apps/web/src/lib/server/active-repo.ts+1−0
  • apps/worker/src/jobs/run-workflows.ts+17−0
  • apps/worker/src/moderation.integration.test.ts+2−0
  • apps/worker/src/process-event.integration.test.ts+58−0
  • apps/worker/src/toggles.integration.test.ts
+2
−0
  • packages/db/drizzle/0003_omniscient_sunspot.sql+1−0
  • packages/db/drizzle/meta/0003_snapshot.json+1567−0
  • packages/db/drizzle/meta/_journal.json+7−0
  • packages/db/src/schema/repos.ts+9−0
  • packages/db/src/seed.ts+3−0
  • packages/db/src/services/onboarding.ts+3−0
  • packages/db/src/services/repos.ts+13−0