Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .github/workflows/release-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:

- name: Docs status drift gate
shell: pwsh
run: ./scripts/docs-status-check.ps1 -ParityJsonPath parity-go-zig.json -GitHubToken "${{ github.token }}"
run: ./scripts/docs-status-check.ps1 -ParityJsonPath parity-go-zig.json -ReleaseTag "${{ inputs.version }}" -GitHubToken "${{ github.token }}"

- name: Package registry preflight
shell: pwsh
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ ZAR-Zig-Agent-Runtime is the Zig runtime port of OpenClaw, with parity-first del
- Original OpenClaw beta baseline (`v2026.3.13-beta.1`): `100/100` covered
- Union baseline: `141/141` covered (`MISSING_IN_ZIG=0`)
- Latest local validation: `zig build test --summary all` -> `380/380` passed
- Latest published edge release tag: `v0.2.0-zig-edge.29`
- Current edge release target tag: `v0.2.0-zig-edge.31`
- License posture: repo-wide `GPL-2.0-only` with Linux-style SPDX headers on repo-owned source and script files
- Toolchain policy: Codeberg `master` is canonical; `adybag14-cyber/zig` publishes rolling `latest-master` and immutable `upstream-<sha>` Windows releases for refresh and reproducibility.
- CI policy: keep hosted build/test/parity/docs on Zig `master`, but pin the freestanding bare-metal compile/probe lane to the known-good Linux build `0.16.0-dev.2736+3b515fbed` until the upstream Linux `master` compiler crash on `zig build baremetal -Doptimize=ReleaseFast` is resolved.
Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Full documentation for ZAR-Zig-Agent-Runtime, the Zig runtime port of OpenClaw.
- Original OpenClaw beta baseline (`v2026.3.13-beta.1`): `100/100`
- Union baseline: `141/141` (`MISSING_IN_ZIG=0`)
- Latest local validation: `352/352` main tests + `298 passed / 1 skipped` bare-metal host tests
- Latest published edge release tag: `v0.2.0-zig-edge.29`
- Current edge release target tag: `v0.2.0-zig-edge.31`
- License posture: repo-wide `GPL-2.0-only` with Linux-style SPDX headers on repo-owned source and script files
- Toolchain lane: Codeberg `master` is canonical; `adybag14-cyber/zig` provides rolling `latest-master` and immutable `upstream-<sha>` Windows releases for refresh and reproducibility.
- Recent FS1 progress (2026-03-06):
Expand Down
2 changes: 1 addition & 1 deletion docs/operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Current Snapshot

- Latest published edge release: `v0.2.0-zig-edge.29`
- Current edge release target: `v0.2.0-zig-edge.31`
- Latest local test gate: `zig build test --summary all` -> `361/361` passed
- Latest parity gate: `scripts/check-go-method-parity.ps1` -> `GO_MISSING_IN_ZIG=0`, `ORIGINAL_MISSING_IN_ZIG=0`, `ORIGINAL_BETA_MISSING_IN_ZIG=0`, `UNION_MISSING_IN_ZIG=0`, `UNION_EVENTS_MISSING_IN_ZIG=0`, `ZIG_COUNT=175`, `ZIG_EVENTS_COUNT=19`, union baseline `141/141`
- Current head: local source-of-truth on `fs55-ethernet-integration` (exact pushed head is tracked in issue `#1` and the latest branch GitHub Actions runs)
Expand Down
33 changes: 16 additions & 17 deletions docs/package-publishing.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ All published package surfaces now carry `GPL-2.0-only` metadata and a package-l

## Current Edge Release

- GitHub prerelease tag: `v0.2.0-zig-edge.29`
- npm package version: `0.2.0-zig-edge.29`
- Python package version: `0.2.0.dev29`
- GitHub edge release target tag: `v0.2.0-zig-edge.31`
- npm package version: `0.2.0-zig-edge.31`
- Python package version: `0.2.0.dev31`

## Install Paths

Expand All @@ -21,27 +21,27 @@ All published package surfaces now carry `GPL-2.0-only` metadata and a package-l
Preferred when npmjs is configured:

```bash
npm install @adybag14-cyber/openclaw-zig-rpc-client@0.2.0-zig-edge.29
npm install @adybag14-cyber/openclaw-zig-rpc-client@0.2.0-zig-edge.31
```

Fallback from the GitHub release tarball:

