Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
ec3b3c8
feat: add purpose-limited PII event protection
seonghobae Aug 21, 2026
5e06114
fix: harden purpose-limited PII protection
seonghobae Aug 21, 2026
33f312c
fix: bound durable audit retention and CI runtime deps
seonghobae Aug 21, 2026
5c51c3a
fix: isolate authorization audit churn
seonghobae Aug 21, 2026
f13c224
fix: bound durable analytics retention
seonghobae Aug 21, 2026
606eb37
test: prove authorization retention is bounded
seonghobae Aug 21, 2026
9f8b094
test: restore security test lintability
seonghobae Aug 21, 2026
1f83652
docs: describe cryptography runtime dependency
seonghobae Aug 21, 2026
35692d5
fix: harden pii key derivation and retention
seonghobae Aug 21, 2026
26d1d30
fix: reject unprefixed PII encryption keys
seonghobae Aug 21, 2026
f646b04
fix: keep denied-request auditing off the durable-persistence hot path
seonghobae Aug 22, 2026
3e682c4
fix: preserve bounded PII audit streams
seonghobae Aug 23, 2026
7233f64
fix: bind PII field encryption context
seonghobae Aug 23, 2026
5c6670c
fix: persist governance audit events synchronously
seonghobae Aug 23, 2026
b399eee
Merge remote-tracking branch 'origin/main' into codex/pii-purpose-enc…
seonghobae Aug 24, 2026
ef375cc
fix(deps): keep cryptography as the sole runtime dependency
seonghobae Aug 24, 2026
641b2d1
Merge origin/main into codex/pii-purpose-encryption
seonghobae Aug 24, 2026
519dd9d
fix(deps): lock SQLAlchemy greenlet runtime
seonghobae Aug 25, 2026
6b6bd78
fix(pii): harden derivation and remove scratch artifacts
seonghobae Aug 25, 2026
030b434
fix(ci): preserve exact Atheris Python marker
seonghobae Aug 25, 2026
299e99a
Merge remote-tracking branch 'origin/main' into local-803
seonghobae Aug 25, 2026
68064ee
Merge remote-tracking branch 'origin/main' into local-803
seonghobae Aug 25, 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
3 changes: 3 additions & 0 deletions .github/workflows/fuzz.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,9 @@ jobs:
- name: Fuzz model-judge response parser
run: python fuzz/fuzz_model_judge.py -max_total_time="${FUZZ_SECONDS}" -artifact_prefix=crash- fuzz/corpus/judge

- name: Fuzz PII encryption key boundary
run: python fuzz/fuzz_pii_key.py -max_total_time="${FUZZ_SECONDS}" -artifact_prefix=crash- fuzz/corpus/pii_key

- name: Fuzz reasoning-effort profile parser
run: python fuzz/fuzz_reasoning_effort_profile.py -max_total_time="${FUZZ_SECONDS}" -artifact_prefix=crash- fuzz/corpus/reasoning_effort_profile

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ jobs:

- name: Install test dependencies
# Hash-pinned per OpenSSF Scorecard Pinned-Dependencies. Reuses the
# property-test lockfile (pytest + hypothesis), which covers the full
# suite's requirements: the package itself is stdlib-only.
# property-test lockfile (pytest, hypothesis, and the package runtime
# dependencies), which covers the full suite without unpinned installs.
run: python -m pip install --require-hashes -r fuzz/requirements-property.txt

- name: Run full test suite
Expand Down
6 changes: 3 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ CI gates: `.github/workflows/security.yml` (CodeQL + pip-audit on `requirements.

## What this is

A stdlib-Python lab implementing a single OpenAI-compatible API that routes, delegates, verifies, and synthesizes work across a configurable pool of model agents — plus the org's cost-review and sync-vs-batch routing hub. Runtime dependencies are the Python standard library only (Hypothesis is the sole listed dependency, for the property tests); FastAPI/SQLAlchemy/psycopg exist as *optional* extras for the hardened production target, not the current runtime.
A stdlib-Python lab implementing a single OpenAI-compatible API that routes, delegates, verifies, and synthesizes work across a configurable pool of model agents — plus the org's cost-review and sync-vs-batch routing hub. The core runtime uses the Python standard library plus the selected `cryptography` dependency for field-level PII protection; Hypothesis is used for property tests, while FastAPI/SQLAlchemy/psycopg exist as *optional* extras for the hardened production target.

## Architecture

Expand All @@ -89,7 +89,7 @@ A stdlib-Python lab implementing a single OpenAI-compatible API that routes, del
- `orchestrator.py` — the domain heart: `ModelAgent`, `WorkflowStep`, `OrchestrationPolicy`, `ModelClient`, `TaskOrchestrator`, secret/PII redaction, budget enforcement, spend analytics, and the commercial-readiness report generators behind `/api/v1/*`. Domain code stays here until a second implementation forces extraction (see `docs/code_conventions.md`).
- `reasoning_effort_profile.py` — issue #568 role compute catalog and equal-budget true-θ ablation that emits θ̂ and RMSE(θ̂, θ). Production route/conduct defaults stay locked until `production_default_change_allowed`. Buyer next action: `python tests/test_reasoning_effort_profile.py`.
- `server.py` — HTTP delivery adapter and `SecurityConfig`; all request validation lives here.
- `admin.py` — static HTML/CSS/JS for the `/admin` operator console (stays inline while the product is dependency-free).
- `admin.py` — static HTML/CSS/JS for the `/admin` operator console (stays inline while the stdlib HTTP/admin surface remains sufficient).
- `credentials.py` / `kv_config.py` — the KV seam: `get_credential`/`register_credential` over pluggable backends (`InMemoryCredentialBackend` default; pgcrypto-encrypted `PostgresCredentialBackend`, selected via `CONTEXTUAL_ORCHESTRATOR_KV_BACKEND`).
- `cost_ledger.py` / `cost_router.py` / `batch_routing.py` / `token_counting.py` — the cost-review + routing hub: prompt-safe usage ledger with seven attribution dimensions, `RoutingPolicy` (sync vs batch from request hints + KV thresholds), and the [pg-llm-batch](https://github.com/ContextualWisdomLab/pg-llm-batch) batch/embeddings backends (a local in-process backend keeps the standalone path working with no external service).
- `api_contract.py` / `conventions.py` — API-shape and naming-rule enforcement helpers.
Expand All @@ -99,7 +99,7 @@ Agent pools are **data, not code**: `examples/agents.mock.json` and `examples/ag

### `conductor/` — context, not code

`conductor/` is the CDD (context-driven development) directory, not a Python package: `product.md` (intent and non-goals), `tech-stack.md` (stdlib-only rationale), `workflow.md` (the TDD/DDD/CDD method and the Ponytail design gate), `tracks.md` (active tracks). Update it when scope, dependencies, workflow, or domain terms change.
`conductor/` is the CDD (context-driven development) directory, not a Python package: `product.md` (intent and non-goals), `tech-stack.md` (stdlib HTTP/core rationale plus selected runtime dependencies), `workflow.md` (the TDD/DDD/CDD method and the Ponytail design gate), `tracks.md` (active tracks). Update it when scope, dependencies, workflow, or domain terms change.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

## Key conventions

Expand Down
5 changes: 4 additions & 1 deletion conductor/tech-stack.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ Python 3.11+.

## Dependencies

Runtime dependencies: none beyond the Python standard library.
Runtime dependencies:

- `cryptography` for AES-256-GCM protection of explicitly marked PII fields.
- The HTTP server, persistence, and orchestration core remain Python standard-library based.

Production target dependencies after this lab hardens:

Expand Down
Loading
Loading