@tangle-network/agent-runtime 0.314.1 → 0.316.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/{activation-BpMnOlw5.d.ts → activation-BFDmjaKP.d.ts} +2 -2
- package/dist/{activation-Ci20OAsG.js → activation-CvdE2HIU.js} +3 -3
- package/dist/{activation-Ci20OAsG.js.map → activation-CvdE2HIU.js.map} +1 -1
- package/dist/agent.d.ts +2 -1
- package/dist/agent.js +2 -2
- package/dist/{bundle-BK3XBY6q.js → bundle-RgHpAFDY.js} +2 -2
- package/dist/{bundle-BK3XBY6q.js.map → bundle-RgHpAFDY.js.map} +1 -1
- package/dist/candidate-execution/index.js +5 -5
- package/dist/{coordination-driver-CyJF37L8.js → coordination-driver-DGhN8GO9.js} +3 -3
- package/dist/{coordination-driver-CyJF37L8.js.map → coordination-driver-DGhN8GO9.js.map} +1 -1
- package/dist/{delegate-CTezpiM2.js → delegate-B5pmSbQa.js} +2 -2
- package/dist/{delegate-CTezpiM2.js.map → delegate-B5pmSbQa.js.map} +1 -1
- package/dist/durable.d.ts +1 -1
- package/dist/durable.js +4 -4
- package/dist/{graph-DGDrO_ZW.js → graph-G0j1ysqe.js} +4 -4
- package/dist/{graph-DGDrO_ZW.js.map → graph-G0j1ysqe.js.map} +1 -1
- package/dist/{improvement-cycle-DReg-Qi4.js → improvement-cycle-D7yR6GC2.js} +6 -6
- package/dist/{improvement-cycle-DReg-Qi4.js.map → improvement-cycle-D7yR6GC2.js.map} +1 -1
- package/dist/{index-B89bMKhD.d.ts → index-CUh40yUJ.d.ts} +13 -90
- package/dist/index.d.ts +4 -4
- package/dist/index.js +9 -9
- package/dist/integrations-DopfCC2a.d.ts +190 -0
- package/dist/integrations-dFi-ALk7.js +132 -0
- package/dist/integrations-dFi-ALk7.js.map +1 -0
- package/dist/intelligence.d.ts +2 -2
- package/dist/intelligence.js +7 -7
- package/dist/kernel.d.ts +2 -2
- package/dist/kernel.js +9 -9
- package/dist/{loop-runner-bin-eoycPwY3.js → loop-runner-bin-CFVX4oi0.js} +3 -3
- package/dist/{loop-runner-bin-eoycPwY3.js.map → loop-runner-bin-CFVX4oi0.js.map} +1 -1
- package/dist/{loop-runner-bin-BM1in-RT.d.ts → loop-runner-bin-DQKLUt0l.d.ts} +2 -2
- package/dist/loop-runner-bin.d.ts +1 -1
- package/dist/loop-runner-bin.js +1 -1
- package/dist/mcp/bin.js +3 -3
- package/dist/mcp/index.d.ts +74 -33
- package/dist/mcp/index.js +129 -6
- package/dist/mcp/index.js.map +1 -1
- package/dist/{openai-tools-xPO6dzf4.d.ts → openai-tools-u3gWBi3x.d.ts} +2 -2
- package/dist/placement.d.ts +132 -0
- package/dist/placement.js +319 -0
- package/dist/placement.js.map +1 -0
- package/dist/platform.d.ts +1 -188
- package/dist/platform.js +1 -129
- package/dist/platform.js.map +1 -1
- package/dist/{prepare-8A1CAWG8.js → prepare-CD9kR0gS.js} +3 -3
- package/dist/{prepare-8A1CAWG8.js.map → prepare-CD9kR0gS.js.map} +1 -1
- package/dist/{profile-BhQShsM1.js → profile-CHXYmpGd.js} +2 -2
- package/dist/{profile-BhQShsM1.js.map → profile-CHXYmpGd.js.map} +1 -1
- package/dist/profile-materialization-Cca615eu.d.ts +90 -0
- package/dist/profiles.d.ts +1 -1
- package/dist/{protected-model-port-ug52OmvB.js → protected-model-port-B0pHd65J.js} +4 -4
- package/dist/{protected-model-port-ug52OmvB.js.map → protected-model-port-B0pHd65J.js.map} +1 -1
- package/dist/{provision-supervisor-B6D3XRbL.js → provision-supervisor-BQLLrUtn.js} +4 -4
- package/dist/{provision-supervisor-B6D3XRbL.js.map → provision-supervisor-BQLLrUtn.js.map} +1 -1
- package/dist/{runtime-NlIVxRXu.js → runtime-B9BOFyEp.js} +10 -9
- package/dist/runtime-B9BOFyEp.js.map +1 -0
- package/dist/{search-executor-DFs-79tK.js → search-executor-B5ZVFsDV.js} +3 -3
- package/dist/{search-executor-DFs-79tK.js.map → search-executor-B5ZVFsDV.js.map} +1 -1
- package/dist/{server-B8ubWXpW.js → server-TwpH9aik.js} +4 -4
- package/dist/{server-B8ubWXpW.js.map → server-TwpH9aik.js.map} +1 -1
- package/dist/{supervise-BE9ta8bl.js → supervise-CU6AuxWY.js} +119 -29
- package/dist/supervise-CU6AuxWY.js.map +1 -0
- package/dist/{supervisor-DmSuKksw.js → supervisor-CbFyf48U.js} +3 -3
- package/dist/{supervisor-DmSuKksw.js.map → supervisor-CbFyf48U.js.map} +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +14 -14
- package/dist/tool-loop.d.ts +35 -5
- package/dist/tool-loop.js +48 -21
- package/dist/tool-loop.js.map +1 -1
- package/dist/tui/index.d.ts +1 -1
- package/dist/tui/index.js +1 -1
- package/dist/workspace-store/index.d.ts +206 -0
- package/dist/workspace-store/index.js +855 -0
- package/dist/workspace-store/index.js.map +1 -0
- package/dist/{workspace-streams-BEvSX97P.js → workspace-streams-DkijayqX.js} +16 -3
- package/dist/workspace-streams-DkijayqX.js.map +1 -0
- package/package.json +14 -4
- package/skills/profile-authoring/SKILL.md +114 -171
- package/dist/runtime-NlIVxRXu.js.map +0 -1
- package/dist/supervise-BE9ta8bl.js.map +0 -1
- package/dist/workspace-streams-BEvSX97P.js.map +0 -1
|
@@ -1,229 +1,172 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: profile-authoring
|
|
3
|
-
description: Author AgentProfiles
|
|
3
|
+
description: Author AgentProfiles that start on first spawn and deliver checked work, new or continued.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Profile authoring
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Do not constrain agents with prohibitions.
|
|
12
|
-
|
|
8
|
+
A profile is right when its agent starts, delivers what its brief names, and the result survives the people it is for.
|
|
9
|
+
Before every spawn, read "A profile that starts" and "A brief that delivers". Before a run that matters, read sections 1 to 9 as well.
|
|
10
|
+
Before a new or changed profile, name the observed reason and the result that would reverse the choice.
|
|
11
|
+
Do not constrain agents with prohibitions: change what is rewarded and who is in the room, so the honest path pays.
|
|
12
|
+
|
|
13
|
+
## A profile that starts
|
|
14
|
+
|
|
15
|
+
A refused profile fails before its first model turn, and it fails the same way on every retry.
|
|
16
|
+
On 2026-10-10 Discovery plays lost 20 driver attempts to child profiles naming a tool the harness does not publish, and 3 spawns to a missing subscription source.
|
|
17
|
+
Start from a profile that already ran (in a Discovery play, `inputs/profile-examples/<family>.json`) and change only `name`, `description` and `prompt.instructions`.
|
|
18
|
+
|
|
19
|
+
| Field | Rule |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `harness`, `model.provider`, `model.default` | A triple the harness serves and the run admits in `allowedModels`. A vendor harness runs only its vendor's models. Discovery plays: `opencode` + `zai-coding-plan` + `glm-5.3`; `claude-code` + `anthropic` + `claude-opus-5-5`; `codex` + `openai` + `gpt-6.1-sol`. |
|
|
22
|
+
| `model.metadata.credentialSource` | Always explicit: `"subscription"` runs on a seat. An omitted source means managed API credit, and a subscription-only run refuses that spawn before spend. |
|
|
23
|
+
| `tools`, native | Only the ids in the harness table below. |
|
|
24
|
+
| `tools`, Runtime | `agent_runtime_coordination_<verb>: true`, exactly that prefix, with underscores. |
|
|
25
|
+
| `prompt` | The role in `instructions[0]`, the procedure after it. No `systemPrompt`: it replaces the harness's own guidance (17,730 characters on Codex), and Discovery refuses one under 4,000 characters. No `appendSystemPrompt` on Codex or Gemini. |
|
|
26
|
+
| `resources` | `failOnError: true`. Hand each file by path, `{"path": "<mount>", "resource": {"kind": "inline", "name": "<name>", "path": "<file in your workspace>"}}`: Runtime reads the bytes (UTF-8, at most 4 MiB). Never retype a file into `content`: a manager that did delivered 5 wrong characters in 24,008. |
|
|
27
|
+
|
|
28
|
+
Native tool ids (agent-dev-container `packages/agent-profile-materialize/src/control-maps.ts` and `execution-controls.ts`; matching ignores case and every character but letters, digits and `_`):
|
|
29
|
+
|
|
30
|
+
| Harness | Accepted | Refused |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| opencode | read, write, edit, apply_patch (or patch), bash, glob, grep, webfetch, websearch, todowrite, skill, question, codesearch; its native subagent switch only as `"task": false` | list, ls, find, lsp, any other name |
|
|
33
|
+
| claude-code | Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, TodoWrite, NotebookEdit, Skill, AskUserQuestion; leave out its native subagent tools | any other name, every `mcp__` name included |
|
|
34
|
+
| codex | `web_search` (true or false); `web_fetch` only as false | every other key, and any `permissions` entry |
|
|
35
|
+
| pi | names in Pi's own registry: read, bash, edit, write (glob becomes find, shell becomes bash); a named tool Pi lacks ends the session | names Pi lacks |
|
|
36
|
+
| any other | no `tools` and no `permissions` | every entry |
|
|
37
|
+
|
|
38
|
+
A harness's own subagent runs outside Runtime: no journal row, no reservation from the shared budget, no grade.
|
|
39
|
+
|
|
40
|
+
Runtime keys (agent-runtime `src/runtime/supervise/provider-visible-profile.ts`; verbs from `coordinationVerbNames` in `src/mcp/tools/coordination.ts`):
|
|
41
|
+
|
|
42
|
+
- Runtime removes every key that starts with `agent_runtime_coordination_` before the harness sees the profile. Any other spelling reaches the harness and is refused: a bare `knowledge_record`, OpenCode's `agent-runtime-coordination_spawn_worker`, Claude Code's `mcp__agent-runtime-coordination__spawn_worker`, or `agent_runtime_spawn_worker`.
|
|
43
|
+
- Verbs: `spawn_worker`, `cancel_worker`, `observe_agent`, `steer_agent`, `read_journal`, `submit_result`, `report_blocked`, `ask_parent`, `list_questions`, `answer_question`, `read_continuation`, `stop`, `list_analysts`, `run_analyst`, `define_analyst`.
|
|
44
|
+
- A run's tool provider adds product verbs under the same prefix; Discovery serves `knowledge_read`, `knowledge_search`, `knowledge_resolve` and `knowledge_record`. A declared verb no provider serves fails when the run resolves its tools.
|
|
45
|
+
- `await_event` no longer exists; a profile that grants it is refused.
|
|
46
|
+
|
|
47
|
+
Leaf or manager is decided by the keys you write (`withInheritedSpawnRights`, `src/runtime/supervise/supervise.ts`).
|
|
48
|
+
A child whose profile names any `agent_runtime_coordination_` key gets exactly those keys.
|
|
49
|
+
A child that names none, under a parent that can spawn, inherits the parent's coordination verbs, `spawn_worker` included, plus `submit_result`; it does not inherit product verbs, so it cannot write Knowledge pages.
|
|
50
|
+
So always write them. A leaf gets the product verbs it uses, `submit_result` and `report_blocked`.
|
|
51
|
+
A manager adds `agent_runtime_coordination_spawn_worker: true` and only the observation and steering verbs it will use, and carries this skill byte for byte: `"skills": [{"kind": "inline", "name": "profile-authoring", "path": "<this file in your workspace>"}]` beside `resources.failOnError: true`.
|
|
52
|
+
|
|
53
|
+
A leaf that starts on OpenCode:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{"name": "csv-edge-case-tester", "description": "Finds RFC 4180 inputs that break csvstat.mjs",
|
|
57
|
+
"harness": "opencode",
|
|
58
|
+
"model": {"provider": "zai-coding-plan", "default": "glm-5.3", "reasoningEffort": "high", "metadata": {"credentialSource": "subscription"}},
|
|
59
|
+
"prompt": {"instructions": ["You are the CSV edge-case tester: you find inputs that break csvstat.mjs.", "Write each case under out/cases/, run it, and record failures at pages/csvstat-cli/work/tester/failures.md.", "Call submit_result with that page path, then end your turn."]},
|
|
60
|
+
"tools": {"read": true, "write": true, "edit": true, "bash": true, "glob": true, "grep": true, "task": false,
|
|
61
|
+
"agent_runtime_coordination_knowledge_read": true, "agent_runtime_coordination_knowledge_record": true,
|
|
62
|
+
"agent_runtime_coordination_submit_result": true, "agent_runtime_coordination_report_blocked": true},
|
|
63
|
+
"permissions": {"bash": "allow", "edit": "allow", "external_directory": "allow"},
|
|
64
|
+
"resources": {"failOnError": true}}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Before a large run, compare the materialization receipt and served tool list with what you wrote; a mounted skill or listed tool proves only availability.
|
|
68
|
+
Keep credential values out of profiles, tasks, resources and journals.
|
|
13
69
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
The
|
|
17
|
-
|
|
18
|
-
|
|
70
|
+
## A brief that delivers
|
|
71
|
+
|
|
72
|
+
The spawn's assignment carries the work; the profile carries the role.
|
|
73
|
+
Every assignment names four things: the exact page path and format to record, with one literal example line; the command that checks the part; what to do when blocked; and when to check in.
|
|
74
|
+
Hand every file the child judges by path, never a summary.
|
|
75
|
+
A spawn's `deadlineMs` is a check-in, not a kill: the child is told to record its state and submit what it has, and is stopped only if it then makes no progress. Set it from the work.
|
|
76
|
+
A manager waits by ending its turn: Runtime wakes it with each settlement, finding or message, and with a notice before its deadline. A shell timer or polling loop is not re-entry, and it spends turns. Ending a turn with work open is not completion; a manager with a check ends on an accepted `submit_result` or a bound.
|
|
77
|
+
A nested manager that returns early can end its scope and cancel live descendants.
|
|
78
|
+
Require each child to record partial work where its parent can recover it after an interruption.
|
|
79
|
+
Before retrying a failed child, read what it recorded; finished work may be usable. A retry names the specific failure in a new profile.
|
|
80
|
+
A spawn that returned a transport error may still have started a child: observe before spawning again.
|
|
19
81
|
|
|
20
82
|
## 1. Name the audience and its acceptance test
|
|
21
83
|
|
|
22
|
-
Name the audience and the decision the result supports.
|
|
23
|
-
Quote
|
|
24
|
-
|
|
25
|
-
List the outcome classes the audience distinguishes: new, known, partial, conditional, reproduced null, stopped unverified, invalid, unassessed.
|
|
26
|
-
Never reduce them to solved and unsolved.
|
|
84
|
+
Name the audience and the decision the result supports: a paper's referees, a repository's maintainers, a paying customer, a domain expert.
|
|
85
|
+
Quote its acceptance test from the source, word for word, with its location, standing assumptions, exclusions and nondegeneracy conditions; a transcription drops them.
|
|
86
|
+
List the outcome classes the audience distinguishes: new, known, partial, conditional, reproduced null, stopped unverified, invalid, unassessed. Never reduce them to solved and unsolved.
|
|
27
87
|
Make a literature search part of acceptance, and record an answer already published as known.
|
|
28
88
|
|
|
29
89
|
## 2. Probe the proxy's gap before launch
|
|
30
90
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
Record the probe, its inputs and its verdicts with the registration.
|
|
35
|
-
If a canary passes, fix the proxy or narrow the claim; do not launch into a known gap.
|
|
91
|
+
The proxy is the check you can run during the work: an exact checker, a test suite, a rater or a demo. The gap is everything it accepts and the audience rejects; hacks live there, and a stronger model does not close it.
|
|
92
|
+
Try to make the proxy accept what the audience rejects: plant the source's trivial and excluded cases, a published answer, a degenerate artifact, an impossible variant, a stale comparator. Each must be refused or classed as known; if one passes, fix the proxy or narrow the claim.
|
|
93
|
+
Probe the other side too: write one correct result in a format the brief allows but the proxy's author did not expect, and run the proxy on it. A proxy that refuses it trains agents on format, not substance.
|
|
36
94
|
Use exact or interval arithmetic, and count only what is proven.
|
|
37
95
|
An LLM judge becomes a gate only after it beats an always-reject baseline on cases a human graded.
|
|
38
96
|
|
|
39
97
|
## 3. Keep acceptance out of the reward loop
|
|
40
98
|
|
|
41
99
|
Give agents a development check they can run; hiding every check also blocks honest work.
|
|
42
|
-
Hold back
|
|
43
|
-
It is a stricter superset, run from the delivered packet in a fresh environment, by a party outside the authoring lineage.
|
|
44
|
-
Grade only outputs that the rerun reproduces.
|
|
100
|
+
Hold back a stricter acceptance check, run from the delivered packet in a fresh environment by a party outside the authoring lineage, and grade only what its rerun reproduces.
|
|
45
101
|
A parent that promotes children on proxy passes alone selects for the gap; have the referee attack a result before anyone builds on it.
|
|
46
102
|
Keep the headline gate fixed for the whole task; report a stricter bar as a second line.
|
|
47
|
-
|
|
48
|
-
For a customer commission, the bar is the first deliverable.
|
|
49
|
-
Author the root to spend its first milestone as the expert team for the domain: 50 to 100 concrete, checkable expectations across mechanics, domain substance, finance, risk, plan, evidence and presentation, the deliverable spec, and a workplan.
|
|
50
|
-
An engagement partner outside the authoring lineage raises the bar against named exemplars and adds what it misses; part of its additions stay held back.
|
|
51
|
-
A hygiene bar (present, reproduces, calculates) is the proxy, not the audience; directors optimise to whatever bar they are given.
|
|
103
|
+
For a customer commission the bar is the first deliverable: the root's first milestone writes 50 to 100 checkable expectations, the deliverable spec and a workplan, and a partner outside the authoring lineage raises the bar against named exemplars and holds part of it back.
|
|
52
104
|
|
|
53
105
|
## 4. Choose roles and a model for each
|
|
54
106
|
|
|
55
107
|
Proposers: cheap, high-throughput models where an exact checker exists, with an occasional strong model.
|
|
56
|
-
Referee: a skeptic from another model family, holding the artifact
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Monitor: reads the journal and live notes during the run, flags drift or proxy gaming, and steers or reports; it never scores.
|
|
61
|
-
Choose each model from measured cost and quality on this kind of work, and state its dollars.
|
|
62
|
-
Admit the referee's model in `allowedModels`; Runtime refuses a model outside that list at spawn.
|
|
63
|
-
Hand every role the files it judges by path, never a summary.
|
|
108
|
+
Referee: a skeptic from another model family, holding the artifact and its own instrument (exact recomputation, execution, a literature search, an attempted counter-case). It can reject a claim; only the held-back check accepts one. A change of family alone is weak.
|
|
109
|
+
Monitor: reads the journal and live notes, flags drift or proxy gaming, and steers or reports; it never scores.
|
|
110
|
+
Choose each model from measured cost and quality on this kind of work, state its dollars, and admit it in `allowedModels`; Runtime refuses a model outside that list at spawn.
|
|
111
|
+
Spawn a helper only for work that is independent, long enough to repay a cold start, and checkable on its own.
|
|
64
112
|
|
|
65
113
|
## 5. Define success, the honest null, and the stop
|
|
66
114
|
|
|
67
|
-
Success is an accepted result or a reproduced null.
|
|
68
|
-
A null
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
The reproducer belongs to the check, not to the run.
|
|
78
|
-
Register it before launch with its sha256, the statements it covers, and its own calibration: cells with the source's results, and a canary where the predicate certified as zero must fire.
|
|
79
|
-
Agents may run it; they never write it.
|
|
80
|
-
The outside check reruns its own copy, never code from the run: a script can print the recorded rows.
|
|
81
|
-
Its copy's hash must equal the registered hash and the certificate's.
|
|
82
|
-
It reruns the registered calibration first and credits nothing on a miss: a reproducer that searches nothing reproduces an empty row too.
|
|
83
|
-
Then it reruns the certificate's calibration cells and the cells that would be new, until its budget ends.
|
|
84
|
-
The pass rule is fixed: each rerun row equals the recorded row, field for field, and one mismatch refuses the certificate.
|
|
85
|
-
Credit only the cells that the check reran and matched; a sample can refuse a certificate, never extend credit.
|
|
86
|
-
A null that is no search, such as a spec conflict or a gap list, names each item with evidence; it counts when the held-back check reproduces each.
|
|
87
|
-
A null without a certificate, or without a registered reproducer, is recorded as "stopped, unverified", never as success.
|
|
88
|
-
A null inside a range the source checked or an earlier reproduced null covered adds nothing.
|
|
89
|
-
Tell agents the checker may be wrong; credit a checker-defect report the same way, once someone outside the run reproduces the defect.
|
|
90
|
-
|
|
91
|
-
Separate execution settlement, development progress, and final acceptance.
|
|
92
|
-
An unknown outside verdict does not establish absent research progress.
|
|
93
|
-
Match completion instructions to the tools actually served to that node.
|
|
94
|
-
|
|
95
|
-
For continued research, inspect the installed Runtime deliverable and continuation contracts before choosing bounds.
|
|
96
|
-
Use the existing `checkState` interface for calibrated development measurements when applicable.
|
|
97
|
-
Probe useful progress and unchanged or invalid artifacts before relying on the measurement.
|
|
98
|
-
An always-false acceptance placeholder alone cannot distinguish useful work from stagnation.
|
|
99
|
-
Preserve genuine no-progress limits, deadlines, budgets, and cancellation.
|
|
100
|
-
Choose `maxBarren` from the task's measured feedback cadence; pending assessment does not justify a universally low value.
|
|
101
|
-
|
|
102
|
-
For managers, state how they wait for descendants and collect their artifacts before returning.
|
|
103
|
-
A nested manager returning can end its scope and cancel live descendants.
|
|
104
|
-
A manager waits by ending its turn while required descendant work remains live: Runtime wakes it with each settlement, finding, or message from its lead, and with a notice before its deadline.
|
|
105
|
-
Ending a turn with work open is not completion; a manager with a check ends only on an accepted `submit_result` or a bound.
|
|
106
|
-
A shell timer or polling loop is not Runtime re-entry, and it spends turns.
|
|
107
|
-
Require each descendant to retain partial work where its parent can recover it after interruption.
|
|
108
|
-
|
|
109
|
-
Retain certificates and partial work where the outside assessor can read exact bytes.
|
|
110
|
-
A certificate becomes accepted only through the registered outside check.
|
|
111
|
-
Record the actual termination cause separately from the research outcome.
|
|
112
|
-
State the continuation policy and available completion path in the immutable input.
|
|
113
|
-
A source merge proves no change to an installed or running process.
|
|
115
|
+
Success is an accepted result or a reproduced null. Separate execution settlement, development progress and final acceptance; an unknown outside verdict is not absent progress.
|
|
116
|
+
A null from a search counts only with a coverage certificate: the searched space as data (ranges, method, seeds, bound reached), one row per cell, a calibration cell where the search must find objects that exist, and the sha256 of the reproducer.
|
|
117
|
+
The reproducer belongs to the check: registered before launch with its hash, the statements it covers and its own calibration; agents may run it and never write it.
|
|
118
|
+
The outside check reruns its own copy, reruns the calibration first and credits nothing on a miss, then reruns cells until its budget ends; one mismatched row refuses the certificate, and only rerun, matched cells earn credit.
|
|
119
|
+
A null that is no search (a spec conflict, a gap list) counts when the held-back check reproduces each named item. A null without a certificate is "stopped, unverified"; one inside a range already covered adds nothing.
|
|
120
|
+
Tell agents the checker may be wrong; credit a reproduced checker-defect report like a result.
|
|
121
|
+
Grant `submit_result` only where Runtime gives the node a check; otherwise its settlement stays unassessed. Match completion instructions to the tools actually served to each node.
|
|
122
|
+
State the stop: what the agent does the moment its check passes, and that work after a pass spends seats and adds nothing.
|
|
123
|
+
For continued research, read the installed continuation contract first and choose `maxBarren` from the measured feedback cadence.
|
|
114
124
|
|
|
115
125
|
## 6. Carry known traps
|
|
116
126
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
"The outside check does not count a c = 0 instance" is a trap; "the checker passed c = 0 claims" is a recipe.
|
|
120
|
-
Examples: excluded or trivial cases, stale comparators, published answers, tests versus users, a rater versus an expert.
|
|
121
|
-
Keep infrastructure incidents out of the brief; the operator owns the stack.
|
|
127
|
+
Write each trap as what the held-back acceptance refuses, never as what the proxy passes: "the outside check does not count a c = 0 instance" is a trap; "the checker passed c = 0 claims" is a recipe. Give the rule, not the incident: the operator owns the stack.
|
|
128
|
+
Typical traps: excluded or trivial cases, stale or wrong-field comparators, published answers, tests versus users, a demo versus a customer, a rater versus an expert.
|
|
122
129
|
Record each new trap where the next author reads it, in the same change as its fix.
|
|
123
130
|
|
|
124
131
|
## 7. Set budget and caps
|
|
125
132
|
|
|
126
|
-
Hard limits live in Runtime options and per-assignment budgets: `budget`, `workerSlots`, `maxDepth`, `allowedModels`, `continuation`.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
Let the root set each check-in from the work; write no fixed milestone length or specialist deadline into a brief, and register a fixed box only as an arm against the root's cadence.
|
|
130
|
-
`maxTokens` is settled after the work: an overspent child keeps its output and carries a `budgetViolation`.
|
|
131
|
-
A child's total counts input tokens on every turn, so reserve turns times context.
|
|
132
|
-
For paid calls, use the execution owner's named credential and enforceable dollar limit.
|
|
133
|
-
For subscriptions, retain token, iteration, time, and compute bounds that the installed path can enforce.
|
|
134
|
-
An unmeasured dollar cost stays unknown; an unsupported dollar cap is not protection.
|
|
133
|
+
Hard limits live in Runtime options and per-assignment budgets: `budget`, `workerSlots`, `maxDepth`, `allowedModels`, `continuation`. Prompt text enforces no limit.
|
|
134
|
+
`maxTokens` is settled after the work: an overspent child keeps its output and carries a `budgetViolation`. A child's total counts input tokens on every turn, so reserve turns times context.
|
|
135
|
+
For subscriptions, keep the token, iteration, time and compute bounds the installed path enforces. An unmeasured dollar cost stays unknown; an unsupported dollar cap is not protection.
|
|
135
136
|
|
|
136
137
|
## 8. Register arms, a control and outcomes
|
|
137
138
|
|
|
138
|
-
Before launch, register the claim, the arms, the outcome measures, the useful-effect threshold
|
|
139
|
+
Before launch, register the claim, the arms, the outcome measures, the useful-effect threshold and the result that would refute it.
|
|
139
140
|
Run each ingredient you want to credit against a control without it: the referee, the credited exit, live notes, the wording.
|
|
140
|
-
Count precision after review, not claim volume.
|
|
141
141
|
Report reviewed-claim precision, canary pass rate, how many proxy passes the audience accepts, and the cost per accepted result.
|
|
142
142
|
|
|
143
143
|
## 9. Record what makes a hack visible
|
|
144
144
|
|
|
145
|
-
Record the authored profile
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
Record each claim with its artifact, the quoted statement it answers and its outcome class.
|
|
151
|
-
Keep dated live notes that separate observation from inference and name the next check.
|
|
152
|
-
Live notes coordinate the team and support an audit; they never certify honesty, so never score them.
|
|
153
|
-
Keep unknown cost, output and state unknown; never record them as zero or success.
|
|
154
|
-
|
|
155
|
-
## Write the profile
|
|
156
|
-
|
|
157
|
-
Before a new or changed profile, name the observed reason and the result that would reverse the choice.
|
|
158
|
-
Before you retry a null or failed child, inspect its recorded artifacts; finished work may be usable.
|
|
159
|
-
A profile with no Runtime coordination tool is a leaf; any coordination tool makes it a managed node.
|
|
160
|
-
`agent_runtime_coordination_spawn_worker: true` grants Runtime spawning; names, metadata and role labels grant nothing.
|
|
161
|
-
Prove recursive execution through actual child-to-grandchild edges.
|
|
162
|
-
Record harness-native children separately from Runtime children.
|
|
163
|
-
Group retries of the same assignment into one lineage when comparing teams.
|
|
164
|
-
Grant `submit_result` only when Runtime gives that node an independent check; otherwise its settlement stays unassessed.
|
|
165
|
-
Grant only the observation, steering and journal tools that the assignment needs.
|
|
166
|
-
Set `harness`, `model.default` and `model.provider` explicitly, and validate against the current `agentProfileSchema`.
|
|
167
|
-
State the node's role in the first `prompt.instructions` entry and its procedure after it; every harness reads them, and its own system prompt stays in force.
|
|
168
|
-
`prompt.appendSystemPrompt` reaches only harnesses with an additive channel (claude-code, pi, prime, opencode); Codex and Gemini refuse it when the profile materializes.
|
|
169
|
-
Set `prompt.systemPrompt` only to replace the whole harness prompt on purpose: the model then loses the harness's own tool and workflow guidance (17,730 characters on Codex).
|
|
170
|
-
|
|
171
|
-
For subscription execution, select a harness and model that the granted account can serve.
|
|
172
|
-
Keep credential values out of profiles, tasks, resources and journals; reference them through supported configuration.
|
|
173
|
-
Runtime descendants use the same configured provider and credential resolver; author their profiles rather than copying login files.
|
|
174
|
-
Check the child's materialization receipt and actual session before claiming that account or harness executed.
|
|
175
|
-
Grant only the models and authentication routes the execution owner authorized.
|
|
176
|
-
When the run requires cloud execution, place its controller, root, and descendants through the maintained managed-cloud deployment.
|
|
177
|
-
When mounted, [execution and credentials](references/execution-and-credentials.md) explains binding, renewal, and recovery in more detail.
|
|
178
|
-
|
|
179
|
-
A tool name must be one the harness publishes, and a refused name fails the same way on retry.
|
|
180
|
-
`ls`, `list` and `find` are not tool names; select paths with a glob tool and search contents with a grep tool.
|
|
181
|
-
Distinguish exact Runtime grants from harness-native defaults, which may expose additional tools.
|
|
182
|
-
Use the execution owner's supported cancellation and recovery procedures for a wedged parent.
|
|
183
|
-
Compare Runtime's materialization receipt and served tool set with what you authored before a large run.
|
|
184
|
-
|
|
185
|
-
Hand a file by path in `resources.files`, and compare the returned sha256 with your source:
|
|
186
|
-
|
|
187
|
-
```json
|
|
188
|
-
{"path":"input.txt","resource":{"kind":"inline","name":"input","path":"inputs/input.txt"}}
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
The outer `path` is the child's mount; the nested `resource.path` is a UTF-8 source file in your workspace, under 4 MiB.
|
|
192
|
-
Every profile that can spawn carries this complete skill as an immutable inline `resources.skills` entry, with `resources.failOnError: true`.
|
|
193
|
-
For research work, carry the complete research-director reference and the mounted capability inventory as well; it gives children the lookup and source selection procedure.
|
|
194
|
-
Copy the mounted bytes; never retype them.
|
|
145
|
+
Record the authored profile, the effective profile after composition, and the materialization receipt with each mounted file's sha256. Distinguish declared, delivered, accessed and applied capabilities.
|
|
146
|
+
Prove recursion through actual child-to-grandchild edges, and group retries of one assignment into one lineage.
|
|
147
|
+
Keep dated live notes that separate observation from inference and name the next check; they coordinate and support an audit, and are never scored.
|
|
148
|
+
Record the termination cause apart from the research outcome. Keep unknown cost, output and state unknown, never zero or success.
|
|
149
|
+
When mounted, `references/research-directors.md`, `references/execution-and-credentials.md` and `references/acceptance-examples.md` give the worked detail.
|
|
195
150
|
|
|
196
151
|
## Checklist
|
|
197
152
|
|
|
198
|
-
|
|
153
|
+
Store this with the registration before launch.
|
|
199
154
|
|
|
200
155
|
```text
|
|
201
|
-
|
|
202
|
-
|
|
156
|
+
Starts: harness/provider/model triple, credentialSource, native tool ids, coordination keys (leaf or manager), no systemPrompt, failOnError, files by path:
|
|
157
|
+
Assignment: page paths and literal example, part check command, blocked rule, check-in:
|
|
158
|
+
Audience, decision and quoted acceptance test with exclusions:
|
|
203
159
|
Outcome classes:
|
|
204
|
-
Proxy (
|
|
205
|
-
Gap probe: canaries, verdicts, date:
|
|
160
|
+
Proxy, who sees it; gap probe (canaries refused, correct variants accepted):
|
|
206
161
|
Held-back acceptance: who runs it, where, from what:
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
Null certificate: space, rows, calibration; registered reproducer, sha256, source calibration; who reruns it, budget:
|
|
211
|
-
Credited exit, in the agents' words:
|
|
212
|
-
Served completion tools and observed materialization:
|
|
213
|
-
Development progress measurement, calibration, and feedback cadence:
|
|
214
|
-
Commission bar: engagement spec, partner, template it starts from:
|
|
215
|
-
Stop: installed check/continuation policy, deadline, maxBarren, budget, cancellation:
|
|
162
|
+
Roles and models with dollars: proposers, referee and instrument, monitor:
|
|
163
|
+
Null certificate and registered reproducer:
|
|
164
|
+
Stop: check, what happens on a pass, continuation, deadline, maxBarren, budget, cancellation:
|
|
216
165
|
Known traps handed to agents:
|
|
217
|
-
Budget, caps, key and its dollar cap:
|
|
218
166
|
Arms, control, measures, threshold, refuting result:
|
|
219
|
-
Records that expose a hack,
|
|
167
|
+
Records that expose a hack, and unavailable observations:
|
|
220
168
|
```
|
|
221
169
|
|
|
222
|
-
## Examples
|
|
223
|
-
|
|
224
|
-
For acceptance gaps and null certificates, read [acceptance examples](references/acceptance-examples.md).
|
|
225
|
-
Mount the acceptance reference when the assignment needs its worked examples.
|
|
226
|
-
|
|
227
170
|
## Then consider
|
|
228
171
|
|
|
229
172
|
- `supervise` to drive the tree once its profiles exist.
|