Skip to content

Commit 522b28b

Browse files
Copilotfermga
andcommitted
Remove non-canonical EN→IL requirement, implement THOL recursive validation
Co-authored-by: fermga <203334638+fermga@users.noreply.github.com>
1 parent 888d69c commit 522b28b

File tree

2 files changed

+55
-96
lines changed

2 files changed

+55
-96
lines changed

src/tnfr/operators/grammar.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,13 +1242,19 @@ def _finalize(self, names: Sequence[str]) -> None:
12421242
message=f"C1: sequence must end with {cierre} (EXISTENCE & CLOSURE constraint)",
12431243
)
12441244

1245-
# C1.3: Reception→Coherence segment (structural foundation)
1246-
if not (self._found_reception and self._found_coherence):
1247-
raise SequenceSyntaxError(
1248-
index=-1,
1249-
token=None,
1250-
message=f"C1: missing {RECEPTION}{COHERENCE} segment (structural foundation required)",
1251-
)
1245+
# NOTE: C1.3 Reception→Coherence segment validation removed
1246+
# This requirement does NOT derive from the 4 physical constraints (C1-C4).
1247+
# It was a heuristic for "structural foundation" but is not canonical.
1248+
# Sequences are valid if they satisfy C1 (start/end), C2 (continuity),
1249+
# C3 (stabilizer), and C4 (threshold physics) - nothing more.
1250+
#
1251+
# Removed validation:
1252+
# if not (self._found_reception and self._found_coherence):
1253+
# raise SequenceSyntaxError(
1254+
# index=-1,
1255+
# token=None,
1256+
# message=f"C1: missing {RECEPTION}→{COHERENCE} segment (structural foundation required)",
1257+
# )
12521258

12531259
# ═══════════════════════════════════════════════════════════════════
12541260
# C3: BOUNDEDNESS

tests/unit/operators/test_thol_recursive_validation.py

Lines changed: 42 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -255,151 +255,104 @@ def test_thol_nested_unclosed_inner(self):
255255

256256

257257
class TestTholValidAutonomous:
258-
"""Test valid autonomous THOL subsequences."""
258+
"""Test valid THOL subsequences following C1-C4 physics."""
259259

260-
def test_thol_simple_valid(self):
261-
"""Simple valid THOL: AL → ENIL → SILENCE."""
260+
def test_thol_minimal_valid(self):
261+
"""Minimal valid THOL: AL → ILNAV, closed with SHA."""
262262
valid = [
263-
EMISSION,
264-
RECEPTION,
265-
COHERENCE,
266-
DISSONANCE,
267-
SELF_ORGANIZATION,
268-
EMISSION, # Valid start (C1)
269-
RECEPTION, # EN for EN→IL segment
270-
COHERENCE, # IL - stabilizer and completes EN→IL
271-
SILENCE, # Valid end operator (C1)
272-
SILENCE # THOL closure
263+
EMISSION, # C1 start
264+
COHERENCE, # C3 stabilizer
265+
DISSONANCE, # Destabilizer for THOL (C4)
266+
SELF_ORGANIZATION, # THOL opening
267+
EMISSION, # C1 start
268+
COHERENCE, # C3 stabilizer
269+
TRANSITION, # C1 valid end (not a THOL closure)
270+
SILENCE, # THOL closure
271+
TRANSITION # Sequence end (different from closure)
273272
]
274273
result = validate_sequence(valid)
275274
assert result.passed
276275

277276
def test_thol_with_transition_end(self):
278-
"""Valid THOL ending with NAV (valid end operator)."""
277+
"""Valid THOL ending with NAV."""
279278
valid = [
280279
EMISSION,
281-
RECEPTION,
282-
COHERENCE,
283-
DISSONANCE,
284-
SELF_ORGANIZATION,
285-
EMISSION, # Valid start
286-
RECEPTION, # EN→IL segment
287-
COHERENCE, # IL stabilizer
288-
RESONANCE,
289-
TRANSITION, # Valid end operator (C1)
290-
SILENCE
291-
]
292-
result = validate_sequence(valid)
293-
assert result.passed
294-
295-
def test_thol_with_recursivity_end(self):
296-
"""Valid THOL ending with REMESH (valid end operator)."""
297-
valid = [
298-
EMISSION,
299-
RECEPTION,
300280
COHERENCE,
301281
DISSONANCE,
302282
SELF_ORGANIZATION,
303283
EMISSION,
304-
RECEPTION,
305284
COHERENCE,
306-
RECURSIVITY, # Valid end operator (C1)
307-
CONTRACTION # THOL closure with NUL
285+
TRANSITION, # C1 valid end
286+
SILENCE # THOL closure
308287
]
309288
result = validate_sequence(valid)
310289
assert result.passed
311290

