Skip to content

[Testing Call] Phase 1 cross-platform validation — Windows · Linux · macOS #18

@tharindupr

Description

@tharindupr

What this is

Phase 1 of ACF-SDK is complete. It delivers the full IPC wire protocol between
the Python SDK (PEP) and the Go sidecar (PDP) — binary frame encoding, HMAC-SHA256
authentication, and nonce-based replay protection.

We need real-world validation across operating systems before Phase 2 begins.

What Phase 1 covers

  • Go sidecar: UDS listener (Linux/macOS) and Named Pipe listener (Windows via go-winio)
  • Python SDK: socket.AF_UNIX transport (Linux/macOS) and Win32 named pipe via ctypes (Windows)
  • 54-byte binary frame: magic byte · version · nonce · HMAC-SHA256 · JSON payload
  • Decisions returned: ALLOW | SANITISE | BLOCK (hardcoded ALLOW in Phase 1 — pipeline wired in Phase 2)

Full details: docs/phase1.md

How to test

Prerequisites

  • Go 1.22+
  • Python 3.10+
  • A 32-byte hex key: python3 -c "import secrets; print(secrets.token_hex(32))"

1 — Start the sidecar

cd sidecar
export ACF_HMAC_KEY=<your-key>        # Linux/macOS
# set ACF_HMAC_KEY=<your-key>         # Windows cmd
# $env:ACF_HMAC_KEY="<your-key>"      # Windows PowerShell

go run ./cmd/sidecar

2 — Run Go tests

cd sidecar
go test ./...

3 — Run Python tests

cd sdk/python
pip install -e ".[dev]"
export ACF_HMAC_KEY=<your-key>
pytest -v

4 — End-to-end smoke test

With the sidecar running, in a second terminal:

import os, sys
sys.path.insert(0, "sdk/python")
os.environ["ACF_HMAC_KEY"] = "<your-key>"

from acf.firewall import Firewall
fw = Firewall()
result = fw.on_prompt("hello world")
print(result)  # should print Decision.ALLOW

Platforms we need coverage on

Platform Go tests Python tests E2E smoke Reported by
Linux (x86-64)
macOS (Apple Silicon)        
macOS (Intel)        
Windows 10/11 (x86-64)      

What to report if something breaks

Open a new issue with:

  • OS name and version
  • Go version (go version) and Python version (python3 --version)
  • Full error output
  • Which step failed (sidecar start / Go tests / Python tests / E2E)

Discussion

If anything in Phase 1 feels off — API shape, error messages, key loading UX,
platform behaviour — please discuss it in the comments below. Phase 2 (pipeline
stages) hasn't started yet, so this is the right time to raise concerns.

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions