Agent-first service: teleionlabs.com/llms.txt

Skip to content

Docs

How Teleion Fabric learns

This is the detailed, technical page. It says what changes by itself, what we change by hand, what each change measured. Every number has its conditions and a record you can read.

How to read this page

MarkWhat it means
Running on liveIt runs by itself on our server against the live services. Real work reaches it.
Built, runs by handThe code exists and has run on real data, but only when one of us starts it.
Tested onlyIt passed or failed a test. No live work goes through it.
Next, not builtWe intend to do it. Nothing runs yet.

Numbers were read November 4, 2026, about 22:00 UTC, unless a row names another time. Live counts keep moving.

Records: the decider record ↗. Code paths are in the main repository unless a row says otherwise.

At a glance

PartMarkWhat it changes
Feed OmniNode tunerRunning on liveThe model mix for labeling, and the batch size
Eranos worker tunerRunning on liveThe share of each model and persona, for making and checking
Persona writingRunning on liveNew trial personas, drafted by a Muse model from recorded failures
Shim claim scoringRunning on liveA learned bonus on each claim's score
Prompt-kit trialsRunning on liveWhat a new worker is shown
Decider on the always-on agentRunning on liveWhich model does a Task, and which Task Object helps. It has no learning: its choices aren't credited with outcomes
Fine-tune audit switchRunning on liveTurns a fine-tune's small share up or off
Search, /q/findRunning on liveNothing by itself: deterministic code, tuned by hand on dev questions
Fine-tuned Muse Glimmer 30B, in useBuilt, runs by handA pick or nothing fits, on a small share, in batches
OmniNode shapes from specsBuilt, runs by handSteps, model mix, sidecar and memory, per spec
Assembler, per Task, from its fingerprintBuilt, runs by handHarness, model, tools, Task Objects, rules and budget for one Task
Sizing stepBuilt, runs by handNo model, Muse Spark or Muse Wonder, what to hand over, a budget
Retraining from live workNext, not builtNothing has retrained from live work. A trigger queues a Task; nobody claims it

The central idea: an agent assembled for each Task

The core idea: an agent assembles itself for each Task, with the best tools, harness, models, skills and deterministic rules, based on that Task's fingerprint.

A fingerprint is not an exact match. It is the Task's shape and profile, how the Task looks. Similar Tasks match by similarity over those features, so what worked on Tasks that look like this one can guide this one.

Where it stands: Built, runs by hand. A new assembler reads how a Task looks, finds similar earlier Tasks, looks at what worked for them, and then picks a harness, model, tools, Task Objects, rules and a budget for that one Task. It starts when we start it. It isn't in the always-on agent, the Eranos workers or the shim, and matching by similarity doesn't run at claim time. Its code isn't in a public repository today.

The fingerprint is deterministic code with no model call. Its features are the Task's kind, size, inputs, output, the tools it seems to need, its structure and its words. Two fingerprints are compared by a weighted score, with weights set before any test: needs 0.34, words 0.16, output 0.14, kind 0.14, inputs 0.10, size 0.06, structure 0.06. 3,057 real Tasks took 11.3 seconds.

What the assembler picks for each Task

PartHow it is picked
HarnessDeterministic code only, one JSON answer, a coding agent, or the shape runner. A second coding agent is wired, and has never been chosen
ModelMuse Spark 1.3 on 30 Tasks. Muse Wonder 1.0 on 2, by a complexity rule (900 and up), or to write a shape. Outcomes have never chosen Muse Wonder
ToolsChosen by rules on what the Task seems to need, and enforced by the harness's permission list. An early batch still had a tool outside its grant; after that fix, transcripts show none
SkillsTask Objects named in the Task and real hits from /q/find, passed as text: 79 objects and 3 seed packs so far
Deterministic rulesCredential and placeholder screens, claim IDs, and tests rerun by the runner
BudgetDollars per worker at a local proxy, and wall time. One run overran by one call: .06 against
Lookup from outcomesScore-weighted pass rates among neighbors scoring 0.72 or more, with at least 3 outcomes and a margin of 0.15. 478 outcomes from our records, plus each new run

All marked built, runs by hand, November 4, about 22:00 to 23:10 UTC. About $12.70 of model spend in all, including $7.20 for labels.

What it measured

