Skip to content
Open
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
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ The format is based on Keep a Changelog, and this project adheres to Semantic Ve

### Fixed

- **`weslaw` capability artifact version drift**: `wesley law capabilities
--json` now emits the PRD-canonical `wesley.law-capabilities/v1` API version.
Holmes continues to accept the pre-canonical `wesley.capability-report/v1`
string as a legacy input alias and normalizes it internally.
- **Rust Holmes validation gate review fixes**: Law evidence validation now
continues artifact checks when structure validation emits warning-only
diagnostics, rejects duplicate artifact roles after workspace-relative path
Expand Down Expand Up @@ -46,6 +50,28 @@ The format is based on Keep a Changelog, and this project adheres to Semantic Ve

### Added

- **Rust Holmes law assessment substrate**: Extended the unpublished
`wesley-holmes` crate through `HIMP-025` with normalized law coverage
subjects, category percentages, missing-subject display/omission accounting,
strict coverage count validation, report-only law capability ingest,
contract bundle manifest ingest with evidence-bundle provenance
cross-checks, stable semantic change findings derived from Wesley law diff
events without reclassifying event kinds, and profile/category law coverage
gate decisions with pass/warn/fail/unavailable outcomes.
- **Rust Holmes law diff ingest**: Added the first `LawDiffIngestPort`
implementation for `wesley.law-diff/v1` JSON artifacts, preserving Wesley's
event classifications, law ids, subjects, field changes, hash anchors, and
footprint resource deltas inside typed Holmes report data. The report now
exposes stable normalized event records with `lawDiff.changes[n]` event refs
and copied schema/law hash anchors while rejecting malformed JSON,
unsupported diff API versions, unknown event kinds, malformed diff hashes, and
duplicate law-id/event identities before assessment.
- **Rust Holmes law coverage ingest**: Added the first
`LawCoverageIngestPort` implementation for current
`wesley.law-coverage/v1` JSON artifacts, preserving profile, required
aggregate totals, per-category required posture, covered/total counts, and
missing subject coordinates while rejecting malformed JSON and unsupported
coverage API versions before assessment.
- **Rust Holmes law evidence validation gate**: Extended the unpublished
`wesley-holmes` crate with collected law evidence validation results,
required-versus-optional bundle artifact validation, canonical provenance
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion crates/wesley-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1516,7 +1516,7 @@ fn capability_report_from_law(law_ir: &LawIrV1) -> CapabilityReport {
.collect();

CapabilityReport {
api_version: "wesley.capability-report/v1",
api_version: "wesley.law-capabilities/v1",
report_only: true,
runtime_enforcement: false,
note: "Footprint capabilities are report-only in weslaw v1; no runtime enforcement is claimed.",
Expand Down
2 changes: 1 addition & 1 deletion crates/wesley-cli/tests/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@ fn law_capabilities_reports_footprints_without_runtime_enforcement() {
let stderr = String::from_utf8(output.stderr).expect("stderr should be utf8");
let report: serde_json::Value = serde_json::from_str(&stdout).expect("stdout should be json");

assert_eq!(report["apiVersion"], "wesley.capability-report/v1");
assert_eq!(report["apiVersion"], "wesley.law-capabilities/v1");
assert_eq!(report["reportOnly"], true);
assert_eq!(report["runtimeEnforcement"], false);
assert_eq!(
Expand Down
1 change: 1 addition & 0 deletions crates/wesley-holmes/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ publish = false

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
12 changes: 11 additions & 1 deletion crates/wesley-holmes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,14 @@ The crate follows the planned hexagonal boundary:
- `reporting`: future renderer-facing DTOs and report assembly helpers.

The current implementation includes the first local law evidence validation
gate. No public Holmes CLI command is exposed from Wesley yet.
gate, `wesley.law-diff/v1` ingest with stable normalized event records,
`wesley.law-coverage/v1` ingest with normalized profile/category counts and
omitted missing-subject accounting, report-only `wesley.law-capabilities/v1`
ingest, contract bundle manifest ingest with evidence-bundle provenance
cross-checks, semantic change findings with stable ids, and profile/category
law coverage gate decisions. No public Holmes CLI command is exposed from
Wesley yet.

Holmes also accepts the pre-canonical `wesley.capability-report/v1` capability
artifact name as a legacy input alias, normalizing it to
`wesley.law-capabilities/v1` internally.
Loading
Loading