From a35878154bf400c9cb2a72b51a5a0fc450ab5627 Mon Sep 17 00:00:00 2001 From: Brummel Date: Tue, 2 Jun 2026 14:09:48 +0200 Subject: [PATCH] docs(examples): correct rbx_1 ctor-field qualification note MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The field-test note on the `Window` ctor claimed that bare `(con RawBuf (con Float))` in a user ADT ctor field gives a type-mismatch and that "the only form that checks is the fully-qualified `raw_buf.RawBuf`". Verified against the current tool (release at HEAD), that claim is false in every form I could construct: - bare `(con RawBuf a)` (type-variable element) in a non-kernel module: checks ok - bare `(con RawBuf (con Float))` (concrete element): checks ok - a `(new RawBuf ...)` value stored via `term-ctor` into a bare-declared field: checks ok - the full rbx_1 program with the field switched to bare RawBuf: checks ok A ctor field is plain type position, and model 0007 §3 ("kernel-module types are accessible bare in type position") already covers it — the auto-import that makes bare `Series` work at a call site equally makes bare `RawBuf` resolve in a user ctor field. The only genuine constraint is that a ctor field carries no mode: `(own (RawBuf a))` is a surface-parse-error, which model 0007 line 458 already documents. So there is no qualification asymmetry to add to the ledger; the ledger is correct as-is. The drift was in this checked-in comment (a guessed rule recorded as fact), now rewritten to the verified reality. The qualified spelling is kept in the code as the explicit form. No ledger change. closes #65 --- examples/fieldtest/rbx_1_float_window_stats.ail | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/fieldtest/rbx_1_float_window_stats.ail b/examples/fieldtest/rbx_1_float_window_stats.ail index 8845d6b..b96f743 100644 --- a/examples/fieldtest/rbx_1_float_window_stats.ail +++ b/examples/fieldtest/rbx_1_float_window_stats.ail @@ -30,12 +30,13 @@ (module rbx_1_float_window_stats - ; NOTE (field test): the ledger's §Series substrate form writes the - ; storage field as `(own (RawBuf a))`. That does NOT parse here — `own` - ; in a ctor field position is rejected (surface-parse-error). And the - ; bare `(con RawBuf (con Float))` field gives a type-mismatch - ; (expected RawBuf, got raw_buf.RawBuf). The only form - ; that checks is the fully-qualified `raw_buf.RawBuf`. See findings. + ; NOTE (field test): a ctor-field storage type carries no mode — the + ; `(own (RawBuf a))` form does NOT parse (`own` in a ctor field is a + ; surface-parse-error; modes live on fn params/ret only). The element + ; type itself is plain type position, so both the kernel-auto-imported + ; bare `(con RawBuf (con Float))` and the fully-qualified + ; `(con raw_buf.RawBuf (con Float))` check — they denote the same type. + ; (The qualified form is kept here as the explicit spelling.) (data Window (ctor W (con raw_buf.RawBuf (con Float)) (con Int)))