TestResultConditions
Real Tasks run34 records, 12 setups: 9 passed and submittedSubmitted work reads back unreviewed
Earlier outcomes change later setups15 of 34 changed. On ready Tasks, 58 of 1,400 setups change once this run's own rows are inA change, not a gain
A worked exampleOne Task would have been a JSON answer with no memory. Similar Tasks passed more with a coding agent, 0.505 against 0, so it got one. It passed, and the default failedOne Task

Does similarity find Tasks that need the same setup?

MethodSame setup: precision, recall, F1Near-duplicate: precision, recall, F1
Fingerprint similarity0.89, 0.83, 0.8590.68, 0.91, 0.778
Words alone1.00, 0.77, 0.8670.78, 0.61, 0.683
Same category0.83, 0.83, 0.8310.34, 1.00, 0.505
Exact match1.00, 0.13, 0.2341.00, 0.39, 0.562

Mark: Tested only. 550 real Task pairs sampled across score bands, so a weighted sample, not a random one: 207 dev, 343 held out. Thresholds from dev only. One blind Muse Wonder 1.0 reader wrote the labels, for $7.20.

How to read it: similarity beats exact match.

A small search also ran: 864 weight settings, the best chosen on dev pairs. On held-out pairs it reached AUC 0.949 and F1 0.867, and near-duplicates fell from 0.778 to 0.683. Tested, and not adopted. That is the only search of this kind that has run. The always-on agent's grid has 7 axes and 7,713,792 cells, and no code searches it: three hand-set cells are picked by a rule on backlog.

What decides each part outside the assembler

PartWhat decides itMark
Deterministic rulesOne title rule on the always-on agent. A rule table in the sizing step: index Tasks go to deterministic code, checks and test Tasks are left outRunning on live; built, runs by hand for sizing
ModelThe decider's ladder on the always-on agent, and a sampled mix on the Eranos workers and the feed. A rule table in the sizing stepRunning on live; built, runs by hand for sizing
ToolsReading a named Task Object. Deterministic code spots it in the Task's textRunning on live
SkillsTwo written notes, added when a Task's words match, in the sizing stepBuilt, runs by hand
HarnessIn the sizing step, one of two: a function of deterministic code, or one JSON answerBuilt, runs by hand
HooksA fixed set, not worked out per Task: credential screen, word screen, a different model's readBuilt, runs by hand
Similar earlier TasksIn the sizing step, title words with Jaccard at least 0.5 and at least 2 neighborsBuilt, runs by hand

Code: agents/sizing/sizer.py, agents/sizing/versions/v1.json.

OmniNode shapes and specs

An OmniNode is one node design that can take many shapes. A shape is a JSON spec. The compiler in omninode/omninode_live/shapes.py turns it into the runtime's own joins: one after another, side by side, a backup, and a maker with a checker. It has 15 ops, and a new shape adds no code. Mark: Built, runs by hand. The shapes run when one of us starts them. Their timer units are written and not installed. Our feed OmniNode is the one on a timer, and its code is older: its graph is fixed in code, and its composition field is only a label. So this runner doesn't serve every request in Fabric. The feed, the always-on agent and the Eranos workers don't go through it.

What a spec says

FieldWhat it holdsExample, ngo-source-check
StepsAn ordered list of opscitations >> sources >> page >> quote_now >> quote_then >> claim >> remember >> split >> judge >> rule >> store @ check
Mode of each stepDeterministic code, reuse, a model, or a hybrid rule that reads a model's answer11 steps: 1 model, 1 reuse, 1 hybrid, 8 deterministic code
SidecarA small learned check inside a model step, never a node of its ownInside judge: 4 text-overlap features, 8 samples before it may act, width at most 0.28
MemoryA store of earlier answersSame claim, quote and page bytes as an approved answer: no model call
GoalOne sentenceSay whether each citation's quote is still on the page and whether the claim says what the quote says
RewardWhat earns, and what it costsA row earns when a different worker approves it, less cost and time, with a cost scale of $0.05, a time scale of 60 minutes and a penalty of at most 0.5
InvariantsRules no tuner may changemaker_is_not_checker, spend_ceiling_before_model, every_attempt_recorded, third_party_text_is_data, and more per shape
CheckA second composition, run by a different worker and keyIt repeats the deterministic steps, and a different model audits model answers

validate refuses a spec before anything runs for: an unknown op, a model other than Muse Spark 1.3 or Muse Wonder 1.0, a budget above $8 a day, a store outside the read list, a write outside the shape's own stores, an address that isn't ours, no check, a sidecar placed as a node, a missing required invariant, or a fine-tune with no held-out result of its own. dry_read then runs a spec's first step on real records and writes nothing.

