From 0bd6e746bf54e27b39d27be550c6856c1ae655a5 Mon Sep 17 00:00:00 2001 From: gunbc-ci-auto-heal Date: Sun, 20 Sep 2026 04:46:57 +0000 Subject: [PATCH] floor_naming_hygiene's module annotation names a subject The block landed at end of file in #11573, where no module item follows it, so the parse phase refuses it twelve times and the generated-artifact gate is red on every PR that merges main. DESIGN 4c admits only a standalone leading block attached to a module-scope declaration; it now leads the module's first declaration. No text changes. Co-Authored-By: Claude Opus 5 (1M context) --- src/v2/workflow/floor_naming_hygiene.dag | 25 ++++++++++++------------ 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/v2/workflow/floor_naming_hygiene.dag b/src/v2/workflow/floor_naming_hygiene.dag index 30e8f64e739..ad3cc736cc1 100644 --- a/src/v2/workflow/floor_naming_hygiene.dag +++ b/src/v2/workflow/floor_naming_hygiene.dag @@ -12,6 +12,18 @@ import v2.std.optional { } import v2.std.algebra { fold_list } +// SINGLE AUTHORITY for floor witness sidecar placement and the test-decl name scan predicates. Host +// discovery walks files and projects rows; these pure fns decide whether an entry placement is +// admissible and which decls a *_test.dag enrols. +// +// The line scan is still a SECOND PARSER of the authored `test` marker. Its replacement is not a +// refactor of this module: it needs the canonical parser to retain the marker, which v1 now does +// (v1.std.core DeclarationMarker TestMarked, set by v1.compiler.parse test_marked_item_result) and +// so does v2 (v2.extdeps.languages.dag dag_production_test_fn_decl parses it; v2.compiler.test_marker_capture +// carries it on its own channel). The grammar is no longer the obstacle; cost is, because floor +// discovery deliberately neither parses nor resolves the files it enumerates. The TRIGGER for +// retiring the scan is stated once, beside the producer it retires, at v2.compiler.body_lowering_fold +// body_lower_test_fn_decl_to_member -- not restated here, so the two cannot drift. data floor_test_sidecar_suffix: String = "_test.dag" data floor_wire_contract_sidecar_suffix: String = "_contracts.dag" @@ -236,16 +248,3 @@ fn floor_entries_requiring_test_sidecar(entry_paths: List) -> List