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
35 changes: 35 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,41 @@ All notable changes to the QWED Protocol will be documented in this file.

## [Unreleased]

## [5.2.0] - 2026-06-19
Comment thread
rahuldass19 marked this conversation as resolved.
### Architecture: Structured Verification Diagnostics (#204)

Establishes the unified 3-layer `DiagnosticResult` model — the diagnostic contract that all verification engines will conform to. This is an **additive** release: no existing engine return types are changed. Engine conformance is tracked in blocked issues (#129, #130, #131, #133, #134, #162, #163, #164, #190, #205).

#### New: `DiagnosticResult` Model (`src/qwed_new/core/diagnostics.py`)

Three disclosure layers:
- **Layer 1 — Agent-Safe**: `agent_message: str` — agent/model-facing summary, no internals leaked
- **Layer 2 — Developer**: `developer_fields: dict` — structured evidence (constraint_id, advisory_checks, methods_used, evidence)
- **Layer 3 — Proof**: `proof_ref: Optional[str]` — sha256 hash of retained proof artifact; the authority bit

Key design:
- `DiagnosticStatus`: tri-state only (`VERIFIED` / `UNVERIFIABLE` / `BLOCKED`) — no proliferation
- `proof_ref` is the authority bit: present = admissible for control flow, None = reject
- `VERIFIED` requires `proof_ref` — structurally enforced in `__post_init__`
- `AdvisoryCheck`: non-proof-bearing analysis (LLM fallback, NLI, VLM) — `advisory_only=True` enforced
- `compute_proof_ref()`: deterministic sha256 hashing of JSON-serialized evidence
- `from_legacy_dict()`: migration helper for ad-hoc engine dicts (fail-closed states only)
- Both `DiagnosticResult` and `AdvisoryCheck` are `frozen=True` dataclasses — prevents post-construction bypass

#### Version Propagation
- `qwed` (PyPI): `5.1.2` -> `5.2.0`
- `qwed_sdk` (Python): `5.1.1` -> `5.2.0`
- `@qwed-ai/sdk` (NPM): `5.1.2` -> `5.2.0`
- `qwed` (crates.io/Rust): `5.1.2` -> `5.2.0`
- API version marker: `5.1.2` -> `5.2.0`
- Kubernetes deployment image: `5.1.2` -> `5.2.0`

#### Tests
- 83 new tests covering status taxonomy, all 3 layers, authority contract, fail-closed enforcement, advisory checks, proof hashing, serialization round-trip, legacy migration, frozen dataclass immutability, and realistic scenarios drawn from the 10 blocked issues.

#### Included PRs
- `#206` feat(diagnostics): unified 3-layer DiagnosticResult model (#204)

Comment thread
rahuldass19 marked this conversation as resolved.
## [5.1.2] - 2026-06-14
### Security: SymPy Expression Injection Fix (CWE-95)

Expand Down
2 changes: 1 addition & 1 deletion deploy/kubernetes/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ spec:
spec:
containers:
- name: qwed-core
image: docker.io/qwedai/qwed-verification:5.1.2
image: docker.io/qwedai/qwed-verification:5.2.0
Comment thread
rahuldass19 marked this conversation as resolved.
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8000
Expand Down
2 changes: 1 addition & 1 deletion qwed_sdk/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
VerificationType,
)

__version__ = "5.1.1"
__version__ = "5.2.0"
__all__ = [
"QWEDClient",
"QWEDAsyncClient",
Expand Down
2 changes: 1 addition & 1 deletion sdk-rust/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "qwed"
version = "5.1.2"
version = "5.2.0"
edition = "2021"
authors = ["QWED-AI"]
description = "Rust SDK for QWED Verification Protocol"
Expand Down
2 changes: 1 addition & 1 deletion sdk-rust/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Add to your `Cargo.toml`:

```toml
[dependencies]
qwed = "5.1.2"
qwed = "5.2.0"
tokio = { version = "1.0", features = ["rt-multi-thread", "macros"] }
```

Expand Down
2 changes: 1 addition & 1 deletion sdk-ts/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@qwed-ai/sdk",
"version": "5.1.2",
"version": "5.2.0",
"description": "TypeScript SDK for QWED Verification Protocol",
"main": "dist/index.js",
"module": "dist/index.mjs",
Expand Down
2 changes: 1 addition & 1 deletion src/qwed_new/api/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
SessionDependency = Annotated[Session, Depends(get_session)]
AgentTokenHeader = Annotated[str, Header(...)]

APP_VERSION = "5.1.2"
APP_VERSION = "5.2.0"

app = FastAPI(
title="QWED API",
Expand Down
Loading