Skip to content
Merged
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
526 commits
Select commit Hold shift + click to select a range
78e85e6
fix(ci): keep PR hash checks credential-free
ericksoa Jun 30, 2026
97f24e1
test(openshell): tighten review contracts
ericksoa Jun 30, 2026
3e1a75f
fix(ci): verify OpenShell pins without API token
ericksoa Jun 30, 2026
de07342
fix(policy): strip provider entries from mutations
ericksoa Jun 30, 2026
8c377d3
refactor(policy): extract provider entry filtering
ericksoa Jun 30, 2026
ef96ab3
fix(policy): enforce reserved entry boundary
ericksoa Jun 30, 2026
b4cf0df
fix(mcp): narrow host alias policy
ericksoa Jun 30, 2026
7d15f5f
fix(mcp): pin child-visible credential boundary
ericksoa Jun 30, 2026
340b8a7
fix(mcp): centralize output redaction
ericksoa Jun 30, 2026
1d233f4
fix(mcp): lock mcporter dependency graph
ericksoa Jun 30, 2026
c692d09
fix(policy): close reserved entry boundary
ericksoa Jun 30, 2026
e2fbfe2
fix(policy): stage shared boundary in sandbox builds
ericksoa Jun 30, 2026
6570142
fix(policy): support source-only plugin tests
ericksoa Jun 30, 2026
3a19321
test(mcp): exercise lockfile through npm
ericksoa Jun 30, 2026
d4741c1
refactor(mcp): split bridge lifecycle modules
ericksoa Jun 30, 2026
f70ad2e
refactor(mcp): split lifecycle lock internals
ericksoa Jun 30, 2026
039ce38
refactor(mcp): split provider lifecycle internals
ericksoa Jun 30, 2026
e424563
fix(policy): harden OpenShell boundary contracts
ericksoa Jun 30, 2026
bc2e9ab
test(openshell): close final compatibility gaps
ericksoa Jun 30, 2026
f2f2654
test(mcp): prove adapter DNS rebinding denial
ericksoa Jun 30, 2026
3969d35
test(policy): preserve arbitrary top-level fields
ericksoa Jun 30, 2026
b1f7483
fix(mcp): harden Hermes config transactions
ericksoa Jun 30, 2026
9e515f2
fix(ci): cover OpenShell version sources
ericksoa Jun 30, 2026
bc23dda
merge(main): refresh OpenShell 0.0.72 base
ericksoa Jun 30, 2026
f5ede51
fix(policy): preserve effective diagnostic reads
ericksoa Jun 30, 2026
a7e645b
test(policy): split diagnostic read regression
ericksoa Jun 30, 2026
d478247
refactor(policy): isolate diagnostic query commands
ericksoa Jun 30, 2026
935cf56
test(openshell): cover published release resolution
ericksoa Jun 30, 2026
82c25cc
fix(policy): fail closed on mutation read errors
ericksoa Jun 30, 2026
801eb5b
test(e2e): accept opaque hosted inference credentials
ericksoa Jun 30, 2026
139d8d0
chore(mcp): integrate unified E2E mainline
ericksoa Jun 30, 2026
808da0b
docs(mcp): link accepted architecture decision
ericksoa Jun 30, 2026
7da5c2f
fix(security): close OpenShell verification gaps
ericksoa Jun 30, 2026
ce8f27c
test(sandbox): align direct-container selector fixtures
ericksoa Jun 30, 2026
3343563
test(workflow): execute installer change detector
ericksoa Jun 30, 2026
b7cdef1
fix(mcp): harden endpoint and Deep Agents preflight
ericksoa Jun 30, 2026
4d7092f
docs(mcp): clarify managed credential lifecycle
ericksoa Jun 30, 2026
493fe52
fix(mcp): validate credential-shaped URL segments
ericksoa Jun 30, 2026
8e0af10
fix(mcp): harden teardown and shields recovery
ericksoa Jun 30, 2026
0804f27
test(policy): preserve enabled preset coverage
ericksoa Jun 30, 2026
b3696e3
fix(sandbox): restore immutable privileged exec routing
ericksoa Jun 30, 2026
8b84011
test(sandbox): distinguish container discovery fixtures
ericksoa Jun 30, 2026
0d5006d
chore(openshell): merge current main into 0.0.72
ericksoa Jun 30, 2026
a9e9150
ci(security): add trusted installer hash action
ericksoa Jun 30, 2026
abaccac
fix(security): fail closed on missing installer pins
ericksoa Jun 30, 2026
69107f0
ci(security): run PR hash checks from trusted code
ericksoa Jun 30, 2026
6571063
fix(security): verify only owned installer pins
ericksoa Jun 30, 2026
a54aac7
ci(security): pin strict installer hash bootstrap
ericksoa Jun 30, 2026
638048d
fix(policy): fail closed on malformed preset YAML
ericksoa Jul 1, 2026
d1ab96b
test(policy): isolate fail-closed transition coverage
ericksoa Jul 1, 2026
8500461
refactor(policy): unify OpenShell policy boundary
ericksoa Jul 1, 2026
a6aeb08
ci(installer): expire immutable hash bootstrap
ericksoa Jul 1, 2026
b0ac984
fix(ci): compile policy boundary from TypeScript
ericksoa Jul 1, 2026
25df677
chore(mcp): merge OpenShell dependency stack
ericksoa Jul 1, 2026
6b70658
fix(policy): reject empty base-policy reads
ericksoa Jul 1, 2026
7e58237
fix(mcp): restore clean CD execution
ericksoa Jul 1, 2026
f015b99
chore(mcp): merge OpenShell dependency fixes
ericksoa Jul 1, 2026
443f888
docs(mcp): pin security source boundaries
ericksoa Jul 1, 2026
d87d2ba
test(mcp): harden lifecycle lock invariants
ericksoa Jul 1, 2026
c6885d7
docs(policy): clarify boundary dependency gate
ericksoa Jul 1, 2026
543df4a
chore(mcp): merge policy boundary clarification
ericksoa Jul 1, 2026
1705536
fix(policy): anchor document separator parsing
ericksoa Jul 1, 2026
ee7de13
chore(mcp): merge policy separator fix
ericksoa Jul 1, 2026
4986540
docs(mcp): clarify v0.0.73 release boundary
ericksoa Jul 1, 2026
621b334
fix(ci): harden trusted policy audits
ericksoa Jul 1, 2026
74231e3
refactor(rebuild): split lifecycle pipeline into phases
ericksoa Jul 1, 2026
1e0da24
fix(rebuild): preserve lifecycle state across phase failures
ericksoa Jul 1, 2026
ea9dc63
fix(ci): parse installer pins without executing shell
ericksoa Jul 1, 2026
51441d2
chore(openshell): merge current main
ericksoa Jul 1, 2026
e2731c8
fix(ci): reconcile main E2E security contracts
ericksoa Jul 1, 2026
c5cc11d
chore(mcp): merge current main and dependency fixes
ericksoa Jul 1, 2026
781a052
fix(ci): close compatibility review findings
ericksoa Jul 1, 2026
5baa600
chore(mcp): merge final OpenShell 0.0.72 dependency
ericksoa Jul 1, 2026
059a15d
fix(policy): reject unknown top-level policy shapes
ericksoa Jul 1, 2026
4db8333
chore(mcp): merge final policy validation fix
ericksoa Jul 1, 2026
a7e3039
test(mcp): remove workflow source-shape coupling
ericksoa Jul 1, 2026
cad2e8f
fix(policy): close fail-closed review gaps
ericksoa Jul 1, 2026
1aa187a
chore(mcp): merge final fail-closed dependency fixes
ericksoa Jul 1, 2026
fad4b88
test(mcp): harden lifecycle property timeout
ericksoa Jul 1, 2026
8674dc5
test(policy): align legacy shape expectations
ericksoa Jul 1, 2026
553cfcc
chore(mcp): merge final policy compatibility tests
ericksoa Jul 1, 2026
12f7376
chore(openshell): merge current main
ericksoa Jul 1, 2026
eedb095
fix(ci): harden policy boundary checks
ericksoa Jul 1, 2026
a5bc9d2
fix(ci): satisfy Docker boundary lint
ericksoa Jul 1, 2026
f96ce3b
chore(mcp): merge current main and final dependency
ericksoa Jul 1, 2026
9c26a79
chore(mcp): merge final dependency lint fix
ericksoa Jul 1, 2026
f88a5e6
test(e2e): accept reasoning-only inference proof
ericksoa Jul 1, 2026
e60186b
fix(credentials): forward only requested provider secrets
ericksoa Jul 1, 2026
c9332d3
fix(policy): restore Deep Agents Tavily opt-in
ericksoa Jul 1, 2026
de06ed3
test(e2e): align lifecycle fixtures with current contracts
ericksoa Jul 1, 2026
89462af
style(mcp): apply repository formatting
ericksoa Jul 1, 2026
aa3be25
chore(mcp): merge final OpenShell proof fix
ericksoa Jul 1, 2026
c378ad6
test(installer): prove missing assets fail closed
ericksoa Jul 1, 2026
548b64c
chore(mcp): merge final dependency advisor fix
ericksoa Jul 1, 2026
27e663e
test(shields): tolerate coverage shard contention
ericksoa Jul 1, 2026
07babb3
test(hermes): isolate tracked-stop PID fixture
ericksoa Jul 1, 2026
be020b3
docs(deepagents): clarify Tavily provider scope
ericksoa Jul 1, 2026
e098105
docs(deepagents): correct Tavily removal order
ericksoa Jul 1, 2026
a0a1226
refactor(mcp): split adapter and restart lifecycles
ericksoa Jul 1, 2026
3194140
test(mcp): property-check lifecycle lock identity
ericksoa Jul 1, 2026
cff4cf8
test(e2e): prove raw OpenShell DNS pinning
ericksoa Jul 1, 2026
985c1db
test(mcp): avoid conditional growth in lock properties
ericksoa Jul 1, 2026
227dfbb
refactor(mcp): decompose policy and lifecycle surfaces
ericksoa Jul 1, 2026
45a761d
test(mcp): bind lock properties to main suite
ericksoa Jul 1, 2026
987c113
test(e2e): run raw DNS proof in MCP lanes
ericksoa Jul 1, 2026
0a618a9
style: apply repository formatting
ericksoa Jul 1, 2026
f8a8fc5
test(security): harden CodeQL fixtures
ericksoa Jul 1, 2026
137607d
refactor(mcp): resolve final review growth blockers
ericksoa Jul 1, 2026
646cea9
fix(mcp): resolve final advisor blockers
ericksoa Jul 1, 2026
c62a4c8
test(deps): exercise cloudflared checker behavior
ericksoa Jul 1, 2026
225c11d
fix(mcp): close final security review gaps
ericksoa Jul 1, 2026
c811610
refactor(mcp): decompose remaining lifecycle hotspots
ericksoa Jul 1, 2026
e34ba83
style(policy): organize extracted module imports
ericksoa Jul 1, 2026
db5e218
test(agent): keep env restoration branch free
ericksoa Jul 1, 2026
cb88de0
chore(ci): remove stale review aliases
ericksoa Jul 1, 2026
41899a5
fix(ci): restore Brev nightly startup
ericksoa Jul 1, 2026
f68f463
fix(ci): isolate Brev matrix concurrency
ericksoa Jul 1, 2026
7e18907
fix(ci): isolate Brev reporting privileges
ericksoa Jul 1, 2026
7685d85
fix(ci): isolate Brev suite instances
ericksoa Jul 1, 2026
227f4fb
test(e2e): preserve rebuild dashboard port
ericksoa Jul 1, 2026
78aafd0
fix(mcp): enforce Hermes credential boundary
ericksoa Jul 1, 2026
869fa9a
fix(ci): harden Brev credential and installer boundaries
ericksoa Jul 1, 2026
0707f2b
test(mcp): lock credential manifest to shipping OpenShell
ericksoa Jul 1, 2026
cac8f81
test(mcp): bind installer behavior to credential manifest
ericksoa Jul 1, 2026
5e7deb8
fix(ci): restore locked Brev test dependencies
ericksoa Jul 1, 2026
697020b
test(e2e): refresh rebuild compatibility fixtures
ericksoa Jul 1, 2026
efbed27
test(e2e): keep Hermes fixture branch-free
ericksoa Jul 1, 2026
5d17758
test(e2e): mark stale fixture as managed
ericksoa Jul 1, 2026
1853ff4
test(e2e): preserve stale fixture dashboard port
ericksoa Jul 1, 2026
3e15388
fix(e2e): isolate composite Brev suite state
ericksoa Jul 1, 2026
6d487bd
Merge origin/main into dep/openshell-v0.0.72
ericksoa Jul 1, 2026
785e6f4
Merge dep/openshell-v0.0.72 into feat/mcp-bridge-vdr-566
ericksoa Jul 1, 2026
8f7b40e
Merge origin/main into dep/openshell-v0.0.72
ericksoa Jul 1, 2026
191193a
Merge dep/openshell-v0.0.72 into feat/mcp-bridge-vdr-566
ericksoa Jul 1, 2026
cfda731
fix(ci): preserve MCP artifact scan gating
ericksoa Jul 1, 2026
4f4ad13
fix(ci): lock Brev setup to reviewed checkout
ericksoa Jul 1, 2026
cce350a
Merge origin/main into dep/openshell-v0.0.72
ericksoa Jul 1, 2026
8a54292
Merge dep/openshell-v0.0.72 into feat/mcp-bridge-vdr-566
ericksoa Jul 1, 2026
5c3a620
fix(e2e): isolate Brev messaging lifecycles
ericksoa Jul 1, 2026
d3f9ff4
fix(e2e): disable unsafe whole-test retries
ericksoa Jul 1, 2026
3b44af7
fix(e2e): bound Brev lifecycle ownership
ericksoa Jul 1, 2026
0d4374a
fix(e2e): make Brev cleanup workflow-owned
ericksoa Jul 1, 2026
a39ba0e
fix(ci): harden Brev cleanup finalizer
ericksoa Jul 1, 2026
f4cc61e
refactor(cli): isolate MCP display metadata
ericksoa Jul 1, 2026
e793c31
fix(mcp): repair exact-head runtime failures
ericksoa Jul 1, 2026
23d0991
fix(e2e): align Brev security suite timeouts
ericksoa Jul 1, 2026
90166bf
fix(e2e): tolerate process-exit scan races
ericksoa Jul 1, 2026
0cd7604
merge: sync main into OpenShell v0.0.72
ericksoa Jul 1, 2026
538e767
merge: sync OpenShell v0.0.72 dependency
ericksoa Jul 1, 2026
4d57978
fix(policy): reject unmarked diagnostic mappings
ericksoa Jul 1, 2026
613ddd0
fix(e2e): stop restarting MCP sandboxes for test CA
ericksoa Jul 1, 2026
b039cb5
fix(e2e): prevent messaging token probe self-matches
ericksoa Jul 1, 2026
03f3f6b
merge: sync hardened OpenShell dependency
ericksoa Jul 1, 2026
e7b19ae
fix(e2e): require policy roots in live probes
ericksoa Jul 1, 2026
8c548f4
fix(ci): include parser in installer hash bootstrap
ericksoa Jul 1, 2026
e3480ce
merge: sync installer bootstrap hardening
ericksoa Jul 1, 2026
7f3ea39
docs(ci): clarify installer verifier trust boundary
ericksoa Jul 1, 2026
7661d8a
Merge remote-tracking branch 'origin/dep/openshell-v0.0.72' into feat…
ericksoa Jul 1, 2026
a579f4b
fix(ci): validate MCP compatibility inputs
ericksoa Jul 1, 2026
bef8663
Merge branch 'main' into dep/openshell-v0.0.72
ericksoa Jul 1, 2026
0a27f24
Merge branch 'dep/openshell-v0.0.72' into feat/mcp-bridge-vdr-566
ericksoa Jul 1, 2026
5d94e1f
merge: sync current main into OpenShell 0.0.72
ericksoa Jul 1, 2026
e3c3232
merge: restack MCP bridge on current OpenShell dependency
ericksoa Jul 1, 2026
490a1b9
merge: sync current main into OpenShell 0.0.72
ericksoa Jul 1, 2026
cafcd2a
merge: sync current main into OpenShell 0.0.72
ericksoa Jul 1, 2026
1ca644d
merge: restack MCP bridge on current OpenShell dependency
ericksoa Jul 1, 2026
7ee13d2
merge: sync current main into OpenShell dependency
ericksoa Jul 1, 2026
f90f124
merge: restack MCP bridge on current OpenShell dependency
ericksoa Jul 1, 2026
6b918a6
test(e2e): parse Hermes semver before release date
ericksoa Jul 1, 2026
344038e
merge: restack MCP bridge on corrected OpenShell dependency
ericksoa Jul 1, 2026
18f67ef
merge: sync current main into OpenShell dependency
ericksoa Jul 1, 2026
0ed3f40
fix(sandbox): wait for stopped forwards to release
ericksoa Jul 1, 2026
7c701a9
merge: sync current main into OpenShell dependency
ericksoa Jul 1, 2026
dde2c62
merge: sync current main into OpenShell dependency
ericksoa Jul 1, 2026
7ed7f40
merge: sync current main into OpenShell dependency
ericksoa Jul 1, 2026
c5673f0
merge: restack MCP bridge on current OpenShell dependency
ericksoa Jul 1, 2026
8161c0f
fix(test): remove duplicate Shields timeout
ericksoa Jul 1, 2026
4d4420a
test(sandbox): model stopped forward release
ericksoa Jul 1, 2026
9874913
merge: sync forward recovery proof from OpenShell dependency
ericksoa Jul 1, 2026
982de7c
docs(sandbox): define forward wait removal condition
ericksoa Jul 1, 2026
b3284c1
merge: sync forward recovery maintenance contract
ericksoa Jul 1, 2026
8996b9d
test(sandbox): keep forward fixture linear
ericksoa Jul 1, 2026
e923ea6
merge: sync forward recovery test guardrail fix
ericksoa Jul 1, 2026
3571f93
merge: sync current main into OpenShell dependency
ericksoa Jul 1, 2026
fa90a37
merge: restack MCP bridge on current dependency
ericksoa Jul 1, 2026
6ac008d
test(docs): follow current sandbox hardening route
ericksoa Jul 1, 2026
717b29e
merge: sync dependency CI repair
ericksoa Jul 1, 2026
8264c19
test(e2e): chunk crash-loop proxy restore
ericksoa Jul 1, 2026
b6cf67e
merge: sync OpenShell E2E argument fix
ericksoa Jul 1, 2026
97b8a5e
merge: sync current main into OpenShell dependency
ericksoa Jul 1, 2026
261c826
merge: sync current dependency base
ericksoa Jul 1, 2026
dec15c7
merge: sync current main into OpenShell dependency
ericksoa Jul 2, 2026
638bf1f
merge: sync current OpenShell dependency base
ericksoa Jul 2, 2026
5e0c0cd
fix(mcp): preserve generated policy DNS pins
ericksoa Jul 2, 2026
d3ba882
fix(mcp): recover Hermes gateway before mutation
ericksoa Jul 2, 2026
75ec47f
fix(mcp): recognize wrapped Hermes gateway
ericksoa Jul 2, 2026
b434b41
merge: sync current main into OpenShell dependency
ericksoa Jul 2, 2026
b83cdb6
merge: sync current OpenShell dependency base
ericksoa Jul 2, 2026
b4a0203
merge: sync current main into OpenShell dependency
ericksoa Jul 2, 2026
0a43f3b
merge: sync current OpenShell dependency base
ericksoa Jul 2, 2026
5a73950
fix(mcp): await Hermes public API after reload
ericksoa Jul 2, 2026
201d918
test(mcp): observe Hermes rebuild discovery window
ericksoa Jul 2, 2026
e922a92
test(mcp): cover Hermes reload identity race
ericksoa Jul 2, 2026
730e560
test(mcp): honor adapter mutation timeout on cleanup
ericksoa Jul 2, 2026
e3a2a5f
test(mcp): honor adapter timeout for rebinding
ericksoa Jul 2, 2026
9b44e5a
test(mcp): centralize adapter mutation budgets
ericksoa Jul 2, 2026
d429495
merge: sync current main into OpenShell dependency
ericksoa Jul 2, 2026
466443e
docs(release): retarget OpenShell update to v0.0.74
ericksoa Jul 2, 2026
8bf137f
merge: sync current OpenShell dependency base
ericksoa Jul 2, 2026
ce368c3
docs(mcp): retarget accepted design to v0.0.74
ericksoa Jul 2, 2026
673deeb
fix(mcp): retry stalled Hermes gateway reload
ericksoa Jul 2, 2026
ff74343
test(blueprint): preserve SSRF exports in policy mock
ericksoa Jul 2, 2026
4cab135
Merge remote-tracking branch 'origin/dep/openshell-v0.0.72' into feat…
ericksoa Jul 2, 2026
cb5e9ae
fix(ci): harden trusted installer hash inputs
ericksoa Jul 2, 2026
203f2bc
ci(security): repin hardened installer hash bootstrap
ericksoa Jul 2, 2026
7c5170b
merge: sync hardened OpenShell dependency
ericksoa Jul 2, 2026
0d1bdd1
test(ci): keep installer fixtures branch-free
ericksoa Jul 2, 2026
cb9b463
merge: sync current main into OpenShell dependency
ericksoa Jul 2, 2026
2d9a044
merge: sync current main and hardened OpenShell dependency
ericksoa Jul 2, 2026
6e2839d
fix(policy): normalize source and compiled boundary imports
ericksoa Jul 2, 2026
1e6e61f
merge: sync policy boundary import fix
ericksoa Jul 2, 2026
d01a7a4
fix(hermes): repair public relay after reload
ericksoa Jul 2, 2026
62d52b9
merge: sync current main into OpenShell dependency
ericksoa Jul 2, 2026
d8eef4c
merge: sync current OpenShell dependency
ericksoa Jul 2, 2026
ab2b0c4
merge: sync current main into OpenShell dependency
ericksoa Jul 2, 2026
797c1a6
merge: sync current OpenShell dependency
ericksoa Jul 2, 2026
299efb5
fix(mcp): close review correctness gaps
ericksoa Jul 3, 2026
92512c2
merge: sync current main into OpenShell dependency
ericksoa Jul 3, 2026
bd18557
merge: sync current OpenShell dependency
ericksoa Jul 3, 2026
ec69761
merge: sync current main into OpenShell dependency
ericksoa Jul 3, 2026
7cf3726
merge: sync current OpenShell dependency
ericksoa Jul 3, 2026
2d06fa0
merge: sync current main into OpenShell dependency
ericksoa Jul 3, 2026
8cd4862
merge: sync current OpenShell dependency
ericksoa Jul 3, 2026
cfee6e7
merge: sync current main into OpenShell dependency
ericksoa Jul 3, 2026
e610f75
merge: sync current OpenShell dependency
ericksoa Jul 3, 2026
7a272f6
merge: sync current main into OpenShell dependency
ericksoa Jul 3, 2026
f7886f7
merge: sync current OpenShell dependency
ericksoa Jul 3, 2026
9ab85e7
merge: sync current main into OpenShell dependency
ericksoa Jul 3, 2026
e3a527a
merge: sync current OpenShell dependency
ericksoa Jul 3, 2026
4e4e9ac
merge: sync merged OpenShell base and current main
ericksoa Jul 3, 2026
f9c6e5d
merge: sync v0.0.74 main into MCP bridge
ericksoa Jul 3, 2026
ab13939
fix: remove unused config test import
ericksoa Jul 3, 2026
231296e
merge: sync current main into MCP bridge
ericksoa Jul 3, 2026
eb2dc48
merge: integrate DCode rebuild preflight from main
ericksoa Jul 3, 2026
c4cb466
merge: preserve MCP rebuild safety with Tavily
ericksoa Jul 3, 2026
cd53181
merge: sync contributor setup from main
ericksoa Jul 3, 2026
af17227
merge: preserve managed MCP with DCode hardening
ericksoa Jul 3, 2026
4472c28
test(dcode): keep fixture guard linear
ericksoa Jul 3, 2026
bf9100f
test(dcode): stub every isolated Python call
ericksoa Jul 3, 2026
f9283fe
test(dcode): stub managed MCP identity fixture
ericksoa Jul 3, 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
  •  
  •  
  •  
