docs: gongfa - register input-state-transform-output framework (#240)

* docs: gongfa - add cross-domain framework source

* docs: gongfa - register cross-domain input-state-transform-output framework
This commit is contained in:
tradecatlabs
2026-10-24 10:50:08 +08:00
committed by GitHub
parent 59614bf628
commit 0e328c14f9
10 changed files with 227 additions and 58 deletions
+54 -15
View File
@@ -94,11 +94,50 @@ class CatalogMaintenanceTest(unittest.TestCase):
stream.write(text)
return result
def test_user_requested_framework_and_input_output_tiers_are_separate_provisional_opinions(self):
rows = catalog.merge_rows(deepcopy(self.documents))
by_id = {(row['namespace'], row['original_id']): row for row in rows}
framework = by_id['registry', 'gongfa-input-state-transform-output-cross-domain']
input_output = by_id['registry', 'gongfa-input-state-transform-separation']
state_classification = by_id['registry', 'gongfa-state-classification']
self.assertEqual(framework['grade_id'], 'tian-initial')
self.assertEqual(framework['grading_status'], 'provisional')
self.assertEqual(input_output['grade_id'], 'tian-intermediate')
self.assertEqual(input_output['grading_status'], 'provisional')
self.assertEqual(state_classification['grade_id'], 'xuan-intermediate')
self.assertEqual(self.documents['registry']['assessments'], [])
previous = next(batch for batch in self.documents['registry']['grade_proposals']
if batch['id'] == 'gongfa-author-repo-expansion-20261007')
successor = next(batch for batch in self.documents['registry']['grade_proposals']
if batch['id'] == 'gongfa-user-input-state-transform-separation-tian-20261024')
framework_batch = next(batch for batch in self.documents['registry']['grade_proposals']
if batch['id'] == 'gongfa-user-cross-domain-framework-tian-20261024')
self.assertEqual(successor['supersedes'], previous['id'])
self.assertIsNone(framework_batch['supersedes'])
previous_items = {(item['gongfa_id'], item['content_version']): item for item in previous['items']}
successor_items = {(item['gongfa_id'], item['content_version']): item for item in successor['items']}
framework_items = {(item['gongfa_id'], item['content_version']): item for item in framework_batch['items']}
self.assertEqual(set(successor_items), set(previous_items))
self.assertEqual(set(framework_items), {(framework['original_id'], 'r1')})
for key, item in previous_items.items():
if key[0] != 'gongfa-input-state-transform-separation':
self.assertEqual(successor_items[key], item)
self.assertEqual(previous_items['gongfa-input-state-transform-separation', 'r1']['grade_id'],
'xuan-intermediate')
self.assertEqual(successor_items['gongfa-input-state-transform-separation', 'r1']['grade_id'],
'tian-intermediate')
self.assertEqual(framework_items[framework['original_id'], 'r1']['grade_id'], 'tian-initial')
self.assertIn('用户明确指定', framework['explanation_fields'][5]['content'])
self.assertIn('天阶初级', framework['explanation_fields'][5]['content'])
self.assertIn('用户明确指定', input_output['explanation_fields'][5]['content'])
self.assertIn('天阶中级', input_output['explanation_fields'][5]['content'])
def test_current_all_classified_content_and_two_bad_summaries_keep_original_opinions(self):
rows = catalog.merge_rows(deepcopy(self.documents))
self.assertEqual(Counter(row['namespace'] for row in rows), {'registry': 411})
self.assertEqual(len(rows), 411)
self.assertEqual(len({(r['namespace'], r['original_id'], r['content_version']) for r in rows}), 411)
self.assertEqual(Counter(row['namespace'] for row in rows), {'registry': 412})
self.assertEqual(len(rows), 412)
self.assertEqual(len({(r['namespace'], r['original_id'], r['content_version']) for r in rows}), 412)
undetermined = {r['original_id'] for r in rows if r['grading_status'] == 'undetermined'}
self.assertEqual(undetermined, {
'gongfa-candidate-html211-e001-a663456869',
@@ -114,7 +153,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
self.assertEqual(by_id['registry', 'gongfa-candidate-html211-e001-a663456869']['grading_status'], 'undetermined')
self.assertIn('失去50%容量时剩余单位需要承担2倍总流量。',
by_id['registry', 'gongfa-candidate-html211-e001-a663456869']['original_text'])
self.assertEqual(sum(r['entry_status'] == '已登记' for r in rows), 411)
self.assertEqual(sum(r['entry_status'] == '已登记' for r in rows), 412)
lambda_index = next(index for index, row in enumerate(rows) if row['original_id'] == 'gongfa-lambda-calculus')
glue_index = next(index for index, row in enumerate(rows) if row['original_id'] == 'gongfa-glue-coding')
self.assertEqual(lambda_index + 1, glue_index)
@@ -126,7 +165,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
self.assertEqual(chapters[chapters.index('## 拼好码') + 1], '## Lambda 演算')
self.assertEqual(sum(r['entry_status'] == '登记库候选' for r in rows), 0)
self.assertEqual(self.documents['registry']['assessments'], [])
self.assertEqual(len(self.documents['registry']['gongfa']), 411)
self.assertEqual(len(self.documents['registry']['gongfa']), 412)
self.assertTrue(all(item['entry_status'] == 'registered' for item in self.documents['registry']['gongfa']))
registry_item = next(item for item in self.documents['registry']['gongfa'] if item['id'] == 'gongfa-first-principles')
profile = registry_item['content']['profile']
@@ -181,12 +220,12 @@ class CatalogMaintenanceTest(unittest.TestCase):
self.assertEqual(self.documents['html211_candidates']['registry_updated'], False)
self.assertEqual(self.documents['html96_candidates']['registry_updated'], False)
self.assertEqual(self.documents['explanations_v1']['template_sha256'], catalog.tool_explanations.template_sha256(ROOT))
self.assertEqual(len(self.documents['explanations_v1']['items']), 411)
self.assertEqual(len(self.documents['explanations_v1']['items']), 412)
self.assertTrue(all(item['object_key'].startswith('registry:')
for item in self.documents['explanations_v1']['items']))
views = catalog.render_views(ROOT, rows, self.binding)
markdown = views['README.md']
self.assertIn('- 共**411条内容记录**;已登记411条,待登记0条,未登记来源条目0条。', markdown)
self.assertIn('- 共**412条内容记录**;已登记412条,待登记0条,未登记来源条目0条。', markdown)
self.assertNotIn('[控制论与科学方法论](#控制论与科学方法论)', markdown)
self.assertIn('同名条目在导航中附稳定对象ID,不表示身份合并。', markdown)
self.assertFalse('catalog.xlsx' in markdown, '活动阅读视图只有Markdown,历史Excel仅作原始载荷保存')
@@ -475,8 +514,8 @@ class CatalogMaintenanceTest(unittest.TestCase):
for phrase in phrases:
self.assertNotIn(phrase, fields[field_name], f'{candidate_id}:{field_name}')
def test_stale_status_scan_covers_all_441_explanation_items_without_rewriting_them(self):
expected_counts = {'gongfa': 411, 'faqi': 30}
def test_stale_status_scan_covers_all_442_explanation_items_without_rewriting_them(self):
expected_counts = {'gongfa': 412, 'faqi': 30}
bundles = source_archive.bundles(ROOT)
self.assertEqual(set(expected_counts), set(bundles))
hits = []
@@ -492,7 +531,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
for label in STALE_EXPLANATION_LABELS:
if label in field['content']:
hits.append(f"{kind}:{item['object_key']}:{field['name']}:{label}")
self.assertEqual(441, total)
self.assertEqual(442, total)
self.assertEqual([], hits, '仅报告过时状态词候选,不自动改写说明:' + chr(10) + chr(10).join(hits))
def test_v1_template_appends_the_three_argument_fields_without_changing_v0(self):
@@ -530,8 +569,8 @@ class CatalogMaintenanceTest(unittest.TestCase):
findings.append(f"{item['object_key']}:{name}")
self.assertEqual([], findings, '主张不能把同一摘要同时当作方法和问题:' + ', '.join(findings))
def test_active_v1_payload_migrates_all_441_records_with_toulmin_warrants(self):
expected_counts = {'gongfa': 411, 'faqi': 30}
def test_active_v1_payload_migrates_all_442_records_with_toulmin_warrants(self):
expected_counts = {'gongfa': 412, 'faqi': 30}
expected_names = v0_field_names() + ['结论', '连接规则', '依据']
bundles = source_archive.bundles(ROOT)
total = 0
@@ -562,7 +601,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
self.assertNotIn('仅当第18项支持第11项机制适用于第9项问题', warrant, item['object_key'])
self.assertIn('第7项', fields['依据'], item['object_key'])
self.assertIn('第11项', fields['依据'], item['object_key'])
self.assertEqual(441, total)
self.assertEqual(442, total)
gongfa_items = {
item['object_key']: {field['name']: field['content'] for field in item['fields']}
for item in bundles['gongfa']['data']['explanations_v1']['items']
@@ -631,8 +670,8 @@ class CatalogMaintenanceTest(unittest.TestCase):
documents['registry']['gongfa'].append(candidate)
rows = catalog.merge_rows(documents)
self.assertEqual(sum(row['entry_status'] == '登记库候选' for row in rows), 1)
self.assertEqual(412, len(rows))
self.assertIn('合计412条', '\n'.join(catalog.notes(rows, self.binding)))
self.assertEqual(413, len(rows))
self.assertIn('合计413条', '\n'.join(catalog.notes(rows, self.binding)))
def test_registry_updates_follow_explicit_correction_and_never_inherit_a_new_version(self):
documents = deepcopy(self.documents)