fix: harden Claro diagnostics and runtime guards
Preserve source locations, validate malformed JSON, and add opt-in resource limits. Include executable error-guide coverage, learner pilot materials, native Windows acceptance helpers, and updated CI/documentation.
This commit is contained in:
@@ -5,6 +5,9 @@ Accessibility for learners with learning disabilities is a design goal and is
|
||||
**not yet validated** by intended learners. Passing tests does not establish it.
|
||||
Use [current status](CURRENT_STATUS.md) for scope, not older feature roadmaps.
|
||||
|
||||
The [ready-to-run pilot kit](LEARNER_PILOT.md) includes short tasks and a
|
||||
[blank feedback form](LEARNER_FEEDBACK_TEMPLATE.md). No real session is implied.
|
||||
|
||||
## Before a session
|
||||
|
||||
- Use a build whose platform was actually tested; check `claro --version`.
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
# Claro Command Line
|
||||
|
||||
Claro v2026.10.20.223203 supports these main commands:
|
||||
Claro v2026.10.25.014405 supports these main commands:
|
||||
|
||||
```bash
|
||||
claro file.claro
|
||||
@@ -58,7 +58,7 @@ claro package doctor
|
||||
claro package lock
|
||||
```
|
||||
|
||||
The v2026.10.20.223203 package command is a safer local project-file helper. It creates `claro.project`, `claro.lock`, and local folders under `packages/`. Package names may appear only once in `claro.project`; `claro package doctor` reports duplicate entries so the lockfile stays unambiguous. It also requires the project manifest to have exactly one non-empty `name:` field. It is not yet an online package registry.
|
||||
The v2026.10.25.014405 package command is a safer local project-file helper. It creates `claro.project`, `claro.lock`, and local folders under `packages/`. Package names may appear only once in `claro.project`; `claro package doctor` reports duplicate entries so the lockfile stays unambiguous. It also requires the project manifest to have exactly one non-empty `name:` field. It is not yet an online package registry.
|
||||
|
||||
## IDE metadata
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Claro Complete Platform Roadmap
|
||||
|
||||
Current release: **Claro v2026.10.20.223203**
|
||||
Current release: **Claro v2026.10.25.014405**
|
||||
|
||||
This roadmap tracks the larger goal: Claro as a complete beginner-friendly programming platform, not only a toy scripting interpreter.
|
||||
|
||||
|
||||
+10
-6
@@ -1,6 +1,6 @@
|
||||
# Claro current status
|
||||
|
||||
Development version: **v2026.10.20.223203**
|
||||
Development version: **v2026.10.25.014405**
|
||||
|
||||
Claro is a **learning tool first**. The development timestamp identifies source;
|
||||
it does not mean that a release was published or every platform was tested.
|
||||
@@ -28,8 +28,9 @@ call depth and the learning path under leak-enabled sanitizers. See
|
||||
Earlier failure logs are history, not current unresolved findings.
|
||||
|
||||
Claro runs trusted scripts with the user's permissions. It is **not a sandbox**.
|
||||
Intentional loops can run indefinitely, and global file/JSON/CPU budgets are not
|
||||
provided. See [actual runtime guards](RUNTIME_LIMITS.md).
|
||||
Loops can run indefinitely by default. Opt-in step and READ FILE budgets are
|
||||
available; parsed JSON nesting is capped. Global file/output/memory and CPU-time
|
||||
budgets are not provided. See [actual runtime guards](RUNTIME_LIMITS.md).
|
||||
|
||||
## Platforms — do not confuse compilation with OS acceptance
|
||||
|
||||
@@ -55,9 +56,12 @@ They are **not active expansion priorities** without a separate request.
|
||||
|
||||
## What is next
|
||||
|
||||
1. Observe actual beginners and improve instructions/error recovery.
|
||||
2. Verify the Windows builds on their real target operating systems.
|
||||
3. Review the accumulated local changes and publish only when authorized.
|
||||
1. Use the [learner pilot kit](LEARNER_PILOT.md) with a willing person; code checks
|
||||
are not human feedback. Source-located expression diagnostics now have regressions.
|
||||
2. Use the [native Windows kit](NATIVE_WINDOWS_TESTING.md) on an authorized target.
|
||||
Wine is explicitly rejected by its OS evidence helper.
|
||||
3. Hosted CI/release delivery needs authenticated Gitea access and enabled Actions.
|
||||
See the [six-track status](SIX_TRACK_STATUS.md) for current blockers.
|
||||
|
||||
Follow the [small active roadmap](ROADMAP.md). The
|
||||
[previous detailed status](history/CURRENT_STATUS_BEFORE_STATUS_CLEANUP.md) and
|
||||
|
||||
+127
-12
@@ -1,29 +1,144 @@
|
||||
# Claro Errors
|
||||
# Errors and small repairs
|
||||
|
||||
Claro tries to report mistakes in beginner-friendly language.
|
||||
An error starts with `filename:line:`. Open that file and find that line.
|
||||
The line belongs to the function or imported file where the error happened,
|
||||
not automatically to the caller. Caught errors expose the same origin through
|
||||
`LASTERRORFILE` and `LASTERRORLINE`.
|
||||
|
||||
Examples:
|
||||
Use `claro check my_program.claro` for command/block mistakes; running the
|
||||
program also detects runtime expression/value errors. A checker is not a sandbox.
|
||||
The examples below are executed by `tools/validate_error_guide.py`.
|
||||
|
||||
## Quote
|
||||
|
||||
Save as `quote.claro`. Run `claro quote.claro`.
|
||||
|
||||
```claro
|
||||
SAY "Start"
|
||||
SAY "unfinished
|
||||
```
|
||||
|
||||
Message:
|
||||
|
||||
```text
|
||||
I do not know the command "PRNT". Did you mean "SAY"?
|
||||
quote.claro:2: Text is missing a closing quote. Add a double quote at the end.
|
||||
```
|
||||
|
||||
One repair:
|
||||
|
||||
```claro
|
||||
SAY "Start"
|
||||
SAY "finished"
|
||||
```
|
||||
|
||||
## Operand
|
||||
|
||||
Save as `operand.claro`. Run `claro operand.claro`.
|
||||
|
||||
```claro
|
||||
SET score 1
|
||||
SAY score +
|
||||
```
|
||||
|
||||
Message:
|
||||
|
||||
```text
|
||||
SET needs TO.
|
||||
Try:
|
||||
SET name TO "Alex"
|
||||
operand.claro:2: This expression needs a value after the operator.
|
||||
```
|
||||
|
||||
One repair:
|
||||
|
||||
```claro
|
||||
SET score 1
|
||||
SAY score + 1
|
||||
```
|
||||
|
||||
## Command
|
||||
|
||||
Save as `command.claro`. Run `claro check command.claro`.
|
||||
|
||||
```claro
|
||||
PRNT "Hello"
|
||||
```
|
||||
|
||||
Message:
|
||||
|
||||
```text
|
||||
IF block opened here is missing ENDIF
|
||||
command.claro:1: I do not know the command "PRNT". Did you mean "SAY"?
|
||||
```
|
||||
|
||||
One repair:
|
||||
|
||||
```claro
|
||||
SAY "Hello"
|
||||
```
|
||||
|
||||
## Assignment
|
||||
|
||||
Save as `assignment.claro`. Run `claro check assignment.claro`.
|
||||
|
||||
```claro
|
||||
SET name
|
||||
```
|
||||
|
||||
Message:
|
||||
|
||||
```text
|
||||
I do not know the variable "socre" yet. Did you mean "score"?
|
||||
assignment.claro:1: SET needs a name and a value. Try: SET name "Alex"
|
||||
```
|
||||
|
||||
For safer learning, run this before running a new program:
|
||||
One repair:
|
||||
|
||||
```bash
|
||||
./claro check my_program.claro
|
||||
```claro
|
||||
SET name "Alex"
|
||||
SAY name
|
||||
```
|
||||
|
||||
## Choice
|
||||
|
||||
Save as `choice.claro`. Run `claro check choice.claro`.
|
||||
|
||||
```claro
|
||||
IF YES
|
||||
SAY "Yes"
|
||||
```
|
||||
|
||||
Message:
|
||||
|
||||
```text
|
||||
choice.claro:1: IF block opened here needs END
|
||||
```
|
||||
|
||||
One repair:
|
||||
|
||||
```claro
|
||||
IF YES
|
||||
SAY "Yes"
|
||||
END
|
||||
```
|
||||
|
||||
## Variable
|
||||
|
||||
Save as `variable.claro`. Run `claro variable.claro`.
|
||||
|
||||
```claro
|
||||
SET score 10
|
||||
SAY socre
|
||||
```
|
||||
|
||||
Message:
|
||||
|
||||
```text
|
||||
variable.claro:2: I do not know the variable "socre" yet.
|
||||
```
|
||||
|
||||
One repair:
|
||||
|
||||
```claro
|
||||
SET score 10
|
||||
SAY score
|
||||
```
|
||||
|
||||
These teach short `SET` and `END`. Older forms remain supported in
|
||||
[compatibility syntax](COMPATIBILITY.md), not required as repairs.
|
||||
For a caught error, read its metadata before another error changes it.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# Claro Graphics Status
|
||||
|
||||
Current release: **Claro v2026.10.20.223203**
|
||||
Current release: **Claro v2026.10.25.014405**
|
||||
|
||||
Graphics support is intentionally separated from the stable beginner console workflow.
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# Learner feedback — blank observation form
|
||||
|
||||
Status: NOT RUN. Leave observations blank until a consenting person participates.
|
||||
Do not fill this form with predictions, agent simulations or invented participants.
|
||||
|
||||
- Anonymous session ID:
|
||||
- Consent to retain anonymous notes: yes / no
|
||||
- Build version and artifact checksum:
|
||||
- OS/device and assistive tools (only if voluntarily relevant):
|
||||
- Tasks attempted / skipped:
|
||||
- Breaks, pacing and requested adjustments:
|
||||
|
||||
For each attempted task record:
|
||||
|
||||
- What the learner tried or said (anonymous, no health information):
|
||||
- What worked independently:
|
||||
- What help or clarification was requested:
|
||||
- Exact confusing instruction/error and its filename/line:
|
||||
- Whether the suggested repair helped:
|
||||
- Learner's suggested change:
|
||||
|
||||
Use plain observations, not ability rankings. Do not infer a medical diagnosis.
|
||||
|
||||
Debrief:
|
||||
|
||||
- Clearest part:
|
||||
- Most confusing part:
|
||||
- One small change to try:
|
||||
- Follow-up session agreed, if any:
|
||||
- Notes retention/deletion agreement:
|
||||
|
||||
Automated example execution verifies code/output only, not these observations.
|
||||
@@ -0,0 +1,92 @@
|
||||
# Beginner pilot — observer kit
|
||||
|
||||
**Status: prepared, not learner-validated.** No participant feedback has been
|
||||
collected by these automated checks. Do not infer accessibility from test passes.
|
||||
|
||||
Ask for willing participation and permission to keep anonymous notes. Explain
|
||||
that we are testing the instructions, not the person. Collect no diagnosis,
|
||||
medical history, real names or sensitive information. Let the learner decline,
|
||||
ask for help, take breaks or stop. Use any assistive technology they prefer.
|
||||
|
||||
Use a platform-tested build, a fresh writable practice folder and reviewed scripts.
|
||||
Show how to stop/close the interpreter before starting. Do not run downloaded
|
||||
untrusted scripts. Explain that optional limits are not a sandbox.
|
||||
|
||||
Try the first three tasks at the learner's pace. Offer the rest only if wanted.
|
||||
Let the learner predict, run and change the program. Observe before giving a
|
||||
hint; never leave someone distressed just to measure independence. Record help
|
||||
without judging it. Answers/output for observers are in `tests/learner_pilot.json`.
|
||||
|
||||
## Say hello
|
||||
|
||||
Run this once. Change the message to something you choose and run it again.
|
||||
|
||||
```claro
|
||||
SAY "Hello!"
|
||||
```
|
||||
|
||||
## Ask a name
|
||||
|
||||
Run it and type a pretend name. Explain where that name is remembered.
|
||||
|
||||
```claro
|
||||
ASK "Name? " name
|
||||
SAY "Hello " + name
|
||||
```
|
||||
|
||||
## Change a number
|
||||
|
||||
Predict the result, run it, then change 2 to another small number.
|
||||
|
||||
```claro
|
||||
SET score 2
|
||||
SAY score + 1
|
||||
```
|
||||
|
||||
## Make a choice
|
||||
|
||||
Optional: change score to 0. Predict which message appears.
|
||||
|
||||
```claro
|
||||
SET score 2
|
||||
IF score > 1
|
||||
SAY "More than one"
|
||||
ELSE
|
||||
SAY "One or less"
|
||||
END
|
||||
```
|
||||
|
||||
## Repeat
|
||||
|
||||
Optional: change how many times the message appears. Ask how to stop a stuck run.
|
||||
|
||||
```claro
|
||||
DO 3 TIMES
|
||||
SAY "Again"
|
||||
END
|
||||
```
|
||||
|
||||
## Save a file
|
||||
|
||||
Optional: use a new writable practice folder. Find the file after running it.
|
||||
|
||||
```claro
|
||||
WRITE FILE "practice.txt" WITH "My first file"
|
||||
READ FILE "practice.txt" AS text
|
||||
SAY text
|
||||
```
|
||||
|
||||
## Gentle mistake and recovery
|
||||
|
||||
In the hello task, replace SAY with PRNT, run `claro check practice.claro`, and
|
||||
ask what the message suggests. Restore SAY and rerun. This mistake is optional;
|
||||
skip it if it adds stress. Do not teach alternative compatibility spellings here.
|
||||
|
||||
## Debrief and next change
|
||||
|
||||
Ask: What was clear? What was confusing? What would you change? Observe whether
|
||||
the person can start/run/save, predict a result and use a repair hint. Do not
|
||||
calculate a disability score or call one session proof of universal accessibility.
|
||||
Use [the blank feedback form](LEARNER_FEEDBACK_TEMPLATE.md); keep only consented,
|
||||
anonymous notes, record the exact build/platform, and choose one small improvement.
|
||||
The [classroom checklist](CLASSROOM_READINESS.md) is a pilot guide, not certification.
|
||||
@@ -0,0 +1,53 @@
|
||||
# Native Windows acceptance kit
|
||||
|
||||
**Prepared, not executed on a native target.** Wine results do not satisfy this
|
||||
checklist. A Windows login/authorized VM was not supplied for this run.
|
||||
|
||||
Use a **fresh extracted test folder**, not personal documents. Scripts write
|
||||
`oscheck.txt`, `nver.txt`, `ntests.txt`, `ncheck.txt` and replace their own `native.ok`
|
||||
marker. Preserve failed logs. A marker alone is not proof: review the OS evidence,
|
||||
version, all discovered fixtures and every test result together.
|
||||
|
||||
## OS evidence helper
|
||||
|
||||
`tools/native_platform_probe.c` builds a separate `osprobe.exe`; it is not a
|
||||
second interpreter source file. With VC6 configured:
|
||||
|
||||
```bat
|
||||
cl /nologo /TC /ML /O1 tools\native_platform_probe.c /Feosprobe.exe /link /SUBSYSTEM:CONSOLE,4.10
|
||||
```
|
||||
|
||||
The probe records numeric OS API fields, detects Wine's exported implementation
|
||||
entry point, and refuses Wine with exit 2. `--require-win98se` additionally needs
|
||||
Win32-Windows platform ID and version 4.10 build 2222. A real Windows VM is an
|
||||
acceptable target; a compatibility layer is not. Old API version reporting on
|
||||
modern Windows can be affected by application compatibility, so also record the
|
||||
actual OS/version from its own system information screen. The probe is evidence,
|
||||
not cryptographic attestation or a substitute for inspecting a real target.
|
||||
|
||||
## Automated checks
|
||||
|
||||
Put the compiled probe beside the matching interpreter and the complete package.
|
||||
For Windows 98 SE run [test98.bat](../test98.bat). For modern x64 Windows run
|
||||
[testwin.bat](../testwin.bat) with the MinGW `claro.exe` build.
|
||||
These batch scripts avoid modern CMD-only extensions and reject a wrong target
|
||||
before writing a PASS marker. Review `ntests.txt`: every packaged golden fixture
|
||||
must appear, with zero failures. `ncheck.txt` must show built-in validation passed.
|
||||
|
||||
## Manual target observations — leave blank until actually tested
|
||||
|
||||
- Artifact version/SHA-256 and OS/VM identity:
|
||||
- `oscheck.txt` reviewed, Wine false, target version independently confirmed:
|
||||
- All packaged fixtures discovered/passed:
|
||||
- Keyboard input, editing and non-ASCII display observations:
|
||||
- Save/read a text file in a writable folder:
|
||||
- File paths containing spaces:
|
||||
- Start/stop a loop and recover to the console:
|
||||
- First-hour examples and quiz interaction:
|
||||
- Missing input or failed command recovery:
|
||||
- Tester/date, consent to retain anonymous notes, unresolved failures:
|
||||
|
||||
Transfer only consented technical logs, not passwords, personal files or medical
|
||||
information. Do not change an unknown remote machine or install services just to
|
||||
make a test pass. The native target remains **unverified** until these observations
|
||||
and actual target logs exist. See [Windows 98 compilation](WINDOWS98.md).
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# Claro Performance and Optimization Notes
|
||||
|
||||
Current release: **Claro v2026.10.20.223203**
|
||||
Current release: **Claro v2026.10.25.014405**
|
||||
|
||||
Performance work should come after language behavior is stable and measured. Do not optimize blindly.
|
||||
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
- [Reliability](RELIABILITY.md) and [runtime guards](RUNTIME_LIMITS.md) — tested boundaries, not sandbox guarantees.
|
||||
- [Portability](PORTABILITY.md) and [Windows 98 / VC6](WINDOWS98.md) — compilation versus target execution.
|
||||
|
||||
- [Learner pilot kit](LEARNER_PILOT.md) and [blank feedback](LEARNER_FEEDBACK_TEMPLATE.md)
|
||||
- [Native Windows acceptance kit](NATIVE_WINDOWS_TESTING.md)
|
||||
- [Six-track progress and blockers](SIX_TRACK_STATUS.md)
|
||||
|
||||
## Look something up
|
||||
|
||||
- [Beginner syntax](SYNTAX.md) and [older compatibility forms](COMPATIBILITY.md)
|
||||
|
||||
@@ -19,6 +19,15 @@ A development timestamp is not a stable-release designation. Use
|
||||
[current status](CURRENT_STATUS.md) for the learning scope and
|
||||
[the release checklist](FINAL_RELEASE_CHECKLIST.md) before publishing.
|
||||
|
||||
## Candidate continuation — 2026-10-21
|
||||
|
||||
The last pushed source checkpoint is `d55507140660186e594303306647e0f0e9facf76`.
|
||||
The continuation candidate is a separate development run; see
|
||||
[six-track status](SIX_TRACK_STATUS.md) for scope and blocked acceptance.
|
||||
Gitea currently reports Actions disabled, and authenticated runs/release access
|
||||
was not available for this continuation. No hosted CI success or hosted release
|
||||
is claimed. Earlier artifact records below retain their original hashes/versions.
|
||||
|
||||
## Immutable artifact checkpoints
|
||||
|
||||
These are verified build artifacts previously delivered for testing, **not a
|
||||
|
||||
@@ -41,6 +41,23 @@ fictional printed list representation. Five isolated ownership tests separate
|
||||
metadata, field storage and object construction so one leak cannot hide another.
|
||||
Malformed-expression and nesting tests check failure diagnostics and valid inputs.
|
||||
|
||||
## Diagnostics, JSON and opt-in budgets
|
||||
|
||||
Expression errors keep source origins across calls, imports and TRY/CATCH.
|
||||
The error guide is executable-verified. Malformed JSON now fails instead of
|
||||
hanging, nesting is bounded, control-character round trips are checked, and
|
||||
Unicode escapes/surrogate pairs are covered. JSON temporaries, serialization
|
||||
copies and popped import-stack entries have focused leak-enabled regressions.
|
||||
The optional step budget counts empty loop entries; READ FILE can enforce a
|
||||
per-read byte cap. These are not process isolation or wall-clock bounds.
|
||||
|
||||
`validate_error_locations.py`, `validate_error_guide.py`, `validate_learner_pilot.py`
|
||||
and `validate_resource_guards.py` run in the full gate and inside the existing
|
||||
learning-ownership sanitizer check. The reliability runner still counts 35
|
||||
maintained top-level checks; subcase coverage has expanded, not been relabeled
|
||||
as 35 new independent platform tests. Human feedback and native Windows tests
|
||||
remain separate, blocked acceptance tracks.
|
||||
|
||||
## Scope
|
||||
|
||||
A passing run establishes the exercised boundaries, not universal leak freedom,
|
||||
|
||||
+50
-24
@@ -1,32 +1,58 @@
|
||||
# Current runtime guards
|
||||
|
||||
These are implemented guardrails, not a sandbox or a promise that arbitrary
|
||||
scripts have bounded resource use.
|
||||
Claro runs trusted scripts with the user's permissions. These guards are **not
|
||||
a sandbox**, a wall-clock timeout, or proof that arbitrary scripts use bounded resources.
|
||||
|
||||
- **Function/method calls:** at most 256 active calls. Excessive recursion raises
|
||||
a Claro error. Other limits can stop a program earlier.
|
||||
- **Expressions:** at most 128 nested parser levels, covering parentheses and
|
||||
unary operations. Excessive nesting produces a diagnostic instead of
|
||||
continuing recursive parsing.
|
||||
- **Control blocks:** at most 128 additional nested control-block frames. The
|
||||
runtime and syntax checker reject deeper blocks. Function-call frames have
|
||||
their own guard.
|
||||
- **HTTP response bodies:** limited to 1,048,576 bytes by the existing HTTP path.
|
||||
## Always-on nesting/response guards
|
||||
|
||||
Malformed expressions such as a lone `!`, an unclosed quote/parenthesis,
|
||||
a missing operand, or trailing expression tokens are rejected by the runtime.
|
||||
Use `NOT` for logical negation; `!=` remains a supported comparison.
|
||||
- Function/method calls: at most 256 active calls.
|
||||
- Expressions and additional nested control blocks: at most 128 levels.
|
||||
- Parsed JSON: at most 128 nested arrays/objects. A scalar inside 128 containers
|
||||
is allowed; a 129th container is rejected. Malformed syntax fails with a Claro
|
||||
diagnostic rather than looping without consuming input. JSON Unicode escapes
|
||||
and surrogate pairs are decoded; embedded zero characters are rejected because
|
||||
Claro text uses zero-terminated strings. This is not a general encoding validator.
|
||||
- HTTP response bodies: the existing 1,048,576-byte cap remains.
|
||||
|
||||
Errors raised during expressions keep the executing source file and line,
|
||||
including imported functions and caught `LASTERRORFILE`/`LASTERRORLINE` metadata.
|
||||
REPEAT without UNTIL is rejected before accessing a missing terminator.
|
||||
|
||||
## Optional guards — disabled by default
|
||||
|
||||
`CLARO_STEP_LIMIT` sets a non-negative interpreter-work budget. Zero/unset means
|
||||
unlimited. It counts source-line dispatches and block/range entries, including
|
||||
empty loop iterations; it is **not** an exact statement count or elapsed time.
|
||||
Once exhausted it reports a source-located error suggesting the loop be checked.
|
||||
The consumed budget is not reset by TRY/CATCH or by calling a function.
|
||||
|
||||
`CLARO_READ_FILE_LIMIT` sets the maximum bytes read by each `READ FILE` command.
|
||||
Zero/unset means unlimited. The exact boundary is accepted; larger input errors
|
||||
without storing a partial result. It does not cap source loading, package metadata,
|
||||
all file operations, aggregate memory or output. Invalid/overflowing limit values
|
||||
fail configuration; supported numeric range depends on the compiler's unsigned long.
|
||||
|
||||
For example, in a Windows command prompt before running a reviewed script:
|
||||
|
||||
```bat
|
||||
set CLARO_STEP_LIMIT=10000
|
||||
set CLARO_READ_FILE_LIMIT=1048576
|
||||
claro98.exe practice.claro
|
||||
```
|
||||
|
||||
On Linux/macOS shells the equivalent is an environment assignment before `./claro`.
|
||||
These optional budgets do not interrupt a blocked ASK, a shell command, curl,
|
||||
or an individual long-running builtin. They are not untrusted-code protection.
|
||||
|
||||
## Not provided
|
||||
|
||||
The former beta document described `CLARO_STEP_LIMIT`, `CLARO_MAX_FILE_BYTES`,
|
||||
and `CLARO_MAX_JSON_BYTES`. Those environment controls are not implemented in
|
||||
the current `src/claro.c`; do not depend on them. The original document is
|
||||
preserved under [history](history/RUNTIME_LIMITS_BETA25.md).
|
||||
There is no general CPU/time budget, process isolation, total-allocation limit,
|
||||
global file/output limit or JSON byte-size control. The old beta names
|
||||
`CLARO_MAX_FILE_BYTES` and `CLARO_MAX_JSON_BYTES` are still not implemented.
|
||||
The newer READ FILE guard is deliberately narrower. The former unimplemented
|
||||
step-limit claim is preserved as history; the current step guard is the explicit
|
||||
implementation described above, not validation of those older promises.
|
||||
|
||||
Ordinary intentional loops can still run indefinitely. This checkpoint does
|
||||
not establish a general JSON recursion limit, global file/output-size limit,
|
||||
CPU budget, or untrusted-script protection. Scripts and `RUN COMMAND` execute
|
||||
with the user's permissions.
|
||||
|
||||
See [reliability verification](RELIABILITY.md) for the tested scope.
|
||||
Without the optional step budget ordinary intentional loops can run indefinitely.
|
||||
Run only trusted scripts. See [reliability](RELIABILITY.md),
|
||||
[errors and repairs](ERRORS.md), and the [historical limits](history/RUNTIME_LIMITS_BETA25.md).
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
SDL 1.2 support is **not included in the current stable executable**.
|
||||
|
||||
The `examples/experimental_sdl/` files are design experiments / future examples only. In Claro v2026.10.20.223203, running them with the included `claro.exe` will fail with:
|
||||
The `examples/experimental_sdl/` files are design experiments / future examples only. In Claro v2026.10.25.014405, running them with the included `claro.exe` will fail with:
|
||||
|
||||
```text
|
||||
Unknown command: SDL
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
# Six-track progress — development candidate v2026.10.21.010934
|
||||
|
||||
This is a work/acceptance map, not a stable release or a claim all six external
|
||||
milestones are complete. Real learner sessions and native OS access were not
|
||||
supplied in the clarification request. No simulated observations are recorded.
|
||||
|
||||
## 1. Error reporting — implemented, regression-tested
|
||||
|
||||
Expressions retain file/line origins through functions, imports, UNTIL and
|
||||
TRY/CATCH metadata. The first failing location is not overwritten by its caller.
|
||||
Focused tests cover direct, nested and caught paths, including leak-enabled runs.
|
||||
|
||||
## 2. Error guide — aligned and executable-verified
|
||||
|
||||
The [guide](ERRORS.md) now shows current short SET/END forms and six actual
|
||||
failure/repair pairs. `tests/error_examples.json` is checked against every guide
|
||||
code block and against the interpreter's diagnostic and repaired output.
|
||||
|
||||
## 3. Beginner testing — kit ready; actual learner acceptance BLOCKED
|
||||
|
||||
The [pilot kit](LEARNER_PILOT.md) contains six small starter tasks (three primary,
|
||||
three optional), observer instructions and a [blank feedback form](LEARNER_FEEDBACK_TEMPLATE.md).
|
||||
Automated code/output checks are not a person testing the language. A willing,
|
||||
consenting learner and anonymous real observations are still required.
|
||||
|
||||
## 4. Native Windows — test kit prepared; target acceptance BLOCKED
|
||||
|
||||
[Native checks](NATIVE_WINDOWS_TESTING.md) require an authorized Windows login or
|
||||
real Windows 98 SE VM. No such access was supplied. The OS helper explicitly
|
||||
rejects Wine and can require Win98 SE 4.10.2222 before a PASS marker is written.
|
||||
Compiler/Wine checks are separate evidence and never counted as target acceptance.
|
||||
|
||||
## 5. Robustness — focused fixes and guards, not a sandbox
|
||||
|
||||
Malformed JSON such as `[?]` previously hung; it now produces a located diagnostic.
|
||||
Containers are bounded at 128, separators/numbers/escapes are checked, Unicode
|
||||
escapes/surrogate pairs and control-character serialization are covered. JSON
|
||||
parse/serialize temporaries and popped import entries have cleanup regressions.
|
||||
Missing UNTIL is rejected. Opt-in step and per-READ FILE byte budgets are described
|
||||
in [runtime guards](RUNTIME_LIMITS.md). Empty loops consume work budget; TRY/CATCH
|
||||
does not reset it. These do not bound all memory, time, output or external commands.
|
||||
|
||||
## 6. Release delivery — candidate validation; hosted gate BLOCKED
|
||||
|
||||
Local source/Linux/Windows candidate archives must pass extracted-payload checks
|
||||
before delivery. Actual checksums/reports belong to those frozen artifacts, not
|
||||
just the source checkout. The VC6 ZIP uses a separate manifest/report path.
|
||||
|
||||
On this run the Gitea repository metadata reported `has_actions: false`; the
|
||||
Actions runs API returned HTTP 401, the Actions web page was unavailable, and
|
||||
there was no authenticated browser/API credential. Secure vault entry was not
|
||||
available in this session. Hosted CI cannot be verified or enabled from Git SSH
|
||||
access alone. No hosted release or CI success is claimed and no release assets
|
||||
have been uploaded. Authenticated administration and enabled/configured Actions
|
||||
are needed before completing the requested hosted CI/release gate.
|
||||
|
||||
The repository API also reported `private: false`. No visibility change was made;
|
||||
do not put credentials or sensitive learner/native-host information into this repo.
|
||||
|
||||
See [release status](RELEASE_STATUS.md) for dated earlier checkpoints. Candidate
|
||||
build evidence does not retroactively validate native Windows or accessibility.
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# Claro Language Specification
|
||||
|
||||
Current package: **Claro v2026.10.20.223203**
|
||||
Current package: **Claro v2026.10.25.014405**
|
||||
Status: **Living v1 specification**
|
||||
|
||||
This document defines the intended behavior of the Claro language. It is written to reduce breaking changes and keep the v1 line teachable and predictable.
|
||||
|
||||
@@ -59,6 +59,22 @@ Wine results must be labeled Wine results. Claim native Windows/Win98 support
|
||||
only after running the target tests there. [Release status](RELEASE_STATUS.md)
|
||||
records the dated scope; [the checklist](FINAL_RELEASE_CHECKLIST.md) governs publication.
|
||||
|
||||
## New focused checks
|
||||
|
||||
```bash
|
||||
python3 tools/validate_error_locations.py
|
||||
python3 tools/validate_error_guide.py
|
||||
python3 tools/validate_learner_pilot.py
|
||||
python3 tools/validate_resource_guards.py
|
||||
```
|
||||
|
||||
They are also part of the full gate. `validate_learning_ownership.py` runs them
|
||||
with leak detection enabled, including negative paths. Pilot code checks are
|
||||
not learner observations. [Native acceptance](NATIVE_WINDOWS_TESTING.md) requires
|
||||
real target logs; the Wine-rejecting probe prevents silently substituting a
|
||||
compatibility-layer result. Current [six-track status](SIX_TRACK_STATUS.md)
|
||||
separates implemented work from blocked human/hosted acceptance.
|
||||
|
||||
## Historical tools
|
||||
|
||||
Older `validate_rc*.py` and versioned validators remain for history and focused
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Claro v2026.10.20.223203 - Packages and Projects
|
||||
# Claro v2026.10.25.014405 - Packages and Projects
|
||||
|
||||
Claro v2026.10.20.223203 makes projects and packages safer and more useful while keeping the beginner syntax simple.
|
||||
Claro v2026.10.25.014405 makes projects and packages safer and more useful while keeping the beginner syntax simple.
|
||||
|
||||
## Create a project
|
||||
|
||||
@@ -28,7 +28,7 @@ README.md
|
||||
manifest-version: 1
|
||||
name: MyProject
|
||||
main: main.claro
|
||||
version: v2026.10.20.223203
|
||||
version: v2026.10.25.014405
|
||||
packages:
|
||||
package: text
|
||||
package: net_tools
|
||||
@@ -77,10 +77,10 @@ If `package doctor` reports `BAD lock checksum: math-tools`, check the `math-too
|
||||
BAD lock version: expected exactly one lock-version: 1 line
|
||||
```
|
||||
|
||||
The lockfile must also contain exactly one current release line, `version: v2026.10.20.223203`. A missing, stale, blank, or duplicate release line fails with:
|
||||
The lockfile must also contain exactly one current release line, `version: v2026.10.25.014405`. A missing, stale, blank, or duplicate release line fails with:
|
||||
|
||||
```text
|
||||
BAD lock release version: expected exactly one version: v2026.10.20.223203 line
|
||||
BAD lock release version: expected exactly one version: v2026.10.25.014405 line
|
||||
```
|
||||
|
||||
The doctor leaves your files unchanged. After reviewing your project and package manifests, run `claro package lock` to regenerate the lockfile, then run `claro package doctor` again. Spaces around values and capitalization of the lock-format field name are accepted, as with other lockfile fields. Valid generated lockfiles continue to work unchanged; this check does not add registry downloads or verify package content hashes.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Claro Web Server Plan
|
||||
|
||||
Current release: **Claro v2026.10.20.223203**
|
||||
Current release: **Claro v2026.10.25.014405**
|
||||
|
||||
Claro currently has beginner HTTP client commands and offline `claro://` test URLs. A web server API is not complete yet.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user