You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: clean up the three drift items flagged in #112
Follow-up to #112. Three items were flagged there as "not done — would
expand scope". This commit addresses all three.
1. dune-project: relax OCaml constraint to match reality
-------------------------------------------------------
`dune-project` declared `(ocaml (>= 5.1))`, but the current tree builds
clean on 4.14.2 (209/209 tests green; verified in #112). The constraint
was stricter than the actual code requires, so `opam install .` against
a 4.14 switch failed for no real reason.
Bumped down to `(ocaml (>= 4.14))`. `affinescript.opam` regenerated via
`dune build` and the corresponding README note ("dune-project lists
`>= 5.1` but ...") is no longer needed and has been dropped.
If a 5.x-only feature is later introduced, bump the constraint at that
point with a commit that links the offending source line.
2. AI.a2ml: fix .scm → .a2ml drift, align with on-disk reality
--------------------------------------------------------------
`AI.a2ml` told agents to read `.machine_readable/STATE.scm`,
`AGENTIC.scm`, etc., and to "read `.machine_readable/*.scm` files at
session start". None of those files exist — the actual files are
`.a2ml`, living under `.machine_readable/6a2/` (per the canonical rule
that `.scm` is reserved for Guix: `guix.scm`, `.guix-channel`).
Rewrote the file to reflect the actual on-disk layout, split into:
- Core 6a2 metadata under `.machine_readable/6a2/`
- Top-level contractile files (`*.contractile`, `CLADE.a2ml`, anchors)
- Agent guidance (`agent_instructions/methodology.a2ml` etc.)
Workflow steps now point at `STATE.a2ml` and `AGENTIC.a2ml` with the
correct path prefix.
3. CONTRIBUTING.md: replace template placeholders, fix truncation
-----------------------------------------------------------------
`CONTRIBUTING.md` was a half-rendered standards template:
- Started with a bare `# Clone the repository` (no title, no intro,
with a dangling closing ` ``` ` left over from a deleted fence).
- Placeholders never substituted: `{{FORGE}}`, `{{OWNER}}`, `{{REPO}}`,
`{{MAIN_BRANCH}}`.
- Ended mid-sentence in the Conventional Commits format block (line 117
with an unclosed code fence and no closing sections — License / CoC
pointers, PR workflow, etc.).
- Suggested setup steps that don't apply here (`nix develop`,
`toolbox`, `just check`) — affinescript builds with `dune`.
Rewrote as a real contributor guide:
- Title + intro pointing at README.adoc and STATE.a2ml.
- Quick Start matching the README's opam + `eval $(opam env)` recipe.
- Repository Structure that reflects what's actually on disk (lib/,
bin/, stdlib/, packages/, .machine_readable/, js/ for the playground).
- Real GitHub label URLs.
- Branch naming + Conventional Commits + Required Checks +
Pull Requests sections, all closed out properly.
- License + Code of Conduct pointers at the bottom.
Notably dropped: the "Perimeter 1/2/3" framework from the source
template — it does not appear anywhere else in the affinescript tree
(only in vendored sibling-repo `.github/` mirrors), so it was template
baggage rather than project vocabulary.
CODE_OF_CONDUCT.md is still a placeholder template — that's a separate
pass (kept out of this PR to keep it reviewable).
Verification
------------
$ dune build → exit 0
$ dune runtest → 209/209 green
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .build/dune-project
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@
25
25
(description
26
26
"AffineScript combines Rust-style ownership (affine types), compile-time size verification (dependent types), extensible records (row polymorphism), and trackable side effects (extensible effects). It compiles to WebAssembly for efficient, portable execution.")
Copy file name to clipboardExpand all lines: AI.a2ml
+27-12Lines changed: 27 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -2,21 +2,36 @@
2
2
3
3
# Machine-Readable Metadata
4
4
5
-
Project metadata and AI agent configuration files are located in `.machine_readable/`:
5
+
Project metadata and AI agent configuration files live under `.machine_readable/`. All metadata files use the `.a2ml` extension; the `.scm` extension is reserved for Guix (`guix.scm`, `.guix-channel`).
6
6
7
-
- **STATE.scm** - Current project state, progress, blockers, next actions
8
-
- **ECOSYSTEM.scm** - Position in ecosystem, relationships to other projects
9
-
- **META.scm** - Architecture decisions, governance, development practices
Thank you for your interest in AffineScript — a practical language for resource-safe systems, compiling to typed WebAssembly. This guide covers how to set up a working tree, file useful bugs, and submit changes.
7
4
8
-
# Or using toolbox/distrobox
9
-
toolbox create {{REPO}}-dev
10
-
toolbox enter {{REPO}}-dev
11
-
# Install dependencies manually
5
+
For the language itself, start from [`README.adoc`](README.adoc). For project state, blockers, and next-actions, see [`.machine_readable/6a2/STATE.a2ml`](.machine_readable/6a2/STATE.a2ml).
We follow [Conventional Commits](https://www.conventionalcommits.org/):
117
+
111
118
```
112
119
<type>(<scope>): <description>
113
120
114
121
[optional body]
115
122
116
-
[optional footer]
123
+
[optional footer, e.g. closes #N or Co-Authored-By: ...]
124
+
```
125
+
126
+
Common types: `feat`, `fix`, `docs`, `test`, `refactor`, `chore`, `ci`. Common scopes: `lexer`, `parser`, `typecheck`, `codegen`, `verify`, `stdlib`, `cli`, `readme`.
127
+
128
+
### Required Checks
129
+
130
+
Before opening a PR, locally:
131
+
132
+
```bash
133
+
dune build # must exit 0
134
+
dune runtest # must be green
135
+
dune fmt # optional — auto-formats with ocamlformat
136
+
```
137
+
138
+
The `methodology.a2ml` file lists the canonical gate set. CI will rerun `build` + `runtest` plus the security, lint, and policy workflows in `.github/workflows/`.
139
+
140
+
### Pull Requests
141
+
142
+
1. Push your branch and open a PR against `main`.
143
+
2. Use a Conventional-Commit-shaped title.
144
+
3. In the body, summarise the change and link the issue it closes.
145
+
4. Keep PRs focused — split unrelated changes into separate PRs.
146
+
5. CI must be green. Maintainers squash-merge by default; commit message lineage is preserved in the PR body.
147
+
148
+
---
149
+
150
+
## Code of Conduct
151
+
152
+
This project follows the [Code of Conduct](CODE_OF_CONDUCT.md). By participating you agree to abide by it.
153
+
154
+
## License
155
+
156
+
By contributing you agree your contribution is licensed under the project's dual licence (MIT OR AGPL-3.0-or-later), as recorded in [`LICENSE`](LICENSE) and per-file SPDX headers.
Copy file name to clipboardExpand all lines: README.adoc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -387,7 +387,7 @@ Games are one place where the language’s properties are easy to demonstrate. T
387
387
388
388
=== Prerequisites
389
389
390
-
- OCaml 4.14.2+ (dune-project lists `>= 5.1`, but the current tree also builds clean on 4.14.2; the constraint is stricter than the actual code requires)
0 commit comments