Isolate generated artifacts

This commit is contained in:
tmk241
2026-09-02 01:01:08 +02:00
parent 3146de7794
commit 1dc9734f16
6 changed files with 1492 additions and 1452 deletions
+4 -10
View File
@@ -20,17 +20,11 @@ Blocked by: none
## HMX-M03 — Isolate artifact emission and diagnostics ## HMX-M03 — Isolate artifact emission and diagnostics
Outcome: generated artifacts and contract diagnostics are privately owned without byte, ordering, fingerprint, or diagnostic drift.
Outcome: generated Rust, metadata, lowering tables, and contract diagnostics are emitted through one private boundary behind the public builder.
Delta: architecture/003 assurance/001 Delta: architecture/003 assurance/001
Path: validated template and Rust facts -> stable IDs/metadata -> generated files -> downstream compilation diagnostics. Checks: exact generated API/diagnostic/fingerprint/no-op fixtures; package checks; Redgate; diff check; fresh review.
Build: move artifact assembly and diagnostic formatting as one responsibility; keep public entry points and no-op write behavior in place. State: Done
Risk: byte, ordering, fingerprint, or diagnostic drift breaks downstream builds despite compiling locally. Blocked by: none
Checks: `cargo test -p hemx-build`; exact generated API/diagnostic/fingerprint fixtures; no-op rewrite check; package archive checks; `redgate check`.
Non-goals: a new IR, new serialization, public API changes, or formatting-only rewrites.
Residual risk: this is the broadest movement slice and requires fresh-context review after integrated proof.
State: Draft
Blocked by: HMX-M02
## HMX-M04 — Localize Axum interaction forms ## HMX-M04 — Localize Axum interaction forms
File diff suppressed because it is too large Load Diff
+1
View File
@@ -1,4 +1,5 @@
use super::*; use super::*;
use crate::artifact::{event_tokens, static_attr, unkeyed_generated_target_diagnostic_for_scope};
pub(super) fn reject_selector_target_attrs( pub(super) fn reject_selector_target_attrs(
path: &Path, path: &Path,
+6 -1442
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -1,4 +1,5 @@
use super::*; use super::*;
use crate::artifact::rust_ident;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub(super) struct RustStructFact { pub(super) struct RustStructFact {
+1
View File
@@ -16,6 +16,7 @@ cargo test -p hemx-build emits_generated_resources_from_heml --lib # spec: assur
cargo test -p hemx-build unkeyed_generated_target_diagnostic_is_structured --lib # spec: assurance/001 check cargo test -p hemx-build unkeyed_generated_target_diagnostic_is_structured --lib # spec: assurance/001 check
test -f hemx-build/src/authoring.rs && grep -q '^mod authoring;$' hemx-build/src/lib.rs && ! grep -Eq '^fn (reject_selector_target_attrs|reject_unknown_hemx_attrs|known_hemx_attr|reject_invalid_hemx_attr_values|reject_invalid_hemx_attr_placement|reject_unkeyed_loop)\(' hemx-build/src/lib.rs # spec: architecture/001 check test -f hemx-build/src/authoring.rs && grep -q '^mod authoring;$' hemx-build/src/lib.rs && ! grep -Eq '^fn (reject_selector_target_attrs|reject_unknown_hemx_attrs|known_hemx_attr|reject_invalid_hemx_attr_values|reject_invalid_hemx_attr_placement|reject_unkeyed_loop)\(' hemx-build/src/lib.rs # spec: architecture/001 check
test -f hemx-build/src/rust_source.rs && grep -q '^mod rust_source;$' hemx-build/src/lib.rs && ! grep -Eq '^fn (context_type_for_heml_path|nearest_dir_with|rust_struct_facts_in|collect_rust_struct_facts|compact_tokens|loop_locals_for_surface|h_for_local_and_self_field|vec_element_type)\(' hemx-build/src/lib.rs # spec: architecture/002 check test -f hemx-build/src/rust_source.rs && grep -q '^mod rust_source;$' hemx-build/src/lib.rs && ! grep -Eq '^fn (context_type_for_heml_path|nearest_dir_with|rust_struct_facts_in|collect_rust_struct_facts|compact_tokens|loop_locals_for_surface|h_for_local_and_self_field|vec_element_type)\(' hemx-build/src/lib.rs # spec: architecture/002 check
test -f hemx-build/src/artifact.rs && grep -q '^mod artifact;$' hemx-build/src/lib.rs && ! grep -Eq '^fn (insert_resource|make_resource|generated_targets|unkeyed_generated_target_diagnostic|stable_id|rust_ident|write_if_changed|render_generated|render_symbols)\(' hemx-build/src/lib.rs # spec: architecture/003 check
cargo test -p hemx-build no_op_build_preserves_generated_artifact_timestamps --lib # spec: build/003 check # spec: resource/005 check cargo test -p hemx-build no_op_build_preserves_generated_artifact_timestamps --lib # spec: build/003 check # spec: resource/005 check
cargo test -p hemx-build changed_template_refreshes_generated_artifacts --lib # spec: resource/005 check cargo test -p hemx-build changed_template_refreshes_generated_artifacts --lib # spec: resource/005 check
cargo test -p hemx-derive --test surface surface_macro_preserves_inline_module_with_generated_file -- --exact # spec: derive/001 check cargo test -p hemx-derive --test surface surface_macro_preserves_inline_module_with_generated_file -- --exact # spec: derive/001 check