Commits
Every change to Nerve, newest first: what each commit says, who wrote it and when. The code itself isn’t shown. 1691 commits.
Loading the rest of the history…
- feature
website.sitethe Commits page shows every commit, those about secrets/ too (owner)Message
The owner looked at what's in secrets/ (idea notes, and a file of unreadable data) and said "include": the 23 commits that were left out are in. Deployed with the page.
- feature
website.sitea Commits page, the repo's history without the code (owner)Message
The owner: "a commits thingy at the topbar. When you click it, it shows a mirror of commits (minus the code part in the commit)". The build writes every commit's message, author, co-authors and date to /commits.json (scripts/commits.mjs), never its changes; /commits shows them newest first, with a search over the messages and ids, a filter by who wrote them, and each full message folded under its subject. "Commits" sits in the top bar beside More, in More on a phone, and in search. Commits that touch secrets/ or are house.secrets… are left out. Not deployed yet.
- fix
oracle.decian unbounded whole number into a deci asks for otherwise; fields and map reads bound by their types (compiler claude) - feature
synapse.decia whole number into a deci needs otherwise only when its operands let it pass the deci's digitsMessage
Owner, 2026-10-12: "(a)". A `:=` whole number keeps the range its operands allow (literals, typed values, plus, minus, times, div, mod, negation, a local's first range), and `to.deci…` asks for `otherwise` only when that range could hold more digits than the deci; one nothing bounds still asks. corner_shop checks now. Cortex skips examples on cord stand-ins: a loop over a stand-in's list was followed its 100 000 trips at every call, seven minutes for corner_shop.
- feature
oracle.decia whole number into a deci needs otherwise only when its operands let it pass the deci's digits (owner: a) - fix
synapse.genericsa type written inside a generic body names the function's blanksMessage
`let 'sum': <T> = 0;` (examples/corner_shop.nrv) was refused as "a blank `<T>` cannot appear here": a body's own types were resolved without the function's blanks. Locals, counters, local consts, channels and `to.` targets now resolve with them, filled with the instance's types. corner_shop waits on cord (`print.format`, `format`, `str.`) and on a question about `to.deci64` of a `:=` result (tests/examples_pending.txt).
- feature
website.sitecorner_shop, the 500-line example, on the site; an enum's case colours as a case (owner)Message
The owner asked for a 500+ line example and to deploy it once it was in; design claude added examples/corner_shop.nrv (and deci_field_context.nrv) in eaec0ff6, and the site picks both up. Highlighting: `Aisle.fresh`, an enum's case through its type, now colours as a case rather than a field (a call such as `Ticket.next[…]` stays a function). 168 examples, no unscoped spans.
- feature
examples.shopcorner_shop, a 500-line example; a struct field's type is its value's context (owner) - fix
website.sitecopy sits beside the tabs, and an example opens highlighted at once (owner)Message
The owner: "Make it not cover any words. Also, there shouldn't be a delay for syn-highlight & copy button load when example opened." - The Copy button moves out of the code, to the right of the Code / Output tabs. - The build writes every example's highlighted code and output to /examples-full.json (about 80 KB compressed), which the Examples grid fetches in the background; a click finds the example ready, so the highlighting and the copy button are there the moment it opens. If it hasn't arrived, the plain source shows until it does. The pages themselves stay as light as before (putting it in the grid's data would have put all of it in every example page).
- feature
website.sitea copy button on every example's code and output (owner)Message
The owner: "Add easy copy for examples, and deploy". An example's Code and Output each have a Copy button at the top right; it copies the plain source (or the printed output) and says "Copied" for a moment, falling back to the old copy command where the clipboard API isn't allowed. The example's data now carries its plain source.
- fix
website.sitethe Good practice page in today's syntax, and no count to go stale (owner)Message
The owner: "Good practice has outdated syntax", then "yea" to deploying the fix. Design claude brought design/style.md up to date (148f2622: let, cord, immut, no_shadow, at_most, pos, equal_to, no_cheat, print.stored); the page is rebuilt from it. The page's description and its search entry said "twelve practices"; they no longer give a number.
- design
style.publicpractice 7, a public Neuron states its limits in its signatures (owner: b) - design
style.spellingthe good-practice page in today's spellings: let, cord, immut, no_shadow, at_most, no_cheat, print.stored (owner) - feature
website.sitewhy it's called Nerve, and the 2026-10-12 syntax (owner)Message
The owner: "Those, and deploy". - Home quotes the owner on the name, word for word: "Nerve is named Nerve, because its syntax is meant to be easily read by the readers, and Cortex is wired into you, you can't remove it. Or else, Nerve isn't Nerve anymore." - Instant answers in the new spellings: loops as a sentence (`for 'i' from 1 to 10 by 1`, `before`), labelled slices and bounds (`from pos 2, to pos 4`, `int32[min 0, max 100]`), tests needing no lobe; and new answers for `incl`, C through the CNC lobe (`incl.C`, `C.int`), `const` in any body, `case.any` / `case.exact`, and `synapse` / `syn` / `sng` / `suc`. An answer may now have no code to quote. - Highlighting: loop and slice words and bound labels as labels, `incl.*`, `C.int` and friends, C enums by their lowercase names, `size.of[T]`, lowercase C structs built by field, `case.any` / `case.exact` (the old marks deprecated). 166 examples, no unscoped spans.
- test
synapse.boundsthe oracle's bin_bound_printed is refused in Synapse's words - fix
oracle.boundsa bin bound prints with its point, as it is written (compiler claude) - fix
synapse.boundsmessages print bounded types labelled, as they are written nowMessage
A number's bound prints the sides written (`int8[min 1]`, `uint8[min 0, max 100]`), kept in a `Said` that never takes part in what the type is; a length's 0 and no limit are left out (`list[int32][max 3]`), and text with both sides open says `[min 0 graphemes]`, as the oracle prints them (a60029ae).
- decision
name.nerveNerve is named for syntax easily read and a Cortex that cannot be removed (owner) - fix
oracle.boundsmessages print bounded types labelled, as they are written now (compiler claude) - feature
synapse.boundsbounded types label min and max; a side left out is the type's own limitMessage
Owner, 2026-10-12: "a". `int32[min 0, max 100]`, `int32[min 1]`, `list[T][max 10]`, `str.utf8[min 1, max 40 graphemes]`, `channel[T][max 10]`; a side left out is the type's limit (a length's low side 0, its high side unlimited). The old `[lo, hi]`, `min`/`max` as a value, a backwards bound and a bounded channel with no max are refused in the oracle's words; whether a type takes a bound is asked before how it is written. Synapse's tests and bench programs are rewritten.
- feature
synapse.countfor 'i' from 1 to 10 by 1 with before, and slices labelled from, to and beforeMessage
Owner, 2026-10-12. A counting loop reads as a sentence; `before` leaves the end out, up or down: an empty range runs no rounds, any other runs to one step before the end, so the end need not fit the counter's type. While a bound is read, `to`, `before` and `by` end it. Commas, a missing step and `in range[…]` are refused naming the new form. Slices take `from pos`, `to pos` or `before pos` (`before pos 5` is to pos 4); the old forms are refused. Synapse's own tests are rewritten.
- feature
check.genbounded types label their bounds, min and max, a side left out (owner, 2026-10-12; 5a9aa1f2)Message
int32[min 0, max 100], int32[min 1], int32[max 100]; the deci range type too; 13 corpus programs rewritten. The oracle takes them all and 150 generated programs; evaltest 114/0. Differential runs wait for Synapse.
- feature
oracle.boundsbounded types label min and max; a side left out is the type's own limit (owner: a) - feature
check.gencounting loops are for 'i' from A to B by C, and slices label their positions (owner, 2026-10-12; 7a4faf32)Message
The renderer, the printer's two loops and the str.slice line; 24 corpus programs rewritten. The oracle takes all of them and 150 generated programs; evaltest 114/0. Synapse does not read the new forms yet, so differential runs wait for it.
- feature
oracle.countfor 'i' from 1 to 10 by 1 with before, and slices labelled from, to and before (owner) - decision
syntax.boundsbounded types label min and max (owner: yeah) - decision
syntax.sliceslices take from, to and before as labels (owner: yeah) - decision
syntax.rangefor 'i' from 1 to 10 by 1, with before for an end left out (owner) - decision
syntax.convertthe ( ) style is dropped; to. stays (owner) - decision
syntax.typestypes keep their spelling, str.utf8, not utf8 string (owner: a) - decision
syntax.convertconvert['x'](from int32, to int16) replaces to.; ( ) holds a call's details (owner) - feature
synapse.lobesIEG and TAS are the Brainstem's, Broca holds WSTN, UniTect and CAPS; CNC addssucMessage
Owner, 2026-10-12, lobes by expertise. The official lobes are MCPS, AutoGPU, Metal, Nvidia, Vulkan, AI, WSMW, Money, CNC and Broca; listing IEG or TAS is refused as retired, WSTN, UniTect or CAPS naming Broca instead. no_check, NO_FUCKING_CHECKS, on.machine, test fn and must need no lobe; the Brainstem grants vouch and the operator powers to every Neuron, which still lists them; every Neuron marks its unprovable sites, and a site's power is asked about before its mark, as the oracle asks. MCPS no longer needs IEG. The lobe crates follow (broca and cnc added), and `suc` is the command too.
- feature
oracle.lobesIEG and TAS are the Brainstem's, Broca holds WSTN, UniTect and CAPS; the old lobes are refused, naming what to do (owner) - feature
synapse.inclca C enum's later name for a number already named comes through as a constMessage
Owner, 2026-10-12: "a". The first name for a number is the case; a later one is a const holding it, unless a const of that name is already there, so a header aliasing an enum's numbers is no longer refused.
- fix
synapse.inclca pointer is ptr when const stands next to its target, so execv's char *const * comes throughMessage
`T *const *` is `ptr[ptr.mut[T]]`, as the oracle now reads it (cd190827); a `const` after the last `*` still leaves its declaration out. execv, execve, execvp, execvP and getsubopt come through; every header compared matches the oracle's declarations.
- feature
oracle.inclca C enum's later name for a number already named comes through as a const (owner: a) - fix
oracle.inclca struct whose layout an attribute changes, on it or a field, comes through opaque (compiler claude) - fix
oracle.inclcan unnamed struct takes its typedef's name; const in a pointer to pointers is the innermost target's (compiler claude) - fix
synapse.inclca C struct packed or aligned its own way is opaque, not laid out C's default wayMessage
`struct log2phys` sits under `#pragma pack(4)`: written as a `layout.C struct` it had padding C does not, so its last field was read 4 bytes off. A packed or aligned struct, or one with such a field, is now only pointed at, as the oracle has it.
- feature
synapse.cncthe C. types, C enums and function pointers come through; headers speak C.size_tMessage
The eighteen `C.` types are the target's (Apple's ABI on aarch64-macos, AAPCS64 on aarch64-none) and CNC's. A header is read as C writes it, its type names followed until `size_t` and its kind or `int8_t`…`uint64_t`, which come through by name. Named C enums are `layout.C enum`s, an unnamed one's names consts (a `#define` of the name winning); function pointers are `fn[…]` callbacks; unions are opaque; a C type and a C function may share a name (`struct stat`, `stat`). stdio.h gives 81 functions and math.h 178, as the oracle counts.