Repository navigation
Conversation
2974b09 to
b95841d
Compare
One tool, one file: `iris_check` loads a .cls/.mac/.int/.inc from the project directory
into an ascot workspace and returns its diagnostics. What the file refers to but does not
define is resolved on the target namespace through ascot's host `Atelier` trait, which
`tools/check.rs` implements over iad's own connection with the two requests iad already
makes (`/action/query`, `/doc/{name}`), so ascot opens no connection of its own. Without
a connection those references come back as hints. Power users are pointed at `ascot mcp`
and `ascot lsp`.
ascot 0.4.0 is the first release with the trait. It needs rmcp's `ServerConfig` (lock
moves 3.1.3 -> 3.5.1, `get_info` follows the rename; a client naming protocol 2026-07-28
over `initialize` is now answered with 2025-11-25, the newest version that has one) and
`if let` match guards, so the toolchain pin and the CI action pins move 1.92.0 -> 1.95.0.
Clippy 1.95 flagged one sort in test_changelog.rs.
Smoke tests at the three layers: a no-IRIS check (unit), the advertised contract and one
stdio call (binary), a wrong `%SYSTEM.Version` member found through the connection (live).
b95841d to
0999bbf
Compare
The build script's `rerun-if-changed` named `.git/HEAD` and `.git/refs` relative to the crate directory, where no `.git` exists. Cargo treats a rerun path that does not exist as always changed, so the script and its `rustc-env` reran on every invocation and `cargo run -- tool` recompiled `iris-agentic-dev-core` and the binary each time. The paths now come from `git rev-parse --absolute-git-dir`.
|
I ran Summary numbersOn the 42 erroneous programs:
On the 42 clean programs:
In short:
Per-task resultsEvery diagnostic ascot reported is a warning. Line numbers are 1-based within each class. The other 28 tasks got no diagnostics in either version.
Warnings not relevant to the bugThey fall into three groups. "Do discards %Status" (CORPUS-03, 05, 21). These are correct. "Too few arguments" (CORPUS-05, 09, 17, 18, 26, 28). These are false positives caused by imprecise library method signatures:
"Assigned but never read" (CORPUS-10, 23, 31, 40). In the stubs in CORPUS-23 and 31, the parameter really is unused. In the |
CORPUS-43 to CORPUS-56 each plant a bug IRIS compiles clean and trips on at runtime: a variable set on one path, an accumulator set inside a loop that may not run, `$DATA` answering 10, `Quit` with a value inside `For`, a `%Status` method quitting with no value, one argument too many, a utility declared `Method` and called through `##class`, a property typo through an object variable, a misspelled `%SYSTEM.Version` method, JSON text returned for a `%DynamicObject`, a collection property subscripted, `$CASE` with no default, an `Output` parameter never assigned, and a `$ORDER` loop with its empty check inverted. The kinds come from the runtime-proven tests of objectscript-typecheck-corpus; none involves a routine. Every fixture compiles on IRIS 2026.2, every check fails on the fixture and passes on the reference, and `iris_check` reports the planted line on all fourteen fixtures and nothing on any reference. All fourteen are holdout from the day they were written.
The one control among the fifteen new tasks: `$$$ISERROR` where `$$$ISERR` was meant. The compiler rejects it with MPP5610 and two cascade errors at routine offsets; ascot reports one error at the class line with `ISERR` as the first suggestion. Holdout from the day it was written.
|
I added 15 tasks to the corpus, CORPUS-43 to CORPUS-57 (commits b6f4f25 and 0ae3ca7): bugs the IRIS compiler accepts and the program trips on at runtime, drawn from the runtime-proven tests of my type-checking corpus, plus the misspelled macro you asked for. All 15 are holdout from the day they were written. I then ran On the 15 erroneous programs:
On the 15 clean programs:
In short:
These 15 are tasks I wrote around defects ascot detects, so they show what the tool covers. Per-task results
The erroneous program in CORPUS-57 is the only one the compiler rejects: Only the first line is the bug and no fix is suggested. ascot reports one error at the exact class line and suggests the right macro, |
`name` replaces `path`: the document with its extension, read from the target namespace through the same `/doc` request the bridge already makes for lookups, or taken from `source` when the caller holds text it has not saved yet. An MCP client no longer needs a file inside the project directory, which is where the earlier shape failed: the classes a task is about live on the server, and the code an agent wants checked is in its hands before it is written anywhere. Without a connection the response now carries a `note` saying that external references were not checked; without a connection and without `source` the call is refused with IRIS_UNREACHABLE like the other IRIS tools, and a `name` the server lacks answers DOCUMENT_NOT_FOUND.
The tool-name gate reads an imported `iris_unreachable` in a `use` list as a tool reference; every other caller writes it as a call, which the gate exempts.
|
The last two commits improves how ascot interact with humans and AI agents: it now takes source code rather than a path to a file system. The new way allows users to check ObjectScript sources without touching the file system. The second commit is a simple change to make a CI happy. They don't change the diagnostics that ascot provides. |
This PR integrates ascot 0.4.2, the latest release as of 2026-10-29. ascot aims to find errors the IRIS compiler can't, and to give more detail on the errors the compiler already finds.
My test set has 579 programs that IRIS rejects, at compile time or at runtime, and 543 that run without error:
A preliminary agent study used 47 code-generation tasks written by an independent author. With ascot, Haiku 4.5 used 33% fewer tool calls. Opus 4.8 saw no change, since it already needs about one call per task on average.
How much ascot helps in iris-agentic-dev's own setting is still unknown. Along with the integration, this PR includes benchmark results on iris-agentic-dev's tests/e2e/tasks/benchmark/corpus task set.