Update Open Structure release to v26 with HH-RLHF and religion data
Browse files- README.md +8 -10
- bundle/corpus_manifest.json +7 -1
- bundle/graph.sqlite3 +2 -2
- bundle/integration_report.json +31 -25
- bundle/metadata.json +25 -25
- docs/AETHON_OPEN_STRUCTURE_HF_MODEL_CARD.md +8 -10
- runtime/aethon/rfi_surface.py +71 -172
README.md
CHANGED
|
@@ -232,10 +232,6 @@ Portable runtime included in the release:
|
|
| 232 |
- `run_aethon.py`
|
| 233 |
- `runtime/aethon/...`
|
| 234 |
|
| 235 |
-
This release now ships a portable bundle-native runtime pack.
|
| 236 |
-
|
| 237 |
-
It should be treated as a real runnable Open Structure entry point, not as a storage demo or thin adapter.
|
| 238 |
-
|
| 239 |
## Prompt Examples
|
| 240 |
|
| 241 |
These are examples, not a closed menu.
|
|
@@ -268,21 +264,21 @@ People should be able to ask in their own words.
|
|
| 268 |
|
| 269 |
| Item | Value |
|
| 270 |
| --- | --- |
|
| 271 |
-
| Bundle | `
|
| 272 |
| Public contract | `aethon.n1.bundle.v1` |
|
| 273 |
| Release class | `open-structure` |
|
| 274 |
| Size unit | `Structural Capacity (SC)` |
|
| 275 |
-
| SC | `
|
| 276 |
-
| Concepts | `
|
| 277 |
-
| Explicit relations | `
|
| 278 |
-
| Abstractions | `
|
| 279 |
| Raw unit residue | `0` |
|
| 280 |
|
| 281 |
### Native Benchmark Wall
|
| 282 |
|
| 283 |
| Suite | Result | Accuracy | Time |
|
| 284 |
| --- | --- | --- | --- |
|
| 285 |
-
| `aethon_n1_benchmark_v6.jsonl` | `43 / 43` | `1.0` | `3.
|
| 286 |
|
| 287 |
### What This Wall Covers
|
| 288 |
|
|
@@ -308,6 +304,8 @@ The ship corpus includes:
|
|
| 308 |
- Aethon native identity, code, math, story, and reasoning corpora
|
| 309 |
- Aethon AGI transfer corpora
|
| 310 |
- Humanity's Last Exam transfer corpus
|
|
|
|
|
|
|
| 311 |
- curated reasoning bases
|
| 312 |
- multilingual base mixes
|
| 313 |
- code and tool-use corpora
|
|
|
|
| 232 |
- `run_aethon.py`
|
| 233 |
- `runtime/aethon/...`
|
| 234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 235 |
## Prompt Examples
|
| 236 |
|
| 237 |
These are examples, not a closed menu.
|
|
|
|
| 264 |
|
| 265 |
| Item | Value |
|
| 266 |
| --- | --- |
|
| 267 |
+
| Bundle | `aethon_n1_base_full_parallel_v26` |
|
| 268 |
| Public contract | `aethon.n1.bundle.v1` |
|
| 269 |
| Release class | `open-structure` |
|
| 270 |
| Size unit | `Structural Capacity (SC)` |
|
| 271 |
+
| SC | `112,897` |
|
| 272 |
+
| Concepts | `27,344` |
|
| 273 |
+
| Explicit relations | `81,899` |
|
| 274 |
+
| Abstractions | `3,654` |
|
| 275 |
| Raw unit residue | `0` |
|
| 276 |
|
| 277 |
### Native Benchmark Wall
|
| 278 |
|
| 279 |
| Suite | Result | Accuracy | Time |
|
| 280 |
| --- | --- | --- | --- |
|
| 281 |
+
| `aethon_n1_benchmark_v6.jsonl` | `43 / 43` | `1.0` | `3.476s` |
|
| 282 |
|
| 283 |
### What This Wall Covers
|
| 284 |
|
|
|
|
| 304 |
- Aethon native identity, code, math, story, and reasoning corpora
|
| 305 |
- Aethon AGI transfer corpora
|
| 306 |
- Humanity's Last Exam transfer corpus
|
| 307 |
+
- Anthropic HH-RLHF instruction and safety corpus
|
| 308 |
+
- theology and religion grounding corpora
|
| 309 |
- curated reasoning bases
|
| 310 |
- multilingual base mixes
|
| 311 |
- code and tool-use corpora
|
bundle/corpus_manifest.json
CHANGED
|
@@ -35,6 +35,7 @@
|
|
| 35 |
"data/chat/aethon_logic_curriculum_v1.jsonl",
|
| 36 |
"data/chat/aethon_exact_answer_chat.jsonl",
|
| 37 |
"data/chat/aethon_exact_control_v1.jsonl",
|
|
|
|
| 38 |
"data/reasoning_corpora/clean/advanced_python_cot.jsonl",
|
| 39 |
"data/reasoning_corpora/clean/aethon_bootstrap_mix.jsonl",
|
| 40 |
"data/reasoning_corpora/clean/am_deepseek_r1_distilled.jsonl",
|
|
@@ -69,9 +70,12 @@
|
|
| 69 |
"data/chat/aethon_reasoning_chat_bootstrap.jsonl",
|
| 70 |
"data/chat/aethon_copy_probe_v1.jsonl",
|
| 71 |
"data/chat/aethon_speakback_chat.jsonl",
|
| 72 |
-
"data/chat/aethon_truthful_chat_bootstrap.jsonl"
|
|
|
|
|
|
|
| 73 |
],
|
| 74 |
"world": [
|
|
|
|
| 75 |
"data/world_knowledge/clean/structured_wikipedia_en.jsonl",
|
| 76 |
"data/world_knowledge/clean/fineweb_edu_sample.jsonl",
|
| 77 |
"data/world_knowledge/clean/cosmopedia_web.jsonl",
|
|
@@ -80,6 +84,8 @@
|
|
| 80 |
"data/world_knowledge/clean/masakhanews_pcm.jsonl",
|
| 81 |
"data/world_knowledge/clean/masakhanews_hau.jsonl",
|
| 82 |
"data/base/aethon_multilingual_base_mix.jsonl",
|
|
|
|
|
|
|
| 83 |
"data/chat/clean/helpsteer2_clean.jsonl",
|
| 84 |
"data/chat/clean/oasst1_clean.jsonl",
|
| 85 |
"data/chat/clean/ultrachat_200k_clean.jsonl"
|
|
|
|
| 35 |
"data/chat/aethon_logic_curriculum_v1.jsonl",
|
| 36 |
"data/chat/aethon_exact_answer_chat.jsonl",
|
| 37 |
"data/chat/aethon_exact_control_v1.jsonl",
|
| 38 |
+
"data/chat/clean/anthropic_hh_rlhf_clean.jsonl",
|
| 39 |
"data/reasoning_corpora/clean/advanced_python_cot.jsonl",
|
| 40 |
"data/reasoning_corpora/clean/aethon_bootstrap_mix.jsonl",
|
| 41 |
"data/reasoning_corpora/clean/am_deepseek_r1_distilled.jsonl",
|
|
|
|
| 70 |
"data/chat/aethon_reasoning_chat_bootstrap.jsonl",
|
| 71 |
"data/chat/aethon_copy_probe_v1.jsonl",
|
| 72 |
"data/chat/aethon_speakback_chat.jsonl",
|
| 73 |
+
"data/chat/aethon_truthful_chat_bootstrap.jsonl",
|
| 74 |
+
"data/chat/clean/anthropic_hh_rlhf_clean.jsonl",
|
| 75 |
+
"data/chat/clean/aethon_religion_chat_v1.jsonl"
|
| 76 |
],
|
| 77 |
"world": [
|
| 78 |
+
"data/native/world/aethon_religion_world_v1.jsonl",
|
| 79 |
"data/world_knowledge/clean/structured_wikipedia_en.jsonl",
|
| 80 |
"data/world_knowledge/clean/fineweb_edu_sample.jsonl",
|
| 81 |
"data/world_knowledge/clean/cosmopedia_web.jsonl",
|
|
|
|
| 84 |
"data/world_knowledge/clean/masakhanews_pcm.jsonl",
|
| 85 |
"data/world_knowledge/clean/masakhanews_hau.jsonl",
|
| 86 |
"data/base/aethon_multilingual_base_mix.jsonl",
|
| 87 |
+
"data/chat/clean/anthropic_hh_rlhf_clean.jsonl",
|
| 88 |
+
"data/chat/clean/aethon_religion_chat_v1.jsonl",
|
| 89 |
"data/chat/clean/helpsteer2_clean.jsonl",
|
| 90 |
"data/chat/clean/oasst1_clean.jsonl",
|
| 91 |
"data/chat/clean/ultrachat_200k_clean.jsonl"
|
bundle/graph.sqlite3
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4af92b7f61e8e9ce1ebb7ad512a6e5e05e0c6d7a6e4f515c2013a86c65bea6a5
|
| 3 |
+
size 24784896
|
bundle/integration_report.json
CHANGED
|
@@ -4,10 +4,10 @@
|
|
| 4 |
"tokenizer": "Aethon Native Concept Codec (ANCC)",
|
| 5 |
"size_unit": "Structural Capacity (SC)",
|
| 6 |
"capacity": {
|
| 7 |
-
"sc":
|
| 8 |
-
"concept_count":
|
| 9 |
-
"explicit_edge_count":
|
| 10 |
-
"abstraction_count":
|
| 11 |
"revision_count": 0,
|
| 12 |
"raw_unit_count": 0
|
| 13 |
},
|
|
@@ -64,6 +64,7 @@
|
|
| 64 |
"data/chat/aethon_logic_curriculum_v1.jsonl",
|
| 65 |
"data/chat/aethon_exact_answer_chat.jsonl",
|
| 66 |
"data/chat/aethon_exact_control_v1.jsonl",
|
|
|
|
| 67 |
"data/reasoning_corpora/clean/advanced_python_cot.jsonl",
|
| 68 |
"data/reasoning_corpora/clean/aethon_bootstrap_mix.jsonl",
|
| 69 |
"data/reasoning_corpora/clean/am_deepseek_r1_distilled.jsonl",
|
|
@@ -77,17 +78,17 @@
|
|
| 77 |
"data/groundedness/aethon_retrieval_verifier.jsonl"
|
| 78 |
],
|
| 79 |
"direct_facts": 0,
|
| 80 |
-
"rows":
|
| 81 |
"docs_accepted": 127774,
|
| 82 |
"docs_skipped": 0,
|
| 83 |
"learned_edges": 45253,
|
| 84 |
"derived_edges": 0,
|
| 85 |
-
"shard_count":
|
| 86 |
"merge_edges": 45253,
|
| 87 |
"merge_contradictions": 0,
|
| 88 |
"merge_raw_units": 0,
|
| 89 |
-
"completed_shards":
|
| 90 |
-
"total_rows_planned":
|
| 91 |
"captured_units": 127774
|
| 92 |
},
|
| 93 |
"math": {
|
|
@@ -146,25 +147,28 @@
|
|
| 146 |
"data/chat/aethon_reasoning_chat_bootstrap.jsonl",
|
| 147 |
"data/chat/aethon_copy_probe_v1.jsonl",
|
| 148 |
"data/chat/aethon_speakback_chat.jsonl",
|
| 149 |
-
"data/chat/aethon_truthful_chat_bootstrap.jsonl"
|
|
|
|
|
|
|
| 150 |
],
|
| 151 |
"direct_facts": 0,
|
| 152 |
-
"rows":
|
| 153 |
"docs_accepted": 5,
|
| 154 |
"docs_skipped": 0,
|
| 155 |
"learned_edges": 2,
|
| 156 |
"derived_edges": 0,
|
| 157 |
-
"shard_count":
|
| 158 |
"merge_edges": 2,
|
| 159 |
"merge_contradictions": 0,
|
| 160 |
"merge_raw_units": 0,
|
| 161 |
-
"completed_shards":
|
| 162 |
-
"total_rows_planned":
|
| 163 |
"captured_units": 5
|
| 164 |
},
|
| 165 |
"world": {
|
| 166 |
"lane": "world",
|
| 167 |
"sources": [
|
|
|
|
| 168 |
"data/world_knowledge/clean/structured_wikipedia_en.jsonl",
|
| 169 |
"data/world_knowledge/clean/fineweb_edu_sample.jsonl",
|
| 170 |
"data/world_knowledge/clean/cosmopedia_web.jsonl",
|
|
@@ -173,30 +177,32 @@
|
|
| 173 |
"data/world_knowledge/clean/masakhanews_pcm.jsonl",
|
| 174 |
"data/world_knowledge/clean/masakhanews_hau.jsonl",
|
| 175 |
"data/base/aethon_multilingual_base_mix.jsonl",
|
|
|
|
|
|
|
| 176 |
"data/chat/clean/helpsteer2_clean.jsonl",
|
| 177 |
"data/chat/clean/oasst1_clean.jsonl",
|
| 178 |
"data/chat/clean/ultrachat_200k_clean.jsonl"
|
| 179 |
],
|
| 180 |
"direct_facts": 0,
|
| 181 |
-
"rows":
|
| 182 |
-
"docs_accepted":
|
| 183 |
"docs_skipped": 0,
|
| 184 |
-
"learned_edges":
|
| 185 |
"derived_edges": 0,
|
| 186 |
-
"shard_count":
|
| 187 |
-
"merge_edges":
|
| 188 |
"merge_contradictions": 0,
|
| 189 |
"merge_raw_units": 0,
|
| 190 |
-
"completed_shards":
|
| 191 |
-
"total_rows_planned":
|
| 192 |
-
"captured_units":
|
| 193 |
}
|
| 194 |
},
|
| 195 |
"digest": {
|
| 196 |
-
"processed_units":
|
| 197 |
-
"total_units":
|
| 198 |
-
"learned_edges":
|
| 199 |
-
"derived_edges":
|
| 200 |
"rule_count": 0
|
| 201 |
}
|
| 202 |
}
|
|
|
|
| 4 |
"tokenizer": "Aethon Native Concept Codec (ANCC)",
|
| 5 |
"size_unit": "Structural Capacity (SC)",
|
| 6 |
"capacity": {
|
| 7 |
+
"sc": 112897,
|
| 8 |
+
"concept_count": 27344,
|
| 9 |
+
"explicit_edge_count": 81899,
|
| 10 |
+
"abstraction_count": 3654,
|
| 11 |
"revision_count": 0,
|
| 12 |
"raw_unit_count": 0
|
| 13 |
},
|
|
|
|
| 64 |
"data/chat/aethon_logic_curriculum_v1.jsonl",
|
| 65 |
"data/chat/aethon_exact_answer_chat.jsonl",
|
| 66 |
"data/chat/aethon_exact_control_v1.jsonl",
|
| 67 |
+
"data/chat/clean/anthropic_hh_rlhf_clean.jsonl",
|
| 68 |
"data/reasoning_corpora/clean/advanced_python_cot.jsonl",
|
| 69 |
"data/reasoning_corpora/clean/aethon_bootstrap_mix.jsonl",
|
| 70 |
"data/reasoning_corpora/clean/am_deepseek_r1_distilled.jsonl",
|
|
|
|
| 78 |
"data/groundedness/aethon_retrieval_verifier.jsonl"
|
| 79 |
],
|
| 80 |
"direct_facts": 0,
|
| 81 |
+
"rows": 297584,
|
| 82 |
"docs_accepted": 127774,
|
| 83 |
"docs_skipped": 0,
|
| 84 |
"learned_edges": 45253,
|
| 85 |
"derived_edges": 0,
|
| 86 |
+
"shard_count": 85,
|
| 87 |
"merge_edges": 45253,
|
| 88 |
"merge_contradictions": 0,
|
| 89 |
"merge_raw_units": 0,
|
| 90 |
+
"completed_shards": 85,
|
| 91 |
+
"total_rows_planned": 297584,
|
| 92 |
"captured_units": 127774
|
| 93 |
},
|
| 94 |
"math": {
|
|
|
|
| 147 |
"data/chat/aethon_reasoning_chat_bootstrap.jsonl",
|
| 148 |
"data/chat/aethon_copy_probe_v1.jsonl",
|
| 149 |
"data/chat/aethon_speakback_chat.jsonl",
|
| 150 |
+
"data/chat/aethon_truthful_chat_bootstrap.jsonl",
|
| 151 |
+
"data/chat/clean/anthropic_hh_rlhf_clean.jsonl",
|
| 152 |
+
"data/chat/clean/aethon_religion_chat_v1.jsonl"
|
| 153 |
],
|
| 154 |
"direct_facts": 0,
|
| 155 |
+
"rows": 176490,
|
| 156 |
"docs_accepted": 5,
|
| 157 |
"docs_skipped": 0,
|
| 158 |
"learned_edges": 2,
|
| 159 |
"derived_edges": 0,
|
| 160 |
+
"shard_count": 42,
|
| 161 |
"merge_edges": 2,
|
| 162 |
"merge_contradictions": 0,
|
| 163 |
"merge_raw_units": 0,
|
| 164 |
+
"completed_shards": 42,
|
| 165 |
+
"total_rows_planned": 176490,
|
| 166 |
"captured_units": 5
|
| 167 |
},
|
| 168 |
"world": {
|
| 169 |
"lane": "world",
|
| 170 |
"sources": [
|
| 171 |
+
"data/native/world/aethon_religion_world_v1.jsonl",
|
| 172 |
"data/world_knowledge/clean/structured_wikipedia_en.jsonl",
|
| 173 |
"data/world_knowledge/clean/fineweb_edu_sample.jsonl",
|
| 174 |
"data/world_knowledge/clean/cosmopedia_web.jsonl",
|
|
|
|
| 177 |
"data/world_knowledge/clean/masakhanews_pcm.jsonl",
|
| 178 |
"data/world_knowledge/clean/masakhanews_hau.jsonl",
|
| 179 |
"data/base/aethon_multilingual_base_mix.jsonl",
|
| 180 |
+
"data/chat/clean/anthropic_hh_rlhf_clean.jsonl",
|
| 181 |
+
"data/chat/clean/aethon_religion_chat_v1.jsonl",
|
| 182 |
"data/chat/clean/helpsteer2_clean.jsonl",
|
| 183 |
"data/chat/clean/oasst1_clean.jsonl",
|
| 184 |
"data/chat/clean/ultrachat_200k_clean.jsonl"
|
| 185 |
],
|
| 186 |
"direct_facts": 0,
|
| 187 |
+
"rows": 252980,
|
| 188 |
+
"docs_accepted": 23428,
|
| 189 |
"docs_skipped": 0,
|
| 190 |
+
"learned_edges": 33158,
|
| 191 |
"derived_edges": 0,
|
| 192 |
+
"shard_count": 60,
|
| 193 |
+
"merge_edges": 33158,
|
| 194 |
"merge_contradictions": 0,
|
| 195 |
"merge_raw_units": 0,
|
| 196 |
+
"completed_shards": 60,
|
| 197 |
+
"total_rows_planned": 252980,
|
| 198 |
+
"captured_units": 23428
|
| 199 |
}
|
| 200 |
},
|
| 201 |
"digest": {
|
| 202 |
+
"processed_units": 160749,
|
| 203 |
+
"total_units": 160749,
|
| 204 |
+
"learned_edges": 81909,
|
| 205 |
+
"derived_edges": 2462,
|
| 206 |
"rule_count": 0
|
| 207 |
}
|
| 208 |
}
|
bundle/metadata.json
CHANGED
|
@@ -7,14 +7,31 @@
|
|
| 7 |
"tokenizer": "Aethon Native Concept Codec (ANCC)",
|
| 8 |
"size_unit": "Structural Capacity (SC)",
|
| 9 |
"capacity": {
|
| 10 |
-
"sc":
|
| 11 |
-
"concept_count":
|
| 12 |
-
"explicit_edge_count":
|
| 13 |
-
"abstraction_count":
|
| 14 |
"revision_count": 0,
|
| 15 |
"raw_unit_count": 0
|
| 16 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
"graph_file": "graph.sqlite3",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
"semantic_lexicon": [
|
| 19 |
{
|
| 20 |
"kind": "emoji",
|
|
@@ -632,8 +649,8 @@
|
|
| 632 |
"The emoji you used is {answer}."
|
| 633 |
],
|
| 634 |
"direct_unknown_variants": [
|
| 635 |
-
"I
|
| 636 |
-
"I
|
| 637 |
],
|
| 638 |
"derived_math_variants": [
|
| 639 |
"The exact answer is {answer}. I computed it through native structural arithmetic.",
|
|
@@ -661,8 +678,8 @@
|
|
| 661 |
"I generalize the answer as {answer} because the relevant abstract rule applies here."
|
| 662 |
],
|
| 663 |
"explain_unknown_variants": [
|
| 664 |
-
"
|
| 665 |
-
"
|
| 666 |
],
|
| 667 |
"explain_emoji_variants": [
|
| 668 |
"I identified {answer} directly from the symbols in your message.",
|
|
@@ -1366,22 +1383,5 @@
|
|
| 1366 |
"confidence": 0.9
|
| 1367 |
}
|
| 1368 |
]
|
| 1369 |
-
},
|
| 1370 |
-
"bundle_files": [
|
| 1371 |
-
"metadata.json",
|
| 1372 |
-
"graph.sqlite3"
|
| 1373 |
-
],
|
| 1374 |
-
"graph_dialect": "sqlite3",
|
| 1375 |
-
"sqlite_schema": {
|
| 1376 |
-
"required_tables": [
|
| 1377 |
-
"concepts",
|
| 1378 |
-
"edges",
|
| 1379 |
-
"contradictions"
|
| 1380 |
-
],
|
| 1381 |
-
"optional_tables": [
|
| 1382 |
-
"raw_units"
|
| 1383 |
-
],
|
| 1384 |
-
"edge_active_flag": "is_active",
|
| 1385 |
-
"edge_support_pointer": "supports_edge_id"
|
| 1386 |
}
|
| 1387 |
}
|
|
|
|
| 7 |
"tokenizer": "Aethon Native Concept Codec (ANCC)",
|
| 8 |
"size_unit": "Structural Capacity (SC)",
|
| 9 |
"capacity": {
|
| 10 |
+
"sc": 112897,
|
| 11 |
+
"concept_count": 27344,
|
| 12 |
+
"explicit_edge_count": 81899,
|
| 13 |
+
"abstraction_count": 3654,
|
| 14 |
"revision_count": 0,
|
| 15 |
"raw_unit_count": 0
|
| 16 |
},
|
| 17 |
+
"bundle_files": [
|
| 18 |
+
"metadata.json",
|
| 19 |
+
"graph.sqlite3"
|
| 20 |
+
],
|
| 21 |
"graph_file": "graph.sqlite3",
|
| 22 |
+
"graph_dialect": "sqlite3",
|
| 23 |
+
"sqlite_schema": {
|
| 24 |
+
"required_tables": [
|
| 25 |
+
"concepts",
|
| 26 |
+
"edges",
|
| 27 |
+
"contradictions"
|
| 28 |
+
],
|
| 29 |
+
"optional_tables": [
|
| 30 |
+
"raw_units"
|
| 31 |
+
],
|
| 32 |
+
"edge_active_flag": "is_active",
|
| 33 |
+
"edge_support_pointer": "supports_edge_id"
|
| 34 |
+
},
|
| 35 |
"semantic_lexicon": [
|
| 36 |
{
|
| 37 |
"kind": "emoji",
|
|
|
|
| 649 |
"The emoji you used is {answer}."
|
| 650 |
],
|
| 651 |
"direct_unknown_variants": [
|
| 652 |
+
"I answer from the structure already learned around {query}.",
|
| 653 |
+
"I stay inside the grounded structure connected to {query}."
|
| 654 |
],
|
| 655 |
"derived_math_variants": [
|
| 656 |
"The exact answer is {answer}. I computed it through native structural arithmetic.",
|
|
|
|
| 678 |
"I generalize the answer as {answer} because the relevant abstract rule applies here."
|
| 679 |
],
|
| 680 |
"explain_unknown_variants": [
|
| 681 |
+
"The present structure around {query} is still incomplete.",
|
| 682 |
+
"The answer around {query} is still constrained by the current structure."
|
| 683 |
],
|
| 684 |
"explain_emoji_variants": [
|
| 685 |
"I identified {answer} directly from the symbols in your message.",
|
|
|
|
| 1383 |
"confidence": 0.9
|
| 1384 |
}
|
| 1385 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1386 |
}
|
| 1387 |
}
|
docs/AETHON_OPEN_STRUCTURE_HF_MODEL_CARD.md
CHANGED
|
@@ -232,10 +232,6 @@ Portable runtime included in the release:
|
|
| 232 |
- `run_aethon.py`
|
| 233 |
- `runtime/aethon/...`
|
| 234 |
|
| 235 |
-
This release now ships a portable bundle-native runtime pack.
|
| 236 |
-
|
| 237 |
-
It should be treated as a real runnable Open Structure entry point, not as a storage demo or thin adapter.
|
| 238 |
-
|
| 239 |
## Prompt Examples
|
| 240 |
|
| 241 |
These are examples, not a closed menu.
|
|
@@ -268,21 +264,21 @@ People should be able to ask in their own words.
|
|
| 268 |
|
| 269 |
| Item | Value |
|
| 270 |
| --- | --- |
|
| 271 |
-
| Bundle | `
|
| 272 |
| Public contract | `aethon.n1.bundle.v1` |
|
| 273 |
| Release class | `open-structure` |
|
| 274 |
| Size unit | `Structural Capacity (SC)` |
|
| 275 |
-
| SC | `
|
| 276 |
-
| Concepts | `
|
| 277 |
-
| Explicit relations | `
|
| 278 |
-
| Abstractions | `
|
| 279 |
| Raw unit residue | `0` |
|
| 280 |
|
| 281 |
### Native Benchmark Wall
|
| 282 |
|
| 283 |
| Suite | Result | Accuracy | Time |
|
| 284 |
| --- | --- | --- | --- |
|
| 285 |
-
| `aethon_n1_benchmark_v6.jsonl` | `43 / 43` | `1.0` | `3.
|
| 286 |
|
| 287 |
### What This Wall Covers
|
| 288 |
|
|
@@ -308,6 +304,8 @@ The ship corpus includes:
|
|
| 308 |
- Aethon native identity, code, math, story, and reasoning corpora
|
| 309 |
- Aethon AGI transfer corpora
|
| 310 |
- Humanity's Last Exam transfer corpus
|
|
|
|
|
|
|
| 311 |
- curated reasoning bases
|
| 312 |
- multilingual base mixes
|
| 313 |
- code and tool-use corpora
|
|
|
|
| 232 |
- `run_aethon.py`
|
| 233 |
- `runtime/aethon/...`
|
| 234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 235 |
## Prompt Examples
|
| 236 |
|
| 237 |
These are examples, not a closed menu.
|
|
|
|
| 264 |
|
| 265 |
| Item | Value |
|
| 266 |
| --- | --- |
|
| 267 |
+
| Bundle | `aethon_n1_base_full_parallel_v26` |
|
| 268 |
| Public contract | `aethon.n1.bundle.v1` |
|
| 269 |
| Release class | `open-structure` |
|
| 270 |
| Size unit | `Structural Capacity (SC)` |
|
| 271 |
+
| SC | `112,897` |
|
| 272 |
+
| Concepts | `27,344` |
|
| 273 |
+
| Explicit relations | `81,899` |
|
| 274 |
+
| Abstractions | `3,654` |
|
| 275 |
| Raw unit residue | `0` |
|
| 276 |
|
| 277 |
### Native Benchmark Wall
|
| 278 |
|
| 279 |
| Suite | Result | Accuracy | Time |
|
| 280 |
| --- | --- | --- | --- |
|
| 281 |
+
| `aethon_n1_benchmark_v6.jsonl` | `43 / 43` | `1.0` | `3.476s` |
|
| 282 |
|
| 283 |
### What This Wall Covers
|
| 284 |
|
|
|
|
| 304 |
- Aethon native identity, code, math, story, and reasoning corpora
|
| 305 |
- Aethon AGI transfer corpora
|
| 306 |
- Humanity's Last Exam transfer corpus
|
| 307 |
+
- Anthropic HH-RLHF instruction and safety corpus
|
| 308 |
+
- theology and religion grounding corpora
|
| 309 |
- curated reasoning bases
|
| 310 |
- multilingual base mixes
|
| 311 |
- code and tool-use corpora
|
runtime/aethon/rfi_surface.py
CHANGED
|
@@ -25,7 +25,6 @@ class GraphVerbalizer:
|
|
| 25 |
def verbalize_result(self, query: str, result: QueryResult | None) -> str:
|
| 26 |
if result is None:
|
| 27 |
return self._compose_unknown_response(query)
|
| 28 |
-
history_key = f"text::{query}::{result.mode}::{result.answer}"
|
| 29 |
if result.mode == "direct":
|
| 30 |
if result.proof and result.proof[0].startswith("emoji:"):
|
| 31 |
return f"The emoji you used is {self._humanize(result.answer)}."
|
|
@@ -35,72 +34,34 @@ class GraphVerbalizer:
|
|
| 35 |
return self._sentence(self._humanize(result.answer))
|
| 36 |
if result.mode == "derived":
|
| 37 |
if result.proof and result.proof[0].startswith("math:"):
|
| 38 |
-
|
| 39 |
-
f"I computed the exact answer as {self._humanize(result.answer)}.",
|
| 40 |
-
f"The exact result is {self._humanize(result.answer)}. I reached it by direct computation.",
|
| 41 |
-
f"I evaluated the arithmetic structure and got {self._humanize(result.answer)}.",
|
| 42 |
-
f"My computation resolves to {self._humanize(result.answer)}.",
|
| 43 |
-
f"Working through the arithmetic gives {self._humanize(result.answer)}.",
|
| 44 |
-
f"I solve the structure exactly and end at {self._humanize(result.answer)}.",
|
| 45 |
-
)
|
| 46 |
-
return self._choose_novel(history_key, candidates)
|
| 47 |
supports = self._proof_sentences(result)
|
| 48 |
if supports:
|
| 49 |
return self._compose_support_paragraph(query + result.answer, supports, self._humanize(result.answer))
|
| 50 |
-
|
| 51 |
-
f"I derive the answer as {self._humanize(result.answer)} from stored relations.",
|
| 52 |
-
f"My structural reasoning leads me to {self._humanize(result.answer)}.",
|
| 53 |
-
f"I do not retrieve {self._humanize(result.answer)} directly; I derive it from linked relations.",
|
| 54 |
-
)
|
| 55 |
-
return self._choose_novel(history_key, candidates)
|
| 56 |
if result.mode == "composed":
|
| 57 |
subject = self._subject_from_query(query)
|
| 58 |
if subject is not None:
|
| 59 |
supports = [self._proof_line_to_sentence(step) for step in result.proof if self._proof_line_to_sentence(step)]
|
| 60 |
if supports:
|
| 61 |
return self._compose_support_paragraph(query + result.answer, supports, self._humanize(result.answer))
|
| 62 |
-
|
| 63 |
-
f"I connect the stored facts to answer with {self._humanize(result.answer)}.",
|
| 64 |
-
f"My answer is {self._humanize(result.answer)} because several linked facts converge on it.",
|
| 65 |
-
f"I compose multiple facts and end at {self._humanize(result.answer)}.",
|
| 66 |
-
)
|
| 67 |
-
return self._choose_novel(history_key, candidates)
|
| 68 |
if result.mode == "path":
|
| 69 |
supports = self._proof_sentences(result)
|
| 70 |
if supports:
|
| 71 |
return self._compose_support_paragraph(query + result.answer, supports, self._humanize(self._path_text(result.answer)))
|
| 72 |
path = self._humanize(self._path_text(result.answer))
|
| 73 |
-
return
|
| 74 |
-
history_key,
|
| 75 |
-
(
|
| 76 |
-
f"I connect them through {path}.",
|
| 77 |
-
f"The path between them runs through {path}.",
|
| 78 |
-
f"My reasoning links them by way of {path}.",
|
| 79 |
-
),
|
| 80 |
-
)
|
| 81 |
if result.mode == "plan":
|
| 82 |
supports = self._proof_sentences(result)
|
| 83 |
if supports:
|
| 84 |
return self._compose_support_paragraph(query + result.answer + "::plan", supports, self._humanize(result.answer))
|
| 85 |
-
return self.
|
| 86 |
-
history_key,
|
| 87 |
-
(
|
| 88 |
-
f"The next grounded step is {self._humanize(result.answer)}.",
|
| 89 |
-
f"My planning chain points to {self._humanize(result.answer)} first.",
|
| 90 |
-
f"The structure says {self._humanize(result.answer)} should happen next.",
|
| 91 |
-
),
|
| 92 |
-
)
|
| 93 |
if result.mode == "story":
|
| 94 |
supports = self._proof_sentences(result)
|
| 95 |
if supports:
|
| 96 |
return self._compose_story_paragraph(query + result.answer + "::story", supports)
|
| 97 |
-
return self.
|
| 98 |
-
history_key,
|
| 99 |
-
(
|
| 100 |
-
f"I can ground a story around {self._humanize(result.answer)} from the graph, but I need more concrete events to tell it richly.",
|
| 101 |
-
f"The graph mentions {self._humanize(result.answer)}, though I would need more events to narrate a fuller story.",
|
| 102 |
-
),
|
| 103 |
-
)
|
| 104 |
if result.mode == "revision":
|
| 105 |
relation, transition = result.answer.split(":", 1)
|
| 106 |
previous_value, new_value = transition.split("->", 1)
|
|
@@ -132,12 +93,7 @@ class GraphVerbalizer:
|
|
| 132 |
def verbalize_reasoning(self, result: QueryResult | None) -> str:
|
| 133 |
if result is None or not result.reasoning:
|
| 134 |
return "No reasoning steps are available."
|
| 135 |
-
|
| 136 |
-
"I reason through the graph like this:",
|
| 137 |
-
"My reasoning chain is:",
|
| 138 |
-
"I connect the stored facts in this order:",
|
| 139 |
-
)
|
| 140 |
-
intro = intros[self.response_index % len(intros)]
|
| 141 |
lines = [intro]
|
| 142 |
for step in result.reasoning:
|
| 143 |
lines.append(f"- {step}")
|
|
@@ -147,7 +103,6 @@ class GraphVerbalizer:
|
|
| 147 |
if result is None:
|
| 148 |
return self._compose_unknown_explanation(query)
|
| 149 |
edge = self._first_edge(result)
|
| 150 |
-
history_key = f"explain::{query}::{result.mode}::{result.answer}"
|
| 151 |
if result.mode in {"direct", "ontology"}:
|
| 152 |
if result.proof and result.proof[0].startswith("emoji:"):
|
| 153 |
return f"I identified {self._humanize(result.answer)} directly from the symbols in your message."
|
|
@@ -162,14 +117,7 @@ class GraphVerbalizer:
|
|
| 162 |
return self.verbalize_result(query, result)
|
| 163 |
proof = result.proof[0]
|
| 164 |
if proof.startswith("math:"):
|
| 165 |
-
return self.
|
| 166 |
-
history_key,
|
| 167 |
-
(
|
| 168 |
-
f"I reached {self._humanize(result.answer)} by evaluating the arithmetic structure directly instead of guessing.",
|
| 169 |
-
f"The result {self._humanize(result.answer)} comes from exact computation over the expression.",
|
| 170 |
-
f"I solved the expression structurally, which yields {self._humanize(result.answer)}.",
|
| 171 |
-
),
|
| 172 |
-
)
|
| 173 |
if proof.startswith("derived:"):
|
| 174 |
supports = self._derived_support_lines(proof)
|
| 175 |
if supports:
|
|
@@ -344,60 +292,16 @@ class GraphVerbalizer:
|
|
| 344 |
def _compose_support_paragraph(self, seed: str, supports: list[str], answer: str) -> str:
|
| 345 |
cleaned = [self._sentence(line) for line in supports if line.strip()]
|
| 346 |
if not cleaned:
|
| 347 |
-
summaries = tuple(variant.format(answer=answer) for variant in self.lexicon.support_summary_variants)
|
| 348 |
-
if summaries:
|
| 349 |
-
return self._choose_novel(f"support::{seed}::{answer}", summaries)
|
| 350 |
return f"So I answer {answer}."
|
| 351 |
-
|
| 352 |
-
|
| 353 |
-
connectors = self.lexicon.support_connectors or ("Then",)
|
| 354 |
-
first_sentence = cleaned[0]
|
| 355 |
-
lowered_first = self._lower_sentence(first_sentence)
|
| 356 |
-
openings = (
|
| 357 |
-
first_sentence,
|
| 358 |
-
f"I start from this fact: {lowered_first}.",
|
| 359 |
-
f"The graph first gives me this: {lowered_first}.",
|
| 360 |
-
f"One grounded fact is that {lowered_first}.",
|
| 361 |
-
f"I begin with {lowered_first}.",
|
| 362 |
-
f"My first support fact is that {lowered_first}.",
|
| 363 |
-
)
|
| 364 |
-
reflections = (
|
| 365 |
-
f"Across that proof, the same answer keeps surfacing: {answer}.",
|
| 366 |
-
f"The linked structure stays consistent all the way to {answer}.",
|
| 367 |
-
f"Nothing in that chain breaks the answer {answer}.",
|
| 368 |
-
f"Those connected facts keep reinforcing {answer}.",
|
| 369 |
-
)
|
| 370 |
-
for offset in range(min(max(len(connectors), 1), 6)):
|
| 371 |
-
for opening in openings:
|
| 372 |
-
pieces = [opening]
|
| 373 |
-
for index, line in enumerate(cleaned[1:], start=1):
|
| 374 |
-
connector = connectors[(offset + index - 1) % len(connectors)]
|
| 375 |
-
pieces.append(f"{connector}, {self._lower_sentence(line)}.")
|
| 376 |
-
reflection = reflections[(offset + len(opening)) % len(reflections)]
|
| 377 |
-
pieces.append(reflection)
|
| 378 |
-
summary = summaries[(offset + len(candidates)) % len(summaries)] if summaries else f"So I answer {answer}."
|
| 379 |
-
pieces.append(summary)
|
| 380 |
-
candidates.append(" ".join(pieces))
|
| 381 |
-
return self._choose_novel(f"support::{seed}::{answer}", tuple(candidates))
|
| 382 |
|
| 383 |
def _compose_story_paragraph(self, seed: str, supports: list[str]) -> str:
|
| 384 |
cleaned = [self._sentence(line) for line in supports if line.strip()]
|
| 385 |
if not cleaned:
|
| 386 |
return ""
|
| 387 |
-
intros = (
|
| 388 |
-
"Here is the grounded story I can tell.",
|
| 389 |
-
"The graph lets me tell the story this way.",
|
| 390 |
-
"I can narrate the stored story like this.",
|
| 391 |
-
)
|
| 392 |
-
closers = (
|
| 393 |
-
"That is the grounded thread I can recover from what Aethon remembers.",
|
| 394 |
-
"Those events stay connected in memory, so the story holds together.",
|
| 395 |
-
"That sequence is how the stored events unfold in Aethon's graph.",
|
| 396 |
-
)
|
| 397 |
-
intro = self._choose_novel(f"story-intro::{seed}", intros)
|
| 398 |
-
closer = self._choose_novel(f"story-close::{seed}", closers)
|
| 399 |
body = " ".join(cleaned)
|
| 400 |
-
return f"{
|
| 401 |
|
| 402 |
def _compose_abstract_answer(self, result: QueryResult) -> str:
|
| 403 |
explanation = self._compose_abstract_explanation(result)
|
|
@@ -417,83 +321,64 @@ class GraphVerbalizer:
|
|
| 417 |
seen.add(sentence)
|
| 418 |
if not pieces:
|
| 419 |
return f"I generalize the answer as {self._humanize(result.answer)}."
|
| 420 |
-
|
| 421 |
-
|
| 422 |
-
f"That is why I generalize the answer as {self._humanize(result.answer)}.",
|
| 423 |
-
f"So my generalized answer is {self._humanize(result.answer)}.",
|
| 424 |
-
f"That chain lets me answer with {self._humanize(result.answer)}.",
|
| 425 |
-
)
|
| 426 |
-
candidates = []
|
| 427 |
-
for offset in range(min(max(len(closers), 1), 6)):
|
| 428 |
-
ordered = list(pieces[offset % len(pieces):]) + list(pieces[:offset % len(pieces)])
|
| 429 |
-
rendered = " ".join(self._sentence(piece) for piece in ordered)
|
| 430 |
-
candidates.append(f"{rendered} {closers[offset % len(closers)]}")
|
| 431 |
-
return self._choose_novel(f"abstract::{result.answer}::{''.join(result.proof)}", tuple(candidates))
|
| 432 |
|
| 433 |
def _compose_unknown_response(self, query: str) -> str:
|
| 434 |
focus = self._unknown_focus_phrase(query)
|
| 435 |
supports = self._unknown_known_supports(query)
|
| 436 |
focus_text = focus or "that"
|
| 437 |
-
openings = (
|
| 438 |
-
f"I cannot answer that faithfully about {focus_text} without guessing.",
|
| 439 |
-
f"I do not want to invent an answer about {focus_text}.",
|
| 440 |
-
f"I cannot support a reliable answer about {focus_text} strongly enough yet.",
|
| 441 |
-
)
|
| 442 |
if not supports:
|
| 443 |
-
|
| 444 |
-
|
| 445 |
-
|
| 446 |
-
|
| 447 |
-
|
| 448 |
-
|
| 449 |
-
return
|
| 450 |
-
|
| 451 |
-
|
| 452 |
-
|
| 453 |
-
"What I do know is this:",
|
| 454 |
-
"The part I can support is this:",
|
| 455 |
-
)
|
| 456 |
-
closers = (
|
| 457 |
-
"That is as far as I can go without making things up.",
|
| 458 |
-
"Beyond that, I would be guessing.",
|
| 459 |
-
"I would need more learned structure to go further honestly.",
|
| 460 |
-
)
|
| 461 |
-
candidates = []
|
| 462 |
-
for opening in openings:
|
| 463 |
-
for bridge in bridges:
|
| 464 |
-
for closer in closers:
|
| 465 |
-
candidates.append(f"{opening} {bridge} {support_sentence} {closer}")
|
| 466 |
-
return self._choose_novel(f"unknown::{query}::{focus_text}", tuple(candidates))
|
| 467 |
|
| 468 |
def _compose_unknown_explanation(self, query: str) -> str:
|
| 469 |
focus = self._unknown_focus_phrase(query)
|
| 470 |
supports = self._unknown_known_supports(query)
|
| 471 |
focus_text = focus or "that"
|
| 472 |
-
openings = (
|
| 473 |
-
f"I cannot trace a grounded answer about {focus_text} all the way through yet.",
|
| 474 |
-
f"The current structure does not let me finish a reliable answer about {focus_text} yet.",
|
| 475 |
-
f"I can see parts of the topic around {focus_text}, but not enough to finish the answer honestly.",
|
| 476 |
-
)
|
| 477 |
if not supports:
|
| 478 |
-
|
| 479 |
-
|
| 480 |
-
|
| 481 |
-
|
| 482 |
-
|
| 483 |
-
|
| 484 |
-
|
| 485 |
-
|
| 486 |
-
|
| 487 |
-
|
| 488 |
-
|
| 489 |
-
|
| 490 |
-
|
| 491 |
-
|
| 492 |
-
|
| 493 |
-
|
| 494 |
-
f"
|
| 495 |
-
|
| 496 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 497 |
|
| 498 |
def _unknown_known_supports(self, query: str) -> list[str]:
|
| 499 |
if self.graph is None:
|
|
@@ -581,6 +466,20 @@ class GraphVerbalizer:
|
|
| 581 |
return None
|
| 582 |
return " ".join(tokens[:3])
|
| 583 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 584 |
def _abstract_proof_to_sentence(self, proof_line: str) -> str | None:
|
| 585 |
if proof_line.startswith("abstract:"):
|
| 586 |
parsed = self._parse_edge(proof_line)
|
|
|
|
| 25 |
def verbalize_result(self, query: str, result: QueryResult | None) -> str:
|
| 26 |
if result is None:
|
| 27 |
return self._compose_unknown_response(query)
|
|
|
|
| 28 |
if result.mode == "direct":
|
| 29 |
if result.proof and result.proof[0].startswith("emoji:"):
|
| 30 |
return f"The emoji you used is {self._humanize(result.answer)}."
|
|
|
|
| 34 |
return self._sentence(self._humanize(result.answer))
|
| 35 |
if result.mode == "derived":
|
| 36 |
if result.proof and result.proof[0].startswith("math:"):
|
| 37 |
+
return f"I evaluate the arithmetic structure directly and get {self._humanize(result.answer)}."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
supports = self._proof_sentences(result)
|
| 39 |
if supports:
|
| 40 |
return self._compose_support_paragraph(query + result.answer, supports, self._humanize(result.answer))
|
| 41 |
+
return f"I derive {self._humanize(result.answer)} from linked structure already stored in memory."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
if result.mode == "composed":
|
| 43 |
subject = self._subject_from_query(query)
|
| 44 |
if subject is not None:
|
| 45 |
supports = [self._proof_line_to_sentence(step) for step in result.proof if self._proof_line_to_sentence(step)]
|
| 46 |
if supports:
|
| 47 |
return self._compose_support_paragraph(query + result.answer, supports, self._humanize(result.answer))
|
| 48 |
+
return f"I connect multiple learned facts and end at {self._humanize(result.answer)}."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
if result.mode == "path":
|
| 50 |
supports = self._proof_sentences(result)
|
| 51 |
if supports:
|
| 52 |
return self._compose_support_paragraph(query + result.answer, supports, self._humanize(self._path_text(result.answer)))
|
| 53 |
path = self._humanize(self._path_text(result.answer))
|
| 54 |
+
return f"I connect them through {path}."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
if result.mode == "plan":
|
| 56 |
supports = self._proof_sentences(result)
|
| 57 |
if supports:
|
| 58 |
return self._compose_support_paragraph(query + result.answer + "::plan", supports, self._humanize(result.answer))
|
| 59 |
+
return f"The next grounded step is {self._humanize(result.answer)}."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
if result.mode == "story":
|
| 61 |
supports = self._proof_sentences(result)
|
| 62 |
if supports:
|
| 63 |
return self._compose_story_paragraph(query + result.answer + "::story", supports)
|
| 64 |
+
return f"I can extend the story around {self._humanize(result.answer)} when more grounded events are present."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
if result.mode == "revision":
|
| 66 |
relation, transition = result.answer.split(":", 1)
|
| 67 |
previous_value, new_value = transition.split("->", 1)
|
|
|
|
| 93 |
def verbalize_reasoning(self, result: QueryResult | None) -> str:
|
| 94 |
if result is None or not result.reasoning:
|
| 95 |
return "No reasoning steps are available."
|
| 96 |
+
intro = "I reason through the stored structure like this:"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
lines = [intro]
|
| 98 |
for step in result.reasoning:
|
| 99 |
lines.append(f"- {step}")
|
|
|
|
| 103 |
if result is None:
|
| 104 |
return self._compose_unknown_explanation(query)
|
| 105 |
edge = self._first_edge(result)
|
|
|
|
| 106 |
if result.mode in {"direct", "ontology"}:
|
| 107 |
if result.proof and result.proof[0].startswith("emoji:"):
|
| 108 |
return f"I identified {self._humanize(result.answer)} directly from the symbols in your message."
|
|
|
|
| 117 |
return self.verbalize_result(query, result)
|
| 118 |
proof = result.proof[0]
|
| 119 |
if proof.startswith("math:"):
|
| 120 |
+
return f"I reached {self._humanize(result.answer)} by evaluating the arithmetic structure directly."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
if proof.startswith("derived:"):
|
| 122 |
supports = self._derived_support_lines(proof)
|
| 123 |
if supports:
|
|
|
|
| 292 |
def _compose_support_paragraph(self, seed: str, supports: list[str], answer: str) -> str:
|
| 293 |
cleaned = [self._sentence(line) for line in supports if line.strip()]
|
| 294 |
if not cleaned:
|
|
|
|
|
|
|
|
|
|
| 295 |
return f"So I answer {answer}."
|
| 296 |
+
body = " ".join(cleaned)
|
| 297 |
+
return f"{body} Taken together, that structure supports {answer}."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 298 |
|
| 299 |
def _compose_story_paragraph(self, seed: str, supports: list[str]) -> str:
|
| 300 |
cleaned = [self._sentence(line) for line in supports if line.strip()]
|
| 301 |
if not cleaned:
|
| 302 |
return ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 303 |
body = " ".join(cleaned)
|
| 304 |
+
return f"{body} That is the grounded story thread currently held in memory."
|
| 305 |
|
| 306 |
def _compose_abstract_answer(self, result: QueryResult) -> str:
|
| 307 |
explanation = self._compose_abstract_explanation(result)
|
|
|
|
| 321 |
seen.add(sentence)
|
| 322 |
if not pieces:
|
| 323 |
return f"I generalize the answer as {self._humanize(result.answer)}."
|
| 324 |
+
rendered = " ".join(self._sentence(piece) for piece in pieces)
|
| 325 |
+
return f"{rendered} That chain generalizes to {self._humanize(result.answer)}."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 326 |
|
| 327 |
def _compose_unknown_response(self, query: str) -> str:
|
| 328 |
focus = self._unknown_focus_phrase(query)
|
| 329 |
supports = self._unknown_known_supports(query)
|
| 330 |
focus_text = focus or "that"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 331 |
if not supports:
|
| 332 |
+
return self._compose_query_limited_response(query, focus_text)
|
| 333 |
+
support_sentence = " ".join(self._sentence(item) for item in supports[:3])
|
| 334 |
+
query_kind = self._unknown_query_kind(query)
|
| 335 |
+
if query_kind == "where":
|
| 336 |
+
return f"{support_sentence} That is the location structure already bound to {focus_text}."
|
| 337 |
+
if query_kind in {"who", "what"}:
|
| 338 |
+
return f"{support_sentence} That is the identity structure already bound to {focus_text}."
|
| 339 |
+
if query_kind in {"why", "how"}:
|
| 340 |
+
return f"{support_sentence} That is the causal structure already linked to {focus_text}."
|
| 341 |
+
return support_sentence
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 342 |
|
| 343 |
def _compose_unknown_explanation(self, query: str) -> str:
|
| 344 |
focus = self._unknown_focus_phrase(query)
|
| 345 |
supports = self._unknown_known_supports(query)
|
| 346 |
focus_text = focus or "that"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 347 |
if not supports:
|
| 348 |
+
return self._compose_query_limited_explanation(query, focus_text)
|
| 349 |
+
support_sentence = " ".join(self._sentence(item) for item in supports[:3])
|
| 350 |
+
query_kind = self._unknown_query_kind(query)
|
| 351 |
+
if query_kind == "where":
|
| 352 |
+
return f"{support_sentence} That is the grounded location path currently tied to {focus_text}."
|
| 353 |
+
if query_kind in {"who", "what"}:
|
| 354 |
+
return f"{support_sentence} That is the grounded identity path currently tied to {focus_text}."
|
| 355 |
+
if query_kind in {"why", "how"}:
|
| 356 |
+
return f"{support_sentence} That is the grounded reasoning path currently tied to {focus_text}."
|
| 357 |
+
return support_sentence
|
| 358 |
+
|
| 359 |
+
def _compose_query_limited_response(self, query: str, focus_text: str) -> str:
|
| 360 |
+
query_kind = self._unknown_query_kind(query)
|
| 361 |
+
if query_kind == "where":
|
| 362 |
+
return f"{focus_text} is not yet bound to a grounded place in Aethon's learned structure."
|
| 363 |
+
if query_kind == "who":
|
| 364 |
+
return f"{focus_text} is not yet bound to a grounded identity thread in Aethon's learned structure."
|
| 365 |
+
if query_kind == "what":
|
| 366 |
+
return f"{focus_text} is not yet bound to a grounded definition thread in Aethon's learned structure."
|
| 367 |
+
if query_kind in {"why", "how"}:
|
| 368 |
+
return f"Aethon does not yet carry a complete reasoning chain for {focus_text} in the current structure."
|
| 369 |
+
return f"The structure around {focus_text} is still open."
|
| 370 |
+
|
| 371 |
+
def _compose_query_limited_explanation(self, query: str, focus_text: str) -> str:
|
| 372 |
+
query_kind = self._unknown_query_kind(query)
|
| 373 |
+
if query_kind == "where":
|
| 374 |
+
return f"The question asks for a place, but {focus_text} is not yet connected to a grounded location in the current structure."
|
| 375 |
+
if query_kind == "who":
|
| 376 |
+
return f"The question asks for an identity, but {focus_text} is not yet connected to a grounded identity chain in the current structure."
|
| 377 |
+
if query_kind == "what":
|
| 378 |
+
return f"The question asks for a definition, but {focus_text} is not yet connected to a grounded definition chain in the current structure."
|
| 379 |
+
if query_kind in {"why", "how"}:
|
| 380 |
+
return f"The question asks for a reasoning chain, but {focus_text} is not yet connected to a complete grounded chain in the current structure."
|
| 381 |
+
return f"The current structure around {focus_text} is still incomplete."
|
| 382 |
|
| 383 |
def _unknown_known_supports(self, query: str) -> list[str]:
|
| 384 |
if self.graph is None:
|
|
|
|
| 466 |
return None
|
| 467 |
return " ".join(tokens[:3])
|
| 468 |
|
| 469 |
+
def _unknown_query_kind(self, query: str) -> str:
|
| 470 |
+
normalized = " ".join(query.lower().replace("?", " ").replace("!", " ").replace(".", " ").split())
|
| 471 |
+
if normalized.startswith("where "):
|
| 472 |
+
return "where"
|
| 473 |
+
if normalized.startswith("who "):
|
| 474 |
+
return "who"
|
| 475 |
+
if normalized.startswith("what "):
|
| 476 |
+
return "what"
|
| 477 |
+
if normalized.startswith("why "):
|
| 478 |
+
return "why"
|
| 479 |
+
if normalized.startswith("how "):
|
| 480 |
+
return "how"
|
| 481 |
+
return "open"
|
| 482 |
+
|
| 483 |
def _abstract_proof_to_sentence(self, proof_line: str) -> str | None:
|
| 484 |
if proof_line.startswith("abstract:"):
|
| 485 |
parsed = self._parse_edge(proof_line)
|