Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
905 commits
Select commit Hold shift + click to select a range
727e0cc
factory: run log tool lines read once, with no home path, and carry a…
santoshkumarradha Nov 3, 2026
f7714ed
tests: the last Mac assumptions in cellstore's socket fixtures and re…
AbirAbbas Nov 3, 2026
2c7f108
processgroup: macOS reads process groups, so left-running services an…
AbirAbbas Nov 3, 2026
d19f0ff
factory: mark a draft pull request ready from the app (#2238)
santoshkumarradha Nov 3, 2026
8567959
factory: cheap and strong steps run on the small work and checks mode…
santoshkumarradha Nov 3, 2026
a3357f3
factory: Backlog jobs say which protected paths they name (factory.jo…
santoshkumarradha Nov 3, 2026
4bc0850
factory: a no-change comment finishes Follow PR, and a Try again that…
santoshkumarradha Nov 3, 2026
5850671
config: Model Pool stays off until someone turns it on (#2257)
santoshkumarradha Nov 3, 2026
76c9681
perf(knowledge): capture wakes on the chat's own writes, not a per-ch…
AbirAbbas Nov 3, 2026
e1a3692
tests: sync fixtures keep their socket homes short on macOS and wait …
AbirAbbas Nov 3, 2026
a4d4a56
remote: an app chat's streamed text is folded before it is framed (#2…
AbirAbbas Nov 3, 2026
bb9fad4
factory: a write step that changed nothing is not done (#2158)
santoshkumarradha Nov 3, 2026
54bef3d
factory: a job's budget ask offers one amount (#2258)
santoshkumarradha Nov 3, 2026
158a8ed
session: a note sent during a final answer gets its read receipt (#2259)
santoshkumarradha Nov 3, 2026
b39a560
factory: a job's Brief counts a person's later requests as asked (#2262)
santoshkumarradha Nov 3, 2026
17ccbdd
test: two process and pipeline intermittents wait on the right signal…
santoshkumarradha Nov 3, 2026
3d0ce97
factory: job memory calls count in its header and budget (#2261)
santoshkumarradha Nov 3, 2026
ceb5082
memory: off by default, one switch per home (#2266)
santoshkumarradha Nov 3, 2026
d0d2ce3
keys: a failed vault read returns its error instead of panicking (#2265)
santoshkumarradha Nov 3, 2026
ade1233
app: one engine on a home; a second waits for the first to end (#2274)
santoshkumarradha Nov 3, 2026
6405b06
spend: a failed or cut-off call still counts (#2267)
santoshkumarradha Nov 3, 2026
909c9db
spend: today's figure moves with every ledger row and names Factory A…
santoshkumarradha Nov 3, 2026
af0fe9a
spend: Factory helper calls count on the job and the page (#2268)
santoshkumarradha Nov 3, 2026
a722531
spend: a hedge's finished loser counts, with proofs for brief, Follow…
santoshkumarradha Nov 3, 2026
252ecb8
factory: a plan approval stays on the job through later gates (#2276)
santoshkumarradha Nov 3, 2026
b8c64d8
session: remove stray lines a stacked landing left in usage_ledger.go…
santoshkumarradha Nov 3, 2026
ca73f86
Memory list says where to add a model key (#2278)
santoshkumarradha Nov 3, 2026
e13ee2a
Nothing automatic spends on an issue closed on GitHub (#2282)
santoshkumarradha Nov 3, 2026
19f4df4
Repo AI notes and themes count as Factory AI (#2281)
santoshkumarradha Nov 3, 2026
63cff5f
A job has one manager, and all its spend counts against its budget (#…
santoshkumarradha Nov 3, 2026
067d619
Merge origin/dev into app/v3 with recorded ancestry
santoshkumarradha Nov 3, 2026
2531422
Merge latest origin/app/v3 after dev ancestry repair
santoshkumarradha Nov 3, 2026
c4a0834
Document dev ancestry repair for codeaf
santoshkumarradha Nov 3, 2026
db2c06f
Merge newest origin/dev into app/v3
santoshkumarradha Nov 3, 2026
3382362
Validate newest dev integration with app/v3 behavior
santoshkumarradha Nov 3, 2026
5b5a892
Memory resume test checks the sources it inherited (#2284)
santoshkumarradha Nov 3, 2026
15db2c5
Turn host pressure off in the E13 B2 recovery test (#2246)
santoshkumarradha Nov 3, 2026
750a39c
app tests: a fake's lane holds what is put on it until the backend wa…
santoshkumarradha Nov 3, 2026
c21dd17
tests: R2 and R3 wait for the startup publication instead of chats.li…
santoshkumarradha Nov 3, 2026
4b76586
tests: damage the teams store, not a teams.json, before continuing a …
santoshkumarradha Nov 3, 2026
ac2d14f
tests: keeping an unsent turn on an ownership check needs the store t…
santoshkumarradha Nov 3, 2026
92b3460
syncsetup: the takeover proof's own sessions run with routing off (#2…
santoshkumarradha Nov 3, 2026
a4937f0
Run the clock while a learner waits for a state write (#2227)
santoshkumarradha Nov 3, 2026
7ffd86e
Check pairing copy around the random check words (#2228)
santoshkumarradha Nov 3, 2026
d090b37
Merge remote-tracking branch 'origin/app/v3' into HEAD
santoshkumarradha Nov 3, 2026
a94d7e2
Correct the team sharing default in the manual and PERF.md
santoshkumarradha Nov 3, 2026
8ad21b3
Adapt team relay regression fixtures to SQLite and opt-in sharing
santoshkumarradha Nov 3, 2026
759c2c9
notices: add the fsnotify section the binary already compiles (#2202)
santoshkumarradha Nov 3, 2026
c4c5fee
catalog: Recall reads the media standing from the clock it was given …
santoshkumarradha Nov 3, 2026
c04e959
head: the spending rate multiplies from the days it names (#2204)
santoshkumarradha Nov 3, 2026
26efa2a
raftcore: a wake restarts the idle minute, so a write's learner deliv…
santoshkumarradha Nov 3, 2026
1769c58
Merge app/v3 into dev merge
santoshkumarradha Nov 3, 2026
f23e01b
fix(app): keep distinct identities for cell-backed crew helpers (#1964)
santoshkumarradha Nov 3, 2026
98f007d
app: say an agent's live line as its turn moves to each call (#2068)
santoshkumarradha Nov 3, 2026
79d83f9
app: a suggested choice's clock runs only once a surface has drawn it…
santoshkumarradha Nov 3, 2026
77b17cd
Stop wins until the PR request is sent (#2299)
santoshkumarradha Nov 3, 2026
9fcdd6f
The resume heap test measures in isolation (#2300)
santoshkumarradha Nov 3, 2026
941f5a3
The eviction test waits for the engine before removing its folder (#2…
santoshkumarradha Nov 3, 2026
2f02530
session: run workers act as their task; task rows name their worker; …
santoshkumarradha Nov 3, 2026
e92a89d
session: under one model every role resolves to the one model, throug…
santoshkumarradha Nov 3, 2026
3f9d4cb
An added job step can carry a condition (#2293)
santoshkumarradha Nov 3, 2026
e82f71c
A job step's cost is the sum of its rounds (#2294)
santoshkumarradha Nov 3, 2026
1c6b940
Every crew watch is built one way (#2295)
santoshkumarradha Nov 3, 2026
9035a0a
Closed GitHub issues leave Backlog, and a closed issue can't be auto-…
santoshkumarradha Nov 3, 2026
427c35a
Cancelled calls keep the money that was measured (#2302)
santoshkumarradha Nov 3, 2026
b2d5b85
Asks keep their last period (#2304)
santoshkumarradha Nov 3, 2026
48466e5
Steps can carry an optional label (#2307)
santoshkumarradha Nov 3, 2026
29e1139
A job keeps its earlier spending when it runs again (#2305)
santoshkumarradha Nov 3, 2026
93755da
Merge newest app/v3 under Factory owner rule
santoshkumarradha Nov 3, 2026
5484a2c
Restore dev sharing defaults and ordinary file memo fallback
santoshkumarradha Nov 3, 2026
d08bca0
Require confirmed replacement for used solo computers
santoshkumarradha Nov 3, 2026
10d456a
Limit unsupported-effort repair to opted-in task clients
santoshkumarradha Nov 3, 2026
93d4b7f
Restore dev ownership expiry and exact-fence consent
santoshkumarradha Nov 3, 2026
6e1e37c
Factory: serve the stored repository list and refresh it in the backg…
santoshkumarradha Nov 3, 2026
8b88f75
fix: retain Factory client effort recovery
santoshkumarradha Nov 3, 2026
78011b1
fix: complete same-account replacement cleanup
santoshkumarradha Nov 3, 2026
1f5060e
fix: preserve unreadable profile spending authority
santoshkumarradha Nov 3, 2026
c202693
fix: distinguish Factory work from available tools
santoshkumarradha Nov 3, 2026
b66262a
Step conditions read the change's files (#2311)
santoshkumarradha Nov 3, 2026
f0d91d7
Step and My pipeline AI count as Factory AI (#2316)
santoshkumarradha Nov 3, 2026
72a4fda
Notes and the completion guard share one command outcome (#2298)
santoshkumarradha Nov 3, 2026
1960297
Merge latest app/v3 for Factory owner-rule follow-up
santoshkumarradha Nov 3, 2026
2a3c2eb
Opening a job doesn't count as a person's touch (#2312)
santoshkumarradha Nov 3, 2026
027c629
Scope Factory reasoning recovery to live calls and align pairing with…
santoshkumarradha Nov 3, 2026
056630e
Merge newest app/v3 Factory job touch tracking
santoshkumarradha Nov 3, 2026
8295923
Use one Factory AI classification for billing and refusal recovery
santoshkumarradha Nov 3, 2026
a6d0989
fix: recover effort for job-owned Factory conversations
santoshkumarradha Nov 3, 2026
4474fb6
fix: prompt on unreadable ordinary profile policy
santoshkumarradha Nov 3, 2026
a042b31
fix: require human approval when profile rules cannot be read
santoshkumarradha Nov 3, 2026
0ef0e27
A budget raise isn't refused by spend progress (#2321)
santoshkumarradha Nov 3, 2026
b46824a
Merge app/v3 into dev merge
santoshkumarradha Nov 3, 2026
2421f5a
Manual names the two kinds of work an unreadable profile does not pro…
santoshkumarradha Nov 3, 2026
21e4bd6
Pairing QA fixes: failures, approvals, removed computers, devices loo…
ZeroPoint95 Nov 3, 2026
065da00
A person's pause survives a lost heartbeat reply (#2330)
santoshkumarradha Nov 3, 2026
79c8a94
Pairing follow-ups: app and pair approve settle a lost reply; chat ro…
ZeroPoint95 Nov 3, 2026
d5f07a3
Plugins: desktop protocol over the connect layer (#2331)
santoshkumarradha Nov 4, 2026
36d72a6
fix: restore automatic retries for ordinary memory builds
santoshkumarradha Nov 4, 2026
9d5573e
Merge newest dev into the dev merge
santoshkumarradha Nov 4, 2026
778b67b
A person's Stop stays stopped until a person starts it (#2335)
santoshkumarradha Nov 4, 2026
09d1d64
fix: bound ordinary memory build retries across restarts
santoshkumarradha Nov 4, 2026
758d98a
Merge newest app/v3 into the dev merge
santoshkumarradha Nov 4, 2026
b788f30
fix: preserve local chats when a removed computer re-pairs
santoshkumarradha Nov 4, 2026
0982bf6
A repository with no factory file starts quietly, and a job's rules a…
santoshkumarradha Nov 4, 2026
b62309a
fix: keep empty memory startup joinable
santoshkumarradha Nov 4, 2026
90acb78
merge: bring app/v3 0982bf6b41 into the dev merge
santoshkumarradha Nov 4, 2026
30a3400
Factory: a job that has not worked reads its issue instead of repeati…
santoshkumarradha Nov 4, 2026
94ca31d
Owed checks name the tool, not a machine's path (#2322)
santoshkumarradha Nov 4, 2026
22d06d4
Publish anyway: a person ships past correctly skipped checks (#2323)
santoshkumarradha Nov 4, 2026
419631c
Take tests judge rows only after the take starts (#2340)
santoshkumarradha Nov 4, 2026
414e036
merge: bring app/v3 419631c50c into the dev merge
santoshkumarradha Nov 4, 2026
57a8593
factory: shipped steps carry short engineering methods (#2286)
santoshkumarradha Nov 4, 2026
e256d4f
merge: bring app/v3 57a8593d9d into the dev merge
santoshkumarradha Nov 4, 2026
c50abac
A running step's chat streams like the manager's (#2329)
santoshkumarradha Nov 4, 2026
1950ba0
merge: bring app/v3 c50abac31a into the dev merge
santoshkumarradha Nov 4, 2026
012b87c
Other computers list more of this one's chats, sooner, and say how ma…
ZeroPoint95 Nov 4, 2026
8dc722d
docs: name pull request 2341 in its change entry (#2344)
santoshkumarradha Nov 4, 2026
a3ae454
Test runner names a shard mismatch instead of exiting silently (#2345)
santoshkumarradha Nov 4, 2026
0f8574e
A take no longer loses or double-counts cost (#2332)
santoshkumarradha Nov 4, 2026
59cdf22
Memory off skips the job marking, and the marking seeks by session (#…
santoshkumarradha Nov 4, 2026
aa11451
merge: bring app/v3 59cdf222b6 into the dev merge
santoshkumarradha Nov 4, 2026
8fc146c
test: pair before saving the key in the home-sharing tests
santoshkumarradha Nov 4, 2026
d35a0dc
Moving a chat says how far it has got, stops when stalled, and can be…
ZeroPoint95 Nov 4, 2026
1f1a733
Agent spend is complete: agents.open and agent.changed carry the save…
AbirAbbas Nov 4, 2026
3dea593
A person's choice survives a lost heartbeat reply (#2339)
santoshkumarradha Nov 4, 2026
1d17f14
Closing a conversation waits for its queued spending records (#2357)
santoshkumarradha Nov 4, 2026
95cc25a
fix: unlock the move lookup from a defer (#2359)
santoshkumarradha Nov 4, 2026
82d8fb3
A chat an older window holds opens in the app (#2349)
santoshkumarradha Nov 4, 2026
f483835
Shipped sidecars can say why they crashed (#2351)
santoshkumarradha Nov 4, 2026
a32c3f0
Merge remote-tracking branch 'origin/app/v3' into HEAD
santoshkumarradha Nov 4, 2026
efc60d8
Revert "Closing a conversation waits for its queued spending records …
santoshkumarradha Nov 4, 2026
1ee7043
Save the work folder at pauses, not after every tool batch (#2356)
AbirAbbas Nov 4, 2026
dafd6b6
Merge remote-tracking branch 'origin/app/v3' into HEAD
santoshkumarradha Nov 4, 2026
87c7f49
CheckLease waits for the branch when the hold is already lost
santoshkumarradha Nov 4, 2026
8376957
Merge pull request #2291 from Agent-Field/merge/dev-into-app-v3-1102
santoshkumarradha Nov 4, 2026
25ab625
fix: a Stop during lease reservation can't restart a job (#2362)
santoshkumarradha Nov 4, 2026
34735af
Agents cannot read credentials in any approval mode (#2354)
santoshkumarradha Nov 4, 2026
a8a9d8b
Closing a conversation waits for queued spending records (#2365)
santoshkumarradha Nov 5, 2026
6966064
An unreadable profile stops default Factory stages and task children …
santoshkumarradha Nov 5, 2026
7c4e02a
A step named provenance isn't a proof stage (#2368)
santoshkumarradha Nov 5, 2026
d406fec
Wait for the cut call's receipt in the cancelled-retry money test (#2…
santoshkumarradha Nov 5, 2026
7c07a80
Give cmd/codeaf 35 minutes in the full test run (#2372)
santoshkumarradha Nov 5, 2026
b574549
Commit recipe changes as codeaf, not the person's git identity (#2373)
santoshkumarradha Nov 5, 2026
a9a8609
Stop the pairing test's engine daemons before removing their folders …
santoshkumarradha Nov 5, 2026
ab96a99
Keep a receipt test's late recovery out of the next test's telemetry …
santoshkumarradha Nov 5, 2026
ea0ead4
Jobs from people without write access are refused for any step that c…
santoshkumarradha Nov 5, 2026
ce8e526
A job's budget covers all its runs (#2353)
santoshkumarradha Nov 5, 2026
a27b89d
Make the live Factory money tests wait for cut calls' receipts (#2378)
santoshkumarradha Nov 5, 2026
234ebc4
Give tests one helper that stops engine daemons before their folders …
santoshkumarradha Nov 5, 2026
4f93ac6
Remove abandoned task fork folders during fallback and startup (#2352)
santoshkumarradha Nov 5, 2026
086687f
Tasks on the home folder read it instead of copying it, and launch cl…
santoshkumarradha Nov 5, 2026
39e7387
Store a crew proposal in Inbox before its card goes out (#2382)
santoshkumarradha Nov 5, 2026
5ad0bac
Join the shared usage writer before task test homes are removed (#2383)
santoshkumarradha Nov 5, 2026
92e24a4
Join usage writers before Factory test homes are removed (#2384)
santoshkumarradha Nov 5, 2026
8a14096
Close waits for knowledge capture to finish (#2385)
santoshkumarradha Nov 5, 2026
4e7710a
A job budget stop explains itself to an idle chat (#2388)
santoshkumarradha Nov 5, 2026
d5eec9e
app: stop-all during an open stops what the owner holds (#2313)
santoshkumarradha Nov 5, 2026
8672049
Keep context deadline and cancel errors recognisable across the remot…
santoshkumarradha Nov 5, 2026
a2dee5c
Drain receipt writers before cellindex tests remove their engine (#2390)
santoshkumarradha Nov 5, 2026
db138db
Add desktop Library access to shared knowledge (#2369)
santoshkumarradha Nov 5, 2026
88383c8
Revert "Add desktop Library access to shared knowledge (#2369)" (#2410)
santoshkumarradha Nov 5, 2026
a9ab253
Describe task folders without promising copies (#2391)
santoshkumarradha Nov 5, 2026
44214a3
Old Factory jobs fill missing author access when read (#2392)
santoshkumarradha Nov 5, 2026
df95f69
Task prompts and manual describe folders without promising copies (#2…
santoshkumarradha Nov 5, 2026
115ae11
Stopped engines stay stopped and keep pending receipts (#2394)
santoshkumarradha Nov 5, 2026
ebffb55
Classify stage, plan and share tools for program holds (#2397)
santoshkumarradha Nov 5, 2026
6b12328
Pin the land maintenance fixture to the gc strategy (#2398)
santoshkumarradha Nov 5, 2026
964090f
Workers accept glob write scopes without allowing workspace escapes (…
santoshkumarradha Nov 5, 2026
a345d07
read_document returns short office documents instead of refusing them…
santoshkumarradha Nov 5, 2026
4ee4fe9
Sharing a file write already recorded records nothing new (#2402)
santoshkumarradha Nov 5, 2026
ba07394
Wait for render admission release before testing reuse (#2405)
santoshkumarradha Nov 5, 2026
06c72bf
Stop the beat before the withdrawn takeover test asks (#2406)
santoshkumarradha Nov 5, 2026
8200ddb
Say when a turn is running on the computer that holds a chat (#2375)
santoshkumarradha Nov 5, 2026
ba629a3
chat: message a chat working on another computer; it waits in the que…
santoshkumarradha Nov 5, 2026
046003e
manual: the desktop composer's destination chip (#2420)
santoshkumarradha Nov 5, 2026
9316d94
Revert #2420, #2408 and #2375: a second computer writes to a held cha…
santoshkumarradha Nov 5, 2026
6ec213f
Re-land #2375, #2408, #2420: working elsewhere, messages to a held ch…
santoshkumarradha Nov 5, 2026
0aa1d61
fix: preserve missing-pack share evidence and retry with a fresh plan…
santoshkumarradha Nov 5, 2026
abcbea7
Trim chat prefixes back under their byte budgets (#2396)
santoshkumarradha Nov 5, 2026
1d19115
codeaf's own git commands start no automatic maintenance (#2400)
santoshkumarradha Nov 5, 2026
fec38df
Empty crew plans explain their ending and allow a fresh retry (#2403)
santoshkumarradha Nov 5, 2026
c40c124
Stop an app child's engine daemon before its test removes the state (…
santoshkumarradha Nov 5, 2026
0ca430e
Re-land desktop Library access to shared knowledge, keeping the defau…
santoshkumarradha Nov 5, 2026
4148c6c
A cut-off opening planner reply retries instead of becoming an empty …
santoshkumarradha Nov 5, 2026
43ec2a9
ci: run the light PR gate for app/v3 (#2430)
santoshkumarradha Nov 5, 2026
c7ce782
fix: sync chat folders through the hosted relay (#2431)
santoshkumarradha Nov 5, 2026
466c3d5
fix: serialize first-share capture with concurrent store writers (#2433)
santoshkumarradha Nov 5, 2026
9104087
Refuse lost later planner amendments and give repairs room for the re…
santoshkumarradha Nov 5, 2026
11782a9
Count held-chat relay writes by sender, not by path (#2428)
santoshkumarradha Nov 5, 2026
9a87ed6
test: wait for the initial holder watch before the idle baseline (#2435)
santoshkumarradha Nov 5, 2026
5f5b87f
Preserve usage events when processes share a telemetry spool (#2437)
santoshkumarradha Nov 6, 2026
224aa97
Keep provider keys consistent when opening conversations (#2438)
santoshkumarradha Nov 6, 2026
849aa2b
ci: shard cmd/codeaf in the touched gate (#2443)
santoshkumarradha Nov 6, 2026
8b45c3e
test: strip retained pairing check words from copy assertions (#2441)
santoshkumarradha Nov 6, 2026
a7f15e4
test: join Factory fixture process before removing its profile (#2442)
santoshkumarradha Nov 6, 2026
faed775
fix: advertise working app chat turns on other computers (#2432)
santoshkumarradha Nov 6, 2026
8a34e7c
Show Library costs and enable learning for unset profiles (#2444)
santoshkumarradha Nov 6, 2026
83fc0c5
request_secret: credentials through a masked box, kept out of the con…
santoshkumarradha Nov 6, 2026
e8a0c11
A chat moved back keeps the other computer's turn, and the next messa…
ZeroPoint95 Nov 6, 2026
a2a444a
test: pin the immediate chat start and the kept tab text (#2447)
santoshkumarradha Nov 6, 2026
cb24f0e
Keep a removed computer quiet when it quits (#2448)
santoshkumarradha Nov 6, 2026
7b49cb8
Isolate engine factory state between test homes (#2449)
santoshkumarradha Nov 6, 2026
776bf2e
test: keep endpoint fetches out of truncated reply script (#2451)
santoshkumarradha Nov 6, 2026
543d7d7
test: isolate second interrupt from inherited SIGINT ignore (#2454)
santoshkumarradha Nov 6, 2026
c8f66b1
test: pin learning off in the identity startup fixture (#2455)
santoshkumarradha Nov 6, 2026
4f3fa6a
test: order returning tab update before hosted replay read (#2453)
santoshkumarradha Nov 6, 2026
3a6aa31
test: give quitting exchanges separate errand agents (#2456)
santoshkumarradha Nov 6, 2026
f9a24c5
Wait briefly for an in-progress lane save when quitting (#2457)
santoshkumarradha Nov 6, 2026
aaef2fa
test: settle setup before measuring idle release (#2467)
santoshkumarradha Nov 6, 2026
2c78de1
Let an idle desktop app's saving helper exit (#2466)
AbirAbbas Nov 6, 2026
2c717c0
Let idle desktop chat views beyond the three most recent go (#2472)
AbirAbbas Nov 6, 2026
34c832e
Revert: let idle desktop chat views beyond the three most recent go (…
AbirAbbas Nov 6, 2026
355e225
A blank conversation a collection holds is kept, never resumed, and s…
AbirAbbas Nov 6, 2026
27a417a
A message to another computer says why it did not go (#2486)
santoshkumarradha Nov 7, 2026
ba8d049
Claude Code as a provider, a task program and a crew seat (#2505)
santoshkumarradha Nov 8, 2026
fb3ddf1
factory: follow go-aheads itself — group policies and waits-on (#2524)
santoshkumarradha Nov 9, 2026
5d02f0d
sync: keep an unpublished export instead of sealing it again every pa…
santoshkumarradha Nov 9, 2026
32747af
engine: an idle job chat and an unchanged vault cost nothing per look…
santoshkumarradha Nov 9, 2026
f508fec
Factory: any-source intake, router and AI filter, and the factory as …
santoshkumarradha Nov 9, 2026
0dc2bd1
engine: on macOS a held chat's folder costs one watch handle, not one…
AbirAbbas Nov 9, 2026
a687c92
An effort set right after a conversation opens is no longer overwritt…
AbirAbbas Nov 10, 2026
52fa29e
Merge dev into app/v3: the landing candidate (land/app-v3)
AbirAbbas Nov 10, 2026
c2434bd
changes: app/v3 lands on dev (#2561)
AbirAbbas Nov 10, 2026
8e3411a
land: join the served factory's poll, and dev's storage-off tests fol…
AbirAbbas Nov 10, 2026
6059677
Windows: a session can finish — stops that stop, state that survives,…
AbirAbbas Nov 10, 2026
eaf6338
enginehost: lock probes share, so one cannot impersonate a retiring host
AbirAbbas Nov 10, 2026
522067a
test: synchronize the usage writer baseline before process close
AbirAbbas Nov 10, 2026
898a160
fix: order final publish notices across watch retirement and close
AbirAbbas Nov 10, 2026
4a7416d
Merge app/v3 6059677ac (#2546, Windows stability) into land/app-v3
AbirAbbas Nov 10, 2026
8511037
Merge dev b0dfe9702 (#2567) into land/app-v3
AbirAbbas Nov 10, 2026
8c06212
manual: the quit-notice section stops answering "continue on another …
AbirAbbas Nov 10, 2026
30b8359
engine: the key vault carries secrets, not files of any size (#2576)
santoshkumarradha Nov 10, 2026
f1618f9
factory: an engine restart orphans nothing on AgentField (#2573)
santoshkumarradha Nov 10, 2026
344fb10
factory: no chat ever works in codeaf's own folder (#2578)
santoshkumarradha Nov 10, 2026
6ed333e
Merge dev ace7888ab (#2577) into land/app-v3
AbirAbbas Nov 10, 2026
3cb458b
cmd/codeaf: cap chatContinuer copy-bucket names at 255 bytes
AbirAbbas Nov 10, 2026
d22028b
session: stamp Home's spend once per out-of-turn bill, in bank alone
AbirAbbas Nov 10, 2026
a29d484
cellindex: wait for an unsettled usage writer once per rebuild, not t…
AbirAbbas Nov 10, 2026
528122a
Merge dev 15d40fd05 (#2583) into the app/v3 landing branch
AbirAbbas Nov 10, 2026
5499dbf
factory: the GitHub people, CODEOWNERS and pipeline readers stop when…
AbirAbbas Nov 10, 2026
679544c
app: Close waits for everything the backend started, and a second Clo…
AbirAbbas Nov 10, 2026
6992c46
tests: owners close before their fakes, and temp homes name late writers
AbirAbbas Nov 10, 2026
fd949df
close: every new wait is bounded by a named budget, and a stuck reade…
AbirAbbas Nov 10, 2026
6e4d317
Merge dev b8c5f2657 (#2588) into the app/v3 landing branch
AbirAbbas Nov 10, 2026
392b2b0
close: every critical section the leak fixes added unlocks from a defer
AbirAbbas Nov 10, 2026
0343fde
app: the engine closes where RunApp closes it, and every Close tears …
AbirAbbas Nov 10, 2026
2c5e083
session: the ledger's identity scan reads a row's ids in place
AbirAbbas Nov 10, 2026
be3f760
Merge app/v3 344fb10ba (#2573, #2576, #2578) into the landing branch
AbirAbbas Nov 11, 2026
a137f6f
Merge dev 9b98d5134 (#2592) into the landing branch
AbirAbbas Nov 11, 2026
d351a34
provider: an abandoned race also holds the factory settlement token
AbirAbbas Nov 11, 2026
de28635
changes: say where the landed commits stay reachable (#2561)
AbirAbbas Nov 11, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
33 changes: 33 additions & 0 deletions .github/windows-native-tests.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Tests the `windows native tests` job (ci.yml) runs on windows-latest: one line per package,
# "<package> <go test -run regex>". Every name here passed natively on Windows 11 when it was added.
# Add a test once it passes on Windows; remove one only with the change that makes it not apply.
# cmd/codeaf is absent until its test files compile for Windows (syscall.Mkfifo/Kill in fixtures).
cmd/codeaf-demo-home ^(TestTheDemoHomeFillsEveryPlace|TestTheDemoHomesLedgersStayInsideTheirOwnDays)$
internal/appwire ^(TestHealthCheckAnswersTheEnginesFacts|TestSetupFolderTakesFullPathsOfEveryPlatform|TestSetupMethodsAnswerTheirShapes|TestSetupMethodsRefuseBadParams|TestSetupStepIsANumberOrDone|TestTheSchemaSaysSetupIsThreeSteps)$
internal/automation ^(TestAClockLeavesForANewerWindowsEnvironment|TestASlotIsSkippedWhileItsLastRunIsStillGoing|TestAWindowBeingOpenedIsNeverCountedAway|TestAppQuitHelperLifetime|TestClockSaysADueReminder|TestClockSaysAMissedReminderLate|TestClockStopsWorkWhenTheLastWindowCloses|TestDeletingAnAutomationStopsItsRun|TestOnceWatchFinishesAfterItSpeaks|TestOnlyOneClockAtATime|TestPresenceCountsTheWindowsThatAreHeld|TestPresenceSweepsAWindowNobodyHolds|TestPublishContract4ReminderFiresAndReleasesItsWindow|TestStopRequestStopsARun|TestUnsureOrFailedJudgmentIsCouldntCheck|TestUntrustedWorkAsksAndTheLadderClimbs|TestWatchSpeaksOnTheChangeAndIsQuietWhileItHolds|TestWatchWorkGetsTheEvidence|TestWorkOutcomesAreFactsNotGuesses|TestWorkRunsTwoAtATime|TestWorkThatRunsOutOfTimeIsIncomplete)$
internal/cellindex ^(TestRefreshBringsInTheRowsOfTurnsMadeSinceTheOlderCopy|TestRefreshDoesNotRebookALegacyTurnAggregate|TestUsageAliasRowIdentity)$
internal/delegate ^(TestALaunchAtTheEndOfALongHistoryIsReadInBoundedMemory|TestALaunchReadsOnlyItsOwnLines|TestALaunchsCallsAreCountedOnlyWhenEveryOneWasRead|TestContractWindowsDelegateStopsOrphanAfterLeaderExit|TestEveryActionOfALaunchIsReachableByPagingInItsCanonicalWords|TestOnlyTheEndingLineCarriesEndingFacts|TestTheEndLineAndTheShownEndingAreGoldenOnTheWire|TestTheEndLineOnDiskHoldsTheCapAndReadsBack|TestTheEndingKeepsNothingOffTheListAndNothingOfTheWrongShape)$
internal/exec ^(TestContractWindowsServiceStop|TestContractWindowsUnverifiedJobWait|TestTextContractHeadlessEditWrite|TestTextContractHeadlessOutput|TestTextContractShellEnvironment)$
internal/exec/bare ^(TestBashBasicOutput|TestBashNonZeroExit|TestBashTimeout|TestTextContractBashOutput|TestTextContractReadEditWriteEncoding|TestTextContractReadWithoutUTF16BOM)$
internal/executor ^(TestLocalCleanExitLeavesNoServices|TestLocalReportsExitCode|TestLocalRunsAndCapturesOutput|TestLocalTimesOutAndKillsTheGroup)$
internal/factory/run ^(TestCheckFailKeepsTail|TestCheckIgnoresSteer|TestCheckPass|TestCheckStripsKeys|TestCheckTimeout)$
internal/factory/serve ^(TestAccessTokenSessionDiesWithTheRow|TestAnAsleepComputerClaimsOnlyItsOwnersJobs|TestConcurrentSamePersonJoinsCountOnce|TestGivingBackAUseIgnoresAnExpiredSessionOfTheSamePerson|TestGivingBackAUseKeepsAnotherLiveSessionOfTheSamePerson|TestLateRepoDisagreementNeverSpendsAUseOrLeavesASession|TestLegacyGetCheckStillPolls|TestLinkCardPrecedenceAndAlreadyIn|TestNoVisibleRepoDeniedAndCancelledSignInsSpendNothing|TestOnlyTheOperatorMakesOrRevokesLinks|TestPostCheckPollsOnlyTheCallersFlow|TestRefusedLateRepoCheckNeverReachesTheDisk|TestRevokingAHumanLinkStopsNewPeopleAndKeepsThoseWhoJoined|TestSessionOfAPersonGivenBackIsNotUsable|TestUpToNLinkSpendsOneUsePerPersonAndNeverMore)$
internal/factory/verification ^(TestRecognizedCheckIsTheDescendantEvidenceBoundary|TestSnapshotTimeoutKillsItsPipeHoldingChildren)$
internal/fsreplace ^(TestA4SyncDirectoryKeepsErrorsAndSupportsNativeStorage|TestIntFixContractADirectoryRename|TestIntFixContractARenamesLinkItself|TestIntFixContractAReplacementKeepsHeldGeneration|TestIntFixContractAWindowsRenameKeepsLockedFilesAndErrors|TestK3ReplacementKeepsTheDestinationUntilSuccess|TestK3WindowsEditorLockRetries|TestPublishContract123OpenHandlesAllowReplacementAndRemoval|TestPublishContract1SyncOpenedDirectory|TestPublishContract23OpenAndRemoveKeepNativeErrors|TestPublishContract2WindowsRemoveRetriesAndKeepsErrors)$
internal/head ^(TestAJobReachesTheFileItsOwnLeafWrote|TestArtifactReadKeepsBothEndsAndMarksWhatItElided|TestFoldedJobStaysFindableAndReadable|TestOpenReadsAFileWholeAndPagesIt|TestReadOpensNothingTheGraphDoesNotPointAt|TestReadReachesTheAnswerTheResultOnlyNames|TestReadRefusesARecordedPathThatLinksOutOfItsDirectory|TestReadingAFileJournalsNothing|TestTextContractReadNativeSummaryPath|TestTheBeltCanOpenTheFileTheResultOnlyNames|TestTheDeliveryTurnReadsTheFileTheResultOnlyPointsAt)$
internal/opener ^(TestWindowsOpenerUsesFileProtocolHandler)$
internal/processgroup ^(TestContract2ProcessLifetime|TestContractWindowsCancelDuringLaunch|TestContractWindowsEngineLifetime|TestContractWindowsInheritedLaunch|TestContractWindowsNestedJob|TestContractWindowsOrphanedTreeStop)$
internal/raftdirectory ^(TestR18R19R20R21ScriptedWorkerHandoff)$
internal/remote ^(TestAWindowHelloHoldsTheMachinesPresenceWhileItIsAttached)$
internal/resident ^(TestServiceStopAndStartupReadoption|TestServiceSupervisorCapsAutoRestartAndRests|TestServiceSupervisorHealthFailureAndQuietAttention|TestServiceSupervisorHealthOKAndSuccessfulRestart|TestTextContractHealthShell)$
internal/run ^(TestRunFactoryCarriesDailyAuthority)$
internal/service ^(TestAChangeTheFileCannotKeepIsUndone|TestAChangedCheckUnderAYesIsNotSlippedIn|TestACleanExitRestartsOnlyUnderAlways|TestAFencedOwnerStartsNothingNew|TestAFileCodeafDidNotWriteIsRefused|TestAFoldedEpisodeStillSaysItHappened|TestALaunchTheFileCannotRecordRunsNothing|TestAListenerThatClosesOrBlocksDoesNotHoldClose|TestAPersonsRestartNeitherSpendsNorRefillsTheBudget|TestAPolicyChangeAppliesAtTheNextFailure|TestAPortAlreadyAnsweringIsSaidAndNothingIsStarted|TestAQuitLeavesItRunningAndTheNextCodeafTakesItBack|TestARecycledPIDIsNeverTakenBackOrSignalled|TestARemovalTheArchiveCannotKeepRemovesNothing|TestAReopenKeepsAProcessThatIsStillOursInAnyState|TestARepairIsRefusedBeforeAnythingHappens|TestARepairKeepsThePersonsPolicyForAnAlreadyApprovedSpec|TestARepairRunsTheChangedCommandOnTheSameRow|TestARepairTheFileCannotKeepPutsEverythingBack|TestARepairedServiceIsTakenBackAsRepaired|TestARowNeverAliasesTheRecord|TestAStopDuringTheGraceIsTheSameStop|TestAStopIgnoredSendsSigkillAfterTheGrace|TestAStopThatCannotEndItKeepsItOwned|TestAYesTheFileCannotKeepStartsNothing|TestAfterARebootOnlyARestartingPolicyStartsAgain|TestAnAutomaticRestartThatCannotStopRestsAndKeepsTheProcess|TestAnEpisodesResolutionIsWrittenOnce|TestAnUnreadableBootProvesNoReboot|TestCloseLeavesServicesRunningAndStopAllEndsThem|TestCloseRacingEveryVerbLeavesNothingBehind|TestConcurrentActionsSettleConsistently|TestConsentIsForTheExactCommandFolderAndCheck|TestEventsCarryNoCredentialAndOneLinePerEpisode|TestLargeShortLineTailKeepsChronologicalSuffix|TestMetadataBudgetRejectsBeforeOverwritingTheReadableStore|TestMissingIdentityIsNotRunning|TestOldSlowServicesCannotPermanentlyStarveNewerServices|TestOneAgentNeverSeesOrTouchesAnothersServices|TestOnlyAChangedSpecStartsWithAWholeBudget|TestOutputIsReadInBoundedPages|TestOutputPageIsAContiguousPrefixAcrossTheByteCap|TestOutputPartialMarksOnlyAPageCutShortOfTheEnd|TestPolicyNeverShowsTheStateAndRestartsNothing|TestRemoveDropsOnlyAServiceWithNoProcess|TestRemovedOutputRetainsRotationDisclosureAfterReopen|TestRestartCannotLaunchASecondProcessWhenTheOldOneCannotStop|TestStopAllSaysWhatItCouldNotStop|TestStopEndsItAndNothingRestartsIt|TestStopOwnerWaitEndsWithItsContext|TestStopOwnerWaitProvesItsOwnersGoneAndLeavesOthers|TestTenHealthyMinutesStartTheCountAgain|TestTheBudgetIsThreeRestartsInTenMinutes|TestTheLastRowAfterAStopIsNotStopping|TestTheOriginalsExitStillCountsAfterAFailedReplacement|TestTheSupervisorKeepsOneTimerForEveryService|TestThreeFailedChecksRestartAndOnePassRecovers)$
internal/session ^(TestACommandLookFailsOnAFailingPipeStage|TestACommandLookKeepsTheExitAndHidesTheKeys|TestAJobStoppedByThePersonSettlesAsStoppedAndNotAsFailed|TestAJobsChatSpendsEveryCallOnTheJobAndTheLedgerOnce|TestAStoppedJobsPublishedNoticeCarriesJobStopped|TestAnInterruptDiscardsTheRacedYes|TestAnInterruptLeavesABackgroundCommandRunning|TestAnInterruptedCommandIsNeverPromoted|TestAnInterruptedDesignSettlesAndIsNeverRunAsAnOrdinaryTask|TestAnInterruptedProposalTakesItsCardBackDown|TestAnInterruptedRowRaisesNoMarkNothingCanAnswer|TestAnInterruptedRunRowSurvivesTheNextCheckpoint|TestAnInterruptedSummaryEndsAsInterrupted|TestAnInterruptedTurnIsNotCheckpointed|TestAnInterruptedTurnsMoneyIsOnTheLedgerAndTheMeterAlike|TestCancelOnAnUnknownJobAndOnOneAlreadyOverAnswersTheWayTheOtherBranchesDo|TestCancelledHelperRetryBooksEachAttemptOnce|TestCloseForDeletionStopsKeptServices|TestContract1ManagedJobWaitsForItsTreeAfterLeaderExit|TestContract3UnkillableJobIsNeverReportedStopped|TestConversationDeleteCanRetryCleanupAfterJournalMoved|TestConversationDeleteFreshManagerScopeIsRecheckedBeforeStopping|TestConversationDeleteManagerRequiresPriorAssignment|TestConversationDeleteOptionalGlobalManagerKeepsTeamsAndAllowsRecreation|TestConversationDeleteRefusalPreservesTranscriptAndMemberships|TestConversationDeleteRemovesJournalFileSymlinkMemberships|TestConversationDeleteRemovesOwnedCheckReceiptsOnly|TestConversationDeleteRetryPreservesCapturedManagerAliases|TestConversationDeleteSerializesConcurrentCallersAndRetainsTombstone|TestConversationDeleteStaleOwnerRequestIsDiscarded|TestConversationDeleteStopsOwnerPreservesHistoryAndPreventsRecreation|TestConversationDeletionPreservesSavedMemoriesAndTheirSourceIdentity|TestDefaultProfileDailyAuthorityStaysLive|TestJobBudgetNamesTheFactoryJobOnLedgerRows|TestJobsKillEndsSleeperWithoutSelfReport|TestKilledTaskKeepsItsBranch|TestPublishContract5UsageSurvivesReplacement|TestTaskConstructorsCarryDailyAuthority|TestTextContractAppendEncoding|TestTextContractBackgroundOutput)$
internal/shell ^(TestContract6WindowsProcessFacts|TestStartFailureWindowsCommandLineLimit|TestStartFailureWindowsSecurityBlock|TestUnixDoorArgv|TestWindowsCwdLongOutputAndExit|TestWindowsExplicitRelativePath|TestWindowsGitShimResolution|TestWindowsKnownGitLayoutsNeverProbe|TestWindowsListPath|TestWindowsListPathBindsRelativeNames|TestWindowsListPathUsesNativeAbsoluteRules|TestWindowsOverrideCacheAndRefusal|TestWindowsOverrideRefusalSentences|TestWindowsRelativeOverrideCacheFollowsDirectory|TestWindowsResolutionRules|TestWindowsSingleParse|TestWindowsWSLPredicate)$
internal/store ^(TestAFileNamedByTwoProducersIsCarriedOnce|TestAProductPastTheCeilingClipsAndSpillsToAReadableHandle|TestAReaderDecidingAShapeGetsTheAccountAndNotTheProduct|TestPublishContract5SpendIncludesCurrentClockTick|TestSpendBetweenAndByJobAnswerAWindow|TestTextContractSummaryNativePaths|TestTheEdgeCarriesTheProductAndNotTheAnnouncementOfIt)$
internal/summarypath ^(TestTextContractSummaryPath|TestTextContractSummaryWindowsPaths)$
internal/syncsetup ^(TestJoinedClusterStatusDoesNotReopenTheMemberStore|TestNativeNonLeaderAndAbsentMemberQuitIsQuiet|TestR16CommittedRevocationInvalidatesPeerView|TestR20WorkerProcessCutsNeverReplayTools|TestR23OpenLearnerDiscardsDelayedPushAfterOff|TestR23PersonalLearnerStopsAtEveryUse|TestR25PersonalLeaderLargeLegacyRequests|TestR26R27C30OpenLearnerIdleAndStateWake|TestR6PersonalLeaderDirectoryConformance|TestR6PersonalLeadershipCommittedRefusalAcknowledged|TestR6PersonalLeadershipLostReplyResumesSignedRequest|TestR6PersonalLeadershipRestartResumesSavedRequest|TestR6R13R27PersonalLeaderKeepsMaximumPublicCommand|TestR6R15R18PersonalLeaderOriginalWorkerIngressAndThinStore|TestR6R16PersonalLeaderSkipsRevokedLearner|TestR6R25PersonalLeaderDirectoryIsolation|TestR6R9R23PersonalMemberProductionLifecycle|TestR7PersonalLeaderFallbackAndNoAutomaticRegain|TestR8PersonalLeaderAndAnchorLossNeverCreatesSecondCluster|TestR9PersonalHomeInstallsSnapshotChunksAndLog|TestR9PersonalHomesJoinAsDurableLearners|TestR9R23LocalHomeFollowerSharesTheOwnedLearner|TestR9R23PersonalLearnerRefreshesColdRouterGeneration|TestR9R27PersonalCatchupResumesWithoutEmptyPolling|TestTakeLedgerDuringLateAccounting|TestTakeLedgerLegacyCallsAndIdenticalCalls|TestTakeLedgerQueuedOrSettledLiveCall|TestTakeLedgerRemoteIdentityCombinations)$
internal/taskcopy ^(TestCachedFullHistoryRejectsNoncanonicalContainer|TestColdLegacyFullHistorySecretsRefuseComposition|TestPortableSnapshotCarriesImmutableCreationBaseline|TestSealDoesNotDiscardUnpreparedColdTaskCarry|TestWorkspaceDirectoryMetadataCannotOmitPayloadParents)$
internal/taskdoor ^(TestAcknowledgedAttemptReplayProtectionIsBounded|TestAnAbandonedRunningAttemptCannotRecreateItsJournal|TestAnAckRemovesTheAttempt|TestAnAttemptStartedAgainAfterItsAckNeverRunsAgain)$
internal/taskstorage ^(TestEnsureClearsUncreatedVerificationReservation|TestEnsureRecoversOnlyJournaledVerificationContainer|TestEnsureRefusesVerificationSymlinkWithoutClearingJournal|TestEnsureRejectsForgedVerificationContainer|TestInterruptedRetirementPreservesUnexpectedNewBytes|TestInterruptedRetirementRestoresMissingFiles|TestMissingSavedBytesCannotBecomeFreshCopy|TestParkAndReopenKeepsExactWorkAndIdentity|TestRecreatedWorkspaceIsNeverOverwritten)$
internal/tui3 ^(TestALatePreviewCannotMisrouteAPressInThePane|TestANarrowTerminalGivesTheSheetTheWholeWindow|TestAPathShapeIsTheOnlyThingThatBrowses|TestAPressOutsideTheSheetReachesNothing|TestAShortTerminalStillDrawsTheWayOut|TestClosingTheSheetAsksForTheWholeScreenBack|TestContextModalLateralPressCannotChooseOrConfirm|TestContextModalLateralWheelAndHoverStayOnBackdrop|TestFolderPickerWaitsForTheTypedDirectoryBeforeConfirming|TestSelectionHoverAndMarksAreToldApart|TestTextContractFolderDriveCase|TestTextContractFolderNativePaths|TestTheBackdropNeitherScrollsNorLights|TestTheBackdropSurvivesOnBothSidesOfTheSheet|TestTheCancelTargetLeavesHavingChangedNothing|TestTheCaretIsInTheSheetsBox|TestTheFrameAfterACloseHoldsNoCellOfTheSheet|TestTheSheetHoldsAtThePlainFloor|TestTheSheetIsBoundedAndFramedOnAWideTerminal|TestTheSheetNamesItselfAndBothWaysOut|TestTheSheetNeverClaimsARowTheTerminalDoesNotHave|TestTypingAPathMorphsTheListIntoColumns)$
7 changes: 5 additions & 2 deletions .github/workflows/ci-full.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ jobs:
full-tests-shard:
name: full tests ${{ matrix.shard }}/3
runs-on: ubuntu-latest
timeout-minutes: 60
timeout-minutes: 75
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -112,7 +112,10 @@ jobs:
# still dies at -p 1, it is not, and the package that was running is
# the suspect by name. The shards keep the wall clock acceptable
# while each one runs serial.
make test TEST_FLAGS='-p 1' PKGS="$pkgs"
# cmd/codeaf took 1325 s on this runner (2026-11-05), past the
# Makefile's 15m. 35m gives it about 1.6 times that; the shard
# around it took 45 minutes, so the job limit is 75.
make test TEST_TIMEOUT=35m TEST_FLAGS='-p 1' PKGS="$pkgs"

# ONE NAME FOR THE THREE, for the same reason cross build has one below: a
# branch rule can only require a name it can spell, and a matrix's legs are
Expand Down
54 changes: 53 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ on:
pull_request:
branches:
- dev
- app/v3
- 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.
Expand Down Expand Up @@ -230,6 +231,57 @@ jobs:
path: ${{ steps.cache-paths.outputs.modules }}
key: ${{ steps.module-cache.outputs.cache-primary-key }}

# NATIVE WINDOWS, ADVISORY FOR NOW. Until November 2026 no test ever ran on
# Windows: the engine cross-built for it and nothing more, and shared code that
# assumed POSIX (rename over an open file, process groups, login shells, `/`
# paths) went unnoticed while the Windows desk failed every session. This job
# runs, on a real Windows runner, the named tests in
# .github/windows-native-tests.txt that pass there: process trees stopped as a
# whole, state files replaced while held, reminders, spending, native paths,
# UTF-16 and line endings. It is not yet part of `check`; once it has stayed
# green for a while it should be.
windows:
name: windows native tests
runs-on: windows-latest
timeout-minutes: 45
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Stage furrow for windows/amd64
run: go run ./internal/furrowbin/cmd/fetch -goos=windows -goarch=amd64
- name: Native tests
env:
CODEAF_TELEMETRY: "off"
DO_NOT_TRACK: "1"
CODEAF_NO_UPDATE_CHECK: "1"
CODEAF_MODEL_POOL: "off"
CODEAF_SYNC_URL: "off"
run: |
set -uo pipefail
# A home, profile and temp folder of the run's own, short enough for
# Windows paths, so no test reads the runner's real profile.
root="$RUNNER_TEMP/w"
mkdir -p "$root/home/AppData/Local" "$root/home/AppData/Roaming" "$root/codeaf" "$root/tmp"
export HOME="$root/home"
USERPROFILE="$(cygpath -w "$root/home")"; export USERPROFILE
LOCALAPPDATA="$(cygpath -w "$root/home/AppData/Local")"; export LOCALAPPDATA
APPDATA="$(cygpath -w "$root/home/AppData/Roaming")"; export APPDATA
CODEAF_HOME="$(cygpath -w "$root/codeaf")"; export CODEAF_HOME
TMP="$(cygpath -w "$root/tmp")"; TEMP="$TMP"; export TMP TEMP
failed=""
while read -r pkg pattern; do
case "$pkg" in ''|'#'*) continue ;; esac
echo "::group::$pkg"
go test -count=1 -p 2 -timeout 15m -run "$pattern" "./$pkg" || failed="$failed $pkg"
echo "::endgroup::"
done < .github/windows-native-tests.txt
if [ -n "$failed" ]; then echo "::error::failed on Windows:$failed"; exit 1; fi

# The selector does no compilation unless module files changed. A docs-only
# change creates no test runner; the light gate and the aggregate still run.
select:
Expand Down Expand Up @@ -322,7 +374,7 @@ jobs:
mkdir -p "$TMPDIR"
# -p 2 permits concurrent compilation/testing in rest on the public
# 4-vCPU / 16-GB runner, leaving headroom for the linker. tui3 and
# session use four shards; codeaf runs its suite without sharding.
# session and codeaf use four shards.
./scripts/touched-verdict.sh run --base "$BASE" --shards 4 --report "$TMPDIR/$LEG.json" $PACKAGES
- uses: actions/upload-artifact@v4
if: always()
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,12 +217,19 @@ jobs:
env:
TAG: ${{ needs.prepare.outputs.tag }}
CGO_ENABLED: "0"
# The GitHub OAuth app of the first run's browser sign-in; not a
# secret. Unset leaves that sign-in out of the build.
CODEAF_GITHUB_CLIENT_ID: ${{ vars.CODEAF_GITHUB_CLIENT_ID }}
run: |
set -euo pipefail
mkdir -p dist
go generate ./internal/manual
built_at="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
buildinfo_package="$(go list -m)/internal/buildinfo"
github_stamp=""
if [ -n "${CODEAF_GITHUB_CLIENT_ID:-}" ]; then
github_stamp="-X $(go list -m)/internal/factory/github.clientID=${CODEAF_GITHUB_CLIENT_ID}"
fi
targets=(
"darwin amd64"
"darwin arm64"
Expand All @@ -242,7 +249,7 @@ jobs:
GOOS="$goos" GOARCH="$goarch" go build \
-tags=codeaf_packed_manual \
-trimpath \
-ldflags="-s -w -X ${buildinfo_package}.rev=${TAG} -X ${buildinfo_package}.dirty=false -X ${buildinfo_package}.builtAt=${built_at}" \
-ldflags="-s -w -X ${buildinfo_package}.rev=${TAG} -X ${buildinfo_package}.dirty=false -X ${buildinfo_package}.builtAt=${built_at} ${github_stamp}" \
-o "dist/codeaf-${goos}-${goarch}${extension}" \
./cmd/codeaf
done
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ internal/manual/pages.pack.gz
.furrow/
bench/idle-surface/runs/
work/
# The desktop app's garbled sidecars (`make app-sidecar`), built for a bundle
# and never committed.
/dist/

# hosted relay dev install (wrangler, miniflare)
relay/hosted/node_modules
Expand Down
Loading
Loading