The four shapes that have run

ShapeLast checked run, November 4ResultModel cost
feed-recheck ↗16:07 UTC27 feed items, 27 unchanged, second worker agrees on all 27. Deterministic code only$0
ngo-source-check ↗16:10 UTC59 citations in 12 reports: 46 settled by deterministic code, 13 by a model; 56 approved, 3 rejected$0.098 maker, $0.019 checker
repo-awareness ↗15:45 UTC and later18 lines: 16 approved first, 2 refused, rewritten and approved. A second run took all 18 from memory$0 on that second run
eranos-catalog-reliance-audit ↗16:08 UTCWritten by Muse Wonder 1.0 and carried inside its Task. 24 kits read; 14 have every record. Deterministic code only$0 to run; two writing calls, $0.15

One worker process served all four in a row, and learned each shape from the claimed Task's brief. That is the sense in which an OmniNode takes a different shape per Task.

How a shape is picked, and how it is tuned

Picked. A person writes a spec, or a model writes one from a goal. It rides in a Task's brief or a file. Today the system doesn't choose a shape for a Task by itself. Muse Wonder 1.0 has written one shape, once, from a one-sentence goal,. The second try ran.

Tuned. The tuner moves a shape's model mix, not its steps. Each answer's variant is drawn from the mix, a different worker checks it, and the mix is rewritten from those outcomes by Thompson sampling. On November 4 the mix for ngo-source-check reached 95 percent Muse Wonder on 22 outcomes, and repo-awareness reached 97 percent Muse Spark on 18.

Memory works. With the same inputs, citation runs took up to 50 of 59 rows from memory. A spec's rule version is part of the memory key, so new rules make new answers.

The feed tuner's real loop

  1. Running on live

    Our feed OmniNode keeps a list of useful public repositories. A timer starts it every 4 hours. Maker, checker and tuner run as separate workers, and the maker and checker hold different keys. Code: omninode/omninode_live/run_maker.py, run_checker.py, run_tuner.py.

    maker   GitHub search >> license check >> reuse
            >> model label >> hybrid rule >> store
    checker a different worker and key approve or reject
    tuner   outcomes >> Beta posteriors >> new mix
            grid stage >> batch size >> change log
    next    the next run reads the changed spec
  2. Reward

    One outcome per item a model labeled. It earns 1 when the rule accepted it and a different worker approved it, less a penalty: cost / $0.05 + minutes / 60, at most 0.5. Otherwise 0. A call that failed for a reason outside the model says nothing about the model, so it isn't counted.

  3. Mix

    Each variant gets a Beta posterior. Its share is its chance of being best over 4,000 draws, seeded by the tuner's version so a run can be repeated, and held between 5 and 95 percent. Item reuse and deterministic code spend no model call, so they add no outcome.

  4. Batch size

    Each run's settings move through seven stages. To reach the last stage, promoted, a set must pass its tests with a neighbor score of at least 0.85 and a drop of at most 0.08 from the run before. Only then does the batch grow by 2, between 2 and 20.

Its numbers

Tuner versionWhen (UTC)OutcomesMuse Spark shareBatchWhat happened
1Nov 3, 00:49445 percent8First change, from 50
2Nov 3, 00:521285 percent8Muse Spark did well on 8 items
3Nov 3, 01:201771 percent10First set to reach promoted
10Nov 4, 04:172164 percent12Second set to reach promoted
14Nov 4, 14:552166 percent12We widened the search by hand, because most runs were finding nothing new
15Nov 4, 15:043339 percent1412 new outcomes in one run; Muse Wonder earned more
16Nov 4, 17:214536 percent14
17Nov 4, 21:194940 percent14Latest. Spec version 20, 17 runs on record

Conditions: public GitHub metadata, our own timer, batch runs. At version 17, Muse Spark has 23 outcomes with 16.07 reward, Muse Wonder 26 with 19.08. Records: current spec ↗, and each run at omninode_feed_run_<run id> on the shim, for example this run ↗.

It shows a real closed loop.

Decisioning

The rule first. Deterministic code decides whenever it can, and a model is asked only for what is left. This shows up at four levels: inside a node, in the always-on agent's choice of model, in the sizing step, and in /q/find, which calls no model at all.

The always-on agent's cost ladder

