strata-cli shell, strata-diag/0 schema, xtask CI harness

- crates/strata-cli: `strata` binary (clap). `strata parse` emits the tree
  or diagnostics as structured JSON (strata-parse/0 envelope carrying a
  strata-diag/0 report); `strata fmt --check` / `strata check` are honest
  not-yet-implemented stubs (exit 3, pointer to proposal/11-roadmap.md
  phase 1). Frontend behind a thin trait with a deterministic stub; marked
  ~5-line integration point (Cargo.toml `syntax` feature + src/frontend.rs)
  plus an #[ignore]d integration test for when strata-syntax lands.
- Diagnostic schema (src/diag.rs + docs/diagnostics.md): P-9 object —
  violated judgment, message, stable node path (D-052/R-LS-5), current
  span, severity, repair candidates with D-058 applicability vocabulary
  (machine_applicable verified-only / maybe_incorrect / has_placeholders);
  versioned "schema": "strata-diag/0".
- xtask CI harness: `cargo xtask ci` = rustfmt --check, clippy -D warnings,
  tests run twice with byte-compared artifacts (P-6 determinism smoke);
  .github/workflows/ci.yml documents the contract as exactly that command.
- CONTRIBUTING.md: probe promotion rule, merge-gating invariants (D-053
  fuzz, no-panic, determinism), decisions-register pointer, SPEC-ISSUES.md
  feedback rule.
- Root Cargo.toml: members glob so the workspace resolves while
  strata-syntax is mid-build and auto-includes it when it lands.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5376d66498Veronica committed on 7/17/2026, 11:37:39 PMparent0e1bc5f
16 files changed+1281-2