Skip to content
Merged
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 @@ -4,6 +4,32 @@ All notable changes to this project will be documented in this file.

## [Unreleased]

### Added

- **Cross-component `stream<T>` pairing detection** (issue #141,
ADR-3, `meld-core/src/p3_stream.rs`). Foundation for the in-module
stream adapter: when meld fuses two components that share a
`stream<T>` endpoint, today both sides still route every chunk
through host `pulseengine:async` imports. This PR adds the
detection half — a `StreamPairGraph` built at resolve time that
inventories which fused components form producer → consumer stream
pairings. The graph is attached to `DependencyGraph` next to the
resource graph. A `StreamPair` is a conservative *candidate*: it is
recorded only when two fusion-connected components have
complementary roles (one `StreamWrite`, one `StreamRead`) on a
stream of the **same element type** — pairing on matching element
type is the line between an honest candidate and a hallucinated
one. The ring-buffer (same-memory) and copy-chain (cross-memory)
adapter *emitter* is a runtime-verified follow-up (ADR-3 Path N);
cross-component stream codegen is only correct once executed on a
real runtime, so it is deliberately not in this PR. ADR-3 records
the design; SR-33's detection half is satisfied here, the codegen
half by the follow-up. 9 unit tests including the 4 ADR-3 gating
fixtures. Registering `p3_stream.rs` in the Mythos Tier-5 path
lists is a separate follow-up — claude-code-action self-validates
that the invoking workflow matches `main`, so a PR cannot both
modify `mythos-auto.yml` and be scanned by it.

### Changed

- **CI workflows now skip on docs/safety-only changes**
Expand Down
1 change: 1 addition & 0 deletions meld-core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ pub mod component_wrap;
mod error;
pub mod merger;
pub mod p3_async;
pub mod p3_stream;
pub mod parser;
pub mod resolver;
pub mod resource_graph;
Expand Down
9 changes: 9 additions & 0 deletions meld-core/src/merger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3692,6 +3692,7 @@ mod tests {
adapter_sites: Vec::new(),
module_resolutions: Vec::new(),
resource_graph: None,
stream_pair_graph: None,
reexporter_components: Vec::new(),
reexporter_resources: Vec::new(),
unresolved_imports: vec![
Expand Down Expand Up @@ -3906,6 +3907,7 @@ mod tests {
adapter_sites: Vec::new(),
module_resolutions: Vec::new(),
resource_graph: None,
stream_pair_graph: None,
reexporter_components: Vec::new(),
reexporter_resources: Vec::new(),
unresolved_imports: vec![
Expand Down Expand Up @@ -3958,6 +3960,7 @@ mod tests {
adapter_sites: Vec::new(),
module_resolutions: Vec::new(),
resource_graph: None,
stream_pair_graph: None,
reexporter_components: Vec::new(),
reexporter_resources: Vec::new(),
unresolved_imports: vec![
Expand Down Expand Up @@ -4018,6 +4021,7 @@ mod tests {
adapter_sites: Vec::new(),
module_resolutions: Vec::new(),
resource_graph: None,
stream_pair_graph: None,
reexporter_components: Vec::new(),
reexporter_resources: Vec::new(),
unresolved_imports: vec![
Expand Down Expand Up @@ -4069,6 +4073,7 @@ mod tests {
adapter_sites: Vec::new(),
module_resolutions: Vec::new(),
resource_graph: None,
stream_pair_graph: None,
reexporter_components: Vec::new(),
reexporter_resources: Vec::new(),
unresolved_imports: vec![
Expand Down Expand Up @@ -4124,6 +4129,7 @@ mod tests {
adapter_sites: Vec::new(),
module_resolutions: Vec::new(),
resource_graph: None,
stream_pair_graph: None,
reexporter_components: Vec::new(),
reexporter_resources: Vec::new(),
unresolved_imports: vec![
Expand Down Expand Up @@ -4256,6 +4262,7 @@ mod tests {
adapter_sites: Vec::new(),
module_resolutions: Vec::new(),
resource_graph: None,
stream_pair_graph: None,
reexporter_components: Vec::new(),
reexporter_resources: Vec::new(),
unresolved_imports: vec![
Expand Down Expand Up @@ -4414,6 +4421,7 @@ mod tests {
adapter_sites: Vec::new(),
module_resolutions: Vec::new(),
resource_graph: None,
stream_pair_graph: None,
reexporter_components: Vec::new(),
reexporter_resources: Vec::new(),
unresolved_imports: vec![
Expand Down Expand Up @@ -4565,6 +4573,7 @@ mod tests {
adapter_sites: Vec::new(),
module_resolutions: Vec::new(),
resource_graph: None,
stream_pair_graph: None,
reexporter_components: Vec::new(),
reexporter_resources: Vec::new(),
unresolved_imports: vec![
Expand Down
Loading
Loading