28 changes: 23 additions & 5 deletions .github/actions/resolve-hermes-base-image/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,16 @@ runs:
[[ -n "$have" ]] && [[ "$(printf '%s\n%s\n' "$min_glibc" "$have" | sort -V | head -n 1)" == "$min_glibc" ]]
}

# Build-time package/import guard only. Authenticated HTTPS execution is
# validated by test/e2e/live/mcp-bridge.test.ts against a
# final Hermes sandbox image and OpenShell policy.
mcp_client_imports_ok() {
local ref="$1"
docker run --rm --entrypoint /opt/hermes/.venv/bin/python "$ref" -c \
'import mcp; from tools import mcp_tool; assert getattr(mcp_tool, "_MCP_AVAILABLE", False); assert getattr(mcp_tool, "_MCP_HTTP_AVAILABLE", False)' \
>/dev/null 2>&1
}

layout_ok() {
local ref="$1"
docker run --rm --entrypoint sh "$ref" -lc '
Expand All @@ -44,18 +54,22 @@ runs:
if ! docker pull "$ref" >/dev/null 2>&1; then
return 1
fi
version="$(glibc_version "$ref" || true)"
digest_ref="$(docker image inspect "$ref" --format '{{range .RepoDigests}}{{println .}}{{end}}' | grep -F -m 1 "${image}@sha256:" || true)"
if [[ -z "$digest_ref" ]]; then
echo "::warning::Hermes sandbox base image ${ref} did not expose an immutable GHCR repo digest (may be a fresh tag); building locally"
return 1
fi
version="$(glibc_version "$digest_ref" || true)"
if ! glibc_ok "$version"; then
echo "::warning::Hermes sandbox base image ${ref} has glibc ${version:-unknown}; need >= ${min_glibc}"
return 1
fi
if ! layout_ok "$ref"; then
if ! layout_ok "$digest_ref"; then
echo "::warning::Hermes sandbox base image ${ref} contains retired sandbox state; trying another candidate"
return 1
fi
digest_ref="$(docker image inspect "$ref" --format '{{range .RepoDigests}}{{println .}}{{end}}' | grep -F -m 1 "${image}@sha256:" || true)"
if [[ -z "$digest_ref" ]]; then
echo "::warning::Hermes sandbox base image ${ref} did not expose an immutable GHCR repo digest (may be a fresh tag); building locally"
if ! mcp_client_imports_ok "$digest_ref"; then
echo "::warning::Hermes sandbox base image ${ref} lacks the packaged MCP Streamable HTTP client imports"
return 1
fi
echo "HERMES_BASE_IMAGE=${digest_ref}" >> "$GITHUB_ENV"
Expand Down Expand Up @@ -85,4 +99,8 @@ runs:
echo "::error::Local Hermes sandbox base image contains retired sandbox state"
exit 1
fi
if ! mcp_client_imports_ok nemoclaw-hermes-base-local; then
echo "::error::Local Hermes sandbox base image lacks the packaged MCP Streamable HTTP client imports"
exit 1
fi
echo "HERMES_BASE_IMAGE=nemoclaw-hermes-base-local" >> "$GITHUB_ENV"
17 changes: 11 additions & 6 deletions .github/workflows/brev-nightly-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,14 @@ name: E2E / Brev Nightly
# Suites:
# all credential-sanitization + telegram-injection
# messaging-providers Telegram + Discord provider/L7 proxy validation
# messaging-compatible-endpoint local compatible-endpoint Telegram validation
# full install/onboard/inference/CLI path

on:
schedule:
- cron: "0 6 * * *"
workflow_dispatch:
inputs:
branch:
description: "Branch to test (default: ref used for this dispatch; schedule always tests main)"
required: false
default: ""
keep_alive:
description: "Keep Brev instances alive after tests (for SSH debugging)"
required: false
Expand All @@ -28,6 +25,12 @@ on:

permissions:
contents: read
# GitHub validates a reusable workflow's complete permission ceiling before
# evaluating skipped jobs. The called workflow explicitly downgrades its
# secret-bearing validation job to read-only; only its no-checkout reporter
# may use these write grants when a different caller supplies pr_number.
checks: write
pull-requests: write

concurrency:
group: brev-nightly-e2e-${{ github.event_name }}-${{ github.event_name == 'workflow_dispatch' && github.ref || 'schedule' }}
Expand All @@ -39,10 +42,12 @@ jobs:
strategy:
fail-fast: false
matrix:
test_suite: [all, messaging-providers, full]
test_suite: [all, messaging-providers, messaging-compatible-endpoint, full]
uses: ./.github/workflows/e2e-branch-validation.yaml
with:
branch: ${{ github.event_name == 'schedule' && 'main' || inputs.branch || github.ref_name }}
# Bind tested code to the ref that supplied this reviewed workflow. Do
# not let a write-scoped trusted caller select a second arbitrary branch.
branch: ${{ github.ref_name }}
test_suite: ${{ matrix.test_suite }}
use_launchable: true
keep_alive: ${{ github.event_name == 'workflow_dispatch' && inputs.keep_alive || false }}
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/cloudflared-update-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

name: Dependencies / cloudflared Update Check

on:
schedule:
- cron: "23 13 * * 1"
workflow_dispatch: {}

permissions:
contents: read

concurrency:
group: cloudflared-update-check
cancel-in-progress: false

jobs:
check-cloudflared:
name: Check cloudflared release pin
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false

- name: Compare reviewed pin with the latest upstream release
run: bash scripts/checks/check-cloudflared-update.sh
Loading
Loading