```bash
npm install "https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases/download/v0.2.0-zig-edge.29/adybag14-cyber-openclaw-zig-rpc-client-0.2.0-zig-edge.29.tgz"
npm install "https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases/download/v0.2.0-zig-edge.31/adybag14-cyber-openclaw-zig-rpc-client-0.2.0-zig-edge.31.tgz"
```

### pip

Preferred when PyPI is configured:

```bash
pip install openclaw-zig-rpc-client==0.2.0.dev29
pip install openclaw-zig-rpc-client==0.2.0.dev31
```

Fallback from the GitHub release wheel:

```bash
pip install "https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases/download/v0.2.0-zig-edge.29/openclaw_zig_rpc_client-0.2.0.dev29-py3-none-any.whl"
pip install "https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases/download/v0.2.0-zig-edge.31/openclaw_zig_rpc_client-0.2.0.dev31-py3-none-any.whl"
```

### uvx
Expand All @@ -55,7 +55,7 @@ uvx --from openclaw-zig-rpc-client openclaw-zig-rpc health --base-url http://127
Git fallback verified locally against the release tag:

```bash
uvx --from "git+https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime@v0.2.0-zig-edge.29#subdirectory=python/openclaw-zig-rpc-client" openclaw-zig-rpc health --base-url http://127.0.0.1:8080
uvx --from "git+https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime@v0.2.0-zig-edge.31#subdirectory=python/openclaw-zig-rpc-client" openclaw-zig-rpc health --base-url http://127.0.0.1:8080
```

## Registry Configuration Requirements
Expand All @@ -69,12 +69,12 @@ The workflow supports two public-publish paths:

If neither public path succeeds, the workflow falls back to GitHub Packages and still attaches the tarball to the GitHub release.

Current state observed during `v0.2.0-zig-edge.29`:
Current state observed during `v0.2.0-zig-edge.31`:

- `npm-release` completed successfully
- the tarball was attached to the GitHub prerelease
- the GitHub Packages fallback path executed successfully
- public npmjs visibility for `@adybag14-cyber/openclaw-zig-rpc-client@0.2.0-zig-edge.29` still returns `404 Not Found`
- public npmjs visibility for `@adybag14-cyber/openclaw-zig-rpc-client@0.2.0-zig-edge.31` still returns `404 Not Found`

That means the public npmjs side still needs one of:

Expand All @@ -94,11 +94,11 @@ The workflow supports two public-publish paths:

If neither public path succeeds, the workflow still attaches the wheel and sdist to the GitHub release.

Current state observed during `v0.2.0-zig-edge.29`:
Current state observed during `v0.2.0-zig-edge.31`:

- `python-release` completed successfully
- the wheel and sdist were attached to the GitHub prerelease
- public PyPI visibility for `openclaw-zig-rpc-client==0.2.0.dev29` still returns `404 Not Found`
- public PyPI visibility for `openclaw-zig-rpc-client==0.2.0.dev31` still returns `404 Not Found`
- trusted publishing still fails with `invalid-publisher`

That means PyPI does not yet have a matching trusted publisher entry for:
Expand Down Expand Up @@ -147,11 +147,11 @@ Local/operator check:

