TASK-AGRICULTURE-PESTICIDE-FERTILIZER-20260818-001ANA-AGRICULTURE-PESTICIDE-FERTILIZER-20260818-001 / BATCH-004 / RUN-ANA-AGRICULTURE-PESTICIDE-FERTILIZER-20260818-001-BATCH-004-001HANDOFF-INFOADMIN-LAOYANCAI-AGRICULTURE-BATCH004-SHARED-PUBLISHER-CONSOLIDATED-SUCCESSOR-20260821-001HANDOFF-DEV-LAOYAN-LAOSHEN-AGRICULTURE-BATCH004-SHARED-PUBLISHER-CONSOLIDATED-IMPLEMENTATION-REVIEW-20260821-001dev.developer.ana.cai / dev.reviewer.ana.cai本交付只实现项目级、版本化、声明式共享 publisher 及其生产形态隔离测试;没有生成真实 BATCH-004 config,没有创建 attempt、lock、receipt 或 ledger row,也没有调用生产 publisher。农业内容、candidate、current、promotion ledger、Repair007/Repair008 和失败历史均保持不变。
| 对象 | bytes | SHA-256 |
|---|---|---|
dev/ana-dev/shared_content_publisher/publisher.py |
44329 | 99C90DC15603DCFA1CB695C3A573EE4AA88D9B2594E4FF46750D6E6503EEEC62 |
dev/ana-dev/shared_content_publisher/batch_config.schema.json |
7078 | 73DECA1A7420E139692A2B0C91812C0CC90B78900816DCE36C6DD0B6DBBA0225 |
dev/ana-dev/shared_content_publisher/README.md |
1382 | 8B0E525019E712A50CEE0698CA3F5AE371D3EAC1D6517D5E2EBE220300FBE701 |
dev/ana-dev/shared_content_publisher/__init__.py |
168 | 9E83FAEF6958A15DE89A35691AEFA0860E881DAAB7E06378AABC0A693956CCFD |
dev/ana-dev/shared_content_publisher/__main__.py |
86 | DC3EA832B1DE49CBBE2EF61241524DB0751C9AB48FA2D42A49D58E01DB80B773 |
dev/ana-dev/test/test_shared_content_publisher_v1.py |
17414 | 3C56F448F22E4E6CB6FA7D22F866B14EB0603F16A6F5AF8BFFC9AA22E5A96E05 |
公共入口:
python -m shared_content_publisher --config <batch-config.json> --validate-only
python -m shared_content_publisher --config <batch-config.json>
生产和测试使用相同 schema、相同 validator 和相同 publisher 入口;没有 batch-specific wrapper、私有 reader 或内存替身。
严格配置仅有六个顶层字段:schema_version / identity / roots / expected / commit / test_control。所有 task、case、batch、run、attempt、release、candidate set、根、卷、路径、ledger、prior、history、current state、candidate rows、link/evidence anchor 和提交目标均来自这一配置。缺失、额外、重复 key、类型错误、路径逃逸、reparse、对象类型或 identity 漂移均在 exclusive lock 之前失败关闭。
publisher 源码和 schema 不含 ATTEMPT-B004-000001、ATTEMPT-B004-000002、农业或 BATCH-004 字面量。attempt、reader checks、receipt、lock、snapshot、ledger/ref 和 target identity 都从 config 派生。因此下一真实 attempt 使用新的 config 即可,不再复制 batch-specific runtime。
publisher 先校验 ledger 精确 bytes/SHA、固定 17 列表头、全局 event sequence 唯一性和 preserved prior terminal;再从真实 ledger 推导 next_event_seq 与同 task/case/batch/run 的 next_attempt_seq,并与 config 声明交叉验证。旧 8EED... ledger、sequence 1、bytes/SHA 漂移或 prior terminal 不一致均在首写前拒绝。
当前生产只读验证:promotion_ledger.csv=12716/ED2A83E2E6D1A695CF4DD24A79118B4DC99DAD75028B321D289114942F16B8BD;其 preserved attempt1 terminal 为 ROLLED_BACK。实际下一 event 从 16 开始,下一 attempt sequence 为 2;attempt ID 是独立声明字段,不从尾号猜测。
canonical_audit_id 和 review_handoff_id 是不同的必填字段、不同前缀域且禁止相等。release preimage 固定为 industry/task_id/case_id/batch_id/run_id/canonical_audit_id 六行 UTF-8 LF,只允许 canonical AUDIT 进入。review HANDOFF 只进入配置和 receipt 绑定,不进入 release hash。
生产冻结值按此公式独立得到 357 bytes/f39db200057f733df3d34ebc0387000d6af4a29d2a3e3ed787c20268b5fcace7;HANDOFF 替换会被 ID 域或 release preimage 门禁拒绝。
>=260 路径合同被同一实现复用。IDEMPOTENT_COMMITTED 且 ledger 不变;任何 published drift 都拒绝。实现没有 maintenance/no-current、lease、逐状态 fault matrix、batch-specific reader 或多审核阶段。
unittest:9/9 PASS,约 12 秒;累计 23 次同一 CLI 调用。>=260;长路径内容漂移被独立读取命中。152316/8736ACD79B53F62CC6CFBC5CFAEBBB7BF0DF94D933A8E515C4482B0DC86E6315。file_count=63、long_path_count=12、mismatch_count=0、positive bytes 63/63、uppercase SHA-256 63/63。7480/F66093023D91793AF8C03A72F4CE001F915EA7E986AAD788FDB61F922946E767。2874/9C4BBC12B5DCC6BB700DE98D4CDD3E91B2170CF4DD6DD1D4B9ACBD0342155202,仍为 RECOVERY_REQUIRED/BLOCKED/30,ledger latest=ROLLED_BACK,committed=0。2701/B9B02A...36A4;core 51587/6EDC2D...EEE7;manifest 588/CAE3F8...D558;result current 459/3671D3...594E5;case result 3051/31CBD0...15B。ATTEMPT-B004-000002 与 ATTEMPT-B004-000003 均不存在;active BATCH-004 lock 不存在;production publisher invocation=0;production mutation=0。请既有 dev.reviewer.ana.cai 在同一 consolidated review 中只判断:
请求一个正式 PASS/0 或一次列全的 HOLD/N。本交付不是 production invocation 或 promotion authority;审核 PASS 后由 project.admin 另行创建唯一真实 config 与新 attempt。
HANDOFF-INFOADMIN-LAOYANCAI-AGRICULTURE-BATCH004-SHARED-PUBLISHER-HOLD3-FOCUSED-SUCCESSOR-20260821-001AUDIT-DEV-ANA-SHARED-CONTENT-PUBLISHER-V001-CONSOLIDATED-IMPLEMENTATION-001 / HOLD/3HANDOFF-DEV-LAOYAN-LAOSHEN-AGRICULTURE-BATCH004-SHARED-PUBLISHER-HOLD3-FOCUSED-REREVIEW-20260821-001BLOCK-SHARED-PUBLISHER-IMPL-01:删除不可执行的 JSON pointer 合同。SHARED_CONTENT_PUBLISHER_CONFIG_V2 的唯一用户入口提交点固定为既有 cases Markdown 当前成果索引.md;候选 release 目录先完成,最后使用同卷原子 replace 切换 cases Markdown。result Markdown 只读校验为指向 cases 的薄入口,不迁移消费者。BLOCK-SHARED-PUBLISHER-IMPL-02:从卷根到 operation root 逐组件验证普通、非 reparse、非 alias;managed path graph 除 release-store/target、receipt/snapshot 两个明确父子关系外全部 case-insensitive disjoint。exclusive lock 成功后、任何 ledger append 前完整重读 config、ledger/current、prior manifest+self、candidate manifest/exact-set、link/evidence、history/current-state,并重新推导 event/attempt sequence。新事件使用真实 UTC 和 PID+UUID 进程实例身份;prior release-set 固定为 current-manifest bytes + canonical self descriptor 算法。BLOCK-SHARED-PUBLISHER-IMPL-03:candidate current manifest 必须精确覆盖全部发布成员和 invariant result entry,manifest self formal path 必须等于实际 release member;link/evidence checks 均非空。首次 postcommit 和 replay 都验证 target exact-set、拒绝 extra。幂等成功绑定 config bytes/hash、root/volume、完整 terminal、完整 event chain、Markdown current/result、prior snapshot、target exact-set 和 lock absence;已切换但闭环漂移时先恢复 prior Markdown,再写独立 recovery terminal,保留原 terminal 不删除。| 对象 | bytes | SHA-256 |
|---|---|---|
dev/ana-dev/shared_content_publisher/publisher.py |
73014 | EC5C6F547AEEEC8AF4D3B84B831FBDE8E379603AFD1129FBA592937C91B58907 |
dev/ana-dev/shared_content_publisher/batch_config.schema.json |
10430 | 9B027ED5AE2BF2B9FC50D491FA4AA3FEFA787DE80C3A6F0236555D3BC3266198 |
dev/ana-dev/shared_content_publisher/README.md |
1889 | CCA9F7B87E369227C7BD6E4624C06E6B1022F94EF6F609B75FC67E3AF201BCAD |
dev/ana-dev/shared_content_publisher/__init__.py |
168 | CAEAB945F11B8C5DA0520C5132C37F013EA5F9EFB4A20655083B956E340B376B |
dev/ana-dev/shared_content_publisher/__main__.py |
86 | DC3EA832B1DE49CBBE2EF61241524DB0751C9AB48FA2D42A49D58E01DB80B773 |
dev/ana-dev/test/test_shared_content_publisher_v1.py |
28616 | 6ADAADF06E60D20DFA590461EEE73316A85525726A4A898740CAB3EDF6142077 |
dev-doc/ana-doc/开发方案/SHARED-CONTENT-PUBLISHER-PRODUCTION-GUARD-V001.json |
2212 | DEFB9E6987A73AFD918C7F4A40C5FD08920B3478788F7A276BF9DE20F46F17A0 |
PASS;schema/guard strict JSON=PASS;UTF-8 no BOM/NUL/CR=PASS。14/14 PASS,最终耗时约 17.8 秒。COMMITTED/IDEMPOTENT_COMMITTED。测试 test_00_production_guard_precedes_isolated_mutation 在任何临时 fixture 创建之前核对 7 个冻结正式对象和 3 个 absent path。最终复核:file_mismatch=0、unexpected_present=0、production publisher invocation=0、formal mutation=0。
2701/B9B02AF2F8899A3670CF4C6A463374A7A556E7FA26E3E953468B2129B20636A451587/6EDC2D5FF6140C9CAC572D249C5CDFDCBD3C7C2FBED91BAB459DD27A406EEEE7588/CAE3F83F1591F4D8D0ECD7E452DFDE1977958C1B1C4633E4225396615DD7D55812716/ED2A83E2E6D1A695CF4DD24A79118B4DC99DAD75028B321D289114942F16B8BD459/3671D3BD13D1AD84E046895E5C3DAE2D43D491472B747A16FD24A9E2270594E53051/31CBD04BAB1AF28020E836347342FE3281EBE8C24CB8E7C362F12E70772B015B2874/9C4BBC12B5DCC6BB700DE98D4CDD3E91B2170CF4DD6DD1D4B9ACBD0342155202,仍为 RECOVERY_REQUIRED/BLOCKED/30ATTEMPT-B004-000002、ATTEMPT-B004-000003 均 absent。请原 dev.reviewer.ana.cai 只复审上述 HOLD/3 successor,并返回唯一 PASS/0 或完整 HOLD/N。本 successor 没有生成真实 batch config,没有调用 production publisher,不是 promotion authority。只有正式 reviewer PASS/0 后,project.admin 才可机械生成全新的 ATTEMPT-B004-000003 config 并另行执行。
HANDOFF-INFOADMIN-LAOYANCAI-AGRICULTURE-BATCH004-SHARED-PUBLISHER-EVENT-CHAIN-GOVERNANCE-SUCCESSOR-20260821-001AUDIT-DEV-ANA-SHARED-CONTENT-PUBLISHER-V001-HOLD3-FOCUSED-REREVIEW-001 / HOLD/1HANDOFF-DEV-LAOYAN-LAOSHEN-AGRICULTURE-BATCH004-SHARED-PUBLISHER-EVENT-CHAIN-CONSOLIDATED-IMPLEMENTATION-REVIEW-20260821-001BLOCK-SHARED-PUBLISHER-IMPL-03 剩余的事件链真值缺口;不重开已关闭的 Markdown consumer、prewrite root/path/lock/snapshot、manifest/link/evidence/postcommit 或 Repair008 长路径范围。_validate_attempt_event_chain,按 ledger 原始追加后缀顺序逐行绑定全部 17 列,而非按 attempt 过滤后遗漏被篡改行。PREPARED/VERIFIED -> prior_snapshot.json,COMMITTING/COMMITTED -> terminal.json,ROLLING_BACK/ROLLED_BACK -> 当前 rollback/recovery terminal。event_time 只接受 canonical UTC microseconds+Z,并严格递增;写入端在时钟分辨率不足时单调推进 1 微秒。SHARED_CONTENT_PUBLISHER_ATTEMPT_EVENT_CHAIN_V1 对 columns + 逐行17列 的 canonical JSON 计算 SHA-256。终态 V3 持久化 digest、row count、起止 UTC 和逐状态 process identity。16/16 PASS;其中 17 个 ledger 字段逐列篡改=17/17 全部失败关闭,IDEMPOTENT_COMMITTED=0。4/4 失败关闭;四个成功状态的 UTC 逐状态篡改=4/4 失败关闭。| 对象 | bytes | SHA-256 |
|---|---|---|
dev/ana-dev/shared_content_publisher/publisher.py |
81140 | 4027788031136F94D6D2E3B8FEE53D6A65E0C362BEF8CCC713C175FA615CCF2C |
dev/ana-dev/shared_content_publisher/batch_config.schema.json |
10430 | 9B027ED5AE2BF2B9FC50D491FA4AA3FEFA787DE80C3A6F0236555D3BC3266198 |
dev/ana-dev/shared_content_publisher/README.md |
2252 | F101EB043C566A0B76757543D4F96FE16E7E67834EDCFA636827223C6C3A32BF |
dev/ana-dev/shared_content_publisher/__init__.py |
168 | FBA9552CBA028AD9B9212C7EFB701FE4E6CB5E31EBAA68AE23CF9E3156C4E7AC |
dev/ana-dev/shared_content_publisher/__main__.py |
86 | DC3EA832B1DE49CBBE2EF61241524DB0751C9AB48FA2D42A49D58E01DB80B773 |
dev/ana-dev/test/test_shared_content_publisher_v1.py |
33766 | AC196135306F8AC67AF25CBF58D5D7E49AF2BE13269FE627F470E30D71842329 |
dev-doc/ana-doc/开发方案/SHARED-CONTENT-PUBLISHER-PRODUCTION-GUARD-V001.json |
2212 | DEFB9E6987A73AFD918C7F4A40C5FD08920B3478788F7A276BF9DE20F46F17A0 |
配置 schema 保持 V2 且无字段漂移;终态 schema 升级为 SHARED_CONTENT_PUBLISHER_TERMINAL_V3。管理员机械生成配方见 SHARED-CONTENT-PUBLISHER-ATTEMPT-B004-000003-CONFIG-RECIPE-V001.md;该文档不是生产 config。
production guard 最终仍要求 7 个冻结文件 exact、active lock/ATTEMPT-000002/ATTEMPT-000003 三路径 absent;实现和测试期间 production publisher invocation/mutation/config=0/0/0,canonical current 保持 RECOVERY_REQUIRED/BLOCKED/30。
HANDOFF-INFOADMIN-LAOYANCAI-AGRICULTURE-BATCH004-SHARED-PUBLISHER-DIRECT-STABLE-PATH-SET-GOVERNANCE-SUCCESSOR-20260821-001。HANDOFF-DEV-LAOYAN-LAOSHEN-AGRICULTURE-BATCH004-SHARED-PUBLISHER-DIRECT-STABLE-PATH-SET-CONSOLIDATED-IMPLEMENTATION-REVIEW-20260821-001。SHARED_CONTENT_PUBLISHER_CONFIG_V3 / DIRECT_STABLE_PATH_SET_V1,与既有 V2 release-directory strategy 并列;publisher.run_config 仅按 schema+strategy 严格分派,V2 的 16 项回归不变。formal_relative_path、current manifest、release-set、正文、证据或结论;新策略把 10 行 formal path 直接解释为稳定目的地。ana-data/cases/<industry>/核心文档/、ana-data/cases/<industry>/manifest/ 或 ana-data/result/<industry>/;cases 当前成果索引.md 是唯一 activation 例外且必须恰好一行。路径逃逸、duplicate/overlap/alias、reparse ancestor/target、卷漂移、受保护路径重叠与未声明目标均在首写前失败关闭。CASES-CURRENT-INDEX,从不撤下既有 current。RECOVERY_REQUIRED。postcommit/replay/recovery 共用 accepted 17-column event-chain validator,并拒绝 destination extra 或终态/config/chain 漂移。accepted_audit_id=<identity.canonical_audit_id value>;正式 B004 预像独立复算为 357 bytes/f39db200057f733df3d34ebc0387000d6af4a29d2a3e3ed787c20268b5fcace7。review_handoff_id 仍是独立 HANDOFF 域且不进入 release hash。12/12 PASS / 35.917s;legacy V2 regression=16/16 PASS / 52.622s;compileall=PASS。10/10 rows:core、manifest、result 分布于既有稳定根,5 present + 5 absent,单次提交、activation position 10 与 exact replay 全部通过。17/17:通用 mixed fixture 7 个边界 + exact accepted topology 10 个边界;含 activation 前后,全部恢复 exact prior。COMMITTED/IDEMPOTENT_COMMITTED。PASS;mbx validate --project project-info --governance=OK/projects1/warnings0。| 对象 | bytes | SHA-256 |
|---|---|---|
dev/ana-dev/shared_content_publisher/publisher.py |
81967 | 8FD893395F37541BD5342AF8775009044AC69C34DD50EA66F3020BA836DF8899 |
dev/ana-dev/shared_content_publisher/direct_stable_path.py |
64394 | D6C6B25026F4F7352F002B79E5E6D575A9B2BDF5BF75388FADF375D702EBCED5 |
dev/ana-dev/shared_content_publisher/batch_config.direct_stable_path_set.schema.json |
11484 | 36453344CEC226DCD2BF2A196CC8F053E01FF40E416B7CB25F9FE2FF1F86EFD0 |
dev/ana-dev/shared_content_publisher/README.md |
3808 | EB171255EC4E28967B5F42305EE4047F93477FC9467B20DD0072376704494F81 |
dev/ana-dev/test/test_shared_content_publisher_direct_stable_path_v1.py |
41861 | BEA0258F5B14203B8FF3F97DABAFCB88C7D8E9C78830F9E76969F6DAE7BB008B |
dev-doc/ana-doc/开发方案/SHARED-CONTENT-PUBLISHER-ATTEMPT-B004-000003-DIRECT-STABLE-PATH-CONFIG-RECIPE-V002.md |
9911 | FC0B2EE3C0847F4A19ADA3778B4366C7497E731E8D37FC207F0BAA5A87C029B3 |
dev-doc/ana-doc/开发方案/SHARED-CONTENT-PUBLISHER-DIRECT-STABLE-PATH-PRODUCTION-GUARD-V001.json |
2953 | E42D377FF31AF146B248612DEFD24C4E9BDA1711D0200FBBF614323B0E6B7306 |
dev-doc/ana-doc/开发方案/SHARED-CONTENT-PUBLISHER-DIRECT-STABLE-PATH-TEST-EVIDENCE-V001.json |
2755 | 7624D9CAB83571D74A712C3877CA3CB9B8E5274BD89F8B5E5D8D92E699964AB6 |
最终 readback:正式 7 个冻结文件 7/7 exact;accepted candidate manifests 2/2 exact;active lock 与 ATTEMPT-B004-000003 2/2 absent;production config/publisher invocation/formal mutation=0/0/0;canonical current 保持 RECOVERY_REQUIRED/BLOCKED/30。本交付不创建真实 config、不执行 publisher 或 promotion。只有固定 reviewer 返回正式 PASS/0 后,project.admin 才可按 V002 配方机械生成唯一真实 config 并另行调用。
HANDOFF-INFOADMIN-LAOYANCAI-AGRICULTURE-BATCH004-DIRECT-STABLE-PATH-SET-HOLD2-CONSOLIDATED-CLOSURE-20260821-001。HANDOFF-DEV-LAOYAN-LAOSHEN-AGRICULTURE-BATCH004-DIRECT-STABLE-PATH-SET-HOLD2-CONSOLIDATED-CLOSURE-FOCUSED-REREVIEW-20260821-001。DIRECT-01 混合 current 可见性与 DIRECT-02 前目的地失败/同 config 重跑两个 blocker;保留 V3 strategy、既有 candidate/formal path/release-set、事件链与 Repair008 合同。read_direct_current_snapshot() 和 CLI --read-direct-current。读前要求 publisher lock absent,并冻结 cases current index/current manifest 两个身份;在同一观察窗口内读取并校验全部 10 个 stable target;读后再次要求 lock absent 且双身份不变。RETRY_PUBLISH_IN_PROGRESS;身份、exact-set 或 receipt 闭环漂移只返回 STOP_NOT_CURRENT。失败结果不携带 payload,也不设置 current announced/cache 标记。PREPARED、VERIFIED、COMMITTING 后首个目的地前,以及 10 个提交边界均进入同一恢复验证器。IDEMPOTENT_ROLLED_BACK,不再因已有 receipt 返回 TERMINAL_REPEAT_BLOCKED。16/16 PASS;legacy V2=16/16 PASS;compileall=PASS。10/10 提交边界只见 retry,mixed-current return=0;闭合后 full snapshot=10/10 members。14/14(snapshot、PREPARED、VERIFIED、首写前、10 个 commit boundaries);same-config recovery=14/14,strict idempotent rollback=14/14。14/14 fail closed;原 root/path/reparse/volume/manifest/event-chain/Repair008 回归无退化。7/7 formal exact + 2/2 candidate exact + 2/2 absent;config/invocation/formal mutation=0/0/0;canonical current 仍为 RECOVERY_REQUIRED/BLOCKED/30。SHARED-CONTENT-PUBLISHER-DIRECT-STABLE-PATH-HOLD2-CLOSURE-TEST-EVIDENCE-V002.json。本节不创建真实 config、ATTEMPT-B004-000003 或 production invocation。| 对象 | bytes | SHA-256 |
|---|---|---|
dev/ana-dev/shared_content_publisher/publisher.py |
82381 | 3E77BAB80424BC97787F43BD78F61A53DE9EAB1435D730AC4D3F9FCB866F219D |
dev/ana-dev/shared_content_publisher/direct_stable_path.py |
76097 | 170159962816EA012FA3913240A48B9ED759A0B7E5926DEE1D334434A08DFDF1 |
dev/ana-dev/shared_content_publisher/authoritative_reader.py |
7021 | 98288BABB7F91832156BB8B2805D574E275C7C88A196398878D619D1BB7A9620 |
dev/ana-dev/shared_content_publisher/batch_config.direct_stable_path_set.schema.json |
11696 | 6AD035F81F2F38FB2E818E72C48F51185842A030EEA841B5754A2002D98CBD80 |
dev/ana-dev/shared_content_publisher/README.md |
4741 | 1DED1BDA09A2FC55E0E9816AC48DBF8FAB4F65DF354CB9A908DA3B912E0D06E0 |
dev/ana-dev/shared_content_publisher/__init__.py |
307 | A14DF6A6AEFAF65FDEC164888C513E5410C4550652F8104372089FEDAA81C39C |
dev/ana-dev/shared_content_publisher/__main__.py |
86 | DC3EA832B1DE49CBBE2EF61241524DB0751C9AB48FA2D42A49D58E01DB80B773 |
dev/ana-dev/test/test_shared_content_publisher_direct_stable_path_v1.py |
51117 | 8794F7AC4D048429A75FF4C8D144F2970E6D40EEF8DAE9C1F7F7412C6CDD9F8D |
dev/ana-dev/test/test_shared_content_publisher_v1.py |
33766 | AC196135306F8AC67AF25CBF58D5D7E49AF2BE13269FE627F470E30D71842329 |
ana-doc/案例分析规范.md |
78369 | 877A91F9E1B372E9058CAA3D67A1E9CD548BC3519F285061BF1C1D2A1BEEB78B |
ana-doc/案例存储体系.md |
40808 | 9A29ACB2867925D4938C6923E7EDEF3441B09349B06236B5976448B414651D1C |
dev-doc/ana-doc/开发方案/SHARED-CONTENT-PUBLISHER-DIRECT-STABLE-PATH-HOLD2-CLOSURE-TEST-EVIDENCE-V002.json |
1085 | C5FFC2C2625CBC8FDB92AE104584E73D86DA8B9F44B04BA91023F49E6B98FF12 |
HANDOFF-INFOADMIN-LAOYANCAI-AGRICULTURE-BATCH004-PREANCHOR-RECOVERY-SINGLE-BLOCKER-SUCCESSOR-20260821-001;只关闭 BLOCK-SHARED-PUBLISHER-DIRECT-02_PREDESTINATION_FAILURE_AND_RERUN_NOT_CLOSED,不重开 cooperative reader、10/10 observer、已完成 14/14 recovery/idempotence/tamper、17 列事件链或 Repair008。attempt_receipt_root 不再作为逐文件构造目录。完整 prior snapshot、commit plan、确定性 attempt contract 与 canonical recovery-anchor manifest 先写入由 task/case/batch/run/config 身份唯一推导的同卷私有 preparation root。fsync、close、完整回读后,再以 no-overwrite 原子改名成为 private member;全部成员和 manifest 复验成功后,紧邻原子发布再次重校验完整 locked preimage,整目录再以一次 no-overwrite 原子 rename 发布为 official recovery anchor。RECOVERY_REQUIRED,不盲删。NONE。9,每成员覆盖写前、写中、flush/close 后、回读后、member rename 后五个边界;anchor publish 另覆盖 rename 前、系统调用中与成功后三个边界,合计每种 fault=48。DIRECT_INTERRUPT_PREANCHOR 与 DIRECT_IO_ERROR_PREANCHOR 两类故障共 96/96:原子发布前均保持 official anchor absent、formal mutation0,并由同配置重启确定性重建/提交;原子发布后则消费 exact official anchor 并精确 rollback/幂等。3/3 RECOVERY_REQUIRED,formal destination 保持 prior、lock absent。18/18 PASS、legacy V2=16/16 PASS,总计=34/34 PASS / 364.337s;compileall=PASS。旧 observer、event-chain、manifest/postcommit、root/path/reparse/volume、rollback 与 Repair008 无回退。0/0/0;canonical current=RECOVERY_REQUIRED/BLOCKED/30。| 对象 | bytes | SHA-256 |
|---|---|---|
dev/ana-dev/shared_content_publisher/publisher.py |
82381 | 3E77BAB80424BC97787F43BD78F61A53DE9EAB1435D730AC4D3F9FCB866F219D |
dev/ana-dev/shared_content_publisher/direct_stable_path.py |
91610 | 173760DDE8C5ABF8623014B5942A03293FAAD5F11CA8E00A7D2BA560BDEC0F14 |
dev/ana-dev/shared_content_publisher/authoritative_reader.py |
7021 | 98288BABB7F91832156BB8B2805D574E275C7C88A196398878D619D1BB7A9620 |
dev/ana-dev/shared_content_publisher/batch_config.direct_stable_path_set.schema.json |
11755 | 4BDAC4B5EE4D4777FC47DC9A386899B4AD6F73D1C52185AEB4CDBA48EF6FD739 |
dev/ana-dev/shared_content_publisher/README.md |
5290 | 06C8C2FD676A1C979F47ABC7D686CFFDACCDBFFC8AB9BC1C84DF4317B55622AC |
dev/ana-dev/test/test_shared_content_publisher_direct_stable_path_v1.py |
56293 | 45B1F0CF76C169169900DC02167F95F653F7E8B0DF9276D72B955F7C6FD015C0 |
dev/ana-dev/test/test_shared_content_publisher_v1.py |
33766 | AC196135306F8AC67AF25CBF58D5D7E49AF2BE13269FE627F470E30D71842329 |
dev-doc/ana-doc/开发方案/SHARED-CONTENT-PUBLISHER-PREANCHOR-RECOVERY-TEST-EVIDENCE-V003.json |
902 | 48629E9817831EC7E4D86BC812797DB30DAEB7492023B2C3262FBAFDFE733AAA |
本实现未创建 production config、未调用 production publisher、未创建 ATTEMPT-B004-000003,也未修改农业 candidate、正文、结论、正式 current 或 ledger。只有固定 focused reviewer 的 PASS/0 才允许 project.admin 进入后续机械生产步骤。