Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
738e775
docs: design cache resilience completion
ULookup Jul 15, 2026
e3a90ee
docs: clarify clustered user cache batching
ULookup Jul 15, 2026
80b52f5
docs: plan cache resilience completion
ULookup Jul 15, 2026
795dfee
test: add Redis chaos verification helpers
ULookup Jul 15, 2026
5c22e93
feat: add fast Redis circuit breaking
ULookup Jul 15, 2026
69e6e6b
fix: harden Redis circuit transitions
ULookup Jul 15, 2026
1500ab7
feat: retain rate limiting during Redis outages
ULookup Jul 15, 2026
69d41c9
fix: reclaim idle rate-limit buckets at capacity
ULookup Jul 15, 2026
88ed8d8
feat: add UserInfo multilevel caching
ULookup Jul 15, 2026
30d00b3
fix: harden UserInfo cache tests and responses
ULookup Jul 15, 2026
e131d3a
perf: jitter cache TTLs and lock retries
ULookup Jul 15, 2026
c5cce1c
fix: make cache TTL updates atomic
ULookup Jul 16, 2026
86514c0
test: harden cache TTL verification
ULookup Jul 16, 2026
79276f8
test: add cache resilience performance baseline
ULookup Jul 16, 2026
a809439
test: make PF-09 phase gates deterministic
ULookup Jul 16, 2026
f7fe97a
fix: close cache resilience review gaps
ULookup Jul 16, 2026
4a2244a
fix: preserve cache availability under races
ULookup Jul 16, 2026
4abc836
fix: fence cache fills and observe push retries
ULookup Jul 16, 2026
0bb9585
fix: make cache failover tests deterministic
ULookup Jul 16, 2026
71765c7
fix(test): align read ack requests with message ids
ULookup Jul 16, 2026
147abaa
fix(test): generate protobufs before Go validation
ULookup Jul 16, 2026
9232a5c
docs: plan PR review fixes
ULookup Jul 16, 2026
794facf
fix(cache): fence UserInfo L1 publication
ULookup Jul 16, 2026
6e1e15b
fix(cache): exercise UserInfo fence execution seams
ULookup Jul 16, 2026
1e0657c
fix(push): make unacked retries identity-idempotent
ULookup Jul 16, 2026
04305d1
fix(push): harden unacked ledger repair
ULookup Jul 16, 2026
d335bdc
fix(push): preserve unacked repair progress
ULookup Jul 16, 2026
cc29e62
ci: enforce cache reliability and performance gates
ULookup Jul 16, 2026
9f107ff
ci: enforce cache gate contract checks
ULookup Jul 16, 2026
2b1c983
test(ci): require exact ordered gate steps
ULookup Jul 16, 2026
6c2b8f2
test(ci): reject bypassable cache gates
ULookup Jul 16, 2026
f633006
test(ci): enforce required step failures
ULookup Jul 16, 2026
b406401
docs: design executable cache gate artifacts
ULookup Jul 16, 2026
b849683
build(ci): package reproducible service artifacts
ULookup Jul 16, 2026
9bcc52f
fix(ci): harden compose artifact validation
ULookup Jul 16, 2026
45d9042
fix(ci): canonicalize artifact validation root
ULookup Jul 16, 2026
262080c
docs(test): keep cache regressions in Go framework
ULookup Jul 16, 2026
e326572
test(cache): move regressions into Go framework
ULookup Jul 16, 2026
a840f7e
ci: distribute service artifacts to cache gates
ULookup Jul 16, 2026
b4b6e94
fix(ci): validate artifacts in pinned runtime
ULookup Jul 17, 2026
4dfa993
fix(ci): restore executable artifact modes
ULookup Jul 17, 2026
b3ceb33
fix(message): restore sequence read watermarks
ULookup Jul 17, 2026
96aefa5
fix(ci): keep system ABI out of service artifacts
ULookup Jul 17, 2026
ffffba7
fix(ci): package complete non-core library closure
ULookup Jul 17, 2026
ab77f19
fix(push): report conversation sequence watermarks
ULookup Jul 17, 2026
fe2e98f
fix(ci): reject artifact library basename collisions
ULookup Jul 17, 2026
f147533
docs(test): distinguish delivery and read watermarks
ULookup Jul 17, 2026
2bdfb6a
chore: sync 3.0-dev into cache resilience
ULookup Jul 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 146 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ jobs:
- uses: actions/setup-go@v5
with:
go-version: '1.24'
- name: Install Go protobuf generator
run: go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11
- name: Generate Go protobuf
run: cd tests && make proto
- name: Download Go deps
run: cd tests && go mod download
- name: Validate CI gate contracts
run: cd tests && go test ./pkg/contracts -count=1
- name: Go vet
run: cd tests && go vet ./...
- name: Go fmt check
Expand All @@ -33,8 +41,40 @@ jobs:
exit 1
fi

