SP42 is a Rust-first Wikipedia patrolling workbench. It combines shared patrol logic, a browser shell, a CLI, a desktop shell, and a localhost bridge so the same review flow can be exercised across targets while the project moves toward live Wikimedia verification.
SP42 is currently alpha software. The repository is public and buildable, but it is not yet a production-ready moderation tool.
- A shared core for patrol queueing, diffing, scoring, context building, and MediaWiki action preparation
- A browser shell for patrol review, diagnostics, and local single-user Wikimedia testing
- A CLI and desktop shell that reuse the same core contracts
- A localhost server for coordination, debug surfaces, and the local development auth bridge
- Local and offline development is substantially implemented
- Single-user local Wikimedia token testing is supported through a localhost bridge
- Live Wikimedia integration is still the main remaining external milestone
- Multi-user production auth is not implemented yet
Phase summary:
Phase 1: offline patrol core and queueing, effectively complete for local/offline developmentPhase 2: coordination and shared room state, effectively complete for local developmentPhase 3: browser, CLI, and desktop shells with shared reports, shared shell-state, telemetry, and the interactive patrol rail, effectively complete for local developmentPhase 4: live Wikimedia integration, pending real credentials and external verificationPhase 5: PWA/offline packaging and installability, effectively complete for local development
Detailed status lives in docs/STATUS.md.
SP42 is a platform that owns shared abstraction layers, with domains that consume them. The crates group along that seam.
Platform layers (shared, domain-agnostic):
crates/sp42-types: transport contracts and storage/HTTP/clock abstractionscrates/sp42-coordination: multi-operator collaboration protocol and room statecrates/sp42-wiki: wiki config parsing, registry/default selection, and capability profilescrates/sp42-server: localhost HTTP/WebSocket server, auth bridge, and routingcrates/sp42-devtools: deterministic fixtures and demo-surface builderscrates/sp42-core: shared contracts, runtime primitives, and the scoring engine (also hosts patrolling action/queue logic pending a future split)xtask: workspace build tasks
Patrolling domain (the shipped review workflow):
crates/sp42-live: EventStreams ingestion, recentchanges/backlog polling, and live queue filteringcrates/sp42-reporting: patrol scenario, session-digest, and operator-summary reportingcrates/sp42-cli: CLI shellcrates/sp42-app: browser and PWA shellcrates/sp42-desktop: desktop shell
References / citation domain is incoming (no crate yet); see the PRD and ADRs in
docs/domains/references/.
Supporting trees:
configs/: per-wiki and scoring configurationschemas/: config schemasfixtures/: test fixturesdocs/: platform, domain, and project documentation (see docs/README.md)
- Rust
1.96or newer - The
wasm32-unknown-unknowntarget for browser builds
Optional:
trunkfor serving the browser app during developmentsccachefor faster repeated local Rust builds- A local Wikimedia testing token in
.env.wikimedia.localfor the single-user auth bridge
./scripts/build-local.shBuilds are incremental by default. Pass --clean to any build entrypoint when
you want to purge generated artifacts, including target/, before building.
For a deployable web release build:
./scripts/build-web-release.shFor CI-shaped builds with deterministic caching:
./scripts/ci-all.shFor focused local checks during iteration:
./scripts/check-focused.shcargo run -p sp42-serverUseful local endpoints:
http://127.0.0.1:8788/healthzhttp://127.0.0.1:8788/debug/summaryhttp://127.0.0.1:8788/dev/auth/bootstrap/status
cargo run -p sp42-clirustup target add wasm32-unknown-unknown
./scripts/build-frontend.shTo generate Cargo timings reports:
./scripts/build-timings.shFor live local development with the server and Trunk proxy running together:
./scripts/dev-local.sh
./scripts/dev-local.sh --smokeThe dev command runs sp42-server on 127.0.0.1:8788 and Trunk on
127.0.0.1:4173.
For runtime settings, local credentials, and API base URL behavior, see
docs/platform/RUNTIME_CONFIGURATION.md.
For desktop app packaging, see
docs/platform/DESKTOP_DISTRIBUTION.md.
For a Wikimedia Cloud VPS artifact, run ./scripts/package-vps.sh; the
generated package includes its own deployment README.
./scripts/build-local.sh
./scripts/build-local.sh --clean
./scripts/build-server.sh
./scripts/build-frontend.sh
./scripts/build-web-release.sh
./scripts/package-vps.sh
./scripts/build-desktop.sh --platform macos --debug
./scripts/dev-local.sh --smoke
./scripts/check-focused.sh
./scripts/ci-all.shContributor validation expectations live in CONTRIBUTING.md.
Maintainer/full-CI commands live behind ./scripts/ci-all.sh and the Cargo
aliases in .cargo/config.toml.
Optional shared compiler cache:
- Install
sccachefor faster repeated local builds - Set
SP42_USE_SCCACHE=1to requiresccache - Leave
SP42_USE_SCCACHEunset to auto-enablesccachewhen available without making it mandatory
Documentation is organized to mirror the platform/domain architecture. Start with the docs map, then drill into a layer or domain:
- docs/README.md: documentation map — platform, domains, and project docs
- docs/platform/README.md: platform layers — runtime, desktop, developer surface, design contract, scoring, and ADR-0001–0006
- docs/domains/README.md: domains — patrolling (shipped) and references/citation (incoming)
Project and process docs:
- docs/STATUS.md: phase-by-phase project status
- CONTRIBUTING.md: contributor workflow and local checks
- GOVERNANCE.md: maintainer model, protected areas, and release authority
- CONSTITUTION.md: binding engineering laws
- CODE_OF_CONDUCT.md: participation expectations
- docs/process/prd-protocol.md: PRD protocol for user-facing changes
SP42 is licensed under the GNU General Public License version 3 only
(GPL-3.0-only). See LICENSE.