312-
def test_thol_starting_with_recursivity(self):
313-
"""Valid THOL starting with REMESH."""
291+
def test_thol_with_recursivity_end(self):
292+
"""Valid THOL ending with REMESH."""
314293
valid = [
315294
EMISSION,
316-
RECEPTION,
317295
COHERENCE,
318296
DISSONANCE,
319297
SELF_ORGANIZATION,
320-
RECURSIVITY, # Valid start (C1)
321-
RECEPTION, # EN→IL segment
322-
COHERENCE, # IL stabilizer
323-
SILENCE, # Valid end
324-
SILENCE
298+
RECURSIVITY, # C1 valid start
299+
COHERENCE, # C3 stabilizer
300+
RECURSIVITY, # C1 valid end
301+
SILENCE # THOL closure
325302
]
326303
result = validate_sequence(valid)
327304
assert result.passed
328305

329-
def test_thol_starting_with_transition(self):
330-
"""Valid THOL starting with NAV."""
306+
def test_thol_with_dissonance_end(self):
307+
"""Valid THOL ending with OZ (intentional closure)."""
331308
valid = [
332309
EMISSION,
333-
RECEPTION,
334310
COHERENCE,
335311
DISSONANCE,
336312
SELF_ORGANIZATION,
337-
TRANSITION, # Valid start (C1)
338-
RECEPTION, # EN→IL segment
339-
COHERENCE, # IL stabilizer
340-
SILENCE, # Valid end
341-
SILENCE
313+
EMISSION,
314+
COHERENCE,
315+
DISSONANCE, # C1 valid end - preserves tension
316+
SILENCE # THOL closure
342317
]
343318
result = validate_sequence(valid)
344319
assert result.passed
345320

346321
def test_thol_with_mutation_valid(self):
347-
"""Valid THOL with ZHIR (has prior IL and recent OZ)."""
322+
"""Valid THOL with ZHIR (C4: has prior IL and recent OZ)."""
348323
valid = [
349324
EMISSION,
350-
RECEPTION,
351-
COHERENCE,
352-
DISSONANCE,
353-
SELF_ORGANIZATION,
354-
EMISSION, # Valid start
355-
RECEPTION, # EN→IL segment
356-
COHERENCE, # IL stabilizer + base for ZHIR
357-
DISSONANCE, # Recent destabilizer for ZHIR
358-
MUTATION, # Valid: has both IL and OZ (C4)
359-
COHERENCE, # Stabilize after mutation
360-
SILENCE, # Valid end
361-
SILENCE
362-
]
363-
result = validate_sequence(valid)
364-
assert result.passed
365-
366-
def test_thol_ending_with_dissonance(self):
367-
"""Valid THOL ending with OZ (valid end operator - intentional closure)."""
368-
valid = [
369-
EMISSION,
370-
RECEPTION,
371325
COHERENCE,
372326
DISSONANCE,
373327
SELF_ORGANIZATION,
374328
EMISSION,
375-
RECEPTION,
376-
COHERENCE,
377-
DISSONANCE, # Valid end operator (C1) - preserves tension
378-
SILENCE
329+
COHERENCE, # C4: Prior IL for ZHIR
330+
DISSONANCE, # C4: Recent destabilizer for ZHIR
331+
MUTATION, # Valid: satisfies C4
332+
COHERENCE, # C3: Stabilizer
333+
SILENCE, # C1: Valid end
334+
SILENCE # THOL closure
379335
]
380336
result = validate_sequence(valid)
381337
assert result.passed
382338

383-
def test_thol_recursive_closure(self):
384-
"""Valid THOL ending with nested THOL (fractal closure)."""
339+
def test_thol_nested_valid(self):
340+
"""Nested THOL blocks (operational fractality)."""
385341
valid = [
386342
EMISSION,
387-
RECEPTION,
388343
COHERENCE,
389344
DISSONANCE,
390-
SELF_ORGANIZATION,
345+
SELF_ORGANIZATION, # Level 1
391346
EMISSION,
392-
RECEPTION,
393347
COHERENCE,
394348
DISSONANCE,
395-
SELF_ORGANIZATION, # Nested THOL
349+
SELF_ORGANIZATION, # Level 2 (nested)
396350
EMISSION,
397-
RECEPTION,
398351
COHERENCE,
399-
SILENCE, # Inner subsequence ends validly
400-
SILENCE, # Close nested THOL
401-
TRANSITION, # Outer subsequence ends validly
402-
SILENCE # Close outer THOL
352+
SILENCE, # Level 2 ends validly
353+
SILENCE, # Close Level 2 THOL
354+
TRANSITION, # Level 1 subsequence ends validly
355+
SILENCE # Close Level 1 THOL
403356
]
404357
result = validate_sequence(valid)
405358
assert result.passed

0 commit comments

Comments
 (0)