Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<!-- SPDX-License-Identifier: MPL-2.0 -->
<!-- SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell -->

# Contributing to coord-tui

Thanks for your interest. This repository follows the Hyperpolymath estate
standards defined in [hyperpolymath/standards](https://github.com/hyperpolymath/standards).

## Licence

This project is licensed under **MPL-2.0**. By contributing you agree that
your contributions are licensed under the same terms. Every source file
carries an `SPDX-License-Identifier` header; keep it when editing, and add
one to any new file.

## Development environment

A pinned dev shell is provided:

```sh
nix develop # toolchain: just cargo rustc rustfmt clippy
```

Estate policy is Guix primary / Nix fallback; this repo currently ships the
Nix fallback. A `guix.scm` is welcome if you prefer the primary tier.

## Build and test

This repo uses [`just`](https://just.systems) (the estate uses Justfiles,
never Makefiles). Recipes available here:

```sh
just # list recipes
just fmt # format
just fmt-check # check formatting
just lint # lint
just test-all # run the full suite
just doctor # environment diagnostics
```

## Machine-readable artefacts

This repo carries `.machine_readable/` A2ML files (`STATE.a2ml`,
`META.a2ml`, `ECOSYSTEM.a2ml`, `AGENTIC.a2ml`, `NEUROSYM.a2ml`,
`PLAYBOOK.a2ml`). If your change alters project state, architecture, or
operational steps, update the corresponding file in the same PR — CI
validates them.

## Language policy

The estate restricts which languages may be used. In particular Python, Go,
TypeScript, ReScript, V-lang, Java/Kotlin, Swift and Makefiles are **not**
accepted in new code; AffineScript, Rust/SPARK, Zig, Deno, Gleam, Elixir,
Haskell, Idris2, Agda, Julia and OCaml are. CI enforces this, so check the
policy in `hyperpolymath/standards` before introducing a new language.

## Documentation format

Docs are AsciiDoc (`.adoc`) by default, including `README.adoc`. The
GitHub-required community-health files stay Markdown: `SECURITY.md`,
`CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, `CHANGELOG.md`. Do not add a `.md`
duplicate of a doc that already exists as `.adoc`.

## Pull requests

1. Branch from `main` — do not push to `main` directly; branch protection
requires review and passing checks.
2. Keep the change focused, and explain *why* in the PR body.
3. Make sure governance CI is green. It checks documentation presence,
packaging policy, secrets, licence consistency and workflow security.
4. Security issues: follow `SECURITY.md` — report privately, never in a
public issue.
34 changes: 34 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# SPDX-License-Identifier: MPL-2.0
# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell
#
# Development environment for coord-tui.
#
# Estate policy is Guix primary / Nix fallback (hyperpolymath/standards).
# This is the Nix fallback tier. It is a dev shell, not a package build:
# it declares the toolchain needed to work on this repo, pinned to an
# exact nixpkgs revision per the estate SHA-pinning rule.
#
# Packages mirror the build tooling actually present in this repo
# (just rust) — not a generic estate default.
#
# nix develop # enter the shell
# nix flake check # verify this file evaluates (run before committing)
{
description = "coord-tui development environment";

inputs.nixpkgs.url = "github:NixOS/nixpkgs/b134951a4c9f3c995fd7be05f3243f8ecd65d798";

outputs = { self, nixpkgs }:
let
systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
forAllSystems = f:
nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
in
{
devShells = forAllSystems (pkgs: {
default = pkgs.mkShell {
packages = with pkgs; [ just cargo rustc rustfmt clippy ];
};
});
};
}
Loading