@furongjun1999/dsh-memory 0.4.11 → 0.5.1
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.
- package/README.md +552 -465
- package/codebuddy/CODEBUDDY.md +11 -3
- package/codebuddy/README.md +92 -90
- package/codebuddy/mcp.json +27 -27
- package/docs/GBrain/345/217/257/345/200/237/351/211/264/347/202/271_/347/201/265/346/236/242/350/220/275/347/202/271/344/272/244/346/216/245_20260919.md +169 -169
- package/docs/Pi/345/217/257/345/255/246/344/271/240/344/274/230/347/202/271_/347/201/265/346/236/242/345/244/247/350/204/221/346/224/271/350/277/233/344/272/244/346/216/245_20260915.md +144 -144
- package/docs/README.md +143 -111
- package/docs/discipline/harnesses.yaml +244 -226
- package/docs/discipline/templates/full.md.tmpl +61 -61
- package/docs/discipline/templates/rules.mdc.tmpl +68 -0
- package/docs/discipline/templates/skill.md.tmpl +23 -23
- package/docs/eval/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v1.0.md +299 -299
- package/docs/eval/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v2.0.md +239 -239
- package/docs/eval/bench_lingshu_self/bench_self.py +140 -0
- package/docs/eval/bench_lingshu_self/self_bench_result.json +404 -0
- package/docs/eval/bench_lingshu_self//347/201/265/346/236/242/350/207/252/345/272/223/347/253/257/345/210/260/347/253/257/346/243/200/347/264/242/345/256/236/346/265/213_v1.0.md +38 -0
- package/docs/eval//344/270/215/345/217/257/351/235/240/346/200/247/350/220/275/345/234/260_P0_v1.0.md +185 -0
- package/docs/eval//345/256/236/351/252/214/346/226/271/346/241/210_/345/255/246/344/271/240/351/227/255/347/216/257AB/344/270/216/346/250/252/350/257/204_v1.0.md +174 -174
- package/docs/eval//346/225/205/351/232/234/346/263/250/345/205/245/345/256/236/346/265/213_v1.0.md +422 -0
- package/docs/eval//346/250/252/350/257/204_/345/205/255/345/256/266100/351/242/230/344/270/255/350/213/261/345/217/214/346/237/245_v1.0.md +223 -223
- package/docs/eval//347/253/257/345/210/260/347/253/257LoCoMoQA/345/220/214/345/217/243/345/276/204/345/257/271/347/205/247_v1.0.md +100 -0
- package/docs/eval//347/253/257/345/210/260/347/253/257/345/271/262/346/211/260/346/261/240/350/257/204/346/265/213_/347/241/256/345/256/232/346/200/247/350/243/201/345/206/263vsLLM_judge_v1.1.md +197 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v1.md +156 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v10.md +210 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v11.md +227 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v12.md +203 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v13.md +233 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v14.md +191 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v15.md +213 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v16.md +214 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v17.md +199 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v2.md +156 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v3.md +152 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v4.md +128 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v5.md +114 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v6.md +192 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v7.md +187 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v8.md +207 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v9.md +203 -0
- package/docs/{mdcg → hive}//344/273/244/347/211/214/344/270/216/350/247/222/350/211/262/346/235/203/350/201/214/345/210/206/347/246/273_v0.1.md +165 -160
- package/docs/hive//344/273/244/347/211/214/350/257/255/344/271/211/344/277/256/346/255/243_/344/273/262/350/243/201/344/275/215_v0.1.md +76 -0
- package/docs/{mdcg → hive}//345/255/220/344/273/243/347/220/206/351/205/215/347/275/256/346/240/207/345/207/206_v0.5.md +236 -236
- package/docs/hive//345/256/211/345/205/250/345/256/241/350/256/241/345/256/236/351/224/232_v0.1.md +202 -0
- package/docs/hive//346/243/200/347/264/242/346/224/266/346/225/233/345/256/236/346/265/213/344/270/216S1b/350/256/276/350/256/241_v0.1.md +43 -43
- package/docs/hive//346/243/200/347/264/242/347/256/227/346/263/225/345/217/243/345/276/204/345/257/271/347/205/247_v0.1.md +85 -0
- package/docs/hive//346/243/200/347/264/242/350/267/257/345/276/204/344/270/216/350/256/244/347/237/245/347/273/223/346/236/204/345/245/221/347/272/246_v0.1.md +102 -102
- package/docs/hive//350/234/202/345/267/242M6_ingest/345/256/236/346/226/275/350/256/241/345/210/222_v0.1.md +47 -0
- package/docs/hive//350/234/202/345/267/242/345/217/214/345/256/236/344/276/213/344/272/222/351/252/214_/350/256/276/350/256/241/345/256/232/347/250/277.md +519 -503
- package/docs/hive//350/234/202/345/267/242/345/267/245/344/275/234/350/256/260/345/277/206_/351/241/271/347/233/256/350/256/241/345/210/222.md +85 -85
- package/docs/hive//350/234/202/345/267/242/350/256/276/350/256/241_/347/220/206/350/256/272/345/257/271/351/275/220_v0.1.md +191 -0
- package/docs/hive//350/234/202/345/267/242/350/277/255/344/273/243_/345/256/217/350/247/202/344/270/216/347/276/244/344/275/223/350/260/203/345/272/246_v0.1.md +90 -0
- package/docs/images/lingshu-moonlight-covenant-poster-preview.jpg +0 -0
- package/docs/images/lingshu-moonlight-covenant-poster.png +0 -0
- package/docs/mdcg/D_meta_/345/267/245/347/250/213/345/214/226/346/226/271/346/241/210_v0.2.md +216 -216
- package/docs/mdcg/README/350/257/246/347/273/206/347/211/210_v0.4.10.md +646 -646
- package/docs/mdcg/lingshu_tutorial.html +14449 -14449
- package/docs/mdcg/release_v0.4.11.md +49 -0
- package/docs/mdcg/release_v0.4.5.md +55 -55
- package/docs/mdcg/tool_table_v0.3.0.md +117 -117
- package/docs/mdcg//345/205/250/345/272/223/344/273/243/347/240/201/350/257/204/345/256/241/344/270/216/346/235/241/344/273/266/345/214/226/346/263/250/351/207/212_/350/256/241/345/210/222_v0.1.md +600 -600
- package/docs/mdcg//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +40 -40
- package/docs/mdcg//345/215/225/345/205/203/350/207/252/346/210/221/351/224/232/347/202/271_/347/263/273/347/273/237/346/217/220/347/244/272/350/257/215/346/240/207/345/207/206_v0.3.md +275 -275
- package/docs/mdcg//345/217/221/345/270/203/351/227/250/347/246/201/351/223/276_v0.1.md +54 -0
- package/docs/mdcg//346/272/220/347/240/201/347/272/247/346/236/266/346/236/204/345/256/241/350/256/241_GPT/346/211/271/350/257/204/345/257/271/347/205/247_v1.0.md +130 -130
- package/docs/mdcg//347/201/265/346/236/24282/345/267/245/345/205/267_/345/212/237/350/203/275/346/225/264/347/220/206/344/270/216/350/277/201/347/247/273/346/230/240/345/260/204_v0.1.md +278 -278
- package/docs/mdcg//347/201/265/346/236/242/350/256/260/345/277/206/345/212/250/350/257/215/345/215/217/350/256/256_v1.0-draft.md +172 -172
- package/docs/mdcg//347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +270 -270
- package/docs/mdcg//350/256/244/347/237/245/345/233/276_G4-G8/347/274/272/345/217/243/350/243/201/345/256/232/345/215/225_v0.1.md +491 -491
- package/docs/mdcg//350/256/244/347/237/245/345/233/276_/346/235/241/344/273/266/347/251/272/351/227/264/345/220/210/346/210/220/344/270/216/347/224/237/346/225/210/346/235/241/344/273/266/345/217/243/345/276/204_v0.1.md +340 -340
- package/docs/mdcg//350/256/244/347/237/245/345/233/276_/347/264/242/345/274/225/344/270/216/345/267/245/347/250/213/350/247/204/350/214/203/345/214/226_/350/256/241/345/210/222_v0.1.md +588 -588
- package/docs/plans/GridWorld/346/234/200/345/260/217/351/227/255/347/216/257/350/247/204/346/240/274_v0.1.md +176 -176
- package/docs/plans//345/221/275/345/220/215/346/262/273/347/220/206_/351/241/271/347/233/256/350/256/241/345/210/222.md +81 -81
- package/docs/swarm//350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +704 -704
- package/docs/swarm//350/234/202/347/276/244/345/220/214/351/224/231/346/243/200/346/265/213/345/256/236/351/252/214/345/215/217/350/256/256_v0.1.md +242 -242
- package/docs/theory//344/270/215/345/217/257/351/235/240/345/256/232/347/220/206/344/270/216/345/244/261/346/225/210/344/274/230/345/205/210/346/241/206/346/236/266_v0.3.md +365 -0
- package/docs/theory//345/215/225/347/272/277/347/250/213/344/270/216/346/263/250/346/204/217/345/212/233/351/233/206/344/270/255_/346/227/240/344/272/211/350/256/256/347/220/206/350/256/272/346/226/207/346/241/243_v1.0.md +129 -129
- package/docs/theory//345/271/266/345/217/221/345/277/205/347/204/266/346/200/247/347/220/206/350/256/272_v0.2.md +134 -134
- package/docs/theory//346/231/272/350/203/275/350/256/2723.4.md +5260 -5260
- package/docs/theory//346/246/202/345/277/265/345/210/206/345/261/202/345/257/271/351/275/220/350/241/250_v0.1.md +145 -145
- package/docs/theory//347/220/206/350/256/272_/346/234/272/345/210/266_/344/273/243/347/240/201_/345/256/236/351/252/214_/347/274/272/345/217/243/347/237/251/351/230/265_v0.1.md +144 -144
- package/docs/theory//347/220/206/350/256/272/344/273/223/346/213/206/345/210/206/344/270/216/347/231/275/347/256/261/347/237/245/350/257/206/345/272/223/345/206/205/350/277/201_v0.1.md +198 -198
- package/docs/theory//350/256/244/347/237/245/344/273/243/347/220/206/344/270/216/346/224/266/346/225/233/347/273/223/346/236/204_/346/235/241/344/273/266/350/256/272/351/207/215/346/236/204_v0.1.md +221 -221
- package/docs/world_model//344/270/226/347/225/214/346/250/241/345/236/213_/347/245/236/347/273/217/347/275/221/347/273/234/345/272/225/345/261/202/346/236/266/346/236/204_v1.0.md +237 -237
- package/docs//344/270/215/345/217/257/351/235/240/346/200/247/347/220/206/350/256/272_v0.1.md +343 -0
- package/docs//345/217/221/345/270/203/344/273/266/345/233/236/346/272/257/350/257/264/346/230/216_v0.1.md +82 -82
- package/docs//345/267/245/344/275/234/347/272/252/345/276/213_/350/256/244/347/237/245/345/233/276/346/235/241/347/233/256_v1.1.json +28 -2
- package/dsh/README.md +82 -82
- package/dsh/cordis.yml.example +139 -139
- package/dsh/update-lingshu.bat +11 -11
- package/lib/bridge.d.ts +9 -0
- package/lib/bridge.js +35 -0
- package/lib/hooks.js +36 -2
- package/lib/index.js +7 -1
- package/lib/lib/roleplay_web.js +116 -29
- package/lib/lib/token_store.d.ts +7 -1
- package/lib/lib/token_store.js +12 -3
- package/md_cg/__init__.py +7 -7
- package/md_cg/audit.py +379 -368
- package/md_cg/autonomy.py +287 -287
- package/md_cg/backfill.py +1328 -1327
- package/md_cg/backfill_bigdomain.py +34 -34
- package/md_cg/backfill_bucket_zh.py +35 -0
- package/md_cg/bench6_arms.py +410 -410
- package/md_cg/bench6_common.py +230 -230
- package/md_cg/bench6_competitors.py +212 -212
- package/md_cg/bench_axis_domain.py +257 -257
- package/md_cg/bench_blind_comp.py +308 -308
- package/md_cg/bench_e2e_judge.py +532 -0
- package/md_cg/bench_e2e_locomo_qa.py +368 -0
- package/md_cg/bench_e2e_qa.py +256 -0
- package/md_cg/bench_en_atoms_public.py +230 -230
- package/md_cg/bench_governance.py +348 -348
- package/md_cg/bench_lme_zh.py +410 -410
- package/md_cg/bench_locomo.py +121 -121
- package/md_cg/bench_locomo_zh.py +450 -450
- package/md_cg/bench_locomo_zh_public.py +147 -147
- package/md_cg/bench_longmem.py +112 -112
- package/md_cg/bench_membench.py +632 -632
- package/md_cg/bench_p0.py +149 -149
- package/md_cg/bench_progressive.py +287 -287
- package/md_cg/bench_role_views.py +238 -238
- package/md_cg/bench_task_ab.py +243 -243
- package/md_cg/bench_task_ab_llm.py +408 -408
- package/md_cg/bench_unified_en.py +204 -204
- package/md_cg/bench_zh_mad.py +601 -601
- package/md_cg/blindspot_tickets.py +123 -123
- package/md_cg/branches.py +301 -285
- package/md_cg/build_postings.py +73 -73
- package/md_cg/ccgc.py +1006 -948
- package/md_cg/census.py +132 -132
- package/md_cg/chain.py +315 -300
- package/md_cg/codeindex.py +531 -531
- package/md_cg/coldverify.py +292 -292
- package/md_cg/comment_gate.py +337 -337
- package/md_cg/cond_compose.py +190 -190
- package/md_cg/cond_facts.py +154 -154
- package/md_cg/cond_template.json +106 -106
- package/md_cg/condition_anchor.py +142 -142
- package/md_cg/conformance.py +726 -726
- package/md_cg/consistency.py +717 -717
- package/md_cg/consolidate.py +1537 -1439
- package/md_cg/corpus.py +110 -110
- package/md_cg/crosscheck.py +1098 -1097
- package/md_cg/crypto.py +3 -1
- package/md_cg/d_meta.py +310 -310
- package/md_cg/datapath.py +78 -18
- package/md_cg/docindex.py +473 -473
- package/md_cg/eval_common.py +575 -575
- package/md_cg/evidence.py +4 -2
- package/md_cg/evolution.py +477 -477
- package/md_cg/export.py +222 -220
- package/md_cg/forgetting.py +581 -581
- package/md_cg/fsutil.py +377 -329
- package/md_cg/hotcache.py +48 -7
- package/md_cg/hyperedge.py +251 -251
- package/md_cg/identity.py +390 -390
- package/md_cg/insight.py +500 -500
- package/md_cg/interop.py +338 -0
- package/md_cg/judgment_manifest.py +177 -0
- package/md_cg/lexicon/build_cedict_en_zh.py +329 -329
- package/md_cg/lexicon/build_standard_en.py +171 -171
- package/md_cg/lexicon/expand_en_zh.py +211 -211
- package/md_cg/lifecycle.py +272 -272
- package/md_cg/linkref.py +280 -280
- package/md_cg/links.py +140 -107
- package/md_cg/mcp_server.py +403 -55
- package/md_cg/md_whitebox.py +345 -345
- package/md_cg/mdcg.py +783 -233
- package/md_cg/mdcos.py +500 -70
- package/md_cg/metacognition.py +591 -591
- package/md_cg/migrate.py +119 -119
- package/md_cg/migrate_aeis.py +221 -221
- package/md_cg/migrate_roleplay.py +293 -293
- package/md_cg/migrate_wisdom_graph.py +360 -360
- package/md_cg/mreview/__init__.py +25 -25
- package/md_cg/mreview/__main__.py +110 -110
- package/md_cg/mreview/bundle.py +178 -178
- package/md_cg/mreview/candidates.py +262 -262
- package/md_cg/mreview/govern.py +694 -693
- package/md_cg/mreview/locate.py +939 -939
- package/md_cg/mreview/pipeline.py +728 -728
- package/md_cg/mreview/rules/duplication.json +21 -21
- package/md_cg/mreview/rules/field_coverage.json +54 -54
- package/md_cg/mreview/rules/source_license.json +21 -21
- package/md_cg/mreview/rules/template_flow.json +21 -21
- package/md_cg/mreview/ruleset.py +252 -252
- package/md_cg/nodefile.py +575 -575
- package/md_cg/pooling.py +484 -472
- package/md_cg/postings.py +300 -298
- package/md_cg/predict.py +1100 -1100
- package/md_cg/progressive.py +123 -123
- package/md_cg/protect.py +272 -272
- package/md_cg/protocol/md_cg_gate.proto +33 -33
- package/md_cg/protocol.py +372 -372
- package/md_cg/provenance.py +582 -582
- package/md_cg/reach.py +453 -453
- package/md_cg/readcache.py +143 -0
- package/md_cg/reconcile.py +228 -0
- package/md_cg/refindex.py +833 -833
- package/md_cg/refine.py +604 -604
- package/md_cg/review_cli.py +170 -0
- package/md_cg/roleviews.py +89 -89
- package/md_cg/routing.py +393 -365
- package/md_cg/run_tests.py +211 -0
- package/md_cg/scrub.py +13 -3
- package/md_cg/security.py +128 -18
- package/md_cg/self_state.py +1029 -1029
- package/md_cg/selfreport.py +152 -151
- package/md_cg/semantic/__init__.py +10 -10
- package/md_cg/semantic/canonical.py +122 -122
- package/md_cg/semantic/en_normalizer.py +364 -364
- package/md_cg/semantic/en_zh_map.json +28694 -0
- package/md_cg/semantic/export_en_zh_map.py +64 -0
- package/md_cg/semantic/unify.py +45 -0
- package/md_cg/semantic/zh_en_atoms.py +139 -139
- package/md_cg/signer.py +7 -4
- package/md_cg/sources.py +816 -582
- package/md_cg/statushdr.py +179 -179
- package/md_cg/stg.py +54 -37
- package/md_cg/subgraph.py +729 -729
- package/md_cg/sustain.py +35 -5
- package/md_cg/tasks.py +470 -470
- package/md_cg/test_access_hints.py +147 -0
- package/md_cg/test_action_derive.py +203 -203
- package/md_cg/test_audit_rotate.py +270 -270
- package/md_cg/test_autonomy.py +143 -143
- package/md_cg/test_bench_governance.py +102 -102
- package/md_cg/test_blindspot_tickets.py +166 -166
- package/md_cg/test_branch_discard_tombstone.py +136 -0
- package/md_cg/test_branches.py +13 -3
- package/md_cg/test_ccg_perturb.py +184 -184
- package/md_cg/test_ccgc.py +433 -433
- package/md_cg/test_census_prune.py +81 -81
- package/md_cg/test_chain_read_isolate.py +168 -0
- package/md_cg/test_cond_compose_anchors.py +76 -76
- package/md_cg/test_cond_match.py +165 -165
- package/md_cg/test_condition_anchor.py +81 -81
- package/md_cg/test_d_meta.py +412 -412
- package/md_cg/test_datapath_device_name.py +203 -0
- package/md_cg/test_datapath_root.py +199 -199
- package/md_cg/test_emit_negtail_cache.py +156 -0
- package/md_cg/test_en_pipeline.py +22 -2
- package/md_cg/test_gain_gate.py +212 -212
- package/md_cg/test_govern_directread.py +421 -0
- package/md_cg/test_health_scale.py +173 -173
- package/md_cg/test_hive_ingest.py +285 -0
- package/md_cg/test_hot_cold.py +215 -215
- package/md_cg/test_hyperedge.py +245 -245
- package/md_cg/test_i26_empty_first_write.py +116 -0
- package/md_cg/test_i27_e041_identity.py +128 -0
- package/md_cg/test_i28_hotcache_prodpath.py +122 -0
- package/md_cg/test_i32_hotcache_env_key.py +218 -0
- package/md_cg/test_identity_attribution.py +96 -15
- package/md_cg/test_index_durability.py +17 -3
- package/md_cg/test_interop.py +95 -0
- package/md_cg/test_interop_judgment.py +228 -0
- package/md_cg/test_issue39_utf8_stdio.py +273 -0
- package/md_cg/test_lifecycle.py +309 -309
- package/md_cg/test_linkref.py +306 -306
- package/md_cg/test_links_concurrent_write.py +188 -0
- package/md_cg/test_lock.py +43 -43
- package/md_cg/test_md_access_parity.py +255 -255
- package/md_cg/test_md_writepath.py +345 -345
- package/md_cg/test_mdstore_search_parity.py +160 -0
- package/md_cg/test_merge_upsert.py +168 -0
- package/md_cg/test_mr_m2.py +587 -587
- package/md_cg/test_mr_m3.py +710 -710
- package/md_cg/test_mr_m4.py +485 -485
- package/md_cg/test_n123_derive_expiry_chain.py +205 -0
- package/md_cg/test_n130_verify_falsified_protect.py +185 -0
- package/md_cg/test_n131_merge_gate.py +205 -0
- package/md_cg/test_p0.py +250 -250
- package/md_cg/test_p1.py +316 -316
- package/md_cg/test_p10_identity.py +173 -173
- package/md_cg/test_p11_consistency.py +233 -233
- package/md_cg/test_p12_metacognition.py +212 -212
- package/md_cg/test_p13_encryption.py +241 -241
- package/md_cg/test_p14_sustain.py +249 -249
- package/md_cg/test_p15_scrub.py +280 -280
- package/md_cg/test_p16_self_state.py +301 -301
- package/md_cg/test_p17_predict.py +354 -354
- package/md_cg/test_p18_whitebox.py +171 -171
- package/md_cg/test_p19_migrate_roleplay.py +149 -149
- package/md_cg/test_p1x_ref_root.py +160 -0
- package/md_cg/test_p20_evolution.py +315 -315
- package/md_cg/test_p21_tokens.py +293 -270
- package/md_cg/test_p22_theory.py +175 -175
- package/md_cg/test_p23_links.py +311 -311
- package/md_cg/test_p24_evidence.py +227 -227
- package/md_cg/test_p25_weights.py +156 -156
- package/md_cg/test_p26_refindex.py +416 -416
- package/md_cg/test_p27_docindex.py +16 -7
- package/md_cg/test_p28_refcheck.py +305 -305
- package/md_cg/test_p29_session_ingest_export.py +354 -333
- package/md_cg/test_p2_mcp.py +3 -0
- package/md_cg/test_p3.py +11 -2
- package/md_cg/test_p30_maintain.py +330 -330
- package/md_cg/test_p31_insight.py +534 -534
- package/md_cg/test_p32_backfill.py +7 -1
- package/md_cg/test_p33_ccg_wiring.py +293 -293
- package/md_cg/test_p34_crosscheck.py +331 -331
- package/md_cg/test_p35_conditioned_claim.py +252 -252
- package/md_cg/test_p36_kp_align.py +230 -230
- package/md_cg/test_p37_condition_space.py +248 -248
- package/md_cg/test_p38_concurrent_flush.py +102 -0
- package/md_cg/test_p38_contextualize.py +273 -273
- package/md_cg/test_p39_verify_flow.py +153 -0
- package/md_cg/test_p39_vision_evidence.py +369 -369
- package/md_cg/test_p40_refine_worklist.py +241 -241
- package/md_cg/test_p41_evolve_patrol.py +224 -224
- package/md_cg/test_p42_provenance.py +269 -269
- package/md_cg/test_p43_pooling.py +412 -398
- package/md_cg/test_p44_md_whitebox.py +231 -231
- package/md_cg/test_p45_session_identity.py +219 -219
- package/md_cg/test_p46_unit_scope.py +272 -272
- package/md_cg/test_p47_session_view.py +316 -0
- package/md_cg/test_p4_fuzzy.py +223 -223
- package/md_cg/test_p5_semantic.py +226 -226
- package/md_cg/test_p6_consolidate.py +440 -387
- package/md_cg/test_p7_goals_recent.py +202 -202
- package/md_cg/test_p8_subgraph_chain.py +200 -200
- package/md_cg/test_p9_forget_protect.py +231 -231
- package/md_cg/test_predict_beta.py +135 -135
- package/md_cg/test_preflight_failclosed.py +100 -100
- package/md_cg/test_progressive.py +146 -146
- package/md_cg/test_propose_tail_index.py +157 -0
- package/md_cg/test_protocol.py +243 -243
- package/md_cg/test_reach.py +378 -378
- package/md_cg/test_reach_keys.py +201 -201
- package/md_cg/test_read_clip.py +141 -141
- package/md_cg/test_read_scope_b27.py +277 -0
- package/md_cg/test_readcache_default_on.py +168 -0
- package/md_cg/test_readcache_precise_inval.py +270 -0
- package/md_cg/test_readcache_prodpath.py +203 -0
- package/md_cg/test_reconcile_v0.py +294 -0
- package/md_cg/test_retr_gates_prodpath.py +140 -0
- package/md_cg/test_retr_s1.py +344 -340
- package/md_cg/test_retr_s1b.py +276 -209
- package/md_cg/test_retr_s3.py +194 -194
- package/md_cg/test_retr_s4.py +163 -163
- package/md_cg/test_retr_s5.py +200 -200
- package/md_cg/test_retr_s6.py +157 -157
- package/md_cg/test_retr_s7.py +392 -384
- package/md_cg/test_retr_s8_time.py +369 -316
- package/md_cg/test_retr_s9_edges.py +286 -286
- package/md_cg/test_retr_s9_entity_ctx.py +9 -3
- package/md_cg/test_retr_score_once.py +208 -0
- package/md_cg/test_review_conformance.py +367 -367
- package/md_cg/test_review_onepass.py +170 -0
- package/md_cg/test_role_views.py +354 -354
- package/md_cg/test_rrf_graph_seed_cache.py +154 -0
- package/md_cg/test_security_audit.py +155 -0
- package/md_cg/test_security_audit_b26.py +161 -0
- package/md_cg/test_security_audit_v21.py +250 -0
- package/md_cg/test_sem_noise.py +242 -242
- package/md_cg/test_semantic_canonical.py +16 -2
- package/md_cg/test_session_isolation.py +168 -0
- package/md_cg/test_snapshot_autoclose.py +187 -0
- package/md_cg/test_subproc_encoding.py +192 -192
- package/md_cg/test_sustain_mutual.py +153 -153
- package/md_cg/test_tail_watermark_race.py +208 -0
- package/md_cg/test_tasks.py +409 -409
- package/md_cg/test_tenant_env_override_warn.py +139 -0
- package/md_cg/test_tenant_registry_corrupt_warn.py +151 -0
- package/md_cg/test_tool_face.py +189 -189
- package/md_cg/test_transfer.py +180 -180
- package/md_cg/test_trust.py +361 -361
- package/md_cg/test_twophase.py +286 -286
- package/md_cg/test_v14_fixes.py +38 -20
- package/md_cg/test_validity_filter.py +280 -280
- package/md_cg/test_verify_answer.py +138 -138
- package/md_cg/test_verify_dirty_reconcile.py +157 -0
- package/md_cg/test_wisdom_md_store.py +292 -292
- package/md_cg/test_writelimit.py +197 -197
- package/md_cg/test_writepipe.py +214 -214
- package/md_cg/theory.py +6 -3
- package/md_cg/tokens.py +85 -14
- package/md_cg/tool_face.py +260 -260
- package/md_cg/trust.py +986 -950
- package/md_cg/twophase.py +231 -231
- package/md_cg/units.py +668 -667
- package/md_cg/vision_evidence.py +667 -666
- package/md_cg/weights.py +624 -624
- package/md_cg/whitebox.py +527 -527
- package/md_cg/whitebox_kb/__init__.py +37 -37
- package/md_cg/whitebox_kb/aeis_core/__init__.py +42 -42
- package/md_cg/whitebox_kb/aeis_core/semantic.py +280 -280
- package/md_cg/whitebox_kb/aeis_core/textutil.py +13 -13
- package/md_cg/whitebox_kb/engine.py +310 -310
- package/md_cg/whitebox_kb/seed_knowledge//346/231/272/350/203/275/350/256/2723.4.md +5260 -5260
- package/md_cg/whitebox_kb/wisdom/browser_units.py +2631 -2631
- package/md_cg/whitebox_kb/wisdom/causal_discover.py +432 -432
- package/md_cg/whitebox_kb/wisdom/chat_engine.py +1506 -1506
- package/md_cg/whitebox_kb/wisdom/compiler_code_units.py +3033 -3033
- package/md_cg/whitebox_kb/wisdom/condition_algebra.py +112 -112
- package/md_cg/whitebox_kb/wisdom/condition_frame.py +315 -315
- package/md_cg/whitebox_kb/wisdom/condition_kb.py +108 -108
- package/md_cg/whitebox_kb/wisdom/conflict_map.json +4445 -4445
- package/md_cg/whitebox_kb/wisdom/core/lexer.py +512 -512
- package/md_cg/whitebox_kb/wisdom/core/name_checker.py +1023 -1023
- package/md_cg/whitebox_kb/wisdom/cspmn.py +258 -258
- package/md_cg/whitebox_kb/wisdom/csre.py +264 -264
- package/md_cg/whitebox_kb/wisdom/danmaku_audit.py +252 -252
- package/md_cg/whitebox_kb/wisdom/distilled_condition_units.json +6417 -6417
- package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902b.json +1950 -1950
- package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902c.json +1296 -1296
- package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph_demo.json +59 -59
- package/md_cg/whitebox_kb/wisdom/graph_db_units.py +3089 -3089
- package/md_cg/whitebox_kb/wisdom/knowledge_points.py +318 -318
- package/md_cg/whitebox_kb/wisdom/md_access.py +470 -470
- package/md_cg/whitebox_kb/wisdom/md_store.py +276 -251
- package/md_cg/whitebox_kb/wisdom/migrate_wisdom.py +476 -476
- package/md_cg/whitebox_kb/wisdom/multilang_ir.py +128 -124
- package/md_cg/whitebox_kb/wisdom/navigate.py +248 -248
- package/md_cg/whitebox_kb/wisdom/neural_retrieve.py +224 -224
- package/md_cg/whitebox_kb/wisdom/os_units.py +2735 -2735
- package/md_cg/whitebox_kb/wisdom/pattern_separation.py +376 -376
- package/md_cg/whitebox_kb/wisdom/prereq_map.json +364 -364
- package/md_cg/whitebox_kb/wisdom/python_code_units.py +2766 -2766
- package/md_cg/whitebox_kb/wisdom/role_solidified.json +7 -7
- package/md_cg/whitebox_kb/wisdom/route_memory.py +244 -244
- package/md_cg/whitebox_kb/wisdom/scene_reconstruction.py +148 -148
- package/md_cg/whitebox_kb/wisdom/snr_report.json +40 -40
- package/md_cg/whitebox_kb/wisdom/test_code_compose_domains.py +7541 -7541
- package/md_cg/whitebox_kb/wisdom/test_compiler_self_bootstrap.py +354 -354
- package/md_cg/whitebox_kb/wisdom/test_ecosystem_assembly.py +158 -158
- package/md_cg/whitebox_kb/wisdom/test_ecosystem_demos.py +193 -193
- package/md_cg/whitebox_kb/wisdom/test_graph_db.py +292 -292
- package/md_cg/whitebox_kb/wisdom/test_python_self_bootstrap.py +160 -160
- package/md_cg/whitebox_kb/wisdom/trigger_words_index.json +4366 -4366
- package/md_cg/whitebox_kb/wisdom/verifier.py +1297 -1297
- package/md_cg/writelimit.py +356 -356
- package/md_cg/writepipe.py +20 -8
- package/package.json +101 -96
- package/skills/plugin.json +54 -54
- package/skills/skills/designer-perspective/SKILL.md +158 -158
- package/skills/skills/designer-perspective/references/01-observation-position.md +66 -66
- package/skills/skills/designer-perspective/references/02-structure-recognition.md +62 -62
- package/skills/skills/designer-perspective/references/03-direction-judgment.md +55 -55
- package/skills/skills/designer-perspective/references/04-qualification-verdict.md +72 -72
- package/skills/skills/designer-perspective/references/05-condition-attribution.md +74 -74
- package/skills/skills/designer-perspective/scripts/designer.py +545 -545
- package/skills/skills/designer-perspective/tests/cases.jsonl +17 -17
- package/skills/skills/designer-perspective/tests/selftest.py +61 -61
- package/skills/skills/lingshu-browser/SKILL.md +60 -60
- package/skills/skills/lingshu-compiler/SKILL.md +56 -56
- package/skills/skills/lingshu-compiler/units/analyze-type-infer/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/check-name-real/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-assign/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-expr-tree/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-full-pipeline/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-func-def/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-if-then/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-logic-expr/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-recursive/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-scope/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-type-check/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-while/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0010c4bf/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0355bffb/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0361708a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-054a0414/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-05a1691a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-05eeed1e/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0622a1f6/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-08b54217/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0a62b70c/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0ab24d00/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0e093688/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0e82b966/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0ee9b9b9/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0f3787e6/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-1028685f/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-11897630/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-16661b9b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-1f722303/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-25be1262/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2a76ba07/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2dbea54a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2df52f16/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2ec2c9d2/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2f8c8f39/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-38378ac7/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-39457d2e/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-39fb5926/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-47f4fbfa/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-4a8cd1f1/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-4b230b6b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-4cbbda95/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-4d5a68ff/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-56dc9bdd/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-57e76ebe/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-61ff016b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-63eae588/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-64c4224b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-66377955/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-674ab4f6/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-6af76fd6/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-6d979db2/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-6de326c0/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-6f1c0eea/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-724d6c9b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-7690177f/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-7b229a7d/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-7f471b3a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-815cad08/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-83c61634/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-8c798c81/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-8dd747ac/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-90324d0a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-94b8d72d/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-94f12231/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-95937c16/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-98a5625b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-98b4c42f/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-98e3894a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-9bdfe4b8/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-9d9b4e83/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-9f7be5ad/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-a6daf076/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-a7995a0c/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-a8399248/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-aabbd099/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-afe169d8/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-b0678bda/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-b09bd196/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-b1396e23/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-b9b31ce0/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-c10264a7/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-cb1e8e4b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-ccafd438/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-cda9c262/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-ce648068/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-cf5776a4/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-d974e5d3/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-e3979fd3/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-eb1cf2b5/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-ecb30d5b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-f8c8b24b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-f99fedbe/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-fa8ff5f7/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-fe1b058d/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/lex-chinese-program/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/lex-dao-de-jing/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/lex-nine-chapters/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-arithmetic/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-array-ops/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-closure-call/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-closure-create/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-compare/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-cond-jump/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-cond-space/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-exception/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-func-call/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-loop-run/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-profiling/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-refcount/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-run-loop/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-short-circuit/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-stack-guard/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-stack-ops/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-trust-accum/SKILL.md +45 -45
- package/skills/skills/lingshu-graph/SKILL.md +63 -63
- package/skills/skills/lingshu-net/SKILL.md +48 -48
- package/skills/skills/lingshu-os/SKILL.md +64 -64
- package/skills/skills/lingshu-pylang/SKILL.md +71 -71
- package/src/bridge.ts +33 -0
- package/src/hooks.ts +38 -2
- package/src/index.ts +526 -518
- package/src/lib/datapath.ts +326 -326
- package/src/lib/mdcg_client.ts +413 -413
- package/src/lib/mutual.ts +428 -428
- package/src/lib/prompt_safety.ts +62 -62
- package/src/lib/python_path.ts +71 -71
- package/src/lib/roleplay_web.ts +116 -29
- package/src/lib/token_store.ts +13 -3
- package/src/tools.ts +212 -212
- package/zcode/AGENTS.md +11 -3
- package/zcode/README.md +41 -41
- /package/docs/{mdcg → hive}//344/270/273/344/273/243/347/220/206/345/255/220/344/273/243/347/220/206/350/256/260/345/277/206/346/236/266/346/236/204/350/256/276/350/256/241.md" +0 -0
|
@@ -1,491 +1,491 @@
|
|
|
1
|
-
# 认知图 · G4–G8 缺口裁定单(条件空间声明 + 四态裁决)v0.1
|
|
2
|
-
|
|
3
|
-
> 来源:`docs/mdcg/缺口单_P0收口_v0.1.md` §八「DEFER 登记项」——**G4 层归属错位 / G5 视觉证据未落 / G6 node_ 结构提炼 /
|
|
4
|
-
> G7 自主演化无驱动 / G8 溯源链缺失**,外加缺口单 §6.1 的「索引节点应域级分池降权,而非吃 GLOBAL_CAP」。
|
|
5
|
-
> 目标工程:**dsh-memory / md_cg(认知图 + 记忆 OS)**
|
|
6
|
-
> 证据口径:源码级核对(行号可回溯)+ **真实库(`AEIS/data/mdcg`)只读复算** + 前后冻结基线对照(不采信估计值、不转述文档结论)
|
|
7
|
-
> 时间:2026-09-10 | 真实库批次:G4 `20260910-162432`、G5 `g5-visevid`(后续项批次号执行时续登)
|
|
8
|
-
> 上游资产:G1/G2/G3 已闭合(`evo-20260910-*`),本单**不重复处理**
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## 判定单
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
条件空间:观测位置=全局(设计者)、操作层在 md_cg 写入口之外(只经既有 op 调用)
|
|
16
|
-
| 观测工具=真实库只读复算(盘上 frontmatter + _index.json + _refindex.json + _maintain.jsonl)
|
|
17
|
-
+ 源码行号核对(md_cg/*.py)
|
|
18
|
-
| 时间窗口=2026-09-10 本次迭代(上游 P33–P36 交付后)
|
|
19
|
-
| 存在约束=零新依赖(纯标准库) / md 单一真相源 / 不新增写入口 / 不改默认参数
|
|
20
|
-
/ 预演先行 / 批次留痕可回滚 / 不可闭合项诚实标注
|
|
21
|
-
白箱三问:依据=每条给文件级或计数级证据(§一/§二~§七),未核实项显式标出(§九)
|
|
22
|
-
| 条件=执行前预演只读(dry_run)、基线已冻结(§一)、可复算(批次后同口径重扫)、可回滚(按批次号)
|
|
23
|
-
| 错后=(a) 若不裁定层归属就直接搬 230 条 → 替用户做价值判断,且召回面被无声改写;
|
|
24
|
-
(b) 若把空 evidence 当成「补个字段」→ 会编造视觉侧从未产出的证据(幻觉落库);
|
|
25
|
-
(c) 若把 node_ 1324 条直接交给 LLM 全量改写 → 不可盲测的批量改写,污染唯一真相源
|
|
26
|
-
裁决:ACCEPT —— G4(层归位到 contextual)、G5(守卫式证据回填)、G7(演化挂巡检)、G8(新增节点自动建链)
|
|
27
|
-
DEFER→条件化 ACCEPT —— G6(条件=20 条抽检通过才可扩批)、召回分池降权(条件=先冻结 P95/截断率基线并复测)
|
|
28
|
-
REJECT —— 无(本单无「不该做」项)
|
|
29
|
-
BLINDSPOT —— 视觉侧模型路径证据(`model_evidence`)在本库当前载体上不可复现,须标注而非补齐
|
|
30
|
-
依据:条件证据见 §一~§七;缺条件项均已在本单内**声明条件**,故由 DEFER 转为「带前置条件的 ACCEPT」
|
|
31
|
-
缺失维度:层归属规则(G4)、视觉证据口径(G5)、提炼验收口径(G6)、演化驱动源(G7)、派生关系落点(G8)
|
|
32
|
-
验证路径:基线冻结(§一) → G4 归位与回滚(§二) → G5 证据回填(§三) → G6 抽检(§四) → G7 挂巡检(§五)
|
|
33
|
-
→ G8 建链(§六) → 召回分池复测(§七) → 副作用归因与交付证据单(§八)
|
|
34
|
-
关注信号:G4 归位后 contextual 层召回占比;GLOBAL_CAP 截断率;P95;node_ 正文改写后 CCG 齐备率
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## 一、冻结基线(本轮实测,2026-09-10)
|
|
40
|
-
|
|
41
|
-
**库根裁定**:真实库为 `AEIS/data/mdcg`(6340 个 `.md`,6339 有 frontmatter);
|
|
42
|
-
工作区 `dsh-memory/data/mdcg` 实测仅 **1** 个节点(`python -m md_cg.census` 输出 `总节点: 1`),**非本批对象**,不参与。
|
|
43
|
-
→ 这一条必须先声明,否则「库根写错」会让所有后续计数与判定失效。
|
|
44
|
-
|
|
45
|
-
| 观测项 | 实测值 | 手段 |
|
|
46
|
-
|---|---|---|
|
|
47
|
-
| `.md` 文件 / 有 frontmatter | 6340 / 6339 | 只读遍历 + `nodefile.loads` |
|
|
48
|
-
| 层分布 | `knowledge` 6330、`self` 5、`anchor` 4 | 同上 |
|
|
49
|
-
| 前缀分布(前 10) | `kp_` 2962、`code_` 1480、`node_` 1324、`doc_` 333、`note_` 135、`imgpart_` 60、`vpipe_` 32、`milestone_` 2、`retest6_` 1、`mem_` 1 | 同上 |
|
|
50
|
-
|
|
51
|
-
**G4 目标集合(230 条,逐前缀实测)**:
|
|
52
|
-
|
|
53
|
-
| 前缀 | n | layer | `ccg_exempt` | comment 齐备 | 口径 |
|
|
54
|
-
|---|---|---|---|---|---|
|
|
55
|
-
| `note_` | 135 | knowledge 135 | True 135 | 135 | 题库批次流水账 |
|
|
56
|
-
| `milestone_` | 2 | knowledge 2 | True 2 | 2 | 过程记录 |
|
|
57
|
-
| `retest6_` | 1 | knowledge 1 | True 1 | 1 | 过程记录 |
|
|
58
|
-
| `imgpart_` | 60 | knowledge 60 | True 60 | 60 | 视觉管道产物 |
|
|
59
|
-
| `vpipe_` | 32 | knowledge 32 | True 32 | 32 | 视觉管道产物 |
|
|
60
|
-
| **合计** | **230** | 全 knowledge | 全 True | 全齐备 | 与缺口单 §三「138 + 92」一致 |
|
|
61
|
-
|
|
62
|
-
对照:`node_` 1324(knowledge,exempt 全 True,comment 1321 有 / 3 空);`kp_` 2962(exempt 29 False / 2933 True)。
|
|
63
|
-
|
|
64
|
-
**实现事实(行号可回溯)**:
|
|
65
|
-
|
|
66
|
-
- `md_cg/mdcg.py:37 BUCKETED_LAYERS = ("knowledge",)` → **`contextual` 非分桶层**,归位后落点恒为 `contextual/<id>.md`,不触发分桶路径变更。
|
|
67
|
-
- `md_cg/mdcg.py:34 LAYERS` 已含 `contextual`;`md_cg/tokens.py` 层白名单已含 `contextual` → **归位复用既有层枚举**,无需新增层。
|
|
68
|
-
- `md_cg/consolidate.py:758 _relocate_layer()` 已实现「跨层迁移 + 目标层分桶 + 删旧文件」,返回新相对路径。
|
|
69
|
-
- `md_cg/consolidate.py:776 promote_memories()` 已实现「预演 → 批次 → `_maintain.jsonl` 留痕 → 演化账本」四件套;
|
|
70
|
-
`:847 rollback_promotion()` 已实现**按批次号回滚**(读 `_maintain.jsonl` 的 `promote` 记录反向迁层)。
|
|
71
|
-
- `md_cg/evolution.py:45 KIND_LAYER_SHIFT` 为层位移专用条目类型;`:51 STATE_FIELDS` 含 `layer` → 层位移**可被演化账本记录且可原样写回**。
|
|
72
|
-
- `md_cg/mcp_server.py:1784-1787`:`consolidate` 全 action **一律 `require_admin`** → G4 属管理操作,**权限面已就位,无需新增授权面**。
|
|
73
|
-
- `md_cg/predict.py:526 _SAFE_LAYERS` 含 `contextual` → 归位后仍可被锚点/反馈闭环读到(不破 D-006)。
|
|
74
|
-
- `md_cg/mdcg.py:58 GLOBAL_CAP = 500`;召回截断与打分在 `:822-833`(`hits[:GLOBAL_CAP]`)。
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## 二、G4 裁定:层归属错位 → 归入 `contextual`(ACCEPT)
|
|
79
|
-
|
|
80
|
-
**条件空间(本条)**
|
|
81
|
-
|
|
82
|
-
| 维度 | 声明 |
|
|
83
|
-
|---|---|
|
|
84
|
-
| 观测位置 | 库外只读 → 执行时切换为 designer 管理位(`can_admin`,经既有 `cg` op) |
|
|
85
|
-
| 观测工具 | `consolidate` 预演报表(`dry_run`)+ 批次后同口径复扫 + `_maintain.jsonl` 对账 |
|
|
86
|
-
| 时间窗口 | 2026-09-10 单批次(230 条,一次性) |
|
|
87
|
-
| 存在约束 | 只改 `layer` 字段与落点目录;**正文、密级、id、tags 一律不动** |
|
|
88
|
-
|
|
89
|
-
**归因(三方条件空间 × 失配维度)**
|
|
90
|
-
|
|
91
|
-
| 维度 | 原状态 | 失配点 |
|
|
92
|
-
|---|---|---|
|
|
93
|
-
| 对象条件 | 230 条混合内容(流水账/感知产物)与 6330 条知识共层 | 对象条件失配:**情境性内容被当作长期知识** |
|
|
94
|
-
| 观测条件 | 层字段可读、可写、可复算 | 无失配(工具齐备) |
|
|
95
|
-
| 判定条件 | **「什么内容该在哪一层」的规则从未被声明** | 判定条件缺失 → 前序恒 DEFER |
|
|
96
|
-
| 后果 | `ccg_exempt=True` 恒 DEFER **但可被召回**(实测 `node_` 系 score 0.079~1.173) | 「判不了却召回得到」= 污染召回面 |
|
|
97
|
-
|
|
98
|
-
**裁决**:ACCEPT。**归入 `contextual` 情境层**(用户口径,复用既有层枚举,**保留可召回**)。
|
|
99
|
-
|
|
100
|
-
**执行前置条件(全部满足才动手)**
|
|
101
|
-
|
|
102
|
-
1. **预演先行**:先出 `dry_run` 报表(`nodes_scanned`/`targeted`/`skipped_locked`/`samples`),targeted 必须 = 230;
|
|
103
|
-
2. **批次号**:`YYYYMMDD-HHMMSS`,写入 `_maintain.jsonl`(`action=contextualize`,含 `from`/`to`/`path`/`actor`/`reason`);
|
|
104
|
-
3. **演化留痕**:每条落一条 `KIND_LAYER_SHIFT`(`before`/`after` 由 `evolution.state_of` 取);
|
|
105
|
-
4. **回滚路径**:按批次号或 id 定向回滚(复用 promote/rollback 的幂等模式),**执行后立即实测回滚 1 条再迁回**;
|
|
106
|
-
5. **加密节点 fail-closed**:`crypto.is_encrypted(content)` 者跳过并计数(无密钥绝不解密回写);
|
|
107
|
-
6. **保留召回**:不改 `LAYERS`/`tokens` 层白名单、不改 `predict._SAFE_LAYERS`、不设 `ccg_exempt` 外的召回排除;
|
|
108
|
-
7. **副作用登记**:层计数(knowledge 6330→6100、contextual 0→230)与召回指标变化必须登记。
|
|
109
|
-
|
|
110
|
-
**不做**:不删节点、不合并、不改正文、不补 comment、不动 `ccg_exempt`。
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## 三、G5 裁定:视觉证据未落 → 守卫式证据回填(ACCEPT,条件=脱敏 + 只读 AEIS)
|
|
115
|
-
|
|
116
|
-
**证据源(AEIS 侧,全部只读;`AEIS` 为异仓,不得写入)**
|
|
117
|
-
|
|
118
|
-
| 资产 | 位置 | 用途 |
|
|
119
|
-
|---|---|---|
|
|
120
|
-
| 验证过程记录 | `AEIS/data/vision/VISION_PIPELINE_已验证_v1.md` | 唯一权威算法对照表(8 项 ✅)+ **历史算法不适用条件表** + 纪律 11/12 |
|
|
121
|
-
| 逐部件实测结果 | `AEIS/data/vision/<图集>/parts_*.json` | **主证据源**:`type/bbox/mask/confidence/cond_hash/verdict/verdict_reason/fg_ratio/occluded/algo` |
|
|
122
|
-
| 工程验收记录 | `AEIS/docs/vision-generic-protection.md` | 五模块 REV1 能力表 + 76/76 测试全绿 + 敏感图像协议 |
|
|
123
|
-
| 算法权威 | `AEIS/aeis/{m0_part_extract,vision_generic,vision_models,vision_pipeline,part_tree_to_cg}.py` | 溯源锚(白箱·确定性·零 LLM,D-005) |
|
|
124
|
-
| 测试代码 | `AEIS/tests/test_vision_{generic,models}.py` 等 | 可复算 |
|
|
125
|
-
|
|
126
|
-
**`evidence={}` 空值的根因(已定位到行)**
|
|
127
|
-
|
|
128
|
-
- `AEIS/aeis/vision_pipeline.py:113-117`:`cg_ingest` 只取 `p.get("model_evidence")`;
|
|
129
|
-
- `AEIS/aeis/vision_models.py:152-158`:`model_evidence` **仅在 yolov8n-pose 融合收紧分支**产生(`fuse_keypoints`);
|
|
130
|
-
- 纯白箱 `geometry_parts` 路径的部件 dict **不存在该键** → 落库恒为 `{}`。
|
|
131
|
-
- 结论:**这不是漏写,是证据口径从未被声明**。因此本条的判定条件 = 「证据口径映射规则」。
|
|
132
|
-
|
|
133
|
-
**证据口径映射规则(三档,白箱优先、模型次之、缺失不编造)**
|
|
134
|
-
|
|
135
|
-
| 档 | 触发条件 | 落库内容 |
|
|
136
|
-
|---|---|---|
|
|
137
|
-
| 1 模型证据 | 源数据含 `model_evidence` | `{model, kpts_used, min_conf}` |
|
|
138
|
-
| 2 白箱证据 | 无模型键但含判定三要素 | `{algo, confidence, cond_hash, fg_ratio, occluded, verdict_reason}`(`verdict_reason` 是四态判定的直接依据) |
|
|
139
|
-
| 3 盲区 | 两者皆无 | **保持空**,标 `evidence_status=BLINDSPOT`,**不编造** |
|
|
140
|
-
|
|
141
|
-
**脱敏纪律(硬约束,须写入交付文档)**
|
|
142
|
-
|
|
143
|
-
1. 不读取、不落盘任何图像文件;不细读性化内容原图及衍生物(沿用 AEIS 红线);
|
|
144
|
-
2. 证据只含结构化字段,**禁止**写入敏感语义描述文本;
|
|
145
|
-
3. 含敏感词的图集目录名**不进库**,一律以编号引用(`图集_0`…`图集_9`);
|
|
146
|
-
4. 本库为**认知层放行**:证据=认知标记,**不作法律/内容判定**(认知与行动分离)。
|
|
147
|
-
|
|
148
|
-
**裁决**:ACCEPT。**不重跑视觉、不引入 PIL/图像依赖、不改 AEIS 源**。
|
|
149
|
-
|
|
150
|
-
### 三·执行证据(G5 落地实测,批次 `g5-visevid`)
|
|
151
|
-
|
|
152
|
-
**实现落点**:`md_cg/vision_evidence.py`(新,纯标准库)+ `md_cg/mdcos.py` 分发 + `md_cg/mcp_server.py` 契约
|
|
153
|
-
(`maintain` 新增 3 action:`vision_evidence` / `vision_evidence_rollback` / `vision_evidence_history`,新增参数 `aeis_root`)。
|
|
154
|
-
自测:`md_cg/test_p39_vision_evidence.py`(**PASS 53 / FAIL 0**,含跨层不漏、密文 fail-closed、脱敏、幂等、权限、回滚 12 组)。
|
|
155
|
-
|
|
156
|
-
**扫描口径**:`layer=None` → **全层按 id 前缀识别**(`imgpart_` / `vpipe_`)。
|
|
157
|
-
不静默漏节点的理由:G4 阶段 fail-closed 未迁的 2 条密文视觉节点仍在 `knowledge`,若只扫 `contextual` 会被无声忽略。
|
|
158
|
-
|
|
159
|
-
| 阶段 | 实测 |
|
|
160
|
-
|---|---|
|
|
161
|
-
| 预演(只读,未写盘) | `nodes_scanned` **92** = `targeted` **70** + `blindspot` **20** + `skipped_locked` **2** |
|
|
162
|
-
| 落盘(apply) | `written` **90**(白箱 70 + 盲区 20),`entry_ids` 90,`_vision_evidence.jsonl` **90** 行 |
|
|
163
|
-
| 前后对照 | 视觉节点 frontmatter `evidence` 非空:**0 → 70**;`evidence_status`:**0 → 90** |
|
|
164
|
-
| 密文 fail-closed | 2 条密文 `vpipe_*`:**0 解密、0 回写**,仅计数 |
|
|
165
|
-
|
|
166
|
-
**三档映射实际命中(档 1 本轮 0 条——证据源中不存在 `model_evidence` 键,与 §三根因一致)**:
|
|
167
|
-
|
|
168
|
-
| 档/状态 | 条数 | 连接键 | 来源引用 | 说明 |
|
|
169
|
-
|---|---|---|---|---|
|
|
170
|
-
| 档 2 WHITEBOX | **56** | `cond_hash` | `图集_0` | `imgpart_*`:正文 `cond_hash` 与归档逐部件记录精确相等 + `type` 一致 + `verdict` 一致 |
|
|
171
|
-
| 档 2 WHITEBOX | **14** | `type` | `图集_1` | `vpipe_*`:正文无 `cond_hash`,以家族根 `cond_hash` 定位归档后按 `type` 连接 |
|
|
172
|
-
| 档 3 BLINDSPOT | **14** | — | — | `no_source_archive`:`img0_verify` 家族无逐部件结构化归档 |
|
|
173
|
-
| 档 3 BLINDSPOT | **6** | — | — | `root_no_verdict`:部件树根不承载四态裁定,**证据面保持为空** |
|
|
174
|
-
|
|
175
|
-
**落库字段(档 2 六字段,逐条须有源,缺一不落)**:
|
|
176
|
-
`algo`(归档) / `confidence`(归档) / `cond_hash`(归档或节点) / `fg_ratio`(节点实测) / `occluded`(归档) / `verdict_reason`(节点实测);
|
|
177
|
-
frontmatter 另记 `evidence_status` / `evidence_tier` / `evidence_source` / `evidence_joined_by` / `evidence_doc` / `evidence_batch`。
|
|
178
|
-
|
|
179
|
-
**脱敏实测**:留痕与库内对 `纳西妲` 等图集目录名 **0 命中**;来源一律编号引用(`aeis:vision:图集_N`);
|
|
180
|
-
证据只含结构化字段与短 `verdict_reason`(如 `clothing/occlusion covers`),**无敏感语义描述文本**。
|
|
181
|
-
|
|
182
|
-
**正文未动**:抽样 `imgpart_0122c047_1788232664661`,正文与执行前逐字一致,仅 frontmatter 新增证据键。
|
|
183
|
-
|
|
184
|
-
**幂等与回滚出口**:`evidence_status` 已存在即 `skipped_already`(自测重跑 `written=0 / skipped_already=11`);
|
|
185
|
-
回滚按批次反向删证据键 → `maintain action=vision_evidence_rollback batch=g5-visevid`。
|
|
186
|
-
|
|
187
|
-
**权限分档**:`vision_evidence` **apply** 与 `*_rollback` 走 `require_admin`;**预演**(plan)与 `history` 放行写层角色(只出报表/只读日志)。
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## 四、G6 裁定:`node_` 结构提炼(DEFER → 条件化 ACCEPT)
|
|
192
|
-
|
|
193
|
-
**本条条件**:G6 的原 DEFER 理由是 **「U/I 维无公开基准,属不可盲测」**。本单为之声明**可执行的验收条件**:
|
|
194
|
-
|
|
195
|
-
- 条件 A(验证条件):先抽 **20 条**做提炼预演,人工核对**提炼口径**(是否忠实于原文、是否新增未声明信息);
|
|
196
|
-
- 条件 B(批次条件):抽检通过率达标后,**才**允许扩大批次规模;未达标则停止并改写口径;
|
|
197
|
-
- 条件 C(证据条件):`consolidate.induce` 产出一律 `inferred`,**不得冒充 `verified`**(`consolidate.py:899-904` 已内含该纪律)。
|
|
198
|
-
|
|
199
|
-
**实测基线**:`node_` 正文长度 **p50=367** 字符(min/max 见执行时复算),**有料**;`comment` 1321/1324 齐备;全部 `knowledge` + `ccg_exempt=True`。
|
|
200
|
-
→ 与缺口单「p50 272」不矛盾(口径不同:本条为**正文总长**含 CCG 6 行头)。
|
|
201
|
-
|
|
202
|
-
**裁决**:DEFER→条件化 ACCEPT(**绝不盲跑全量 1324 条**)。
|
|
203
|
-
|
|
204
|
-
### 四·执行证据(G6 抽检预演实测,批次 `g6-node-20260910`)
|
|
205
|
-
|
|
206
|
-
**实现落点**:`md_cg/refine.py`(新,纯标准库,**不写任何节点内容**)+ `md_cg/mdcos.py` 分发 +
|
|
207
|
-
`md_cg/mcp_server.py` 契约(`maintain` 新增 4 action:`refine` / `refine_gate` / `refine_history` /
|
|
208
|
-
`refine_calibrate`;新增参数 `sample_n` / `prefix` / `verdicts`)。
|
|
209
|
-
自测:`md_cg/test_p40_refine_worklist.py`(**PASS 46 / FAIL 0**,覆盖契约链、只读、工单结构、
|
|
210
|
-
同源口径、grounded、模板词标记、确定性、闸门四态、不改节点、权限分档、校准、未知 action)。
|
|
211
|
-
|
|
212
|
-
**抽检工单(真实库只读,2026-09-10)**
|
|
213
|
-
|
|
214
|
-
| 项 | 实测 |
|
|
215
|
-
|---|---|
|
|
216
|
-
| 抽检池 | `node_` 前缀 **1324** 条 / **90** 个家族(`cond_*`)/ 受保护 0 |
|
|
217
|
-
| 确定性样本 | **20** 条(seed `g6-sample-v1`、`sample_sha=6dda14dd8bf5fb89`)——家族分层 + 最大余数:`cond_感知系统` 17、`cond_未分类` 2、`cond_物理学` 1 |
|
|
218
|
-
| 字段缺口 | `ccg_exempt=True` **20/20**;`子功能`/`执行`/`不适用条件` **20/20 全缺**;`功能名` 17/20 缺、`生效条件` 2/20 缺 |
|
|
219
|
-
| 工单产物 | 逐条含「原文 + 字段缺口 + `source_sha` + 口径声明(4 项人工核对项)」;**零写盘、零改节点** |
|
|
220
|
-
|
|
221
|
-
**提炼预演(与 `consolidate.induce` 同源口径:bigram-jaccard 贪心聚类,`min_cluster=3`、`min_jaccard=0.30`)**
|
|
222
|
-
|
|
223
|
-
| 样本量 | 候选 | 「共性条件全为高 df 模板词」 | 「区分性」共性 |
|
|
224
|
-
|---|---|---|---|
|
|
225
|
-
| 20(条件 A 口径) | **0** | — | — |
|
|
226
|
-
| 40 | 2 | 2 | 无 |
|
|
227
|
-
| 80 | 2 | 2 | 无 |
|
|
228
|
-
| 160 | 4 | 4 | 无 |
|
|
229
|
-
| 200(爬坡上限) | 7 | 6 | 1 条,且为**整行条件文本(含时间戳)** |
|
|
230
|
-
|
|
231
|
-
- **忠实性不是缺陷**:候选共性条件在全部成员原文可追溯(`grounding_gap=[]`);
|
|
232
|
-
- **缺陷在区分性**:模板词(`感知系统` / `感官输入` / `协议实例运行中`)在样本内 df≈1.0 → 全部命中 `generic`;
|
|
233
|
-
唯一的「区分性」项是 `载体/位置:…;时间:2026-08-30 23:51~…(UTC)…` **整行原文**——df 低只因时间戳唯一,
|
|
234
|
-
属**归一化缺失导致的伪区分性**;
|
|
235
|
-
- **样本充分性**:`sample_adequacy=insufficient`(20 条结构性产不出候选)。
|
|
236
|
-
|
|
237
|
-
**扩批闸门**:留痕 `_refine.jsonl` 批次 `g6-node-20260910`(`sampled=20`、`candidates=0`、
|
|
238
|
-
`gate.reason=no_candidates`、`expand_allowed=false`)。`refine_calibrate` 有界爬坡(cap=200)结论:
|
|
239
|
-
**样本量不是瓶颈,提炼口径才是**——须先「剔除模板词 + 归一化/裁剪整行文本」,或改以「候选」为抽检单位,
|
|
240
|
-
方能重开抽检;**当前状态不得扩批**。
|
|
241
|
-
|
|
242
|
-
**权限分档**:`refine`(工单/预演)、`refine_gate`、`refine_history`、`refine_calibrate` 只读,
|
|
243
|
-
放行写层角色;`refine apply`(落抽检留痕、据以放行/否决扩批)走 `require_admin("maintain_refine")`。
|
|
244
|
-
|
|
245
|
-
**`apply` 的写入边界**:G6 的 `apply` **只追加抽检留痕**,不写节点;真写节点的口子仍是
|
|
246
|
-
`consolidate.induce`(另批、另闸门)——`refine` 只负责「决定能不能开这个口子」,职责不混。
|
|
247
|
-
|
|
248
|
-
**四态复核**:条件 A **未通过**(20 条样本 0 候选);条件 B **闸门关闭**(不放行);条件 C 满足
|
|
249
|
-
(产出恒 `inferred`,且本模块不执行写入)。
|
|
250
|
-
→ **G6 提炼口径在本轮判 DEFER**(口径修正后可重开):**不是** ACCEPT(口径未过关)、**也不是** REJECT
|
|
251
|
-
(缺口可闭合,但须先改口径)。
|
|
252
|
-
|
|
253
|
-
---
|
|
254
|
-
|
|
255
|
-
## 五、G7 裁定:自主演化无驱动(ACCEPT)
|
|
256
|
-
|
|
257
|
-
**存在性缺口**:`_sustain.jsonl` 在跑,但 `consolidate`/`scrub`/`importance` 三类未挂巡检 → **能力齐备、无驱动源**。
|
|
258
|
-
|
|
259
|
-
**裁决**:ACCEPT。新增 `check code + fix 动作`,接入既有心跳周期(`mcp_server.py:2138 _start_sustain`)。
|
|
260
|
-
**硬约束**:`diagnose` 保持**只读**;`heal` 才写;每项 fix 必带 `batch` 与可回滚路径;巡检日志位置显式声明
|
|
261
|
-
(`sustain_dir()`:显式 → `MDCG_SUSTAIN_DIR` → `~/.mdcg/sustain`)。
|
|
262
|
-
|
|
263
|
-
### 五·执行证据(G7 演化巡检落地实测)
|
|
264
|
-
|
|
265
|
-
**实现落点**:`md_cg/sustain.py`(新增 `evolution_candidates()` 只读盘点、`EVOLVE_FIXES` 映射、
|
|
266
|
-
`SustainLoop._tick_evolve()`、`evolve_summary()`;`diagnose()` 增 `evolve` 段与 2 个 info 级 issue;
|
|
267
|
-
`heal()` 增 `allow_evolve` 受控开关)+ `md_cg/mcp_server.py`(新增 `action=evolve` 与
|
|
268
|
-
`allow_evolve` / `auto_evolve` / `evolve_interval` 参数、`catalog.evolve_fixes`)。
|
|
269
|
-
自测:`md_cg/test_p41_evolve_patrol.py`(**PASS 36 / FAIL 0**)。
|
|
270
|
-
|
|
271
|
-
**驱动源盘点口径(只读、索引级、确定性)**
|
|
272
|
-
|
|
273
|
-
| 巡检项 | 口径 | 修复动作 | 是否自动 |
|
|
274
|
-
|---|---|---|---|
|
|
275
|
-
| `ccg_backlog` | 索引里无 `verification_basis` 或无 `has_neg_conditions` 的节点数(**代理指标**,零读节点文件) | `consolidate_run` | **否**(依赖 LLM 反思/验证) |
|
|
276
|
-
| `importance_drift` | `weights.recalc(apply=False)` 报出的 `changed`(纯数学,不读文件) | `importance` | 是(确定性、有 rollback) |
|
|
277
|
-
|
|
278
|
-
**三条硬约束的落实方式**
|
|
279
|
-
|
|
280
|
-
1. **巡检恒只读**:`evolution_candidates()` 不回写节点/索引;自测断言盘点前后节点文件 sha256 逐字节不变;
|
|
281
|
-
`diagnose()` 仍只读——新项固定 `severity=info`,**候补多不翻转 `ok`**(候补多 ≠ 库有毛病)。
|
|
282
|
-
2. **自愈受控、只放确定性动作**:`heal()` 不传 `allow_evolve` 时,`consolidate_run` 记
|
|
283
|
-
`applied=false / reason=needs_llm`、`importance` 记 `applied=false / reason=evolve_disabled`;
|
|
284
|
-
显式 `allow_evolve=true` 才放行 `importance`(实测:手工把 `n_a` 的 importance 置 0.99 →
|
|
285
|
-
重算后 `changed` 由 1 归 0),而 `consolidate_run` 在无 `reflect_fn` 时**恒不执行**。
|
|
286
|
-
3. **失败不拖垮常驻**:`_tick_evolve()` 被主循环 try/except 包住;自测把 `weights.recalc` 打进异常后,
|
|
287
|
-
循环仍 `running=true`、心跳照常推进(`beats≥2`)、`last_evolve` 不被污染。
|
|
288
|
-
|
|
289
|
-
**常驻接线**:`_start_sustain`(`mcp_server.py`)读 `MDCG_EVOLVE_INTERVAL`(默认 7200s)与
|
|
290
|
-
`MDCG_AUTO_EVOLVE`(默认 **0 = 关**);`SustainLoop.status()` 暴露
|
|
291
|
-
`evolve_interval / auto_evolve / last_evolve / evolves`;`sustain.summary()` 增 `evolve` 段
|
|
292
|
-
(异常吞掉,不拖垮 `health_os`)。
|
|
293
|
-
|
|
294
|
-
**四态复核**:**ACCEPT** —— 缺口(无驱动)**已闭合**:能力(`consolidate` / `weights` / `scrub`)此前已具备,
|
|
295
|
-
本轮补的是**驱动 + 口径 + 闸门**;「默认只读 + 自动动作仅限确定性」保证驱动**不会**变成新的风险源。
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
## 六、G8 裁定:溯源链缺失(ACCEPT)
|
|
300
|
-
|
|
301
|
-
**实测**:库根**无** `_link.jsonl`;全库 frontmatter `parent/derived_from/source/links` 全 0 → `node_` 拆为 `kp_` 后派生关系丢失。
|
|
302
|
-
|
|
303
|
-
**裁决**:ACCEPT,**只对新增节点常态化建链,历史不回填**(前序已裁定口径)。
|
|
304
|
-
**落点**:`md_cg/links.py:62-63 links_file()`(`LINKS_FILE_ENV`/`DEFAULT_LINKS_FILE`)+ 写路径侧的派生关系声明。
|
|
305
|
-
**硬约束**:建链失败**不得阻断写入**(降级为告警并留痕),否则新写入口会因台账 IO 失败而假失败。
|
|
306
|
-
|
|
307
|
-
### 六·执行证据(G8 派生溯源落地实测)
|
|
308
|
-
|
|
309
|
-
**落点校正(诚实标注)**:原裁定把落点写成 `links.py:62-63 links_file()`。执行时核对:
|
|
310
|
-
`links.py` 是**跨节点信任层**(「我信你多少」,P_trust,落 `~/.mdcg/_links.json`),
|
|
311
|
-
与 G8 要的**节点派生血缘**(「它从谁派生」,`_link.jsonl`)是两层东西——照原落点写会把血缘
|
|
312
|
-
混进信任台账。故**另立同构层** `md_cg/provenance.py`,只复用 `links_file()` 的**路径解析惯例**
|
|
313
|
-
(显式 → env → 默认),并在 `catalog.distinct_from` 里把两层区别**写死**,防后续混淆。
|
|
314
|
-
|
|
315
|
-
**实现落点**
|
|
316
|
-
|
|
317
|
-
- `md_cg/provenance.py`(新):台账 `_link.jsonl`(append-only + 文件锁串行)、`record()` **永不抛**、
|
|
318
|
-
`.fail` 降级留痕、`check()` 只读悬空检出、`edges()/load()`(台账)与 `index_edges()`(索引)双源查询、
|
|
319
|
-
`rebuild_ledger()` 按 frontmatter 声明重建(默认预演)。
|
|
320
|
-
- `md_cg/mdcg.py`:`add(derived_from=…, relation=…)` → 声明写 **frontmatter(单一真相源)** +
|
|
321
|
-
索引条目带 `derived_from`(巡检**零读节点文件**)+ 追加台账;建链在 `_stage()` 之后,
|
|
322
|
-
**失败不回滚节点**。
|
|
323
|
-
- `md_cg/sustain.py`:`diagnose()` 增 `provenance` 段与 `provenance_dangling`
|
|
324
|
-
(**info 级、`fix=None`**、不翻转 `ok`);`summary()` 增 `provenance`(异常吞掉,不拖垮 `health_os`)。
|
|
325
|
-
- `md_cg/mcp_server.py`:`link` op 新增 `derive / derive_dangling / derive_catalog / derive_rebuild`;
|
|
326
|
-
`sustain` op 新增 `provenance`;`write` / `remember` 透传 `derived_from`(逗号串按 `_split_ids` 归一)。
|
|
327
|
-
**不新增写入口**——权威声明只经既有节点写路径产生(对齐「单一真相源 + 派生索引可重建」)。
|
|
328
|
-
- 自测:`md_cg/test_p42_provenance.py`(**PASS 52 / FAIL 0**)。
|
|
329
|
-
|
|
330
|
-
**三条硬约束的落实方式**
|
|
331
|
-
|
|
332
|
-
1. **只对新增节点建链、历史不回填**:建链只在 `add()` 内发生;`rebuild_ledger()` **只重放 frontmatter
|
|
333
|
-
已声明的关系,不发明任何边**——新根实测(只建无声明历史节点)→ `edges=0 / written=0`,台账为空。
|
|
334
|
-
副产物:rebuild 可**救回**「建链失败」而漏写的声明边(声明在 frontmatter,属重放、非发明)。
|
|
335
|
-
2. **建链失败不阻断写入**:`record()` 全路径 try 兜底、永不抛。自测注入 `ProvenanceError` 后实测:
|
|
336
|
-
节点照常落库、frontmatter 声明不丢、`.fail` 台账留痕、`_link.jsonl` 如实为空(不假装成功)。
|
|
337
|
-
非法关系名由 `coerce_relation` 回退默认值,同样不阻断——**写路径不做校验式拒绝**,
|
|
338
|
-
严格校验(`normalize_relation`)只留给显式 API。
|
|
339
|
-
3. **巡检只读、不删边**:`check()` 不写盘,悬空边带 `missing: child|parent` 归因;
|
|
340
|
-
`rebuild_ledger` 默认 `dry_run`;自测断言巡检前后**节点逐字节不变 + 台账字节不变**。
|
|
341
|
-
删边 = 篡改演进血缘,故**不给自动修复**(`catalog.provenance_fixes = {}`)。
|
|
342
|
-
|
|
343
|
-
**悬空可检出的两条真实路径(实测)**:① 声明了库里不存在的来源(`ghost_missing`)→
|
|
344
|
-
写路径**不校验存在性**(校验会阻断写入,与硬约束冲突),悬空交由巡检兜底;
|
|
345
|
-
② 父节点被删 + 索引重建 → 即时报 `missing=[parent]`。台账被删亦不丢血缘:
|
|
346
|
-
索引已带声明,`check(include_index=True)` 零读文件兜底;`rebuild(apply=True)` 可按声明恢复台账。
|
|
347
|
-
|
|
348
|
-
**四态复核**:**ACCEPT** —— 缺口(血缘丢失)已闭合:新增节点「写入即留血缘」、
|
|
349
|
-
悬空「可检出可归因」、建链失败「不假失败」。历史血缘由「不可闭合项」承担,不回溯。
|
|
350
|
-
|
|
351
|
-
---
|
|
352
|
-
|
|
353
|
-
## 七、召回分池/降权裁定(DEFER → 条件化 ACCEPT)
|
|
354
|
-
|
|
355
|
-
**实测**:`GLOBAL_CAP=500`(`mdcg.py:58`),截断率 **34.5%**(前序实测),索引节点(`code_`/`doc_` 1813 条)与知识节点**同池竞争**。
|
|
356
|
-
|
|
357
|
-
**裁决**:DEFER→条件化 ACCEPT。**条件 = 先冻结 P95/截断率基线,改造后同口径复测**;未测先改 = 无法归因副作用。
|
|
358
|
-
**硬约束**:分池**不得**变成「隐性提高上限」(那只是把截断推后,不是治本);降权必须有**显式权重表**且可 A/B 复算。
|
|
359
|
-
|
|
360
|
-
### 七·执行证据(召回分池/降权落地实测,2026-09-10)
|
|
361
|
-
|
|
362
|
-
**实现落点**:`md_cg/pooling.py`(新,纯标准库)+ `md_cg/mdcg.py`/`md_cg/mdcos.py`(T2/T3 截断点接入)
|
|
363
|
-
+ `md_cg/mcp_server.py`(`sustain` 新 action `pooling`/`pool_bench`/`pool_compare`;`mdcg_search` 透传 `pools`)。
|
|
364
|
-
自测:`md_cg/test_p43_pooling.py`(**PASS 79 / FAIL 0**,14 组:契约/默认关闭、坏表拒绝、额度守恒、关闭态逐位等价、
|
|
365
|
-
归池确定性、分池生效、空池回流、降权可复算、口径敏感性自检、只读、同口径对比、坏表不静默、MCP 接入、未知 action)。
|
|
366
|
-
回归批次:`p0/p1/p2/p3/p4/p5/p7/p8/p14/p18/p2_mcp/p33/p42/p43` **全绿**。
|
|
367
|
-
→ 该批次**抓出一个真实缺陷**:`mdcg.MdCG.search` 的 T3 全量兜底漏改审计面 → `NameError`(P43 只走 `MdCGOS` 路径而**漏检**)。
|
|
368
|
-
已修,并证明「双实现类(`MdCG` / `MdCGOS`)必须双路覆盖」——只测一条实现路径 = 静默盲区(与纪律 7 同构)。
|
|
369
|
-
|
|
370
|
-
| 组件 | 口径 |
|
|
371
|
-
|---|---|
|
|
372
|
-
| 归池 `pool_of` | 负层优先(`rejected`/`unresolved`)→ id 前缀(`code_`/`doc_`)→ `tags:index` → 知识池(确定性、不读文件) |
|
|
373
|
-
| 额度 `caps` | **最大余数法**,每池保底 1,余数按小数部分最大、同余按池序;各池之和**恒 == total** |
|
|
374
|
-
| 回流 `cut_report(backflow=True)` | 空池未用额度按池序回流前序池(knowledge ← index ← negative);`taken` 之和 **恒 ≤ total** |
|
|
375
|
-
| 池账审计面 | `pools.quota/cands/taken/lost`——**仅启用态落**,关闭态不写(不把平裁伪装成分池) |
|
|
376
|
-
| 权重表 `WEIGHTS` | knowledge 0.70/1.00、index 0.20/**0.60**、negative 0.10/0.90;`validate` 硬校验 `sum(cap_ratio)==1.0`(1e-9) |
|
|
377
|
-
| 载体开关 | `MDCG_POOLING`(**默认关**);`pools=None` ≡ 原 `GLOBAL_CAP` 平截,逐位一致 |
|
|
378
|
-
|
|
379
|
-
**真实库复测(只读,库 `AEIS/data/mdcg`:6339 节点 / `GLOBAL_CAP=500`;查询集 = `bench_queries` 确定性取样 48 条,`proxy`)**
|
|
380
|
-
|
|
381
|
-
| 口径 | 关闭态 | 启用态 | delta | 对分池敏感 |
|
|
382
|
-
|---|---|---|---|---|
|
|
383
|
-
| p95_scanned | 6339.0 | 6339.0 | 0.0 | 否 |
|
|
384
|
-
| p50_scanned | 6339.0 | 6339.0 | 0.0 | 否 |
|
|
385
|
-
| mean_candidates | 719.92 | 719.92 | 0.0 | 否 |
|
|
386
|
-
| truncation_rate | 0.2292 | 0.2292 | 0.0 | 否 |
|
|
387
|
-
| truncation_loss | 0.18289 | 0.18289 | 0.0 | 否 |
|
|
388
|
-
| **index_share** | **0.44167** | **0.27083** | **−0.17083** | **是** |
|
|
389
|
-
| **knowledge_share** | **0.55833** | **0.72917** | **+0.17083** | **是** |
|
|
390
|
-
| pool_lost_rate | `null`(关闭态无池层,不编造 0) | 0.18289 | — | 仅启用态可得 |
|
|
391
|
-
|
|
392
|
-
- 池分布(全库索引级,`pool_of` 判定):`knowledge` **4526** / `index` **1813**(= `code_` 1480 + `doc_` 333)/ `negative` 0。
|
|
393
|
-
- 分池计划(total=500):`caps` = knowledge 349 / index 100 / negative 51,`cap_sum` = **500**(额度守恒,未抬高上限)。
|
|
394
|
-
- 只读核验:**空闲窗口对照(3s 无检索)变更 0 文件;复测窗口变更 0 文件**。本模块 `record=False`,不写访问计数、不写节点/索引。
|
|
395
|
-
|
|
396
|
-
**关键发现(口径敏感性自检,必须登记)**:原 §七 只要求冻结 P95/截断率,但**该口径对分池不敏感**——
|
|
397
|
-
分池是在 `GLOBAL_CAP` **之内**重分配,「候选数 > 500」这一事件不变,故 delta 恒为 0。
|
|
398
|
-
若不补口径,复测会「跑完却归因不到副作用」,甚至被误读为「改造无效」。故本轮补
|
|
399
|
-
`index_share`/`knowledge_share`(结果构成,**看得到**分池效果)与 `pool_lost_rate`(池级被挤掉率,仅启用态),
|
|
400
|
-
并把敏感性结论显式写进 `compare.insensitive_keys/sensitive_keys` 与 `catalog.discipline.caliber_sensitivity`。
|
|
401
|
-
|
|
402
|
-
**副作用登记(真实库实测)**
|
|
403
|
-
|
|
404
|
-
| 类别 | 实测 |
|
|
405
|
-
|---|---|
|
|
406
|
-
| 收益 | 索引/产物类入榜占比 **44.2% → 27.1%(−17.1pp)**;知识类 **55.8% → 72.9%(+17.1pp)**;池级被挤掉率 0.18289(启用态) |
|
|
407
|
-
| 代价 | `scanned`(读取节点数)与**全局**截断率/损失率**不变** → 本轮**无额外 IO、无额度膨胀** |
|
|
408
|
-
| 未观测副作用 | 空闲窗口与复测窗口均 0 文件变更;`MDCG_POOLING` 未设时 `mdcg_search` 等既有调用方零影响(自测 (14) 断言) |
|
|
409
|
-
|
|
410
|
-
**回滚出口**:默认关闭(`pools=None` ≡ 原行为,逐位一致);载体侧开关未设即不生效;
|
|
411
|
-
不写节点/索引 → **无需数据回滚**,回滚 = 不传 `pools` / 不设 `MDCG_POOLING`。
|
|
412
|
-
|
|
413
|
-
**四态复核**:DEFER→**条件化 ACCEPT 达成**——前置条件「先冻结基线、同口径复测」已执行,并补出
|
|
414
|
-
「口径必须对改造敏感」这一**必要条件**。**诚实边界**:启用与否属**载体侧决策**(默认关),
|
|
415
|
-
本轮只交付「能力 + 显式权重表 + 池账审计面 + 复测证据」,**不替载体开全局开关**。
|
|
416
|
-
|
|
417
|
-
---
|
|
418
|
-
|
|
419
|
-
## 八、不可闭合项(诚实标注,不装完成)
|
|
420
|
-
|
|
421
|
-
| 项 | 为什么库内闭不了 |
|
|
422
|
-
|---|---|
|
|
423
|
-
| `kp_` 2933 条的「验证方式」 | 源为库外声明(人/流程/教材/公开知识库),认知图不能自证 |
|
|
424
|
-
| 载体侧自动注入 | 需 `can_admin` 的载体权限,非本库职责 |
|
|
425
|
-
| 82 工具「阶段 1 DSH 工具面收口」 | 落点在 DSH 侧 |
|
|
426
|
-
| G5 档 1(模型证据) | 本库当前载体**不存** `model_evidence`;不重跑视觉 → 该档**不可复现**,标 BLINDSPOT |
|
|
427
|
-
| G5 `img0_verify` 家族 14 条逐部件证据 | AEIS 侧**未产出**该家族的逐部件结构化归档:`img0_skin_parts.json` 的 `per_part` 仅 `{ok,px,bbox}`(缺 `cond_hash/verdict/fg_ratio/occluded/confidence`)→ 只能标 `evidence_status=BLINDSPOT / no_source_archive`,**不编造**。补齐须回到产出侧落一份 `parts_*.json`,属上游动作 |
|
|
428
|
-
| G5 部件树根 6 条 | 根节点不承载四态裁定(无 `verdict`)→ 结构上就不该有证据,标 `root_no_verdict`,**不是缺口** |
|
|
429
|
-
| G4 密文视觉节点 2 条 | 无密钥 → G4 与 G5 均 `fail-closed` 跳过(未迁层、未回填),层归属与证据面留待密钥可用时复算 |
|
|
430
|
-
| G6 抽检「20 条产不出候选」 | `min_cluster=3` 下 20 条节点样本 **0 簇**:**抽检单位与样本量不匹配**——以「节点」为单位时小样本结构性产不出可核对对象。要么改以「候选」为抽检单位、要么修正共性条件口径,属**口径设计问题**,不是库内数据能闭合的 |
|
|
431
|
-
| G7 固化「自动驱动」 | `consolidate` 的反思/验证依赖**库外**函数(LLM / 白箱);本库只能驱动其中的**确定性**部分。固化是否开启自动化属载体侧决策,不在库内闭环 |
|
|
432
|
-
| G8 历史节点的既有派生血缘 | 前序从未落盘来源声明(frontmatter 派生字段全空、无 `_link.jsonl`)→ **只能不回溯**。凭 id 前缀 / 正文相似度**反推**血缘 = 编造关系,比「空着」更坏。故旧 `node_`/`kp_` 的祖先关系**永久标注为不可考**,新节点起才有血缘 |
|
|
433
|
-
|
|
434
|
-
---
|
|
435
|
-
|
|
436
|
-
## 九、未核实项 / 待定项(显式标出)
|
|
437
|
-
|
|
438
|
-
1. `node_` 正文长度:执行时复算 → **p50=367 / min=82 / max=27852**(`nodefile.loads` 正文总长,含 CCG 声明行);
|
|
439
|
-
CCG 头覆盖实测:`ccg_exempt` **1324/1324**、含 `生效条件` **1240/1324**、含 `功能名` 仅 **202/1324**
|
|
440
|
-
——「功能名」是 `node_` 家族的系统性缺项,**不是个案漏写**;
|
|
441
|
-
2. 召回 P95 与截断率:本单**未采信**前序值,已于 §七 执行前以同一口径**重新冻结**(真实库 6339 节点、
|
|
442
|
-
48 条 proxy 查询:`p95_scanned=6339` / `truncation_rate=0.2292` / `truncation_loss=0.18289`);
|
|
443
|
-
**但复测证明该口径对分池不敏感**(delta 恒 0)→ 已补 `index_share`/`pool_lost_rate` 敏感口径,详见 §七·执行证据;
|
|
444
|
-
3. `contextual` 层在真实库:**执行前 0 条**(层目录存在但空)→ G4 批次 `20260910-162432` 后实测 **228 条**
|
|
445
|
-
(targeted 228 / written 228 / `skipped_locked` 2,因 G4 不迁密文节点,故为 230−2);
|
|
446
|
-
`knowledge` 6330 → **6102**。对账锚点闭合(228 + 6102 + 4 + 5 = 6339 有 frontmatter 节点)。
|
|
447
|
-
|
|
448
|
-
---
|
|
449
|
-
|
|
450
|
-
## 十、纪律蒸馏(可复用)
|
|
451
|
-
|
|
452
|
-
1. **库根先声明**:本次实测发现工作区库根仅 1 节点、真实库在异地仓库——**观测前先冻结「对象是谁」**,否则一切计数无效。
|
|
453
|
-
2. **空字段 ≠ 漏写**:`evidence={}` 是「口径未声明」而非「写入遗漏」。**先定位产出侧根因,再决定补写还是标注**;补写前必须能回答「这个值由谁产出」。
|
|
454
|
-
3. **DEFER 的正确出路是「条件化」而非「取消条件」**:G6/召回分池由 DEFER 转 ACCEPT 靠的是**声明前置条件**(20 条抽检 / 先冻基线),不是降低标准。
|
|
455
|
-
4. **层位移必须成套**:字段 + 落点目录 + 演化条目 + 批次台账 + 回滚路径,**五件事缺一即为不可回滚的脏改**。
|
|
456
|
-
5. **脱敏是内容约束而非形式约束**:编号引用 + 只落结构化字段 + 不读原图,**且不得在库内留下敏感语义描述**。
|
|
457
|
-
6. **证据「有源才落、缺一不落」**:回填前先定「这个值由谁产出」——本轮 70 条全部命中档 2、20 条**宁可空着标 BLINDSPOT**;
|
|
458
|
-
把 `model_evidence`(本库不存在)当默认值硬填,就是幻觉落库。
|
|
459
|
-
7. **扫描范围要按「识别规则」而非「当前落点」定**:视觉节点按 id 前缀全层识别,才没漏掉 G4 因 fail-closed 留在 `knowledge` 的
|
|
460
|
-
2 条密文节点;**用「已知落点」当扫描范围 = 制造静默盲区**。
|
|
461
|
-
8. **层位移与证据回填的跳过语义要一致**:无密钥节点两轮都 `fail-closed` 计数,**绝不因为「流程要求走完」而解密或编造**;
|
|
462
|
-
跳过项要能与「已处理项」在报表里区分(`skipped_locked` vs `written`)。
|
|
463
|
-
9. **「抽检单位」必须先于「抽样」定死**:`min_cluster=3` 下 20 条**节点**样本 0 簇——抽检单位若取「节点」,
|
|
464
|
-
小样本会**结构性**交不出可核对对象,抽检流程看起来跑完了却很可能是空跑。抽检设计第一步应自检
|
|
465
|
-
「这个样本量能否产出 ≥1 个待核对单元」,**否则抽检=形式合规**。
|
|
466
|
-
10. **词面统计判据必须显式声明 df 阈值**:没有 df 门槛时,「整行含时间戳的条件文本」会伪装成唯一区分性特征;
|
|
467
|
-
模板词与伪区分性是**同一根因(归一化缺失)**的两面——先声明口径再抽检,否则人工核对只是在核对噪声。
|
|
468
|
-
11. **只读预演与写入必须分权**:`refine` 全程只读(工单/预演/闸门/校准),真写节点的口子留在 `consolidate.induce`;
|
|
469
|
-
把「能不能写」与「写什么」拆到两个 op,才能让「预演先行」成为**机制**而非**自律**。
|
|
470
|
-
12. **「有能力」≠「有驱动」**:G7 的缺口不是缺功能(`consolidate`/`weights`/`scrub` 早已存在),
|
|
471
|
-
而是缺一个周期性问「现在有多少候补」的**驱动源**。补驱动必须**同步补闸门**——否则驱动会把
|
|
472
|
-
「偶发的人工决策」变成「每 2 小时自动执行」,风险等级完全不同;且自动范围应**只取确定性动作**。
|
|
473
|
-
13. **代理指标要标注为代理**:巡检为省 IO 用索引字段(`verification_basis`/`has_neg_conditions`)
|
|
474
|
-
替代「读正文算 CCG 完整度」——必须在返回里显式写 `proxy=true`,否则下游会把候补量误当判定结论。
|
|
475
|
-
14. **同名概念不等于同一落点**:「链接 / 血缘 / 信任」在话术里都叫 link,落到存储却是两层
|
|
476
|
-
(`_links.json`=对端信任 vs `_link.jsonl`=节点血缘)。**先判「这是同一件事吗」再决定复用还是另立**——
|
|
477
|
-
G8 若照原裁定复用 `links.py`,就会把演进血缘写进信任台账,事后无法区分。另立层时必须把
|
|
478
|
-
「与谁不同」写进 `catalog`(本条即 `distinct_from` 字段的来源)。
|
|
479
|
-
15. **写路径的校验只允许「不阻断」形态**:派生关系名非法、来源节点不存在、台账 IO 失败——三者都不能让
|
|
480
|
-
节点写入**假失败**。要严格校验就挪到**显式 API**(`normalize_relation`),写路径只做
|
|
481
|
-
**回退默认值 + 降级留痕**;且「留痕」必须真的留下(`.fail` 台账),否则「降级」等于「静默吞掉」。
|
|
482
|
-
16. **「不回填」需要在重建路径上同样成立**:`rebuild_ledger` 若按「扫描全库反推血缘」实现,
|
|
483
|
-
就等于借重建之名行回填之实。正确做法是**只重放已有的显式声明**——重建的输入必须是
|
|
484
|
-
**声明**(frontmatter)而不是**推测**(id 前缀 / 相似度)。
|
|
485
|
-
17. **复测口径必须先自检「对改造敏感」**:§七 冻结的 P95/全局截断率,对「在 `GLOBAL_CAP` 之内重分配额度」
|
|
486
|
-
的改造**恒不敏感**(delta ≡ 0)——这不是「改造无效」,而是「口径测不到」。**先证明口径能测到被改的量,
|
|
487
|
-
再看差值**,否则复测只是形式合规(与纪律 9「抽检单位先于抽样」同构:**量具先于测量**)。
|
|
488
|
-
落地形态:`compare` 显式回 `insensitive_keys`/`sensitive_keys`,把「差值恒 0」标成**正常**而非沉默。
|
|
489
|
-
18. **同一逻辑的两条实现路径必须双路验收**:`MdCG.search` 与 `MdCGOS.search` 各有一份 T2/T3 截断点;
|
|
490
|
-
只测一条(P43 只走 `MdCGOS`),另一条漏改会**静默存活到生产调用**(本轮即 `NameError`,由跨模块回归批次抓出)。
|
|
491
|
-
改动落在「共享搜索骨架」时,验收必须**枚举所有实现类**,否则「全绿」只覆盖了一半。
|
|
1
|
+
# 认知图 · G4–G8 缺口裁定单(条件空间声明 + 四态裁决)v0.1
|
|
2
|
+
|
|
3
|
+
> 来源:`docs/mdcg/缺口单_P0收口_v0.1.md` §八「DEFER 登记项」——**G4 层归属错位 / G5 视觉证据未落 / G6 node_ 结构提炼 /
|
|
4
|
+
> G7 自主演化无驱动 / G8 溯源链缺失**,外加缺口单 §6.1 的「索引节点应域级分池降权,而非吃 GLOBAL_CAP」。
|
|
5
|
+
> 目标工程:**dsh-memory / md_cg(认知图 + 记忆 OS)**
|
|
6
|
+
> 证据口径:源码级核对(行号可回溯)+ **真实库(`AEIS/data/mdcg`)只读复算** + 前后冻结基线对照(不采信估计值、不转述文档结论)
|
|
7
|
+
> 时间:2026-09-10 | 真实库批次:G4 `20260910-162432`、G5 `g5-visevid`(后续项批次号执行时续登)
|
|
8
|
+
> 上游资产:G1/G2/G3 已闭合(`evo-20260910-*`),本单**不重复处理**
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 判定单
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
条件空间:观测位置=全局(设计者)、操作层在 md_cg 写入口之外(只经既有 op 调用)
|
|
16
|
+
| 观测工具=真实库只读复算(盘上 frontmatter + _index.json + _refindex.json + _maintain.jsonl)
|
|
17
|
+
+ 源码行号核对(md_cg/*.py)
|
|
18
|
+
| 时间窗口=2026-09-10 本次迭代(上游 P33–P36 交付后)
|
|
19
|
+
| 存在约束=零新依赖(纯标准库) / md 单一真相源 / 不新增写入口 / 不改默认参数
|
|
20
|
+
/ 预演先行 / 批次留痕可回滚 / 不可闭合项诚实标注
|
|
21
|
+
白箱三问:依据=每条给文件级或计数级证据(§一/§二~§七),未核实项显式标出(§九)
|
|
22
|
+
| 条件=执行前预演只读(dry_run)、基线已冻结(§一)、可复算(批次后同口径重扫)、可回滚(按批次号)
|
|
23
|
+
| 错后=(a) 若不裁定层归属就直接搬 230 条 → 替用户做价值判断,且召回面被无声改写;
|
|
24
|
+
(b) 若把空 evidence 当成「补个字段」→ 会编造视觉侧从未产出的证据(幻觉落库);
|
|
25
|
+
(c) 若把 node_ 1324 条直接交给 LLM 全量改写 → 不可盲测的批量改写,污染唯一真相源
|
|
26
|
+
裁决:ACCEPT —— G4(层归位到 contextual)、G5(守卫式证据回填)、G7(演化挂巡检)、G8(新增节点自动建链)
|
|
27
|
+
DEFER→条件化 ACCEPT —— G6(条件=20 条抽检通过才可扩批)、召回分池降权(条件=先冻结 P95/截断率基线并复测)
|
|
28
|
+
REJECT —— 无(本单无「不该做」项)
|
|
29
|
+
BLINDSPOT —— 视觉侧模型路径证据(`model_evidence`)在本库当前载体上不可复现,须标注而非补齐
|
|
30
|
+
依据:条件证据见 §一~§七;缺条件项均已在本单内**声明条件**,故由 DEFER 转为「带前置条件的 ACCEPT」
|
|
31
|
+
缺失维度:层归属规则(G4)、视觉证据口径(G5)、提炼验收口径(G6)、演化驱动源(G7)、派生关系落点(G8)
|
|
32
|
+
验证路径:基线冻结(§一) → G4 归位与回滚(§二) → G5 证据回填(§三) → G6 抽检(§四) → G7 挂巡检(§五)
|
|
33
|
+
→ G8 建链(§六) → 召回分池复测(§七) → 副作用归因与交付证据单(§八)
|
|
34
|
+
关注信号:G4 归位后 contextual 层召回占比;GLOBAL_CAP 截断率;P95;node_ 正文改写后 CCG 齐备率
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 一、冻结基线(本轮实测,2026-09-10)
|
|
40
|
+
|
|
41
|
+
**库根裁定**:真实库为 `AEIS/data/mdcg`(6340 个 `.md`,6339 有 frontmatter);
|
|
42
|
+
工作区 `dsh-memory/data/mdcg` 实测仅 **1** 个节点(`python -m md_cg.census` 输出 `总节点: 1`),**非本批对象**,不参与。
|
|
43
|
+
→ 这一条必须先声明,否则「库根写错」会让所有后续计数与判定失效。
|
|
44
|
+
|
|
45
|
+
| 观测项 | 实测值 | 手段 |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| `.md` 文件 / 有 frontmatter | 6340 / 6339 | 只读遍历 + `nodefile.loads` |
|
|
48
|
+
| 层分布 | `knowledge` 6330、`self` 5、`anchor` 4 | 同上 |
|
|
49
|
+
| 前缀分布(前 10) | `kp_` 2962、`code_` 1480、`node_` 1324、`doc_` 333、`note_` 135、`imgpart_` 60、`vpipe_` 32、`milestone_` 2、`retest6_` 1、`mem_` 1 | 同上 |
|
|
50
|
+
|
|
51
|
+
**G4 目标集合(230 条,逐前缀实测)**:
|
|
52
|
+
|
|
53
|
+
| 前缀 | n | layer | `ccg_exempt` | comment 齐备 | 口径 |
|
|
54
|
+
|---|---|---|---|---|---|
|
|
55
|
+
| `note_` | 135 | knowledge 135 | True 135 | 135 | 题库批次流水账 |
|
|
56
|
+
| `milestone_` | 2 | knowledge 2 | True 2 | 2 | 过程记录 |
|
|
57
|
+
| `retest6_` | 1 | knowledge 1 | True 1 | 1 | 过程记录 |
|
|
58
|
+
| `imgpart_` | 60 | knowledge 60 | True 60 | 60 | 视觉管道产物 |
|
|
59
|
+
| `vpipe_` | 32 | knowledge 32 | True 32 | 32 | 视觉管道产物 |
|
|
60
|
+
| **合计** | **230** | 全 knowledge | 全 True | 全齐备 | 与缺口单 §三「138 + 92」一致 |
|
|
61
|
+
|
|
62
|
+
对照:`node_` 1324(knowledge,exempt 全 True,comment 1321 有 / 3 空);`kp_` 2962(exempt 29 False / 2933 True)。
|
|
63
|
+
|
|
64
|
+
**实现事实(行号可回溯)**:
|
|
65
|
+
|
|
66
|
+
- `md_cg/mdcg.py:37 BUCKETED_LAYERS = ("knowledge",)` → **`contextual` 非分桶层**,归位后落点恒为 `contextual/<id>.md`,不触发分桶路径变更。
|
|
67
|
+
- `md_cg/mdcg.py:34 LAYERS` 已含 `contextual`;`md_cg/tokens.py` 层白名单已含 `contextual` → **归位复用既有层枚举**,无需新增层。
|
|
68
|
+
- `md_cg/consolidate.py:758 _relocate_layer()` 已实现「跨层迁移 + 目标层分桶 + 删旧文件」,返回新相对路径。
|
|
69
|
+
- `md_cg/consolidate.py:776 promote_memories()` 已实现「预演 → 批次 → `_maintain.jsonl` 留痕 → 演化账本」四件套;
|
|
70
|
+
`:847 rollback_promotion()` 已实现**按批次号回滚**(读 `_maintain.jsonl` 的 `promote` 记录反向迁层)。
|
|
71
|
+
- `md_cg/evolution.py:45 KIND_LAYER_SHIFT` 为层位移专用条目类型;`:51 STATE_FIELDS` 含 `layer` → 层位移**可被演化账本记录且可原样写回**。
|
|
72
|
+
- `md_cg/mcp_server.py:1784-1787`:`consolidate` 全 action **一律 `require_admin`** → G4 属管理操作,**权限面已就位,无需新增授权面**。
|
|
73
|
+
- `md_cg/predict.py:526 _SAFE_LAYERS` 含 `contextual` → 归位后仍可被锚点/反馈闭环读到(不破 D-006)。
|
|
74
|
+
- `md_cg/mdcg.py:58 GLOBAL_CAP = 500`;召回截断与打分在 `:822-833`(`hits[:GLOBAL_CAP]`)。
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 二、G4 裁定:层归属错位 → 归入 `contextual`(ACCEPT)
|
|
79
|
+
|
|
80
|
+
**条件空间(本条)**
|
|
81
|
+
|
|
82
|
+
| 维度 | 声明 |
|
|
83
|
+
|---|---|
|
|
84
|
+
| 观测位置 | 库外只读 → 执行时切换为 designer 管理位(`can_admin`,经既有 `cg` op) |
|
|
85
|
+
| 观测工具 | `consolidate` 预演报表(`dry_run`)+ 批次后同口径复扫 + `_maintain.jsonl` 对账 |
|
|
86
|
+
| 时间窗口 | 2026-09-10 单批次(230 条,一次性) |
|
|
87
|
+
| 存在约束 | 只改 `layer` 字段与落点目录;**正文、密级、id、tags 一律不动** |
|
|
88
|
+
|
|
89
|
+
**归因(三方条件空间 × 失配维度)**
|
|
90
|
+
|
|
91
|
+
| 维度 | 原状态 | 失配点 |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| 对象条件 | 230 条混合内容(流水账/感知产物)与 6330 条知识共层 | 对象条件失配:**情境性内容被当作长期知识** |
|
|
94
|
+
| 观测条件 | 层字段可读、可写、可复算 | 无失配(工具齐备) |
|
|
95
|
+
| 判定条件 | **「什么内容该在哪一层」的规则从未被声明** | 判定条件缺失 → 前序恒 DEFER |
|
|
96
|
+
| 后果 | `ccg_exempt=True` 恒 DEFER **但可被召回**(实测 `node_` 系 score 0.079~1.173) | 「判不了却召回得到」= 污染召回面 |
|
|
97
|
+
|
|
98
|
+
**裁决**:ACCEPT。**归入 `contextual` 情境层**(用户口径,复用既有层枚举,**保留可召回**)。
|
|
99
|
+
|
|
100
|
+
**执行前置条件(全部满足才动手)**
|
|
101
|
+
|
|
102
|
+
1. **预演先行**:先出 `dry_run` 报表(`nodes_scanned`/`targeted`/`skipped_locked`/`samples`),targeted 必须 = 230;
|
|
103
|
+
2. **批次号**:`YYYYMMDD-HHMMSS`,写入 `_maintain.jsonl`(`action=contextualize`,含 `from`/`to`/`path`/`actor`/`reason`);
|
|
104
|
+
3. **演化留痕**:每条落一条 `KIND_LAYER_SHIFT`(`before`/`after` 由 `evolution.state_of` 取);
|
|
105
|
+
4. **回滚路径**:按批次号或 id 定向回滚(复用 promote/rollback 的幂等模式),**执行后立即实测回滚 1 条再迁回**;
|
|
106
|
+
5. **加密节点 fail-closed**:`crypto.is_encrypted(content)` 者跳过并计数(无密钥绝不解密回写);
|
|
107
|
+
6. **保留召回**:不改 `LAYERS`/`tokens` 层白名单、不改 `predict._SAFE_LAYERS`、不设 `ccg_exempt` 外的召回排除;
|
|
108
|
+
7. **副作用登记**:层计数(knowledge 6330→6100、contextual 0→230)与召回指标变化必须登记。
|
|
109
|
+
|
|
110
|
+
**不做**:不删节点、不合并、不改正文、不补 comment、不动 `ccg_exempt`。
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 三、G5 裁定:视觉证据未落 → 守卫式证据回填(ACCEPT,条件=脱敏 + 只读 AEIS)
|
|
115
|
+
|
|
116
|
+
**证据源(AEIS 侧,全部只读;`AEIS` 为异仓,不得写入)**
|
|
117
|
+
|
|
118
|
+
| 资产 | 位置 | 用途 |
|
|
119
|
+
|---|---|---|
|
|
120
|
+
| 验证过程记录 | `AEIS/data/vision/VISION_PIPELINE_已验证_v1.md` | 唯一权威算法对照表(8 项 ✅)+ **历史算法不适用条件表** + 纪律 11/12 |
|
|
121
|
+
| 逐部件实测结果 | `AEIS/data/vision/<图集>/parts_*.json` | **主证据源**:`type/bbox/mask/confidence/cond_hash/verdict/verdict_reason/fg_ratio/occluded/algo` |
|
|
122
|
+
| 工程验收记录 | `AEIS/docs/vision-generic-protection.md` | 五模块 REV1 能力表 + 76/76 测试全绿 + 敏感图像协议 |
|
|
123
|
+
| 算法权威 | `AEIS/aeis/{m0_part_extract,vision_generic,vision_models,vision_pipeline,part_tree_to_cg}.py` | 溯源锚(白箱·确定性·零 LLM,D-005) |
|
|
124
|
+
| 测试代码 | `AEIS/tests/test_vision_{generic,models}.py` 等 | 可复算 |
|
|
125
|
+
|
|
126
|
+
**`evidence={}` 空值的根因(已定位到行)**
|
|
127
|
+
|
|
128
|
+
- `AEIS/aeis/vision_pipeline.py:113-117`:`cg_ingest` 只取 `p.get("model_evidence")`;
|
|
129
|
+
- `AEIS/aeis/vision_models.py:152-158`:`model_evidence` **仅在 yolov8n-pose 融合收紧分支**产生(`fuse_keypoints`);
|
|
130
|
+
- 纯白箱 `geometry_parts` 路径的部件 dict **不存在该键** → 落库恒为 `{}`。
|
|
131
|
+
- 结论:**这不是漏写,是证据口径从未被声明**。因此本条的判定条件 = 「证据口径映射规则」。
|
|
132
|
+
|
|
133
|
+
**证据口径映射规则(三档,白箱优先、模型次之、缺失不编造)**
|
|
134
|
+
|
|
135
|
+
| 档 | 触发条件 | 落库内容 |
|
|
136
|
+
|---|---|---|
|
|
137
|
+
| 1 模型证据 | 源数据含 `model_evidence` | `{model, kpts_used, min_conf}` |
|
|
138
|
+
| 2 白箱证据 | 无模型键但含判定三要素 | `{algo, confidence, cond_hash, fg_ratio, occluded, verdict_reason}`(`verdict_reason` 是四态判定的直接依据) |
|
|
139
|
+
| 3 盲区 | 两者皆无 | **保持空**,标 `evidence_status=BLINDSPOT`,**不编造** |
|
|
140
|
+
|
|
141
|
+
**脱敏纪律(硬约束,须写入交付文档)**
|
|
142
|
+
|
|
143
|
+
1. 不读取、不落盘任何图像文件;不细读性化内容原图及衍生物(沿用 AEIS 红线);
|
|
144
|
+
2. 证据只含结构化字段,**禁止**写入敏感语义描述文本;
|
|
145
|
+
3. 含敏感词的图集目录名**不进库**,一律以编号引用(`图集_0`…`图集_9`);
|
|
146
|
+
4. 本库为**认知层放行**:证据=认知标记,**不作法律/内容判定**(认知与行动分离)。
|
|
147
|
+
|
|
148
|
+
**裁决**:ACCEPT。**不重跑视觉、不引入 PIL/图像依赖、不改 AEIS 源**。
|
|
149
|
+
|
|
150
|
+
### 三·执行证据(G5 落地实测,批次 `g5-visevid`)
|
|
151
|
+
|
|
152
|
+
**实现落点**:`md_cg/vision_evidence.py`(新,纯标准库)+ `md_cg/mdcos.py` 分发 + `md_cg/mcp_server.py` 契约
|
|
153
|
+
(`maintain` 新增 3 action:`vision_evidence` / `vision_evidence_rollback` / `vision_evidence_history`,新增参数 `aeis_root`)。
|
|
154
|
+
自测:`md_cg/test_p39_vision_evidence.py`(**PASS 53 / FAIL 0**,含跨层不漏、密文 fail-closed、脱敏、幂等、权限、回滚 12 组)。
|
|
155
|
+
|
|
156
|
+
**扫描口径**:`layer=None` → **全层按 id 前缀识别**(`imgpart_` / `vpipe_`)。
|
|
157
|
+
不静默漏节点的理由:G4 阶段 fail-closed 未迁的 2 条密文视觉节点仍在 `knowledge`,若只扫 `contextual` 会被无声忽略。
|
|
158
|
+
|
|
159
|
+
| 阶段 | 实测 |
|
|
160
|
+
|---|---|
|
|
161
|
+
| 预演(只读,未写盘) | `nodes_scanned` **92** = `targeted` **70** + `blindspot` **20** + `skipped_locked` **2** |
|
|
162
|
+
| 落盘(apply) | `written` **90**(白箱 70 + 盲区 20),`entry_ids` 90,`_vision_evidence.jsonl` **90** 行 |
|
|
163
|
+
| 前后对照 | 视觉节点 frontmatter `evidence` 非空:**0 → 70**;`evidence_status`:**0 → 90** |
|
|
164
|
+
| 密文 fail-closed | 2 条密文 `vpipe_*`:**0 解密、0 回写**,仅计数 |
|
|
165
|
+
|
|
166
|
+
**三档映射实际命中(档 1 本轮 0 条——证据源中不存在 `model_evidence` 键,与 §三根因一致)**:
|
|
167
|
+
|
|
168
|
+
| 档/状态 | 条数 | 连接键 | 来源引用 | 说明 |
|
|
169
|
+
|---|---|---|---|---|
|
|
170
|
+
| 档 2 WHITEBOX | **56** | `cond_hash` | `图集_0` | `imgpart_*`:正文 `cond_hash` 与归档逐部件记录精确相等 + `type` 一致 + `verdict` 一致 |
|
|
171
|
+
| 档 2 WHITEBOX | **14** | `type` | `图集_1` | `vpipe_*`:正文无 `cond_hash`,以家族根 `cond_hash` 定位归档后按 `type` 连接 |
|
|
172
|
+
| 档 3 BLINDSPOT | **14** | — | — | `no_source_archive`:`img0_verify` 家族无逐部件结构化归档 |
|
|
173
|
+
| 档 3 BLINDSPOT | **6** | — | — | `root_no_verdict`:部件树根不承载四态裁定,**证据面保持为空** |
|
|
174
|
+
|
|
175
|
+
**落库字段(档 2 六字段,逐条须有源,缺一不落)**:
|
|
176
|
+
`algo`(归档) / `confidence`(归档) / `cond_hash`(归档或节点) / `fg_ratio`(节点实测) / `occluded`(归档) / `verdict_reason`(节点实测);
|
|
177
|
+
frontmatter 另记 `evidence_status` / `evidence_tier` / `evidence_source` / `evidence_joined_by` / `evidence_doc` / `evidence_batch`。
|
|
178
|
+
|
|
179
|
+
**脱敏实测**:留痕与库内对 `纳西妲` 等图集目录名 **0 命中**;来源一律编号引用(`aeis:vision:图集_N`);
|
|
180
|
+
证据只含结构化字段与短 `verdict_reason`(如 `clothing/occlusion covers`),**无敏感语义描述文本**。
|
|
181
|
+
|
|
182
|
+
**正文未动**:抽样 `imgpart_0122c047_1788232664661`,正文与执行前逐字一致,仅 frontmatter 新增证据键。
|
|
183
|
+
|
|
184
|
+
**幂等与回滚出口**:`evidence_status` 已存在即 `skipped_already`(自测重跑 `written=0 / skipped_already=11`);
|
|
185
|
+
回滚按批次反向删证据键 → `maintain action=vision_evidence_rollback batch=g5-visevid`。
|
|
186
|
+
|
|
187
|
+
**权限分档**:`vision_evidence` **apply** 与 `*_rollback` 走 `require_admin`;**预演**(plan)与 `history` 放行写层角色(只出报表/只读日志)。
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 四、G6 裁定:`node_` 结构提炼(DEFER → 条件化 ACCEPT)
|
|
192
|
+
|
|
193
|
+
**本条条件**:G6 的原 DEFER 理由是 **「U/I 维无公开基准,属不可盲测」**。本单为之声明**可执行的验收条件**:
|
|
194
|
+
|
|
195
|
+
- 条件 A(验证条件):先抽 **20 条**做提炼预演,人工核对**提炼口径**(是否忠实于原文、是否新增未声明信息);
|
|
196
|
+
- 条件 B(批次条件):抽检通过率达标后,**才**允许扩大批次规模;未达标则停止并改写口径;
|
|
197
|
+
- 条件 C(证据条件):`consolidate.induce` 产出一律 `inferred`,**不得冒充 `verified`**(`consolidate.py:899-904` 已内含该纪律)。
|
|
198
|
+
|
|
199
|
+
**实测基线**:`node_` 正文长度 **p50=367** 字符(min/max 见执行时复算),**有料**;`comment` 1321/1324 齐备;全部 `knowledge` + `ccg_exempt=True`。
|
|
200
|
+
→ 与缺口单「p50 272」不矛盾(口径不同:本条为**正文总长**含 CCG 6 行头)。
|
|
201
|
+
|
|
202
|
+
**裁决**:DEFER→条件化 ACCEPT(**绝不盲跑全量 1324 条**)。
|
|
203
|
+
|
|
204
|
+
### 四·执行证据(G6 抽检预演实测,批次 `g6-node-20260910`)
|
|
205
|
+
|
|
206
|
+
**实现落点**:`md_cg/refine.py`(新,纯标准库,**不写任何节点内容**)+ `md_cg/mdcos.py` 分发 +
|
|
207
|
+
`md_cg/mcp_server.py` 契约(`maintain` 新增 4 action:`refine` / `refine_gate` / `refine_history` /
|
|
208
|
+
`refine_calibrate`;新增参数 `sample_n` / `prefix` / `verdicts`)。
|
|
209
|
+
自测:`md_cg/test_p40_refine_worklist.py`(**PASS 46 / FAIL 0**,覆盖契约链、只读、工单结构、
|
|
210
|
+
同源口径、grounded、模板词标记、确定性、闸门四态、不改节点、权限分档、校准、未知 action)。
|
|
211
|
+
|
|
212
|
+
**抽检工单(真实库只读,2026-09-10)**
|
|
213
|
+
|
|
214
|
+
| 项 | 实测 |
|
|
215
|
+
|---|---|
|
|
216
|
+
| 抽检池 | `node_` 前缀 **1324** 条 / **90** 个家族(`cond_*`)/ 受保护 0 |
|
|
217
|
+
| 确定性样本 | **20** 条(seed `g6-sample-v1`、`sample_sha=6dda14dd8bf5fb89`)——家族分层 + 最大余数:`cond_感知系统` 17、`cond_未分类` 2、`cond_物理学` 1 |
|
|
218
|
+
| 字段缺口 | `ccg_exempt=True` **20/20**;`子功能`/`执行`/`不适用条件` **20/20 全缺**;`功能名` 17/20 缺、`生效条件` 2/20 缺 |
|
|
219
|
+
| 工单产物 | 逐条含「原文 + 字段缺口 + `source_sha` + 口径声明(4 项人工核对项)」;**零写盘、零改节点** |
|
|
220
|
+
|
|
221
|
+
**提炼预演(与 `consolidate.induce` 同源口径:bigram-jaccard 贪心聚类,`min_cluster=3`、`min_jaccard=0.30`)**
|
|
222
|
+
|
|
223
|
+
| 样本量 | 候选 | 「共性条件全为高 df 模板词」 | 「区分性」共性 |
|
|
224
|
+
|---|---|---|---|
|
|
225
|
+
| 20(条件 A 口径) | **0** | — | — |
|
|
226
|
+
| 40 | 2 | 2 | 无 |
|
|
227
|
+
| 80 | 2 | 2 | 无 |
|
|
228
|
+
| 160 | 4 | 4 | 无 |
|
|
229
|
+
| 200(爬坡上限) | 7 | 6 | 1 条,且为**整行条件文本(含时间戳)** |
|
|
230
|
+
|
|
231
|
+
- **忠实性不是缺陷**:候选共性条件在全部成员原文可追溯(`grounding_gap=[]`);
|
|
232
|
+
- **缺陷在区分性**:模板词(`感知系统` / `感官输入` / `协议实例运行中`)在样本内 df≈1.0 → 全部命中 `generic`;
|
|
233
|
+
唯一的「区分性」项是 `载体/位置:…;时间:2026-08-30 23:51~…(UTC)…` **整行原文**——df 低只因时间戳唯一,
|
|
234
|
+
属**归一化缺失导致的伪区分性**;
|
|
235
|
+
- **样本充分性**:`sample_adequacy=insufficient`(20 条结构性产不出候选)。
|
|
236
|
+
|
|
237
|
+
**扩批闸门**:留痕 `_refine.jsonl` 批次 `g6-node-20260910`(`sampled=20`、`candidates=0`、
|
|
238
|
+
`gate.reason=no_candidates`、`expand_allowed=false`)。`refine_calibrate` 有界爬坡(cap=200)结论:
|
|
239
|
+
**样本量不是瓶颈,提炼口径才是**——须先「剔除模板词 + 归一化/裁剪整行文本」,或改以「候选」为抽检单位,
|
|
240
|
+
方能重开抽检;**当前状态不得扩批**。
|
|
241
|
+
|
|
242
|
+
**权限分档**:`refine`(工单/预演)、`refine_gate`、`refine_history`、`refine_calibrate` 只读,
|
|
243
|
+
放行写层角色;`refine apply`(落抽检留痕、据以放行/否决扩批)走 `require_admin("maintain_refine")`。
|
|
244
|
+
|
|
245
|
+
**`apply` 的写入边界**:G6 的 `apply` **只追加抽检留痕**,不写节点;真写节点的口子仍是
|
|
246
|
+
`consolidate.induce`(另批、另闸门)——`refine` 只负责「决定能不能开这个口子」,职责不混。
|
|
247
|
+
|
|
248
|
+
**四态复核**:条件 A **未通过**(20 条样本 0 候选);条件 B **闸门关闭**(不放行);条件 C 满足
|
|
249
|
+
(产出恒 `inferred`,且本模块不执行写入)。
|
|
250
|
+
→ **G6 提炼口径在本轮判 DEFER**(口径修正后可重开):**不是** ACCEPT(口径未过关)、**也不是** REJECT
|
|
251
|
+
(缺口可闭合,但须先改口径)。
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## 五、G7 裁定:自主演化无驱动(ACCEPT)
|
|
256
|
+
|
|
257
|
+
**存在性缺口**:`_sustain.jsonl` 在跑,但 `consolidate`/`scrub`/`importance` 三类未挂巡检 → **能力齐备、无驱动源**。
|
|
258
|
+
|
|
259
|
+
**裁决**:ACCEPT。新增 `check code + fix 动作`,接入既有心跳周期(`mcp_server.py:2138 _start_sustain`)。
|
|
260
|
+
**硬约束**:`diagnose` 保持**只读**;`heal` 才写;每项 fix 必带 `batch` 与可回滚路径;巡检日志位置显式声明
|
|
261
|
+
(`sustain_dir()`:显式 → `MDCG_SUSTAIN_DIR` → `~/.mdcg/sustain`)。
|
|
262
|
+
|
|
263
|
+
### 五·执行证据(G7 演化巡检落地实测)
|
|
264
|
+
|
|
265
|
+
**实现落点**:`md_cg/sustain.py`(新增 `evolution_candidates()` 只读盘点、`EVOLVE_FIXES` 映射、
|
|
266
|
+
`SustainLoop._tick_evolve()`、`evolve_summary()`;`diagnose()` 增 `evolve` 段与 2 个 info 级 issue;
|
|
267
|
+
`heal()` 增 `allow_evolve` 受控开关)+ `md_cg/mcp_server.py`(新增 `action=evolve` 与
|
|
268
|
+
`allow_evolve` / `auto_evolve` / `evolve_interval` 参数、`catalog.evolve_fixes`)。
|
|
269
|
+
自测:`md_cg/test_p41_evolve_patrol.py`(**PASS 36 / FAIL 0**)。
|
|
270
|
+
|
|
271
|
+
**驱动源盘点口径(只读、索引级、确定性)**
|
|
272
|
+
|
|
273
|
+
| 巡检项 | 口径 | 修复动作 | 是否自动 |
|
|
274
|
+
|---|---|---|---|
|
|
275
|
+
| `ccg_backlog` | 索引里无 `verification_basis` 或无 `has_neg_conditions` 的节点数(**代理指标**,零读节点文件) | `consolidate_run` | **否**(依赖 LLM 反思/验证) |
|
|
276
|
+
| `importance_drift` | `weights.recalc(apply=False)` 报出的 `changed`(纯数学,不读文件) | `importance` | 是(确定性、有 rollback) |
|
|
277
|
+
|
|
278
|
+
**三条硬约束的落实方式**
|
|
279
|
+
|
|
280
|
+
1. **巡检恒只读**:`evolution_candidates()` 不回写节点/索引;自测断言盘点前后节点文件 sha256 逐字节不变;
|
|
281
|
+
`diagnose()` 仍只读——新项固定 `severity=info`,**候补多不翻转 `ok`**(候补多 ≠ 库有毛病)。
|
|
282
|
+
2. **自愈受控、只放确定性动作**:`heal()` 不传 `allow_evolve` 时,`consolidate_run` 记
|
|
283
|
+
`applied=false / reason=needs_llm`、`importance` 记 `applied=false / reason=evolve_disabled`;
|
|
284
|
+
显式 `allow_evolve=true` 才放行 `importance`(实测:手工把 `n_a` 的 importance 置 0.99 →
|
|
285
|
+
重算后 `changed` 由 1 归 0),而 `consolidate_run` 在无 `reflect_fn` 时**恒不执行**。
|
|
286
|
+
3. **失败不拖垮常驻**:`_tick_evolve()` 被主循环 try/except 包住;自测把 `weights.recalc` 打进异常后,
|
|
287
|
+
循环仍 `running=true`、心跳照常推进(`beats≥2`)、`last_evolve` 不被污染。
|
|
288
|
+
|
|
289
|
+
**常驻接线**:`_start_sustain`(`mcp_server.py`)读 `MDCG_EVOLVE_INTERVAL`(默认 7200s)与
|
|
290
|
+
`MDCG_AUTO_EVOLVE`(默认 **0 = 关**);`SustainLoop.status()` 暴露
|
|
291
|
+
`evolve_interval / auto_evolve / last_evolve / evolves`;`sustain.summary()` 增 `evolve` 段
|
|
292
|
+
(异常吞掉,不拖垮 `health_os`)。
|
|
293
|
+
|
|
294
|
+
**四态复核**:**ACCEPT** —— 缺口(无驱动)**已闭合**:能力(`consolidate` / `weights` / `scrub`)此前已具备,
|
|
295
|
+
本轮补的是**驱动 + 口径 + 闸门**;「默认只读 + 自动动作仅限确定性」保证驱动**不会**变成新的风险源。
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## 六、G8 裁定:溯源链缺失(ACCEPT)
|
|
300
|
+
|
|
301
|
+
**实测**:库根**无** `_link.jsonl`;全库 frontmatter `parent/derived_from/source/links` 全 0 → `node_` 拆为 `kp_` 后派生关系丢失。
|
|
302
|
+
|
|
303
|
+
**裁决**:ACCEPT,**只对新增节点常态化建链,历史不回填**(前序已裁定口径)。
|
|
304
|
+
**落点**:`md_cg/links.py:62-63 links_file()`(`LINKS_FILE_ENV`/`DEFAULT_LINKS_FILE`)+ 写路径侧的派生关系声明。
|
|
305
|
+
**硬约束**:建链失败**不得阻断写入**(降级为告警并留痕),否则新写入口会因台账 IO 失败而假失败。
|
|
306
|
+
|
|
307
|
+
### 六·执行证据(G8 派生溯源落地实测)
|
|
308
|
+
|
|
309
|
+
**落点校正(诚实标注)**:原裁定把落点写成 `links.py:62-63 links_file()`。执行时核对:
|
|
310
|
+
`links.py` 是**跨节点信任层**(「我信你多少」,P_trust,落 `~/.mdcg/_links.json`),
|
|
311
|
+
与 G8 要的**节点派生血缘**(「它从谁派生」,`_link.jsonl`)是两层东西——照原落点写会把血缘
|
|
312
|
+
混进信任台账。故**另立同构层** `md_cg/provenance.py`,只复用 `links_file()` 的**路径解析惯例**
|
|
313
|
+
(显式 → env → 默认),并在 `catalog.distinct_from` 里把两层区别**写死**,防后续混淆。
|
|
314
|
+
|
|
315
|
+
**实现落点**
|
|
316
|
+
|
|
317
|
+
- `md_cg/provenance.py`(新):台账 `_link.jsonl`(append-only + 文件锁串行)、`record()` **永不抛**、
|
|
318
|
+
`.fail` 降级留痕、`check()` 只读悬空检出、`edges()/load()`(台账)与 `index_edges()`(索引)双源查询、
|
|
319
|
+
`rebuild_ledger()` 按 frontmatter 声明重建(默认预演)。
|
|
320
|
+
- `md_cg/mdcg.py`:`add(derived_from=…, relation=…)` → 声明写 **frontmatter(单一真相源)** +
|
|
321
|
+
索引条目带 `derived_from`(巡检**零读节点文件**)+ 追加台账;建链在 `_stage()` 之后,
|
|
322
|
+
**失败不回滚节点**。
|
|
323
|
+
- `md_cg/sustain.py`:`diagnose()` 增 `provenance` 段与 `provenance_dangling`
|
|
324
|
+
(**info 级、`fix=None`**、不翻转 `ok`);`summary()` 增 `provenance`(异常吞掉,不拖垮 `health_os`)。
|
|
325
|
+
- `md_cg/mcp_server.py`:`link` op 新增 `derive / derive_dangling / derive_catalog / derive_rebuild`;
|
|
326
|
+
`sustain` op 新增 `provenance`;`write` / `remember` 透传 `derived_from`(逗号串按 `_split_ids` 归一)。
|
|
327
|
+
**不新增写入口**——权威声明只经既有节点写路径产生(对齐「单一真相源 + 派生索引可重建」)。
|
|
328
|
+
- 自测:`md_cg/test_p42_provenance.py`(**PASS 52 / FAIL 0**)。
|
|
329
|
+
|
|
330
|
+
**三条硬约束的落实方式**
|
|
331
|
+
|
|
332
|
+
1. **只对新增节点建链、历史不回填**:建链只在 `add()` 内发生;`rebuild_ledger()` **只重放 frontmatter
|
|
333
|
+
已声明的关系,不发明任何边**——新根实测(只建无声明历史节点)→ `edges=0 / written=0`,台账为空。
|
|
334
|
+
副产物:rebuild 可**救回**「建链失败」而漏写的声明边(声明在 frontmatter,属重放、非发明)。
|
|
335
|
+
2. **建链失败不阻断写入**:`record()` 全路径 try 兜底、永不抛。自测注入 `ProvenanceError` 后实测:
|
|
336
|
+
节点照常落库、frontmatter 声明不丢、`.fail` 台账留痕、`_link.jsonl` 如实为空(不假装成功)。
|
|
337
|
+
非法关系名由 `coerce_relation` 回退默认值,同样不阻断——**写路径不做校验式拒绝**,
|
|
338
|
+
严格校验(`normalize_relation`)只留给显式 API。
|
|
339
|
+
3. **巡检只读、不删边**:`check()` 不写盘,悬空边带 `missing: child|parent` 归因;
|
|
340
|
+
`rebuild_ledger` 默认 `dry_run`;自测断言巡检前后**节点逐字节不变 + 台账字节不变**。
|
|
341
|
+
删边 = 篡改演进血缘,故**不给自动修复**(`catalog.provenance_fixes = {}`)。
|
|
342
|
+
|
|
343
|
+
**悬空可检出的两条真实路径(实测)**:① 声明了库里不存在的来源(`ghost_missing`)→
|
|
344
|
+
写路径**不校验存在性**(校验会阻断写入,与硬约束冲突),悬空交由巡检兜底;
|
|
345
|
+
② 父节点被删 + 索引重建 → 即时报 `missing=[parent]`。台账被删亦不丢血缘:
|
|
346
|
+
索引已带声明,`check(include_index=True)` 零读文件兜底;`rebuild(apply=True)` 可按声明恢复台账。
|
|
347
|
+
|
|
348
|
+
**四态复核**:**ACCEPT** —— 缺口(血缘丢失)已闭合:新增节点「写入即留血缘」、
|
|
349
|
+
悬空「可检出可归因」、建链失败「不假失败」。历史血缘由「不可闭合项」承担,不回溯。
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## 七、召回分池/降权裁定(DEFER → 条件化 ACCEPT)
|
|
354
|
+
|
|
355
|
+
**实测**:`GLOBAL_CAP=500`(`mdcg.py:58`),截断率 **34.5%**(前序实测),索引节点(`code_`/`doc_` 1813 条)与知识节点**同池竞争**。
|
|
356
|
+
|
|
357
|
+
**裁决**:DEFER→条件化 ACCEPT。**条件 = 先冻结 P95/截断率基线,改造后同口径复测**;未测先改 = 无法归因副作用。
|
|
358
|
+
**硬约束**:分池**不得**变成「隐性提高上限」(那只是把截断推后,不是治本);降权必须有**显式权重表**且可 A/B 复算。
|
|
359
|
+
|
|
360
|
+
### 七·执行证据(召回分池/降权落地实测,2026-09-10)
|
|
361
|
+
|
|
362
|
+
**实现落点**:`md_cg/pooling.py`(新,纯标准库)+ `md_cg/mdcg.py`/`md_cg/mdcos.py`(T2/T3 截断点接入)
|
|
363
|
+
+ `md_cg/mcp_server.py`(`sustain` 新 action `pooling`/`pool_bench`/`pool_compare`;`mdcg_search` 透传 `pools`)。
|
|
364
|
+
自测:`md_cg/test_p43_pooling.py`(**PASS 79 / FAIL 0**,14 组:契约/默认关闭、坏表拒绝、额度守恒、关闭态逐位等价、
|
|
365
|
+
归池确定性、分池生效、空池回流、降权可复算、口径敏感性自检、只读、同口径对比、坏表不静默、MCP 接入、未知 action)。
|
|
366
|
+
回归批次:`p0/p1/p2/p3/p4/p5/p7/p8/p14/p18/p2_mcp/p33/p42/p43` **全绿**。
|
|
367
|
+
→ 该批次**抓出一个真实缺陷**:`mdcg.MdCG.search` 的 T3 全量兜底漏改审计面 → `NameError`(P43 只走 `MdCGOS` 路径而**漏检**)。
|
|
368
|
+
已修,并证明「双实现类(`MdCG` / `MdCGOS`)必须双路覆盖」——只测一条实现路径 = 静默盲区(与纪律 7 同构)。
|
|
369
|
+
|
|
370
|
+
| 组件 | 口径 |
|
|
371
|
+
|---|---|
|
|
372
|
+
| 归池 `pool_of` | 负层优先(`rejected`/`unresolved`)→ id 前缀(`code_`/`doc_`)→ `tags:index` → 知识池(确定性、不读文件) |
|
|
373
|
+
| 额度 `caps` | **最大余数法**,每池保底 1,余数按小数部分最大、同余按池序;各池之和**恒 == total** |
|
|
374
|
+
| 回流 `cut_report(backflow=True)` | 空池未用额度按池序回流前序池(knowledge ← index ← negative);`taken` 之和 **恒 ≤ total** |
|
|
375
|
+
| 池账审计面 | `pools.quota/cands/taken/lost`——**仅启用态落**,关闭态不写(不把平裁伪装成分池) |
|
|
376
|
+
| 权重表 `WEIGHTS` | knowledge 0.70/1.00、index 0.20/**0.60**、negative 0.10/0.90;`validate` 硬校验 `sum(cap_ratio)==1.0`(1e-9) |
|
|
377
|
+
| 载体开关 | `MDCG_POOLING`(**默认关**);`pools=None` ≡ 原 `GLOBAL_CAP` 平截,逐位一致 |
|
|
378
|
+
|
|
379
|
+
**真实库复测(只读,库 `AEIS/data/mdcg`:6339 节点 / `GLOBAL_CAP=500`;查询集 = `bench_queries` 确定性取样 48 条,`proxy`)**
|
|
380
|
+
|
|
381
|
+
| 口径 | 关闭态 | 启用态 | delta | 对分池敏感 |
|
|
382
|
+
|---|---|---|---|---|
|
|
383
|
+
| p95_scanned | 6339.0 | 6339.0 | 0.0 | 否 |
|
|
384
|
+
| p50_scanned | 6339.0 | 6339.0 | 0.0 | 否 |
|
|
385
|
+
| mean_candidates | 719.92 | 719.92 | 0.0 | 否 |
|
|
386
|
+
| truncation_rate | 0.2292 | 0.2292 | 0.0 | 否 |
|
|
387
|
+
| truncation_loss | 0.18289 | 0.18289 | 0.0 | 否 |
|
|
388
|
+
| **index_share** | **0.44167** | **0.27083** | **−0.17083** | **是** |
|
|
389
|
+
| **knowledge_share** | **0.55833** | **0.72917** | **+0.17083** | **是** |
|
|
390
|
+
| pool_lost_rate | `null`(关闭态无池层,不编造 0) | 0.18289 | — | 仅启用态可得 |
|
|
391
|
+
|
|
392
|
+
- 池分布(全库索引级,`pool_of` 判定):`knowledge` **4526** / `index` **1813**(= `code_` 1480 + `doc_` 333)/ `negative` 0。
|
|
393
|
+
- 分池计划(total=500):`caps` = knowledge 349 / index 100 / negative 51,`cap_sum` = **500**(额度守恒,未抬高上限)。
|
|
394
|
+
- 只读核验:**空闲窗口对照(3s 无检索)变更 0 文件;复测窗口变更 0 文件**。本模块 `record=False`,不写访问计数、不写节点/索引。
|
|
395
|
+
|
|
396
|
+
**关键发现(口径敏感性自检,必须登记)**:原 §七 只要求冻结 P95/截断率,但**该口径对分池不敏感**——
|
|
397
|
+
分池是在 `GLOBAL_CAP` **之内**重分配,「候选数 > 500」这一事件不变,故 delta 恒为 0。
|
|
398
|
+
若不补口径,复测会「跑完却归因不到副作用」,甚至被误读为「改造无效」。故本轮补
|
|
399
|
+
`index_share`/`knowledge_share`(结果构成,**看得到**分池效果)与 `pool_lost_rate`(池级被挤掉率,仅启用态),
|
|
400
|
+
并把敏感性结论显式写进 `compare.insensitive_keys/sensitive_keys` 与 `catalog.discipline.caliber_sensitivity`。
|
|
401
|
+
|
|
402
|
+
**副作用登记(真实库实测)**
|
|
403
|
+
|
|
404
|
+
| 类别 | 实测 |
|
|
405
|
+
|---|---|
|
|
406
|
+
| 收益 | 索引/产物类入榜占比 **44.2% → 27.1%(−17.1pp)**;知识类 **55.8% → 72.9%(+17.1pp)**;池级被挤掉率 0.18289(启用态) |
|
|
407
|
+
| 代价 | `scanned`(读取节点数)与**全局**截断率/损失率**不变** → 本轮**无额外 IO、无额度膨胀** |
|
|
408
|
+
| 未观测副作用 | 空闲窗口与复测窗口均 0 文件变更;`MDCG_POOLING` 未设时 `mdcg_search` 等既有调用方零影响(自测 (14) 断言) |
|
|
409
|
+
|
|
410
|
+
**回滚出口**:默认关闭(`pools=None` ≡ 原行为,逐位一致);载体侧开关未设即不生效;
|
|
411
|
+
不写节点/索引 → **无需数据回滚**,回滚 = 不传 `pools` / 不设 `MDCG_POOLING`。
|
|
412
|
+
|
|
413
|
+
**四态复核**:DEFER→**条件化 ACCEPT 达成**——前置条件「先冻结基线、同口径复测」已执行,并补出
|
|
414
|
+
「口径必须对改造敏感」这一**必要条件**。**诚实边界**:启用与否属**载体侧决策**(默认关),
|
|
415
|
+
本轮只交付「能力 + 显式权重表 + 池账审计面 + 复测证据」,**不替载体开全局开关**。
|
|
416
|
+
|
|
417
|
+
---
|
|
418
|
+
|
|
419
|
+
## 八、不可闭合项(诚实标注,不装完成)
|
|
420
|
+
|
|
421
|
+
| 项 | 为什么库内闭不了 |
|
|
422
|
+
|---|---|
|
|
423
|
+
| `kp_` 2933 条的「验证方式」 | 源为库外声明(人/流程/教材/公开知识库),认知图不能自证 |
|
|
424
|
+
| 载体侧自动注入 | 需 `can_admin` 的载体权限,非本库职责 |
|
|
425
|
+
| 82 工具「阶段 1 DSH 工具面收口」 | 落点在 DSH 侧 |
|
|
426
|
+
| G5 档 1(模型证据) | 本库当前载体**不存** `model_evidence`;不重跑视觉 → 该档**不可复现**,标 BLINDSPOT |
|
|
427
|
+
| G5 `img0_verify` 家族 14 条逐部件证据 | AEIS 侧**未产出**该家族的逐部件结构化归档:`img0_skin_parts.json` 的 `per_part` 仅 `{ok,px,bbox}`(缺 `cond_hash/verdict/fg_ratio/occluded/confidence`)→ 只能标 `evidence_status=BLINDSPOT / no_source_archive`,**不编造**。补齐须回到产出侧落一份 `parts_*.json`,属上游动作 |
|
|
428
|
+
| G5 部件树根 6 条 | 根节点不承载四态裁定(无 `verdict`)→ 结构上就不该有证据,标 `root_no_verdict`,**不是缺口** |
|
|
429
|
+
| G4 密文视觉节点 2 条 | 无密钥 → G4 与 G5 均 `fail-closed` 跳过(未迁层、未回填),层归属与证据面留待密钥可用时复算 |
|
|
430
|
+
| G6 抽检「20 条产不出候选」 | `min_cluster=3` 下 20 条节点样本 **0 簇**:**抽检单位与样本量不匹配**——以「节点」为单位时小样本结构性产不出可核对对象。要么改以「候选」为抽检单位、要么修正共性条件口径,属**口径设计问题**,不是库内数据能闭合的 |
|
|
431
|
+
| G7 固化「自动驱动」 | `consolidate` 的反思/验证依赖**库外**函数(LLM / 白箱);本库只能驱动其中的**确定性**部分。固化是否开启自动化属载体侧决策,不在库内闭环 |
|
|
432
|
+
| G8 历史节点的既有派生血缘 | 前序从未落盘来源声明(frontmatter 派生字段全空、无 `_link.jsonl`)→ **只能不回溯**。凭 id 前缀 / 正文相似度**反推**血缘 = 编造关系,比「空着」更坏。故旧 `node_`/`kp_` 的祖先关系**永久标注为不可考**,新节点起才有血缘 |
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
## 九、未核实项 / 待定项(显式标出)
|
|
437
|
+
|
|
438
|
+
1. `node_` 正文长度:执行时复算 → **p50=367 / min=82 / max=27852**(`nodefile.loads` 正文总长,含 CCG 声明行);
|
|
439
|
+
CCG 头覆盖实测:`ccg_exempt` **1324/1324**、含 `生效条件` **1240/1324**、含 `功能名` 仅 **202/1324**
|
|
440
|
+
——「功能名」是 `node_` 家族的系统性缺项,**不是个案漏写**;
|
|
441
|
+
2. 召回 P95 与截断率:本单**未采信**前序值,已于 §七 执行前以同一口径**重新冻结**(真实库 6339 节点、
|
|
442
|
+
48 条 proxy 查询:`p95_scanned=6339` / `truncation_rate=0.2292` / `truncation_loss=0.18289`);
|
|
443
|
+
**但复测证明该口径对分池不敏感**(delta 恒 0)→ 已补 `index_share`/`pool_lost_rate` 敏感口径,详见 §七·执行证据;
|
|
444
|
+
3. `contextual` 层在真实库:**执行前 0 条**(层目录存在但空)→ G4 批次 `20260910-162432` 后实测 **228 条**
|
|
445
|
+
(targeted 228 / written 228 / `skipped_locked` 2,因 G4 不迁密文节点,故为 230−2);
|
|
446
|
+
`knowledge` 6330 → **6102**。对账锚点闭合(228 + 6102 + 4 + 5 = 6339 有 frontmatter 节点)。
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## 十、纪律蒸馏(可复用)
|
|
451
|
+
|
|
452
|
+
1. **库根先声明**:本次实测发现工作区库根仅 1 节点、真实库在异地仓库——**观测前先冻结「对象是谁」**,否则一切计数无效。
|
|
453
|
+
2. **空字段 ≠ 漏写**:`evidence={}` 是「口径未声明」而非「写入遗漏」。**先定位产出侧根因,再决定补写还是标注**;补写前必须能回答「这个值由谁产出」。
|
|
454
|
+
3. **DEFER 的正确出路是「条件化」而非「取消条件」**:G6/召回分池由 DEFER 转 ACCEPT 靠的是**声明前置条件**(20 条抽检 / 先冻基线),不是降低标准。
|
|
455
|
+
4. **层位移必须成套**:字段 + 落点目录 + 演化条目 + 批次台账 + 回滚路径,**五件事缺一即为不可回滚的脏改**。
|
|
456
|
+
5. **脱敏是内容约束而非形式约束**:编号引用 + 只落结构化字段 + 不读原图,**且不得在库内留下敏感语义描述**。
|
|
457
|
+
6. **证据「有源才落、缺一不落」**:回填前先定「这个值由谁产出」——本轮 70 条全部命中档 2、20 条**宁可空着标 BLINDSPOT**;
|
|
458
|
+
把 `model_evidence`(本库不存在)当默认值硬填,就是幻觉落库。
|
|
459
|
+
7. **扫描范围要按「识别规则」而非「当前落点」定**:视觉节点按 id 前缀全层识别,才没漏掉 G4 因 fail-closed 留在 `knowledge` 的
|
|
460
|
+
2 条密文节点;**用「已知落点」当扫描范围 = 制造静默盲区**。
|
|
461
|
+
8. **层位移与证据回填的跳过语义要一致**:无密钥节点两轮都 `fail-closed` 计数,**绝不因为「流程要求走完」而解密或编造**;
|
|
462
|
+
跳过项要能与「已处理项」在报表里区分(`skipped_locked` vs `written`)。
|
|
463
|
+
9. **「抽检单位」必须先于「抽样」定死**:`min_cluster=3` 下 20 条**节点**样本 0 簇——抽检单位若取「节点」,
|
|
464
|
+
小样本会**结构性**交不出可核对对象,抽检流程看起来跑完了却很可能是空跑。抽检设计第一步应自检
|
|
465
|
+
「这个样本量能否产出 ≥1 个待核对单元」,**否则抽检=形式合规**。
|
|
466
|
+
10. **词面统计判据必须显式声明 df 阈值**:没有 df 门槛时,「整行含时间戳的条件文本」会伪装成唯一区分性特征;
|
|
467
|
+
模板词与伪区分性是**同一根因(归一化缺失)**的两面——先声明口径再抽检,否则人工核对只是在核对噪声。
|
|
468
|
+
11. **只读预演与写入必须分权**:`refine` 全程只读(工单/预演/闸门/校准),真写节点的口子留在 `consolidate.induce`;
|
|
469
|
+
把「能不能写」与「写什么」拆到两个 op,才能让「预演先行」成为**机制**而非**自律**。
|
|
470
|
+
12. **「有能力」≠「有驱动」**:G7 的缺口不是缺功能(`consolidate`/`weights`/`scrub` 早已存在),
|
|
471
|
+
而是缺一个周期性问「现在有多少候补」的**驱动源**。补驱动必须**同步补闸门**——否则驱动会把
|
|
472
|
+
「偶发的人工决策」变成「每 2 小时自动执行」,风险等级完全不同;且自动范围应**只取确定性动作**。
|
|
473
|
+
13. **代理指标要标注为代理**:巡检为省 IO 用索引字段(`verification_basis`/`has_neg_conditions`)
|
|
474
|
+
替代「读正文算 CCG 完整度」——必须在返回里显式写 `proxy=true`,否则下游会把候补量误当判定结论。
|
|
475
|
+
14. **同名概念不等于同一落点**:「链接 / 血缘 / 信任」在话术里都叫 link,落到存储却是两层
|
|
476
|
+
(`_links.json`=对端信任 vs `_link.jsonl`=节点血缘)。**先判「这是同一件事吗」再决定复用还是另立**——
|
|
477
|
+
G8 若照原裁定复用 `links.py`,就会把演进血缘写进信任台账,事后无法区分。另立层时必须把
|
|
478
|
+
「与谁不同」写进 `catalog`(本条即 `distinct_from` 字段的来源)。
|
|
479
|
+
15. **写路径的校验只允许「不阻断」形态**:派生关系名非法、来源节点不存在、台账 IO 失败——三者都不能让
|
|
480
|
+
节点写入**假失败**。要严格校验就挪到**显式 API**(`normalize_relation`),写路径只做
|
|
481
|
+
**回退默认值 + 降级留痕**;且「留痕」必须真的留下(`.fail` 台账),否则「降级」等于「静默吞掉」。
|
|
482
|
+
16. **「不回填」需要在重建路径上同样成立**:`rebuild_ledger` 若按「扫描全库反推血缘」实现,
|
|
483
|
+
就等于借重建之名行回填之实。正确做法是**只重放已有的显式声明**——重建的输入必须是
|
|
484
|
+
**声明**(frontmatter)而不是**推测**(id 前缀 / 相似度)。
|
|
485
|
+
17. **复测口径必须先自检「对改造敏感」**:§七 冻结的 P95/全局截断率,对「在 `GLOBAL_CAP` 之内重分配额度」
|
|
486
|
+
的改造**恒不敏感**(delta ≡ 0)——这不是「改造无效」,而是「口径测不到」。**先证明口径能测到被改的量,
|
|
487
|
+
再看差值**,否则复测只是形式合规(与纪律 9「抽检单位先于抽样」同构:**量具先于测量**)。
|
|
488
|
+
落地形态:`compare` 显式回 `insensitive_keys`/`sensitive_keys`,把「差值恒 0」标成**正常**而非沉默。
|
|
489
|
+
18. **同一逻辑的两条实现路径必须双路验收**:`MdCG.search` 与 `MdCGOS.search` 各有一份 T2/T3 截断点;
|
|
490
|
+
只测一条(P43 只走 `MdCGOS`),另一条漏改会**静默存活到生产调用**(本轮即 `NameError`,由跨模块回归批次抓出)。
|
|
491
|
+
改动落在「共享搜索骨架」时,验收必须**枚举所有实现类**,否则「全绿」只覆盖了一半。
|