Build & inspect
Start from the boundaries, then touch the code.
Syxon is a monorepo containing the shared product, the Global Server, native hosts, internal operations, the public site, and constitutional documents. This guide identifies the live spine and the checks that keep old species from regrowing.
Repository map
Where the current system lives.
Syxon/
├── Production/
│ ├── Platforms/web/ shared React product runtime
│ ├── Platforms/shared/ API, identity, heap, publish, local contracts
│ ├── Platforms/ios/ native iOS host
│ ├── Global Server/ Cloudflare Worker and D1 migrations
│ ├── Monitor/ internal custodian dashboard
│ └── *.md protocol and implementation sources of truth
├── main-website/ syxon.org, docs, public witness material
└── REMEMBRANCE-LICENSE-DRAFT.mdThe current boundary documents and route exposure audit outrank obsolete readmes, legacy table names, and compatibility routes.
Local development
Run the Global Server and web client separately.
The Global Server requires Node.js 20.19 or newer because its post-quantum cryptography dependency is native ESM. The deployment helper checks this before running release gates.
Global Server
cd "Production/Global Server"
npm install
npx wrangler devWeb client
cd "Production/Platforms/web"
npm install
npm run devThe web client uses VITE_GLOBAL_API_BASE when set. Local defaults target the Wrangler development origin. Use a test Worker and test persistence for any mutation, paid inference, or broad ingestion rehearsal.
iOS host
cd "Production/Platforms/web"
npm run ios:sync
npm run ios:openThe generated native public bundle is ignored. Change shared behavior in the web/shared kernel, sync it, and add Swift only for responsibilities owned by iOS.
API surface
Route families are capability boundaries.
| Family | Audience | Purpose |
|---|---|---|
/health, public graph, heap, search, knowledge, resolvers | Anonymous, rate-limited | Public reads required by the four spaces. |
/v1/auth/*, /v1/account, actors, collaboration, heap writes | Authenticated | Account, identity bridge, and user-owned mutation. |
/v1/trust/* | Public reads; confirmed visible actors write | Low-risk work claims, attestations, per-domain readouts. |
/v1/ion/* | Public policy reads; authenticated members; scoped reviewers and moderators | Participation levels, the Connect /participation/summary, real-world verification, private issues, unclaimed Actors, explicit duty assignments, conflict responses, and bounded review actions. |
/v1/civic/* | Anonymous accepted findings | Public civic policy and reviewed public cases. |
/v1/ion-commons/civic/* | Custodians | Private intake, evidence, assembly, analysis, appeal, findings. |
/v1/governance/*, proposals, votes | Authenticated or governed | Object-scoped review and decisions. |
| current events, maintenance, audits, indexing | Maintainers | Operational jobs that never belong in casual product UI. |
/v1/ion-commons/* workspace | Internal monitor or custodian | Source spans, packets, candidates, releases, mirrors, rehearsals. |
Every new literal route must be classified in Production/Global Server/ROUTE-EXPOSURE.md. Compatibility utilities are pruning candidates, not invitations for new clients.
Shared contracts
Code the boundary before styling the projection.
Production/Platforms/shared is the cross-client vocabulary for AuthorityScope, Context, Lens, View Recipe, Public Artifact, local ion, Vein, Proposal, Presence, capabilities, and agent intent. Adapters may translate legacy store and route names, but they must not leak those accidents into the stable product model.
- Learn, Think, Explore, and Connect are the only product spaces.
- Canvas geometry, clustering, camera, and animation remain derived presentation.
- Models return semantic intent or proposals; the host owns authority, geometry, persistence, policy, tools, and accessibility.
- Publishing creates a new Public Artifact and receipt; it never mutates a local ion into a public ION.
- Account, Actor, and profile remain separate types and stores.
Authentication
First-party sessions use a secure cookie; API clients may use Bearer tokens.
- Anonymous reads have lower IP-based rate limits and list caps.
- Writes require an authenticated session and explicit authorization at the route.
- Production auth requires durable D1 persistence and fails closed without it.
- Deleted-account tombstones are checked on authenticated requests.
- OAuth callback state and nonce are verified before token issue.
- Trust writes additionally require confirmed email, visible profile, and a verified client signature.
Never put custodian sessions, Cloudflare tokens, recovery material, or provider keys in the repository, URLs, screenshots, or issue logs.
Public addressing
Stable identifiers are the ownership primitive.
| Resource | Browser | Anonymous API |
|---|---|---|
| Published ION | /ion/<id> | GET /v1/public/ions/:id |
| Visible profile | /profile/<actor-id> | GET /v1/public/profiles/:id |
| Reviewed case | /case/<case-id> | GET /v1/civic/cases/:caseId |
Future human-readable handles are mutable aliases that redirect to stable IDs. They must not replace the actor ID or become the ownership root.
Local gates
Run the checks that match the boundary you changed.
Global Server
npm run typecheck
npm run audit:boundaries
npm run audit:route-exposure
npm run audit:retired-species
npm run test:ion-commons
npm testWeb client
npm run audit:copy
npm run attest:horizon
npm run attest:public-addressing
npm run test:e2e
npm run buildPublic site
cd main-website
npm run validate:witness-ledger
npm run buildFocused tests are useful while iterating. Before release, the system-level gates matter because copy, routes, stores, and UI can each reintroduce a boundary violation the local component test cannot see.
Contribution contract
Keep the live spine coherent.
- Start from the five data planes and name every outward transition.
- Do not send private Context to public APIs for convenience.
- Do not imply personhood, expertise, consensus, or Sybil resistance from signatures alone.
- Keep AI output visibly proposed until a person or governed process accepts it.
- Do not create a new public truth store or treat Fracta geometry as canonical state.
- Remove stale routes only after consumers, migrations, checks, and runbooks are accounted for.
- Update implementation docs and public copy when behavior changes.
- Use direct language: say local ion, Public Artifact, proposal, review, released, and not available yet.
Ethical source
The source is available under the draft Remembrance License.
Do not describe the project as OSI open source. The license adds public-interest field-of-use restrictions and remains under specialist legal review. Contributions and downstream use must follow the current repository text, while public descriptions should say ethical source, source available, or Remembrance-licensed.