Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
de4453a
Remove project agent files so global rules apply
admin-raintree Jul 20, 2026
e366c25
Refresh Python runtime lock checksums
admin-raintree Jul 20, 2026
bb24cc6
Fix custom-domain tenant-column fallback in the scanner
admin-raintree Jul 22, 2026
d390c87
Add deployable comparator baselines and a false-positive evaluator
admin-raintree Jul 22, 2026
6a76a82
Add compound mutants, counterfactual-repair attribution, minimization…
admin-raintree Jul 22, 2026
745af03
Add adversarial clean controls, scalability curves, difficulty tiers
admin-raintree Jul 22, 2026
785086d
Add soundness invariant and per-fault-class completeness
admin-raintree Jul 22, 2026
9483eb6
Add real ClickHouse row-policy adapter; run CI on pull requests
admin-raintree Jul 22, 2026
f17f840
Add trusted-computing-base adapter mutation testing
admin-raintree Jul 22, 2026
e7af5ea
Add LLM reachability harness (build-only)
admin-raintree Jul 22, 2026
b9fb5f3
Add write-action fault model (v2 dimension)
admin-raintree Jul 22, 2026
43faab1
Add reconstructed real-fault and spec-blind benchmark suites
admin-raintree Jul 22, 2026
4e4ca61
Add brownfield scans of real open-source data-agent stacks
admin-raintree Jul 22, 2026
8bb367e
Lead with the defense-in-depth gap; index the extended studies
admin-raintree Jul 22, 2026
fd16c2c
Release 1.1.0
admin-raintree Jul 22, 2026
ae949a6
Sync PolicyStrata release lockfile
admin-raintree Jul 22, 2026
d471203
Merge remote-tracking branch 'origin/main' into agent/policystrata-re…
admin-raintree Jul 23, 2026
df6bad0
Release PolicyStrata 1.1.1
admin-raintree Jul 23, 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
66 changes: 65 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,19 @@ env:
MISE_LOCKED: "1"

on:
push:
branches: [main]
pull_request:
workflow_dispatch:
inputs:
run_postgres:
description: Run the PostgreSQL integration job
type: boolean
default: true
run_clickhouse:
description: Run the ClickHouse integration job
type: boolean
default: true

permissions:
contents: read
Expand Down Expand Up @@ -59,7 +71,7 @@ jobs:
name: PostgreSQL integration
runs-on: ubuntu-24.04
timeout-minutes: 30
if: ${{ github.event_name == 'workflow_dispatch' && inputs.run_postgres }}
if: ${{ github.event_name != 'workflow_dispatch' || inputs.run_postgres }}

services:
postgres:
Expand Down Expand Up @@ -109,6 +121,58 @@ jobs:
--config examples/postgres_dbt/policystrata_real_db_clean.yaml
--out runs/scan-real-db-clean

clickhouse-integration:
name: ClickHouse integration
runs-on: ubuntu-24.04
timeout-minutes: 30
if: ${{ github.event_name != 'workflow_dispatch' || inputs.run_clickhouse }}

services:
clickhouse:
image: clickhouse/clickhouse-server:25.6
env:
CLICKHOUSE_DB: policystrata
CLICKHOUSE_USER: policystrata
CLICKHOUSE_PASSWORD: policystrata
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: "1"
ports:
- 8123:8123
options: >-
--health-cmd "wget -qO- http://localhost:8123/ping | grep -q Ok"
--health-interval 3s
--health-timeout 3s
--health-retries 20

steps:
- name: Check out repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
with:
persist-credentials: false

- name: Set up mise
uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db
with:
version: 2026.7.1
install: true
cache: true

- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39
with:
enable-cache: true
cache-suffix: clickhouse-py-3.12

- name: Install dependencies
run: mise x python@3.12.13 -- uv sync --extra dev

- name: Run ClickHouse integration tests
env:
POLICYSTRATA_RUN_CLICKHOUSE_TESTS: "1"
run: mise x python@3.12.13 -- uv run pytest tests/test_clickhouse_integration.py

- name: Run ClickHouse row-policy evidence script
run: mise x python@3.12.13 -- uv run python scripts/clickhouse-rls-evidence.py

github-action:
name: GitHub Action smoke test
runs-on: ubuntu-24.04
Expand Down
35 changes: 35 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,41 @@

## [Unreleased]

## [1.1.1] - 2026-07-22

- Publish the review-response hardening work from the immutable `v1.1.0`
source line after integrating the current protected `main` branch.
- Keep the Node runtime and Agent Trust Gateway packages unchanged; this is a
Python-package release.

## [1.1.0] - 2026-07-21

Responds to the external review of the artifact. PyPI package only; the npm
runtime and gateway packages are unchanged this cycle.

- Lead the README and evidence snapshot with the defense-in-depth gap (a layered
conventional stack misses 159/1720 that responsibility contracts localize);
frame 1720/1720 as a construction-consistency check.
- Run CI on push and pull requests (was `workflow_dispatch` only); score the
PostgreSQL integration job by default and add a ClickHouse integration job.
- Fix the scanner's custom-domain tenant-column fallback: a `domain_path` domain
with no tenancy config no longer inherits the built-in `accounts.tenant_id`
column and is no longer flagged as tenant-scope-missing. Add per-table
`table_tenant_columns` config.
- Add a real ClickHouse row-policy adapter (`database_clickhouse.py`), DDL
fixture, env-gated integration tests, and evidence script.
- Add counterfactual-repair attribution validation, higher-order compound
mutants, witness-minimization metrics, a soundness invariant with per-class
completeness, scalability curves with a covering-array generator, difficulty
tiers, and adversarial clean controls at scale.
- Add deployable comparator baselines (`conventional_test_suite`,
`property_differential`) and a baseline false-positive evaluator.
- Add a reconstructed real-fault suite (19 cited public faults), a spec-blind
mutant suite, brownfield scan configs for four open-source stacks, adapter
trusted-computing-base mutation testing, a build-only LLM reachability harness,
and a self-contained write-action fault model.
- New CLI subcommands: `compound`, `counterfactual`, `minimization-report`.

## [1.0.5] - 2026-07-08

- Add generic `policystrata-json` evidence export, runtime event builder helpers for common Node
Expand Down
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,12 @@ Reproduce the paper-facing artifact run:
POLICYSTRATA_RUN_ROOT=/tmp/policystrata-final ./scripts/reproduce-final.sh
```

The paper reports deterministic artifact-suite coverage: 1720/1720 non-clean injected cases and
0 false positives on 80 clean controls. This is not a production-recall claim and not an
The paper's central evidence is the defense-in-depth gap: a layered stack of conventional
controls (validator, SQL snapshot, database/RLS, final-answer checks) misses 159 of 1720
injected cross-layer faults that PolicyStrata's responsibility-scoped contracts catch and
attribute to the first violating surface. The deterministic artifact-suite coverage figures
(1720/1720 non-clean injected cases, 0 false positives on 80 clean controls) are a consistency
check over PolicyStrata's own operator taxonomy, not a production-recall claim, and not an
authorization boundary.

## Quick Start
Expand Down Expand Up @@ -327,7 +331,7 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: raintree-technology/policystrata@v1.0.5
- uses: raintree-technology/policystrata@v1.1.1
with:
config: policystrata.yaml
out: runs/policystrata
Expand Down
Loading
Loading