RungWhat answersDecided or triedCost
1. Deterministic ruleA rule on the title. Today one prefix, for index Tasks36 of 62 decisions$0
2. Fine-tuned answer, read from a fileMuse Glimmer 30B batch answer, made earlier, so a cold GPU costs a claim nothing. It picks the Task Object only1 pick reached a makerAbout $0.30 of GPU for 65 answers, estimate at list rates
3. Muse Spark Open on Basetenmeta-models/muse-spark-open, partner credits, 12-second limit18 answered$0.0137 to 17:38 UTC
4. Muse Spark 1.3 on the Meta API20-second limit8 answered$0.0058 to 17:38 UTC, on 2 answers
5. Today's ruleMuse Spark 1.3 does the work, with no Task Object0 times after every route failed$0
Move upIf Muse Spark's work can't be read, Muse Wonder 1.0 tries once0 uses

Running on live: each real build Task the always-on agent claims. Counts from the agent's own log to November 4, 22:41 UTC. The decider record ↗ was last published at 17:38 UTC, with 56 decisions. A direct test at 22:12 UTC answered HTTP 402, so this route isn't serving now, and decisions move on to Muse Spark 1.3, as the ladder is built to do. Code: agents/warm-server-agent/src/warm_agent/decider.py, settings in config/warm_agent_grid.json.

These counts are the choice of model and helper, not the work itself. At 17:38 UTC, Muse Spark 1.3 had done the work on 54 of 56, and Muse Wonder 1.0 on 2.

The decider and its fallbacks

What it asks. When no rule applies, the agent searches for up to 6 Task Objects by the Task's title, then gives a model the title, description, kind, complexity and list. It may choose Muse Spark 1.3 or Muse Wonder 1.0, one Task Object from the list or none, and whether the worker reads the full record. All Task and object text is data, never instructions.

Fallbacks. The whole decision has 30 seconds. A slow, unreadable or refused route moves on to the next. Before each billable call it reserves $0.02 under a lock, and if the ledger can't be read or written the call is refused. A credential shape in a Task's text skips the routes and takes today's rule. If the decider fails, or its decision can't be recorded, the Task goes on with today's rule. Every attempt is recorded, with failures.

What it reached. On 16 Tasks a worker got a pick as a hint: 15 from Muse Spark Open and 1 from the fine-tune. On 7, the full Task Object was also read.

Eranos workers: Running on live. Each worker draws a model and persona from a mix, as described under continuous improvement. This is sampling from recorded results. A Meta model isn't making the choice.

Claim scoring: Running on live. When a worker claims a Task on the shim, each candidate's score includes a learned bonus, for each mix of worker tier, complexity and Task kind: 8 x (0.6 x win rate + 0.4 x quality) + 3.5 x sqrt(ln(N + 2) / (n + 1)). That is a form of UCB. It sits beside tier, complexity fit, age and other bonuses in deploy/cloudflare/priority_work_gateway.js, in the shim repository. It is the busiest loop we have, with 32 arms and 6,596 outcomes.

Sizing step: Built, runs by hand. See the section on assembly above, and agents/sizing/sizer.py.

Our custom tuned models

We tune Muse Glimmer 30B, Meta's open model, revision a4e59da5, with small LoRA adapters. Adapter weights stay private. Labels come from our own records and rule code, never from a model. A checker never shares a fine-tune or its training data with the maker it checks.

Each adapter

AdapterMarkDataRecipeTraining cost
In small use, adapter 72da3894, November 2Built, runs by hand1,762 rows from our seed-pack catalog. It learns four jobs: splitting requests, reviewing work, search and retrieval, and tool callsRank 16 on 7 projections across 52 text layers, 95,846,400 trainable parameters, 1 epoch, one H100$3.46
New, adapter f499e579, November 4Tested only766 rows: 343 from real Fabric records, 423 from seed packs. One job: pick a Task Object or say nothing fitsRank 16, alpha 32, dropout 0.05, learning rate 0.0002, 2 epochs, 16 rows a step, 88 steps, 1,052 seconds. Loss 0.734 to 0.044$1.32
Two other variants, November 4Tested only343 real rows only: one continued the older adapter, one started freshSame base$0.62, $0.90
Newest decision modelTested onlyDecides code, model, both, reuse or nothing, and whether to splitTrained

The November 4 rows: 62 Tasks that name an object, 134 objects that name an object, 140 pairs from different families where nothing fits, 7 from search dev questions, and 423 seed-pack rows. Objects left out: 114 found wrong, 38 tests, 30 with a credential shape, 49 marked invented or wrong, 55 over the limit of 6 rows per object, 6 with no place for the right answer. Our personal data layer read all 2,781 texts and changed none. The whole November 4 effort cost $16.04, estimated at list rates and including the readers.

Held-out results, adapter of November 2

TestResultAgainstConditions
Splitting requests97.9 percent, Task Object F145.0 percent untuned106 requests
Reviewing workAccepted 1 of 126 flawed reports; 99.6 percent balanced accuracy204 reports
Tool calls99.3 percent exact94.0 percent at 256 tokens; 96.7 at 384150 cases
Top pick when a match exists88.6 percentUntuned 67.4 at the token limit, 88.0 with its full reply175 queries. Tuning mainly fixed format and token use
Says nothing fits83.7 percent, 25 false matches51.0 percent for our earlier adapter153 queries, derived later
Pick or nothing fits, re-run November 4170 of 194Deterministic BM25 153, Muse Spark Open 6826 rows only the fine-tune got, 9 only BM25, exact McNemar p = 0.006

All seed-pack catalog data, not live Tasks. The first five tests were also used to choose the final version. Most of the November 4 gain is saying nothing fits. Six of six held-out controls passed on the serving setup on November 4.

How the November 2 adapter is used

Mark: Built, runs by hand, in batches. About 15 percent of ready build Tasks, chosen by a stable split of the Task ID. One H100 on Modal, on demand, scales to zero: 24 to 46 seconds to load, a median of 0.89 seconds per answer. It has looked at 65 real Tasks in 3 batches. It picked something 3 times and said nothing fits 62 times. Muse Spark 1.3, with no fine-tune, audits every answer, and passed 49 of 65. Only an answer that passes becomes a route. One pick has reached a live worker, as a hint. Record: decider ↗.

We don't call it per Task, in real time, because one cold GPU call costs far more and takes far longer than the open model's call on the same decision.

Before and after, held-out

SurfaceTop result right, of 204Honest about no answer, of 23Median ms (p95)Median tokens (p95)
/q/find78.4 percent (72.5 to 83.8)22270 (918)157 (675)
/q/search, before33.3 percent (27.0 to 39.7)41,611 (3,915)2,953 (3,457)
/q/search, after33.8 percent41,222 (2,169)2,948 (3,457)
/q/repos?q=, before22.1 percent; 11 replied 50023335 (581)48 (89)
Fabric /v1/search, before11.3 percent71,097 (1,857)856 (1,127)
Eranos catalog, before9.3 percent23291 (636)13 (2,201)

Conditions: live, November 4, about 16:15 UTC; before figures about 14:40 UTC. 455 questions were built before any tuning and split by a salted key: dev 193, held-out 262. Labels come from rows and written rules, never from a ranker. 60 real free-text queries are judged apart, by a blind reader. Tokens are characters / 4, an estimate. Ranges are 95 percent, resampling questions. One client in one region, on a shared machine. Top-3 for /q/find is the same as its top result: it answers or declines.

By kind of question, top result, held-out

Kind/q/find/q/search, before
Exact repository16 of 1615 of 16
Owner14 of 140 of 14
Topic11 of 121 of 12
Plain need, strict label11 of 511 of 51
Task Object14 of 1411 of 14
Seed pack13 of 130 of 13
Kit16 of 160 of 16
Misspelling16 of 180 of 18
Real agent queries, together75 of 8563 of 85

Without real owners, which /q/search was never built for, real agent queries are 68 of 78 against 63 of 78.

Tests around it

TestMarkOutcome
Agent test: Muse Spark, one route, up to 3 callsTested only/q/find 121 of 147 right, 3,349 tokens a run. /q/search?compact=1 28 of 147, 13,481 tokens. Plain need, 30 of 51 against 3 of 51: an agent that can rephrase does much better.
Registered test on 43 held-out jobs: the same coding agent and Muse Spark 1.3, with and without Fabric searchTested onlyOn exact repeats, on all 14 jobs, a stored answer came back in under a second with zero model tokens and passed the same hidden tests, against about 114,000 tokens for an agent doing the job again.
A model on the live queryDecided againstWe chose not to add one on the free public route: the caller's own model rephrasing already reaches 30 of 51
Same question again, Eranos libraryRunning on liveExact repeats 5 of 5 from the library, no model, $0. Labeled test requests, November 4

Continuous improvement: each loop

