From ced85d1766cf17b29d3c10ad5b0ad56cfc1076d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20H=C3=B8iby?= Date: Thu, 4 Jun 2026 13:10:36 +0200 Subject: [PATCH] chore: remove internal working files from public repo Remove agent/scratch files that don't belong in the public OSS repo (IN_FLIGHT.md, CLAUDE.md) and add them to .gitignore so they stay out. Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitignore | 5 +++ CLAUDE.md | 100 --------------------------------------------------- IN_FLIGHT.md | 47 ------------------------ 3 files changed, 5 insertions(+), 147 deletions(-) delete mode 100644 CLAUDE.md delete mode 100644 IN_FLIGHT.md diff --git a/.gitignore b/.gitignore index d4582f8..8163ec4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,8 @@ build/ .venv/ venv/ .pytest_cache/ + +# internal working files — not for public repo +IN_FLIGHT.md +CLAUDE.md +.gemini/ diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index ec02b95..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,100 +0,0 @@ -# bsv-brc-python - -Python implementations of BSV BRC protocols. Opensource under Open BSV License. -Supersedes standalone brc52-python (now included as brc052 subpackage). - -## Packages - -- **BRC-52** (`bsv_brc.brc052`) — Identity certificates, AES-256-GCM, signing/issuance -- **BRC-94** (`bsv_brc.brc094`) — Schnorr proof of ECDH shared secrets (BRC-69 + BRC-93 fix) -- **BRC-103/104** (`bsv_brc.brc104`) — ASGI mutual-auth adapter wrapping `bsv.auth.Peer` -- **BRC-105** (`bsv_brc.brc105`) — HTTP 402 micropayment middleware + client -- **BRC-22** (`bsv_brc.brc22`) — server-side overlay topic submission (`/submit`) -- **BRC-24** (`bsv_brc.brc24`) — server-side lookup services / feed (`/lookup`) -- **BRC-87** (`bsv_brc.brc87`) — `tm_`/`ls_` overlay name validation -- **overlay** (`bsv_brc.overlay`) — `OverlayEngine`: a runnable overlay node -- **integration** (`bsv_brc.integration`) — `build_brc_app` stacks auth + payments -- **crypto** (`bsv_brc.crypto`) — BRC-42/43 key derivation (shared primitives) - -## Design philosophy — DO NOT duplicate py-sdk - -`bsv-sdk` (py-sdk) already provides the *client* side of overlay -(`LookupResolver`, `SHIPBroadcaster`, `TopicBroadcaster`, -`AdmittanceInstructions`, `OverlayAdminTokenTemplate`, `Historian`), -BEEF parse/serialize, SPV, certificates/keyrings, and `LocalKVStore`. -bsv-brc's value is the **server side + web ergonomics** py-sdk leaves -open. Reuse py-sdk dataclasses; never redefine them. This is the same -lesson as the 0.2.0 pivot (which deleted a duplicate BRC-103/104). - -## Structure - -``` -src/bsv_brc/ - brc052/ — AES-GCM, certificate binary/signing/issuance - brc094/ — Schnorr proof generation/verification, counterparty linkage - brc104/ — bsv.auth ASGI adapter (AuthMiddleware), wire/headers - brc105/ — NonceManager, middleware (Starlette), client, pricing - brc22/ — TopicManager ABC, TopicEngine, adapters/asgi (/submit) - brc24/ — LookupService ABC, OutputRef, wire (binary output-list) - brc87.py — tm_/ls_ overlay name validation (pure stdlib) - overlay/ — OverlayEngine, storage (in-mem + SQLite), topic_root, client (OverlayClient), adapters/asgi - ../docs/upstream/ — ready-to-file py-sdk bug reports (2 confirmed in 2.1.3+HEAD) - integration.py — build_brc_app, BRC-29 internalize verifier, PathPricing - crypto/ — BRC-42 ECDH, BRC-43 key derivation -``` - -Goal: bsv-brc = OSS foundation for building social apps on overlay -(an open-source peck.to). `examples/social_feed.py` is the reference -seed. overlay.social model = chain anchor + overlay read layer -(GASP-sync + per-topic Merkle roots, NOT SHIP/SLAP — so no BRC-88) + -BRC-100 identity + 3 write channels (token-state / input-script-data / -OP_RETURN) + BRC-77 verifiability. py-sdk already has BRC-77 -(`bsv.signed_message`) and UHRP (`bsv.storage`) — compose, don't dup. - -Lookup wire: binary output-list = format py-sdk *intends* (its -`_parse_binary_response` has a read_var_int vs read_var_int_num bug, -present through 2.1.3 + HEAD → file upstream, report in docs/upstream/). -BEEF-backed answers ship via the JSON path (`Accept: application/json`). - -Per-topic state root: VERIFIED against overlay.peck.to /state (canonical -peck-social-overlay §3.2 algo = sha256 of sorted "txid:vout" set joined -by \n; empty=sha256(""); matches live e3b0c442... empty-root). Implemented -in overlay/topic_root.py + OverlayEngine.topic_root. Gate OPEN. Still -gated: binary trailing-BEEF layout, BRC-35 (overlay.peck.to has no -tm_kvstore), on-chain anchoring + GASP sync. - -bsv-sdk pinned >=2.1.3 (was 2.0.0b1 beta). Probe live overlay with -`curl https://overlay.peck.to/{state,listTopicManagers,listLookupServiceProviders}`. - -Infra-bootstrap idea (Thomas): OSS libs can default to peck-hosted -endpoints (overlay.peck.to live; storage.peck.to/headers.peck.to not in -the domain map yet) so apps bootstrap on peck infra, swappable to -self-host. Confirm which endpoints are live before defaulting to them. - -> Note: tests run in `.venv2` (has `bsv-sdk==2.0.0b1` with `bsv.auth`). -> `.venv`/`venv` are stale and lack `bsv.auth` — ignore them. - -## Run tests - -```bash -python3 -m venv .venv && source .venv/bin/activate -pip install -e ".[starlette,dev]" -pytest -v -``` - -## Dependencies - -`bsv-sdk` on PyPI (source: [`bsv-blockchain/py-sdk`](https://github.com/bsv-blockchain/py-sdk)) -— BSV protocol primitives: secp256k1, signing, key derivation. -Note: not to be confused with `@bsv/sdk` on npm, which is the TypeScript SDK. - -`pycryptodomex` — AES-256-GCM. - -Optional: `starlette` (middleware extra). - -## Design - -- Framework-agnostic core, Starlette middleware as optional extra -- Compatible with @bsv/sdk TypeScript and brc52-python -- BRC-105 middleware mirrors @bsv/payment-express-middleware API -- verify_payment callback = integration point for wallet.internalizeAction() diff --git a/IN_FLIGHT.md b/IN_FLIGHT.md deleted file mode 100644 index d616bb3..0000000 --- a/IN_FLIGHT.md +++ /dev/null @@ -1,47 +0,0 @@ -# IN_FLIGHT — bsv-brc-python -_Sist oppdatert: 2026-06-02_ - -## Status: 0.3.0 PUSHET + TAGGET (origin/master ec7fbcb, tag v0.3.0) 2026-06-03 -py-sdk-bugene FILET: py-sdk#158 (lookup-parser), #159 (internalize-BEEF). peck-overlay-schema /lookup-fix DEPLOYET av Thomas (rev 126) — `/lookup` funker live nå (returnerer output-list+AtomicBEEF). -**Full interop-bevis FERDIG**: vår `state_root` over de 4 live tm_peck-bio-profile-outpoint-ene = overlay.peck.to sin publiserte root `b26b1c65...` byte-for-byte (pinnet som offline regresjonstest). Tom-root `e3b0c442` også live-matchet. Topic-root-gaten HELT lukket. 185 tester. -**PyPI: PUBLISERT 2026-06-03** — 0.3.0 lastet opp av Thomas (https://pypi.org/project/bsv-brc/0.3.0/). `pip install bsv-brc` gir nå hele verktøykassa. (PyPI JSON-API cacher ~noen min, så /pypi/bsv-brc/json kan vise 0.2.0 en stund — ufarlig.) - -## Sist gjort (2026-06-03, etter PyPI 0.3.0) -- **Monorepo adopsjons-survey** (workflow): kart over hvor bsv-brc kan dogfood-es — se minne [bsv-brc adopsjons-kart]. peck-web bruker ALLEREDE bsv_brc auth. -- **Overlay-KLIENT bygget** (`bsv_brc.overlay.OverlayClient`, committet d42f38a master, UNRELEASED→0.4.0): submit/lookup/state/verify_state, default overlay.peck.to, dependency-fri (urllib) + rene parsere for async. **Live-verifisert mot overlay.peck.to**. 193 tester. CHANGELOG [Unreleased]. -- **Bitcom/Bitcoin-Schema-bygger bygget** (`bsv_brc.bitcom`, committet 85b63e0): B/MAP/AIP op_return-bygger (pipe=0x01 0x7c, fikser raw-0x7c-bug) + parser (speiler overlay.peck.to) + AIP via BSM. 210 tester. -- Adopsjons-rekkefølge (Thomas: "alle, men start på 1"): [x] overlay-klient, [x] OP_RETURN/Bitcoin-Schema-bygger. Neste roadmap-gap: paymail-modul (3× ~600-linjers hand-rull), typed peck-anchor-klient, headers.peck.to ChainTracker, HKDF-salt v2 identitets-helper. ELLER quick dogfood-wins (peck-certifier brc052-swap + re-eksport-fiks, merdata AES). - -## Mål -OSS-fundament for å bygge sosiale apper på overlay (open-source peck.to). `examples/social_feed.py` = referanse-frøet. Modell (overlay.social): chain-anchor + overlay read-layer (GASP-sync + per-topic Merkle-roots, IKKE SHIP/SLAP) + BRC-100-identitet + 3 skrivekanaler + BRC-77. - -## Sist gjort (0.3.0, bygget — IKKE pushet) -- **Komplett, produksjonsklar overlay-node**: BRC-22 /submit, BRC-24 /lookup, `OverlayEngine` (admit+spend+events), `create_overlay_app`. **BEEF-backed JSON-svar** (Accept: application/json). **`SqliteOverlayStorage`** + in-mem. `[overlay]` extra. -- Integrasjon: `build_brc_app` (auth+pay), BRC-29-verifier, PathPricing. brc104 released. py.typed. -- Eksempler: `full_app.py`, `social_feed.py` (smoke-testet E2E). -- **HERDET via adversarisk review-workflow (11/11 funn fikset + regresjonstester)**: komma-X-Topics (py-sdk-interop var KNUST), coins_to_retain spendes nå korrekt, submit atomisk (asyncio.Lock), SQLite read-lås, body-cap (413), ingen exception-lekkasje, 32-byte txid-validering, to docstring-fikser. Nytt: `src/bsv_brc/_asgi.py` (delt capped body-reader). -- **BRC-87** (`bsv_brc.brc87`): tm_/ls_ navnevalidator. Master-regler verifisert mot spec. -- **Per-topic state root GATE ÅPNET**: leste peck-overlay-schema/src/server.ts (spec §3.2) — root = `sha256` av deduped, sortert `"txid:vout"`-sett join'et med `\n` (tom=sha256('')). Skrev om `overlay/topic_root.py` (`state_root`/`outpoint_string`/`EMPTY_STATE_ROOT`) + `OverlayEngine.topic_root/topic_roots` til å MATCHE eksakt. **Live-verifisert** mot overlay.peck.to/state (tom-root e3b0c442... = tm_peck-cat-funding count=0). -- **bsv-sdk bumpet 2.0.0b1→2.1.3** (pin + installert), alle tester grønne, ingen shim-breakage. -- **2 py-sdk-bug-rapporter** i `docs/upstream/` — begge bekreftet i 2.1.3 + HEAD, ingen eksisterende issue. Klare til filing. -- **`GET /state`-endepunkt** lagt til `create_overlay_app` (`make_state_route` + `OverlayEngine.topic_state/topic_states`) — samme verifiserbare kontrakt som overlay.peck.to (`{status, topics:[{topic,count,stateRoot}]}`). social_feed-noden eksponerer det nå. -- **184 tester grønne** (.venv2). Wheel rent. - -## Live overlay-API (overlay.peck.to, sondert 2026-06-02) -- `/state` → per-topic stateRoot (spec §3.2). `/listTopicManagers` + `/listLookupServiceProviders` (peck-schema, tm_peck-bio-profile/-handle, tm_peck-cat/-funding). -- `/lookup` med `{}`-query gir JSON-feil "lookupResult.map is not a function" — mulig bug i peck-overlay-schema lookup-handler ELLER feil query-form (verdt å sjekke). Peck svarer JSON, ikke binær. -- peck-schema-root dekker KUN ekte-BEEF /submit (deres /submit-tx bypasser engine→outputs). - -## Avklart denne økta -- DROPP BRC-88/SHIP-SLAP — ikke i overlay.social-modellen (GASP/Merkle i stedet), Thomas har det ikke selv. -- py-sdk HAR allerede BRC-77 (`bsv.signed_message`) + UHRP (`bsv.storage`) → ikke dupliser. -- Infra-bootstrap-vinkel: OSS-libs kan default-e til peck-endepunkter. overlay.peck.to live; storage.peck.to/headers.peck.to IKKE i domenekart ennå — bekreft før default. - -## Neste (Thomas velger) -- Sosial-data-lag (3 kanaler / Bitcoin-Schema-hybrid) = UTSATT, arkitektur i bevegelse. Sannsynlig egen lib. -- Kandidater: GASP-sync + on-chain root-anchoring (når root-format verifisert mot live overlay); infra-bootstrap-preset (krever live-endepunkt-bekreftelse); BRC-35 (interop-gate); bump bsv-sdk 2.0.0b1→2.1.3 (egen sak, fikser IKKE bugene). (BRC-87 + per-topic Merkle-root FERDIG.) -- Fil de 2 py-sdk-bug-rapportene i `docs/upstream/` til github.com/bsv-blockchain/py-sdk (Thomas / via BSV Association). Begge bekreftet i 2.1.3 + HEAD. - -## Blokkert / venter på -- peck-overlay /lookup-fix (f122089) venter DEPLOY av Thomas. Etter deploy: smoke-test `POST /lookup {"service":"ls_peck-bio-profile","query":{}}` → skal gi output-list, ikke .map-feil. -- Valgfritt: tag v0.3.0 + PyPI-publisering (ikke gjort). GASP/BEEF-binær-format/BRC-35 venter videre interop-verifisering.