Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1220 commits
Select commit Hold shift + click to select a range
e1fd435
fix: address review feedback on sandbox image caching
ralphbean Jun 5, 2026
184ec47
Merge pull request #1918 from fullsend-ai/chore/1916-mint-token-scope…
ralphbean Jun 5, 2026
7a71981
docs: allow minor annotations on accepted ADRs
ralphbean Jun 5, 2026
3d659e3
chore: add .playwright-mcp to .gitignore
ralphbean Jun 5, 2026
b376cab
chore(skills): update cutting-releases for fullsend-ai @main switch
ralphbean Jun 5, 2026
9e42931
chore(skills): address review feedback on post-flight doc
ralphbean Jun 5, 2026
ca1dcc6
chore(mint): log app_id and installation_id in minted line
ralphbean Jun 5, 2026
eb5dc3e
fix(workflows): use fully-qualified paths in reusable-dispatch stage …
waynesun09 Jun 6, 2026
ee04a59
Merge pull request #1971 from fullsend-ai/fix-per-repo-dispatch-paths
waynesun09 Jun 6, 2026
7a7c8eb
feat: add transitive dependency resolution to URL resolver (ADR-0038 …
ggallen Jun 6, 2026
76d8088
Merge pull request #1539 from fullsend-ai/agent/1532-fix-fork-check-t…
ralphbean Jun 6, 2026
4b14550
feat(workflows): add wip_limit input to prioritize scheduler
ralphbean Jun 6, 2026
93be032
Merge pull request #1967 from fullsend-ai/chore/gitignore-playwright-mcp
ralphbean Jun 6, 2026
cb18f31
docs: align ADR immutability language across all docs
ralphbean Jun 6, 2026
969292a
fix(#1946): add YAML document start marker to shim workflow template
Jun 5, 2026
f1a8d69
fix: add YAML document start marker to all scaffold YAML files
Jun 5, 2026
55adf48
fix(scaffold): use embedded FS in YAML document-start test
ralphbean Jun 7, 2026
7a09740
ci(e2e): capture repo-maintenance debug info on unenrollment failure
ralphbean Jun 5, 2026
665d26c
fix(#1960): include disabled repos in repo-maintenance token scope
ralphbean Jun 5, 2026
cfcbae9
fix(#1960): simplify yq query and improve e2e failure diagnostics
ralphbean Jun 6, 2026
e9ec1f2
fix(e2e): use correct GitHub Actions annotation syntax for file param…
ralphbean Jun 7, 2026
64170dc
Merge pull request #1962 from fullsend-ai/ci/e2e-unenroll-debug-logs
ralphbean Jun 7, 2026
fded4f2
fix(scaffold): bump dispatch.yml max-lines for document-start marker
ralphbean Jun 7, 2026
9ea038f
Merge pull request #1947 from fullsend-ai/agent/1946-add-yaml-doc-sta…
ralphbean Jun 7, 2026
5383e1f
fix(#1958): align merge-base fallback with post-code.sh
ralphbean Jun 7, 2026
6aef818
ci(e2e): always report status on PRs and merge queue
ralphbean Jun 7, 2026
53df603
fix(#1344): update Go version in code agent sandbox to 1.26.0
fullsend-ai-coder[bot] Jun 7, 2026
71ea20d
fix(sandbox): bump gopls from 0.18.1 to 0.22.0 for Go 1.26 compat
ralphbean Jun 7, 2026
d719299
fix(skills): use tag name as subject when no custom title
rh-hemartin Jun 5, 2026
c67eae0
fix(cli): open installation settings URL on uninstall
rh-hemartin May 27, 2026
63cc119
fix: show exec error when validation script fails to run
May 20, 2026
724e5e0
test: add unit tests for validation failure message fallback (#1238)
May 26, 2026
242dc4f
fix(cli): wait for user confirmation after each app uninstall (#323)
rh-hemartin May 27, 2026
8ea9880
fix(cli): rename section header to "App uninstall"
rh-hemartin May 27, 2026
6534fd3
fix(cli): verify apps were uninstalled after user confirmation
rh-hemartin May 27, 2026
eb3eff5
fix(cli): inject stdin into runUninstall for testability
rh-hemartin May 27, 2026
3a8a7ba
fix(cli): warn when app installation list cannot be verified
rh-hemartin May 27, 2026
07f902f
docs(admin): describe interactive app uninstall and verification step
rh-hemartin May 27, 2026
648ea47
feat(web): add landing page, move doc graph to /graph.html
rh-hemartin Jun 5, 2026
efbd31c
Merge pull request #1238 from fullsend-ai/fullsend/code/issue-1236
rh-hemartin Jun 8, 2026
0a72724
Merge pull request #1239 from fullsend-ai/fix/1237-cutting-releases-b…
rh-hemartin Jun 8, 2026
390e8e8
Merge pull request #1468 from fullsend-ai/fix/1408-retro-debounce-con…
rh-hemartin Jun 8, 2026
2ef42dd
Merge pull request #1531 from fullsend-ai/agent/1527-review-dispatch-…
rh-hemartin Jun 8, 2026
be348d5
Merge pull request #1573 from fullsend-ai/fix/uninstall-installation-url
rh-hemartin Jun 8, 2026
b8c548d
feat(cli): tee stream-json output to iteration artifact
rh-hemartin May 27, 2026
9799475
test(cli): add unit tests for openTeeReader
rh-hemartin Jun 4, 2026
65d752d
fix(#1625): exclude agent working directories from git tracking
May 28, 2026
691782c
fix: actually remove agent artifacts from commit in post-code.sh (#1627)
Jun 4, 2026
f0cc17c
fix(#1640): fall back to /app endpoint for bot user detection
May 28, 2026
b54eb30
Merge pull request #1593 from fullsend-ai/feat/tee-stream-json-output
rh-hemartin Jun 8, 2026
20ca6d5
Merge pull request #1627 from fullsend-ai/agent/1625-exclude-agent-wo…
rh-hemartin Jun 8, 2026
12e6c21
Merge pull request #1905 from fullsend-ai/fix/sandbox-go-ownership
rh-hemartin Jun 8, 2026
2ab3063
Merge pull request #1644 from fullsend-ai/agent/1640-fix-bot-user-det…
rh-hemartin Jun 8, 2026
ca9bfae
fix(#2003): use correct pagination pattern for HUMAN_REVIEW_COUNT
fullsend-ai-coder[bot] Jun 8, 2026
e281f3a
Merge pull request #2005 from fullsend-ai/agent/2003-fix-paginate-jq-…
rh-hemartin Jun 8, 2026
f8113e7
fix(#2013): use <a> elements for sidebar doc links instead of <button>
fullsend-ai-coder[bot] Jun 8, 2026
c430d13
feat: move agent status comments into fullsend run
ggallen Jun 5, 2026
8defe0e
fix: address review findings for PR #1871
ggallen Jun 6, 2026
26ea552
Merge pull request #2016 from fullsend-ai/agent/2013-sidebar-links-us…
rh-hemartin Jun 8, 2026
633cf0e
Merge pull request #1936 from fullsend-ai/feat/landing-page
rh-hemartin Jun 8, 2026
4d2eb58
Merge pull request #1871 from ggallen/feat/status-comments-in-run
ggallen Jun 8, 2026
5faa79f
Merge pull request #1923 from ggallen/feat/adr0038-phase2-transitive-…
ggallen Jun 8, 2026
1b49d6c
fix(#2017): unenroll repos during uninstall via repo-maintenance work…
fullsend-ai-coder[bot] Jun 8, 2026
bf35b5b
Merge branch 'main' into feat/prioritize-scheduler-wip-limit-param
ralphbean Jun 8, 2026
865d311
Merge branch 'main' into chore/mint-log-app-and-installation-id
ralphbean Jun 8, 2026
b1fdcec
Merge pull request #1968 from fullsend-ai/chore/update-cutting-releas…
ralphbean Jun 8, 2026
f69b992
Merge pull request #1966 from fullsend-ai/docs/adr-minor-updates-policy
ralphbean Jun 8, 2026
683aef6
Merge pull request #1959 from fullsend-ai/agent/1958-fix-postfix-reba…
ralphbean Jun 8, 2026
db60ac6
fix(#2027): use start comment author instead of GetAuthenticatedUser …
fullsend-ai-coder[bot] Jun 8, 2026
1d133c0
merge: resolve conflict with main in images/code/Containerfile
ralphbean Jun 8, 2026
d735bee
fix: remove trailing blank line in Containerfile
ralphbean Jun 8, 2026
4135fb3
Merge pull request #1990 from fullsend-ai/agent/1344-update-go-sandbo…
ralphbean Jun 8, 2026
e83e1db
Merge pull request #2028 from fullsend-ai/agent/2027-use-start-commen…
ralphbean Jun 8, 2026
62697ee
Merge pull request #1940 from fullsend-ai/agent/1939-fix-agent-protec…
ralphbean Jun 8, 2026
61cca1e
Merge pull request #1970 from fullsend-ai/chore/mint-log-app-and-inst…
ralphbean Jun 8, 2026
4cd6605
Merge pull request #1975 from fullsend-ai/feat/prioritize-scheduler-w…
ralphbean Jun 8, 2026
58cc443
fix(#2032): suppress macOS AppleDouble files in sandbox uploads
fullsend-ai-coder[bot] Jun 8, 2026
ec59225
feat(cli): wire --max-depth and --max-resources flags for transitive …
ggallen Jun 8, 2026
684a806
feat(#989): add GHA workflow command injection to review security dim…
fullsend-ai-coder[bot] Jun 8, 2026
ff65fee
fix: add deprecation notes and inline GHA injection to summary bullet…
fullsend-ai-coder[bot] Jun 8, 2026
efd69a6
Merge pull request #2035 from fullsend-ai/agent/989-add-gha-injection…
ben-alkov Jun 8, 2026
eff07a4
docs: add contributor issue search link
dhshah13 Jun 8, 2026
2de00b7
feat(#898): add security heuristics to review sub-agent
fullsend-ai-coder[bot] Jun 8, 2026
91378a6
fix: add routing categories and exploration budget for security heuri…
fullsend-ai-coder[bot] Jun 8, 2026
527249c
feat(#1797): extract challenger pass into dedicated sub-agent
Jun 2, 2026
4f72309
fix: swap pr-review SKILL.md sections 6d and 6e per human instruction
Jun 3, 2026
9279240
fix: address review feedback on challenger sub-agent PR #1812
Jun 3, 2026
637f693
Merge pull request #1812 from fullsend-ai/agent/1797-challenger-sub-a…
ben-alkov Jun 8, 2026
809dd64
Merge pull request #2038 from fullsend-ai/agent/898-security-subagent…
ben-alkov Jun 8, 2026
b29f50d
feat(#990): require exhaustive variable verification for security claims
fullsend-ai-coder[bot] Jun 8, 2026
e55d31d
fix: remove stub injection defense heading in security sub-agent
fullsend-ai-coder[bot] Jun 8, 2026
c4f2c74
Merge pull request #2039 from fullsend-ai/agent/990-exhaustive-securi…
ben-alkov Jun 8, 2026
96ff7ac
feat(#1727): add bare-word grep pattern guidance for rename PRs
fullsend-ai-coder[bot] Jun 8, 2026
a422faf
fix(web): add SRI to CDN scripts
dhshah13 Jun 8, 2026
aae9db6
Merge pull request #2022 from ggallen/feat/adr0038-phase2-cli-wiring
ggallen Jun 8, 2026
228e036
feat(openshell): upgrade to 0.0.54, fix sandbox integration
rh-hemartin Jun 4, 2026
cd6e791
Merge pull request #1887 from fullsend-ai/feat/openshell-upgrade
rh-hemartin Jun 9, 2026
4a92eaa
chore: update fullsend shim workflow
fullsend-ai-fullsend[bot] Jun 9, 2026
e3f8953
feat(mint): switch PEM secrets to role-only naming
ifireball Jun 8, 2026
0433cbe
Merge pull request #1717 from ifireball/feat/role-only-pem-secrets
ifireball Jun 9, 2026
77771b4
Merge pull request #2052 from fullsend-ai/fullsend/onboard
rh-hemartin Jun 9, 2026
e44bae7
Merge pull request #2040 from fullsend-ai/agent/2032-macos-tar-appled…
rh-hemartin Jun 9, 2026
9b3eff8
docs: add rename-pattern cross-reference in docs-review step 4
fullsend-ai-coder[bot] Jun 9, 2026
52e9b58
Merge pull request #2023 from dhshah13/codex/add-contributing-ready-i…
rh-hemartin Jun 9, 2026
fc5ae35
docs: add design spec for host-side API server ADR
maruiz93 Jun 2, 2026
50a7389
fix(#2045): use PR head SHA in status comment instead of GITHUB_SHA
ggallen Jun 9, 2026
46eb234
Merge pull request #2048 from fullsend-ai/agent/2045-status-comment-sha
ggallen Jun 9, 2026
f4309eb
Add .codecov.yml configuration
eedri Jun 9, 2026
38dba6f
docs(#2067): add dispatch workflow sync guidance to CLAUDE.md
fullsend-ai-coder[bot] Jun 9, 2026
78d638d
docs: add ADR 0045 for forge-portable harness schema
ggallen Jun 9, 2026
9edd903
ci: fix codecov config and add coverage upload
ralphbean Jun 9, 2026
d4f724c
ci: fix shellcheck warning in coverage step
ralphbean Jun 9, 2026
ce6406c
docs(#2071): add public hosted mint URL to mint administration guide
fullsend-ai-coder[bot] Jun 9, 2026
c2ae5b9
docs: add hosted mint URL to github-setup.md prerequisites
fullsend-ai-coder[bot] Jun 9, 2026
f1b7de2
Merge branch 'main' into fix/2018-sri-cdn-scripts
dhshah13 Jun 9, 2026
f138206
docs: add ADR 0046 — host-side API server design for sandboxed agents
maruiz93 Jun 2, 2026
7fda456
feat: add internal/lock package for harness dependency pinning
ggallen Jun 9, 2026
aef228e
Merge pull request #2049 from ggallen/feat/adr0038-phase3-lock-package
ggallen Jun 9, 2026
783a78c
Merge pull request #1988 from fullsend-ai/ci/always-report-required-c…
ralphbean Jun 9, 2026
aaf3d9d
fix(#1541): re-dispatch review after stale-head discard
Jun 3, 2026
b7839b5
feat(#2073): default --mint-url to the hosted public mint
fullsend-ai-coder[bot] Jun 9, 2026
10fa239
chore: consolidate commit message guidance into COMMITS.md
ralphbean Jun 9, 2026
9435c66
Merge pull request #1792 from fullsend-ai/agent/1787-comment-inline-c…
ralphbean Jun 9, 2026
4344264
Merge pull request #2081 from fullsend-ai/agent/2073-default-mint-url
ralphbean Jun 9, 2026
d85dcd1
Merge pull request #1834 from fullsend-ai/agent/1541-stale-head-redis…
ralphbean Jun 9, 2026
30802f5
fix(#1697): add force-override logging and regression tests
May 29, 2026
0fad292
fix: define TAB variable in pre-code-test.sh
ralphbean Jun 9, 2026
ad16131
Merge pull request #1698 from fullsend-ai/agent/1697-force-flag-regre…
ralphbean Jun 9, 2026
0f7b3e7
ci: expand merge-queue skill with monitoring scripts
ralphbean Jun 9, 2026
841d466
build(sandbox): bump tirith from 0.2.12 to 0.3.1
waynesun09 Jun 9, 2026
81f2755
fix(security): close fail-open paths in tirith output parsing
waynesun09 Jun 9, 2026
5cf543b
Merge pull request #2085 from fullsend-ai/bump-tirith-0.3.1
waynesun09 Jun 9, 2026
e720d01
Merge pull request #1848 from ggallen/docs/adr-0045-forge-portable-ha…
ggallen Jun 9, 2026
28e14d1
feat: add fullsend lock CLI and lock-aware resolution (Phase 3 PR 2)
ggallen Jun 9, 2026
a2ff0b4
Merge pull request #2082 from ggallen/feat/adr0038-phase3-lock-cli
ggallen Jun 9, 2026
a95eb33
refactor(cli): share Linux binary acquisition for run and vendoring
ifireball Jun 8, 2026
2f32bdf
fix(cli): restore OIDC HTTP timeout and invalid-hex test
ifireball Jun 8, 2026
ce2c94d
fix(cli): address PR review findings for binary vendoring
ifireball Jun 8, 2026
db20367
fix(cli): drop duplicate vendor steps and reuse ValidArch
ifireball Jun 9, 2026
289689d
Merge pull request #2015 from ifireball/cursor/6974b792
ifireball Jun 10, 2026
edc5f21
Merge pull request #2072 from fullsend-ai/agent/2071-add-public-mint-url
rh-hemartin Jun 10, 2026
de576ed
Merge pull request #2068 from fullsend-ai/agent/2067-dispatch-sync-gu…
rh-hemartin Jun 10, 2026
d4e8518
chore(#2109): remove dead scaffold action directories
fullsend-ai-coder[bot] Jun 10, 2026
f0e5d7c
docs(plans): add implementation plan for ADR-0045 forge-portable harn…
ggallen Jun 10, 2026
1281fa9
Merge pull request #2097 from fullsend-ai/ci/merge-queue-skill-monito…
ralphbean Jun 10, 2026
124dec4
docs: refresh roadmap for June 2026
ralphbean Jun 7, 2026
36ac3a5
docs: revise roadmap per June planning session
ralphbean Jun 9, 2026
96f7942
docs(roadmap): replace OOTB/BYOA with default/custom terminology
ralphbean Jun 9, 2026
78cc1ee
docs(roadmap): fix OpenShell partnership wording
ralphbean Jun 9, 2026
3ffbdb5
build(action): action.yml now compiles if no release is found
rh-hemartin Jun 9, 2026
b765f76
chore(#1150): remove rsync from sandbox image
fullsend-ai-coder[bot] Jun 10, 2026
bec9015
Merge pull request #2110 from fullsend-ai/agent/2109-remove-dead-scaf…
waynesun09 Jun 10, 2026
4a1ea86
Merge pull request #2089 from fullsend-ai/rbean/commit-message-guidance
ralphbean Jun 10, 2026
ad2b00d
Merge pull request #2044 from fullsend-ai/agent/1727-broaden-stale-re…
ralphbean Jun 10, 2026
db9508b
docs(#2125): fix stale .gitlint comment reference
fullsend-ai-coder[bot] Jun 10, 2026
eda1e12
Merge pull request #2100 from fullsend-ai/worktree-adr-0045-impl-plan
ggallen Jun 10, 2026
00ede60
feat(harness): add ForgeConfig struct and merge logic (ADR-0045 PR 1/7)
ggallen Jun 10, 2026
246f73c
feat(harness): add optional role and slug fields to Harness struct
ggallen Jun 10, 2026
34d8a03
Merge pull request #2128 from fullsend-ai/worktree-adr-0045-pr2-role-…
ggallen Jun 10, 2026
8701e2a
Merge pull request #2127 from ggallen/worktree-feat-adr-0045-pr1-forg…
ggallen Jun 10, 2026
ed2d3d0
test(harness): add YAML nil-vs-empty unmarshaling semantics tests
ggallen Jun 10, 2026
1f0d66c
Merge pull request #2129 from ggallen/worktree-pr7-yaml-semantics-tests
ggallen Jun 10, 2026
a20c44f
Merge pull request #2021 from dhshah13/fix/2018-sri-cdn-scripts
ralphbean Jun 10, 2026
7ac6d8e
feat(scaffold): add role and slug to harness templates (ADR-0045 PR 6)
ggallen Jun 10, 2026
25c69ce
fix: reuse reportReconciliationPRs in Uninstall
ralphbean Jun 10, 2026
b252c40
fix(#2143): add pre-flight GitHub API connectivity check in sandbox
fullsend-ai-coder[bot] Jun 10, 2026
a30c112
ci: eliminate redundant Go test execution
ralphbean Jun 10, 2026
a812673
feat(scaffold): add managed-by headers to installed scaffold files
ralphbean Jun 6, 2026
3336cb6
fix: remove stale comment about uninstall layers
ralphbean Jun 10, 2026
9969d7d
feat(e2e): gate fork PR runs with pull_request_target
ifireball Jun 10, 2026
709cfe4
fix(e2e): close gate bypass on non-ok-to-test label events
ifireball Jun 10, 2026
9cfb3d4
test(e2e): cover commits API fallback and ADR 0009 xref
ifireball Jun 10, 2026
e182e7c
test(e2e): exercise commits fallback with ok-to-test label
ifireball Jun 10, 2026
a95ef5d
fix(e2e): address review feedback on concurrency and auth fallback
ifireball Jun 10, 2026
a81599f
fix(e2e): correct timeline schema and harden gate job
ifireball Jun 10, 2026
f7215de
fix(e2e): use server-side updated_at for ok-to-test freshness
ifireball Jun 11, 2026
4747760
fix(e2e): remove unused has_fresh_label for shellcheck
ifireball Jun 11, 2026
826f132
feat(resolve): model skills as directories instead of single files
ggallen Jun 11, 2026
45118cd
Merge pull request #2139 from fullsend-ai/worktree-fix-skill-director…
ggallen Jun 11, 2026
a9d6652
fix: update status comment on cancellation instead of orphaning it
ggallen Jun 11, 2026
e2c8ff8
Merge branch 'main' into cursor/d1797ce0
ifireball Jun 11, 2026
aad7dd6
fix(e2e): address review nits on updated_at docs and checkout creds
ifireball Jun 11, 2026
3ab825a
docs(install): refactor of installation guides
rh-hemartin Jun 10, 2026
fda7dc4
fix(e2e): use github.actor for gate comments and test events errors
ifireball Jun 11, 2026
06f9f83
Merge pull request #2146 from ggallen/fix/status-comment-cancel-signal
ifireball Jun 11, 2026
b3ebc3f
Merge pull request #2053 from fullsend-ai/feat/compile-binary
rh-hemartin Jun 11, 2026
580404f
Merge branch 'main' into cursor/d1797ce0
ifireball Jun 11, 2026
d7648e8
fix(e2e): match gate comment lookup to github-actions[bot]
ifireball Jun 11, 2026
393d845
Merge pull request #2106 from ifireball/cursor/d1797ce0
ifireball Jun 11, 2026
b7f1671
fix(e2e): use event author_association for trusted member gate
ifireball Jun 11, 2026
4f6dbc3
feat(review): use "Looks good to me" when no findings instead of stru…
rh-hemartin Jun 11, 2026
106ba9a
test(e2e): cover untrusted event payload ok-to-test fallback
ifireball Jun 11, 2026
a80d472
Merge pull request #2158 from ifireball/fix/e2e-gate-author-associati…
ifireball Jun 11, 2026
6ef0a6c
Merge pull request #2140 from ggallen/worktree-adr-0045-pr6-scaffold-…
ggallen Jun 11, 2026
0726539
feat(harness): wire ResolveForge into load pipeline (ADR-0045 PR 3/7)
ggallen Jun 10, 2026
708e248
fix(images): Install Gopls as sandbox to preserve ownership of folders
rh-hemartin Jun 10, 2026
e153b95
Merge pull request #2069 from fullsend-ai/add-codecov-yml
ralphbean Jun 11, 2026
17d9c90
Merge pull request #2112 from fullsend-ai/fix/go-sandbox-owner
rh-hemartin Jun 11, 2026
0ea6a36
fix(dispatch): strip \r from CRLF comment bodies before command matching
ascerra Jun 11, 2026
6d9ea4f
Merge pull request #1993 from fullsend-ai/docs/roadmap-refresh-june-2026
ralphbean Jun 11, 2026
4cf2d94
Merge pull request #1976 from fullsend-ai/feat/366-managed-file-headers
ralphbean Jun 11, 2026
7aea644
Merge pull request #2144 from fullsend-ai/agent/2143-preflight-github…
ralphbean Jun 11, 2026
b418fca
Merge pull request #2124 from fullsend-ai/refactor/installation
rh-hemartin Jun 11, 2026
c6bae71
docs: update extraction flow diagram to reflect SafeDownload
fullsend-ai-coder[bot] Jun 11, 2026
b20e9f9
Merge pull request #2142 from ggallen/feat/adr-0045-pr3-resolve-forge
ggallen Jun 11, 2026
7aa7cda
fix: trim security heuristics to policy directives only
ralphbean Jun 8, 2026
51c0f75
fix: remove duplicate permission file-type list from Own block
ralphbean Jun 8, 2026
cdd6a39
Merge pull request #2126 from fullsend-ai/agent/2125-fix-gitlint-comment
ralphbean Jun 11, 2026
b566a23
Merge pull request #2168 from fullsend-ai/fix/2137-crlf-dispatch
ascerra Jun 11, 2026
a029a60
Merge pull request #2046 from fullsend-ai/fix/trim-security-heuristics
ben-alkov Jun 11, 2026
7006fa2
fix(#2148): thread signal-aware context into sandbox exec
ggallen Jun 11, 2026
f3ccb43
feat(harness): add base composition for harness inheritance (ADR-0045…
ggallen Jun 11, 2026
edc383a
Merge pull request #1867 from fullsend-ai/perf/cache-sandbox-image
ralphbean Jun 11, 2026
df32289
feat(fetchsvc): add runner-side runtime fetch service for Phase 4
ggallen Jun 11, 2026
98f7303
fix(cli): make scaffold commit messaging explicit about pushing to de…
waynesun09 Jun 11, 2026
f54886c
fix(#2191): sync protected path lists across all four governance files
fullsend-ai-coder[bot] Jun 11, 2026
1436c93
Merge pull request #2192 from fullsend-ai/agent/2191-sync-protected-p…
ben-alkov Jun 11, 2026
42e64f3
feat(#2149): finalize orphaned status comments on hard process termin…
ggallen Jun 11, 2026
fd5b754
Merge pull request #2198 from fullsend-ai/fix-commit-messaging
waynesun09 Jun 12, 2026
6b2c71f
fix(review): address api-contract and internal-consistency review fin…
rh-hemartin Jun 12, 2026
072da72
Merge pull request #2120 from fullsend-ai/agent/1150-remove-rsync-fro…
rh-hemartin Jun 12, 2026
09fb17a
fix(#2209): remove stale tar before podman save
rh-hemartin Jun 12, 2026
1ae688c
Merge pull request #2210 from fullsend-ai/fix/2209-sandbox-image-cach…
rh-hemartin Jun 12, 2026
0842dec
chore(#2088): consolidate agent instructions into AGENTS.md
rh-hemartin Jun 12, 2026
2933555
fix(#2024): triage agent must not ask reporters implementation questions
rh-hemartin Jun 12, 2026
c828123
docs: refine ADR 0046 — scope attribution, Go interface, process cont…
maruiz93 Jun 12, 2026
a5fc2ca
docs(guides): add building custom agents guide
ascerra May 19, 2026
1816679
chore(#1179): apply feedback
rh-hemartin Jun 12, 2026
ce8ceb9
Merge pull request #1179 from ascerra/custom-agent-user-guide
rh-hemartin Jun 12, 2026
f285075
Merge pull request #2150 from fullsend-ai/agent/2149-orphaned-status-…
ggallen Jun 12, 2026
0de62f8
Merge pull request #2182 from fullsend-ai/agent/2148-thread-cancel-co…
ggallen Jun 12, 2026
6b815f5
Merge pull request #2173 from fullsend-ai/worktree-phase4-pr1
ggallen Jun 12, 2026
6b1ece0
Merge pull request #2180 from ggallen/worktree-adr-0045-review
ggallen Jun 12, 2026
9c19aa5
Merge pull request #1814 from maruiz93/adr-host-side-api-server
maruiz93 Jun 12, 2026
e9aab77
Merge pull request #2159 from fullsend-ai/fix/1499-review-lgtm-no-fin…
rh-hemartin Jun 12, 2026
3c4d93a
docs: add mint enrollment prerequisite to getting started guide
waynesun09 Jun 11, 2026
aa2deca
perf(#2222): skip sandbox image pull when cached digest matches remote
ralphbean Jun 12, 2026
65d7ffa
Merge pull request #2226 from fullsend-ai/fix/sandbox-image-cache-dig…
ralphbean Jun 12, 2026
bf62371
Merge pull request #2214 from fullsend-ai/fix/2024-triage-impl-questions
ralphbean Jun 12, 2026
8f1fcbf
Merge pull request #2232 from fullsend-ai/docs-mint-enroll-prereq
waynesun09 Jun 12, 2026
c8e6c3a
Merge pull request #2211 from fullsend-ai/agent/2088-dedup-claude-age…
ralphbean Jun 12, 2026
d9672ce
fix(#2236): reject Signed-off-by trailers in agent commits
fullsend-ai-coder[bot] Jun 12, 2026
8c7bec8
fix(#2237): scope anti-premature-resolution rule to user-facing quest…
fullsend-ai-coder[bot] Jun 12, 2026
2b8392c
Merge pull request #2241 from fullsend-ai/agent/2237-reconcile-insuff…
ralphbean Jun 12, 2026
a2652ea
Merge pull request #2020 from fullsend-ai/agent/2017-uninstall-cleanu…
ralphbean Jun 12, 2026
1672342
docs(#2242): prune outdated guidance from AGENTS.md
fullsend-ai-coder[bot] Jun 12, 2026
ea5d473
Merge pull request #2244 from fullsend-ai/agent/2242-prune-outdated-a…
ralphbean Jun 12, 2026
f9cdb6a
fix(#2236): address medium/low review findings
fullsend-ai-coder[bot] Jun 12, 2026
cda8e57
Merge pull request #2240 from fullsend-ai/agent/2236-no-signed-off-by
ralphbean Jun 12, 2026
bff0e4b
fix(#2247): compare decoded text in shim drift detection
fullsend-ai-coder[bot] Jun 12, 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 .claude/commands
31 changes: 31 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
codecov:
require_ci_to_pass: true

coverage:
precision: 2
round: down
range: "60...80"
status:
project:
default:
target: auto
threshold: 1%
patch:
default:
target: 80%
threshold: 5%

ignore:
- "**/*_test.go"
- "**/testdata/**"
- "docs/**"
- "hack/**"
- "experiments/**"
- "images/**"
- "**/*.md"
- "**/*.sh"

comment:
layout: "reach,diff,flags,files,footer"
behavior: default
require_changes: false
1 change: 1 addition & 0 deletions .cursor/commands
1 change: 1 addition & 0 deletions .cursor/skills
145 changes: 145 additions & 0 deletions .github/actions/check-e2e-authorization/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
name: Check E2E Authorization
description: >-
Authorize PR-triggered e2e runs for trusted authors or a fresh ok-to-test label.
Removes stale ok-to-test labels and posts a sticky PR comment when unauthorized.

inputs:
pr_number:
description: Pull request number to authorize
required: true
repository:
description: Repository in owner/name form
required: true
pr_updated_at:
description: github.event.pull_request.updated_at (server-side push time)
required: false
default: ""
event_action:
description: github.event.action
required: false
default: ""
pr_author_association:
description: github.event.pull_request.author_association (frozen event payload)
required: false
default: ""
docs_url:
description: Link to e2e testing documentation
required: false
default: https://github.com/fullsend-ai/fullsend/blob/main/docs/guides/dev/e2e-testing.md#ci-authorization

outputs:
authorized:
description: Whether e2e tests may run for this PR
value: ${{ steps.check.outputs.authorized }}
reason:
description: Authorization outcome reason code
value: ${{ steps.check.outputs.reason }}
label_removed:
description: Whether a stale ok-to-test label was removed
value: ${{ steps.check.outputs.label_removed }}

runs:
using: composite
steps:
- name: Check authorization
id: check
shell: bash
env:
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ inputs.pr_number }}
REPOSITORY: ${{ inputs.repository }}
PR_UPDATED_AT: ${{ inputs.pr_updated_at }}
EVENT_ACTION: ${{ inputs.event_action }}
PR_AUTHOR_ASSOCIATION: ${{ inputs.pr_author_association }}
run: bash "${GITHUB_WORKSPACE}/scripts/check-e2e-authorization.sh" "${PR_NUMBER}" "${REPOSITORY}"

- name: Post gate comment
if: steps.check.outputs.authorized != 'true'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ inputs.repository }}
PR_NUMBER: ${{ inputs.pr_number }}
REASON: ${{ steps.check.outputs.reason }}
LABEL_REMOVED: ${{ steps.check.outputs.label_removed }}
DOCS_URL: ${{ inputs.docs_url }}
BOT_LOGIN: github-actions[bot]
run: |
set -euo pipefail

marker='<!-- e2e-gate -->'
owner="${REPOSITORY%%/*}"
repo="${REPOSITORY#*/}"

body="${marker}
## E2E tests did not run

"

case "${REASON}" in
stale_ok_to_test)
body+="The \`ok-to-test\` label was removed because new commits landed after it was applied. A maintainer must re-apply \`ok-to-test\` after reviewing the latest changes.
"
;;
error)
body+="The authorization check failed (GitHub API error). Re-run the workflow when the API is available; if this persists, contact a maintainer.
"
;;
*)
body+="E2E tests run automatically for org/repo **members and collaborators** on pull requests.

For other contributors, a maintainer must add the \`ok-to-test\` label **after** the latest push.
"
;;
esac

if [[ "${LABEL_REMOVED}" == "true" ]]; then
body+="
> **Note:** \`ok-to-test\` was cleared due to new commits.
"
fi

body+="
See [E2E testing guide](${DOCS_URL}) for details."

existing_id="$(gh api "repos/${owner}/${repo}/issues/${PR_NUMBER}/comments" --paginate \
| jq -r --arg login "${BOT_LOGIN}" --arg marker "${marker}" \
'.[] | select(.user.login == $login and (.body | contains($marker))) | .id' \
| head -n1 || true)"

if [[ -n "${existing_id}" ]]; then
jq -n --arg body "${body}" '{body: $body}' | \
gh api -X PATCH "repos/${owner}/${repo}/issues/comments/${existing_id}" --input - >/dev/null
else
jq -n --arg body "${body}" '{body: $body}' | \
gh api -X POST "repos/${owner}/${repo}/issues/${PR_NUMBER}/comments" --input - >/dev/null
fi

- name: Clear gate comment
if: steps.check.outputs.authorized == 'true'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ inputs.repository }}
PR_NUMBER: ${{ inputs.pr_number }}
BOT_LOGIN: github-actions[bot]
run: |
set -euo pipefail

marker='<!-- e2e-gate -->'
owner="${REPOSITORY%%/*}"
repo="${REPOSITORY#*/}"

existing_id="$(gh api "repos/${owner}/${repo}/issues/${PR_NUMBER}/comments" --paginate \
| jq -r --arg login "${BOT_LOGIN}" --arg marker "${marker}" \
'.[] | select(.user.login == $login and (.body | contains($marker))) | .id' \
| head -n1 || true)"

if [[ -n "${existing_id}" ]]; then
body="${marker}
## E2E tests are running

Authorization passed for this commit. See the **E2E Tests** workflow for results."
jq -n --arg body "${body}" '{body: $body}' | \
gh api -X PATCH "repos/${owner}/${repo}/issues/comments/${existing_id}" --input - >/dev/null
fi
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,21 @@ runs:
REPOS_JSON=$(echo "$REPOS" | jq -Rc 'split(",") | map(select(length > 0))')
BODY=$(jq -nc --arg role "$ROLE" --argjson repos "$REPOS_JSON" \
'{role: $role, repos: $repos}')
TOKEN=$(curl -sSf --retry 5 --retry-delay 5 --retry-all-errors \
echo "Requesting token: role=$ROLE repos=$REPOS"
MINT_RESPONSE=$(curl -sSf --retry 5 --retry-delay 5 --retry-all-errors \
-H "Authorization: Bearer $OIDC_TOKEN" \
-H "Content-Type: application/json" \
-d "$BODY" \
"${MINT_URL}/v1/token" | jq -r '.token')
"${MINT_URL}/v1/token")
echo "::add-mask::$MINT_RESPONSE"
TOKEN=$(echo "$MINT_RESPONSE" | jq -r '.token')
if [[ -z "$TOKEN" || "$TOKEN" == "null" ]]; then
echo "::error::Token mint returned no token for role=$ROLE"
exit 1
fi
echo "::add-mask::$TOKEN"
GRANTED_REPOS=$(echo "$MINT_RESPONSE" | jq -r '.granted_repos | if . then map(strings) | join(",") else empty end')
GRANTED_PERMS=$(echo "$MINT_RESPONSE" | jq -r '.granted_permissions | if . then to_entries | map("\(.key)=\(.value)") | join(",") else empty end')
REPO_SELECTION=$(echo "$MINT_RESPONSE" | jq -r '.repository_selection // empty')
echo "Granted scope: repos=${GRANTED_REPOS:-} permissions=${GRANTED_PERMS:-} repo_selection=${REPO_SELECTION:-}"
echo "token=$TOKEN" >> "$GITHUB_OUTPUT"
37 changes: 37 additions & 0 deletions .github/actions/setup-gcp/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Setup GCP
description: Authenticate to Google Cloud via Workload Identity Federation, mask credentials, and prepare sandbox credentials

inputs:
gcp_wif_provider:
description: 'Workload Identity Federation provider resource name'
required: true
gcp_project_id:
description: 'GCP project ID — passed to google-github-actions/auth so the runner env has GOOGLE_CLOUD_PROJECT'
required: false

runs:
using: composite
steps:
- name: Pre-mask GCP credential file path
shell: bash
run: echo "::add-mask::${GITHUB_WORKSPACE}/gha-creds-"

- name: Authenticate to Google Cloud (WIF)
uses: google-github-actions/auth@v3
with:
workload_identity_provider: ${{ inputs.gcp_wif_provider }}
project_id: ${{ inputs.gcp_project_id }}

- name: Mask GCP credential file paths
shell: bash
run: |
for var in GOOGLE_GHA_CREDS_PATH GOOGLE_APPLICATION_CREDENTIALS CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE; do
val="${!var:-}"
if [[ -n "${val}" ]]; then
echo "::add-mask::${val}"
fi
done

- name: Prepare sandbox credentials
shell: bash
run: bash scripts/prepare-sandbox-credentials.sh
69 changes: 69 additions & 0 deletions .github/actions/validate-enrollment/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Validate Enrollment
description: Validate that source repository is enrolled and extract repository metadata

inputs:
source_repo:
description: 'Source repository in owner/repo format'
required: true
install_mode:
description: 'Installation mode: per-org (config repo) or per-repo (in-repo config)'
required: false
default: 'per-org'

outputs:
name:
description: 'Repository name (without owner)'
value: ${{ steps.extract.outputs.name }}

runs:
using: composite
steps:
- name: Validate source repo is enrolled
shell: bash
env:
SOURCE_REPO: ${{ inputs.source_repo }}
INSTALL_MODE: ${{ inputs.install_mode }}
run: |
set -euo pipefail
: "${SOURCE_REPO:?SOURCE_REPO is required}"
: "${GITHUB_REPOSITORY_OWNER:?GITHUB_REPOSITORY_OWNER is required}"
if [[ ! "$SOURCE_REPO" =~ ^[a-zA-Z0-9._-]+/[a-zA-Z0-9._-]+$ ]]; then
echo "::error::Invalid source_repo format: must be owner/repo"
exit 1
fi
REPO_OWNER="${SOURCE_REPO%%/*}"
if [[ "$REPO_OWNER" != "$GITHUB_REPOSITORY_OWNER" ]]; then
echo "::error::source_repo owner does not match org"
exit 1
fi
if [[ "${INSTALL_MODE}" != "per-org" && "${INSTALL_MODE}" != "per-repo" ]]; then
echo "::error::Invalid install_mode '${INSTALL_MODE}': must be 'per-org' or 'per-repo'"
exit 1
fi
REPO_NAME="${SOURCE_REPO#*/}"
if [[ "${INSTALL_MODE}" == "per-repo" ]]; then
echo "Per-repo mode — skipping config.yaml enrollment check (self-enrolled)"
else
if [[ ! -f config.yaml ]]; then
echo "::error::config.yaml not found"
exit 1
fi
if ! command -v yq &> /dev/null; then
echo "::error::yq command not found"
exit 1
fi
ENABLED=$(REPO_NAME="${REPO_NAME}" yq 'env(REPO_NAME) as $name | .repos[$name].enabled' config.yaml)
if [[ "$ENABLED" != "true" ]]; then
echo "::error::repo is not enabled in config.yaml"
exit 1
fi
fi
echo "Validation passed for ${SOURCE_REPO}"

- name: Extract repo parts
id: extract
shell: bash
env:
SOURCE_REPO: ${{ inputs.source_repo }}
run: |
echo "name=${SOURCE_REPO##*/}" >> "${GITHUB_OUTPUT}"
13 changes: 12 additions & 1 deletion .github/workflows/branch-cleanup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@ on:
schedule:
- cron: "0 3 * * 0" # Weekly on Sundays at 3am UTC
workflow_dispatch:
inputs:
dry-run:
description: "Preview deletions without actually deleting"
type: boolean
default: true

concurrency:
group: branch-cleanup
cancel-in-progress: false

permissions:
contents: write
Expand All @@ -25,4 +34,6 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
STALE_DAYS: "30"
run: ./hack/clean-stale-branches
run: >- # schedule trigger has no inputs — dry-run is false (live) by design
./hack/clean-stale-branches
${{ github.event.inputs.dry-run == 'true' && '--dry-run' || '' }}
Loading
Loading