Skip to content

Spec: GitHub-indexed Bot Sharing & Marketplace #18

Closed
2 of 2 issues completed
Closed

Description

@DoodleBears

Specification: GitHub-indexed Bot Sharing & Marketplace

Project: https://github.com/orgs/BotHarness/projects/11 · Milestone: v1.1.

Current scope — reconciled 2026-10-08 (Asia/Tokyo)

Sharing uses public GitHub Memory repositories and the GitHub-indexed Bot Marketplace under ADR-0131. Moving a Bot between devices or people uses the local Bot zip path #1059. The platform-account/upload proposal #17 was cancelled on 2026-10-06; it is not a future implementation phase or remaining acceptance for this issue.

  • Authors opt in with the botharness-bot topic. The catalog uses GitHub repository metadata/README and optional .botharness/bot.json presentation.
  • The dedicated Worker and D1 catalog provide discovery, refresh, browse/search, detail, topic filtering, paste-to-crawl, reporting and admin moderation. Install reuses Git-URL Bot creation with a fresh local identity.
  • Browsing and sharing require no BotHarness platform account. GitHub stars and last update remain the displayed measurements; no platform import/download count is claimed.
  • GitHub controls the public source. Ordinary Git handles repository updates. Platform accounts, hosted Git publication, account-based favorites and completed-import counts are cancelled scope, not pending Marketplace tasks.

Delivery and closeout — completed 2026-10-08

The Human confirmed final #913 acceptance and closed it directly. Confirmation record. The pending-acceptance wording below is retained as the completed audit trail.

#913 owns Phase 1 acceptance. Its implementation children #916–#922 and guide #958 are closed. PR #943 records production Worker deployment; the product site's Marketplace is also implemented. These facts do not substitute for the final acceptance evidence in #913.

The v1.2 Banner/Bio presentation extension belongs to #1083 / #1093. It does not reopen the cancelled account/upload proposal. Reuse existing issues and native parent relationships; do not create duplicate storage/auth/Git foundation tickets.

Historical specification / incident snapshot before 2026-10-08 reconciliation — superseded where inconsistent with the current scope above

Specification: public Bot Sharing & Marketplace

This is a bounded feature specification/index, not an implementation claim or a replacement for the repository-wide Roadmap. Project owns feature management; milestone owns release target. Decision record: ADR-0131 (2026-10-05), which reverses the order of the 2026-09-30 contract below. Earlier design rounds remain in this issue's edit history.

Execution index

Confirmed order — 2026-10-05 (ADR-0131)

Phase 1: GitHub-indexed catalog

  • Public GitHub repositories carrying the botharness-bot topic are Indexed Repositories. The topic is the author's consent; removing it, privatizing, archiving or deleting hides the entry at the next refresh. Pasting a repository URL crawls it immediately but still requires the topic. No anonymous submission of arbitrary repositories.
  • No required manifest. Display uses repository name, GitHub description, topics and README; the fresh Bot gets its default avatar. Optional committed .botharness/bot.json overrides display name, avatar and role badges.
  • Dedicated Cloudflare Worker with its own D1 (e.g. market.botharness.ai), separate from the product sites. Entries keyed by GitHub node ID. Daily full topic discovery sliced by creation date (search caps 1,000 per query); hourly GraphQL nodes refresh in batches of 100; README refetched only when pushed_at changes. Single cron now, Queues when Worker limits bind.
  • Browse by stars/last update with keyset cursors; search with FTS5 bm25, capped at 200 results; topic filter. Detail renders sanitized README with raw image rewrite.
  • Install reuses Create PersonaBot from a Git Memory repository (HTTPS or SSH) #298 Git-URL creation with origin on GitHub; confirmation shows latest commit time and short SHA plus a third-party risk/disclaimer notice.
  • URL paste and one-click Report share ALTCHA (self-hosted proof-of-work; Turnstile is unreliable in mainland China) plus per-IP/per-repository limits. Reports from enough distinct sources auto-hide until an administrator restores or blocks; D1 blocklist. Reporting needs no account and no GitHub access.
  • No download/import counts in Phase 1: without sign-in no honest completed-import receipt exists. Show GitHub stars and last commit only.

