Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
2f734e1
Add Echo target IR lowering
flyingrobots Jun 28, 2026
1f3923d
Connect Echo target IR to lowerability facts
flyingrobots Jun 28, 2026
8177d39
Fix: use selected lowerability effects for target IR
flyingrobots Jun 28, 2026
e43fd11
Fix: preserve obstruction arms in target IR
flyingrobots Jun 28, 2026
fc3e93e
Fix: preserve intent results in target IR
flyingrobots Jun 28, 2026
dcc1f75
Fix: preserve effect bindings in target IR
flyingrobots Jun 28, 2026
8cd979f
Fix: validate target operation profiles
flyingrobots Jun 28, 2026
c3f47b0
Fix: reject empty target IR intents
flyingrobots Jun 28, 2026
bdd3fb8
Fix: split target IR lowering helpers
flyingrobots Jun 28, 2026
6f04432
Fix: gate target facts on lowerability status
flyingrobots Jun 28, 2026
24b81d4
Fix: bind target facts to lowerability profile
flyingrobots Jun 28, 2026
f5cb14a
Fix: reject foreign target intrinsics
flyingrobots Jun 28, 2026
c2cfe1b
Fix: deduplicate native target selections
flyingrobots Jun 28, 2026
d503ede
Fix: reject unsupported Core ABI for target IR
flyingrobots Jun 28, 2026
5b2d06c
Fix: reject unsupported Core capabilities
flyingrobots Jun 28, 2026
a5b0203
Fix: require digest-locked target profile
flyingrobots Jun 28, 2026
f60a803
Fix: scope target effect ambiguity to used effects
flyingrobots Jun 28, 2026
3e1160d
Fix: document fallible target fact bridge
flyingrobots Jun 28, 2026
d6f9225
Fix: bind target bridge to lowerability operation profile
flyingrobots Jun 28, 2026
da8d3b3
Fix: reject empty Core modules for target IR
flyingrobots Jun 28, 2026
7b0a961
Fix: bind target obstructions to lowerability evidence
flyingrobots Jun 28, 2026
c310e50
Fix: reject floating Core imports before target IR
flyingrobots Jun 28, 2026
f09869d
Fix: validate target profile reference in bridge
flyingrobots Jun 28, 2026
13dd9e7
Fix: assert preserved target IR fields
flyingrobots Jun 28, 2026
c1ab041
Fix: cover target IR failure kinds
flyingrobots Jun 28, 2026
9965199
Fix: format target IR tests
flyingrobots Jun 28, 2026
b2671fe
Fix: preserve Core obligations in target IR
flyingrobots Jun 28, 2026
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
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,25 @@ versions still track specification maturity rather than a released product.

## [Unreleased]

### Added

- Added the first Target IR lowering surface in `edict_syntax`: explicit
`echo.dpo@1` target facts can lower the supported effectful Core shape into a
deterministic in-memory `echo.span-ir/v1` review artifact, while non-Echo
targets and unsupported Core nodes reject with stable target-lowering failure
kinds before any artifact is emitted. Echo Target IR preserves effect result
bindings, effect inputs, obstruction failure keys, obstruction arm values, and
intent result expressions. Target IR lowering facts can also be derived from
selected native lowerability results, keeping the first Echo artifact path
tied to the lowerability report's target profile, operation profile, and
selected native effect support. The lowerer rejects unsupported Core ABI
versions, unsupported Core capability flags, undigested target-profile
references, non-Echo target intrinsics, operation profiles unsupported by the
selected target facts, and intents with no target-owned steps before Target IR
emission. Echo Target IR intents also preserve Core input constraints and Core
evaluation budgets so supported artifacts do not drop preconditions or
evaluation limits.

### Changed

- Marked `v0.8.0-alpha.1` as published in the release-process contract and
Expand Down
8 changes: 5 additions & 3 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -349,16 +349,17 @@ Non-goals:

Target date: TBD

