audit: #317 cycle close — residues homed, gang-refusal claim pinned
Architect (fable gate): drift_found, minor, no contract violation. What holds: invariant 9 / engine-store split (Op::Use resolves only through the injected closure; the label sidecar is the C24 §Enforcement-shift-permitted store-layer discovery, the splice inlines so the marketplace Forbids clause is untouched); the C1 twin oracle; the open-pattern split consistent on both cadences across C24, guide, module docs, and the flipped pin. Drift resolutions: - [medium] #317 minute 4621 over-claimed "gangable" -> correcting comment 4629 posted; all prose surfaces already state "sweepable, not gangable". - [medium] four accepted residues had no tracker home -> collective issue #339 (instance-param ganging, gang-knob binding at splice, open-run refusal rendering, --unwired on use-bearing documents) per the consolidation practice. - [low] the documented "gang refuses an instance member path" claim was unpinned -> pinned here: gang_of_a_spliced_instance_member_path_refuses (this commit's one code change). - [low] --unwired on use-bearing documents -> #339 item 4. Regression: aura-bench report-only, all five surfaces fingerprint OK — engine_throughput -0.2% bars_per_s, ingest +0.0%, campaign_sweep +0.1% cpu / +0.5% rss / -0.3% wall, campaign_heavy +1.2% cpu / -8.8% rss / -0.9% wall, cli_fixed_cost +1.2% help / -1.8% run. No baseline moved, nothing to ratify. Erratum (batch-2 report): the harvest-sweep fieldtest spec consumed this cycle; removed with the plan/spec sweep at this close. refs #317
This commit is contained in:
@@ -1493,6 +1493,32 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
/// Documented residue pin (#317 audit): a `gang` op cannot fuse a spliced
|
||||
/// instance's member param — a gang fuses a PRIMITIVE's raw `(name, pos)`
|
||||
/// slot, and an instance's params are nested/path-qualified. The refusal
|
||||
/// is the ordinary no-such-open-param shape on the instance node, so the
|
||||
/// authoring-guide/C24 claim "the gang op refuses a composite instance's
|
||||
/// member path" stays an observed fact, not prose.
|
||||
#[test]
|
||||
fn gang_of_a_spliced_instance_member_path_refuses() {
|
||||
let subgraph = |_: &str| Some(use_fixture());
|
||||
let mut s = GraphSession::new("g", &std_vocabulary, &subgraph);
|
||||
s.apply(Op::Use { ref_id: "fixture".into(), name: Some("gate".into()), bind: vec![] })
|
||||
.unwrap();
|
||||
s.apply(Op::Add { type_id: "SMA".into(), as_name: Some("solo".into()), bind: vec![] })
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
s.apply(Op::Gang {
|
||||
as_name: "fused".into(),
|
||||
into: vec!["gate.sma.length".into(), "solo.length".into()],
|
||||
}),
|
||||
Err(OpError::BadParam {
|
||||
node: "gate".into(),
|
||||
err: BindOpError::UnknownParam("sma.length".into()),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/// DAG invariant (domain invariant 5 / C9), through an instance: a
|
||||
/// `connect` closing a cycle through a spliced instance is rejected
|
||||
/// eagerly, the instance treated as one opaque node (#317) — the same
|
||||
|
||||
Reference in New Issue
Block a user