Repository navigation
fix: integrate append-only reporting journal with preserved evidence gates - #193
Conversation
Continue #164 comment5711425707, correctness scope preregistered5711547555. Replace quadratic full-history checkpoints with one sequence-numbered immutable JSONL row per completed call; materialize legacy calls.json once at explicit normal/error lifecycle exits. Preserve stdout/stderr, original failures and timeout bytes; reject torn/duplicate/missing sequences, mutation, short writes and failed materialization without healing inputs. No fsync/power-loss/multi-writer transaction claim. Integrate all six Recorder creation sites across five scripts using explicit contexts/finalize before success markers. AST unwrapping verifies original fixtures, sample ordering, statistics, thresholds and historical-helper guards unchanged. Old fixed-binary diagnostics continue to reject changed helper bytes, not silently remeasure old evidence. Seven files +1211/-518, largely scope indentation; all product files and VERSION5.5.0 unchanged. Local tree f6f80e3 matches remote. Local87 tests passed:40 new recorder tests and47 retained tests, including actual1446-row byte replay without MQB, real Python exit17/timeout, and injected IO failures. Initial timeout test wrongly assumed startup had printed; preserved local first failure and changed assertion to actual available TimeoutExpired bytes while independent nonempty partial-output test remains. No Windows acceptance claimed yet. Unique focused branch workflow permits first run/attempt only, Linux and Windows Python correctness once each, no MQB/MSVC/ETW or old584/76 matrices. No PR now to avoid unrequested old v5.4 cumulative trigger; full native/ABBA acceptance is not waived. No main merge, release authorization or old private/#630/#641 risk clearance. 6.0 roadmap unchanged.
Preserve first run35203271961: Linux87/87, Windows86/87 with one wrong test size expectation. Recorder correctly rejected the short materialization write and withheld calls.json; first four text characters include LF, yielding five UTF8 bytes on Windows. Compare exact expected prefix after platform newline translation instead of equating characters and bytes. Do not remove the short-write injection or rejection check. Bounded correction verification preregistered #164 comment5711861030 before execution: only new head run_number2/attempt1, exact parent66af7ec74, Linux+Windows Python correctness once each. Fetch depth3 supports unchanged seven-path main diff. This is not a same-head rerun; first artifact10487784676 and Linux artifact10487784662 remain preserved. No third run authorization. Exactly two files +5/-4. Recorder, callers, journal format, old statistics and all C++ bytes unchanged. Local87 tests pass; local/remote tree49f9199f match. No MQB/MSVC/ETW or old matrix execution, product speedup, PR, main merge, or release clearance.
Preregistered #164 comment5711921777. First source66af7ec74 also had an additional push record number2 which the original gate skipped; correction d4b8c4b became number3 and was skipped as well. Both raw job records have empty steps and no runner, so the registered corrected test execution remains unspent. Preserve first Windows failure and both skip records. Only workflow changes: next number4/attempt1, exact parentd4b8c4bf and depth4 for unchanged seven-file diff against main. No Recorder/test/fixture/statistics bytes changed, no rerun API or extra MQB/MSVC/ETW. This is the last allocated verification in this iteration; failure or another allocation mismatch stops. No third actual correctness execution authorized. Local tree5233c6f6/blobc73d5113 checked; main, VERSION5.5.0 and all historical performance HOLDs unchanged.
Continue #164 comment5712016599; integration scope and unchanged acceptance gates preregistered5724759276. Keep all Recorder implementation, callers, tests and product bytes from6eb84d71 unchanged. This commit changes seven CI/documentation files only; local exact450-file tree c71c722 matches GitHub. Historical v5.4 cumulative job is explicit workflow_dispatch only. Existing frozen-base/attempt conditions for old fixed-binary warm/cold studies also guard runner allocation; their original preflights remain. Keep Native Debug/Release, selfhost/package/installer, Documentation, Reporting/Archive integration and independent19x4 ABBA. Promote Python journal correctness from a spent one-off branch entry to relevant PR/main tests with exact source provenance. Independent ABBA measurement/build/instrumentation/statistics steps and original AND threshold remain unchanged; archive actual A/B/seed EXEs, source archives and before/after hashes, including partial failures. Add bilingual contributor lifecycle/legacy-study scope notes. Prior87 local tests and1446-row replay rechecked; YAML/embedded-Python and unchanged-step structural checks passed. An initial local validator included non-workflow YAML and rejected with KeyError; corrected only its scope, not source or tests. No Windows acceptance claimed here. One existing repair branch and one forthcoming Draft PR; no repeated#188 candidate, legacy matrix rerun, default cancellation/write-lock change, VERSION bump or release authorization. Original private/#630/#641 and historical failures remain separate HOLDs.
Iviesever
left a comment
There was a problem hiding this comment.
2026-09-18 实质验收:ACCEPT 记录器与CI集成;不是5.6.0发布许可
接续#164 comment5724759276的测量前限定。本次使用维护者连接提交COMMENT,记录源码与原始证据审查,不冒充另一位人工reviewer的APPROVE。首次全部适用工作流已结束后作决定;没有在测量中更换head/标题、rerun/cancel或删样本。
精确接受对象
- base/main:
55f57a84ad938da10d0e28b4578cd1aef6d7f903,tree5f48fe99cd252148f4d6ff46f15878d7a656fb1b;写审查前再次读回未移动。 - head:
440f7bdb1b554f66ec5857a4078c7b7448c283b8,treec71c7223f6aa78825a430a220a38606b0d70f062。 - 原native test-merge:
835f23919858440a018c438e5e2ca17589ef773b,两个父提交为上述base/head,tree相同。该SHA不是实际main合并。 - 450文件完整树、13个差异路径;原Recorder五脚本和新增测试相对已接受的聚焦正确性head6eb84d71保持字节不变。产品C++、79项native清单、构建/自举脚本、独立benchmark与统计源码、VERSION5.5.0不改。源码归档重建核验,无header-only或部分树替代。
Recorder追加完整带序号JSONL并在正常/异常生命周期生成兼容calls.json;原始诊断、首次失败、短写拒绝和未完成标记不能被优化抹掉。运行中journal有效前缀不代表任务完成;不宣称fsync、多写者或强制终止后完整收尾。双语开发说明明确此边界。
CI修改是限定实际入口,不削减当前native/自举/包/ABBA:固定v5.4旧累计只保留手动入口,原fixed-binary warm/cold冻结base在runner分配前判断。三条历史workflow的四个实际job均skipped、steps=[]、runner_id=null;不当作累计/ETW通过。新journal持续PR门槛执行实际源身份和旧记录纯数据回放。
当前head实际Windows、Python与调用者集成
Native Debug #767 / run35304193932、Native Release #641 / run35304193847:Debug79/79、Release79/79实际程序均通过。 已完整读取每配置四个paired job的原日志,八子分片分别8/9/9/9/10/12/11/11项,合计79;原C/C++、PCH、Header Units、Modules、DLL/static、参数、CLI、freshness、进程等清单不删减。44项prewrite、84项target admission及domain/mapping等原边界检查实际执行,仍不授权CLI取消/写租约。负向编译C2338/exit4、链接LNK2019/LNK1120/exit5和前台exit37是原测试要求,保留而非伪装零诊断。准备job完整步骤成功;本次没有声称把所有prepare输出也逐行重读。
Self-host/package job105474952752完整日志已读:受验证Stage0→Stage1→干净Stage2,两代各83TU实际构建。Stage1 SHA256 0acf1db40b7551cd2b8bb139dfbff94c088b5117efcbe614f2d1bc0f70b6baf3,Stage2 5591938758b2e1816d3a7c77661c74272ff5abb6228bc54fa1f6838dd4aa1d11;两者不同,不称字节可复现。实际七文件runtime-only包、checksum、--help嵌入版本、install/reinstall/uninstall/PATH所有权通过。下载后再次核验内层ZIP 29044c6e958a922db00284630e710e8979072344b9c36d14fa397b2cc8871b11,包内EXE=上述Stage1;publish-release实际skipped,没有发布或修改v5.5.0历史资产。
Journal #5/run35304193941:Windows与Linux各87/87无skip,40新Recorder+47原测试,三个helper自测通过。下载后的source.zip/results/完整测试stdout-stderr及旧1446行回放源身份均核验。该回放不启动旧EXE;不能把Python测试数与Windows79程序混计。
Reporting #15/run35304193840:原654调用、312对/26场景的journal与最终Windows JSON逐条一致,完整统计复算。558捕获调用的1116份stdout/stderr字节/哈希对应;96项inherited句柄调用的192个空文件只是占位,不冒充其控制台转录。预期compiler-failure exit4与repair exit0分别保留,输出缺失修复及single-TU失效检查保持。Reporting不利值仍保存在全部原样本中,不以调用者成功当零开销。
Archive #3/run35304193939:454调用、204对/10场景、908份原输出及journal/最终JSON相同,五类empty/truncated/trailing/oversized/missing缓存修复与后续warm对照通过,四类原warning保留。上述两个调用者工作流本次以完整原始ZIP和步骤状态核对,没有冒称其全Actions job日志也均已归档;其各自A/B元数据不拿独立ABBA EXE冒认。
Documentation #205/run35304193915完整日志显示19组维护中的双语文档检查通过。原D9025/C4100/C4996警告、负向诊断、工具辅助进程vctip结束记录均保留;不据runner收尾推导新的写租约安全结论。
独立ABBA #642:原门槛通过,所有不利样本保留
run35304193887 / job105472904858,attempt1,完整job日志与原ZIP均检查。相同固定seed实际clean构建base/head Release各83TU,原instrumentation通过,原observer-OFF 19×4、AB/BA/AB/BA执行;测量与统计步骤未改。新增provenance步骤在instrumentation前封存本次实际输入,测量后校验同一EXE字节,不能与旧#630/#641身份互换。
原76对完整,72组instrumented完整counters/counter_breakdown/compile-link-archive hit/miss向量相同;4组external的内部字段仍null/-1,不填零。外部no-op原四差:+0.8142、+0.8301、+0.1555、+0.2575ms。
未舍入配对中位 +0.53585ms / +4.516994806581154%,MAD0.2863ms,最大+0.8301ms;没有同时超过>1ms且>10%的原门槛。 四对都为正,仍全部保留;不声称本PR提速或零开销。全19场景配对中位差/最大观测差如下(显示保留4位,判定只用原未舍入数值):
| 场景 | 配对中位ms | 最大差ms |
|---|---|---|
| cold | +71.4180 | +164.1350 |
| no-op | +0.0655 | +0.5670 |
| single-tu | +6.5725 | +24.8840 |
| public-header | +4.9230 | +26.9890 |
| build-run | −2.9380 | +0.8540 |
| link-only | +1.7035 | +15.2070 |
| target-scale-cold | −120.4225 | +19.4110 |
| target-scale-no-op | +0.7580 | +17.6620 |
| target-scale-no-op-auto | −0.3730 | −0.1010 |
| target-scale-no-op-j1 | −0.6845 | +3.7520 |
| target-scale-common-header-no-op | +1.1250 | +3.0570 |
| target-scale-single-tu | +8.2555 | +38.8180 |
| discovery-cold | −6.6735 | +58.6360 |
| discovery-no-op | +0.1380 | +2.4490 |
| discovery-header | −4.6825 | +1.9930 |
| modules-cold | −91.8160 | +118.1490 |
| modules-no-op | −0.0930 | +0.1490 |
| timings-enabled-no-op | +0.1080 | +1.7120 |
| timings-disabled-no-op | +0.53585 | +0.8301 |
全部原正负对保留,无AA/观察器扣减、不删除所谓噪声、不重跑到绿。四对nearest-rank P95只是最大观测,不外推总体尾部。显示级PowerShell/Python中点舍入差异单独记录,原值与门槛未改。
本次实际AMD64程序随原ZIP保留:baseline SHA256 c41f2cbfc806ba5536c2dcd95aed73bc5736df4519dc46aa4fed41f0bed08b30;candidate b9025b9f86022a09c0040a05d14232e2afd73089a173a5f7e714fe262545e677;seed f58d78066a2ec6c4d174e39fcb9c748776cdc4a6137a0d5a592a216b3eba6dd0。两份源码ZIP重建为448文件5f48树和450文件c71树,前后EXE哈希匹配。
原产物身份与审计局限
本次下载的原ZIP均CRC/逐成员SHA核验,独立新输出目录再次复算通过:
- journal Linux10531436605:
c8927bf07635062abfaf4ef41ec95f7cf7119403d2e2f036cbce3ebce9a0c5cf - journal Windows10530997372:
1aed428bc0748de9e7a90b8769c5e079e5225c57d06436d1bf5600afea8028a1 - Reporting10531407449:
9021503ea8fedeee208f8475d19acf701c95b0992c7baaf016f2ad953b8566f3 - Archive10530887001:
8ea45f5825bb9b0eaa95d3e292a84eafbb8f3dd3f38d6e3574860a422c15155f - ABBA10530572461:
e12ea65650c1c577eb80b4a6a768069c464a624ba8d4b01506706f469bd8646f - runtime package10530959522:
42439a5293321f2821ef45af76aa85948d08d02735d0f4450f9c5b45a39b8740
便携包保留实际原ZIP、源码/补丁、纯离线校验和日志核对台账,不冒称包含全部Actions日志ZIP。首次本地CI检查器误读非workflow YAML、Reporting审计器猜错single-TU标签均作为检查器自身失败保留;依原文件/原标签修正检查器,没有改原测量或放宽验收。前次修复的Windows短写测试首错亦不由本次绿灯抹掉。
决定与持续HOLD
接受上述exact head作为Recorder及CI集成合并。 所有首次适用结果已保存;在转Ready前可将perf:前缀改为fix:,仅为避免ready/edited事件重复启动已完成的ABBA,不更改head、原run或接受门槛。使用普通merge/expected-head,不绕过仓库保护。
不授权5.6.0发布,不清零原private+3.4128ms、#630/#641、#172或历史冷尾。 原#188仍是已冻结的旧harness/候选/样本,不能用本PR新源码或程序改名替换。新Recorder集成通过只说明未来可使用改进后的采集器,完整候选发布性能仍须按明确新身份、预算及旧风险处置单独决定。原6.0路线、默认取消/写锁、freshness、历史tag/资产和VERSION5.5.0均保持。
…hout replaying blocked studies Preserve original #188 head 8e9c288 and main 43cadec as parents. Resolve the cumulative entry/Recorder conflict against exact current tree c71c722. New tree a4cf2d0; only five paths differ from current main; all cpp product/test/manifest, native build/self-host and original benchmark scripts remain unchanged. Preregistered in #164 comment5725143214: no new cumulative samples, no old 584-pair replay execution and no ETW. Restore #188 source identities, pre-build archives and first-failure retention with #193 journal lifecycle. Current frozen candidate is 43cadec; old candidate 1c565ca and old harness 8e9c288 remain explicitly historical. Current/historical cpp tree equality does not prove binary or timing equivalence. PR entry runs actual Windows/Linux three-checkout preflight and contracts, with explicit preflight-only completion, no binaries and inherited HOLDs. Manual measurement hits zero-budget refusal before building. Retain full 584-pair/1446-call loop and original bootstrap/thresholds for a separately reviewed experiment. Old private129, #630/#641, C1041 and cold tails remain HOLD; no later green clears them. Local 109 tests passed including original 1446-row data replay and 22 new entry tests. All old 584-pair summaries recompute identically; five measurement helper ASTs and 11 original measurement-loop statements unchanged. Preserve first local platform-probe-count test failure; correction filters ancestry calls only. Bytecode contamination prevented rather than ignoring unknown source files. Remote tree exactly matches local. Keep original #188 Draft/HOLD. Current-head Native Debug/Release, self-host/package/installer and independent 19x4 ABBA remain required. No reruns/cancel, VERSION5.5.0 unchanged; no 5.6 publication or 6.0 roadmap rewrite.
Single topic: integrate the existing reporting recorder repair
Continue #164 comment5712016599; integration scope and acceptance were preregistered in #164 comment5724759276. This is the existing repair branch, not a replacement #188 cumulative candidate. The
perf:title requests the original independent ABBA gate; it is not a product speedup claim.55f57a84ad938da10d0e28b4578cd1aef6d7f903, tree5f48fe99cd252148f4d6ff46f15878d7a656fb1b.440f7bdb1b554f66ec5857a4078c7b7448c283b8, treec71c7223f6aa78825a430a220a38606b0d70f062.6eb84d71...is retained as the immediate parent of the integration commit. No force push or rewritten history.Recorder behavior already implemented
Recorder.checkpoint()appends one complete call with a consecutive sequence tocalls.jsonl. Explicit normal/error finalization validates the journal and emits the oldcalls.jsonschema/field order/indent/platform newline. All six creation sites in five scripts use lifecycle management and finalize before success markers.Preserve both output streams, nonzero exits, available timeout bytes, original and secondary errors. Reject short writes, torn/duplicate/missing/out-of-order sequences, nonfinite JSON, mutation after append and failed materialization. No automatic truncation, healing or retry. Incremental readers use the journal; a valid prefix is not completion. This is not a multi-writer transaction, fsync/power-loss guarantee or constant-memory implementation.
The five implementation/caller scripts and 40 new tests are byte-identical to accepted focused-correctness head
6eb84d71.... Old fixtures, call ordering, statistical formulas, thresholds and fixed-helper identity checks remain.CI scope: do not accidentally run unrelated historical studies
Prior evidence and current local checks — not this head's native acceptance
Prior focused Windows/Linux correctness each passed87/87, including40 new tests and47 retained tests, with original1446 rows used as data only. First Windows short-write-test newline expectation failure and two no-run workflow records remain in #164; they were not erased by the successful corrected head.
This integration rechecked the delivered source/artifacts,1446-row replay and87 local Python tests. Exact450-file tree reconstruction, YAML/embedded Python parse and original measurement-step structural equality passed. The local CI checker initially included non-workflow YAML and rejected with KeyError; fixing only its scope preserved the source. No new local Windows execution is claimed.
Mandatory acceptance on this exact head
Draft pending this head's substantive integration review. No authorization to publish5.6.0, change default cancellation/write-locks or rewrite#164's6.0 roadmap. Do not change the title/push another head while first measurements are running; retain all first results.