Planned milestone: `v0.9.0-alpha.1`
Planned milestone: `v0.9.0-alpha.1` (#10)

Primary issues: TBD
Primary issue: #66

Release labels: `release:target-ir`, `release:lowerability`,
`release:target-profiles`

Scope:

- First target-specific IR for one deliberately narrow runtime profile.
- First target-specific IR for one deliberately narrow runtime profile:
`echo.dpo@1` lowering to `echo.span-ir/v1`.
- Lowering evidence that connects accepted Core obligations to the selected
target IR artifact.
- Structured target-lowering diagnostics for unsupported Core obligations.
Expand All @@ -376,6 +377,7 @@ Non-goals:

- No general target-lowering framework.
- No runtime execution guarantee.
- No git-warp lowering; `gitwarp.ref_crdt@1` is the next target after Echo.
- No v2 chained or composite adapter resolution.

## v0.10.0-alpha.1 - Public CLI And Structured Diagnostics Alpha
Expand Down
19 changes: 13 additions & 6 deletions crates/edict-syntax/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
//! digest-bound JSON files for the first supported profile, budget, and
//! write-class facts.
//! The crate also exposes typed v1 target-profile conformance, lowerability, and
//! contract-bundle checks plus typed Gate C admission-boundary checks.
//! first Echo Target IR lowering, contract-bundle checks, and typed Gate C
//! admission-boundary checks.
//! Developer-tooling support begins with lexical highlighting roles for editor
//! adapters.
//! Conformance validates runtime-neutral target-profile manifests. Lowerability
Expand All @@ -28,11 +29,11 @@
//! artifact and invocation evidence bindings without evaluating participant
//! policy.
//! Pure `fn`/`const` declarations, `record` semantic-effect statements,
//! list/map/unit expression literals, full source-language lowering, target
//! lowering, and full admission execution tooling are deferred. The crate
//! exposes the reference canonical Core encoder for `edict.canonical-cbor/v1`
//! and the domain-separated `edict.core.module/v1` Core digest used by reviewed
//! golden fixtures.
//! list/map/unit expression literals, full source-language lowering, general
//! target lowering, and full admission execution tooling are deferred. The
//! crate exposes the reference canonical Core encoder for
//! `edict.canonical-cbor/v1` and the domain-separated `edict.core.module/v1`
//! Core digest used by reviewed golden fixtures.
//!
//! Assurance tooling (HOLMES / Watson / Moriarty) remains shared platform
//! machinery. This crate validates typed references to its evidence; it does not
Expand All @@ -49,6 +50,7 @@ pub mod highlight;
pub mod lowerability;
pub mod parser;
pub mod semantic;
pub mod target_ir;
pub mod target_profile;
pub mod token;

Expand Down Expand Up @@ -97,6 +99,11 @@ pub use lowerability::{
};
pub use parser::{parse_module, ParseError, ParseErrorKind};
pub use semantic::{validate_module, validate_surface, SemanticError, SemanticErrorKind};
pub use target_ir::{
lower_to_target_ir, TargetEffectLowering, TargetIrArtifact, TargetIrIntent,
TargetIrLoweringFacts, TargetIrStep, TargetLoweringFailure, TargetLoweringFailureKind,
TargetLoweringReport, TargetLoweringStatus, ECHO_DPO_TARGET_PROFILE, ECHO_SPAN_IR_DOMAIN,
};
pub use target_profile::{
validate_target_profile_manifest, TargetProfileConformanceFailure,
TargetProfileConformanceFailureKind, TargetProfileConformanceReport,
Expand Down
4 changes: 4 additions & 0 deletions crates/edict-syntax/src/lowerability.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@ impl LowerabilityEffectResult {
pub struct LowerabilityReport {
pub status: LowerabilityStatus,
pub target_profile: String,
pub operation_profile: String,
pub obstruction_coordinates: Vec<String>,
pub effect_results: Vec<LowerabilityEffectResult>,
pub failures: Vec<LowerabilityFailure>,
}
Expand Down Expand Up @@ -288,6 +290,8 @@ pub fn check_lowerability(
LowerabilityReport {
status,
target_profile: facts.coordinate.clone(),
operation_profile: requirements.operation_profile.clone(),
obstruction_coordinates: requirements.obstruction_coordinates.clone(),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include per-effect obstruction proofs in the report

When an obstruction coordinate is declared only on a SemanticEffectRequirement, check_effect_obligations validates it and the report can still be Native, but this line copies only the aggregate requirements.obstruction_coordinates into LowerabilityReport. TargetIrLoweringFacts::from_lowerability_report then derives target facts from that incomplete list, so lower_to_target_ir rejects a Core effect arm for that otherwise-checked obstruction as MissingObstruction. Include the checked per-effect obstruction coordinates, deduped, in the report or bridge.

Useful? React with 👍 / 👎.

effect_results,
failures,
}
Expand Down
Loading