Context
Audit (2026-05-01) found that of 166 kernel modules that fail to parse, a notable cluster fail with the same root cause: declarations using Rust's array type syntax `[T; N]` instead of Home's `[N]T`.
Examples found by inspection:
- `drivers/pci.home:93` — `var pci_bus_visited: [u8; 32]`
- `arch/arm64/rpi/uart.home:241` — `buffer: [u8; UART_BUFFER_SIZE]`
The parser surfaces these as `Expected '{'` or `Expected ',' after type argument` (9 + 8 = 17 captured cases), but the actual count is higher — the `home ast` subcommand hangs after the first parse error so 110/166 parse failures couldn't be classified beyond timeout.
Affected files (confirmed)
Almost certainly more once a clean parser pass is possible. From inspection of the captured first-error sample:
- All files under `kernel/src/arch/arm64/rpi/` (10 modules)
- `kernel/src/drivers/pci.home`
- `kernel/src/drivers/spi.home`
- `kernel/src/drivers/gpio.home`
- `kernel/src/drivers/bluetooth.home`
- `kernel/src/drivers/nvme.home`
- `kernel/src/drivers/keyboard.home`
- `kernel/src/drivers/ahci.home`
Proposal
- Sweep `kernel/src/**/.home` for the pattern `\[\s[A-Za-z_][^,\]]\s;\s*[^\]]+\]` (regex; will catch most cases — false positives possible in array-literal contexts so review each)
- Replace `[T; N]` → `[N]T` in type position. Do not touch array-literal positions (those are different syntax).
- Easiest as a small codemod — `scripts/codemod-array-syntax.sh` or similar, run once and discard
- Validate by running `home ast` on each touched file post-rewrite (or just compile the kernel after — parse errors are loud)
Risk
The pattern is mechanical but the `home ast` post-error hang means iteration is slow until home-lang/home fixes that (separate issue worth filing). Sweep + manual review per file is the pragmatic path.
Audit reference
`~/Desktop/home-os-kernel-audit-2026-05-01.tsv` on the maintainer's machine. Filter: `parse_status=FAIL` rows where `first_error` matches `Expected '{'` or `Expected ','`.