Add design/glossary.md (25 entries) and wire it in via the
paths.glossary profile slot, making it standing reading for every
skill and agent role.
Built by the glossary skill's bootstrap procedure: five read-only
glossary-extractor agents swept the prose surface (design/contracts,
design/models, design/INDEX.md, docs/PROSE_ROUNDTRIP.md, and the 60
docs/specs in three blocks), reporting recurring domain-concept terms
and their competing synonyms with frequencies. docs/plans was
excluded as a derived execution artefact that mirrors spec/contract
vocabulary rather than originating it.
Three apparently-contested clusters were resolved by record-reality
against the authoritative current docs (CLAUDE.md + design/): the
retired .ailx extension yields to .ail; Form-A wins over "Form A"
(13:2); round-trip wins over roundtrip (15:10). The one genuine
nomenclature choice -- the canonical term for the structured hashable
form -- was decided by the user: JSON-AST is canonical, .ail.json is
its on-disk file. The local conformance check caught and removed a
Form-B / JSON-AST Avoid-list collision before write.
Skills Issue #1 (compound-hallucination hardening) shipped a
new optional profile slot, `spec_validation.parsers`, that maps
markdown fence labels to validation commands. Three new gates
consume it: brainstorm Step 7 parse-every-block, planner Step 5
parse-the-bytes-you-inline, and the grounding-check code-block
parse pass. A profile written before the slot existed has all
three running as silent no-ops — exactly the failure mode the
raw-buf.2 spec slipped through.
Register three fence labels:
- `ail` → `ail check {file}` — Form-A surface modules. `check`
is strictly broader than `parse` (catches the parser-novel
head class AND the type-level rejects an MVP-only construct
triggers, e.g. polymorphic fn-type without explicit forall),
so it would have BLOCKED the storage-tag / RawBuf-shorthand /
implicit-forall chain at Step 7 of brainstorm.
- `ail-json` → `ail check {file}` — JSON AST form; `check`
auto-detects extension.
- `ll` → `llvm-as {file} -o /dev/null` — LLVM IR snippets in
codegen specs.
Verified `ail check` works on a standalone Form-A file (no
workspace setup needed; the loader injects prelude + kernel).
The skill system migrated to a standalone plugin
(http://192.168.178.103:3000/Brummel/Skills.git, local clone at
~/dev/skills/) during this branch's earlier commits. AILang now
consumes the plugin via:
- ~/.claude/skills/<name> and ~/.claude/agents/<name> symlinks
created by ~/dev/skills/install.sh (user-level, installed
once, visible from any project).
- A project profile at .claude/dev-cycle-profile.yml declaring
paths, commands, vocabulary, naming policy, issue tracker,
notification command, and pipeline customisations.
Changes:
- ADD .claude/dev-cycle-profile.yml — AILang's profile against
the plugin's schema (paths spec_dir/plan_dir/design_ledger/
design_contracts/design_models/code_roots/bench_dir/
public_interface/fieldtest_examples; counter-prefix naming
policy; cargo build/test/doc commands; bench/check.py +
compile_check.py + cross_lang.py as regression; bench/
architect_sweeps.sh as architect sweep; milestone/iteration/
contract vocabulary; design-ledger walk + git-log standing
reading; bencher gets concrete RC/bump reading paths;
Gitea issue-tracker URL + tea list_cmd; ~/.claude/notify.sh
as notification command; the full eight-skill pipeline).
- REMOVE skills/ in-tree (21 files: 7 SKILL.md + 13 agent files
+ skills/README.md). All eight skills + all twelve agents
now live in ~/dev/skills/ as generic prose that reads slots
from the profile.
- REMOVE .claude/skills/ + .claude/agents/ symlinks (15
symlinks). User-level ~/.claude/skills/ + ~/.claude/agents/
installed by the plugin take over discovery.
- UPDATE CLAUDE.md:
* Skill-system section rewritten to point at ~/dev/skills/
+ the profile file.
* "My role: orchestrator" agent names dropped the ailang-
prefix (implementer, tester, debugger, architect).
* "Authority over `skills/`" became "Authority over the
skill plugin" — naming where plugin edits vs profile vs
CLAUDE.md edits live.
* Bug-fixes-TDD pointer updated to ~/dev/skills/debug.
* Milestone-cycle section notes the cycle/iteration
vocabulary mapping the profile carries.
* design-ledger-roles paragraph dropped the `ailang-`
prefix on the architect agent name.
* Code-layout table's `skills/` row replaced with a row
describing .claude/dev-cycle-profile.yml.
* ADDED a new "Lockstep-invariant pairs" section
enumerating AILang's two known cross-file pairings
(Pattern::Lit::* / pre_desugar_validation;
lower_app / is_static_callee) — the architect agent's
drift walk and plan-recon's cross-reference column both
consult this section per the plugin's
templates/CLAUDE.md.fragment shape.
After this commit, AILang no longer ships any skill files in
its own tree. All discipline lives in ~/dev/skills/; all
project-specific calibration lives in
.claude/dev-cycle-profile.yml plus CLAUDE.md.