```powershell
pwsh ./scripts/package-registry-status.ps1 `
-ReleaseTag v0.2.0-zig-edge.29 `
-ReleaseTag v0.2.0-zig-edge.31 `
-NpmPackageName @adybag14-cyber/openclaw-zig-rpc-client `
-NpmVersion 0.2.0-zig-edge.29 `
-NpmVersion 0.2.0-zig-edge.31 `
-PythonPackageName openclaw-zig-rpc-client `
-PythonVersion 0.2.0.dev29 `
-PythonVersion 0.2.0.dev31 `
-OutputJsonPath ./release/package-registry-status.json
```

Expand All @@ -168,7 +168,7 @@ Local/operator snapshot:

```powershell
pwsh ./scripts/release-status.ps1 `
-ReleaseTag v0.2.0-zig-edge.29 `
-ReleaseTag v0.2.0-zig-edge.31 `
-OutputJsonPath ./release/release-status.json `
-OutputMarkdownPath ./release/release-status.md
```
Expand All @@ -186,4 +186,3 @@ This emits:
## Operator Rule

For edge releases, GitHub release assets are the source of truth when public registries are not yet configured. Do not block a validated edge cut on registry-side configuration drift.

2 changes: 1 addition & 1 deletion docs/zig-port/FULL_STACK_REPLACEMENT_MATRIX.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Master tracking:
| Baseline | Ref Type | Value | Status |
|---|---|---|---|
| ZAR-Zig-Agent-Runtime | Commit | `caaedd9` | Locked |
| ZAR-Zig-Agent-Runtime | Release | `v0.2.0-zig-edge.29` | Locked |
| ZAR-Zig-Agent-Runtime | Release | `v0.2.0-zig-edge.31` | Locked |
| OpenClaw Go Port | Release/Commit | `v2.14.0-go @ 3614cf457cf26220e486d7f3dc8df09353b38a32` | Locked |
| OpenClaw Rust Port | Release/Commit | `v1.7.15 @ b2abb0d1fa747e371a53ea0890ffd80e4e29ea79` | Locked |
| Original OpenClaw Stable | Release/Commit | `v2026.3.2 @ 85377a28175695c224f6589eb5c1460841ecd65c` | Locked |
Expand Down
2 changes: 1 addition & 1 deletion docs/zig-port/PHASE_CHECKLIST.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Release lock: no release tag is allowed until all phases are complete and parity is measured at 100%.
Historical note: milestone validation counts below are preserved as captured at the time of each slice; current project-wide test gate is refreshed after each strict hosted-phase signoff.
Latest edge release: `v0.2.0-zig-edge.29` is published with binaries, parity evidence, SBOM/provenance, npm tarball, wheel, and sdist attached.
Current edge release target: `v0.2.0-zig-edge.31` is validated locally from this branch for binaries, parity evidence, SBOM/provenance, npm tarball, wheel, and sdist output.
Registry status:
- npm public publish still requires npm-side scope/package permission or `NPM_TOKEN`; GitHub release asset + GitHub Packages fallback are available now.
- PyPI public publish still requires a matching trusted publisher or `PYPI_API_TOKEN`; workflow claim shape is now confirmed as `repo:adybag14-cyber/ZAR-Zig-Agent-Runtime:environment:pypi`.
Expand Down
4 changes: 2 additions & 2 deletions docs/zig-port/PORT_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ Full-stack replacement execution reference:
- browser-session auth, browser completion success, and Telegram command/reply proofs are green locally
- FS2 strict closure is now reached locally: provider/session auth, browser completion, direct-provider completion, Telegram reply-loop, Telegram webhook ingress, and Telegram bot-send delivery all have dedicated proofs
- Release/package lane status (2026-03-06):
- GitHub prerelease `v0.2.0-zig-edge.29` is live with desktop/android/bare-metal artifacts, parity reports, manifest, SBOM, provenance, npm tarball, wheel, and sdist.
- Edge release target `v0.2.0-zig-edge.31` is the current branch validation tag for desktop/android/bare-metal artifacts, parity reports, manifest, SBOM, provenance, npm tarball, wheel, and sdist.
- release evidence now also includes `release-status.json` + `release-status.md` so every edge cut carries a frozen workflow-status + registry-status snapshot in addition to package preflight evidence.
- Zig toolchain evidence is now mirror-aware:
- `scripts/zig-github-mirror-release-check.ps1` snapshots the `adybag14-cyber/zig` release target commitish, Windows asset URL, and SHA256 digest.
Expand All @@ -234,7 +234,7 @@ Full-stack replacement execution reference:
- freestanding bare-metal smoke/probe validation and `build-baremetal-asset` are pinned to the known-good Linux build `0.16.0-dev.2736+3b515fbed`.
- reason: current upstream Linux `master` can segfault on `zig build baremetal -Doptimize=ReleaseFast` even though the pinned Linux `0.16.0-dev.2736+3b515fbed` bare-metal lane validates cleanly.
- `uvx` fallback from the tagged Git repo was validated locally:
- `uvx --from "git+https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime@v0.2.0-zig-edge.29#subdirectory=python/openclaw-zig-rpc-client" openclaw-zig-rpc --help`
- `uvx --from "git+https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime@v0.2.0-zig-edge.31#subdirectory=python/openclaw-zig-rpc-client" openclaw-zig-rpc --help`
- npm public publish remains externally blocked by npm scope/package permission on npmjs; the edge.29 tarball is attached to the GitHub prerelease and the GitHub Packages fallback path ran successfully.
- `scripts/package-registry-status.ps1` now uses the resolved default npm/PyPI package names when called with only `-ReleaseTag`, so local release diagnostics correctly report public-registry 404 state instead of silently skipping those checks.
- PyPI public publish remains externally blocked by missing trusted-publisher mapping, but the workflow now emits the confirmed OIDC claim shape for the branch release lane:
Expand Down
2 changes: 1 addition & 1 deletion npm/openclaw-zig-rpc-client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ npm install @adybag14-cyber/openclaw-zig-rpc-client
GitHub release tarball fallback for the current edge tag:

```bash
npm install "https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases/download/v0.2.0-zig-edge.29/adybag14-cyber-openclaw-zig-rpc-client-0.2.0-zig-edge.29.tgz"
npm install "https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases/download/v0.2.0-zig-edge.31/adybag14-cyber-openclaw-zig-rpc-client-0.2.0-zig-edge.31.tgz"
```

## Usage
Expand Down
2 changes: 1 addition & 1 deletion npm/openclaw-zig-rpc-client/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@adybag14-cyber/openclaw-zig-rpc-client",
"version": "0.2.0-zig-edge.29",
"version": "0.2.0-zig-edge.31",
"description": "Node.js RPC client for ZAR-Zig-Agent-Runtime gateway endpoints.",
"main": "index.js",
"types": "index.d.ts",
Expand Down
4 changes: 2 additions & 2 deletions python/openclaw-zig-rpc-client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ pip install openclaw-zig-rpc-client
Release-wheel fallback:

```bash
pip install "https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases/download/v0.2.0-zig-edge.29/openclaw_zig_rpc_client-0.2.0.dev29-py3-none-any.whl"
pip install "https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases/download/v0.2.0-zig-edge.31/openclaw_zig_rpc_client-0.2.0.dev31-py3-none-any.whl"
```

Run directly with `uvx` after publishing:
Expand All @@ -23,7 +23,7 @@ uvx --from openclaw-zig-rpc-client openclaw-zig-rpc health --base-url http://127
Verified `uvx` Git fallback for the current edge tag:

```bash
uvx --from "git+https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime@v0.2.0-zig-edge.29#subdirectory=python/openclaw-zig-rpc-client" openclaw-zig-rpc health --base-url http://127.0.0.1:8080
uvx --from "git+https://github.com/adybag14-cyber/ZAR-Zig-Agent-Runtime@v0.2.0-zig-edge.31#subdirectory=python/openclaw-zig-rpc-client" openclaw-zig-rpc health --base-url http://127.0.0.1:8080
```

## Python Usage
Expand Down
2 changes: 1 addition & 1 deletion python/openclaw-zig-rpc-client/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "hatchling.build"

[project]
name = "openclaw-zig-rpc-client"
version = "0.2.0.dev29"
version = "0.2.0.dev31"
description = "Python JSON-RPC client for ZAR-Zig-Agent-Runtime gateway endpoints."
readme = "README.md"
requires-python = ">=3.9"
Expand Down
74 changes: 51 additions & 23 deletions scripts/docs-status-check.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
param(
[string]$ParityJsonPath = ".\release\parity-go-zig.json",
[switch]$RefreshParity,
[string]$ReleaseTag = "",
[string]$GitHubToken = $env:GITHUB_TOKEN
)

Expand All @@ -26,6 +27,28 @@ function Assert-Contains {
}
}

function Get-BranchReleaseTag {
param(
[string]$PackageJsonPath
)

if ([string]::IsNullOrWhiteSpace($PackageJsonPath) -or -not (Test-Path $PackageJsonPath)) {
return $null
}

try {
$packageJson = Get-Content -Path $PackageJsonPath -Raw | ConvertFrom-Json
$packageVersion = [string]$packageJson.version
if (-not [string]::IsNullOrWhiteSpace($packageVersion) -and $packageVersion -match '^\d+\.\d+\.\d+-zig-edge\.\d+$') {
return ('v' + $packageVersion)
}
} catch {
Write-Warning ("Unable to infer branch release tag from {0}: {1}" -f $PackageJsonPath, $_.Exception.Message)
}

return $null
}

$repoRoot = Resolve-Path (Join-Path $PSScriptRoot "..")
Push-Location $repoRoot
try {
Expand Down Expand Up @@ -55,30 +78,35 @@ try {
$originalRef = $report.baseline.original.ref
$originalBetaRef = $report.baseline.originalBeta.ref

$releaseTag = $null
$releaseHeaders = @{
"User-Agent" = "openclaw-zig-docs-status-check"
"Accept" = "application/vnd.github+json"
}
if ($GitHubToken) {
$releaseHeaders["Authorization"] = "Bearer $GitHubToken"
$releaseTag = $ReleaseTag
if ([string]::IsNullOrWhiteSpace($releaseTag)) {
$releaseTag = Get-BranchReleaseTag -PackageJsonPath "npm/openclaw-zig-rpc-client/package.json"
}
try {
$releases = Invoke-RestMethod -Headers $releaseHeaders -Uri "https://api.github.com/repos/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases?per_page=20"
if ($releases) {
foreach ($candidate in $releases) {
if ($candidate.draft) {
continue
}
$tag = [string]$candidate.tag_name
if (-not [string]::IsNullOrWhiteSpace($tag) -and $tag -match '^v\d+\.\d+\.\d+-zig-edge\.\d+$') {
$releaseTag = $tag
break
if ([string]::IsNullOrWhiteSpace($releaseTag)) {
$releaseHeaders = @{
"User-Agent" = "openclaw-zig-docs-status-check"
"Accept" = "application/vnd.github+json"
}
if ($GitHubToken) {
$releaseHeaders["Authorization"] = "Bearer $GitHubToken"
}
try {
$releases = Invoke-RestMethod -Headers $releaseHeaders -Uri "https://api.github.com/repos/adybag14-cyber/ZAR-Zig-Agent-Runtime/releases?per_page=20"
if ($releases) {
foreach ($candidate in $releases) {
if ($candidate.draft) {
continue
}
$tag = [string]$candidate.tag_name
if (-not [string]::IsNullOrWhiteSpace($tag) -and $tag -match '^v\d+\.\d+\.\d+-zig-edge\.\d+$') {
$releaseTag = $tag
break
}
}
}
} catch {
Write-Warning "Unable to resolve latest GitHub edge release tag via GitHub API. Release-tag docs checks will be skipped."
}
} catch {
Write-Warning "Unable to resolve latest GitHub edge release tag via GitHub API. Release-tag docs checks will be skipped."
}

$failures = @()
Expand All @@ -105,9 +133,9 @@ try {
Assert-Contains -Path "docs/operations.md" -Token ('ZIG_EVENTS_COUNT=' + $counts.zigEvents) -Label "docs/operations zig events token" -Failures ([ref]$failures)

if ($releaseTag) {
Assert-Contains -Path "README.md" -Token ('Latest published edge release tag: `' + $releaseTag + '`') -Label "README release tag token" -Failures ([ref]$failures)
Assert-Contains -Path "docs/index.md" -Token ('Latest published edge release tag: `' + $releaseTag + '`') -Label "docs/index release tag token" -Failures ([ref]$failures)
Assert-Contains -Path "docs/operations.md" -Token ('Latest published edge release: `' + $releaseTag + '`') -Label "docs/operations release tag token" -Failures ([ref]$failures)
Assert-Contains -Path "README.md" -Token ('Current edge release target tag: `' + $releaseTag + '`') -Label "README release tag token" -Failures ([ref]$failures)
Assert-Contains -Path "docs/index.md" -Token ('Current edge release target tag: `' + $releaseTag + '`') -Label "docs/index release tag token" -Failures ([ref]$failures)
Assert-Contains -Path "docs/operations.md" -Token ('Current edge release target: `' + $releaseTag + '`') -Label "docs/operations release tag token" -Failures ([ref]$failures)
}

if ($failures.Count -gt 0) {
Expand Down
4 changes: 2 additions & 2 deletions scripts/release-preview.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,9 @@ $docsStatusScript = Join-Path $repoRoot "scripts\docs-status-check.ps1"
if (Test-Path $docsStatusScript) {
try {
if (-not [string]::IsNullOrWhiteSpace($env:GITHUB_TOKEN)) {
& $docsStatusScript -ParityJsonPath $parityJsonPath -GitHubToken $env:GITHUB_TOKEN
& $docsStatusScript -ParityJsonPath $parityJsonPath -ReleaseTag $Version -GitHubToken $env:GITHUB_TOKEN
} else {
& $docsStatusScript -ParityJsonPath $parityJsonPath
& $docsStatusScript -ParityJsonPath $parityJsonPath -ReleaseTag $Version
}
if (-not $?) {
throw "docs status drift gate failed."
Expand Down
2 changes: 1 addition & 1 deletion scripts/release-status.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ try {
$state = Get-WorkflowConclusionSummary -Workflow $workflow
$line = "- ``$($workflow.name)``: ``$state``"
if ($workflow.runId) {
$line += " (`$($workflow.runId)`)"
$line += " ($($workflow.runId))"
}
if (-not [string]::IsNullOrWhiteSpace($workflow.displayTitle)) {
$line += " - $($workflow.displayTitle)"
Expand Down
Loading