Repository navigation
Graphicle 0.1.11
Every crate is at 0.1.11, and graphicle --version prints
graphicle 0.1.11 (core). The Python and TypeScript SDKs are at 0.1.11
too.
Everything new in 0.1.11 was written during Meta's Global AI Developer
Hackathon.
HACKATHON.md
lists it with when it was written.
After upgrading
- Run
graphicle synconce in each project, as after 0.1.10: the saved
graph and the query file are keyed to the program's build, so the first
sync writes both again.
graphicle fix
- A long test output keeps the lines that report failures. When a round's
test output is longer than the 6,000 bytes that go back to the model, the
round keeps the lines that report failures from the part that is cut
(lines withFAIL,×,AssertionError,Error:,panicked,
Traceback,error[E0425]:,expectedorreceived, and the like),
each once and at most 2,400 bytes of them, then a[...]line and the
output's end. Before, only the end was kept, so a runner that prints its
failures before a long dump, as vitest does before the DOM it compared,
sent the model the dump without the assertion. While the test runs, each
output stream holds up to 128 KiB, then drops whole lines from its start
down to about its last 64 KiB; the lines that report failures are read in
all that it holds and in what it drops, so an output of 64 to 128 KiB
keeps an assertion it printed first. Terminal colour codes are removed
from the output; the values of the model keys are still hidden in it. - The next round reads the files that the failure and the model name. After
a failed round, the next round's request adds, after the diff, the files
that the test output (or the reasons the edits were refused) names, that
the model's explanation and edits name by path, and that define a code
name the explanation gives (found in the project's code graph), when the
pack does not hold them whole: at most 6 files and 24,000 tokens a round,
counted as the pack counts, read from the worktree, and only files the
project's last sync holds, inside the project. Without--budget, the
files take only the room the round's request has left after the pack, so
the round is sent with the same pack and its start can stay in the
provider's prompt cache. The instructions tell the model that a file it
names this way is added to the next round. Each round's JSON report
lists what its request added and why undercontext, with what was left
out; the readable report lists the added files under each round. A round
whose request does not fit the model's input limit with its files goes
without them: the readable report lists them as not added, and the next
round adds them only when the failure or the model names them again.
Before, a file the pack did not hold stayed out of every round. See
docs/fix.md.
Fixes
graphicle askanswers when the model cites more passages than an answer
keeps. An answer keeps at most 12 citations and 20 unanswered parts (and,
with thegrounded-v3contract, its limit of reading notes). A reply
with more, which a broad question can draw, failed the job with "Model
output does not match the workflow contract". The reply now keeps its
first 12 citations and first 20 unanswered parts, and the job's result
gives, undertrimmed_to_cap, how many the model returned and how many
were kept. An answer's text never refers to a citation by its number, so
nothing in it points at a citation that was cut.--workflow reflect
keeps its final reply the same way. (reported in #17)graphicle ask --workflow reflectgoes on when the model asks to read a
source the answer does not have, such as a path it guessed from the code
or a file thatsyncleaves out. The read is skipped, the job's trace
records it with"unavailable": true, the next step reads that note, and
the answer comes from the sources that could be read. Before, the job
failed with "Reflection requested an unavailable source". (reported in
#17)graphicle ask --pack,plan,fixandreviewuse a model key saved
in the app (graphicle open, then Connections), asaskanddoctor
do, for the call and for the provider's token count. Before, they read
the key only from an environment variable and failed with "Provider
credential unavailable; workspace credentials require the service
worker". A key in an environment variable is read as before.fixhides
a key saved in the app in the test output that goes back to the model
and into its report, as it hides the keys in variables. (reported in #17)
The flow and its docs
demo/flow/flow.pyuses Muse Spark for computer use by default
(--see-model spark). On 30 October 2026 Muse Wonder answered the
computer tool with HTTP 400 "Unsupported tool type" on the key we tested,
and Muse Spark 1.3 ran it.docs/flow.mdanddemo/README.mddescribe
the live runs. The Muse Code docs describe the plugin's first live
session (Muse Code 1.4.14, 30 October 2026, with 0.1.10's plugin): Muse
Code ran four of its six hooks and called itspacktool, but stopped its
session-start hook, whose output passed the 16,384 bytes Muse Code takes
from a hook, so the session started without Graphicle's session-start
context (fixed below, under Muse Code plugin).- The flow's check keeps its budget when the fix runs on another profile.
With computer use on Muse Spark and the fix on Muse Wonder, the check took
the computer-use profile's cap less everything the run had spent, so a fix
that cost more than that cap left the check a cent and the binary refused
its call. The check's budget is now its profile's cap less that profile's
own calls.
Muse Code plugin
- The session start stays within Muse Code's limit on a hook's output. Muse
Code takes at most 16,384 bytes of what a hook prints and reads none of a
longer output: in the plugin's first live session (Muse Code 1.4.14, 30
October 2026), the session start printed more than that, Muse Code
stopped it, and the session started without Graphicle's session-start
context. The session start now prints at most 14,000 bytes for Muse Code.
When the map and the memories do not fit together, it leaves out parts of
the map first, in the order a pack over its budget drops them (its least
connected files first, then its documentation, folder map and
architecture summary), then the whole map, then the memory's last lines
(recent turns before memories), never the line on when to use Graphicle,
and ends with a line that says what was left out and which tool returns
it. Claude Code and Codex get the same output as before. This is tested
against the stand-inmuseprogram, not yet in a live session. - Muse Code's session map is 2,500 tokens by default and at most 3,500
tokens (8,000 and 100,000 before), and it lists the most connected files
first.
Measured on 31 October 2026, a map of 2,500 tokens took 8,464 bytes for
Graphicle's own Rust code and 10,580 bytes for its Python tools, which
leaves room for the memories; at 8,000 tokens the same maps took 27,551
and 33,570 bytes, more than Muse Code's limit on their own.
Benchmark kits
- The whole-repository benchmark's model runs, which 0.1.10's kit was
written for, were made on 30 October 2026. Their results are not in
this release. bench/whole-repo/run.pygains afireworksprofile for Muse Spark Open
on Fireworks' serverless API (chat completions, key from
FIREWORKS_API_KEYor--key-file). The run's session id goes in the
x-session-affinityheader and theuserfield, the two hints Fireworks
documents for its prompt cache, and the cached tokens come from the usage
or, when it has none, from thefireworks-cached-prompt-tokensheader.
prices.jsonhas the model's Fireworks prices.bench/muse-code/reads the events of Muse Code 1.4.14: an event's name
is inpayload_type, the model calls and tokens come from the one
run.usageevent at the end of a run, and the answer from
run.terminal.completed. Before, the kit counted no calls and no cost
for a 1.4.14 session. With 1.4.14 the kit's cost caps (--run-cap,
--day-cap) can act only after a run, since the usage arrives at its
end.
Packaging
- libz-sys 1.1.31 (from 1.1.29, through flate2). RUSTSEC-2026-0418, a build
script that prints the whole build environment when built with cc 1.6.0
or later, no longer applies, andcargo denychecks every crate without
an exception for it. The locks keep cc 1.4.7.
Install
brew install graphicle-ai/tap/graphicle
# or
curl -fsSL https://github.com/Graphicle-AI/graphicle/releases/download/v0.1.11/install.sh | sh -s -- --version 0.1.11On Windows (x86-64, preview), in PowerShell:
$env:GRAPHICLE_VERSION = '0.1.11'; irm https://github.com/Graphicle-AI/graphicle/releases/download/v0.1.11/install.ps1 | iexEach archive's SHA-256 sum is in SHA256SUMS and beside it in a .sha256 file.
graphicle.exe and graphicle-graph.exe in the Windows archive carry a signature from a SignPath test certificate. Windows does not trust that certificate, so it treats them as unsigned programs and may warn before it runs them. Code signing policy