Commit Graph

131 Commits

Author SHA1 Message Date
Chummy
5d2472bd56 feat(android): add strict self-check mode with warning gates 2026-02-28 21:16:52 +08:00
Chummy
664dcdcb82 feat(android): standardize self-check error codes and offline diagnostics 2026-02-28 21:16:52 +08:00
Chummy
48cba9e076 feat(android): add structured error codes and stdout JSON mode 2026-02-28 21:16:52 +08:00
Chummy
88f7d842e5 feat(android): add JSON self-check report and regression tests 2026-02-28 21:16:52 +08:00
Chummy
424f67d948 feat(android): support offline log diagnosis and tests 2026-02-28 21:16:52 +08:00
Chummy
3b8fbcaa38 feat(android): auto-diagnose cargo check toolchain failures 2026-02-28 21:16:52 +08:00
Chummy
e5aacec1a5 feat(android): add mode-aware source-build self-check 2026-02-28 21:16:52 +08:00
Chummy
bebb881b5b fix(android): harden Termux source-build and wasm-tools fallback 2026-02-28 21:16:52 +08:00
Chummy
9015eef883 ci(security): include android/template crates in unsafe debt audit 2026-02-28 17:44:47 +08:00
xj
a381963623
fix(ci): stabilize post-2142 local quality gates (COM-2142) (#2171)
* chore(ci): retrigger PR checks after intake body update

* fix(ci): stabilize local quality gates on rebased main

---------

Co-authored-by: Chummy <chumyin0912@gmail.com>
Co-authored-by: xj <gh-xj@users.noreply.github.com>
2026-02-27 23:18:25 -08:00
Argenis
4ddc4fe1e7
Merge pull request #2127 from zeroclaw-labs/fix/ci-require-chumyin-approval
ci: require explicit @chumyin approval for CI/CD changes
2026-02-28 01:28:00 -05:00
Chummy
79f86223a5 test(ci): assert checkout commands in scope tests 2026-02-28 14:06:08 +08:00
Chummy
e3ffe57162 ci: align main-first policy wording and harden add assertions 2026-02-28 14:06:08 +08:00
Chummy
c275663c8f ci: harden scope tests and align main-first policy text 2026-02-28 14:06:08 +08:00
Chummy
9e298f8e90 ci: fix pull_request scope detection for merge refs 2026-02-28 14:06:08 +08:00
Chummy
cd70a18fa0 ci: remove dev-to-main promotion gate and align main flow 2026-02-28 14:06:08 +08:00
Chummy
b6290e041c
ci: require explicit @chumyin approval for CI/CD changes 2026-02-27 22:11:27 +00:00
Chummy
55cabbb70c ci: narrow feature-matrix push scope and add queue hygiene tool 2026-02-28 05:28:25 +08:00
Chummy
e0c1b67929 ops(ci): add self-hosted runner remediation tooling 2026-02-28 05:00:32 +08:00
Samy
860e8b2442 fix: address remaining CodeRabbit review items
- Fix convert_channels() return type: dict → tuple[dict, list[str]]
- Remove unnecessary f-string prefixes on plain string literals
- Add blank lines after markdown headings (MD022 compliance)
- Handle triple-quote edge case in TOML multiline string output
- Add handler-level validation tests: missing message rejection,
  empty messages detection, whitespace-only user message, and
  context extraction correctness

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 04:43:16 +00:00
sudomove
0aa2994423 fix: address PR review issues — auth guard, doc refs, TOML escaping
- Add non-loopback auth guard to /v1/chat/completions (matching /api/chat)
- Fix migration guide references to non-existent files (api_chat.rs,
  openai_compat_shim.rs, mod_patch.rs) — endpoints live in openclaw_compat.rs
- Remove phantom `provider` field from /api/chat response docs
- Add TOML string escaping to config converter to handle special chars
- Add proper JSON parse error handling in config converter
- Update deployment checklist and troubleshooting to match actual file layout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 04:43:16 +00:00
Samy
dde8b82ea0 feat(gateway): add OpenClaw migration compat layer with /api/chat and tools-enabled /v1/chat/completions
Add a complete OpenClaw → ZeroClaw migration toolkit:

- POST /api/chat: ZeroClaw-native endpoint with full agent loop (tools, memory,
  context enrichment). Supports session_id scoping and context[] injection for
  conversation history. Same code path as Linq/WhatsApp/Nextcloud handlers.

- POST /v1/chat/completions: OpenAI-compatible shim that routes through
  run_gateway_chat_with_tools instead of the simple provider.chat_with_history
  path. Extracts last user message + up to 10 messages of conversation context
  from the messages[] array. Supports streaming (simulated SSE). Drop-in
  replacement for OpenClaw callers with zero code changes.

Both endpoints include full observability instrumentation (AgentStart, LlmRequest,
LlmResponse, RequestLatency, AgentEnd), auth (pairing + webhook secret), rate
limiting, auto-save to memory, and response sanitization.

Also adds:
- scripts/convert-openclaw-config.py: Converts openclaw.json → config.toml with
  provider mapping, channel detection, and migration notes
- docs/migration/openclaw-migration-guide.md: Full migration walkthrough with
  endpoint reference, config mapping, callsite examples, and deployment checklist

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 04:43:16 +00:00
argenis de la rosa
b27b44829a chore: promote dev snapshot to main (resolve #1978/#1970) 2026-02-26 21:09:33 -05:00
argenis de la rosa
1e70c23c11 fix(bootstrap): initialize container arrays under set -u 2026-02-26 21:04:04 -05:00
Chummy
102af29f97 ci(intake): remove Linear dependency from public PR flow 2026-02-26 20:14:36 +08:00
Chummy
c53e023b81 feat(ci): add nightly profile retries and trend snapshot evidence 2026-02-25 23:01:49 +08:00
Chummy
d9a81409fb feat(ci): formalize canary cohorts and observability policy 2026-02-25 22:29:26 +08:00
Chummy
b1a9fbe894 test(ci): cover docs deploy guard policy behavior 2026-02-25 21:55:13 +08:00
Chummy
4e7c3dcc13 feat(ci): enforce docs deploy promotion and rollback contract 2026-02-25 21:55:13 +08:00
Chummy
7bfd17e69d test(ci): cover GHCR vulnerability gate guard behavior 2026-02-25 21:35:57 +08:00
Chummy
7849d10a69 feat(ci): add GHCR vulnerability gate policy and audit traceability 2026-02-25 21:35:57 +08:00
Chummy
b1327ec3f1 test(ci): cover GHCR publish contract guard behavior 2026-02-25 21:10:19 +08:00
Chummy
e5d5a49857 feat(ci): enforce GHCR publish tag contract and rollback mapping 2026-02-25 21:10:19 +08:00
Chummy
a28b213334 test(ci): cover release notes supply-chain references 2026-02-25 20:38:51 +08:00
Chummy
fcc3d0e93a feat(release): automate supply-chain release notes preface 2026-02-25 20:38:51 +08:00
Chummy
49b4efc6c4 test(ci): cover release artifact guard contract checks 2026-02-25 20:16:35 +08:00
Chummy
629253f63e feat(release): enforce artifact contract guard 2026-02-25 20:16:35 +08:00
Chummy
7de007dbf9 test(ci): cover release trigger guard paths 2026-02-25 19:54:17 +08:00
Chummy
5e91f074a8 feat(ci): add release trigger authorization guard 2026-02-25 19:54:17 +08:00
Chummy
c468fea7db test(ci): expand prerelease guard transition coverage 2026-02-25 19:30:11 +08:00
Chummy
c2fd20cf25 feat(ci): harden prerelease stage matrix and transition audit 2026-02-25 19:30:11 +08:00
Chummy
976e50a1cb ci: add security regression gate and focused test suite 2026-02-25 18:33:28 +08:00
Chummy
83d5421368 feat(ci): add release/canary/nightly automation and governance guards 2026-02-25 17:51:04 +08:00
Chum Yin
db175c3690
[supersede #1545] feat(providers): implement Qwen OAuth quota tracking (#1746)
* feat(providers): implement Qwen OAuth quota tracking

Add static quota display for Qwen OAuth provider (portal.qwen.ai).
Qwen OAuth API does not return rate-limit headers, so this provides
a static quota indicator based on known OAuth free-tier limits.

Changes:
- Add QwenQuotaExtractor in quota_adapter.rs
  - Parses rate-limit errors for retry backoff
  - Registered for all Qwen aliases (qwen, qwen-code, dashscope, etc.)
- Add Qwen OAuth detection in quota_cli.rs
  - Auto-detects ~/.qwen/oauth_creds.json
  - Displays static quota: ?/1000 (unknown remaining, 1000/day total)
- Improve quota display formatting
  - Shows "?/total" when only total limit is known
- Add comprehensive test report and testing scripts
  - Full integration test report: docs/qwen-provider-test-report.md
  - Model availability, context window, and latency tests
  - Reusable test scripts in scripts/ directory

Test results:
- Available model: qwen3-coder-plus (verified)
- Context window: ~32K tokens
- Average latency: ~2.8s
- All 15 quota tests passing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit fa91b6a170)

* docs: satisfy markdownlint spacing in qwen docs

---------

Co-authored-by: ZeroClaw Bot <zeroclaw_bot@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 03:09:38 -05:00
Chummy
3bf5e34232 supersede: replay changes from #1413
Force repo-owned branch so CI Required Gate can run.
2026-02-25 10:22:35 +08:00
Chummy
bf1d7ac928 supersede: file-replay changes from #1317
Automated conflict recovery via changed-file replay on latest dev.
2026-02-24 23:46:04 +08:00
Chummy
30ab6c14fe ci: enforce unsafe debt audit and policy governance 2026-02-24 21:36:47 +08:00
Chummy
1028b736c4 chore(unsafe-debt): enforce strict full crate coverage defaults (RMN-54) 2026-02-24 21:00:46 +08:00
Chummy
f218a35ee5 feat(unsafe-debt): integrate policy-driven audit coverage (RMN-53) 2026-02-24 20:30:57 +08:00
Chummy
011b379bec feat(unsafe-debt): deepen crate-root guard enforcement (RMN-52) 2026-02-24 19:48:28 +08:00
Chummy
30d8a8b33b feat(ci): add unsafe debt audit report script (RMN-44) 2026-02-24 18:30:36 +08:00
Chummy
cf81c15f68 fix(ci): remove audit false positives and pass actionlint 2026-02-24 16:25:53 +08:00
Chummy
8f91f956fd feat(ci): complete security audit governance and resilient CI control lanes 2026-02-24 16:25:53 +08:00
Chummy
81b4680173 ci: add provider connectivity probes matrix and runbook
Implements scheduled/manual connectivity probes with contract-driven provider matrix, categorized failure policy, CI artifacts, and operator runbook.\n\nRefs RMN-5\nRefs RMN-6
2026-02-24 14:38:08 +08:00
Chummy
b0f14cd311 ci: compute change scope from merge-base 2026-02-24 14:02:42 +08:00
Chummy
44bd433628 fix(install): read guided input from tty when stdin is piped 2026-02-21 17:08:02 +08:00
Aleksandr Prilipko
db92ee766b fix(ci): correct binary path and script permissions in smoke build
- Fix check_binary_size.sh path: target/release → target/release-fast
  (matches --profile release-fast used in cargo build step)
- Add execute permission to check_binary_size.sh (was 644, needs 755)
2026-02-21 12:48:47 +08:00
Alex Gorevski
da2d524211 feat(ci): block workflows if binary increases beyond 20mb 2026-02-20 11:19:02 -08:00
b4iterdev
13fedf9108 feat: add SELinux relabel and correct user namespace mapping for podman 2026-02-21 02:23:53 +08:00
b4iterdev
3e7d330f1d feat: add podman support 2026-02-21 02:23:53 +08:00
b4iterdev
9ed5847a14 feat: add remote docker image pull support 2026-02-21 02:23:53 +08:00
Will Sarg
3e868902ab
fix(ci): sync release publishing with GHCR and add runbook (#1087) 2026-02-20 07:10:09 -05:00
Will Sarg
c96ea79ac0
feat(installer): add guided zeroclaw installer and distro hardening (#887)
* feat(installer): add guided zeroclaw installer entrypoint

- add top-level POSIX wrapper (zeroclaw_install.sh) that ensures bash is present

- route bootstrap/install compatibility scripts through the new installer entrypoint

- improve Linux dependency handling for Alpine/Fedora/Arch, including pacman container fallback

* fix(ci): resolve dependabot config conflict and run daily

- remove duplicate docker ecosystem entry with overlapping directory/target-branch

- switch cargo, github-actions, and docker schedules from monthly to daily
2026-02-20 04:34:14 -05:00
Chummy
f10bb998e0
fix(build): unblock low-resource installs and release binaries (#1041)
* fix(build): unblock low-resource installs and release binaries

* fix(ci): use supported intel macOS runner label
2026-02-19 23:24:43 -05:00
Ken Simpson
e0ca73336a feat(bootstrap): add docker onboarding bootstrap mode 2026-02-20 10:20:18 +08:00
Alex Gorevski
fedfd6ae01
Merge pull request #847 from agorevski/algore/cicd-descript-release-matrix
perf(ci): reduce GitHub Actions costs ~60-65% across all workflows
2026-02-19 06:54:40 -08:00
Chummy
c9a0893fc8 fix(bootstrap): support --model in onboard passthrough 2026-02-19 17:36:20 +08:00
Alex Gorevski
a17c35679e add params to actions data 2026-02-18 21:23:31 -08:00
Alex Gorevski
44725da08c perf(ci): reduce GitHub Actions costs ~60-65% across all workflows
Analysis of Feb 17 data showed 400+ workflow runs/day consuming ~398 billable minutes (~200 hours/month projected). Implemented targeted optimizations:

High-impact changes:

- sec-audit.yml: add path filters (Cargo.toml, src/**, crates/**, deny.toml); skip docs-only PRs

- test-benchmarks.yml: move from every-push-to-main to weekly schedule; retention 30d -> 7d

- pub-docker-img.yml: tighten PR smoke build path filters to Docker-specific files only

- sec-codeql.yml: reduce from twice-daily (14 runs/week) to weekly

Medium-impact changes:

- ci-run.yml: merge lint + lint-strict-delta into single job; drop --release from smoke build

- feature-matrix.yml: remove push trigger (weekly-only); remove redundant cargo test step

- dependabot.yml: monthly instead of weekly; reduce PR limits from 11 to 5/month; group all deps

Runner cost savings:

- Switch 6 lightweight API-only workflows to ubuntu-latest (PR Labeler, Intake, Auto Responder, Check Stale, Check Status, Sync Contributors)

- pr-check-status.yml: reduce from every 12h to daily

New files:

- docs/ci-cost-optimization.md: comprehensive analysis and revised architecture documentation

- scripts/ci/fetch_actions_data.py: reusable GitHub Actions cost analysis script

Estimated impact: daily billable minutes ~400 -> ~120-150 (60-65%% reduction), monthly hours ~200 -> ~60-75, Dependabot PRs ~44/month -> ~5 (89%% reduction)
2026-02-18 21:14:47 -08:00
René Kuhn
58a99abb96 fix: use dnf5-compatible group install syntax
`dnf groupinstall "Development Tools"` fails on dnf5 (Fedora 41+).
Use `dnf group install development-tools` which works on both dnf4
and dnf5.
2026-02-18 20:22:07 +08:00
Chummy
93e5383cb2 docs: overhaul docs IA and multilingual navigation 2026-02-18 18:06:13 +08:00
Chummy
151bc6a600 fix(scripts): align installer filename and docs placement 2026-02-18 13:56:35 +08:00
reidliu41
fdef03e455 feat(scripts): add one-line install script
- Add `scripts/install.sh` — a single `curl | bash` installer that handles system deps, Rust, clone, build, and install
  automatically.
- Update README Linux/macOS section with a "One-Line Installer (Recommended)" block above the existing manual steps.

1. Detects OS (Linux apt/dnf, macOS Xcode CLT)
2. Installs build deps + git via system package manager (sudo only here)
3. Installs Rust via rustup (skipped if already present)
4. Shallow-clones the repo to `/tmp/zeroclaw-install`
5. `cargo build --release --locked` + `cargo install --path . --force --locked`
6. Cleans up temp dir and prints next steps (`source ~/.cargo/env`, `zeroclaw onboard`)
2026-02-18 13:56:35 +08:00
Will Sarg
69a3b54968
chore(ci): externalize workflow scripts and relocate main flow doc (#722)
* feat: Add GitHub Actions workflows for security audits, CodeQL analysis, contributor updates, performance benchmarks, integration tests, fuzz testing, and reusable Rust build jobs

- Implemented `sec-audit.yml` for Rust package security audits using `rustsec/audit-check` and `cargo-deny-action`.
- Created `sec-codeql.yml` for CodeQL analysis scheduled twice daily.
- Added `sync-contributors.yml` to update the NOTICE file with new contributors automatically.
- Introduced `test-benchmarks.yml` for performance benchmarks using Criterion.
- Established `test-e2e.yml` for running integration and end-to-end tests.
- Developed `test-fuzz.yml` for fuzz testing with configurable runtime.
- Created `test-rust-build.yml` as a reusable job for executing Rust commands with customizable parameters.
- Documented main branch delivery flows in `main-branch-flow.md` for clarity on CI/CD processes.

* ci(workflows): update workflow scripts and rename for clarity; remove obsolete lint feedback script

* chore(ci): externalize workflow scripts and relocate main flow doc
2026-02-17 19:48:37 -05:00
Alex Gorevski
0964eebb10
refactor(ci): extract large inline scripts to scripts/ci/ (#587)
The CI workflow contained a ~90-line bash script for change-detection
(lines 38-128) and a ~80-line JavaScript block for lint feedback
(lines 292-370) directly inline in the YAML. Large inline scripts are
harder to test, lint, and maintain than standalone files.

Extract:
- Change-detection logic → scripts/ci/detect_change_scope.sh
- Lint feedback logic → scripts/ci/lint_feedback.js

The workflow now calls these external scripts. GitHub expression values
that were previously interpolated inline are passed as environment
variables instead.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-17 14:17:00 -05:00
Chummy
a35d1e37c8
chore(labeler): normalize module labels and backfill contributor tiers (#462)
Co-authored-by: Will Sarg <12886992+willsarg@users.noreply.github.com>
2026-02-17 08:25:50 -05:00
Chummy
d7ed5c4187 ci: tighten strict delta matching to changed line ranges 2026-02-17 15:21:55 +08:00
Chummy
b81e4c6c50 ci: add strict delta lint gate for changed rust lines 2026-02-17 15:21:55 +08:00
Chummy
6e855cdcf1 ci: fail docs gate on unclassified markdownlint errors 2026-02-17 15:21:55 +08:00
Chummy
6528613c8d ci: unify rust quality gate and add incremental docs/link checks 2026-02-17 15:21:55 +08:00
argenis de la rosa
acea042bdb feat: add AIEOS identity support and harden cron scheduler security
- Add IdentityConfig with format=openclaw|aieos, aieos_path, and aieos_inline
- Implement AIEOS v1.1 JSON parser and system prompt injection
- Add build_system_prompt_with_identity() supporting both OpenClaw markdown and AIEOS JSON
- Harden cron scheduler with SecurityPolicy checks (command allowlist, forbidden path arguments)
- Skip retries on deterministic security policy violations
- Add comprehensive tests for AIEOS config and cron security edge cases
- Update README with AIEOS documentation and schema overview
- Add .dockerignore tests for build context security validation
2026-02-14 13:26:08 -05:00