mirror of
https://github.com/PR0M3TH3AN/bitgate.git
synced 2026-10-27 08:31:00 +00:00
Renames the project and makes it as easy to adopt as BitLogin, which was the stated bar and which it did not previously meet. Rename (ADR 0005): @nostr-governance/* -> @bitgate/*, governance-* elements -> bitgate-*, createGovernanceRuntime -> createBitGate. "Governance" reads as DAO voting to this audience and named a category rather than a product; BitGate names the benefit and joins the bit- family that BitVid and BitRoad compose with. Domain types keep their names — the product is BitGate, the subject matter is still governance. The migration plan is left as written; this ADR records the change rather than rewriting history. Drop-in distribution (ADR 0006): adopting BitGate meant supplying a transport, authoring a policy, and wiring every element in JavaScript. Now: - createRelayTransport(urls) — WebSocket transport with reconnection, backoff, subscription replay, and cross-relay dedupe - policy presets (social, commerce, admin-only) addressable by name; the engine still carries no thresholds of its own - <bitgate-provider> — configuration in markup, with descendants finding the runtime through a bubbling context event rather than DOM walking, which breaks across shadow boundaries - npm run build:widget — a self-contained dist/bitgate.js That last one came from running it in a browser rather than from a test. Bare specifiers resolve in Node and vitest but not in a browser, so the widget source worked everywhere except a plain static page — the one place it exists to serve. The bundle is not committed: consumers build from reviewed source. Also found by running it: the provider's ready event fires during element upgrade, before a page that defines elements after parsing can attach a listener, so it now exposes `ready` as a promise too. Four bugs fixed along the way, three found by new tests and one by the browser: admin state stayed silent when a roster change altered capabilities but no denials; the relay transport sent every subscription twice on connect; the commerce preset computed a meaningless visibility verdict at checkout and could hide a listing from its own seller; <bitgate-status> threw on an unusable decision. 759 tests; lint, typecheck, and both builds clean.
1.9 KiB
1.9 KiB
License and Provenance
Reality check
BitVid is GPL-3.0-or-later. Direct ports of BitVid logic or structure into this repository create a derivative-work obligation. Do not pretend extracted behavior is clean-room MIT unless it truly is independent work.
BitRoad is MIT and is used here only as a target/model reference.
Working stance for this repo
Until a lawyer-ready SPDX audit is done, treat the repository as:
- Tooling / scaffolding — original workspace layout, CI, docs structure.
- Likely GPL-encumbered governance behavior — anything characterized from BitVid moderation thresholds, trust seeds, admin lists, report dedupe, mute expiry, and related evaluator precedence.
- MIT-compatible address concepts — BitRoad coordinate shapes, used as consumer validation cases rather than copied UI/runtime code.
Package boundary intention
| Package | Intention |
|---|---|
@bitgate/core |
Clean API surface + pure evaluator. Avoid BitVid names. |
@bitgate/nostr |
Codecs. Legacy BitVid codec is provenance-sensitive. |
@bitgate/runtime |
Transport/storage orchestration. |
@bitgate/bitvid-compat |
Explicit BitVid-facing adapter. Most provenance-exposed. |
@bitgate/testing |
Fakes and fixture loaders. |
Rules
- No direct imports from BitVid or BitRoad source trees.
- Fixtures copied into this repo must record the source commit in README or metadata.
- If a module is ported from BitVid rather than rewritten cleanly, document it in the PR and keep SPDX compatible with GPL-3.0-or-later.
- Do not dual-license the whole monorepo casually. Prefer one root LICENSE once chosen, and call out adapter exceptions only if they are scoped carefully.
Open decision (checkpoint 0)
Root license has not been finalized in this bootstrap. Recommended default for continued extraction work: GPL-3.0-or-later.
Decision needed from owner before publishing packages.