Align website docs with module-less entrypoint and zero-arity semantics
## Summary Align the `kit-website` documentation with the current Kit behavior around module-less files, top-level execution, `main`, and zero-arity auto-invocation. This is the website-side follow-up to the canonical language/docs item in `kit-lang/kit-lang#250`, which came from the Reddit interpreter-behavior report: https://www.reddit.com/r/kit_lang/comments/1u6iwqp/interpreter_behaviour/ ## Related Work - `kit-lang/kit-lang#250`: canonical language/docs alignment item - `kit-lang/kit-lang#249`: interpreter/compiler parity and crash bug for forward-referenced top-level zero-arity bindings - `kit-lang/kit-website#2`: closed Hello World docs report where module-less `println` failed with T010 - `kit-lang/kit-lang#223`: zero-arity auto-call ergonomics and API traps ## Affected Website Areas - `docs/2026.6.14/guide/diagnostics.html`: T010 currently describes missing module declarations as an imported-module issue, but current checking also rejects module-less executable files that do not define `main`. - `docs/2026.6.14/guide/diagnostics.html`: W020 documents zero-arity auto-invocation, but not how it interacts with top-level final-expression execution or `main`. - `docs/2026.6.14/guide/hello-world.html`: currently uses `module Hello`, which matches current behavior better than the repo README. Keep this aligned with whatever behavior is selected in `kit-lang/kit-lang#250`. - `index.html`: says `kit run` and `kit build` have the same semantics. That should remain true as a product claim, but `kit-lang/kit-lang#249` currently shows a concrete parity break that needs fixing and regression coverage. - CLI/entrypoint docs should clarify application manifest entrypoints versus file top-level execution where relevant. ## Current Behavior To Document Or Fix Upstream A module-less top-level effect is rejected: ```kit println "Hello, World!" ``` A `main` binding without a module declaration is accepted: ```kit main = fn => println "Hello, Main!" ``` Source order changes what runs: ```kit main = fn => println "Hello, Main!" println "Hello, World!" ``` This prints only `Hello, World!`. ```kit println "Hello, World!" main = fn => println "Hello, Main!" ``` This prints both lines because the generated top-level entry returns the last top-level value, and a returned zero-arity closure is auto-invoked. ## Acceptance Criteria - Website docs are aligned with the final behavior selected in `kit-lang/kit-lang#250`. - T010 docs explain both imported-module and executable-file cases accurately. - Zero-arity docs explain the program-entry/final-expression interaction or link to a page that does. - Hello World docs remain consistent with actual `kit run` behavior. - The homepage run/build same-semantics claim remains accurate after `kit-lang/kit-lang#249` is fixed, or is temporarily softened until the parity bug is resolved. - Cross-links to the related work items above are preserved. ## Notes No local machine names, local usernames, or absolute local paths are required for this issue.
issue