Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
355 commits
Select commit Hold shift + click to select a range
920fb84
Merge pull request #4432 from gastownhall/test/product-metrics-single…
julianknutsen Jul 19, 2026
3f2b8aa
Merge pull request #4431 from gastownhall/test/bd-start-idempotence-d…
julianknutsen Jul 19, 2026
4d7b772
Merge pull request #4430 from gastownhall/test/register-reload-event-…
julianknutsen Jul 19, 2026
3a11d0d
Merge pull request #4429 from gastownhall/test/managed-dolt-recovery-…
julianknutsen Jul 19, 2026
0799db9
Merge pull request #4426 from gastownhall/test/mail-journey-crisp
julianknutsen Jul 19, 2026
d82f803
Merge pull request #4423 from gastownhall/test/worktree-consistency-d…
julianknutsen Jul 19, 2026
9369dd7
Merge pull request #4420 from gastownhall/test/concurrent-starter-fas…
julianknutsen Jul 19, 2026
6f0aa5c
Merge pull request #4417 from gastownhall/test/mail-inbox-fast-compos…
julianknutsen Jul 19, 2026
9a99e0e
test(mail): make archive semantics executable (#4350)
julianknutsen Jul 19, 2026
1a18153
fix(runtime/herdr): deliver skill/MCP materialization so pool session…
AJBcoding Jul 19, 2026
09d2559
docs: make TESTING.md the canonical test-authoring policy (#4413)
julianknutsen Jul 19, 2026
e79bb0d
fix(pool): preserve titled workdirs on resume (#4276)
julianknutsen Jul 19, 2026
b780589
Reap orphaned Dolt data dirs in test cleanup (#4351)
quad341 Jul 19, 2026
3399cfc
fix(session): restore a reaped handoff-orphan's pool route so complet…
brandonmartin Jul 19, 2026
c8a70b4
feat(dashboard): structured transcript rendering + hardened structure…
julianknutsen Jul 19, 2026
04c20cb
[saitoc-fx5kqf] ◐ saitoc-fx5kqf [BUG] · Bug: gc doctor hangs after sk…
tudorsaitoc Jul 19, 2026
0f54536
Bound docgen schema scan to tracked directories (#4377)
quad341 Jul 19, 2026
3016adc
fix(tmux): preserve color in interactive agents (#4381)
A3Ackerman Jul 19, 2026
4169ba4
fix(doctor): bound each check with a per-check timeout (#3448)
Wldc4rd Jul 19, 2026
1fe99ee
fix(doctor): warn when beads-store silently fell back to BdStore (#42…
rjgeng Jul 19, 2026
beecbcf
test: reuse the test CLI for fresh managed-city setup (#4445)
julianknutsen Jul 19, 2026
142e525
test: exercise pool-death reconciliation directly (#4446)
julianknutsen Jul 19, 2026
462a5f7
feat(hook): publish per-claim run-map for proxy run_id stamping (+dir…
julianknutsen Jul 19, 2026
c120cd1
test: isolate root-store verification retries (#4451)
julianknutsen Jul 19, 2026
6632416
test: isolate external issues-table scan policy (#4455)
julianknutsen Jul 19, 2026
1a4d534
fix(runproj): resolve pool-step sessions — stamp gc.session_id at cla…
julianknutsen Jul 19, 2026
a38c914
test: reuse normal binary for product-metrics guard (#4456)
julianknutsen Jul 19, 2026
2b9a7d9
test: make concurrent starter proof deterministic (#4457)
julianknutsen Jul 19, 2026
1c5c768
test: isolate doctor import-state edges (#4458)
julianknutsen Jul 19, 2026
1888338
perf(beads): replace repairIDDefault's INFORMATION_SCHEMA catalog sca…
atbrace Jul 19, 2026
f9f07be
fix: detach timeout watchdog streams (#4462)
julianknutsen Jul 19, 2026
2f57a36
test: isolate controller loop scheduler edges (#4463)
julianknutsen Jul 19, 2026
ab8bb6a
fix(sling): tolerate unrelated workflow store scan failures (#4409)
julianknutsen Jul 19, 2026
0fb9be6
test: isolate managed Dolt readiness retry (#4465)
julianknutsen Jul 19, 2026
bb13748
test: remove duplicate mail journey (#4466)
julianknutsen Jul 19, 2026
83bf03b
Extract warmup runner into internal package (#4461)
quad341 Jul 19, 2026
fff345d
test: exercise shell config writer without managed startup (#4467)
julianknutsen Jul 19, 2026
5b433ac
fix(reconciler): confirm-dead the drain-ack async stop before freeing…
remuscazacu Jul 19, 2026
ecdef1f
Wrap session lifecycle terminal writes in Store.Tx (#4232)
quad341 Jul 19, 2026
b240857
perf(beads): push created-order sorts to the backing search; bound th…
remuscazacu Jul 19, 2026
10eb892
test(integration): replace live contract polling with events (#4369)
julianknutsen Jul 19, 2026
9ddbea5
fix(hook): reject claims from stale sessions (#4291)
duncan4123 Jul 19, 2026
fd8bddf
Consolidate tmux test socket cleanup (#4254)
quad341 Jul 20, 2026
39a9af5
fix(gc): drain the --since window on gc events instead of capping at …
jacobhausler Jul 20, 2026
a44f940
test(gc): pin contextual dispatcher resolution (#4471)
julianknutsen Jul 20, 2026
02e76c5
fix(pool): exclude draining sessions from reusable slot selection (#4…
JarrodJ83 Jul 20, 2026
39d0083
test: fail fast on managed Dolt rebind recovery (#4470)
julianknutsen Jul 20, 2026
e1cc412
test: make wait-list scoped lookup proofs constant time (#4472)
julianknutsen Jul 20, 2026
bbbdb45
fix(handoff): preserve shared tmux server (#4393)
A3Ackerman Jul 20, 2026
2861a4f
test: make Docker cancellation proof event-triggered (#4474)
julianknutsen Jul 20, 2026
6c11fa4
test: retire duplicate Phase-2 Claude transport proof (#4475)
julianknutsen Jul 20, 2026
f8b5135
fix(usage): sweep end-of-interval model usage so token/min and burn/h…
julianknutsen Jul 19, 2026
ae71467
docs: prepare v1.4.0 RC notes
Jul 20, 2026
477e9d1
test: make hook stdin drain portable
Jul 20, 2026
63e7fc6
fix(cmd/gc): gc hook --claim never adopts mail message beads as work …
rjgeng Jul 20, 2026
95a4bb9
fix(cmd/gc): gc init --skip-provider-readiness accepts any builtin pr…
rjgeng Jul 20, 2026
e3439b2
test(runtime): contract exec production composition (#4407)
julianknutsen Jul 20, 2026
441e477
Add gc doctor check for hold label routing drift (#4408)
quad341 Jul 20, 2026
b01fdd1
fix(pack): pin recursive commands to invoking gc (#4410)
boshu2 Jul 20, 2026
54545d7
fix(cli): skip pack discovery for private helpers (#4411)
boshu2 Jul 20, 2026
ad11cb9
fix(packs): avoid full bundled cache walk on reload (#4412)
boshu2 Jul 20, 2026
b102d83
feat(hook): expose workflow context in claim results (#4415)
sarendipitee Jul 20, 2026
b958e94
fix(prompt): bind {{.Rig}} in prompt template data (#4416)
elmpp Jul 20, 2026
c25d7d4
fix(gc): correct --after handling in gc events (list reject + watch-r…
jacobhausler Jul 20, 2026
647ad0e
Merge remote-tracking branch 'origin/main' into release/v1.4.0
Jul 20, 2026
047d67d
fix(scripts): support macOS Bash 3 in rebase resolver
Jul 20, 2026
f2e6c28
test(api): canonicalize transcript path aliases
Jul 20, 2026
997269b
fix(config): exclude .git dir from remote cache fingerprint to fix me…
jacobhausler Jul 20, 2026
83f30c7
test(metrics): bound deep spool fixture paths
Jul 20, 2026
6dafcb0
test(acceptance): stabilize pack cache eviction
Jul 20, 2026
6b0eb0d
fix(mail): reply to a removed message is not-found, not a resend (#4434)
julianknutsen Jul 20, 2026
2b4724d
fix(swarm): claim routed work through hook
Jul 20, 2026
eff8eb8
fix(pool): keep ordinary work in integration root
Jul 20, 2026
5131e3b
fix(runtime/tmux): record poke on the nudge path so gc's own nudges d…
wbern Jul 20, 2026
a53443f
fix(usage): sweep end-of-interval model usage so tokens/min and burn/…
julianknutsen Jul 20, 2026
146abca
fix(config): store post-validation fingerprint in remote cache memoiz…
jacobhausler Jul 20, 2026
2d7b84f
test: make runmap fixtures permission-stable (#4493)
julianknutsen Jul 21, 2026
409bbf1
fix(beads): stop `rig set-endpoint --inherit` stamping a per-rig dolt…
elmpp Jul 21, 2026
aff460d
fix(dolt): preserve evidence when compact quarantines a database (#4453)
swedeinasia-flow Jul 21, 2026
c6c1b1a
Generalize pool idle-nudge pacing into a shared backstop engine (#4459)
quad341 Jul 21, 2026
f32cbfd
fix(runtime/herdr): deliver both the behavioral prime and the startup…
elmpp Jul 21, 2026
cedabec
fix(status): restore store_health via hydration-free bead counting (#…
swedeinasia-flow Jul 21, 2026
106c1e8
Add PG-auth warmup alert mail producer (#4468)
quad341 Jul 21, 2026
1174945
fix(api): disambiguate supervisor event_cursor "0" — replay vs no-bac…
julianknutsen Jul 21, 2026
88a4387
test(cmd_hook): resolve "true" via LookPath instead of hardcoding /bi…
rjgeng Jul 21, 2026
944d117
fix(ci): prevent stale golangci-lint cache inheritance (#4494)
quad341 Jul 21, 2026
b608d3b
test(tmux-sweep): post-merge #4254 — require PID separator + defer so…
julianknutsen Jul 21, 2026
9d9028e
test: retire duplicate close lookup-limit proof (#4502)
julianknutsen Jul 21, 2026
ce30237
test: reexec tagged product metrics profile (#4505)
julianknutsen Jul 22, 2026
009c481
test: replace managed Dolt cleanup process journey (#4506)
julianknutsen Jul 22, 2026
a627b0e
feat(mail): priority-sort mail preview before the inject clamp (QoS) …
csauer02-personal-user Jul 22, 2026
b42bc79
test: replace duplicate mail acceptance journeys (#4510)
julianknutsen Jul 22, 2026
1fc60dd
fix(beads): skip nested Go modules in the bd-exec boundary walker (#4…
rjgeng Jul 22, 2026
2abd12e
test: avoid redundant cmd/gc integration discovery builds (#4515)
julianknutsen Jul 22, 2026
86cd7fe
test: isolate tmux cleanup diagnostics from command stderr (#4517)
julianknutsen Jul 22, 2026
a99e9aa
fix(hook): run stale-session claim fence before agent resolution (#4478)
julianknutsen Jul 22, 2026
077a221
test: remove runtime tmux discovery builds from PR shards (#4518)
julianknutsen Jul 22, 2026
c2b8018
test: replace real-city mail-check smoke (#4528)
julianknutsen Jul 22, 2026
d382898
Fix raw transcript messages key on empty transcripts (#4529)
quad341 Jul 22, 2026
921b329
test(api): replace structured stream timeout with readiness event (#4…
julianknutsen Jul 22, 2026
519ae45
Add pre-push ownership and staleness guard (#4516)
quad341 Jul 22, 2026
b84b344
test(api): trigger structured promotion without polling (#4531)
julianknutsen Jul 22, 2026
6c11c48
test(gc): virtualize graceful shutdown coordination (#4532)
julianknutsen Jul 22, 2026
49e4cbc
test: assemble doctor rig checks directly (#4533)
julianknutsen Jul 22, 2026
c2538d4
test: keep supervisor scope proof off kill fallback (#4535)
julianknutsen Jul 22, 2026
a9af775
test: accelerate schema exhaustion retries (#4537)
julianknutsen Jul 22, 2026
6ba5a29
test: isolate runtime preflight store opening (#4541)
julianknutsen Jul 22, 2026
34ad80c
test: observe managed Dolt exit after kill (#4544)
julianknutsen Jul 22, 2026
8965654
test: factor product metrics lifecycle matrix (#4546)
julianknutsen Jul 22, 2026
1c06a16
test: factor eager-lazy control matrix (#4550)
julianknutsen Jul 22, 2026
98c30c2
test: use conformance double for project identity (#4556)
julianknutsen Jul 22, 2026
4834bf5
revert(rc): defer out-of-scope Swarm claim change
Jul 22, 2026
c818c7c
docs(rc): correct v1.4 release claims
Jul 22, 2026
15f976e
Fix bounded self-rebase force-with-lease on restricted fetch refspecs…
quad341 Jul 22, 2026
7001f67
test: replace duplicate managed Dolt recovery journeys (#4558)
julianknutsen Jul 22, 2026
d6eaa77
test: recognize dynamic force-with-lease wiring
julianknutsen Jul 22, 2026
609bf64
Merge pull request #4560 from gastownhall/fix/push-ownership-dynamic-…
julianknutsen Jul 22, 2026
32d68e0
test: virtualize nudge enqueue budget (#4559)
julianknutsen Jul 22, 2026
adc03f1
feat(beads): narrow MetadataCASWriter on NativeDoltStore (value-CAS o…
csauer02-personal-user Jul 22, 2026
e9e3adf
test: retire duplicate managed deferred lifecycle journey (#4564)
julianknutsen Jul 22, 2026
016ee4f
test: preserve Worker Core report output through cmd/gc TestMain (#4567)
julianknutsen Jul 22, 2026
cdb1b42
test: share Worker Core phase-2 builds (#4568)
julianknutsen Jul 22, 2026
1d24deb
test(policy): enforce exact tmux resource ownership (#4571)
julianknutsen Jul 22, 2026
2faba04
test(policy): classify typed listener resources (#4573)
julianknutsen Jul 22, 2026
7ff40fe
fix(dashboard): sample system health cross-platform
julianknutsen Jul 21, 2026
7b63a79
fix(dashboard): recover attention reads across city startup
julianknutsen Jul 21, 2026
236fa6f
fix(dashboard): detach load sampling from requests
julianknutsen Jul 21, 2026
c77b6bb
fix(dashboard): abort obsolete attention requests
julianknutsen Jul 21, 2026
0444b3d
chore(deps): tidy module checksums
julianknutsen Jul 21, 2026
edef2a8
fix(dashboard): expose per-metric health availability (#4356)
julianknutsen Jul 22, 2026
e676a9b
test(dashboard): cover cross-city attention remount (#4354)
julianknutsen Jul 22, 2026
4661022
test(dashboard): cover zero memory denominator (#4356)
julianknutsen Jul 22, 2026
f11b17e
fix(rc): harden pool work records and metrics gates
julianknutsen Jul 22, 2026
34ce6a6
test(pool): model reusable slot as asleep
julianknutsen Jul 22, 2026
f00a44e
fix(hook): avoid fuzzy session updates after claim (#4361)
julianknutsen Jul 22, 2026
12cf5cd
test(docker): use process-safe prompt deadline
julianknutsen Jul 22, 2026
390b1a3
test(rc): preserve Tier C pack compatibility
julianknutsen Jul 22, 2026
c4a0c65
fix: rebuild container tools with patched grpc
Jul 22, 2026
17b2bf9
fix: clear remaining container image vulnerabilities
Jul 22, 2026
969b55b
fix(container-scan): verify rebuilt gh/dolt embed patched grpc; drop …
julianknutsen Jul 22, 2026
7e6ad17
fix: clear container image vulnerability gate (#4563)
julianknutsen Jul 22, 2026
d32e4b3
feat(productmetrics): derive build-kind + version from an injectable …
julianknutsen Jul 21, 2026
3928f31
feat(productmetrics): seat the approved signed-pause kill-switch key
julianknutsen Jul 21, 2026
c10cb00
feat(productmetrics): compile production notice + let every build emit
julianknutsen Jul 22, 2026
b748a27
feat(productmetrics): activate gc command-usage telemetry
julianknutsen Jul 22, 2026
4cbdde9
docs(rc): record integrated blockers and command metrics
Jul 22, 2026
45d73c5
fix(runproj): clamp step/stage/lane liveness when the run root is ter…
julianknutsen Jul 23, 2026
9161c18
test: make runmap fixtures permission-stable (#4493)
julianknutsen Jul 21, 2026
d2fdea6
test(productmetrics): stabilize trusted-home fixture
Jul 23, 2026
575a6b1
fix(beads): make created timestamps cursor-stable
Jul 23, 2026
16a4bb4
Fix raw transcript messages key on empty transcripts (#4529)
quad341 Jul 22, 2026
b815988
fix: canonicalize controller socket paths
Jul 23, 2026
21876aa
fix: re-nudge warm pool slots for routed work
Jul 23, 2026
6ebe078
fix(api): preserve canonical env for managed sessions (#4577)
julianknutsen Jul 23, 2026
63f343b
fix(config): bind the Gas City pack as gc (#4508)
sarendipitee Jul 23, 2026
7c0cf3d
Harden Dashboard SPA Playwright Chromium install against cold-cache t…
quad341 Jul 23, 2026
e55dc05
fix: preserve managed Dolt mirror during restart
Jul 23, 2026
207775a
docs: restore pinned tutorial RC steps
Jul 23, 2026
a61d1b4
fix(runtime): unblock compact Codex startup dialogs (#4509)
sarendipitee Jul 23, 2026
3146724
fix: retain managed Dolt port during scope normalization
Jul 23, 2026
5e7bd5a
fix(runtime/herdr): derive singleton liveness from herdr agent-status…
jeffora Jul 23, 2026
960919e
fix: retry native metadata serialization conflicts
Jul 23, 2026
146862f
fix(init): stop init erasing the bound workspace prefix in .gc/site.t…
zook-bot Jul 23, 2026
f724b01
fix: resolve symlinks in city discovery and store scope root (native-…
kaushikNaarayan Jul 23, 2026
d06ee17
test: normalize shipped commit identity in tier C
Jul 23, 2026
d369e78
fix(config): hint the bare local name when a pack patch targets a qua…
rjgeng Jul 23, 2026
c2ea121
fix(packman): walk local path-source packs' own transitive remote imp…
rjgeng Jul 23, 2026
318b268
fix(config): warn when a pack's agent_defaults never reaches its own …
rjgeng Jul 23, 2026
3e7e5b0
fix(cmd/gc): only retarget engine-generated PreStart entries, not use…
rjgeng Jul 23, 2026
c43feb6
fix(orders/nudge-on-route): match flat bead.updated payload so routed…
jacobhausler Jul 23, 2026
c4efeaa
fix(orders): give a never-run cron order one bounded catch-up chance …
rjgeng Jul 23, 2026
292d783
fix(doctor): rig-pack-coverage recognizes same-name local pack replac…
rjgeng Jul 23, 2026
741a2d9
feat(orders): notify the addressee on human-gate creation + re-nudge …
csauer02-personal-user Jul 23, 2026
1dbf073
fix(doctor): CustomTypesCheck detects+heals config-CSV vs custom_type…
quad341 Jul 23, 2026
bd80828
test(tutorial-goldens): bound running-shell Wait so a leaked stdout f…
Jul 23, 2026
17ced83
fix(sling): warn when --on/default-formula attach drops the target be…
rjgeng Jul 23, 2026
7239dfc
fix(storehealth): add an absolute-size floor so small cities don't pe…
rjgeng Jul 23, 2026
a38d4c7
fix(config): hint the bare local name when a pack patch targets a qua…
rjgeng Jul 23, 2026
316019f
fix(packman): walk local path-source packs' own transitive remote imp…
rjgeng Jul 23, 2026
e93cdfe
fix(config): warn when a pack's agent_defaults never reaches its own …
rjgeng Jul 23, 2026
d07ae58
docs(changelog): promote Customer Zero upgrade workarounds into Upgra…
Jul 23, 2026
d69fe57
fix(doctor): bd-backup-freshness reads the active backup pipeline's s…
jacobhausler Jul 23, 2026
d5fbb58
perf(cli): skip pack discovery for gc bd (#4565)
wbern Jul 24, 2026
23aa365
test(tutorial-goldens): broadcast shell-wait completion so stop() can…
Jul 24, 2026
97e1cb5
test(policy): ratchet listener-owning helpers (#4599)
julianknutsen Jul 24, 2026
33cf706
docs: record the testing efficiency operating workflow (#4600)
julianknutsen Jul 24, 2026
c72a6f9
fix(beads): skip nudge beads in cache ready projection (#4575)
jm2 Jul 24, 2026
054cb48
fix(bd): warn when a set GC_RIG is unresolvable instead of silently i…
jacobhausler Jul 24, 2026
bac2886
fix(cmd/gc): materialize newly-added skills on every applied config r…
rjgeng Jul 24, 2026
89c9622
fix(config): extract binary name from provider command before PATH ch…
GEMISIS Jul 24, 2026
a666729
Fix push guard parsing for nested bead IDs (#4604)
quad341 Jul 24, 2026
80e5166
docs: add missing trailing periods to bullet items in CONTRIBUTING.md…
amir-rezaei Jul 24, 2026
a7297c5
chore: release v1.4.0
Jul 24, 2026
7682682
Merge release/v1.4.0 into main
Jul 24, 2026
1f5d6b5
Merge pull request #4609 from gastownhall/merge/release-v1.4.0-to-main
julianknutsen Jul 24, 2026
bd7c9da
feat(session): graceful pre_start cancellation + opt-in activity-awar…
eudaimos Jul 24, 2026
b629452
Resolve full dotted bead IDs in push guard branches (#4617)
quad341 Jul 25, 2026
4873ef3
fix(usage): sweep keyless codex sessions by worktree cwd so graph.v2 …
julianknutsen Jul 25, 2026
bbdc256
feat(usage): rolling last_24h aggregate so the cockpit keeps token da…
julianknutsen Jul 25, 2026
f4a045f
fix(cockpit): keep run-ring text centered inside the circle (#4629)
julianknutsen Jul 25, 2026
00cc930
test(cmd/gc): pin the real HOME for non-delegated supervisor-start te…
quad341 Jul 25, 2026
d053311
fix(beads): don't treat indefinitely status-deferred beads as ready (…
quad341 Jul 25, 2026
0f9781c
fix(cmd/gc): isolate provider-factory test from ambient city discover…
quad341 Jul 25, 2026
1563e1c
fix(cmd/gc): use lockedBuffer for stdout/stderr in controller tests (…
quad341 Jul 25, 2026
65b39c2
fix(test): stabilize TestControllerReloadCommandReloadsConfigImmediat…
quad341 Jul 25, 2026
49f8c28
fix(test): stabilize TestCmdStopForceDelegatesImmediateControllerStop…
quad341 Jul 25, 2026
c34b789
test(cmd/gc): replace fixed test deadlines with one shared hang budge…
quad341 Jul 25, 2026
4d639bf
test(cmd/gc): derive hangBudget from testutil.GoroutineRaceTimeout (#…
quad341 Jul 25, 2026
2a91cd2
test(cmd/gc): make the contextual-errors provider test hermetic too (…
quad341 Jul 25, 2026
5dfb708
Skip session scaffolds in doc coverage census (#4606)
quad341 Jul 25, 2026
28e122f
Fix pool named-session wake ambiguity (#3955)
quad341 Jul 25, 2026
032c1fb
Centralize gc.routed_to routing identity (#3963)
quad341 Jul 25, 2026
184b72a
feat(gc): re-land DoltMode:server in ConfigState constructors (ga-yqn…
quad341 Jul 25, 2026
1a1a954
Add clone-local Store metadata (#4367)
quad341 Jul 25, 2026
2c60d84
fix(gc): make pinned session restart requests fail loud (#4476)
quad341 Jul 25, 2026
17130b3
Normalize routed work instance names in demand matching (#4596)
quad341 Jul 25, 2026
738f447
Normalize routed work instance names in assigned-work reachability (#…
quad341 Jul 25, 2026
fd63422
feat(gc): add fail-closed worktree liveness gate and reap dry-run mod…
quad341 Jul 25, 2026
5c0de06
Write stale markers for dirty agent-home worktrees (#4601)
quad341 Jul 25, 2026
c967f1e
Exclude session scaffolds from doc coverage census (#4620)
quad341 Jul 25, 2026
660b791
fix(dolt): skip the compaction remote phase for .no-sync databases (#…
quad341 Jul 25, 2026
2b265f7
Reject multi-line inline gc sling text (#4622)
quad341 Jul 25, 2026
c1c2c20
feat(dashboard): remove the run-diff tab, keep the session transcript…
julianknutsen Jul 25, 2026
2f64137
Add context-cancelable filtered event readers (#4646)
quad341 Jul 25, 2026
25eb009
fix(githooks): regenerate dashboard TS client on openapi.json-only co…
quad341 Jul 25, 2026
7f5e520
fix: fence reconciler after failed lifecycle heal (#4652)
julianknutsen Jul 25, 2026
8b156c0
feat(gc): add cross-molecule borrow-veto scan and freshness quarantin…
quad341 Jul 25, 2026
7fad13d
fix: fence cache after ambiguous metadata writes (#4654)
julianknutsen Jul 25, 2026
0283140
docs: document concrete claim identity convention (#3864)
quad341 Jul 25, 2026
3f23cc4
docs(core-skills): fix five doc defects reported in #4488 (#4490)
jacobhausler Jul 25, 2026
7889809
fix(rig): resolve scoped registry pack names in include lists (#4658)
julianknutsen Jul 26, 2026
6a14a41
fix(session): startup sweep to release stale configured name claims (…
brandonmartin Jul 26, 2026
8a6809e
fix(runproj): key the blocked lane on bd status, not a step-text subs…
remuscazacu Jul 26, 2026
6ccc7f9
resourcecensus: exclude testing receiver env/CWD helpers (#4660)
quad341 Jul 26, 2026
31ffd5a
Bound cross-invocation concurrency for heavy local test runs (ga-owh2…
quad341 Jul 26, 2026
2c4c43b
test(cmd/gc): migrate cmd_stop_test.go hang guards to shared hang bud…
quad341 Jul 26, 2026
9efcfb5
test(cmd/gc): make config tests use an explicit city path (#4669)
quad341 Jul 26, 2026
1bc6427
fix(gc): bind pool trigger beads with per-slot identity, not stale ba…
quad341 Jul 26, 2026
c954582
feat(gc): surface pack publisher trust in registry commands (#4676)
julianknutsen Jul 26, 2026
bf665ea
Make command tests select their city explicitly (batch 2) (#4671)
quad341 Jul 26, 2026
2425292
fix: share push-gate slots across linked worktrees (#4672)
julianknutsen Jul 26, 2026
55a7de7
test(cmd/gc): make prime, nudge, and formula tests use explicit city …
quad341 Jul 26, 2026
6a594b2
fix: forward push-gate controls from make (#4675)
julianknutsen Jul 26, 2026
08a47d1
Refuse ambient-city Dolt ports in test binaries (#4677)
quad341 Jul 26, 2026
7a739e2
fix(stop): fail closed on ambiguous controller stop (#4667)
julianknutsen Jul 26, 2026
a73649c
fix(hooks): inject auto handoff context at session start (#4678)
wbern Jul 26, 2026
bccc52f
feat(reconciler): recycle claim-holding sessions wedged with no progr…
wbern Jul 26, 2026
daffe03
Merge upstream/main into fork — v1.4.0 resync (352 commits)
bourgois Jul 27, 2026
22a3de4
Merge fork/main into the resync — resolve the census collision
bourgois Jul 27, 2026
63fbdd8
Merge fork/main into the resync — pick up #103 (docs) and #110 (dashb…
bourgois Jul 27, 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
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,11 @@
# assets, and collapse it in review UIs. Drift is still caught by the content-based
# `git diff --quiet -- internal/api/dashboardspa/dist` gate in the Makefile.
internal/api/dashboardspa/dist/** -diff linguist-generated

# The typed Go API client under internal/api/genclient/client_gen.go is emitted by
# oapi-codegen (its header says "DO NOT EDIT") from the OpenAPI spec. Treat it as
# generated output like the SPA bundle above: skip textual diffing and the
# whitespace lint on the machine-generated source, and do not attribute its shape
# to authored complexity. Drift is still caught by content-based build/regeneration
# gates, since a blob-hash change is detected even with -diff.
internal/api/genclient/client_gen.go -diff linguist-generated
23 changes: 18 additions & 5 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ set -euo pipefail
staged_go_files=$(git diff --cached --name-only --diff-filter=ACM -- '*.go' || true)
staged_web_src=$(git diff --cached --name-only --diff-filter=ACM -- 'internal/api/dashboardspa/web/shared/src/' 'internal/api/dashboardspa/web/frontend/src/' 'internal/api/dashboardspa/web/frontend/index.html' 'internal/api/dashboardspa/web/frontend/public/' 'internal/api/dashboardspa/web/package.json' 'internal/api/dashboardspa/web/shared/package.json' 'internal/api/dashboardspa/web/frontend/package.json' 'internal/api/dashboardspa/web/frontend/vite.config.ts' 'internal/api/dashboardspa/web/frontend/tsconfig.json' 'internal/api/dashboardspa/web/shared/tsconfig.json' || true)
staged_docs=$(git diff --cached --name-only --diff-filter=ACM -- '*.md' 'docs/**' 'engdocs/**' 'plans/**' 'specs/**' 'AGENTS.md' 'CONTRIBUTING.md' 'README.md' 'TESTING.md' || true)
staged_spec=$(git diff --cached --name-only --diff-filter=ACM -- 'internal/api/openapi.json' || true)

if [ -z "$staged_go_files" ] && [ -z "$staged_web_src" ] && [ -z "$staged_docs" ]; then
if [ -z "$staged_go_files" ] && [ -z "$staged_web_src" ] && [ -z "$staged_docs" ] && [ -z "$staged_spec" ]; then
exit 0
fi

Expand Down Expand Up @@ -44,12 +45,24 @@ if [ -n "$staged_docs" ]; then
make check-docs
fi

# Dashboard SPA rebuild: whenever the spec changes OR the SPA source
# changes, regenerate the TS types, typecheck, and rebuild the compiled
# bundle. Guarded on `npm` availability so contributors without Node
# tooling aren't blocked; CI enforces the full regeneration.
# Dashboard SPA rebuild: when internal/api/openapi.json changes, regenerate
# the generated TS API client from the new spec and stage it. When the spec
# OR the SPA source changes, typecheck and rebuild the compiled bundle.
# Guarded on `npm` availability so contributors without Node tooling aren't
# blocked; CI enforces the full regeneration via make dashboard-ci.
if command -v npm >/dev/null 2>&1; then
# Re-read the index rather than reusing the pre-hook snapshot: the Go
# block above runs `go run ./cmd/genspec` and stages the regenerated
# internal/api/openapi.json, so a Go-only commit that moves the API
# surface only shows up here (#4627, #4607).
spec_changed=$(git diff --cached --name-only --diff-filter=ACM -- 'internal/api/openapi.json' || true)
if [ -n "$spec_changed" ]; then
# Regenerate BEFORE typecheck/build below: a client that no longer
# matches the new spec must fail typecheck immediately instead of
# silently building/committing a stale client (#4627, #4607).
(cd internal/api/dashboardspa/web && npm ci --silent && npm run generate:client)
git add internal/api/dashboardspa/web/shared/src/generated/gc-supervisor-client
fi
if [ -n "$spec_changed" ] || [ -n "$staged_web_src" ]; then
# Typecheck BEFORE build: vite's build transpiles TS to JS and
# silently ignores type errors. The Makefile target also runs the
Expand Down
19 changes: 18 additions & 1 deletion .githooks/pre-push
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@ set -euo pipefail
zero="0000000000000000000000000000000000000000"

go_changed=0
any_non_deletion=0
while read -r _local_ref local_sha _remote_ref remote_sha; do
# Branch deletion — nothing to test.
# Branch deletion — nothing to test, nothing to guard.
if [ "$local_sha" = "$zero" ]; then
continue
fi
any_non_deletion=1
# New remote branch: no cheap base to diff against — run the suite.
if [ "$remote_sha" = "$zero" ]; then
go_changed=1
Expand All @@ -29,6 +31,21 @@ while read -r _local_ref local_sha _remote_ref remote_sha; do
fi
done

# Bead ownership/staleness guard (ga-fip9ps.1): re-checks bd claim state
# immediately before this push leaves the machine, once per invocation
# (not per ref) regardless of whether Go sources changed. A mayor ruling
# (reassign/close/hold/reroute) that landed after this push was queued
# must not be allowed to clobber a branch another agent has since taken
# over. Bypass: `git push --no-verify`.
if [ "$any_non_deletion" -eq 1 ]; then
repo_root="$(git rev-parse --show-toplevel)"
# shellcheck source=../scripts/push-ownership-guard.sh disable=SC1091
. "$repo_root/scripts/push-ownership-guard.sh"
if ! assert_bead_still_claimed; then
exit 1
fi
fi

if [ "$go_changed" -eq 0 ]; then
exit 0
fi
Expand Down
25 changes: 20 additions & 5 deletions .github/requirements/mcp-agent-mail.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@
# publishes current wheel/sdist assets.
mcp-agent-mail @ https://github.com/Dicklesworthstone/mcp_agent_mail/archive/32783f6848bd63c425c4b5004cee3350016635fb.tar.gz

# Security floor: GitPython 3.1.49 has GHSA-mv93-w799-cj2w (HIGH).
# Pinning floor at 3.1.50 to ensure the resolver picks the patched version
# even if mcp-agent-mail's transitive constraint allows older. Drop this
# line once mcp-agent-mail upstream pins GitPython>=3.1.50 itself.
gitpython>=3.1.50
# Security floor: GitPython < 3.1.52 has multiple HIGH-severity command
# injection and path traversal advisories reported by the image gate.
# Pinning the floor ensures the resolver picks the patched version even if
# mcp-agent-mail's transitive constraint allows older. Drop this line once
# mcp-agent-mail upstream pins GitPython>=3.1.52 itself.
gitpython>=3.1.52

# Security floor: Pillow < 12.3.0 has multiple HIGH-severity image parsing
# vulnerabilities reported by the image gate. Drop this line once transitive
# constraints carry the patched version themselves.
pillow>=12.3.0

# Security floor: urllib3 < 2.7.0 has GHSA-mf9v-mfxr-j63j (HIGH,
# decompression-bomb safeguards bypassed in parts of the streaming API)
Expand All @@ -31,6 +37,15 @@ litellm>=1.84.0
# authlib's transitive constraint carries the patched version itself.
joserfc>=1.6.8

# Security floor: CVE-2026-52869 + CVE-2026-52870 (HIGH, fixed 1.27.2 — HTTP
# transports serve session requests without verifying the authenticated
# session, and experimental task handlers are reachable by any client) and
# CVE-2026-59950 (HIGH, fixed 1.28.1 — WebSocket transport lacks Host/Origin
# validation) in the mcp Python SDK < 1.28.1. mcp arrives transitively via
# fastmcp-slim (mcp<2.0,>=1.24.0); floor at 1.28.1 to clear all three. Drop
# once fastmcp-slim's transitive constraint carries the patched version itself.
mcp>=1.28.1

# Authlib and FastMCP security floors live in
# .github/requirements/mcp-agent-mail.overrides.txt because mcp-agent-mail
# v0.3.2 still caps Authlib below the fixed release.
Loading
Loading