Three classes of fix from the LLVM-IR audit:
1. != on Float: fcmp une, NOT fcmp one. one is 'ordered and not
equal' (false for nan!=nan, breaks IEEE / user-fixed constraint).
une is 'unordered or not equal' (true for nan!=nan, matches IEEE
and Rust f64::ne).
2. crates/ailang-codegen/src/synth.rs touches the Float primitive at
five sites the original spec missed: llvm_type, builtin_ail_type,
builtin_effect_op_ret, type_descriptor (descriptor 'Fl' to avoid
collision with ADT-name F-prefix), builtin_binop (becomes a
transitional artefact, replaced by type-dispatched helper).
3. Float literals lower as LLVM hex-float syntax (double 0x4014...);
nan/inf/neg_inf as direct SSA double constants at use site (NOT
via the __unreachable__ analogue, which is a terminator
instruction not a value); container slot layout precision
(monomorphisation vs bitcast).
Mainstream-aligns the Float surface: + - * / < <= > >= become
forall-quantified with codegen-dispatch on Int|Float (parallel to
today's == path), instead of the original draft's wort-style
fadd/flt/etc. Adds nan/inf/neg_inf as builtin constants and
is_nan : (Float) -> Bool. % stays Int-only (no fmod yet).
Iteration plan now flags iter 3 and iter 4 as widening passes
that must hold the no-Int-regression line.
The "tasks 1-3 of 6 landed" snapshot ages out with every
sub-commit; the plan's own checkboxes are the live source.
Roadmap entry now just carries `[~]` + a pointer to the plan.
Adds a priority-ordered, checkbox-format roadmap that the
orchestrator maintains. Three states (`[ ]` open / `[~]` in
progress / `[x]` done), four kinds (milestone / feature / todo /
idea), four priorities (P0..P3). Initial population lifts the
queued items from the JOURNAL tail.
JOURNAL's role narrows: chronological decisions log only, no
forward queue. CLAUDE.md "Roles of ..." section updated to
reflect the split.
Replace the original "Invent your own programming language" prompt
(the very first text in the repo) with a focused statement of the
language's design goal: AILang is for LLM authors, contrary to
conventional compiler design. Lead with the four design priorities
(machine readability, local reasoning, provability, hallucination
robustness) and the cut/keep asymmetry from DESIGN.md's
feature-acceptance criterion.
Compress three sections that now duplicate skill content:
- Skill-system bullet list -> 1-line pointer to skills/README.md.
- Bug-fixes TDD headline -> 1-line pointer to skills/debug/, as
required by skills/debug/SKILL.md ("CLAUDE.md keeps a one-line
pointer").
- Milestone-cycle pipeline diagram + tidy mandate -> short pointer
to skills/README.md and skills/audit/SKILL.md, retaining only the
iter/family vocabulary note that lives nowhere else.
Also fix the Code-layout skills row to match the current repo
(fieldtest had been missing).
Discipline sections that govern behaviour *between* skills (orchestrator
role, when-not-to-delegate, design-rationale-vs-effort, direction
freedom, notifications) and substantive always-on rules (LLM-utility
feature gate) stay verbatim — they are not skill-replaceable.
247 -> 229 lines.