fieldtest close: canonical-type-names — route findings + roadmap update
Per-iter journal entry for the fieldtest run plus INDEX pointer. Roadmap absorbs four actionable findings as P2/P3 todos (split the merged BadCrossModuleTypeRef diagnostic, workspace subdir search, `ail check` on `.ailx` extension, `.ailx` counterpart for the canonical happy-path JSON exhibit). The two carry-on items (`(import prelude)` doc-gap, the working ones) stay as notes in the fieldtest spec only. P0 Floats milestone removed — closed 2026-05-10 and no longer load-bearing context. No bug findings, so no debug dispatch. canonical-type-names is fully shipped.
This commit is contained in:
+40
-14
@@ -35,20 +35,9 @@ work progresses.
|
||||
|
||||
## P0 — In flight
|
||||
|
||||
- [x] **\[milestone\]** Floats — introduce `Float` as IEEE-754
|
||||
binary64 primitive type. One float type only (no `f32`).
|
||||
IEEE-conformant equality: `eq : Float → Float → Bool` returns
|
||||
`false` for `NaN == NaN`; **no `Eq` instance** (the partiality
|
||||
is real and surfaces through `Maybe`-shaped comparators rather
|
||||
than through a lying total instance). `Ord` likewise partial:
|
||||
`compare : Float → Float → Maybe Ordering`. Includes literal
|
||||
syntax in Form-A + Surface, codegen for arithmetic ops,
|
||||
conversions Int↔Float, and `Show`-style printing without the
|
||||
typeclass machinery (the typeclass wiring lands in Post-22
|
||||
Prelude).
|
||||
- context: this conversation (2026-05-10) — Float status quo
|
||||
was "documented as a primitive but never implemented";
|
||||
`crates/ailang-core/src/canonical.rs:14` says "no floats".
|
||||
_(empty — canonical-type-names milestone closed 2026-05-11; Floats
|
||||
closed 2026-05-10 and was removed once it stopped being load-bearing
|
||||
context. Pick the next milestone from P1.)_
|
||||
|
||||
## P1 — Next
|
||||
|
||||
@@ -156,6 +145,34 @@ work progresses.
|
||||
block, or extract JSON-schema blocks into a machine-readable
|
||||
file the test consumes.
|
||||
- context: JOURNAL 2026-05-10 ("Audit close").
|
||||
- [ ] **\[todo\]** Split `BadCrossModuleTypeRef` into two diagnostics —
|
||||
the current single shape collapses unknown-owner and
|
||||
known-owner / unknown-type-in-owner into one message. The two
|
||||
cases suggest different fixes (add `(import <owner>)` vs. fix the
|
||||
type name). In the known-owner branch, list the owner's available
|
||||
type defs as candidates the way `bare-cross-module-type-ref`
|
||||
lists candidates from imports.
|
||||
- context: fieldtest 2026-05-11 — `examples/ct_3*.ailx` exhibits both branches with identical-shape diagnostics.
|
||||
- [ ] **\[todo\]** Workspace search beyond entry-module's directory —
|
||||
`load_workspace` only finds sibling `.ail.json` files in the same
|
||||
directory as the entry module, so any consumer of prelude/std in a
|
||||
subdirectory has no way to resolve cross-module imports. Add either
|
||||
a `--workspace-root` flag on `ail check` / `ail build` / `ail run`,
|
||||
or upward-search from the entry module's directory. Alternatively
|
||||
ratify the flat-workspace assumption in DESIGN.md if intentional.
|
||||
- context: fieldtest 2026-05-11 — fieldtest fixtures could not be
|
||||
placed under `examples/fieldtest/` because of this; predates the
|
||||
canonical-type-names milestone but surfaces every time.
|
||||
- [ ] **\[todo\]** `ail check`/`build`/`run` accept `.ailx` extension —
|
||||
today `ail check foo.ailx` produces a misleading JSON-parse error
|
||||
(`json: expected value at line 1 column 1`) because the loader only
|
||||
accepts `.ail.json`. Either teach the CLI subcommands to auto-parse
|
||||
`.ailx` internally, or detect the extension and emit a
|
||||
"did you mean `ail parse foo.ailx`?" hint. The LLM-author's natural
|
||||
first command should not be the one that produces a misleading
|
||||
diagnostic.
|
||||
- context: fieldtest 2026-05-11 — orthogonal to canonical-type-names
|
||||
but every fieldtest invocation hits this on its first command.
|
||||
- [ ] **\[todo\]** `check_in_workspace` per-module overlay narrowing —
|
||||
`crates/ailang-check/src/lib.rs:1234` still clears+rebuilds
|
||||
`env.ctor_index` per-module; ct.3.2 narrowed the analogous mono
|
||||
@@ -169,6 +186,15 @@ work progresses.
|
||||
|
||||
## P3 — Ideas
|
||||
|
||||
- [ ] **\[todo\]** `compare_primitives_smoke.ailx` counterpart —
|
||||
the canonical happy-path exhibit for canonical-type-names ships
|
||||
only as JSON. Per Decision 6, Surface is the LLM-author surface;
|
||||
the milestone should have a `.ailx` counterpart. Two paths: author
|
||||
`examples/compare_primitives_smoke.ailx` to round-trip into the
|
||||
existing JSON, OR retire the JSON fixture in favour of
|
||||
`examples/ct_1_ordering_signum.{ailx,ail.json}` as the new canonical
|
||||
happy-path exhibit.
|
||||
- context: fieldtest 2026-05-11 (spec_gap).
|
||||
- [ ] **\[todo\]** Codegen `lookup_ctor_in_pattern` type-anchoring —
|
||||
`crates/ailang-codegen/src/lib.rs:1790` still walks every module's
|
||||
ctor_index by bare ctor name. Plumbing the scrutinee's
|
||||
|
||||
Reference in New Issue
Block a user