diff --git a/.gitignore b/.gitignore index e0c07ad92..3ed8b9da6 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,9 @@ playwright-report/ test-results/ blob-report/ +# Root npm lockfiles are accidental; desktop uses pnpm in /desktop. +/package-lock.json + # sqlx offline query data (generated, not portable) .sqlx/ diff --git a/README.md b/README.md index 1af758d93..0985df6f8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- Sprout + Sprout

# sprout diff --git a/VISION_PROJECTS.md b/VISION_PROJECTS.md index 600c6fe71..fb4fc73c7 100644 --- a/VISION_PROJECTS.md +++ b/VISION_PROJECTS.md @@ -36,7 +36,7 @@ The portable representation is a NIP-34 repo announcement (kind:30617) — stand Branch protections live in the same event — `sprout-protect` tags. The relay enforces them at the git transport layer. Only npubs listed in `push-allowed` can push to protected branches. Force pushes are blocked. Merges require the specified number of signed approval events (kind:46011) before the relay accepts the push. -Agents inherit access from their owner via [NIP-OA](NIP-OA.md). The relay checks: does the push carry a valid NIP-OA auth tag, and is the owner pubkey in that tag listed in `push-allowed`? If yes, the push is accepted — the agent's own pubkey doesn't need to be in the list. Add a maintainer, and all their authorized agents can push. Remove the maintainer, and all their agents lose access instantly. Agents without NIP-OA attestation are treated as their own identity and must be listed explicitly. +Agents inherit access from their owner via [NIP-OA](docs/nips/NIP-OA.md). The relay checks: does the push carry a valid NIP-OA auth tag, and is the owner pubkey in that tag listed in `push-allowed`? If yes, the push is accepted — the agent's own pubkey doesn't need to be in the list. Add a maintainer, and all their authorized agents can push. Remove the maintainer, and all their agents lose access instantly. Agents without NIP-OA attestation are treated as their own identity and must be listed explicitly. Standard NIP-34 clients see a normal repo. gitworkshop.dev renders it. ngit-cli works with it. Sprout clients read the `sprout-` tags and wire up the channel and project UI. One event, two audiences, zero custom kinds. @@ -115,7 +115,7 @@ A new contributor submits a patch. Before you read the code: This works because identity is cryptographic and portable. Your npub, your contribution history, and your trust relationships travel with you. No platform owns your reputation. -**For agents**: an agent with a persistent npub and verifiable contribution history is fundamentally different from an anonymous generator. The agent's reputation is on the line with every contribution, across every project it touches. See [NIP-OA](NIP-OA.md) for the owner attestation mechanism that proves which human authorized which agent — independent keys, contained blast radius. +**For agents**: an agent with a persistent npub and verifiable contribution history is fundamentally different from an anonymous generator. The agent's reputation is on the line with every contribution, across every project it touches. See [NIP-OA](docs/nips/NIP-OA.md) for the owner attestation mechanism that proves which human authorized which agent — independent keys, contained blast radius. --- diff --git a/sprout-icon.png b/docs/assets/sprout-icon.png similarity index 100% rename from sprout-icon.png rename to docs/assets/sprout-icon.png diff --git a/sprout.png b/docs/assets/sprout.png similarity index 100% rename from sprout.png rename to docs/assets/sprout.png diff --git a/NIP-OA.md b/docs/nips/NIP-OA.md similarity index 100% rename from NIP-OA.md rename to docs/nips/NIP-OA.md diff --git a/NIP-RS.md b/docs/nips/NIP-RS.md similarity index 100% rename from NIP-RS.md rename to docs/nips/NIP-RS.md diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 0b4c0b6e6..000000000 --- a/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "sprout", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} diff --git a/tests/e2e_relay.rs b/tests/e2e_relay.rs deleted file mode 100644 index b34a92d51..000000000 --- a/tests/e2e_relay.rs +++ /dev/null @@ -1,11 +0,0 @@ -// NOTE: This file is a placeholder. -// -// The actual E2E integration tests live in: -// crates/sprout-test-client/tests/e2e_relay.rs -// -// Workspace-root `tests/` requires a [package] section in Cargo.toml. -// Since this is a pure workspace manifest, integration tests must live -// inside a member crate. -// -// Run E2E tests with: -// cargo test -p sprout-test-client --test e2e_relay -- --ignored