service-artifacts:
runs-on: ubuntu-22.04
if: github.event_name != 'push' || github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- name: Build native-service builder image
uses: docker/build-push-action@v6
with:
context: .
file: docker/ci/Dockerfile
load: true
tags: chatnow-ci-builder:ci
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build all Compose services once
run: |
docker run --rm -v "$PWD:/workspace" -w /workspace chatnow-ci-builder:ci bash -lc '
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel "$(nproc)" --target conversation_server gateway_server identity_server media_server message_server presence_server push_server relationship_server transmite_server
'
- name: Package Compose service artifacts
run: docker run --rm -v "$PWD:/workspace" -w /workspace chatnow-ci-builder:ci ./scripts/package_compose_artifacts.sh build compose-artifacts
- name: Validate Compose service artifacts
run: docker run --rm -v "$PWD:/workspace" -w /workspace chatnow-ci-builder:ci ./scripts/validate_compose_artifacts.sh compose-artifacts
- name: Upload Compose service artifacts
uses: actions/upload-artifact@v4
with:
name: compose-service-artifacts
path: compose-artifacts
if-no-files-found: error

bvt:
needs: build
needs: service-artifacts
runs-on: ubuntu-22.04
if: github.event_name != 'push' || github.ref != 'refs/heads/main'
steps:
Expand All @@ -46,6 +86,32 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler netcat-openbsd
- name: Install Go protobuf generator
run: go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11
- &download-compose-artifacts
name: Download Compose service artifacts
uses: actions/download-artifact@v4
with:
name: compose-service-artifacts
path: compose-artifacts
- &restore-compose-artifacts
name: Restore Compose build contexts
run: |
for service in conversation gateway identity media message presence push relationship transmite; do
rm -rf "$service/build" "$service/depends"
cp -a "compose-artifacts/$service/build" "$service/build"
cp -a "compose-artifacts/$service/depends" "$service/depends"
done
- &chmod-compose-artifacts
name: Restore service executable modes
run: |
for service in conversation gateway identity media message presence push relationship transmite; do
chmod +x "compose-artifacts/$service/build/${service}_server"
chmod +x "$service/build/${service}_server"
done
- &validate-compose-artifacts
name: Validate downloaded Compose service artifacts
run: docker run --rm -v "$PWD:/workspace" -w /workspace ubuntu:24.04@sha256:4fbb8e6a8395de5a7550b33509421a2bafbc0aab6c06ba2cef9ebffbc7092d90 ./scripts/validate_compose_artifacts.sh compose-artifacts
- name: Start full stack
run: docker compose up -d --build
- name: Wait for services
Expand All @@ -61,7 +127,7 @@ jobs:
run: docker compose down -v

func:
needs: bvt
needs: [service-artifacts, bvt]
runs-on: ubuntu-22.04
if: github.event_name == 'pull_request' || github.event_name == 'schedule'
steps:
Expand All @@ -73,6 +139,12 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler netcat-openbsd
- name: Install Go protobuf generator
run: go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11
- *download-compose-artifacts
- *restore-compose-artifacts
- *chmod-compose-artifacts
- *validate-compose-artifacts
- name: Start full stack
run: docker compose up -d --build
- name: Wait for services
Expand All @@ -87,6 +159,76 @@ jobs:
if: always()
run: docker compose down -v

reliability:
needs: service-artifacts
runs-on: ubuntu-22.04
if: github.event_name == 'pull_request' || github.event_name == 'schedule'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.24'
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler netcat-openbsd
- name: Install Go protobuf generator
run: go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11
- *download-compose-artifacts
- *restore-compose-artifacts
- *chmod-compose-artifacts
- *validate-compose-artifacts
- name: Start full stack
run: docker compose up -d --build

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] 新增 gate job 在没有服务二进制的情况下启动 Compose,因此当前不可执行。 reliability/perf-cache job 都只 checkout、安装 Go/protoc,然后直接运行 docker compose up -d --build;仓库的各服务 Dockerfile 会 COPY ./build/*_server,但这些 job 没有编译或下载该目录。当前 reliability run 已在 COPY ./build/conversation_server(以及其他服务)处失败,PF-09 的定时 job 也会走同一路径。请在 job 内构建服务,或从一个可成功完成的构建 job 上传/下载 artifacts 后再启动 Compose。

- name: Wait for services
run: ./scripts/wait_for_services.sh
- name: Generate Go protobuf
run: cd tests && make proto
- name: Download Go deps
run: cd tests && go mod download
- name: Run cache reliability gate
run: cd tests && make test-reliability
- name: Tear down
if: always()
run: docker compose down -v

perf-cache:
needs: service-artifacts
runs-on: ubuntu-22.04
if: github.event_name == 'schedule'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.24'
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler netcat-openbsd
- name: Install Go protobuf generator
run: go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11
- *download-compose-artifacts
- *restore-compose-artifacts
- *chmod-compose-artifacts
- *validate-compose-artifacts
- name: Start full stack with PF-09 rate limits
env:
# Transmite flags are int32; use the maximum valid value for gate-only headroom.
TRANSMITE_RATE_LIMIT_USER_MAX: '2147483647'
TRANSMITE_RATE_LIMIT_SESSION_MAX: '2147483647'
run: docker compose up -d --build
- name: Wait for services
run: ./scripts/wait_for_services.sh
- name: Generate Go protobuf
run: cd tests && make proto
- name: Download Go deps
run: cd tests && go mod download
- name: Run cache performance gate
run: cd tests && make test-perf-cache-gate
- name: Tear down
if: always()
run: docker compose down -v

perf:
needs: func
runs-on: ubuntu-22.04
Expand All @@ -100,6 +242,8 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler netcat-openbsd
- name: Install Go protobuf generator
run: go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11
- name: Start full stack
run: docker compose up -d --build
- name: Wait for services
Expand Down
Loading
Loading