Skip to content

feat: 1.0.0b8 — MCP registry metadata + --source attribution flag [INIT-2026-556]#163

Merged
SyncTekLLC merged 1 commit into
mainfrom
feat/init-2026-556-w1-mcp-registry-and-source-flag
May 27, 2026
Merged

feat: 1.0.0b8 — MCP registry metadata + --source attribution flag [INIT-2026-556]#163
SyncTekLLC merged 1 commit into
mainfrom
feat/init-2026-556-w1-mcp-registry-and-source-flag

Conversation

@SyncTekLLC

Copy link
Copy Markdown
Contributor

Summary

W1 launch foundations for INIT-2026-556 ($5K MRR in 90 days). Two coupled features:

Feature A — MCP registry metadata

Per M2 agentic-distribution audit: SimDrive is absent from every major MCP registry today. This PR unblocks ingestion by Anthropic's official MCP registry (and downstream Smithery / Glama / awesome-mcp-servers / PulseMCP mirrors).

  • <!-- mcp-name: io.github.SyncTek-LLC/simdrive --> HTML comment at the top of README.md (root) and simdrive/README.md — the convention Anthropic's registry uses to verify PyPI ownership.
  • server.json at the repo root declaring canonical MCP metadata (name / version / repo / license / runtime / packages / transport=stdio / runtimeHint=uvx) per the modelcontextprotocol/registry schema.

Feature B — simdrive trial start --source <channel> attribution

Per M4 pipeline math: we need to know which channel drove each trial to size $5K MRR funnel inputs. New CLI surface (opt-in by default, explicit opt-out available):

simdrive trial start --email <user> --source hn
simdrive trial start --email <user> --source reddit:iOSProgramming
simdrive trial start --email <user> --source cursor.directory
simdrive trial start --email <user> --no-track        # per-call opt-out
  • POST shape: {hashed_email, source, ts, package_version, os} to https://api.simdrive.dev/trial. Contract negotiated with sibling W1-W agent building the Worker endpoint.
  • Raw email NEVER leaves the machine — only sha256(email.lower().strip()) is transmitted. OS field is the coarse family (darwin / linux / other), not a fingerprint.
  • Network failure is non-fatal: trial license still installs locally and CLI prints one "telemetry skipped" notice.
  • Persistent opt-out via ~/.simdrive/telemetry.toml (track = false) or SIMDRIVE_TELEMETRY_OFF=1 env var. File-present-without-key is treated as opt-out (fail-closed for privacy).

Wave bump

  • simdrive/pyproject.toml: 1.0.0b71.0.0b8
  • simdrive/CHANGELOG.md head entry added

Anti-overreach (per task spec)

  • Zero changes to license generation, JWT shape, paywall enforcement, or any other existing trial behaviour.
  • No fingerprinting beyond hashed_email + source + ts + version + OS family.
  • Raw email is never logged — only the hash.
  • --no-track and persisted opt-out config always win over defaults.

Test plan

  • 27 new unit + integration tests in simdrive/tests/test_trial_source_attribution.py (hash determinism, default source = "direct", --no-track zero-network, opt-out file/env resolution, exact contract shape, all network-failure non-fatal paths)
  • Existing trial CLI tests (test_trial_cli.py) — 9 passing, no regressions
  • Publish gates (tests/packaging/test_publish_gates.py) — 9 passing, version-match contract satisfied
  • Full non-live simdrive suite: 1674 passed, 3 skipped, 0 failed (32s)
  • CLI end-to-end smoke: simdrive trial start --email <x> --offline-dev --no-track exits 0 with both license and telemetry notices

Post-merge

  • Tag simdrive-v1.0.0b8, watch PyPI publish, watch downstream cascade to simdrive-site changelog.
  • Sibling agent ships the Worker /trial endpoint on simdrive-license-api.

🤖 Generated with Claude Code

…IT-2026-556]

Feature A — MCP registry metadata
- Add `<!-- mcp-name: io.github.SyncTek-LLC/simdrive -->` HTML comment
  to the top of README.md (root) and simdrive/README.md so the official
  Anthropic MCP registry can verify ownership of the PyPI package.
- Add server.json at the repo root declaring canonical MCP metadata
  (name, version, repo, license, runtime, packages, transport=stdio,
  runtimeHint=uvx) per the modelcontextprotocol/registry schema.
  Picked up automatically by Smithery, Glama, awesome-mcp-servers
  ingestion crawlers, and PulseMCP mirror.

Feature B — `simdrive trial start --source <channel>` attribution
- New CLI flags `--source <utm-channel>` (opt-in marketing attribution)
  and `--no-track` (per-invocation opt-out) on `simdrive trial start`.
- New module simdrive/license/telemetry.py: SHA-256 email hashing,
  payload builder, opt-out config resolution, fire-and-forget POST.
- Network failure is non-fatal: the trial license still installs
  locally and the CLI prints a single "telemetry skipped" notice.
- Raw email NEVER leaves the machine — only SHA-256(email.lower().strip())
  is transmitted. Payload shape:
    {hashed_email, source, ts, package_version, os}
- Persistent opt-out via ~/.simdrive/telemetry.toml (track = false) or
  SIMDRIVE_TELEMETRY_OFF=1 env var. File-present-without-track-key is
  treated as opt-out (fail-closed for privacy).
- POST contract negotiated with sibling agent building Worker /trial
  endpoint on simdrive-license-api. Late-deploy Worker is acceptable —
  CLI calls will fail silently per the non-fatal design.

Tests: 27 new unit + integration tests in test_trial_source_attribution.py
covering hash determinism, default source=direct, --no-track zero-network,
opt-out file/env resolution, exact contract shape, and all network-failure
non-fatal paths. Full suite: 1674 passed, 3 skipped, 0 failed.

Anti-overreach: no changes to license generation, JWT shape, paywall
enforcement, or any other existing trial behaviour.
@SyncTekLLC SyncTekLLC merged commit 1e14a34 into main May 27, 2026
6 of 7 checks passed
@SyncTekLLC SyncTekLLC deleted the feat/init-2026-556-w1-mcp-registry-and-source-flag branch May 27, 2026 02:58
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.

1 participant