Skip to content

Attribute sweep, compileProject, and a canary for check_examples - #214

Merged
KubaO merged 6 commits into
twinbasic:mainfrom
KubaO:staging
Sep 30, 2026
Merged

KubaO merged 6 commits into
twinbasic:mainfrom
KubaO:staging

Conversation

@KubaO

@KubaO KubaO commented Sep 30, 2026

Copy link
Copy Markdown
Collaborator

Adds a tool that asks the compiler where every attribute is legal, moves tbbuild into a library the harness tools call directly, and stops check_examples from believing an IDE that has not yet reported.

  • scripts: compileProject (scripts/lib/tb-build.mjs) is tbbuild as a function; tbbuild, check_examples and the sweep call it instead of spawning a process. tbbuild's output is byte-identical on seven cases. The IDE shuts down asynchronously, so one lane's shutdown no longer freezes the others.
  • scripts: sweep_attributes (new) builds every attribute at every one of 62 declaration sites, beside a baseline with no attribute and a control with an invented name, and reports where the compiler accepts each one. A batch that crashes, hangs or disturbs its canaries is halved. On BETA 987: 34,526 probes, 8 to 16 minutes on four lanes, and 46 of 71 documented attributes disagree with the page. Many of those are "accepted but not documented" rather than wrong. Outside every gate, like examples.bat.
  • test.bat: check_attribute_sweep (new, in the CI action and Tools.md) tests the sweep's logic with no IDE: 138 probes, and each of 23 injected faults fails one. test.bat is now sixteen steps.
  • docs: ComExport is also accepted on API Declares; the Hidden note cites a real example. BUGS-TO-REPORT.md gains a two-line [PopulateFrom] compiler crash.
  • check_examples: an IDE under load can read as idle with an empty Problems panel, and that read passed every sample in its batch. Every batch now carries a #Warning canary (TB0005, kept a warning by [EnforceWarnings]). A read with no errors must report it; a silent read is built again, then halved, and a unit that stays silent stops the run. A read with real errors is taken as read, so a failing corpus is never stopped or slowed.
  • docs: Set.md's Form1 sample compiled only when batched beside another page's Class Form1; it has its own hidden class now.

@KubaO
KubaO merged commit 61b142e into twinbasic:main Sep 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant