Contributing
IntoChat OS is open source under the MIT license. Code contributions go to intochat/os; contributions to these docs go to this repository.
The full contribution rules are in CONTRIBUTING.md and the license text is in LICENSE (MIT).
Workflow
- Fork the repository and branch from
master. - Make a focused change. Propose new concepts, contract changes and module-shape changes in an issue before implementing them.
- Open a pull request against
master. CI must pass before merge.
Build and test
- On Windows, build individual projects rather than the whole solution:
dotnet build <project>.csproj. CI buildsIntochat.OS.slnxin Release. - Run tests per project with
dotnet test. Test projects are split by suffix:*.Tests.Unit,*.Tests.Integration,*.Tests.Hosting,*.Tests.E2E. See Testing. - Use the shared module-owned test harness instead of private fixtures.
- For runtime changes, check observed behavior and telemetry as well as automated tests.
Three helper commands keep the repository consistent after you add or change a module:
dotnet run scripts/sync-solution.cs
pwsh scripts/capture-all.ps1
dotnet run scripts/module-readmes.csNew to modules? Follow Write a module.
Coding rules
- Warnings are errors, nullable is enabled and package versions are central.
- Name facts as sentences, for example
SomethingHappens. - Do not write boilerplate XML summaries. Keep comments accurate and short.
- Follow the existing neuron, signal, behavior and connector model.
- Keep contracts in
IntoChat.OSand moduleContractsassemblies, and keep C# wire records and Dart mirrors aligned. - Preserve per-brain ownership and kernel-stamped provenance. Do not derive authority from settings.
- Use concrete arrays in persisted state, avoid self-calls on non-reentrant grains and renew observer leases.
- Never wipe user state, replace keys or assume stored data is disposable.
Documentation
Narrative documentation lives in this repository. Edit the Markdown, then run npm run build and npm run check:links. Product plans are kept in a private handbook and are not part of this site.
Releases
The VERSION file holds the version. Publishing a GitHub release with the tag v<VERSION> runs the release workflow, which packs and pushes the IntoChat.OS.* NuGet packages and the os, os-ui and os-sandbox images. The workflow refuses a tag that does not match VERSION and a commit whose CI has not passed.