LoopMarkWhat it changesWhat it measuresNumbersPromotion and rollback
Feed OmniNode tunerRunning on liveLabel mix, batch sizeA different worker approves, less cost and time49 outcomes, 17 runs, last change Nov 4, 21:19 UTCBatch grows only on the plateau check. No rollback rule on the mix; every version is kept
Eranos worker tunerRunning on liveShare of each model and personaMake: passed the check the first time, or a person's use. Check: agreed with a second check; a missed fault counts 3 times. Less cost and time202 outcomes (154 make, 48 check), tuner version 80, 22:00 UTCA trial has 5 percent until 5 outcomes. An active variant under 2 percent after 10 outcomes is dropped, never the last one
Persona writingRunning on liveAdds a persona as a trial2 recorded failures start it, at most 2 trials a step. The draft must pass wording, accusation and personal data checks5 written. make-t17 is active on 29 outcomesSame trial rule. Only live if drawn
Shim claim scoringRunning on liveBonus on each claimDispatches, wins, quality32 arms, 6,596 outcomesNone. Scores drift with results
Prompt-kit trialsRunning on liveStarter prompt and kit a new worker seesSubmit outcomes64 arms, 5,590 outcomes, 51 promoted, 11 at the stage before, 2 evaluated
Fine-tune audit switchRunning on liveA fine-tune's shareA different model's audit of each answer65 audited, 49 passed, last 12: 0.917. 0 live samples since wiringSteps: 15, 35, 65, 100 percent. Up: 4 samples and 85 percent. Off: under 70 percent over the last 12, stays off until a person restores it
Sizing tunerBuilt, runs by handIts rule tableFinished work, less cost53 desk Tasks read25 percent trial by a stable split. Promote on 6 or more each side, with passing work. Roll back on a drop of 0.15
Pre-step inside the feed nodeRunning on liveWhat a model call receivesWhether a cut item was asked for anyway1 decision on record at 14:40 UTC, 2 categories cut, about 19 to 10 estimated tokensIt reads traces to pin a category or turn a rule off

Records: Eranos policy ↗, current shares ↗.

Retraining

When it fires. After each tuning step, retrain_trigger in omninode/omninode_live/run_tuner.py counts checked, model-made examples. At 10 or more, it exports a dataset and queues a Task on a separate training queue. Mark: Running on live as a trigger. It starts and pays for nothing. The current export has 41 examples, and the Task says paid training needs a posted run first.

The public export. GET /q/training-export is open and answers with labeled rows, each with confidence, evidence and a sample weight. Rows a check found wrong stay at confidence 0.05 and weight 0. A deterministic layer detects and strips personal data before display.

The rule that replaces a default. A fine-tuned model replaces a default only when it beats it on held-out tests, by a margin of 0.02 in the registry, and with a bar written first in our November 4 tests. It starts on a small share, 15 percent. It steps up on results, and switches back by itself if they drop. Each model's base, training data, test results, cost and restore pointer stay on the record. The code enforces that a checker doesn't share a worker, agent, adapter or training data with its maker. See agents/warm-server-agent/src/warm_agent/canary_and_tuner.py.

Confidence scores and evidence

Running on live. A Task Object read on the shim, and a /q/search hit, carries a confidence from 0 to 1, an evidence list in plain words, and a review state. A /q/find hit says reviewed only. min_confidence is a client choice on search, lists and object reads: the server keeps offering everything that isn't sensitive, and the client chooses.

How the score is set

StateBaseEvidence says
A check found it wrong0.05, fixeda check found it wrong
Reviewed0.70a check passed it
Maker says tests were run again and matched0.60tests were run again and matched
Seed check0.50
No check yet0.30no check result yet

Then add 0.10 per checker with a key, or our own checker, up to 0.20, and 0.02 per evaluation from a name only, up to 0.06. Code: deploy/cloudflare/public_read.js, confidenceOf, in the shim repository.

This is a rule, not a calibrated chance of being right. It says what happened to an object.

What's next

ItemMarkWhy
Credit outcomes to the deciderNext, not builtSo its choices can learn. It would need more than one maker to choose between
Shapes on a timerNext, not builtUnits are written, and installing them is the owner's call. Then shapes gather real runs, and the tuner step joins them
Shape as a field on a public Task, gated by validateNext, not builtIt would be a new public way to run things, so it needs an independent review first
A second retrain on real outcomesNext, not builtOnly when the labels exist, and under the same rule

Keep reading