Remove Weslaw from Wesley - #769
Conversation
📝 WalkthroughWalkthroughWeslaw support is removed from the CLI, core contracts, Rust emission, Holmes crate, schemas, fixtures, workflows, release checks, and current documentation. Extension-generation contracts and fixtures are migrated from v1 to v2 without embedded semantic-law data. ChangesExtension-generation v2
Repository cleanup
Estimated code review effort: 4 (Complex) | ~60 minutes Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🔍 The Case of Pull Request #769Schema Sets
Schema Set
|
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/ARCHITECTURE.md (1)
67-68: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winRemove dangling
RustHolmesedges from the diagram.After deleting the
RustHolmesnode, the edges at Lines 99 and 104 still reference it. Remove or rewire those edges so the Mermaid diagram accurately reflects the remaining architecture.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/ARCHITECTURE.md` around lines 67 - 68, Update the Mermaid architecture diagram to remove or rewire the dangling edges at the RustHolmes references near the wesley-emit-typescript and wesley-cli nodes, ensuring no remaining diagram edges reference the deleted RustHolmes node.
🧹 Nitpick comments (1)
crates/wesley-core/tests/extension_generation.rs (1)
115-166: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winMissing digest class:
projectionRoles.The test enumerates shape, operations, owner declarations, and settings, but
projection_rolesis also part of the canonical input and is copied into the review projection. Adding the case keeps this "every input class" claim true.♻️ Proposed additional case
let settings_change = input_with( shape_ir, operations, vec![owner], b"settings-v2", vec!["target-artifact"], ); assert_ne!(base_digest, settings_change.digest().unwrap());Add before the final block (cloning
shape_ir/operations/owneraccordingly):let roles_change = input_with( shape_ir.clone(), operations.clone(), vec![owner.clone()], b"settings-v1", vec!["target-artifact", "profile"], ); assert_ne!(base_digest, roles_change.digest().unwrap());🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/wesley-core/tests/extension_generation.rs` around lines 115 - 166, Add a projection_roles variation to every_generation_input_class_moves_the_generation_digest using the existing input_with helper, preserving the other inputs and adding a distinct role such as "profile" to the target roles. Assert its digest differs from base_digest, alongside the existing shape, operations, owner, and settings cases.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/design/TEMPLATE.md`:
- Around line 328-329: Replace the undocumented “wesley schema validate” example
with a currently supported schema command, preferably “wesley schema lower”
using the same schema and JSON arguments, or remove that command example while
preserving the valid cargo test command.
In `@docs/ENTRYPOINTS.md`:
- Around line 86-89: Update the LE-binary command entries in ENTRYPOINTS.md to
remove the retired --law options and any remaining metadata claims about
optional law-bundle hashes, matching the current CLI behavior and the
documentation in cli.md. Preserve the supported schema, output, codec-import,
and metadata options.
In `@docs/GUIDE.md`:
- Around line 93-95: Remove the documented Weslaw command entries immediately
above this section, including init-law, the law command family, and emit ...
--law; retain only currently supported command documentation and the existing
Holmes-family guidance.
---
Outside diff comments:
In `@docs/ARCHITECTURE.md`:
- Around line 67-68: Update the Mermaid architecture diagram to remove or rewire
the dangling edges at the RustHolmes references near the wesley-emit-typescript
and wesley-cli nodes, ensuring no remaining diagram edges reference the deleted
RustHolmes node.
---
Nitpick comments:
In `@crates/wesley-core/tests/extension_generation.rs`:
- Around line 115-166: Add a projection_roles variation to
every_generation_input_class_moves_the_generation_digest using the existing
input_with helper, preserving the other inputs and adding a distinct role such
as "profile" to the target roles. Assert its digest differs from base_digest,
alongside the existing shape, operations, owner, and settings cases.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 30f44f6a-3886-414d-91ea-57458903aed1
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (138)
.continuum/release.yml.github/workflows/rust-native.ymlCHANGELOG.mdCargo.tomlREADME.mdcrates/wesley-cli/src/main.rscrates/wesley-cli/tests/cli.rscrates/wesley-core/README.mdcrates/wesley-core/src/domain/extension_generation.rscrates/wesley-core/src/domain/law.rscrates/wesley-core/src/domain/mod.rscrates/wesley-core/src/lib.rscrates/wesley-core/tests/extension_generation.rscrates/wesley-core/tests/generated_json_artifacts.rscrates/wesley-core/tests/law_ir.rscrates/wesley-emit-rust/src/lib.rscrates/wesley-holmes/Cargo.tomlcrates/wesley-holmes/README.mdcrates/wesley-holmes/src/adapters/mod.rscrates/wesley-holmes/src/application/artifact_locator.rscrates/wesley-holmes/src/application/contract_manifest_ingest.rscrates/wesley-holmes/src/application/evidence_validation.rscrates/wesley-holmes/src/application/law_capability_ingest.rscrates/wesley-holmes/src/application/law_coverage_ingest.rscrates/wesley-holmes/src/application/law_diff_ingest.rscrates/wesley-holmes/src/application/mod.rscrates/wesley-holmes/src/domain/assessment.rscrates/wesley-holmes/src/domain/contract_manifest.rscrates/wesley-holmes/src/domain/diagnostic.rscrates/wesley-holmes/src/domain/evidence.rscrates/wesley-holmes/src/domain/finding.rscrates/wesley-holmes/src/domain/law_capability.rscrates/wesley-holmes/src/domain/law_coverage.rscrates/wesley-holmes/src/domain/law_coverage_gate.rscrates/wesley-holmes/src/domain/law_diff.rscrates/wesley-holmes/src/domain/mod.rscrates/wesley-holmes/src/domain/policy.rscrates/wesley-holmes/src/domain/versioning.rscrates/wesley-holmes/src/lib.rscrates/wesley-holmes/src/ports/mod.rscrates/wesley-holmes/src/reporting/mod.rscrates/wesley-holmes/tests/architecture.rscrates/wesley-holmes/tests/assessment_core.rscrates/wesley-holmes/tests/contract_manifest_ingest.rscrates/wesley-holmes/tests/foundation.rscrates/wesley-holmes/tests/law_capability_ingest.rscrates/wesley-holmes/tests/law_coverage_gate.rscrates/wesley-holmes/tests/law_coverage_ingest.rscrates/wesley-holmes/tests/law_diff_ingest.rscrates/wesley-holmes/tests/policy_core.rscrates/wesley-holmes/tests/semantic_findings.rscrates/wesley-holmes/tests/suppression_abuse.rsdocs/ARCHITECTURE.mddocs/BEARING.mddocs/END_TO_END.mddocs/ENTRYPOINTS.mddocs/GUIDE.mddocs/JEDIT_CAPABILITY_EVIDENCE.mddocs/NORTHSTAR.mddocs/README.mddocs/SDL.mddocs/TECHNICAL_TEARDOWN.mddocs/architecture/holmes-integration.mddocs/design/0019-weslaw-semantic-law-ir/weslaw-semantic-law-ir.mddocs/design/0020-holmes-weslaw-assurance-prd-test-plan/holmes-weslaw-assurance-prd-test-plan.mddocs/design/0022-justification-graph-assurance-kernel/justification-graph-assurance-kernel.mddocs/design/0023-remove-weslaw/SOURCE_remove-weslaw.mddocs/design/README.mddocs/design/TEMPLATE.mddocs/governance/RELEASE_POLICY.mddocs/reference/assurance-capability-matrix.mddocs/reference/cli.mddocs/reference/extension-generation.mddocs/topics/README.mddocs/topics/assurance-evidence.mddocs/topics/native-cli.mddocs/topics/weslaw.mddocs/truth-manifest.jsonschemas/README.mdschemas/weslaw-v1.schema.jsonschemas/wesley-contract-bundle-manifest-v1.schema.jsonschemas/wesley-extension-generation-input-v1.schema.jsonschemas/wesley-extension-generation-input-v2.schema.jsonschemas/wesley-generation-provenance-manifest-v2.schema.jsonschemas/wesley-generation-review-v2.schema.jsonschemas/wesley-law-diff-v1.schema.jsonschemas/wesley-law-ir-v1.schema.jsontest/ci-workflows.batstest/fixtures/extension-generation/input.jsontest/fixtures/extension-generation/provenance.jsontest/fixtures/extension-generation/review.jsontest/fixtures/weslaw/README.mdtest/fixtures/weslaw/accepted/channel-ttd-protocol-from-directive.weslaw.yamltest/fixtures/weslaw/accepted/channel-ttd-protocol.weslaw.yamltest/fixtures/weslaw/accepted/footprint-replace-range.weslaw.yamltest/fixtures/weslaw/accepted/invariant-translated-evidence.weslaw.yamltest/fixtures/weslaw/accepted/rust-validator-payoff.weslaw.yamltest/fixtures/weslaw/accepted/scalar-semantics.weslaw.yamltest/fixtures/weslaw/accepted/variant-playback-mode.weslaw.yamltest/fixtures/weslaw/contract-bundle-shape.graphqltest/fixtures/weslaw/diff/binding-broken.weslaw.yamltest/fixtures/weslaw/diff/ci-semantic-diff.jsontest/fixtures/weslaw/diff/ci-semantic-diff.mdtest/fixtures/weslaw/diff/holmes-blade-binding-broken.jsontest/fixtures/weslaw/diff/new.weslaw.yamltest/fixtures/weslaw/diff/old.weslaw.yamltest/fixtures/weslaw/rejected/duplicate-id.expected.txttest/fixtures/weslaw/rejected/duplicate-id.weslaw.yamltest/fixtures/weslaw/rejected/external-extra-predicate-field.expected.txttest/fixtures/weslaw/rejected/external-extra-predicate-field.weslaw.yamltest/fixtures/weslaw/rejected/field-equals-extra-predicate-field.expected.txttest/fixtures/weslaw/rejected/field-equals-extra-predicate-field.weslaw.yamltest/fixtures/weslaw/rejected/footprint-unknown-cardinality.expected.txttest/fixtures/weslaw/rejected/footprint-unknown-cardinality.weslaw.yamltest/fixtures/weslaw/rejected/raw-expression-invariant.expected.txttest/fixtures/weslaw/rejected/raw-expression-invariant.weslaw.yamltest/fixtures/weslaw/rejected/scalar-forbid-non-integer.expected.txttest/fixtures/weslaw/rejected/scalar-forbid-non-integer.weslaw.yamltest/fixtures/weslaw/rejected/scalar-min-greater-than-max.expected.txttest/fixtures/weslaw/rejected/scalar-min-greater-than-max.weslaw.yamltest/fixtures/weslaw/rejected/scalar-range-on-non-integer.expected.txttest/fixtures/weslaw/rejected/scalar-range-on-non-integer.weslaw.yamltest/fixtures/weslaw/rejected/scalar-unknown-ordering.expected.txttest/fixtures/weslaw/rejected/scalar-unknown-ordering.weslaw.yamltest/fixtures/weslaw/rejected/schema-hash-mismatch.expected.txttest/fixtures/weslaw/rejected/schema-hash-mismatch.weslaw.yamltest/fixtures/weslaw/rejected/unknown-field.expected.txttest/fixtures/weslaw/rejected/unknown-field.weslaw.yamltest/fixtures/weslaw/rejected/unknown-kind.expected.txttest/fixtures/weslaw/rejected/unknown-kind.weslaw.yamltest/fixtures/weslaw/rejected/unresolved-subject.expected.txttest/fixtures/weslaw/rejected/unresolved-subject.weslaw.yamltest/fixtures/weslaw/rejected/wrong-type-optional-sequence.expected.txttest/fixtures/weslaw/rejected/wrong-type-optional-sequence.weslaw.yamltest/release-governance.batstest/weslaw-fixtures.batswesley.config.jsonxtask/src/main.rs
💤 Files with no reviewable changes (100)
- test/fixtures/weslaw/rejected/duplicate-id.expected.txt
- test/fixtures/weslaw/rejected/scalar-forbid-non-integer.expected.txt
- test/fixtures/weslaw/diff/binding-broken.weslaw.yaml
- test/fixtures/weslaw/rejected/scalar-unknown-ordering.expected.txt
- crates/wesley-holmes/Cargo.toml
- crates/wesley-holmes/README.md
- test/fixtures/weslaw/rejected/schema-hash-mismatch.weslaw.yaml
- test/fixtures/weslaw/rejected/wrong-type-optional-sequence.expected.txt
- test/fixtures/weslaw/diff/old.weslaw.yaml
- crates/wesley-holmes/src/reporting/mod.rs
- docs/topics/native-cli.md
- test/fixtures/weslaw/rejected/duplicate-id.weslaw.yaml
- test/fixtures/weslaw/rejected/scalar-forbid-non-integer.weslaw.yaml
- test/fixtures/weslaw/README.md
- docs/topics/weslaw.md
- crates/wesley-core/src/lib.rs
- test/fixtures/weslaw/rejected/field-equals-extra-predicate-field.expected.txt
- test/fixtures/weslaw/accepted/channel-ttd-protocol.weslaw.yaml
- test/fixtures/weslaw/rejected/unknown-kind.expected.txt
- test/fixtures/weslaw/rejected/scalar-min-greater-than-max.expected.txt
- test/fixtures/weslaw/accepted/scalar-semantics.weslaw.yaml
- crates/wesley-holmes/tests/architecture.rs
- test/fixtures/weslaw/rejected/scalar-range-on-non-integer.expected.txt
- test/fixtures/weslaw/rejected/scalar-unknown-ordering.weslaw.yaml
- test/fixtures/weslaw/accepted/invariant-translated-evidence.weslaw.yaml
- test/fixtures/weslaw/rejected/schema-hash-mismatch.expected.txt
- test/fixtures/weslaw/accepted/rust-validator-payoff.weslaw.yaml
- test/fixtures/weslaw/rejected/scalar-min-greater-than-max.weslaw.yaml
- test/fixtures/weslaw/rejected/raw-expression-invariant.weslaw.yaml
- schemas/wesley-law-diff-v1.schema.json
- test/fixtures/weslaw/diff/ci-semantic-diff.md
- crates/wesley-holmes/tests/contract_manifest_ingest.rs
- test/fixtures/weslaw/rejected/unknown-field.expected.txt
- crates/wesley-holmes/src/adapters/mod.rs
- crates/wesley-holmes/tests/law_coverage_ingest.rs
- test/fixtures/weslaw/rejected/footprint-unknown-cardinality.weslaw.yaml
- test/fixtures/weslaw/rejected/external-extra-predicate-field.expected.txt
- schemas/wesley-contract-bundle-manifest-v1.schema.json
- test/fixtures/weslaw/rejected/unknown-field.weslaw.yaml
- test/fixtures/weslaw/diff/holmes-blade-binding-broken.json
- test/fixtures/weslaw/rejected/unresolved-subject.expected.txt
- crates/wesley-holmes/tests/semantic_findings.rs
- test/fixtures/weslaw/diff/ci-semantic-diff.json
- crates/wesley-holmes/tests/law_coverage_gate.rs
- docs/truth-manifest.json
- test/fixtures/weslaw/diff/new.weslaw.yaml
- test/fixtures/weslaw/rejected/scalar-range-on-non-integer.weslaw.yaml
- crates/wesley-holmes/tests/suppression_abuse.rs
- test/fixtures/weslaw/accepted/variant-playback-mode.weslaw.yaml
- test/fixtures/weslaw/rejected/field-equals-extra-predicate-field.weslaw.yaml
- crates/wesley-holmes/tests/law_capability_ingest.rs
- crates/wesley-holmes/tests/law_diff_ingest.rs
- crates/wesley-holmes/tests/policy_core.rs
- crates/wesley-holmes/src/application/law_capability_ingest.rs
- crates/wesley-holmes/tests/assessment_core.rs
- test/fixtures/weslaw/rejected/external-extra-predicate-field.weslaw.yaml
- test/fixtures/weslaw/accepted/footprint-replace-range.weslaw.yaml
- docs/topics/README.md
- test/fixtures/weslaw/rejected/unresolved-subject.weslaw.yaml
- test/fixtures/weslaw/rejected/unknown-kind.weslaw.yaml
- crates/wesley-core/tests/law_ir.rs
- docs/NORTHSTAR.md
- test/fixtures/weslaw/accepted/channel-ttd-protocol-from-directive.weslaw.yaml
- test/fixtures/weslaw/rejected/wrong-type-optional-sequence.weslaw.yaml
- test/fixtures/weslaw/rejected/footprint-unknown-cardinality.expected.txt
- crates/wesley-holmes/tests/foundation.rs
- crates/wesley-holmes/src/domain/law_coverage.rs
- crates/wesley-holmes/src/lib.rs
- schemas/weslaw-v1.schema.json
- crates/wesley-core/src/domain/mod.rs
- crates/wesley-holmes/src/application/contract_manifest_ingest.rs
- crates/wesley-holmes/src/application/evidence_validation.rs
- .github/workflows/rust-native.yml
- test/weslaw-fixtures.bats
- wesley.config.json
- crates/wesley-holmes/src/application/law_coverage_ingest.rs
- crates/wesley-holmes/src/application/artifact_locator.rs
- test/fixtures/weslaw/rejected/raw-expression-invariant.expected.txt
- crates/wesley-holmes/src/domain/contract_manifest.rs
- schemas/wesley-extension-generation-input-v1.schema.json
- Cargo.toml
- crates/wesley-holmes/src/application/mod.rs
- test/release-governance.bats
- crates/wesley-holmes/src/domain/law_capability.rs
- .continuum/release.yml
- crates/wesley-holmes/src/domain/diagnostic.rs
- crates/wesley-holmes/src/domain/finding.rs
- test/ci-workflows.bats
- schemas/wesley-law-ir-v1.schema.json
- crates/wesley-holmes/src/application/law_diff_ingest.rs
- crates/wesley-holmes/src/domain/evidence.rs
- crates/wesley-holmes/src/ports/mod.rs
- crates/wesley-holmes/src/domain/law_diff.rs
- crates/wesley-holmes/src/domain/law_coverage_gate.rs
- crates/wesley-holmes/src/domain/assessment.rs
- test/fixtures/weslaw/contract-bundle-shape.graphql
- crates/wesley-holmes/src/domain/versioning.rs
- crates/wesley-holmes/src/domain/mod.rs
- crates/wesley-holmes/src/domain/policy.rs
- xtask/src/main.rs
| cargo test -p wesley-core -- extension_generation | ||
| wesley schema validate --schema fixtures/schema.graphql --json |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Replace the undocumented schema validate command.
wesley schema validate is not listed in docs/reference/cli.md or the current root command surface. Use a supported command such as wesley schema lower --schema fixtures/schema.graphql --json, or remove the example.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/design/TEMPLATE.md` around lines 328 - 329, Replace the undocumented
“wesley schema validate” example with a currently supported schema command,
preferably “wesley schema lower” using the same schema and JSON arguments, or
remove that command example while preserving the valid cargo test command.
| wesley emit rust --schema <path> --out <path> [--metadata-out <path>] | ||
| wesley emit typescript --schema <path> --out <path> [--metadata-out <path>] | ||
| wesley emit le-binary-rust --schema <path> --out <path> [--law <path>] [--metadata-out <path>] [--codec-import <path>] | ||
| wesley emit le-binary-typescript --schema <path> --out <path> [--law <path>] [--metadata-out <path>] [--codec-import <path>] |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Remove the remaining Weslaw flags and metadata claims.
The adjacent LE-binary commands still document --law, and the metadata capability above still mentions optional law-bundle hashes. docs/reference/cli.md removes --law; update these entries so users are not directed to retired inputs.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/ENTRYPOINTS.md` around lines 86 - 89, Update the LE-binary command
entries in ENTRYPOINTS.md to remove the retired --law options and any remaining
metadata claims about optional law-bundle hashes, matching the current CLI
behavior and the documentation in cli.md. Preserve the supported schema, output,
codec-import, and metadata options.
| Holmes-family commands still live under `@wesley/holmes`. Use the | ||
| [Assurance Capability Matrix](./reference/assurance-capability-matrix.md) for | ||
| the shipped/transitional/foundation/concept status of each assurance surface. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Remove the still-advertised Weslaw commands from this current guide.
The current command list immediately above still documents init-law, the full law ... family, and emit ... --law, although the removal contract explicitly deletes those surfaces. Users following this guide will invoke unsupported commands, and the current documentation will not satisfy the repository’s docs-runtime-honesty objective.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/GUIDE.md` around lines 93 - 95, Remove the documented Weslaw command
entries immediately above this section, including init-law, the law command
family, and emit ... --law; retain only currently supported command
documentation and the existing Holmes-family guidance.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 03271f54f6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Holmes-family commands still live under `@wesley/holmes`; the Rust foundation | ||
| for future Holmes law-assurance ingestion lives in `crates/wesley-holmes` and | ||
| does not expose public CLI commands yet. Use the | ||
| Holmes-family commands still live under `@wesley/holmes`. Use the |
There was a problem hiding this comment.
Remove retired law commands from the guide
Update this migration section’s command list as well: lines 64–91 still direct users to init-law, every law subcommand, and emit ... --law, even though this commit makes those commands/options return usage errors. Anyone using the repository’s orientation guide will therefore be given a nonfunctional fast path immediately after upgrading.
AGENTS.md reference: AGENTS.md:L59-L61
Useful? React with 👍 / 👎.
What does this PR do?
Removes Weslaw, Law IR, the Weslaw-specific Rust Holmes crate, and their CLI, emitter, schema, fixture, workflow, and release surfaces. The retained extension-generation contract is now a v2 structural provenance seam with no embedded semantic-law input.
Why this approach?
Wesley remains a GraphQL structural compiler. Edict owns executable application semantics, while runtimes and target adapters own their capabilities and target-specific semantics.
Validation
cargo xtask preflightCloses #768
Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Refactor