Phase 2: accounts and uploaded Bots (dropped 2026-10-06, see #1059)

Better Auth (latest): Email OTP sign-up, Passkey sign-in, Google sign-in; terms covering Memory privacy and liability for installing third-party Bots. Signed-in users upload a Bot from the local harness (default Bot name/avatar, editable, tags), favorite Bots and see their favorites; Marketplace-button imports record completed-import receipts; favorite and import counts are shown. The publication contract below stays the target for this phase, re-sliced from #17 after Phase 1.

Previous order — final contract 2026-09-30 (order superseded by ADR-0131; publication rules remain the Phase 2 target)

Confirmed product contract — final, 2026-09-30

Project: https://github.com/orgs/BotHarness/projects/11 · Milestone: v1.1. The product decision frontier is settled; superseded proposals remain in historical details only.

Full committed Memory Git repository

  • Share the complete committed Memory Git repository, including Git history and all ordinary branches/tags. Author selects the initial checkout branch. A published version fixes that branch HEAD and the published refs.
  • No file selection, history cleaning or no-history toggle. Author/Human/Bot controls files, branches, commits and any history reinitialization through ordinary Git before publication.
  • Publish only committed branch/tag content and its reachable history. Do not include staged/uncommitted/untracked files or internal refs such as refs/botharness/recovery/*, which can contain working-tree checkpoints. Do not replace this ref contract with git bundle --all.
  • Git data is not source-machine .git/config, credential helpers, hooks, recovery/ledger databases or runtime state. Do not implicitly export Profile credentials, live IM bindings/grants, Sessions or Bot identity. Authors remain responsible for the contents they intentionally commit to the shared repository; this is not a historical-file redaction feature.

Presentation lives in Git; identity stays local

  • Commit a portable sharing descriptor and avatar assets into the repository before publishing. Human/Bot can prepare them using normal file/Git operations; publication does not silently insert uncommitted metadata.
  • Avatar sharing defaults on. If enabled, a fresh import uses the shared appearance, including preservation of generated appearance. If omitted/disabled, it uses the fresh Bot's normal default avatar.
  • Descriptor includes display name, description and role badges. Missing optional presentation has defined normal local defaults; optional Persona remains optional under current CONTEXT.
  • Import creates a fresh local PersonaBot identity. Later git pull updates repository files; it does not automatically overwrite local Bot presentation preferences. Human/Bot decides whether to apply updated presentation.

Public publication and account contract

  • Cloudflare Workers + D1 + R2; GitHub is optional. Public publication only, no private/unlisted publication mode in v1.1. Each publication is publicly listed with author, version, provenance and license; richer discovery UI follows the first tracer.
  • Anonymous browsing. Platform sign-in is required to publish and import through Marketplace. Ordinary external Git operations are a separate path.
  • Better Auth: passwordless Email OTP sent through Cloudflare Email, Google and GitHub sign-in, optional Passkey. Start with verified Email OTP or social sign-in, then enroll Passkey. Passkey sign-ins do not require an OTP email every time; OTP remains a fallback.
  • License is author-confirmed: read an existing repository license or require an explicit declaration when absent.
  • Withdrawal blocks future platform downloads/imports of the withdrawn publication. Already imported local repositories remain usable. Public GitHub sources remain under their author's GitHub control.

Native Git updates and simple publication

  • No fork/PR/pull/push/merge/rebase/update-management UI. Human/Bot uses Git and ordinary GitHub collaboration directly.
  • GitHub-backed author selects a tracked publication branch at initial publication. Subsequent pushes to that branch automatically produce new immutable Marketplace versions. Stable Bot link resolves the latest successfully published version; version-specific links stay fixed. Failed refresh does not advance the latest pointer.
  • For authors without GitHub, Human asks Bot to publish the prepared committed repository through the platform publication API. The platform provides a read-only Git remote, updated on successful republication, so consumers can use ordinary git pull. Do not expand this into a platform Git push/receive-pack service or GitHub-like collaboration hosting.
  • Imported repositories have a usable trusted origin/upstream and the selected branch's original commit ancestry; do not leave origin pointing at a temporary bundle file.
  • Fast-forward is conditional on compatible ancestry and worktree state. Local commits or rewritten upstream may diverge. Human/Bot handles native merge/rebase; the platform does not force-reset or overwrite local work to manufacture fast-forward.

Honest popularity measurements

Completed local-import receipts are platform clone activity. Failed/replayed receipts do not inflate the count. Views, artifact downloads and distinct importers are separately named. External Git/GitHub clone/fork activity is not counted as a completed platform import. Authorization and version identity bind receipts to the actual completed import path.


Generated by Claude Code

Activity

  1. added this to the v1.1 milestone on Sep 18, 2026
  2. added
    V1.1Milestone v1.1; mirrors the GitHub milestone
    area:docsDocumentation, research, or planning artifact
    feature:registrySoulSnapshot registry and marketplace
    scope:designDesign decision or UX contract
    on Sep 22, 2026
  3. changed the title [-]M7: Soul registry / Marketplace(平台)[/-] [+]Design/tracer: hosted Bot links and Marketplace on Workers/D1/R2[/+] on Sep 30, 2026
  4. changed the title [-]Design/tracer: hosted Bot links and Marketplace on Workers/D1/R2[/-] [+]Design/tracer: public Bot Marketplace with Better Auth on Workers/D1/R2[/+] on Sep 30, 2026
  5. changed the title [-]Design/tracer: public Bot Marketplace with Better Auth on Workers/D1/R2[/-] [+]Spec: public Bot Sharing & Marketplace on Workers/D1/R2[/+] on Sep 30, 2026
  6. added
    scope:hubParent coordination map or epic; not a standalone implementation slice
    scope:specNormative specification for follow-on slices
    and removed
    needs-triageMaintainer needs to evaluate this issue
    scope:designDesign decision or UX contract
    on Sep 30, 2026
  7. changed the title [-]Spec: public Bot Sharing & Marketplace on Workers/D1/R2[/-] [+]Spec: GitHub-indexed Bot Sharing & Marketplace[/+] on Oct 8, 2026
  8. DoodleBears commented on Oct 8, 2026

    @DoodleBears
    ContributorAuthor

    Issue 整理记录 — 2026-10-08 (Asia/Tokyo)

    已按 Human 授权整理当前范围:保留 GitHub-indexed catalog 和本地 Bot zip 路径,将已取消的账号/上传/托管 Git 方案明确归为历史;#913 的真实验收和定时刷新核对仍保留为未完成事项。Project 11 / v1.1。

  9. DoodleBears commented on Oct 8, 2026

    @DoodleBears
    ContributorAuthor

    Human acceptance confirmed — 2026-10-08

    The Human explicitly confirmed in the issue-orchestration task that #913 has been accepted, has no remaining problem, and was closed directly by them. This confirmation resolves the final acceptance gate retained during the earlier triage; the old deployment-time missing-token snapshot is not a current blocker.

    This is a record of Human acceptance, not a claim that this orchestration task independently accessed production credentials, repeated a scheduled refresh or reran the real repository/install/hide flow. Implementation history remains in #916–#922, #958 and their merged PRs.

    The #18 coordination scope can now close with #913; cancelled platform-account/upload work #17 is not reopened. Banner/Bio #1093 stays with Profile & Presentation / v1.2.

    Recorded by codex/local/01a119e5-5192-7832-a281-213e81f6118c.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    V1.1Milestone v1.1; mirrors the GitHub milestonearea:docsDocumentation, research, or planning artifactfeature:registrySoulSnapshot registry and marketplacescope:hubParent coordination map or epic; not a standalone implementation slicescope:specNormative specification for follow-on slices

    Type

    No type

    Projects

    • Status
      Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions