tgi-foundation 0.2.0.dev13__tar.gz → 0.2.0.dev15__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tgi_foundation-0.2.0.dev13/tgi_foundation.egg-info → tgi_foundation-0.2.0.dev15}/PKG-INFO +1 -1
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/pyproject.toml +1 -1
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/causal_port_classes.py +25 -18
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/phase_bound_response_atlas_check.py +42 -32
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15/tgi_foundation.egg-info}/PKG-INFO +1 -1
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/LICENSE +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/MANIFEST.in +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/README.md +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/setup.cfg +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/__init__.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/acquisition_snapshot.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/acquisition_witness.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/causal_port_classes_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/compact_measured_path.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/compatible_joins.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/derivation.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/events.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/frame_engine.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/identity.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/incidence.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/incremental.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/intervention_continuity.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/intervention_continuity_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/intervention_edit_contrast.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/intervention_edit_contrast_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/intervention_roles.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/intervention_roles_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/lineage_state.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/lineage_state_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/local_edit_transport_classes.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/local_edit_transport_classes_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/measured_occurrence_path.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/observation_point.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/organization.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/organization_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/organization_snapshot.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/phase_bound_port_classes.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/phase_bound_response_atlas.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/phase_evidence.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/resonance.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/response_incidence_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/role_eligibility_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/role_history_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/role_projection_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/role_readout_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/role_response_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/role_work.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/source_bound_endpoint_transport.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/source_bound_endpoint_transport_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/source_bound_single_nmu_edit.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/source_bound_single_nmu_edit_check.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/spatial.py +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi_foundation.egg-info/SOURCES.txt +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi_foundation.egg-info/dependency_links.txt +0 -0
- {tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi_foundation.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tgi-foundation
|
|
3
|
-
Version: 0.2.0.
|
|
3
|
+
Version: 0.2.0.dev15
|
|
4
4
|
Summary: Native character-identity and geometric knowledge mechanisms for Topological Geometric Intelligence
|
|
5
5
|
Author: Emylton Leunufna
|
|
6
6
|
License: Copyright (c) 2026 Emylton Leunufna
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tgi-foundation"
|
|
7
|
-
version = "0.2.0.
|
|
7
|
+
version = "0.2.0.dev15"
|
|
8
8
|
description = "Native character-identity and geometric knowledge mechanisms for Topological Geometric Intelligence"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -31,22 +31,17 @@ def _event(source, action, ports):
|
|
|
31
31
|
return {'source': source, 'action_nmu': list(encode(action)), 'ports': observed}
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
def
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
for
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if key == action:
|
|
46
|
-
controls += 1
|
|
47
|
-
if any(event['ports'][name]['kind'] != 'STABLE' for name in names if name not in members):
|
|
48
|
-
comparators.add(key)
|
|
49
|
-
return len(contexts), controls, any(other != action for other in comparators)
|
|
34
|
+
def _accrue(stats, event, members, names):
|
|
35
|
+
"""Add one original C/L experience to an unchanged live class."""
|
|
36
|
+
action = tuple(event['action_nmu'])
|
|
37
|
+
ports = event['ports']
|
|
38
|
+
if all(ports[name]['kind'] != 'STABLE' for name in members):
|
|
39
|
+
context = tuple(tuple(ports[name]['before_nmu']) for name in members)
|
|
40
|
+
stats['contexts'].setdefault(action, set()).add(context)
|
|
41
|
+
if all(ports[name]['kind'] == 'STABLE' for name in members):
|
|
42
|
+
stats['controls'][action] = stats['controls'].get(action, 0) + 1
|
|
43
|
+
if any(ports[name]['kind'] != 'STABLE' for name in names if name not in members):
|
|
44
|
+
stats['comparators'].add(action)
|
|
50
45
|
|
|
51
46
|
|
|
52
47
|
def form(events, *, revision=REVISION, valid_row=None):
|
|
@@ -56,7 +51,7 @@ def form(events, *, revision=REVISION, valid_row=None):
|
|
|
56
51
|
if valid_row is None:
|
|
57
52
|
valid_row = valid_contrast
|
|
58
53
|
traces, phases, names, seen, actions = {}, [], None, set(), set()
|
|
59
|
-
prior, epoch = None, 0
|
|
54
|
+
prior, epoch, cache = None, 0, {}
|
|
60
55
|
for index, event in enumerate(events):
|
|
61
56
|
if type(event) is not dict or set(event) != {'source', 'action_nmu', 'ports'} or \
|
|
62
57
|
type(event['source']) is not str or not event['source'] or event['source'] in seen or \
|
|
@@ -82,9 +77,20 @@ def form(events, *, revision=REVISION, valid_row=None):
|
|
|
82
77
|
groups = sorted(tuple(members) for members in grouped.values())
|
|
83
78
|
cells, winners = [], []
|
|
84
79
|
for members in groups:
|
|
80
|
+
key = (epoch, members)
|
|
81
|
+
stats = cache.get(key)
|
|
82
|
+
if stats is None:
|
|
83
|
+
stats = {'stop': epoch - 1, 'contexts': {},
|
|
84
|
+
'controls': {}, 'comparators': set()}
|
|
85
|
+
cache[key] = stats
|
|
86
|
+
for position in range(stats['stop'] + 1, index + 1):
|
|
87
|
+
_accrue(stats, events[position], members, names)
|
|
88
|
+
stats['stop'] = index
|
|
85
89
|
counts = []
|
|
86
90
|
for action in sorted(actions):
|
|
87
|
-
omega
|
|
91
|
+
omega = len(stats['contexts'].get(action, ()))
|
|
92
|
+
controls = stats['controls'].get(action, 0)
|
|
93
|
+
comparator = any(other != action for other in stats['comparators'])
|
|
88
94
|
counts.append({'action_nmu': list(action), 'omega': omega,
|
|
89
95
|
'controls': controls, 'comparator': comparator})
|
|
90
96
|
if omega >= OMEGA_CRIT and controls and comparator:
|
|
@@ -93,6 +99,7 @@ def form(events, *, revision=REVISION, valid_row=None):
|
|
|
93
99
|
if prior is not None and prior not in groups:
|
|
94
100
|
result = {'status': 'REVOKED', 'action_nmu': None, 'members': None}
|
|
95
101
|
prior, epoch = None, index + 1
|
|
102
|
+
cache = {}
|
|
96
103
|
elif len(winners) == 1:
|
|
97
104
|
action, members = winners[0]
|
|
98
105
|
result = {'status': 'CRYSTAL', 'action_nmu': list(action), 'members': list(members)}
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/phase_bound_response_atlas_check.py
RENAMED
|
@@ -14,10 +14,11 @@ def verify(events, certificate):
|
|
|
14
14
|
certificate['revision'] != REVISION or \
|
|
15
15
|
certificate['registry'] != REGISTRY_ID:
|
|
16
16
|
return False
|
|
17
|
-
previous_keys, previous_births, previous_roles = set(), {}, set()
|
|
17
|
+
previous_keys, previous_births, previous_roles, previous_stats = set(), {}, set(), {}
|
|
18
18
|
expected_phases = []
|
|
19
19
|
names = None
|
|
20
20
|
prepared = []
|
|
21
|
+
traces = {}
|
|
21
22
|
for index in range(len(events)):
|
|
22
23
|
row = events[index]
|
|
23
24
|
if type(row) is not dict or set(row) != {'source', 'action', 'ports'}:
|
|
@@ -27,49 +28,57 @@ def verify(events, certificate):
|
|
|
27
28
|
names = current_names
|
|
28
29
|
if current_names != names or len(names) < 3:
|
|
29
30
|
return False
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
for
|
|
38
|
-
|
|
31
|
+
action_id = tuple(encode(row['action']))
|
|
32
|
+
before = {port: tuple(encode(row['ports'][port][0])) for port in names}
|
|
33
|
+
changed = {port: row['ports'][port][0] != row['ports'][port][1]
|
|
34
|
+
for port in names}
|
|
35
|
+
prepared.append((action_id, before, changed))
|
|
36
|
+
if action_id not in traces:
|
|
37
|
+
traces[action_id] = {port: () for port in names}
|
|
38
|
+
for port in names:
|
|
39
|
+
traces[action_id][port] += (changed[port],)
|
|
40
|
+
current_keys, new_births, admitted, cells, current_stats = set(), {}, set(), [], {}
|
|
41
|
+
for action in sorted(traces):
|
|
39
42
|
patterns = {}
|
|
40
43
|
for port in names:
|
|
41
|
-
|
|
42
|
-
patterns.setdefault(pattern, []).append(port)
|
|
44
|
+
patterns.setdefault(traces[action][port], []).append(port)
|
|
43
45
|
for members in sorted(tuple(ports) for ports in patterns.values()):
|
|
44
46
|
key = (action, members)
|
|
45
47
|
current_keys.add(key)
|
|
46
48
|
born = previous_births[key] if key in previous_keys else index
|
|
47
49
|
new_births[key] = born
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
if key in previous_keys:
|
|
51
|
+
stats = previous_stats[key]
|
|
52
|
+
history = ((index, prepared[-1]),)
|
|
53
|
+
else:
|
|
54
|
+
stats = {'support': set(), 'all_changed': set(),
|
|
55
|
+
'all_stable': set(), 'controls': 0,
|
|
56
|
+
'has_other_action': False}
|
|
57
|
+
history = enumerate(prepared)
|
|
58
|
+
for position, (candidate_action, raw_before, raw_changed) in history:
|
|
59
|
+
context = tuple(raw_before[port] for port in members)
|
|
60
|
+
c = all(raw_changed[port] for port in members)
|
|
61
|
+
l = all(not raw_changed[port] for port in members)
|
|
56
62
|
if candidate_action == action:
|
|
57
63
|
if c:
|
|
58
|
-
|
|
64
|
+
stats['all_changed'].add(context)
|
|
59
65
|
if position >= born:
|
|
60
|
-
|
|
66
|
+
stats['support'].add(context)
|
|
61
67
|
if l:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
elif l and any(
|
|
68
|
+
stats['all_stable'].add(context)
|
|
69
|
+
stats['controls'] += 1
|
|
70
|
+
elif l and any(raw_changed[port]
|
|
65
71
|
for port in names if port not in members):
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
72
|
+
stats['has_other_action'] = True
|
|
73
|
+
current_stats[key] = stats
|
|
74
|
+
opposed = bool(stats['all_changed'] & stats['all_stable'])
|
|
75
|
+
crystallized = (len(stats['support']) >= OMEGA_CRIT and
|
|
76
|
+
stats['controls'] > 0 and
|
|
77
|
+
stats['has_other_action'] and not opposed)
|
|
70
78
|
cells.append({'action_nmu': list(action), 'members': list(members),
|
|
71
|
-
'born_at': born, 'omega': len(
|
|
72
|
-
'controls':
|
|
79
|
+
'born_at': born, 'omega': len(stats['support']),
|
|
80
|
+
'controls': stats['controls'],
|
|
81
|
+
'comparator': stats['has_other_action'],
|
|
73
82
|
'opposition': opposed, 'xi': int(crystallized)})
|
|
74
83
|
if crystallized:
|
|
75
84
|
admitted.add(key)
|
|
@@ -81,7 +90,8 @@ def verify(events, certificate):
|
|
|
81
90
|
'event_index': index, 'source': row['source'], 'classes': cells,
|
|
82
91
|
'admitted': granted, 'revoked': revoked,
|
|
83
92
|
'status': 'CRYSTAL' if granted else 'REVOKED' if revoked else 'NO_PATH'})
|
|
84
|
-
previous_keys, previous_births, previous_roles =
|
|
93
|
+
previous_keys, previous_births, previous_roles, previous_stats = (
|
|
94
|
+
current_keys, new_births, admitted, current_stats)
|
|
85
95
|
decision = expected_phases[-1] if expected_phases else {
|
|
86
96
|
'event_index': None, 'source': None, 'classes': [], 'admitted': [],
|
|
87
97
|
'revoked': [], 'status': 'NO_PATH'}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tgi-foundation
|
|
3
|
-
Version: 0.2.0.
|
|
3
|
+
Version: 0.2.0.dev15
|
|
4
4
|
Summary: Native character-identity and geometric knowledge mechanisms for Topological Geometric Intelligence
|
|
5
5
|
Author: Emylton Leunufna
|
|
6
6
|
License: Copyright (c) 2026 Emylton Leunufna
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/intervention_continuity_check.py
RENAMED
|
File without changes
|
|
File without changes
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/intervention_edit_contrast_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/local_edit_transport_classes.py
RENAMED
|
File without changes
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/local_edit_transport_classes_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/source_bound_endpoint_transport.py
RENAMED
|
File without changes
|
|
File without changes
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/source_bound_single_nmu_edit.py
RENAMED
|
File without changes
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi/source_bound_single_nmu_edit_check.py
RENAMED
|
File without changes
|
|
File without changes
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi_foundation.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{tgi_foundation-0.2.0.dev13 → tgi_foundation-0.2.0.dev15}/tgi_foundation.egg-info/top_level.txt
RENAMED
|
File without changes
|