Files
pbakaus_impeccable/Cargo.toml
T
Paul BakausandClaude Fable 5.1 e355ebf714 reorg: public plumbing for the in-repo Rust workspace and the two-release flow
The engine binaries move from the impeccable-dist channel to this repo's own
GitHub Releases (tag engine-v<ENGINE_VERSION>), and the closed detector the
engine links arrives as detector-v<DETECTOR_VERSION> releases on the same
repo. This commit wires the public side for that; the crates themselves land
in the next commit.

- Launcher (sh + cmd), npm shim, fetch-engine and check-engine-release now
  download from github.com/pbakaus/impeccable/releases/download/engine-v<X>/.
- release.mjs gains `engine`: verifies ENGINE_VERSION against the platform
  package pins and the detector release, tags, pushes; release-engine.yml
  builds the five targets and publishes. check-detector-release.mjs is the
  matching release-order guard (with tests).
- Root Cargo.toml (workspace, lto = false with the reason), rust-toolchain.toml
  (exact pin), DETECTOR_VERSION, /target ignored.
- CI: rust + rust-windows jobs and an oracle job that replays the goldens
  against a source build, warn-only until the first detector release exists;
  ci-test-plan exposes a `rust` output.
- docs/ENGINE.md (the crate map and the closed-detector mechanism) and the
  CLAUDE.md engine, release-order and rules sections.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vau2X53xGTjjTCXWMVBoNY
2026-09-01 14:05:39 -07:00

43 lines
1.4 KiB
TOML

# The impeccable runtime: one Cargo workspace next to the skill it powers.
# `cargo build --release -p impeccable` produces the engine binary the launcher
# (skill/scripts/impeccable) runs. See docs/ENGINE.md.
[workspace]
resolver = "2"
members = ["crates/*"]
[workspace.package]
version = "0.1.0"
edition = "2021"
license = "Apache-2.0"
publish = false
[workspace.dependencies]
impeccable-foundation = { path = "crates/foundation" }
impeccable-common = { path = "crates/common" }
impeccable-core = { path = "crates/core" }
impeccable-detect = { path = "crates/detect" }
impeccable-html = { path = "crates/html" }
impeccable-browser = { path = "crates/browser" }
impeccable-live = { path = "crates/live" }
impeccable-context = { path = "crates/context" }
impeccable-hook = { path = "crates/hook" }
impeccable-comp = { path = "crates/comp" }
impeccable-comp-verbs = { path = "crates/comp-verbs" }
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
anyhow = "1"
thiserror = "2"
regex = "1"
once_cell = "1"
# No cross-crate LTO: crates/core links the prebuilt detector as a native
# archive of Rust objects, and fat or thin LTO internalizes the std symbols
# those opaque objects still reference (the link then fails with "symbol(s)
# not found"). Cargo's default thin-local LTO is what `lto = false` means.
[profile.release]
opt-level = 3
lto = false
codegen-units = 1
strip = true
panic = "abort"