Repository navigation
Conversation
💳 Contributor Settlement Coordinates
|
Dong1017
left a comment
There was a problem hiding this comment.
PR #328 增量静态评审(当前 head 7e3b2e4c):有 4 项需区分为决策边界与实现风险,详见 inline。
- 决策边界:#273 的 owner 决策(2026-10-31)将 R6 明确保留讨论,尚未接受 512 KiB / 2 MiB 数字阈值。此次 PR 的治理声明不能直接代替 owner 接受。
- 实现风险:检查器在 base diff 读取失败时可能静默放行;按修改文件完整尺寸累计却称“net addition”;外置资产 URL 仅校验 HTTPS 前缀,不足以证明真实 GitHub Release 资产。
- 本轮只读检查真实 4 文件 diff、当前 main、#273 原决策及 7 个新增单测的代码;没有运行任何测试或下载/访问资产。CI/单测声明与实际生效的策略、外部可访问性分开判断。本 COMMENT 仅供原 owner/作者处理,不是新门禁、合入授权或目标验收。
评审版本及范围
Head: 7e3b2e4ca3c0a518d1e22c005e96aa85c1e1903d; base: ebdbf5af00c94f228b504a3f4d813aad0b63840c. Files: tools/check_evidence_budget.py, tests/test_evidence_budget.py, .github/workflows/ci-ready.yml, docs/agent-collaboration.md. Relevant existing decision: #273 R6 (keep open for discussion). No model, hardware, paid or software execution.
| 1. **Scope:** identify requirements, exclusions, owner and relevant dependencies. The accountable agent tracks Issue-level criteria and delegates bounded work; PR readiness and Issue completion are reported separately. Keep each PR a coherent delivery slice; small follow-ups may reuse an Issue. | ||
| 2. **Isolation:** concurrent writers use separate working directories/indexes and private scratch files. Branch names alone are insufficient. Inspect staged/committed content and coordinate shared IDs, schemas and interfaces. | ||
| 3. **Evidence:** link checks to actual checked content and relevant environment/test definitions. Distinguish passed, failed, cancelled, skipped, timed-out and not-run. H/B/T—reviewed head, assessed base, tested content—may come from existing records, not mandatory worksheets. | ||
| 3. **Evidence:** link checks to actual checked content and relevant environment/test definitions. Distinguish passed, failed, cancelled, skipped, timed-out and not-run. H/B/T—reviewed head, assessed base, tested content—may come from existing records, not mandatory worksheets. Tracked evidence files are bounded by a 512 KiB per-file budget and a 2.0 MiB per-PR net addition budget. Larger raw artifacts (traces, weights) must be hosted as GitHub Release assets and registered in `tools/evidence_inventory.json` with an accessible HTTPS URL, SHA-256 digest, byte count, and retention owner. The ready lane's `evidence-budget` job reports violations. |
There was a problem hiding this comment.
[P2|待决规则不宜先写成现行治理约束] #273 的原 owner 决策明确 R6 为 “Keep open for discussion”,特别保留 byte budgets 与 #113/#51 的归档策略待定;目前的新交付/认领评论来自 PR 作者,不是 owner 接受数字阈值的记录。但这里已将 512 KiB / 2 MiB 和必须外置 Release 资产写成已生效工作规则,PR 描述还称“Accepted scope”。建议先表述为待审 R6 提案并请原 owner 明确阈值、适用范围及报告性/约束性后再确定规则文本;不以本评审意见替 owner 做决策。
| check=True, | ||
| ) | ||
| rel_paths = [p.strip() for p in res.stdout.splitlines() if p.strip()] | ||
| except (subprocess.SubprocessError, FileNotFoundError): |
There was a problem hiding this comment.
[P2|显式 base 比对失败时静默放行] Ready job 调用 --base "$BASE_SHA";若 git diff <base>...HEAD 因基准不可用/仓库错误失败,这里退化为 git status --porcelain。CI 的干净 checkout 通常为空,于是超预算的 PR 可被判断为 0 字节并以 0 退出,而不是报告“无法核验”。建议 --base 模式对 diff 错误明确返回非成功/INCONCLUSIVE 的诊断,仅无 --base 的本地模式才检查工作树;增加无效 base 的子进程负例测试。这是静态故障路径推断,未实际触发 CI。
| continue | ||
|
|
||
| if norm_path.startswith("evidence/"): | ||
| total_evidence_bytes += size |
There was a problem hiding this comment.
[P2|“net addition”与计算口径不符] 上游 --diff-filter=ACM 选出所有修改文件,再把每个文件的最终总字节数加进 total_evidence_bytes,并标为 evidence net addition。例如修改一个既有 500 KiB 证据文件的 1 字节,就计入 500 KiB;对多个历史文件的小修改可能误报超 2 MiB,而且删除的净减少未计。建议与 #273 owner 先明确“新增净字节”还是“涉及文件总尺寸”;若确实是净新增,比较 base/head 对应 blob 的字节差并覆盖新增、修改、缩小/删除回归;若是保守总量预算,则改名和报告文案,避免误导。
| errors.append(f"{prefix}: missing required field '{field}'") | ||
|
|
||
| url = asset.get("url", "") | ||
| if not isinstance(url, str) or not url.startswith("https://"): |
There was a problem hiding this comment.
[P2|HTTPS 前缀不能证明外置资产指针有效] 此处只校验 url.startswith("https://"),任何 HTTPS 网站/Release tag 浏览页都可通过;新增 test_validate_external_asset_manifest_valid 就以 .../releases/tag/v0.3.0(非具体下载资产)作为正例。这样无法落实 PR 描述的“GitHub Release asset with accessible URL”契约,不能证明 SHA 对应的字节可取得。建议先规定具体 Release asset 下载 URL 的可验证格式,明确 URL、大小、摘要和保留责任的验证深度;把 tag 页面/非资产链接作为负例,可访问性若未独立核验应报告未核实,而非视为已验证。
🛠️ Resolution of Review Findings (Head
|
Dong1017
left a comment
There was a problem hiding this comment.
增量复核 1afe7515:仍有可复现的预算检查缺陷,请先修复以下 inline 项。
相对 上轮评审:显式无效 base 不再静默回退(本次 CLI 复现退出 1);小幅增长不再按整个文件累计,但删除/缩小仍未计入净额,路径解析又引入漏检。Release tag 页已被 URL 格式规则拒绝,但该规则只验证字符串格式,不能证明资产存在、可下载或与所填字节数/摘要一致;请据此限定声明,验证深度留给 owner 决定。
治理文档中的新阈值段落已撤回,PR 描述也改为候选;但 ci-ready.yml 仍会运行并以非零状态报告这些默认阈值。#273 的 R6、具体阈值和适用方式仍待 owner 决定,本评审不构成接受或新政策。文档另有一处无关的 baseline-vs-candidate → baseline-vs-campaign 变更,请检查是否意外。
验证范围:检查该 head 的代码、增量、测试和工作流;在临时 Git 仓库复现重命名、非 ASCII 路径和删除净额问题,并验证无效 base 的退出码。当前环境没有 pytest,未独立运行作者所列测试;也未访问或下载 Release 资产。当前 head 的 ready workflow 显示 action_required,尚无该 run 的 job 结果;不把作者测试声明当作 CI 通过。
| if len(parts) < 5: | ||
| continue | ||
| sha_src, status = parts[2], parts[4] | ||
| rel_path = path_part.split("\t")[0].strip('"').replace("\\", "/") |
There was a problem hiding this comment.
[P1|重命名和 Git 引号路径可绕过预算] --raw 的 rename 有源和目标路径,这里只取源路径并 stat;在临时仓库将 600 KiB evidence/old.bin 重命名为 evidence/new.bin,Git 报 R100,源路径已不存在,检查器以 0 退出。移入 evidence/ 同样漏检。另加 evidence/é.bin 时 Git 输出带八进制转义的引号路径,这里的替换不能解码,文件也被记为 0。建议用 git diff --raw -z 正确解析源/目标路径,以目标文件判断单文件预算,并测试目录内/跨目录重命名及非 ASCII 路径。
| net_addition = current_size | ||
| elif status.startswith("M"): | ||
| src_size = get_git_object_size(root, sha_src) | ||
| net_addition = max(0, current_size - src_size) |
There was a problem hiding this comment.
[P2|仍不是 PR 级净新增] 对每个修改单独 max(0, …) 且删除计 0,会丢掉缩小/删除的负值。实测删 2,097,152 字节、加五个各 460,800 字节文件,检查器报 +2,304,000 并失败,但 evidence 树实际净增仅 206,848 字节。若采用描述中的净额语义,应按 base/head 的 evidence 范围累计有符号差额(包括删除、缩小和跨范围移动),需要非负展示时只在总计后处理,并补真实 Git 回归测试。最终统计口径仍须 owner 确认。
| if not isinstance(bundle, dict): | ||
| continue | ||
| external_assets = bundle.get("external_assets", []) | ||
| if not isinstance(external_assets, list): |
There was a problem hiding this comment.
[P2|外部资产元数据类型错误被静默忽略] 当 external_assets 是对象或字符串而非列表时直接 continue,例如 {"bundles":{"x":{"external_assets":{"url":"https://example.invalid"}}}} 返回无错误,缺失的摘要、大小和责任人都未被报告。字段存在但类型错误应返回诊断;给非列表容器增加负例。URL 格式匹配也不验证远端可访问性或实际摘要,建议明确这是格式检查,避免声称已验证下载资产。
Review Resolution & Head Update (
|
|
@Dong1017 I have addressed all the points highlighted in your latest review (
All 13 tests are passing locally ( |
Dong1017
left a comment
There was a problem hiding this comment.
复核 2594a5ae:上轮主要路径及净额问题已有针对性修正,但仍有以下可复现的漏检/误报,请继续处理 inline。
相比 上轮评审,-z 路径解析覆盖了测试中的重命名及非 ASCII,删除负值纳入总额,外部资产容器类型不再静默忽略;文档误改已移除。新 Git 测试覆盖目录内重命名、移入、删除和非 ASCII,但并未实际构造移出场景。离线 URL 规则仍不证明真实可下载或摘要匹配。
本次对 13 个测试函数用轻量本地测试驱动逐一执行均通过(该环境无 pytest,故不是一次 pytest 运行);另在临时 Git 仓库复现下列缺陷,未进行远程资产访问。作者评论中的算术应为 5 × 450 KiB − 2 MiB = 206,848 字节,不是 152,848;测试断言本身使用正确表达式。
R6 阈值、适用范围和报告方式仍待 #273 owner 决定;本次评审不接受候选政策。当前 head 的 ready workflow 仍显示 action_required,未见 job 结果,不能视为 CI 通过。
| break | ||
| path = tokens[i + 1].decode("utf-8", errors="replace").replace("\\", "/") | ||
| i += 2 | ||
|
|
There was a problem hiding this comment.
[P1|路径改写和读取工作树仍可漏检或误报] POSIX 文件名中的反斜杠是合法字符,不是目录分隔符。实测 PR 新增 600 KiB 的 evidence/a\b,同时已有 1 字节的 evidence/a/b;这里替换路径后读取了后者,记录为 1 字节并放行。另一个实测:新增指向仓库内 600 KiB 文件的符号链接,Git 中链接 blob 仅 11 字节,stat 却跟随目标,误报 600 KiB。建议保留 Git 原始路径语义,并用 diff 的目标 blob 对象而非工作树跟随链接的大小,覆盖反斜杠路径和符号链接回归。
| for rel_path in local_paths: | ||
| full_path = root / rel_path | ||
| if full_path.is_file(): | ||
| sz = full_path.stat().st_size |
There was a problem hiding this comment.
[P2|本地模式漏掉新目录中的未跟踪文件] 不带 --base 时 git status --porcelain -z 默认可能把未跟踪目录折叠成 ?? evidence/;此处仅接受 is_file(),所以新建的 evidence/new/large.bin 即使 600 KiB,返回记录仍为空并通过。可让 Git 展开未跟踪文件(例如 --untracked-files=all),并添加从干净仓库新建目录及超限文件的端到端负例。此项影响本地无 base 模式,不代表现有 CI base 模式同样受此问题影响。
| errors.append( | ||
| f"{prefix}: url must point to a downloadable GitHub Release asset " | ||
| f"(https://github.com/<owner>/<repo>/releases/download/<tag>/<filename>)" | ||
| ) |
There was a problem hiding this comment.
[P2|必填字段的 JSON null 仍被接受] 上面的检查只判断 key 是否存在,而这里对 None 跳过类型校验。实测 external_assets 中对象的 url、sha256、bytes、retention_owner 四项全设为 null 时返回空错误列表,等同缺失所有有效元数据却通过。请对存在但为 null 的字段也执行类型/值检查,并分别或组合加入负例。
…manifest checks (Refs InferMatrixLab#273)
Review Resolution & Head Update (
|
Dong1017
left a comment
There was a problem hiding this comment.
复核 e3b00f0e:上轮四个复现均已修正;另发现一个显式 base 模式的窄范围回归,见 inline。
已在临时 Git 仓库复测:反斜杠路径按正确 blob 大小计算,符号链接按链接 blob 而非目标计算,未跟踪目录中的大文件被展开,四个 null 字段均被拒绝。move-out 回归已加入。16 个测试函数由轻量本地驱动逐一执行通过;当前环境没有 pytest,这不是一次 pytest 运行。没有访问远程 Release 资产。
候选阈值、适用范围和报告方式仍待 #273 owner 决定,离线 URL 格式验证也不证明真实下载或摘要匹配。当前 head 的 ready workflow 为 action_required,没有 job 结果,不能视为 CI 通过。本评审不构成候选政策接受或正式批准。
| delta = -src_size if is_ev else 0 | ||
| results.append((path, 0, delta)) | ||
| elif status.startswith("A"): | ||
| cur_size = get_git_object_size(root, sha_dst) |
There was a problem hiding this comment.
[P2|合法空 blob 被误当成读取失败] get_git_object_size 对合法 0 字节 blob 和读取失败都返回 0,导致这里回退到工作树。实测:base 后提交空的 evidence/empty,随后只在工作树未提交地写入 600 KiB,再运行 --base <base>;HEAD 中 blob 是 0 字节,但记录为 614,400 字节并误报超限。此问题影响有未提交修改的显式 base 检查,干净 checkout 的 ready CI 不受这个具体场景影响。建议区分成功的零长度与对象读取失败,base diff 模式使用目标 blob 的真实大小,读取失败明确报错,并增加空 blob + dirty worktree 回归。
Review Resolution & Head Update (
|
Dong1017
left a comment
There was a problem hiding this comment.
针对 1382ac5a 的增量复核:上轮空 blob / dirty worktree 问题已修复。
检查了相对 e3b00f0e 的代码及测试变更:base diff 不再以工作树大小替代合法 0 字节 blob;临时 Git 仓库中,HEAD 空 blob 加未提交的 600 KiB 工作树修改仍记录为 0,未产生误报。另验证不存在的 Git 对象会抛出错误,不再返回 0。新增回归测试覆盖该场景。
17 个测试函数由轻量本地驱动逐一执行通过;当前环境无 pytest,因此这不是一次 pytest 运行,也没有访问远程资产。本结论仅覆盖本次增量及上述复验,不是全范围批准。当前 head 的 ready workflow 为 action_required,尚无 job 结果,不能称为 CI 通过。#273 的 R6 阈值、适用范围和报告方式仍待 owner 决定;离线 URL 格式检查不证明资产可访问或摘要匹配。本评论不构成政策接受或正式 PR approval。
|
@Dong1017 Thank you for reviewing and confirming that all defect classes are resolved and that all 17 tests pass on commit Request for CI Trigger & Final Merge Review
🎯 Contributor Claim & Settlement Request
Thank you for your guidance and rigorous reviews throughout this process! |
|
Review at head
|
🛠️ Resolution of Review Findings (Head
|
… format check (Refs InferMatrixLab#273)
|
Incremental review
Minor: the PR description's evidence table lists "Remaining gap: none" for the 512 KiB / 2 MiB rows. Since #273 hasn't accepted those numbers, please mark them as "pending owner decision in #273". Scope: I read the incremental diff and the full checker and test files at |
… POSIX backslash paths (Refs InferMatrixLab#273)
🛠️ Resolution of Review Findings (Head
|
|
Incremental review
Still open before I can approve:
Scope: I read the incremental diff and the relevant parts of the checker at |
|
Thanks @amy-why-3459 . Both requested code fixes are pushed in commit "64432e29". The Ready workflow is still marked "action_required" and has not produced job output. Could a repository maintainer please approve and run the Ready workflow on the current PR head? Once the workflow completes successfully and the "evidence-budget" report-only output is visible, I'll notify you for the final review. Thanks for the detailed review. |
|
The owner decision this PR was waiting on is recorded: #273 issuecomment-6632466101. R6 is accepted, and #273 is now closed with every remedy decided. What it settles for this PR:
The measurements behind the decision are in the comment; the one that bears on your design is that only 11 of #113's 575 new evidence files exceed 512 KiB, holding 15% of its bytes. The per-PR net budget is the rule that detects that shape, which is why the net-delta accounting you built is the load-bearing part rather than the per-file check. Remaining gate on this PR, unchanged by the decision: the ready lane at This comment records the policy decision only. It is not a review of the current head and not an approval. |
|
This project has no bounty program. InferRSI has never offered payment for contributions, and If something outside this repository told you otherwise — a bounty platform, an aggregator, a post somewhere — please tell me where you saw it, so it can be corrected. You would not be the last person it costs. Your work is on the record regardless: R6 was accepted in #273 issuecomment-6632466101, adopting the two thresholds your checker implements, in the report-only mode it already supports. What happens to this PR from here is a technical question only — the ready lane at Since there is no payment, the addresses in your settlement comment serve no purpose and you may want to edit them out. A public payment address tied to a username is useful mainly to people who impersonate contributors. |
|
@Rohank143 I prepared and tested a minimal integration resolution for your current head Conflict resolution evidence-budget:
# Report-only evidence byte budgets accepted in #273; enforcement is a separate decision.
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- name: Report evidence byte budgets (Refs #273)
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
run: python3 tools/check_evidence_budget.py --base "$BASE_SHA" --report-onlyThis preserves the accepted R6 decision: report-only budgets, strict manifest-format validation, and no retroactive migration. The workflow wording above also removes the now-stale “pending owner acceptance” description. Verified locally, as an integration self-check
The existing Ready run did succeed, including No remote branch was changed. The available GitHub integration returned 403 when attempting to write the fork, despite maintainer edits being enabled, so I stopped there. This comment supplies the resolution and test evidence for you to apply; it is not an independent review or formal approval. |
|
Hi @Dong1017, Thank you for preparing and testing the integration resolution. I have merged current
The integration has been pushed to this branch at head |
|
The integration report matches the resolution in #328 (comment). Head Still required before a review of this head:
Accepted R6 mode stays report-only (#273 (comment)). Manifest and format errors stay enforcing. — Dong-bot |
There was a problem hiding this comment.
PR review verdict — DO NOT PASS
Reviewed base b8df3715709b806d06c4bfc9158ab41b18ded11e and head acf9d969472760531840671ebf19a0f116551fd0. Seeded diff is the full base..head patch (previousHead empty). Compared that patch with the prior review on 1382ac5a.
Blocker
.github/workflows/ci-ready.yml:72says the evidence byte budgets were "accepted in #273". In the same diff,tools/check_evidence_budget.py:12-16labels 512 KiB / 2 MiB as candidate defaults "under owner discussion", and the ready job runs with--report-only. Earlier reviews on this PR cite the #273 owner note that R6 stays open; the governance-doc wording that treated those numbers as current rules was removed. This job comment puts an acceptance claim back into the repo. Reword the comment so the job is report-only candidate output pending an owner decision on #273. Do not state that the thresholds were accepted.
Earlier findings resolved on this head
Static read of tools/check_evidence_budget.py, tests/test_evidence_budget.py, and the evidence-budget job:
- Invalid
--basefailsgit rev-parse --verifyand raises;mainexits 1. The base path does not fall back togit status. - Base mode uses
git diff --raw -zandgit cat-file -s. Net totals use signed blob deltas, including delete, shrink, move-in, and move-out. The 5×450 KiB − 2 MiB case is 206,848 bytes intest_net_addition_with_deletion_and_shrinkage. - External asset URLs must match a GitHub
releases/download/<tag>/<filename>pattern. Tag-view URLs, non-listexternal_assets, non-objectbundles, and JSON null required fields are rejected. Diagnostics state this is a format check and does not prove downloadability or a remote digest. - Symlink records use the link blob size. A committed empty blob stays 0 when the worktree is dirty. A failed
cat-fileraises instead of returning 0. - Local status uses
--untracked-files=all. ci-ready.ymlpasses--report-only, so candidate budget violations are warnings and the process still exits 0. Manifest schema/format errors still exit 1 (test_main_report_only_mode_does_not_hide_manifest_errors).
Optional
- With
--baseomitted, local mode recordslstatsize as the net addition and skips deletions (tools/check_evidence_budget.pyaround lines 167 and 203). The ready job always passes--base, so that path is outside this CI job. allowlistis only acheck_file_budgetsargument. The CLI never passes it.test_git_rename_and_deletion_regressionrequires a per-file hit for a pure rename of an already oversizedevidence/blob. Report-only keeps that from failing CI; it becomes a gate only if enforcement is turned on.- An over-budget
evidence/file does not require a matchingexternal_assetsrecord. Inventory validation runs only whentools/evidence_inventory.jsonexists.
Not verified
- Tests were not executed here (no pytest run and no separate git reproduction).
- The ready workflow result for
acf9d969was not checked. This comment is not a CI-green signal. - This review does not accept #273 R6 thresholds, their scope, or a change from report-only to a failing budget gate.
I will re-read after the author pushes.
|
Incremental review The merge itself looks right: against the merge base On the wording question raised in the latest bot review: I read the workflow comment The stale wording is on the checker side instead, and it now contradicts the workflow:
Still open before I can approve:
Scope: I read the merge delta for the three PR files and the checker header at |
Governing Issue and delivery slice
Refs #273
--report-onlynon-failing mode pending owner acceptance, downloadable GitHub Release asset format checks for large raw artifacts with SHA-256 and retention ownership, and report-only diagnostic warnings inci-ready.yml.tools/check_evidence_budget.py: CLI and CI checker usinggit diff --raw -zandgit cat-file -sto calculate true signed net byte addition onevidence/, with validation for downloadable external asset manifests (url,sha256,bytes,retention_owner). Exits with non-zero error if base ref cannot be resolved. Preserves raw POSIX path identities incheck_file_budgets(preventing top-level files with literal backslashes from being misidentified as directory paths) and measures committed blob sizes directly to prevent symlink target following or dirty worktree misreporting. Supports--report-onlymode to report candidate budget violations as warnings without failing CI builds while thresholds remain under discussion in [Investigation] Agent-led workflow gaps: closure, decision visibility, review provenance and focus #273, while keeping manifest schema/format validation strictly enforcing. Explicitly designates asset URL validation as a format check (validates patternhttps://github.com/<owner>/<repo>/releases/download/<tag>/<filename>without probing remote endpoints or proving live downloadability/remote hashes).tests/test_evidence_budget.py: Exhaustive unit & Git regression test suite (23 tests) verifying per-file thresholds, signed net addition delta with deletions/moves/shrinks, non-evidence path isolation, allowlists, downloadable Release asset URL format checks, null-field rejections, raw POSIX backslash paths via git tree, symlinks as link pointers, untracked directory expansion, zero-byte blob isolation against dirty worktrees,--report-onlynon-failing mode, non-report negative failure cases, and manifest enforcement under report-only mode..github/workflows/ci-ready.yml: Anevidence-budgetready-lane reporting job running with--report-onlypending [Investigation] Agent-led workflow gaps: closure, decision visibility, review provenance and focus #273 owner acceptance, reporting candidate budget overages as warnings without blocking PRs.Knowledge authorship declaration
Not applicable: this PR changes no path protected by
docs/knowledge-model-policy.md.Changed artifacts and evidence
evidence/tools/check_evidence_budget.pytests/test_evidence_budget.py::test_file_exceeding_budget_fails&test_main_negative_case_fails_without_report_onlyevidence/tools/check_evidence_budget.pytests/test_evidence_budget.py::test_aggregate_pr_evidence_budget_fails&test_modified_file_counts_true_net_addition_not_full_sizetools/check_evidence_budget.pytests/test_evidence_budget.py::test_validate_external_asset_manifest_*(explicit format check diagnostic; does not verify live downloadability or remote hash)tools/check_evidence_budget.py&.github/workflows/ci-ready.ymltests/test_evidence_budget.py::test_main_report_only_mode_warns_and_exits_zero; ready-lane job passes--report-onlytools/check_evidence_budget.pytests/test_evidence_budget.py::test_main_report_only_mode_does_not_hide_manifest_errorstools/check_evidence_budget.pytests/test_evidence_budget.py::test_git_raw_posix_backslash_top_level_path_not_treated_as_evidencetools/check_evidence_budget.pytests/test_evidence_budget.py::test_invalid_base_ref_raises_errortools/check_evidence_budget.pytests/test_evidence_budget.py::test_non_evidence_files_not_counted_in_evidence_budget.github/workflows/ci-ready.ymlevidence-budgetrunstools/check_evidence_budget.py --base "$BASE_SHA" --report-onlyChecks and dependencies
pytest tests/test_evidence_budget.pypassed (23/23 passed in 7.57s).pytest tests/test_evidence_budget.py tests/test_pr_references.py tests/test_evidence_inventory.pypassed (64 passed, 1 skipped).ruff check tools/check_evidence_budget.py tests/test_evidence_budget.pypassed with 0 errors.pull_request.base.sha). Requires no external services or secrets.Remaining work and Issue closure
💳 Contributor Settlement Coordinates
0x9B3c8a848F8DF3bBa7C8841715DE4557fA598337Rohank70000@gmail.combc1qw2nk7f2d9z6h4pscga9pq52r5v64chsw6c9fku