Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
880 commits
Select commit Hold shift + click to select a range
9f17760
merge c271: the run summary, four lines on the worker model
santoshkumarradha Sep 18, 2026
ea5113e
docs: the change entry says what the run summary invalidates
santoshkumarradha Sep 18, 2026
3e76425
test(session): require landing summary refresh
santoshkumarradha Sep 18, 2026
551bfdf
fix(session): refresh run summary at landing
santoshkumarradha Sep 18, 2026
8b2988c
docs: explain run now rail summary
santoshkumarradha Sep 18, 2026
234108e
test(tui3): specify run summary rail refresh
santoshkumarradha Sep 18, 2026
8eca15b
fix(tui3): refresh and draw run now summary
santoshkumarradha Sep 18, 2026
3d7c3f8
test(tui3): pin now rail placement and style
santoshkumarradha Sep 18, 2026
b5b7c37
test(tui3): account for root kin fallback
santoshkumarradha Sep 18, 2026
0558888
test(tui3): compare now against rendered dot kin
santoshkumarradha Sep 18, 2026
b9494a4
fix(tui3): keep run summary on plan store seam
santoshkumarradha Sep 18, 2026
0bca3d0
test(tui3): keep plan fixtures on summary door
santoshkumarradha Sep 18, 2026
33c2356
merge santos/dev ae0eef3b6 (#1207: review checks run on the crew's ch…
santoshkumarradha Sep 18, 2026
6ee1a28
merge santos/dev ae0eef3b6 (#1207: review checks run on the crew's ch…
santoshkumarradha Sep 18, 2026
34f4786
hands-on: wave1 update (trunk ae0eef3b6 with #1207, the run summary)
santoshkumarradha Sep 18, 2026
5948a3a
hands-on: wave2 update (trunk ae0eef3b6)
santoshkumarradha Sep 18, 2026
43e42cd
run: a run's result is read from the store when the root's worker ret…
santoshkumarradha Sep 18, 2026
65b29cb
fix(tui3, session): the loop never opens the store for the run summar…
santoshkumarradha Sep 18, 2026
bdb7678
merge c276: the rail says now, and the run summary is refreshed off t…
santoshkumarradha Sep 18, 2026
f864e79
session: reading a run summary from no store answers none
santoshkumarradha Sep 18, 2026
adf82ca
docs: the change entry says where the now sentence shows
santoshkumarradha Sep 18, 2026
f602709
docs: explain asking about a task
santoshkumarradha Sep 18, 2026
ba96013
test: specify bounded read-only run ask
santoshkumarradha Sep 18, 2026
6038136
feat: add bounded read-only run ask
santoshkumarradha Sep 18, 2026
14b6595
test(namelaw): recognize run ask prompt
santoshkumarradha Sep 18, 2026
a6bb7e3
fix: keep task reads inside the requested run
santoshkumarradha Sep 18, 2026
f0f6981
session: the ask turn reads a written page, a bounded record and a fe…
santoshkumarradha Sep 18, 2026
13be169
merge c272: the ask turn, one bounded read-only question about a run
santoshkumarradha Sep 18, 2026
85f7d82
prompts: the worker pages name no language in their examples
santoshkumarradha Sep 18, 2026
7b74ff5
session: answers lead with the action, number their steps and end on …
santoshkumarradha Sep 18, 2026
1848dcc
tui3: the work tab reads the rows the task sheet carries, never the s…
santoshkumarradha Sep 18, 2026
effffc7
hands-on: wave1 update (the rail's now line, the ask turn)
santoshkumarradha Sep 18, 2026
9e2e817
hands-on: wave2 update (general prompt examples, the work tab off the…
santoshkumarradha Sep 18, 2026
ee4711c
hands-on: the union's landing code imports time
santoshkumarradha Sep 18, 2026
3263a06
Merge the harness waves (#1204, #1205): the plan tree on the chat rai…
santoshkumarradha Sep 18, 2026
8de8588
hands-on: the union's landing tests count the run summary out of the …
santoshkumarradha Sep 18, 2026
164548f
Merge the harness waves at 8de85886b: the rail's now line, the ask tu…
santoshkumarradha Sep 18, 2026
7cda67c
test: the synthetic usage writer is joined before the test's state di…
santoshkumarradha Sep 18, 2026
afdf015
session: a landing's report is evidence to the completion check, and …
santoshkumarradha Sep 18, 2026
52a73b6
session: a reopened conversation keeps its tasks (#1213)
santoshkumarradha Sep 18, 2026
b94df33
session: a proposal hears every problem at once, and the brief settle…
santoshkumarradha Sep 18, 2026
d5f2700
session: a check is one command as the shell reads its quotes (#1215)
santoshkumarradha Sep 19, 2026
39ffbc5
test(lane): the router scenario is judged on scripted first tokens, n…
santoshkumarradha Sep 19, 2026
927d1e1
config: a profile config key that nothing reads is said once (#1223)
santoshkumarradha Sep 19, 2026
d026bc6
session: the conversation's tasks tool reads a run's tasks (#1222)
santoshkumarradha Sep 19, 2026
ac84ab1
fix(resident): a dispatch pass does not reclaim the leaf it just rele…
santoshkumarradha Sep 19, 2026
3a45c3f
test(session): wait helpers check the condition before the clock (#1226)
santoshkumarradha Sep 19, 2026
e88d353
test(session): the pin-the-wire test joins the usage writer before cl…
santoshkumarradha Sep 19, 2026
78e8146
fix(chatv3): seal the place sweep note at close instead of joining th…
santoshkumarradha Sep 19, 2026
fe9eb62
test(provider): order the late-first-token rescue by a signal, not el…
santoshkumarradha Sep 19, 2026
ccfef48
remote, tui3: a hosted conversation reads and steers its run (#1230)
santoshkumarradha Sep 19, 2026
efa5326
tui3: a task's page opens with the task, and a run's rows on the rail…
santoshkumarradha Sep 19, 2026
4e176a5
fix(run): a self-finished codeaf do run seats its review before it en…
santoshkumarradha Sep 19, 2026
2daa32e
run: declared checks are the review contract, judged by observable pr…
santoshkumarradha Sep 19, 2026
b208ccc
test(connect): the second-door tests use dynamic ports, not the fixed…
santoshkumarradha Sep 19, 2026
98cc254
session: a run works in a copy of its own, and its work comes home wh…
santoshkumarradha Sep 19, 2026
692d4a1
tui3: a wait whose stream has stopped arriving paints at the spinner …
santoshkumarradha Sep 19, 2026
608c459
tui3: a task's page says only what is true of it (#1240)
santoshkumarradha Sep 19, 2026
2f6559a
chat: name unread config.json keys once before defaults apply (#1239)
santoshkumarradha Sep 19, 2026
1cbcb4b
test(exec): identify a leaf-end survivor by process identity, not a b…
santoshkumarradha Sep 19, 2026
8f990d5
config: concurrent profile writes in one process compose (#1242)
santoshkumarradha Sep 19, 2026
5d9c47b
run: regression test for seating the check after a self-finished work…
santoshkumarradha Sep 19, 2026
72bbd34
session: every run a conversation has made stays readable (#1234)
santoshkumarradha Sep 19, 2026
12840ee
scripts: a repeatable hosted drive of a run on the real binary (#1241)
santoshkumarradha Sep 19, 2026
7eab247
config: unread notice skips keys the product itself retired (#1245)
santoshkumarradha Sep 19, 2026
5a7748c
tui3: what is typed after a press on a run's row goes to its page, ne…
santoshkumarradha Sep 19, 2026
1e332c3
session: make the claim-unspent revision test deterministic by forcin…
santoshkumarradha Sep 19, 2026
45137b0
fix(connect): a reconnect reuses its registered identity instead of i…
santoshkumarradha Sep 19, 2026
443c661
test(connect): stop the second-door Slack test racing on a freed port…
santoshkumarradha Sep 19, 2026
d38345f
config: two codeaf processes writing the profile at once keep each ot…
santoshkumarradha Sep 19, 2026
8ed67b7
exec: the job shell tmux tests read one marker line, not a full env d…
santoshkumarradha Sep 19, 2026
c3ab6e0
tui3: a press never waits behind a run's summary, and an open page fo…
santoshkumarradha Sep 19, 2026
7b8be4b
session: a person's stop reaches a run (#1250)
santoshkumarradha Sep 19, 2026
992779e
repo: remove a cell's findings note that rode in with #1239
santoshkumarradha Sep 19, 2026
4bf3673
exec: the skill path shell test reads one marker line (#1252)
santoshkumarradha Sep 19, 2026
eae7055
build: make check cross-compiles every platform the release ships (#1…
santoshkumarradha Sep 19, 2026
7ab8820
chatv3: the standing ticker stops and is joined when the process clos…
santoshkumarradha Sep 19, 2026
7cefdf1
tui3: no frame reads a run's rows, whatever made the read due (#1255)
santoshkumarradha Sep 19, 2026
24e4385
tui3: a run's step rows show the work, cut from the commands as they …
santoshkumarradha Sep 19, 2026
37a9b3b
tui3: a task you stopped reads stopped wherever its state word is dra…
santoshkumarradha Sep 19, 2026
1c21396
session: usage writers have an owner and are closed when the process …
santoshkumarradha Sep 19, 2026
8866dda
test(session): the claim-unspent revision is typed through Submit, th…
santoshkumarradha Sep 19, 2026
09b50f8
tui3: a call that did not run has no row, and a refused action is one…
santoshkumarradha Sep 19, 2026
137bb8c
scripts: the heavy-suite lock is a kernel file lock, so one pid names…
santoshkumarradha Sep 19, 2026
761cdab
chatv3: the pool judge sweep is stopped and joined at close (#1267)
santoshkumarradha Sep 19, 2026
42daffa
test(chatv3): the goroutine law says truthfully what the two model wa…
santoshkumarradha Sep 19, 2026
b71454e
run: a time limit a person sets ends a run by the same road as the co…
santoshkumarradha Sep 19, 2026
ced4491
tui3: the dim line under a step row is only ever the row's own (#1265)
santoshkumarradha Sep 19, 2026
d3762f4
run: a task's step numbers continue across a wake (#1261)
santoshkumarradha Sep 19, 2026
da3368d
run: a dollar limit holds while a worker is still working (#1268)
santoshkumarradha Sep 19, 2026
0d3f3ed
plandb: a parked task is finished only by a worker woken for it (#1271)
santoshkumarradha Sep 19, 2026
8eb26dc
enginehost: a launch that lands while a host is coming up reaches it …
santoshkumarradha Sep 19, 2026
ec9953e
scripts: the heavy-suite lock follows the suite, not the helper that …
santoshkumarradha Sep 19, 2026
2b02957
run: a worker that has stopped making progress is told once, then end…
santoshkumarradha Sep 19, 2026
70b3a3c
catalog: the model catalog's own warm is cancelled and joined at clos…
santoshkumarradha Sep 19, 2026
c44b488
run: no run answers done while a finished piece of work has had no re…
santoshkumarradha Sep 19, 2026
057d01f
approval: a backslash pair inside double quotes is text, read by one …
santoshkumarradha Sep 19, 2026
8832349
session: a woken turn's fixture holds its script like every other tur…
santoshkumarradha Sep 19, 2026
cd2bf32
chat: closing a process stops its place sweep before it can change a …
santoshkumarradha Sep 19, 2026
5240a37
session, run: a run's dollars reach the conversation's own total (#1280)
santoshkumarradha Sep 19, 2026
2a04d63
run, session: an ending a person caused is not a fault, and it names …
santoshkumarradha Sep 19, 2026
b293a72
suite lock: the lock follows the suite, not what the suite leaves beh…
santoshkumarradha Sep 19, 2026
bbdd7cd
exec: a cancelled command is ended by the call that ran it (#1282)
santoshkumarradha Sep 19, 2026
3a154ce
session: a run is handed what is left of every dollar limit (#1281)
santoshkumarradha Sep 19, 2026
c37f467
session: a long declared check says why it was refused (#1283)
santoshkumarradha Sep 20, 2026
cb3f0f3
session: a usage flush says whether it drained (#1285)
santoshkumarradha Sep 20, 2026
1357788
standing: a row that needs you names what it needed and opens the ite…
santoshkumarradha Sep 20, 2026
f796212
tui3: a run task's page draws its brief through the reader the transc…
santoshkumarradha Sep 20, 2026
3d95e70
session: a run is work, and its life is the conversation's (#1291)
santoshkumarradha Sep 20, 2026
8b68293
session: a standing firing runs behind the gate a task node runs behi…
santoshkumarradha Sep 20, 2026
aef0deb
task: Trace settings to permission gate wiring
agentfield-bot Sep 20, 2026
70f7baf
task: Inventory every settings row for the UX review
agentfield-bot Sep 20, 2026
33a32b7
Merge branch 'task/inventory-every-settings-row-for-60437e' into feat…
agentfield-bot Sep 20, 2026
c975972
session: a run stopped on its own question says so (#1293)
santoshkumarradha Sep 20, 2026
db7ca98
task: Implement fzf v2 fuzzy matcher universally
agentfield-bot Sep 20, 2026
3d3b754
session: work nothing is driving reads as interrupted, not failed (#1…
santoshkumarradha Sep 20, 2026
1a692da
session: a run's working copy is written down, so it can be found aga…
santoshkumarradha Sep 20, 2026
952e003
manual: the interrupted page no longer offers two answers nobody can …
santoshkumarradha Sep 20, 2026
718f6b1
fuzzy: land the remaining surface cutover (autonomy, connections, mem…
santoshkumarradha Sep 20, 2026
de66900
fuzzy: state the gap price the code and tests charge
santoshkumarradha Sep 20, 2026
70116df
Merge branch 'task/implement-fzf-v2-fuzzy-matcher-u-71bbf5' into feat…
agentfield-bot Sep 20, 2026
83de531
docs: a footprint benchmark, its method, and one day's numbers (#1126)
santoshkumarradha Sep 20, 2026
1e0537e
docs: resume cost joins the footprint benchmark (#1317)
santoshkumarradha Sep 20, 2026
b123705
feat(session): a run nothing is driving can be carried on, in the cop…
santoshkumarradha Sep 20, 2026
9420891
chore(scripts): three proof steps that could not report failure, in o…
santoshkumarradha Sep 20, 2026
af1cdd4
tui3: a standing row stopped for permission says the line, not asks: …
santoshkumarradha Sep 20, 2026
91d38b1
session: a sign-in and a harness ask say what they are waiting for (#…
santoshkumarradha Sep 20, 2026
e098ca1
tui3: the front tab and the tab beside it agree about one conversatio…
santoshkumarradha Sep 20, 2026
1094d73
task: Fix the terminal cursor park for the settings search box
agentfield-bot Sep 20, 2026
32b4127
One fuzzy matcher for every picker, subtle match highlighting, and th…
santoshkumarradha Sep 20, 2026
9b38c2d
session: a landing already accepted stops saying your call (#1322)
santoshkumarradha Sep 20, 2026
3e2214a
The commit co-author links to the CodeAF account, and assisted-by nam…
santoshkumarradha Sep 20, 2026
d57f26d
scripts: a heavy suite takes both locks so a stale tree can see it (#…
santoshkumarradha Sep 20, 2026
bc116d3
docs: the trailer entry names its pull request and takes the required…
santoshkumarradha Sep 20, 2026
9f8f761
task: Skills: per-node attachment in briefs
agentfield-bot Sep 21, 2026
e46edfa
task: Verify standing-tasks findings
agentfield-bot Sep 21, 2026
1142f90
task: Finish skills store record: continue the cut-off branch
agentfield-bot Sep 21, 2026
12b4b6e
docs: changelog entry for skills tranche 1
santoshkumarradha Sep 21, 2026
7aded50
task: Finish skills shelf and use_skill: run the right suite, land th…
agentfield-bot Sep 21, 2026
d2c2723
task: Finish skills shelf and use_skill (windowed catalog + depth-gat…
santoshkumarradha Sep 21, 2026
21660ea
session: fix ActivateSkill test callers after the skills merge
santoshkumarradha Sep 21, 2026
7a13426
exec, manual: the drafted-with footer links to the codeaf repository …
santoshkumarradha Sep 21, 2026
e87b147
docs: the change entry for the drafted-with link (#1329)
santoshkumarradha Sep 21, 2026
777bb12
skills: compose per-node skill attachments at brief time and render them
agentfield-bot Sep 21, 2026
b3f2dda
cmd: wire the active shelf into the chat engine's plan builds
agentfield-bot Sep 21, 2026
7b2fc92
task: Skills tranche 1: integrate, wire live flow, prepare draft PR
agentfield-bot Sep 21, 2026
f316c06
task: Skills tranche 1: integrate, wire live flow, prepare draft PR
santoshkumarradha Sep 21, 2026
c4f5e3c
docs: drop pr-draft.md now that the PR body carries it
santoshkumarradha Sep 21, 2026
d39a4e3
session: a held landing offers its answer and stops demanding one (#1…
santoshkumarradha Sep 21, 2026
8219b14
task: Fix round 1: address skills review findings
agentfield-bot Sep 21, 2026
d1d874a
audit-notes: move the standing-visibility investigation out of the PR…
santoshkumarradha Sep 21, 2026
a51cc6e
session: align the catalog header test with the reviewed rewording
santoshkumarradha Sep 21, 2026
af61b0c
task: Fix round 3: final fixes for skills tranche 1
agentfield-bot Sep 21, 2026
48bd211
task: Make imported SKILL.md skills readable through codeaf's skill d…
agentfield-bot Sep 21, 2026
7ed8d2f
skills: import foreign SKILL.md folders in place
santoshkumarradha Sep 21, 2026
3e6a3ba
Merge branch 'task/import-existing-skills-claude-co-b9c535' into feat…
agentfield-bot Sep 21, 2026
9ca7b44
import foreign skills before the first message on every v3 launch
santoshkumarradha Sep 21, 2026
26bbabc
skills: preserve user scope without a project root
santoshkumarradha Sep 21, 2026
d6de383
the world this task started from: Resolve skills tranche merge into s…
agentfield-bot Sep 21, 2026
72e711c
merge skills tranche and existing-skill import
santoshkumarradha Sep 21, 2026
619860c
session, cmd, bench: the worker harness is the belt a task runs on (#…
santoshkumarradha Sep 21, 2026
2984917
merge skills tranche and existing-skill import
santoshkumarradha Sep 21, 2026
6d97ef7
merge skills tranche and existing-skill import
santoshkumarradha Sep 21, 2026
ae14cf7
docs: the bash-belt entry names only surfaces the checker knows
santoshkumarradha Sep 21, 2026
88bbd5b
manual: the use_skill page says what happened instead of naming it
santoshkumarradha Sep 21, 2026
2d5eeaf
docs: the bash-belt entry names only surfaces the checker knows
santoshkumarradha Sep 21, 2026
bdf8e2f
session: a person can put a skill in front of this conversation by hand
santoshkumarradha Sep 21, 2026
fb67f07
The node belt is the default again, on a measured comparison (#1336) …
santoshkumarradha Sep 21, 2026
dd188e8
session: one message carries the skills its own words choose, attachm…
santoshkumarradha Sep 21, 2026
cef7dd4
docs: the change entry for the message-chosen skills block
santoshkumarradha Sep 21, 2026
e66650f
tui3: /skill opens the shelf as a picker and carries the attached ski…
santoshkumarradha Sep 21, 2026
43f334e
session: a missed skill name says what the shelf holds instead of not…
santoshkumarradha Sep 21, 2026
e1b36b8
session: the prompts say what a skill is and when to open one before …
santoshkumarradha Sep 21, 2026
a2a803d
manual: the use_skill page says what a missed name answers
santoshkumarradha Sep 21, 2026
c7a6de3
docs: change entry for the shelf-on-the-page wave
santoshkumarradha Sep 21, 2026
65581fd
session: the skills a turn carried ride as names, not as a sentence
santoshkumarradha Sep 21, 2026
b656cd0
tui3: test the /skill picker, write its manual page and change entry,…
santoshkumarradha Sep 21, 2026
ea967cd
session: an absent skills list means unknown, not none
santoshkumarradha Sep 21, 2026
1eeb74c
session, chat: a pass that compacted nothing stops taking the convers…
santoshkumarradha Sep 21, 2026
72aa535
tui3: draw carried skills from event field
santoshkumarradha Sep 21, 2026
cddf198
docs: explain skills carried by a turn
santoshkumarradha Sep 21, 2026
3183985
docs: add skills row change entry
santoshkumarradha Sep 21, 2026
904bdb3
docs: explain skills carried by a turn
santoshkumarradha Sep 21, 2026
7bbc70a
provider, taxonomy: a quiet reply from the only machine there is gets…
santoshkumarradha Sep 21, 2026
8a83f41
chat: a replay draws the record once, whatever was already on the scr…
santoshkumarradha Sep 21, 2026
14043ab
Merge remote-tracking branch 'origin/cell/skillpick' into skills-preview
santoshkumarradha Sep 21, 2026
a7af389
Merge remote-tracking branch 'origin/cell/skillsay' into skills-preview
santoshkumarradha Sep 21, 2026
06dcf11
Merge remote-tracking branch 'origin/santos/dev2' into skills-preview
santoshkumarradha Sep 21, 2026
5d30bad
Merge remote-tracking branch 'origin/cell/c375' into skills-preview
santoshkumarradha Sep 22, 2026
95f4fa2
tui3: give /skill its fate at home and fit its row
santoshkumarradha Sep 22, 2026
d79c12a
the bash worker's page stops naming the shelf verb
santoshkumarradha Sep 22, 2026
ee93e0a
Merge remote-tracking branch 'origin/task/bashtask-skill-rule' into s…
santoshkumarradha Sep 22, 2026
99f301b
session, taxonomy: a conversation against one machine waits for it in…
santoshkumarradha Sep 22, 2026
09815c9
Merge remote-tracking branch 'origin/santos/dev2' into skills-preview
santoshkumarradha Sep 22, 2026
90233e1
build: the pull-request gate runs on santos/dev2 as well as dev (#1362)
santoshkumarradha Sep 22, 2026
abf8032
e2e: the tmux suite reads the surface again (#1360)
santoshkumarradha Sep 22, 2026
b38a29f
docs: the belt DOE, and the chat as manager over the plan store (#1354)
santoshkumarradha Sep 22, 2026
b18b619
session, run, cmd: the worker harness is the default belt again, with…
santoshkumarradha Sep 22, 2026
cb612d3
tui3: the skills a turn used outlive the run that used them
santoshkumarradha Sep 22, 2026
1f4972c
Revert "tui3: the skills a turn used outlive the run that used them"
santoshkumarradha Sep 22, 2026
863d5ee
docs: the wait-forever entry names the pull request that merged it
santoshkumarradha Sep 22, 2026
49971de
repo: drop the local state a wave swept in with it
santoshkumarradha Sep 22, 2026
d91bb63
Merge remote-tracking branch 'origin/santos/dev2' into HEAD
santoshkumarradha Sep 22, 2026
55dd97f
session, run, chat: notes are a channel into a running worker, not a …
santoshkumarradha Sep 22, 2026
9321a85
config: persistedCount says what it destroys (#1369)
santoshkumarradha Sep 22, 2026
89dacca
session, chat: the chat sees the plan when the person speaks (#1357)
santoshkumarradha Sep 22, 2026
518f289
session: the picture hand refuses a prompt that is not there (#1372)
santoshkumarradha Sep 22, 2026
77566dc
connect: the Slack thread limit is written down once (#1371)
santoshkumarradha Sep 22, 2026
32ef528
tui3: the stopped frame is compared against a clock in the test's han…
santoshkumarradha Sep 22, 2026
2f94ca1
tui3: the stopped frame's helper says it exists in order to be shared…
santoshkumarradha Sep 22, 2026
3f46952
chat, session: skills that are switched off say so instead of looking…
santoshkumarradha Sep 22, 2026
7fb2644
Merge origin/dev into santos/dev2: dev's thirteen commits since the fork
santoshkumarradha Sep 23, 2026
e731437
run, tests: a parent wakes on its children's landings, and the pool t…
santoshkumarradha Sep 23, 2026
dca2f3f
remote: the standing firing test asks for its lane once
santoshkumarradha Sep 23, 2026
942eef6
Merge origin/dev: sign in to Codex in the browser (#1336)
santoshkumarradha Sep 23, 2026
525b77f
suite-lock: the wrapper-killed test waits for the lock to be named
santoshkumarradha Sep 23, 2026
3a9c5e4
tui3, chat, pool: task-page keys, notes, tab mark and unowned warms (…
santoshkumarradha Sep 23, 2026
b998c87
session, config: the chat manages a live run in the side list's words…
santoshkumarradha Sep 23, 2026
af913d6
run, session: a run's ending is written where the next request reads …
santoshkumarradha Sep 23, 2026
c61615a
session, provider, suite-lock: the one machine is waited on, a pool i…
santoshkumarradha Sep 23, 2026
80bdef3
Merge origin/dev into santos/dev2: /cost keeps its columns under the …
santoshkumarradha Sep 23, 2026
7c3a499
Merge origin/dev into santos/dev2: a Codex model carries its 272k window
santoshkumarradha Sep 23, 2026
e2f7587
task: admit a deliverable path that is not on this machine (#1418)
santoshkumarradha Sep 23, 2026
10beaa5
attribution: always sign, and name only the bare model (#1412)
santoshkumarradha Sep 23, 2026
d71b388
task: a path is a place only where its own directory is (#1421)
santoshkumarradha Sep 23, 2026
19e86f7
fix(review): scope matching, worker panic resilience, check env leak,…
santoshkumarradha Sep 23, 2026
1ce4cac
do, run, session: codeaf do edits in place, commits nothing, and stop…
santoshkumarradha Sep 23, 2026
147382a
tui3: a run's rows and its page look like the old task rows (#1420)
santoshkumarradha Sep 23, 2026
b8765e1
One run per batch: simultaneous hand-offs join one run, a failed run …
santoshkumarradha Sep 23, 2026
03e301c
session: a read sweep the chat will not hand off is handed off by the…
santoshkumarradha Sep 23, 2026
af99c4e
Merge remote-tracking branch 'origin/dev' into task/sync-dev-1419
santoshkumarradha Sep 23, 2026
b67c162
Engine status and stop, the older engine gives up the slot, a held co…
santoshkumarradha Sep 23, 2026
bdb08cf
Merge remote-tracking branch 'origin/santos/dev2' into task/sync-dev-…
santoshkumarradha Sep 23, 2026
70868ed
docs(design): the brain index, shared reads and separate writes
santoshkumarradha Sep 24, 2026
d21c36a
docs(changes): entry for the brain index design
santoshkumarradha Sep 24, 2026
6f1f39f
Skills from Claude Code plugins and Codex, with memory off, chosen by…
santoshkumarradha Sep 24, 2026
008363c
fix: synchronize run worker step boundaries before further actions
santoshkumarradha Sep 24, 2026
c958a7d
session: failing tests for run file records and repository-scoped els…
santoshkumarradha Sep 24, 2026
3916e2e
session: runs record the files they touched; elsewhere is keyed by re…
santoshkumarradha Sep 24, 2026
8011f18
docs: change entry for runs recording files and repository-scoped els…
santoshkumarradha Sep 24, 2026
8148d22
session: split the wide elsewhere reading under the complexity ceiling
santoshkumarradha Sep 24, 2026
99ec179
Merge origin/dev into santos/dev2: Ara's Home, tips and Sessions wave
AbirAbbas Sep 24, 2026
7db417c
chat: say what #1389 made true on the pages and comments it left behind
AbirAbbas Sep 24, 2026
ee0abdf
chat: /skill typed on Home keeps its words, and commands.md lists it
AbirAbbas Sep 24, 2026
3007250
session: failing tests for live, interrupted and once-listed runs
santoshkumarradha Sep 24, 2026
fa01800
session: live runs are seen, cut-short runs leave interrupted rows, o…
santoshkumarradha Sep 24, 2026
ab80cc9
Merge remote-tracking branch 'origin/santos/dev2' into task/brain-fil…
santoshkumarradha Sep 24, 2026
81cf1b9
tui3: Home draws another window's live worker-harness run as working
santoshkumarradha Sep 24, 2026
c2ad753
Merge remote-tracking branch 'origin/design/brain-index' into brain-c…
santoshkumarradha Sep 24, 2026
1548d54
changes: the brain design entry rides with 1443
santoshkumarradha Sep 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,26 @@ name: PR gate
# and a ruleset look at — is green only when both are; everything else runs on
# the way into `staging`, and nightly against `dev` — see ci-full.yml.
# docs/rules/ci.md says why the line is drawn in that place.
#
# EVERY LINE WORK LANDS ON IS GATED, NOT ONLY THE TRUNK. `santos/dev2` is a
# line feature work merges into many times a day, and until 2026-09-21 no
# workflow named it: this gate listed `dev` alone and ci-full.yml lists
# `staging` and `main`, so a pull request based on `santos/dev2` was answered by
# the licence check and nothing else. Whether that line was green was a question
# only a person on a cluster could answer, and for a while the answer was no.
# That is the same failure the note above records for #372, one level up: not a
# filter nobody remembered, but a branch nobody listed.
on:
pull_request:
branches:
- dev
- santos/dev2
# Also on the push, because a merge of two individually-green branches can
# still be red, and the merge is exactly the moment nobody is watching.
push:
branches:
- dev
- santos/dev2
workflow_dispatch:

permissions:
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ internal/furrowbin/cache/furrow-*.gz
# macOS Finder leaves this litter behind, and one copy was committed once.
.DS_Store
.claude/
!internal/skills/testdata/**/.claude/
/codeaf
bench-results/
.codeaf/
!internal/skills/testdata/**/.codeaf/
__pycache__/
*.pyc
*.aux
Expand All @@ -38,3 +40,4 @@ internal/manual/pages.pack.gz
# committed that way on #1173 and had to be taken back out.
.furrow/
bench/idle-surface/runs/
work/
119 changes: 119 additions & 0 deletions audit-notes/custom-task-routing-diagnosis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# Custom/local provider task routing — read-only diagnosis (`santos/dev2`)

State analyzed: branch `task/trace-custom-task-routing-3f6752` @ `6d97ef781` (clean copy of `santos/dev2`). Read-only; nothing edited, committed, or pushed.

## Verdict

Discovery is the routing defect; it is the only one that breaks getting work ONTO a
custom/local provider. Once a qualified id (`<written>/<bare>`, e.g. `mybox/llama`)
reaches a node, every downstream seam already carries the custom account correctly.
A second, narrower defect loses vision capability for custom models because the
capability closures read only the default-service catalog.

## Working seams (verified end to end)

1. `propose_task{model}` → `parseTaskArguments` → `spec.modelWord` → `Agent.resolveTaskModel`
(`internal/session/task.go:647`, resolver `internal/session/taskmodel.go:96`).
2. Node model → `newTaskAgentOn` (`internal/session/task_run.go:7519`): child Config carries
`Sources: parent.Sources`, `APIKey`, `BaseURL`, `SupportsImages`, `SupportsParameter`,
`ReasoningProfile`, `ContextWindowFor` (catalog func), Connect/Media/Search/Document,
`RolesSource`, `OneModel`.
3. Child client: `newChildAgent` (`internal/session/agent.go:87`) → `childClient`
(`internal/session/clientdoor.go:260`) → the PARENT's `modelClientPool.clientFor(model)`
(`clientdoor.go:94`): `seatedModel` → `accountFor` → `Config.serviceFor` (`clientdoor.go:631`)
→ `modelsource.Set.For` (`internal/modelsource/modelsource.go:210`, `Split` at :379 matches the
`Written` prefix) → minted `provider.Client` for THAT service; the child shares the pool
(`child.clientPool = pool`), so live `setSources`/`setSeat`/`setDefaultKey` stay coherent
family-wide.
4. Wire: `ClientConfigFor` (`internal/config/config.go:912`) strips the service segment —
bare slug `llama` in `Model`, `BaseURL`/`APIKey` from the custom `Connected`, and
`Direct: true` for any non-default service. Requests go out via `completerFor` →
`completeWithNamedModel` with `ai.WithModel(wire)` (`clientdoor.go:638`, :536).
5. Tool seat: `seatTaskModelLocked` (`task_run.go:7890`) asks `SupportsParameter(model,"tools")`;
`Catalog.SupportsParameter` (`internal/catalog/catalog.go:857`) answers `(false, false)` =
UNKNOWN for an id absent from the catalog — a custom model is NOT falsely rescued to the
worker tier.
6. Toolbelt: assembled in `newAgent` from the copied Config fields; other child sites
(`orchestrate.go:1103`, `task_audit.go:3183`) also copy `Sources`. Quick tasks and divide
parts are built by the same `newTaskAgent`.
7. Mid-session connect: `v3Process.setModelSources` (`cmd/codeaf/chatv3_process.go:316`)
updates the shelf AND every retained agent (`Agent.SetSources`, `agent.go:715`) → pool.

## Defect 1 — task-model discovery sees only the default catalog

`session.Config.TaskModels` is wired once (`cmd/codeaf/chatv3.go:995`) to `v3TaskModels`
(`chatv3.go:2164`) = `tui3.ChatModels(v3Models(shelf))` — the shelf's LAUNCH (default/OpenRouter)
catalog only (`v3Models` → `ModelsNow()`). The per-service compartments that feed the chat
picker (`v3ModelShelf.modelsForService`, `chatv3_modelshelf.go:83`; merged in
`internal/tui3/modelservices.go:76-112` and qualified with `Connected.Qualify` →
`written/bare`) are never merged in.

Observable behavior, warm default catalog (the normal steady state):

- `propose_task{model:"mybox/llama"}` → `matchTaskModel` finds no row → `taskModelUnknown`
refusal naming default-catalog "near" ids. Same refusal on quick `task`
(`internal/session/task_quick.go:599`) and task retarget (`internal/session/task_room.go:720`).
- One call is wasted; a retry naming a default-catalog word then silently runs the work on the
default service — the wrong-service outcome the refusal was guarding against.
- Asymmetry: a `task.model` settings row naming `mybox/llama` does NOT refuse
(`defaultTaskModel` returns the row as written when it matches nothing), routes correctly —
while the same id as an explicit argument is refused. The matcher is the only gate.
- With `TaskModels` nil or the catalog still warming, the word travels as written and routes
CORRECTLY through `Sources.For` — the empty list works better than the warm one.

## Defect 2 — capability closures are blind to custom services (the "tools" loss)

`SupportsImages` = `v3SeesImages(proc.Shelf)` (`chatv3.go:2238`) reads only `ModelsNow()`
plus the default service's disk cache; the comment states an absent id is "a no". So a
custom/local model that publishes image input gets `image.go:113` refusals and
`tools_doc.go:595` vision rung off — in the conversation and in every child. The belt is
fine; the gate lies. Same shape, degraded-but-safe: `ContextWindowFor` answers 0 for custom
ids (`internal/session/loop.go:4329` → conservative window, early compaction),
`ModelPrice` 0 (no latency price ceiling), `ReasoningProfile` unknown (adapter learns by
being told no), `SupportsParameter` unknown (optional knobs not sent — safe direction).

## Smallest changes (not implemented)

1. `v3TaskModels` (`cmd/codeaf/chatv3.go:2164`): also append, for each non-default service in
`settings.Sources.All()[1:]`, `proc.Shelf.modelsForService(service)` rows qualified with
`service.Qualify(row.ID)`, then the same `ChatModels` filter. No network: compartments are
never-fetching and seeded by `setSources`. `settings.Sources` is already in scope at the
Config literal (`chatv3.go:925`).
2. `v3SeesImages` (`chatv3.go:2238`): consult the same compartments for qualified ids before
answering no. (Capability fix; not needed for routing.)
3. Optional, one line in the task child literal: `TaskModels: parent.TaskModels` so a node's
own sub-proposals validate against the same list instead of the nil = take-as-written
fallback.

## Regression assertions

1. Resolver (session): `TaskModels` = defaults + `mybox/llama` → `resolveTaskModel("mybox/llama").model`
is `mybox/llama` (exact rung); with defaults carrying `other/llama-x` and the custom row,
`resolveTaskModel("llama")` returns exactly `mybox/llama` (tail rung semantics).
2. Admission: `stageTask` on a proposal naming `mybox/llama` is admitted, not
`bare.Settled(problem)`; quick-task ask and `tasks` retarget accept the same id
(both go through the one resolver).
3. Seat: with `SupportsParameter("mybox/llama","tools")` answering `(false,false)`,
`seatTaskModelLocked` returns the model unchanged, writes no `taskModelRescueNote`, leaves
`node.ran` untouched.
4. End-to-end child routing (the load-bearing one): managed parent with `Sources` = default
(scripted completer) + custom `mybox` service; `newTaskAgent` for a node on `mybox/llama`;
capture the child's first request and assert: `clientAccount.id` = the custom row's id,
request `BaseURL` = the custom address, bearer = the custom key, wire model = `llama`
(no `mybox/` prefix), and `Direct` client in use. `retiredpin_wire_test.go` /
`task_carry_test.go` show the seams to read.
5. Surface merge (cmd/codeaf test): shelf whose launch catalog holds `anthropic/claude-x`
and whose `mybox` compartment holds `llama` → `v3TaskModels()` contains BOTH
`anthropic/claude-x` and `mybox/llama`.
6. Vocabulary law: `Sources.For` falls back to the DEFAULT service with the whole id as wire
slug when the segment is not a connected `Written` (modelsource.go:210-217) — pin it, so a
typo'd segment stays a provider-side 404 rather than silent discovery drift, and so the
argument vocabulary stays `Written`-qualified exactly as the picker shows.
7. Settings-row asymmetry: `defaultTaskModel` with a `task.model` row `mybox/llama` returns it
as written (already true — pin so the fix doesn't change it).

## Not covered

- No edits, commits, pushes, or PRs (brief is read-only). The claude CLI was not run, so the
`CLAUDE_CODE_OAUTH_TOKEN` standing order did not come into play.
- Verified by reading and cross-referencing, not by running a live custom-provider session.
Loading
Loading