Skip to content

Commit 581c7e9

Browse files
authored
docs: add ecosystem section to CONTRIBUTING.md, fix stale release info (#873)
1 parent 0311522 commit 581c7e9

3 files changed

Lines changed: 45 additions & 46 deletions

File tree

AGENTS.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ block/sprout (source)
2626
└─── sprout-backend-blox (Blox compute provider for Desktop agent launch)
2727
```
2828

29-
See [RELEASING.md](RELEASING.md) for the desktop release flow across `block/sprout` and `sprout-releases`.
29+
See [RELEASING.md](RELEASING.md) for the desktop release flow and
30+
[CONTRIBUTING.md § Ecosystem](CONTRIBUTING.md#ecosystem) for contributor
31+
access information.
3032

3133
---
3234

CONTRIBUTING.md

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ reach out in the community channels.
1717
4. [Code Style](#code-style)
1818
5. [Making a Pull Request](#making-a-pull-request)
1919
6. [Architecture Overview](#architecture-overview)
20-
7. [How to Add a New Event Kind](#how-to-add-a-new-event-kind)
21-
8. [How to Add a New MCP Tool](#how-to-add-a-new-mcp-tool)
22-
9. [How to Add a New API Endpoint](#how-to-add-a-new-api-endpoint)
23-
10. [License and CLA](#license-and-cla)
20+
7. [Ecosystem](#ecosystem)
21+
8. [How to Add a New Event Kind](#how-to-add-a-new-event-kind)
22+
9. [How to Add a New MCP Tool](#how-to-add-a-new-mcp-tool)
23+
10. [How to Add a New API Endpoint](#how-to-add-a-new-api-endpoint)
24+
11. [License and CLA](#license-and-cla)
2425

2526
---
2627

@@ -279,40 +280,42 @@ required. The scope (in parentheses) is optional but encouraged.
279280

280281
## Architecture Overview
281282

282-
See [README.md](README.md) for the full crate map and architecture diagram.
283-
The short version:
283+
See [ARCHITECTURE.md](ARCHITECTURE.md) for the full system design and
284+
[AGENTS.md](AGENTS.md#repo-structure) for the complete crate map. The key
285+
design principles:
284286

285-
```
286-
sprout-relay ← WebSocket server, REST API, event ingestion
287-
sprout-core ← Shared types, event verification, filter matching
288-
sprout-db ← Postgres access layer (sqlx)
289-
sprout-auth ← NIP-42 + NIP-98 + API token scopes
290-
sprout-pubsub ← Redis fan-out
291-
sprout-search ← Typesense full-text search
292-
sprout-audit ← Tamper-evident hash-chain audit log
293-
sprout-workflow ← YAML-as-code workflow engine
294-
sprout-acp ← ACP harness (bridges Sprout relay events to AI agents via stdio)
295-
sprout-proxy ← Nostr client compatibility layer
296-
sprout-sdk ← Typed Nostr event builders (used by sprout-cli)
297-
sprout-media ← Blossom/S3 media storage
298-
sprout-cli ← Agent-first CLI for interacting with the relay
299-
sprout-admin ← Operator CLI
300-
sprout-test-client← Integration test harness
301-
desktop/ ← Desktop app (Tauri 2 + React 19 + Vite + Tailwind)
302-
```
303-
304-
**Key design principle:** The relay is the single source of truth. All state
305-
flows through the event store. Crates communicate through the database and
306-
Redis pub/sub — not through direct function calls across crate boundaries
307-
(with the exception of `sprout-core` types, which are shared everywhere).
287+
**The relay is the single source of truth.** All state flows through the
288+
event store. Crates communicate through the database and Redis pub/sub — not
289+
through direct function calls across crate boundaries (with the exception
290+
of `sprout-core` types, which are shared everywhere).
308291

309-
**Event kinds** are the only switch. Every action in the system — a message,
292+
**Event kinds are the only switch.** Every action in the system — a message,
310293
a reaction, a workflow step, a canvas update — is a Nostr event with a kind
311294
integer. Adding a new feature means defining a new kind. No breaking changes
312295
to existing clients.
313296

314297
---
315298

299+
## Ecosystem
300+
301+
Sprout is developed across multiple repositories. This repo (`block/sprout`)
302+
is the open-source home for all application code — the relay, desktop app,
303+
mobile app, CLI, and agent harness. Internal repositories handle
304+
enterprise-signed builds and infrastructure deployment.
305+
306+
See [AGENTS.md § Ecosystem](AGENTS.md#ecosystem) for the full repo table and
307+
dependency diagram.
308+
309+
**External contributors:** Fork `block/sprout`, open a PR, and CI runs
310+
automatically. No special access is required.
311+
312+
**Block team members:** See the internal
313+
[sprout-releases CONTRIBUTING.md](https://github.com/squareup/sprout-releases/blob/main/CONTRIBUTING.md)
314+
for team access setup, onboarding, and the full repo inventory. See
315+
[RELEASING.md](RELEASING.md) for the release process.
316+
317+
---
318+
316319
## How to Add a New Event Kind
317320

318321
1. **Define the kind constant** in `sprout-core/src/kind.rs`:

RELEASING.md

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -68,29 +68,23 @@ If the automated flow isn't suitable (e.g., building from a non-main ref):
6868

6969
## Internal Releases
7070

71-
After the OSS release ships, trigger an internal build via the **sprout-releases** Buildkite pipeline:
72-
73-
1. Go to the [sprout-releases pipeline](https://buildkite.com/runway/sprout-releases) and click **New Build**
74-
2. Fill in the input fields:
75-
76-
| Field | Value | Notes |
77-
|-------|-------|-------|
78-
| `version` | `0.3.0` | Semver, no `v` prefix |
79-
| `sprout_ref` | `v0.3.0` | The OSS git tag — use the tag, not a branch name |
80-
| `relay_url` | *(default)* | Pre-filled with the production relay; usually leave as-is |
81-
| `publish_latest` | `true` | Updates `latest.json` on Artifactory so installed apps auto-update. Set to `false` for test builds. |
82-
83-
Internal desktop builds display a `-block` suffix in the version (e.g., `v0.3.0-block` in the Settings panel). This distinguishes them from OSS builds at a glance. iOS builds and GitHub release tags use the clean version (`0.3.0`) since Apple's `CFBundleShortVersionString` rejects pre-release suffixes.
71+
After the OSS release ships, trigger an internal build via the
72+
[sprout-releases Buildkite pipeline](https://buildkite.com/runway/sprout-releases).
73+
See the [sprout-releases README](https://github.com/squareup/sprout-releases#cutting-a-release)
74+
for the full step-by-step instructions and input field reference.
8475

8576
---
8677

8778
## What Gets Published
8879

8980
Each release produces two GitHub releases:
9081

91-
1. **`v<version>`** — the user-facing release with the `.dmg` installer (macOS) and `.deb`/`.AppImage` (Linux).
82+
1. **`v<version>`** — the user-facing release with the `.dmg` installer
83+
(macOS).
9284

93-
2. **`sprout-desktop-latest`** — a rolling pre-release for the Tauri auto-updater containing `latest.json`, the signed `.tar.gz` archive, and its `.sig` signature.
85+
2. **`sprout-desktop-latest`** — a rolling pre-release for the Tauri
86+
auto-updater containing `latest.json`, the signed `.tar.gz` archive,
87+
and its `.sig` signature.
9488

9589
---
9690

0 commit comments

Comments
 (0)