Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1367 commits
Select commit Hold shift + click to select a range
8f4baef
test(manager): witness native renewal fencing and goal recovery
davidfarah2003 Oct 9, 2026
dce7e0e
test(manager): refresh custody and status revision mutation anchors
davidfarah2003 Oct 9, 2026
be167b0
Merge pull request #3510 from Cotal-AI/lane/managed-run-integrate-1009
davidfarah2003 Oct 9, 2026
b11bcbe
Merge pull request #3511 from Cotal-AI/lane/participant-control-upstr…
davidfarah2003 Oct 9, 2026
ae57f73
fix(manager): enforce owned persona visibility before spawn
davidfarah2003 Oct 9, 2026
7be3295
test(connector): verify managed agents drive owned workflows
davidfarah2003 Oct 9, 2026
b9d675f
Merge pull request #3512 from Cotal-AI/lane/u4-integrate-1009
davidfarah2003 Oct 9, 2026
bf3a7b2
Merge pull request #3513 from Cotal-AI/lane/managed-connector-accepta…
davidfarah2003 Oct 9, 2026
97f953f
fix(auth): bound the revoke-time eviction credential to 60 seconds
davidfarah2003 Oct 9, 2026
4a7271e
fix(manager): read the deregister issuance gate through core's reader…
drakeo338 Oct 9, 2026
58a725f
fix(cli): carry a detached resume for the harness the manager resolve…
davidfarah2003 Oct 9, 2026
82fff16
fix(manager): open the spawn provisioner connection through the scope…
davidfarah2003 Oct 9, 2026
620d72e
test(manager): keep the persona read set in the events-grant own-chan…
davidfarah2003 Oct 9, 2026
20c93a1
fix(core): report and drop an undecodable channel registry entry
davidfarah2003 Oct 9, 2026
ea15e8d
fix(lang): ask the host stop before a conclave opens
davidfarah2003 Oct 9, 2026
dec97c3
fix(cli): run foreground and detached up through one spawn-to-ready s…
davidfarah2003 Oct 9, 2026
e1c317e
fix(delivery): reject a hosted close that did not release the shard l…
davidfarah2003 Oct 9, 2026
8845edd
fix(cli): run the foreground retirement's broker teardown when the cr…
davidfarah2003 Oct 9, 2026
df7bec5
fix(cli): resolve foreground --share-tools before provisioning (#3543)
davidfarah2003 Oct 9, 2026
1745668
chore(release): version packages
github-actions[bot] Oct 9, 2026
42077d3
chore(release): version packages (#3447)
davidfarah2003 Oct 9, 2026
6861390
fix(core): never fail a completed registration after its reopen commits
davidfarah2003 Oct 9, 2026
7d1b600
fix(workspace): lstat both entries when an identity record move finds…
davidfarah2003 Oct 9, 2026
6979e05
fix(auth)!: fix the token verifiers' clock tolerance at 5 seconds (#3…
davidfarah2003 Oct 9, 2026
bca0582
chore(release): version packages
github-actions[bot] Oct 9, 2026
c17f318
Merge pull request #3562 from Cotal-AI/changeset-release/main
davidfarah2003 Oct 9, 2026
a1948eb
fix(connector): arm the Codex and Jcode event plane on a required reg…
davidfarah2003 Oct 9, 2026
b411064
fix(manager): carry eventsRequired into a resumed seat's launch (#3570)
davidfarah2003 Oct 9, 2026
2d6a78f
fix(manager): key the turn relay by caller and goal id (#3574)
davidfarah2003 Oct 9, 2026
bc7f380
chore(release): version packages
github-actions[bot] Oct 9, 2026
aece60a
Merge pull request #3571 from Cotal-AI/changeset-release/main
davidfarah2003 Oct 9, 2026
a32e955
fix(connector-core): prepare a followed user-mode manager call before…
davidfarah2003 Oct 9, 2026
05b7166
fix(cli): check preserve-state presence rows where they are read so a…
davidfarah2003 Oct 9, 2026
c164c80
fix(runtime): record a wait's timers before it branches to down and r…
davidfarah2003 Oct 9, 2026
799fd8d
fix(connector): read COTAL_TLS through the shared on/off flag parser
davidfarah2003 Oct 9, 2026
1bda7c1
fix(connector): name the control pair a hand-driven Claude Code sessi…
davidfarah2003 Oct 9, 2026
fdb35c4
fix(seat,manager): kill a pty child that ignores SIGTERM after its st…
davidfarah2003 Oct 9, 2026
196a575
fix(manager): report a static reconcile sweep that fails before plann…
davidfarah2003 Oct 9, 2026
1d8a7d4
fix(cli): let clean, backup and meshes rm proceed only over process r…
davidfarah2003 Oct 9, 2026
56f63a5
fix(tmux,cmux): remove a seat's launch script once it runs
davidfarah2003 Oct 9, 2026
8344353
fix(manager): name the allocated owner in a replayed spawn acceptance…
davidfarah2003 Oct 9, 2026
70fb24e
fix(auth)!: create first-use auth secrets only while the store key is…
davidfarah2003 Oct 9, 2026
7d13389
fix(workspace): refuse an unreadable mesh registry instead of reporti…
davidfarah2003 Oct 9, 2026
6db45e5
test(runtime): serve cancel from the mesh-ask stand-in manager
davidfarah2003 Oct 9, 2026
af7fd7a
fix(auth): answer manager-service authority body refusals in the expo…
davidfarah2003 Oct 9, 2026
40283af
refactor(cli): drop the auth-mode argument the up root pin ignores (#…
davidfarah2003 Oct 9, 2026
de3c0f7
test(core): read the spawn-name smoke's CLI door calls from the parse…
davidfarah2003 Oct 9, 2026
5a147d5
fix(connector-opencode): record the serve's pid before the serve star…
davidfarah2003 Oct 9, 2026
c2d8362
test(workspace): derive the pid smoke's auth fixture from the stop's …
davidfarah2003 Oct 9, 2026
69de981
fix(connector-core): stop showing a run turn after its deadline (#3625)
davidfarah2003 Oct 9, 2026
005b47a
fix(manager): report a launch that dies on a non-streaming runtime as…
davidfarah2003 Oct 9, 2026
bea10f9
fix(cli): apply up -f --idp to the effective manifest (#3635)
davidfarah2003 Oct 9, 2026
981b567
refactor(core): share one promise deadline helper across endpoint, me…
davidfarah2003 Oct 9, 2026
c4cd8dc
fix(auth)!: count manager-service authority refusals against the exch…
davidfarah2003 Oct 9, 2026
8037b15
fix(website): share one clipboard handler between the two prompt butt…
davidfarah2003 Oct 9, 2026
f7a0484
refactor(manager): bind the remote supervise provider call context on…
davidfarah2003 Oct 9, 2026
e98c2ae
fix(cli): wait for a started manager to come up before up reports it …
davidfarah2003 Oct 9, 2026
87fa2c3
refactor(runtime): derive the wait-timeout and observe pause tokens i…
davidfarah2003 Oct 9, 2026
f47fcc0
fix(website): rewrite links and images that docs pages name in HTML a…
davidfarah2003 Oct 9, 2026
ae36bb5
fix(manager): drop the unreachable static endpointCapabilities refusa…
davidfarah2003 Oct 9, 2026
1f2b07c
fix(manager): drop internal review labels from the launch tier and sp…
davidfarah2003 Oct 9, 2026
8b92413
fix(lang): read a scope's body position from the syntax table in the …
davidfarah2003 Oct 9, 2026
a74b832
fix(lang)!: name a primitive's scope kind in the syntax table (#3657)
davidfarah2003 Oct 9, 2026
d04629a
fix(lang): classify whether a scope dispatches in its scope traits (#…
davidfarah2003 Oct 9, 2026
bd84363
fix(manager): build the goal-index scan request with one shared build…
davidfarah2003 Oct 9, 2026
2415517
fix(tmux): wrap a failed serverPid query like the driver's other queries
davidfarah2003 Oct 9, 2026
f26e86f
fix(cli): check for a terminal once on meshes add --from (#3669)
davidfarah2003 Oct 9, 2026
a7f39aa
fix(cli): name the URL and content type when a fetched discovery docu…
davidfarah2003 Oct 9, 2026
56f1d7f
fix(cli): fetch the meshes add --from discovery document through pinn…
davidfarah2003 Oct 9, 2026
87ef6f3
fix(delivery): repeat a hosted close() release once after a reconnect…
davidfarah2003 Oct 10, 2026
905a78b
refactor(lang): enter waitUntil's step through the same code as every…
davidfarah2003 Oct 10, 2026
b9499b3
test(core): grade the membership stop/close race on the epoch its sto…
davidfarah2003 Oct 10, 2026
261e48c
fix(web): report the last probe outcome when detached readiness times…
drakeo338 Oct 10, 2026
b4b8adc
fix(tmux): read an already-closed target only from the start of tmux'…
davidfarah2003 Oct 10, 2026
f9a71ce
fix(workspace): wait briefly for a held extension lock before refusin…
drakeo338 Oct 10, 2026
b9e3e69
fix(scripts): stop treating a localhost host name as an operator lite…
L4XB Oct 10, 2026
8187211
chore(release): version packages
github-actions[bot] Oct 10, 2026
e07adbc
Merge pull request #3590 from Cotal-AI/changeset-release/main
davidfarah2003 Oct 10, 2026
aa8c947
fix(auth): derive the remote manager surface from core's parsed clust…
davidfarah2003 Oct 10, 2026
1cabda5
chore(release): version packages
github-actions[bot] Oct 10, 2026
7b5dad5
Merge pull request #3688 from Cotal-AI/changeset-release/main
davidfarah2003 Oct 10, 2026
c9983e0
fix(connector-core): say what each MeshAgent capacity limit bounds (#…
davidfarah2003 Oct 10, 2026
36b03b0
fix(core): build the persona catalog directory in one place (#3690)
davidfarah2003 Oct 10, 2026
5500c71
docs(cli): say what running from a dev clone needs (#2383)
MehulNegi Oct 10, 2026
fdab89a
docs(cli): document shell completion evaluation and persistent instal…
apsian4352-coder Oct 10, 2026
d242385
fix(auth): build the data account's signing context in one place (#3696)
davidfarah2003 Oct 10, 2026
2bd492c
fix(core): decide reconcile-gate's raced refusal from the reopen outc…
davidfarah2003 Oct 10, 2026
e8d37a4
fix(connector-core): remove the unused AG-UI event type set
davidfarah2003 Oct 10, 2026
92bd2ed
fix(cli): refuse an enrollment spawn on a record with no exchange pin…
davidfarah2003 Oct 10, 2026
fbc3e2d
fix(core): classify a missing consumer by one structured rule
davidfarah2003 Oct 10, 2026
a09253b
fix(connector-core)!: remove unreachable RUN_ERROR detail bounding fr…
davidfarah2003 Oct 10, 2026
db962ae
fix(cli): read the manager and delivery records through one attributi…
davidfarah2003 Oct 10, 2026
aaa6bc9
fix(lang): rebuild bridged failures from a class-keyed union with no …
davidfarah2003 Oct 10, 2026
d5947c2
fix(cli): skip connector reconcile on shell completion stub generatio…
apsian4352-coder Oct 10, 2026
79ace0f
fix(workspace): key seat writer generations through spaceKey (#3719)
davidfarah2003 Oct 10, 2026
94c034b
fix(manager): stop reporting a prior lifecycle and a hold for an orph…
davidfarah2003 Oct 10, 2026
5e9a618
fix(workspace): report a corrupt installed package.json instead of no…
davidfarah2003 Oct 10, 2026
818fd97
fix(manager): drop internal plan labels from the --ws-port help and m…
davidfarah2003 Oct 10, 2026
c535d98
fix(core): drop deleted manager ctl tiers and plan labels from shippe…
davidfarah2003 Oct 10, 2026
7e72329
fix(auth): parse run attempt and revoke requests with their own envel…
davidfarah2003 Oct 10, 2026
6ff1075
fix(connector-claude-code): point the mapper header at its origin tab…
davidfarah2003 Oct 10, 2026
b8e2756
fix(remotion): frame the header reel's mode cards at MODE_STAGE (#3739)
davidfarah2003 Oct 10, 2026
4aafb0d
fix: keep a thrown envelope error's code and details in the control r…
davidfarah2003 Oct 10, 2026
92590e8
fix(web): name the dashboard pidfile through one workspace constant
davidfarah2003 Oct 10, 2026
50747b1
fix(cli): name the pidfile a start refusal read instead of re-resolvi…
davidfarah2003 Oct 10, 2026
ab9117c
fix(connector-codex): keep a stopping seat from binding its event pla…
davidfarah2003 Oct 10, 2026
c03f2af
fix(workspace): remove an account's or a root's registry entries in o…
davidfarah2003 Oct 10, 2026
4c2379d
fix(cli): show the presence condition and its ages in the console and…
davidfarah2003 Oct 10, 2026
9c9569e
fix(cli): check the cutover preflight's delivery-aware marker against…
davidfarah2003 Oct 10, 2026
7cb89f9
fix(core): validate issued spaces with canonical routing grammar (#3768)
davidfarah2003 Oct 10, 2026
979312e
chore(release): version packages (#3693)
davidfarah2003 Oct 10, 2026
1adbf81
test: restore live-name and capability snapshot regression coverage (…
davidfarah2003 Oct 10, 2026
5417401
fix(claude)!: accept authorized managed workspace trust at startup
davidfarah2003 Oct 10, 2026
e5fbd01
test(claude): separate Cotal restoration state from child snapshots
davidfarah2003 Oct 10, 2026
80f66fd
feat(environment): add owner-scoped provisioning and Tenki adapter
davidfarah2003 Oct 10, 2026
3614fdd
fix(core): validate JSON object members as own properties
davidfarah2003 Oct 10, 2026
c42f53f
fix(core): expose own-member mutation gates to reproof
davidfarah2003 Oct 10, 2026
2ba3a38
test(runtime): reproduce relative sleep expiring before mint
davidfarah2003 Oct 10, 2026
99c74fe
fix(runtime): complete relative sleep elapsed before checkpoint mint
davidfarah2003 Oct 10, 2026
4836451
test(runtime): mark the elapsed sleep before its assertion
davidfarah2003 Oct 10, 2026
b37890b
fix(core): validate JSON object members as own properties (#3774)
davidfarah2003 Oct 10, 2026
2c99088
test(environment): run broker suites in provisioned CI shards
davidfarah2003 Oct 10, 2026
0b12933
test(runtime): load sleep fixtures from one public runtime copy
davidfarah2003 Oct 10, 2026
31b4e45
chore: integrate current main for runtime sleep regression
davidfarah2003 Oct 10, 2026
775d2b8
test(runtime): rebuild public sleep mutations before proof and restore
davidfarah2003 Oct 10, 2026
bd4745c
test(runtime): mark the elapsed sleep predicate completion
davidfarah2003 Oct 10, 2026
a7c1f46
fix(runtime): complete relative sleep after pre-mint expiry
davidfarah2003 Oct 10, 2026
a2acf35
test(core): add counted remaining-schema diagnostics
davidfarah2003 Oct 10, 2026
7303880
test(core): wire hosted remaining-schema diagnostic
davidfarah2003 Oct 10, 2026
9afc3dd
test(core): wire direct-engine diagnostics into existing CI
davidfarah2003 Oct 10, 2026
6946457
fix(cli): record an uncertain spawn -f launch in the run ledger (#3748)
davidfarah2003 Oct 11, 2026
6fbd494
test(core): capture bounded native schema diagnostic evidence
davidfarah2003 Oct 11, 2026
109fa8f
fix(connector-codex): handle catalog stdin failures without crashing …
davidfarah2003 Oct 11, 2026
9d7d7f8
test(core): align native schema evidence with current main
davidfarah2003 Oct 11, 2026
0835254
fix(workspace): throw a user mesh's control refusal when the caller a…
davidfarah2003 Oct 11, 2026
81e6e4c
test(core): retain native diagnostic across workspace update
davidfarah2003 Oct 11, 2026
e00402f
feat(core): add fixed environment manager grant primitives (#3781)
davidfarah2003 Oct 11, 2026
06bd47c
fix(auth): isolate environment manager authority from ordinary paths …
davidfarah2003 Oct 11, 2026
08a3e7c
test(manager): isolate post-shutdown preflight scenarios
davidfarah2003 Oct 11, 2026
8efa80f
test(manager): refresh shutdown and readiness mutation anchors
davidfarah2003 Oct 11, 2026
6924d37
test(manager): isolate post-shutdown preflight scenarios (#3783)
davidfarah2003 Oct 11, 2026
6488bc7
feat(auth): stage native environment manager registration reservation…
davidfarah2003 Oct 11, 2026
d4f711a
fix(auth): preserve aborted environment registration fences
davidfarah2003 Oct 11, 2026
fe13981
feat(auth): bind immutable host environment manager admissions
davidfarah2003 Oct 11, 2026
a64403e
feat(auth): bind native environment bootstrap signing fences (#3789)
davidfarah2003 Oct 11, 2026
cf25442
fix(cli): preserve delivery credentials on refused stack shutdown
davidfarah2003 Oct 11, 2026
6a9bc8e
test(cli): define hermetic shutdown credential mutation proof
davidfarah2003 Oct 11, 2026
4121498
test(cli): mark shutdown proof completion after cleanup
davidfarah2003 Oct 11, 2026
d0c509a
test(cli): count delivery retention proof progress
davidfarah2003 Oct 11, 2026
acbdc0a
test(manager): supply transcript arguments in admin guard sweep
davidfarah2003 Oct 11, 2026
0b89ffa
ci: observe delivery space baseline at base and head
davidfarah2003 Oct 11, 2026
1d60b3f
ci: isolate observation job download staging
davidfarah2003 Oct 11, 2026
701b418
docs(test): qualify transcript receive fixture effects
davidfarah2003 Oct 11, 2026
b4c5c33
test(cli): isolate shutdown retention change scope
davidfarah2003 Oct 11, 2026
edb952b
fix(cli): preserve delivery credentials on refused stack shutdown
davidfarah2003 Oct 11, 2026
18cf027
test(core): compare retained schema witnesses with schemasafe
davidfarah2003 Oct 11, 2026
092376e
test(web): supply bound address to session write fixture
davidfarah2003 Oct 11, 2026
74b948d
ci: run web console auth in live verification
davidfarah2003 Oct 11, 2026
a1181d0
test(core): observe released schemasafe public errors
davidfarah2003 Oct 12, 2026
dddc60f
test(web): restore console session-write fixture coverage
davidfarah2003 Oct 12, 2026
bb0af47
test: repair unit transport fixtures and expose baseline
davidfarah2003 Oct 12, 2026
e7a6b81
test(connector-core): repair transport shutdown fixtures (#3824)
davidfarah2003 Oct 12, 2026
41f66c8
ci: add fixed manual validator lock acquisition
davidfarah2003 Oct 12, 2026
a16eed0
test(ci): qualify validator acquisition entry guards
davidfarah2003 Oct 12, 2026
8d3d944
test(ci): integrate validator acquisition guards with main
davidfarah2003 Oct 12, 2026
dd52d49
test: serve cancellation in replied fixture
davidfarah2003 Oct 12, 2026
d56a609
test(ci): preserve guards across manual acquisition gating
davidfarah2003 Oct 12, 2026
2b5a546
test(ci): reanchor the second aggregate mutation
davidfarah2003 Oct 12, 2026
4ff830f
test(runtime): align bound-goal discharge mutation label
davidfarah2003 Oct 12, 2026
593f455
test: distinguish cancelled turn registry cleanup
davidfarah2003 Oct 12, 2026
8c1f5c6
test(runtime): reanchor bind refusal mutation
davidfarah2003 Oct 12, 2026
c4e224c
test(runtime): repair replied cancellation coverage (#3825)
davidfarah2003 Oct 12, 2026
5e66a0a
test: align mesh spawn fixture repair with main
davidfarah2003 Oct 12, 2026
125c3fc
test(runtime): repair spawn mutation label and refusal anchor (#3826)
davidfarah2003 Oct 12, 2026
2616e33
test(core): measure remaining schema cases with direct-engine diagnos…
davidfarah2003 Oct 12, 2026
a61968f
fix: retain bounded acquisition refusal observations
davidfarah2003 Oct 12, 2026
4881a01
fix(ci): retain bounded validator acquisition failure observations (#…
davidfarah2003 Oct 12, 2026
d180f1d
fix: pass fixed acquisition policies through supported config flags
davidfarah2003 Oct 12, 2026
2165dbd
fix: refuse external pnpm configuration before acquisition commands
davidfarah2003 Oct 12, 2026
3cac003
fix: pass fixed acquisition policies through supported config flags
davidfarah2003 Oct 12, 2026
15c40ac
fix: refuse external pnpm configuration before acquisition commands (…
davidfarah2003 Oct 12, 2026
d759b79
feat(connector-claude-code): bypass permission prompts on managed sea…
davidfarah2003 Oct 12, 2026
200d74c
fix(cli): stop the spawned broker when up cannot publish its pid
davidfarah2003 Oct 13, 2026
5799f17
fix(cli): read an empty list flag as an empty list on spawn and mint
davidfarah2003 Oct 13, 2026
71e6311
fix(core): validate channel registry entries on the read side (#3845)
davidfarah2003 Oct 13, 2026
fded3ab
fix(connector-core): re-establish a stopped event plane instead of st…
davidfarah2003 Oct 13, 2026
f01a44a
chore(release): version packages
github-actions[bot] Oct 13, 2026
a1991d9
chore(release): version packages 0.80.0 (#3772)
davidfarah2003 Oct 13, 2026
be1a061
fix(connector-claude-code): yield a run turn that passed a permission…
davidfarah2003 Oct 13, 2026
8f7bd97
fix(auth): read the revoke's eviction reply through the barriers' che…
davidfarah2003 Oct 13, 2026
21fe24c
fix(cli): retire the static foreground footprint when provisioning fails
davidfarah2003 Oct 13, 2026
c166107
fix(core): give each goal-writer and session-ledger mint distinct byt…
davidfarah2003 Oct 13, 2026
a84a620
fix(connector-opencode): hold a native prompt behind every turn end s…
davidfarah2003 Oct 13, 2026
37d6f81
fix(connector-opencode): refuse a required-events registration on the…
davidfarah2003 Oct 13, 2026
8190b10
revert: move the environment provisioning packages out of the public …
davidfarah2003 Oct 13, 2026
bc6d2b5
fix(manager): key the spawn acceptance map by caller and goal id (#3867)
davidfarah2003 Oct 13, 2026
400b8b8
fix(cli): refuse a preserve-state presence row whose card.id is not i…
davidfarah2003 Oct 13, 2026
97be9a6
revert: drop the leftovers of the removed environment packages
davidfarah2003 Oct 13, 2026
0c1c75f
fix(manager): read the cotal config once per spawn
davidfarah2003 Oct 13, 2026
1617637
fix(connector-opencode): drive pending work when a 2.x turn ends (#3871)
davidfarah2003 Oct 13, 2026
bb3e418
revert: move the environment provisioning packages out of the public …
davidfarah2003 Oct 13, 2026
f2b3553
fix(manager): shred a delegated seat's secret family at its retiremen…
davidfarah2003 Oct 13, 2026
aa1e223
fix(cli): report a partial deploy and exit 1 when a spawn -f launch f…
davidfarah2003 Oct 13, 2026
eee63e8
chore(release): version packages
github-actions[bot] Oct 13, 2026
8774904
chore(release): version packages 0.81.0 (#3854)
davidfarah2003 Oct 13, 2026
0046cc6
chore(release): version packages
github-actions[bot] Oct 13, 2026
8787548
chore(release): version packages 0.81.1 (#3879)
davidfarah2003 Oct 13, 2026
c428383
fix(connector-opencode): stop the serve on SIGINT or SIGTERM during t…
davidfarah2003 Oct 13, 2026
9a93a58
fix(workspace): throw user-auth connect refusals from connectOrThrow …
davidfarah2003 Oct 13, 2026
d06b27e
fix(runtime): fail a cancelled step at once when its relay withdrawal…
davidfarah2003 Oct 13, 2026
8fd9427
fix(auth): refuse redirects on the manager-service authority request …
davidfarah2003 Oct 13, 2026
ddbe799
fix(cli): exit 1 when a first up boot's control plane does not come u…
davidfarah2003 Oct 13, 2026
fa8f7da
fix(auth): compare a later --idp with the IdP pin after normalizing it
davidfarah2003 Oct 13, 2026
49cb75f
fix(cli): check --server on up -f and spawn -f against the broker.ser…
davidfarah2003 Oct 13, 2026
3ed1942
fix(connector-opencode): record each serve at a path of its own
davidfarah2003 Oct 13, 2026
11690b1
fix(cli): let update reconcile when the selected mesh is stopped (#3899)
davidfarah2003 Oct 14, 2026
136f366
fix(connector-core): keep an activity-only cotal_status off the status
davidfarah2003 Oct 14, 2026
8e5be08
fix(connector-jcode): prove readiness on a deferred mcp_call orientation
davidfarah2003 Oct 14, 2026
2df06bd
fix(cli): start a bare cotal up re-run from the URL its mesh recorded…
davidfarah2003 Oct 14, 2026
a33cd0b
fix(connector-opencode): refuse a 2.x drive once teardown has begun
davidfarah2003 Oct 14, 2026
45c0d12
fix(connector-opencode): settle a 2.x batch only from the execution t…
davidfarah2003 Oct 14, 2026
7c6c109
feat(core): define delegated recovery contracts
davidfarah2003 Oct 14, 2026
49706c4
Merge pull request #3913 from Cotal-AI/work/g3-core-contract-1014-820…
davidfarah2003 Oct 14, 2026
3417a95
perf(connector-claude-code): launch the MCP server with memory-saving…
caffeinum Oct 14, 2026
4f52881
fix(core): validate run admission with the canonical space grammar
davidfarah2003 Oct 15, 2026
6afa12f
feat(connector-claude-code): expose the managed session server (#3921)
davidfarah2003 Oct 15, 2026
77b75c2
chore(release): version packages
github-actions[bot] Oct 15, 2026
8ca93e9
chore(release): version packages (#3885)
davidfarah2003 Oct 15, 2026
44356b7
merge: sync upstream Cotal main into rigel-release (RIG-5440)
rigel-mintaka Oct 15, 2026
e55e685
merge: bring rigel-release (#81, #82) into the upstream sync (RIG-5440)
rigel-mintaka Oct 15, 2026
6959acd
ci: quarantine upstream-red suites on the sync (RIG-5440)
rigel-mintaka Oct 15, 2026
e250157
fix: port omp, zellij and spawn schema to the synced contracts (RIG-5…
rigel-mintaka Oct 15, 2026
c3701c5
fix(zellij): share one deadline across a confirm action's calls (RIG-…
rigel-mintaka Oct 15, 2026
a2f40ed
ci: fix the sync's remaining CI reds (RIG-5440)
rigel-mintaka Oct 15, 2026
26f1631
ci: keep the frozen suite list stable and quarantine four upstream re…
rigel-mintaka Oct 16, 2026
7e76612
ci: restore the docs/design voice exemption for upstream design recor…
rigel-mintaka Oct 16, 2026
0c32bd6
ci: quarantine seven more suites that are red on upstream main (RIG-5…
rigel-mintaka Oct 16, 2026
ffd07e6
ci: quarantine ten more suites that are red on upstream main (RIG-5440)
rigel-mintaka Oct 16, 2026
2c079ce
ci: skip changed-fixture reproof on upstream sync PRs (RIG-5497)
rigel-mintaka Oct 16, 2026
313b7a6
docs: record the fork rule that broken upstream tests are disabled (R…
rigel-mintaka Oct 16, 2026
6f05973
ci: quarantine the flaky upstream jcode permanent-refusal smoke (RIG-…
rigel-mintaka Oct 16, 2026
1a464db
ci: quarantine the flaky upstream remote-ef-accepted-goal smoke (RIG-…
rigel-mintaka Oct 17, 2026
f972208
ci: quarantine eleven upstream suites that flake on pristine main (RI…
rigel-mintaka Oct 17, 2026
f1db329
ci: match the sync PR branch exactly before skipping reproof (RIG-5497)
rigel-mintaka Oct 17, 2026
b0f572f
merge: bring the RIG-4320 custody stack (#69-#76) into the upstream s…
rigel-mintaka Oct 17, 2026
6a08bee
fix(manager): keep Linux pty seats under a custodian after the sync (…
rigel-mintaka Oct 17, 2026
7304d0e
ci: quarantine two upstream smokes the custody contract forbids (RIG-…
rigel-mintaka Oct 17, 2026
68f1371
test(manager): fake the delivery inventory in the custody smokes (RIG…
rigel-mintaka Oct 17, 2026
cbf84bd
fix(manager,seat): restore dropped upstream paths and sync docs to cu…
rigel-mintaka Oct 17, 2026
8adfa45
fix(manager,seat): record restart custody before readiness and prove …
rigel-mintaka Oct 18, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"@cotal-ai/manager",
"@cotal-ai/delivery",
"@cotal-ai/web",
"@cotal-ai/linear",
"@cotal-ai/cmux",
"@cotal-ai/orca",
"@cotal-ai/tmux",
Expand Down
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
{
"name": "cotal",
"description": "Join the Cotal mesh — coordinate with other AI agents as lateral peers (presence, messaging, role requests) over NATS.",
"source": "./extensions/connector-claude-code"
"source": "./claude-plugin/cotal"
},
{
"name": "cotal-skills",
"description": "Cotal-authored Claude Code skills for coordinating agent teams on the mesh (team-topology). Installed and removed independently of the cotal connector.",
"source": "./extensions/connector-claude-code/skills-plugin"
"source": "./claude-plugin/cotal-skills"
}
]
}
4 changes: 4 additions & 0 deletions .github/workflows/attribution.yml
Original file line number Diff line number Diff line change
Expand Up @@ -156,3 +156,7 @@ jobs:
git fetch --no-tags origin "$BASE" "$HEAD"
echo "range $BASE..$HEAD"
node scripts/check-attribution.mjs --range "$BASE..$HEAD" --event "$GITHUB_EVENT_PATH"
# Last, so a PR still waiting for its approval gets every other grade first. It lives in this
# job for the reason the upgrade-section step does: `attribution` is the only required check.
- name: Approval names the head
run: node scripts/review-verdict-gate.mjs --event "$GITHUB_EVENT_PATH"
59 changes: 48 additions & 11 deletions .github/workflows/changesets.yml.disabled
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
version:
if: github.event_name == 'push' || inputs.snapshot == ''
needs: [seat-native-linux-x64, seat-native-linux-arm64]
timeout-minutes: 20
timeout-minutes: 35
runs-on: ubuntu-latest
environment: npm-publish
permissions:
Expand Down Expand Up @@ -166,13 +166,31 @@ jobs:
exit 1
fi

# Cut the GitHub Release ONLY when this push actually published a new version to npm AND the
# full closure gate passed. The gate exits non-zero on a partial publish, an unsettled registry,
# or a version nothing serves, so the Release step runs only after every package in the fixed
# group is verified present at the requested version on the registry.
# Presence is not installability: npm install reads the packument, which can lag the
# per-version endpoint the closure gate reads, so a closed closure can still fail
# `npm i -g cotal-ai@<version>` with ETARGET on a pinned sibling (#1412). Install the version
# from the registry into a scratch prefix and run the binary, polling until a deadline, before
# anything is announced. A version that never installs reds the job and cuts no Release.
- name: Verify the release installs
id: install-gate
if: success() && github.event_name == 'push' && steps.closure-gate.outputs.closure_ok == 'true'
run: |
node scripts/verify-release-installable.mjs "${{ steps.closure-gate.outputs.version }}"
echo "install_ok=true" >> "$GITHUB_OUTPUT"

# Cut the GitHub Release only after the full closure gate passed and that version installed
# from the registry and ran. The closure gate exits non-zero on a partial publish, an unsettled
# registry, or a version nothing serves; the install gate fails when `cotal-ai@<version>` does
# not install and run before its deadline.
# Neither gate can tell which push published that version: a publishing run that ends UNSETTLED,
# or whose install gate fails, leaves the Release to a later push that published nothing. So the
# Release never targets $GITHUB_SHA. It targets the oldest commit on main's first-parent line
# whose bin/package.json carries the version, which is the tree the packages were built from,
# even when the version was reverted and carried again later. It refuses when that commit cannot
# be found or when any part of the history cannot be read (#1820).
- name: Tag and cut the GitHub Release on publish
id: release-step
if: success() && github.event_name == 'push' && steps.closure-gate.outputs.closure_ok == 'true'
if: success() && github.event_name == 'push' && steps.closure-gate.outputs.closure_ok == 'true' && steps.install-gate.outputs.install_ok == 'true'
env:
GH_TOKEN: ${{ secrets.GH_PAT }}
run: |
Expand All @@ -182,8 +200,26 @@ jobs:
echo "Release $tag already exists — nothing to do."
exit 0
fi
# Each read is its own assignment so `bash -e` fails the step on a failed traversal or
# manifest read. Inside `git show | jq` a failed read gives jq empty input and passes as a
# different version.
commits=$(git log --first-parent --reverse --format=%H "$GITHUB_SHA" -- bin/package.json)
target=""
for c in $commits; do
manifest=$(git show "$c:bin/package.json")
carried=$(printf '%s\n' "$manifest" | jq -r .version)
if [ "$carried" = "$version" ]; then
target=$c
break
fi
done
if [ -z "$target" ]; then
echo "Cannot resolve the commit that first carried $version: refusing to cut the Release."
exit 1
fi
echo "Release $tag targets $target, the commit that first carried $version."
notes=$(gh api "repos/$GITHUB_REPOSITORY/releases/generate-notes" \
-f tag_name="$tag" -f target_commitish="$GITHUB_SHA" --jq .body)
-f tag_name="$tag" -f target_commitish="$target" --jq .body)
# The generated notes are merged-PR *titles* only. Prepend the changeset summaries (the actual
# per-change descriptions changesets wrote into the package CHANGELOGs) so a release reads as
# more than a list of one-liners. Best-effort: the package is already published, so a hiccup in
Expand All @@ -195,7 +231,7 @@ jobs:
printf '%s\n' "$notes"
} > "$RUNNER_TEMP/release-notes.md"
gh release create "$tag" \
--target "$GITHUB_SHA" \
--target "$target" \
--title "$tag" \
--latest \
--notes-file "$RUNNER_TEMP/release-notes.md"
Expand All @@ -206,9 +242,10 @@ jobs:
# tarball or a version mismatch reds this job. The probe is a LEAF job: it runs after `version`
# completes, so `gh release create` has already run, and nothing depends on this job. It reds the
# overall workflow but does NOT gate the GitHub Release (which is gated by the closure gate from
# #1502). It validates the SHAPE of cotal-ai's OWN packed artifact (structure, binary presence,
# startup). It does not pack the sibling workspace packages, so their packaging is not exercised,
# and it does not cover registry-side propagation or native-asset loading.
# #1502 and the registry install gate). It validates the SHAPE of cotal-ai's packed artifact
# (structure, binary presence, startup) and each runtime sibling's own tarball entry points. The
# binary still runs against workspace-resolved siblings, and the probe does not cover registry
# propagation or native assets.
install-probe:
if: github.event_name == 'push' || inputs.snapshot == ''
needs: [version]
Expand Down
90 changes: 84 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ on:
push:
branches:
- rigel-release
workflow_dispatch:
inputs:
acquisition:
description: Generate the fixed validator comparison lock for source review only
required: true
type: choice
options: [validators-0155]

# A new push to a PR supersedes the run already going; a merge to rigel-release does not.
#
Expand All @@ -19,7 +26,7 @@ on:
# result of any kind. It happened to 13 of 29 consecutive main runs. `queue: max` is the part that
# actually makes them wait, FIFO, up to 100 deep.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-r2
group: ${{ github.workflow }}-${{ github.ref }}-r2${{ github.event_name == 'workflow_dispatch' && format('-acquire-{0}', github.run_id) || '' }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
# `queue: max` with `cancel-in-progress: true` is a validation error, so this tracks the line
# above: a PR keeps the default single slot and supersedes, rigel-release queues instead of evicting.
Expand All @@ -36,9 +43,12 @@ concurrency:
# bin/smoke/shard.mjs (each smoke still runs in its own broker; shards are on separate
# runners, so no cross-smoke port contention).
# • live — the Linux-only live/lifecycle e2es (real broker + real agents, tmux/cmux/opencode).
# `ci-ok` fans them back in for a single required status.
# `ci-ok` fans them back in to one status. That status is advisory: `attribution` is the only
# required status context on main, so a red `ci-ok` reports and the merge can still proceed. See
# docs/design/upgrade-section-gate.md for why it was not made required.
jobs:
unit:
if: ${{ github.event_name != 'workflow_dispatch' }}
timeout-minutes: 20
runs-on: ubuntu-latest
env:
Expand Down Expand Up @@ -116,6 +126,19 @@ jobs:
run: pnpm smoke:update-concurrency
- name: Unit tests
run: pnpm test
- name: Validator lock acquisition source controls
run: node --test --test-reporter=tap --test-concurrency=1 scripts/ci-validator-lock-acquisition.test.mjs
# Quarantined on the upstream sync: red on pristine upstream main. Still runs so its output stays visible.
- name: Remaining schema direct-engine diagnostic
if: ${{ !cancelled() }}
continue-on-error: true
run: pnpm smoke:schema-remaining15-diagnostic
- name: Remaining schema schemasafe comparison
if: ${{ !cancelled() }}
run: pnpm smoke:schema-remaining15-schemasafe-comparison
- name: Released schemasafe public-error diagnostic
if: ${{ !cancelled() }}
run: pnpm smoke:schema-schemasafe-public-errors
# Layer 3 cells need a delegated cgroup and a distinct agent uid. Root gets both: a system
# scope with Delegate=yes, and a created user. REQUIRE turns any skipped cell into a failure.
# The peer-uid cell runs the custodian as the agent, so every checkout ancestor gets o+x.
Expand All @@ -136,6 +159,7 @@ jobs:
run: pnpm smoke:broker-disclosure

smoke:
if: ${{ github.event_name != 'workflow_dispatch' }}
name: smoke (shard ${{ matrix.shard }}/4)
# Shard 2/4 runs ~39-40 min, so the previous 40 left a median margin of 15 seconds and
# cancelled healthy runs (#1220 died at 40m18s). Sized at ~1.5x the slowest observed
Expand All @@ -148,6 +172,12 @@ jobs:
shard: [0, 1, 2, 3]
steps:
- uses: actions/checkout@v6
with:
# egress-guard-differential resolves the predecessor commit of the egress classifier and
# diffs HEAD's verdicts against it. A depth-1 clone reaches no role-carrying ancestor of
# agui.ts, so the resolver cell fails with "deepen the checkout" and takes shard 0 with
# it. Same reason the unit job pins this.
fetch-depth: 0
- uses: pnpm/action-setup@v6.0.8
with:
standalone: true
Expand Down Expand Up @@ -198,6 +228,7 @@ jobs:
run: /usr/bin/git --no-replace-objects show "$GITHUB_SHA:bin/smoke/verify-shard-inputs.sh" | /usr/bin/bash --noprofile --norc -s -- "$GITHUB_SHA" ${{ matrix.shard }} 4 ci "${{ steps.smoke-tools.outputs.node_path }}" "${{ steps.smoke-tools.outputs.node_target }}" "${{ steps.smoke-tools.outputs.node_sha }}" "${{ steps.smoke-tools.outputs.pnpm_path }}" "${{ steps.smoke-tools.outputs.pnpm_target }}" "${{ steps.smoke-tools.outputs.pnpm_sha }}"

live:
if: ${{ github.event_name != 'workflow_dispatch' }}
timeout-minutes: 25
runs-on: ubuntu-latest
steps:
Expand Down Expand Up @@ -238,14 +269,20 @@ jobs:
herdr --version
- name: Build
run: pnpm build
- name: Web console auth
run: pnpm smoke:web-console-auth
- name: Spawn manifest live smoke
run: pnpm smoke:spawn-manifest:live
- name: Cooperative-stop live smoke
run: pnpm smoke:cooperative-stop:live
# Broker-free boundary/preflight guards + the live target-resolution / spawn-from-anywhere /
# readiness / up-stack / up-manifest / ext / dogfood e2es (real broker, real agents).
# readiness / up-manifest / ext / dogfood e2es (real broker, real agents).
- name: Core boundary, mesh preflight & resolution
run: pnpm smoke:core-boundary && pnpm smoke:preflight && pnpm smoke:server-resolution:live && pnpm smoke:spawn-from-anywhere:live && pnpm smoke:spawn-detach:live && pnpm smoke:readiness:live && pnpm smoke:setup-pure:live && pnpm smoke:up-stack:live && pnpm smoke:up-manifest:live && pnpm smoke:ext:live && pnpm smoke:dogfood:live
run: pnpm smoke:core-boundary && pnpm smoke:preflight && pnpm smoke:server-resolution:live && pnpm smoke:spawn-from-anywhere:live && pnpm smoke:spawn-detach:live && pnpm smoke:readiness:live && pnpm smoke:setup-pure:live && pnpm smoke:up-manifest:live && pnpm smoke:ext:live && pnpm smoke:dogfood:live
# Quarantined: upstream asserts an in-process pty seat dies with the manager; fork seats are custodied.
- name: Up-stack live smoke
continue-on-error: true
run: pnpm smoke:up-stack:live
# Own step so a later failure cannot hide whether this suite ran. First CI execution
# of join-external:live passed 19 checks at 2850a5a2e.
- name: Join an external broker
Expand Down Expand Up @@ -287,11 +324,14 @@ jobs:
run: pnpm smoke:cmux
- name: OpenCode cooperative-stop smoke test
run: pnpm smoke:opencode-coop
- name: Transport liveness unit baseline
run: pnpm smoke:transport-liveness

# Native linux-x64 and linux-arm64 peercred.node and pty.node, then one pack on x64
# that assembles BOTH into the tarball the ARM load job consumes unchanged.
# The ARM load job must not rebuild. A queued-never-started job is not a measurement.
seat-native-linux-x64:
if: ${{ github.event_name != 'workflow_dispatch' }}
name: seat native (linux-x64)
timeout-minutes: 15
runs-on: ubuntu-latest
Expand All @@ -315,6 +355,7 @@ jobs:
retention-days: 7

seat-native-linux-arm64:
if: ${{ github.event_name != 'workflow_dispatch' }}
name: seat native (linux-arm64)
timeout-minutes: 15
runs-on: ubuntu-24.04-arm
Expand All @@ -338,6 +379,7 @@ jobs:
retention-days: 7

seat-pack:
if: ${{ github.event_name != 'workflow_dispatch' }}
name: seat pack (assembled)
timeout-minutes: 20
needs: [seat-native-linux-x64, seat-native-linux-arm64]
Expand Down Expand Up @@ -374,6 +416,7 @@ jobs:
retention-days: 7

seat-linux-arm64:
if: ${{ github.event_name != 'workflow_dispatch' }}
name: seat load (linux-arm64, same artifact)
timeout-minutes: 15
needs: [seat-pack]
Expand Down Expand Up @@ -457,12 +500,15 @@ jobs:
run: node src/packages/seat/smoke/fixtures/pinned-load.mjs "${RUNNER_TEMP}/seat-prefix/node_modules/@cotal-ai/seat"

ci-ok:
# Single required status. It owns the explicit live diagnosis too: adding a separate
# One aggregate status, advisory on main: no ruleset requires it, and `attribution` is the only
# required context. A ruleset that did require it would have to name the check run
# `ci-ok (live outcome classified)`, since a context spelled `ci-ok` matches nothing.
# It owns the explicit live diagnosis too: adding a separate
# always-running dependent job was measured on PR #1043 and left a superseded run queued
# through TWO later runner jobs, which held the replacement run behind it. ARM validation
# jobs may sit on ci-ok's needs as long as they are not always-running aggregates.
name: ci-ok (live outcome classified)
if: always()
if: ${{ always() && github.event_name != 'workflow_dispatch' }}
needs: [unit, smoke, live, seat-pack, seat-linux-arm64]
runs-on: ubuntu-latest
permissions:
Expand Down Expand Up @@ -492,3 +538,35 @@ jobs:
run: |
echo "unit=${{ needs.unit.result }} smoke=${{ needs.smoke.result }} live=${{ needs.live.result }} seat-pack=${{ needs.seat-pack.result }} seat-linux-arm64=${{ needs.seat-linux-arm64.result }}"
[ "${{ needs.unit.result }}" = "success" ] && [ "${{ needs.smoke.result }}" = "success" ] && [ "${{ needs.live.result }}" = "success" ] && [ "${{ needs.seat-pack.result }}" = "success" ] && [ "${{ needs.seat-linux-arm64.result }}" = "success" ]

validator-lock-acquisition:
if: ${{ github.event_name == 'workflow_dispatch' && inputs.acquisition == 'validators-0155' }}
timeout-minutes: 20
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: pnpm/action-setup@v6.0.8
with:
version: 11.28.2
run_install: false
- uses: actions/setup-node@v6
with:
node-version: 22
- name: Generate fixed validator lock for review
env:
ACQUISITION_MODE: ${{ inputs.acquisition }}
run: node scripts/ci-validator-lock-acquisition.mjs
- uses: actions/upload-artifact@v4
with:
name: validator-lock-${{ github.run_id }}-${{ github.run_attempt }}
path: |
${{ runner.temp }}/validator-lock-${{ github.run_id }}-${{ github.run_attempt }}/core-package.json
${{ runner.temp }}/validator-lock-${{ github.run_id }}-${{ github.run_attempt }}/pnpm-lock.yaml
${{ runner.temp }}/validator-lock-${{ github.run_id }}-${{ github.run_attempt }}/source.diff
${{ runner.temp }}/validator-lock-${{ github.run_id }}-${{ github.run_attempt }}/receipt.json
if-no-files-found: error
retention-days: 7
3 changes: 2 additions & 1 deletion .github/workflows/installer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,8 @@ jobs:
"$HOME/.local/bin/cotal" --version

installer-ok:
# One required status to gate on, the same shape ci.yml uses.
# One status that fans the lanes in, the same shape ci.yml uses. Like ci-ok it is advisory on
# main, where `attribution` is the only required context.
if: always()
needs: [lint, matrix, macos]
runs-on: ubuntu-latest
Expand Down
Loading
Loading