v1.5.0
[1.5.0] - 2026-07-13
Overview
Merges the separate github.com/g8e-ai/g8e/protocol Go sub-module into the root github.com/g8e-ai/g8e Go module. This simplifies dependency management and versioning for external consumers — a single go get github.com/g8e-ai/g8e@vX.Y.Z now provides both the platform and protocol packages. Import paths remain unchanged (github.com/g8e-ai/g8e/protocol/...).
Breaking Changes
- Event constant renames —
OperatorIntent*events renamed toOperatorNotary*to align with the L3 Notary governance layer. Removed:OperatorIntentRequested,OperatorIntentGranted,OperatorIntentDenied,OperatorIntentRevokeRequested,OperatorIntentRevoked,OperatorIntentApprovalRequested,OperatorIntentApprovalGranted,OperatorIntentApprovalRejected. Added:OperatorNotaryApprovalRequested,OperatorNotaryTransactionExpired. Consumers subscribing tooperator.intent.*channels must update tooperator.notary.*. PlatformSentinelModeChanged→PlatformVaultModeChanged— Event renamed to reflect the vault-based architecture. Consumers subscribed to the old event name must update.- Timestamp format precision — Changed from RFC3339Nano (variable fractional seconds) to fixed microsecond precision (
2006-01-02T15:04:05.000000Z07:00). This guarantees lexicographic ordering for SQLite indices. Theinternal/timesvcpackage is now the single source of truth;internal/constants/timestamp.gore-exports from it. Transaction hash computation uses the new format forexpires_at. - MCP gateway tool discovery — Changed from merged tool lists (native + downstream deduplicated) to proxied passthrough. When a downstream MCP server is configured,
tools/list,resources/list, andprompts/listare proxied to the downstream server and the raw response is returned. Native tool fallback on downstream failure is removed — errors propagate to the client. - MCP endpoint accessibility — The
/mcpendpoint is now accessible on both the HTTP port (8080, no mTLS, loopback origin protection) and the HTTPS port (8443, mTLS). Previously it was HTTPS/mTLS only. Production deployments should use HTTPS; HTTP is for local loopback. - Terminology: "g8e Node" → "g8e binary file" — Documentation and glossary updated to use "g8e binary file" instead of "g8e Node" throughout. No code API impact.
Added
- New CLI flags and env vars:
--tribunal-bootstrap <path>/G8E_TRIBUNAL_BOOTSTRAP— Path to a JSON file that seeds a TribunalPolicy and trusted signers at startup--public-base-url <url>/G8E_PUBLIC_BASE_URL— Public base URL for approval links and host validation--cors-origin <origin>/G8E_ALLOWED_ORIGINS— Allowed CORS origin for cross-origin browser access (repeatable)--passkey-rp-id <id>/G8E_PASSKEY_RP_ID— RP ID for passkey operations--passkey-rp-name <name>/G8E_PASSKEY_RP_NAME— RP Name for passkey operations--passkey-rp-origin <origin>/G8E_PASSKEY_RP_ORIGINS— Additional RP origins for passkey operations (repeatable)
- New event constants —
OperatorAuditMcpCallRecorded,OperatorPortCheckRequested,AppCaseDeleted,AppInvestigationDeleted,AppMemoryCreated,AppMemoryUpdated, and AI Tribunal session/voting events (AiTribunalSessionStarted,AiTribunalSessionCompleted,AiTribunalVotingConsensusReached, etc.) - New protocol model JSON —
protocol/models/webauthn_response.jsondocumentingWebAuthnAttestationResponseandWebAuthnAssertionResponsewire shapes - Runtime config model expansion —
protocol/models/runtime_config.jsonupdated with generic LLM provider fields (llm_primary_provider,llm_assistant_provider,llm_lite_providerreplacing provider-specific keys),command_validationsettings (whitelist/blacklist), andbatch_executionsettings (max concurrency, fail-fast) - Proto field documentation —
PubSubMessageandPubSubEventfields inpubsub.protonow have inline comments documenting action types, channel conventions, and event types internal/timesvcpackage — New package as the single source of truth for timestamp formatting, replacing scatteredsqliteutil.NowTimestamp/FormatTimestampcalls
Changed
- Go module consolidation — Removed
protocol/go.mod,protocol/go.sum, andprotocol/vendor/. The rootgo.modnow directly requiresgoogle.golang.org/grpcandgoogle.golang.org/protobuf(previously indirect via the protocol sub-module). Thereplacedirective forgithub.com/g8e-ai/g8e/protocolhas been removed. - Makefile test/coverage separation — Split
EXCLUDE_PKGSintoTEST_EXCLUDE_PKGS(packages excluded from test runs) andCOVERAGE_EXCLUDE_PKGS(packages additionally excluded from coverage profile). Protocol generated code and example programs are now coverage-only exclusions. - Makefile release target —
make releasenow runs the full test suite (make test) instead of protocol-only tests.make release-tagrenamesPROTO_TAGtoPYTHON_TAGand updates all messages to reflect thatprotocol/v*tags trigger only the Python PyPI release. - Dockerfile — Removed the
COPY protocol/go.mod protocol/go.sum protocol/vendor/line; the rootvendor/directory now contains all dependencies. - Binary release workflow —
.github/workflows/release-binary.ymlnow includesgo get github.com/g8e-ai/g8e@vX.Y.Zinstallation instructions in the GitHub release body. - Port flag defaults —
--http-portand--https-portflag defaults changed from hardcoded values (8080/8443) to0(auto-resolved fromconstants.Ports); effective defaults remain 8080 and 8443. --followflag — Description updated from "Follow log output after starting" to "Run gateway in foreground (Ctrl+C stops gateway)".- Gateway entry point —
gatewayServeCmdconsolidated intogatewayCmd/gatewayStartCmd. WriteAgentConfighome directory resolution — Now usesos.UserHomeDir()as primary withHOMEenv fallback (previouslyHOMEfirst,os.UserHomeDir()fallback). Improves cross-platform behavior.system_utils.goplatform split — Split into platform-specific files (system_utils_linux.go,system_utils_darwin.go,system_utils_windows.go,system_utils_unix.go) for cross-OS compatibility.G8eoService.SetKeystore— New method for injecting a test keystore, bypassing OS keychain dependencies in cross-platform CI.
Removed
protocol/go.mod— Deleted; protocol code is part of the root module.protocol/go.sum— Deleted; dependencies tracked by rootgo.sum.protocol/vendor/— Deleted; dependencies vendored in rootvendor/..github/workflows/release-go-protocol.yml— Deleted; Go module releases are now handled by thev*tag via the binary release workflow. Theprotocol/v*tag continues to trigger only the Python PyPI release.ErrTimestampParseEmpty/ErrTimestampParseInvalidFormat— Removed frominternal/constants/errors.go; timestamp parsing now handled byinternal/timesvc.
Migration Guide for External Consumers
Before (v1.4.x):
go get github.com/g8e-ai/g8e/protocol@vX.Y.ZAfter (v1.5.0):
go get github.com/g8e-ai/g8e@vX.Y.ZImport paths in Go source code remain unchanged:
import (
"github.com/g8e-ai/g8e/protocol"
"github.com/g8e-ai/g8e/protocol/proto/g8e/common/v1"
)Only the require line in go.mod changes from github.com/g8e-ai/g8e/protocol vX.Y.Z to github.com/g8e-ai/g8e vX.Y.Z.
CI Modernization
This release introduces comprehensive CI pipeline modernization across Go, Python, and release workflows.
Cross-OS CI Matrix — The core ci job now runs on ubuntu, macOS, and Windows with fail-fast: false. OS-specific protoc installation steps handle Linux x86_64, macOS aarch_64, and Windows win64. Cross-compile is gated to Linux only. Timeout increased to 20 minutes for slower runners.
Python Package Tests — 94 pytest tests in protocol/python/tests/ covering constants loading, enum generation, model validation/serialization, and version consistency. CI runs on a Python 3.10-3.14 matrix with example script smoke tests.
Protocol Conformance Suite — 151 tests in protocol/conformance/ enforcing parity between Go constants, Python runtime values, and canonical JSON schemas. Covers JSON file structure, _go_const/_python_const presence, value uniqueness, naming conventions, and model serialization round-trips.
Performance Benchmarks — 13 Go benchmarks across 3 packages: sqliteutil (gzip compress/decompress, SHA-256 hashing), constants (ActionType.IsMutation), and mcp (JSON-RPC marshal/unmarshal, tool call parsing).
Smoke Tests — scripts/smoke-test-python.sh and scripts/smoke-test-go.sh verify clean-environment installs from README quickstart instructions. CI runs both on every PR.
Secret Scanning — gitleaks full-history secret scanning via gitleaks-action@v2.
License Compliance — go-licenses report generation with forbidden copyleft license detection (GPL, AGPL, LGPL, SSPL, BUSL).
Artifact Signing — cosign/sigstore keyless binary signing in release-binary.yml. Each binary gets a .sig file uploaded alongside the release with cosign verify-blob instructions.
Fresh-Install Verification — Post-publish verify-install jobs in both release workflows. Binary releases verify go install on ubuntu/macOS/Windows. Python releases verify pip install g8e==<version> from PyPI with import checks.
Python Package Hardening — py.typed PEP 561 marker for type checker support. Package metadata validation step checks required pyproject.toml fields before build. pip-audit --strict CI job for dependency vulnerability scanning.
Cross-Platform Test Compatibility — Fixed test failures on macOS and Windows to ensure the cross-OS CI matrix passes cleanly. Platform-specific fixes include: macOS Statfs.Bsize type mismatch (uint32 vs int64), filepath.EvalSymlinks for /var → /private/var symlink resolution, skip guards for /proc-dependent tests on non-Linux, Windows 8.3 short name path handling, Unix file mode test skips, and broadened SSH error assertions for platform-specific auth failures.