Skip to content

feat(service-registry): service-provider SoT + reconciler + heady_subscriptions API#223

Open
HeadyMe wants to merge 2 commits into
rebuildfrom
feat/service-registry
Open

feat(service-registry): service-provider SoT + reconciler + heady_subscriptions API#223
HeadyMe wants to merge 2 commits into
rebuildfrom
feat/service-registry

Conversation

@HeadyMe

@HeadyMe HeadyMe commented Jun 19, 2026

Copy link
Copy Markdown
Member

What

The source of truth for service-provider info (your ask) + the reconciler that keeps it honest.

  • configs/service-providers.yaml — curated SoT, 22 providers: category · paying entity · plan · cost · status · criticality · secrets: cross-links to the secrets registry · discount state. Seeded from the 2026-06-18 Gmail scan.
  • tooling/service-registry — reconciler (check fails on a provider referencing an unknown secret; warns on registry secrets no provider owns — same coherence pattern as .env ↔ secrets registry) + query() backing the heady_subscriptions tool (all/upcoming/cancel/risk). 4 tests.

Surfaces today (from report)

Also

  • Gmail connector spec → read + write (gmail.readonly + gmail.compose) per founder; send/draft behind a CSL privileged-gate + confirmation.

Verified locally: reconciler check OK · 4/4 tests · 0 secret hits.

Follow-on (needs the unbuilt packages/mcp): register heady_subscriptions on the live MCP server. The query() API is the backing logic.

🤖 Generated with Claude Code

HeadyConnection and others added 2 commits June 18, 2026 20:08
…scriptions query API

configs/service-providers.yaml — the curated source of truth for every external service (22 providers): category, paying entity, plan, cost, status, criticality, secrets[] cross-links, discount state. Seeded from a 2026-06-18 Gmail scan. Tracks SEC-002 (Neon prod credential public in Heady-Main since ~Apr 5; ~135 secret-scanning alerts across 6 public legacy mirrors), the cross-service payment-failure cluster, and unapplied nonprofit discounts (Claude+OpenAI).

tooling/service-registry — reconciler: validates the SoT and cross-checks every provider secrets[] against packages/secrets/src/registry.mjs (unknown ref = fail, orphan secret = warn) — same coherence pattern as .env↔registry. query() backs the heady_subscriptions tool (all/upcoming/cancel/risk views). 4 tests. Report: $191.01/mo known, 6 failing, neon exposed.

Gmail connector spec updated to read+write (gmail.readonly + gmail.compose) per founder — send/draft behind a CSL privileged-gate + confirmation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ed MongoDB/npm exposures

19 unique exposed credential types ranked by blast radius (T0 critical: 1Password→GCP SA→Neon→MongoDB→GitHub PAT/SSH; T1 high; T2 spend; T3 scoped), each with exact per-provider rotation steps + post-rotation sinks (Secret Manager/Cloud Run/.env/vault). Adds prevention: push protection, no-inline-secrets, WIF, session-guard. Registers two SEC-002 discoveries not previously tracked: mongodb-atlas (undocumented Mongo cluster) + npm token.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants