Skip to content

spec 1.6: a declarator reaches a package call through an alias or a direct argument, and an invoked factory's result is a value (#110) - #119

Merged
lex00 merged 1 commit into
mainfrom
spec-1.6-callhost
Sep 12, 2026
Merged

lex00 merged 1 commit into
mainfrom
spec-1.6-callhost

Conversation

@lex00

@lex00 lex00 commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Closes #110 (Option 1, as decided).

  • F-Call step 7: an invoked factory's result is a value, live or plain (chant never checked; L8.19). F-Declarator: a top-level const alias of a package call, or a member read on one, resolves at the declarator, and a declarator's call has its direct package-call arguments resolved through F-Call (L2.18). A call nested anywhere else stays J1's rejection, which chant also refuses; probed on chant 0.72.1 shape by shape. F-Host-Closed-vs-Open reworded. No J1 rule, so data-host is unchanged.
  • Reference: alias chains through (), as, satisfies, !; F-Call argument resolution; step 7 relaxed. Shapes host gains Stack, a host-published composite. Fixtures: F-Call/a-host-factory-is-invoked and F-Declarator/a-const-alias-of-a-call-resolves-at-the-declarator.
  • Corpus at chant-v0.72.1: the valueCall limit retires; 440 of 441 comparable, 440 agreed, 304 identical namespaces (from 372/372/258). The one file left is the host limit. figures.json, the corpus page, evidence table, paper and caveats follow.
  • The #110 hold-out in chant-agreement.test.ts is removed; chant answers those fixtures and agrees.
  • Spec 1.6, packages 1.6.0; tag spec-1.6 after merge.

…r a direct argument, and an invoked factory's result is a value (#110)

Two widenings, both written to what chant does and no more, found by the
corpus cross-check once F-Call existed. F-Call step 7 no longer requires
an entity or a composite instance back from an invoked factory: the result
is a value, whatever it is, and chant had never checked (L8.19).
F-Declarator's single and destructure cases reach a call through a
top-level const alias, and a declarator's call has its direct arguments
resolved the same way; a package call nested inside an expression, an
object, an array, a new, or a tag's interpolation stays J1's rejection,
which chant also refuses (L2.18). F-Host-Closed-vs-Open says so in a
sentence. No J1 rule is added, so data-host is untouched.

A first draft admitted the call in any position and made the reference
fold five shapes chant refuses; the fixture cross-check caught it before
the corpus did. The reference follows aliases through parentheses, as,
satisfies and the non-null assertion (F-Eval-Unwrap); resolves a
declarator's direct package-call arguments through F-Call; and the shapes
host gains Stack, a host-published composite. Two fixtures moved to the
new rule and one is new. The corpus's valueCall limit retires: at
chant-v0.72.1 the comparable set is 440 of 441, all agreed, 304 folding
identically; the one file left imports a package the host cannot load.
The #110 hold-out in the chant-agreement suite goes with it. Version 1.6,
packages 1.6.0.
@lex00
lex00 merged commit 456060b into main Sep 12, 2026
3 checks passed
@lex00
lex00 deleted the spec-1.6-callhost branch September 12, 2026 23:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant