Files
exe-reverse/.github/PULL_REQUEST_TEMPLATE.md
T
root 63b2aca8d8 Fix the budget gate and add CI, lint and coverage guards
- check_budget.py escalated a hard index-row violation to 'warn' on both
  branches, so INDEX_ROW_HARD could never fail anything. It fails now, and
  tests/unit/test_budget_measurement.py pins both thresholds.
- The corpus note counted scripts/__pycache__/*.pyc, so the same commit
  reported 27 scripts after the suite had run and 16 on a clean checkout.
- TOKENS_PER_CHAR is re-derived from a measurement (26,795 chars -> 6,065
  tokens = 4.418); the comment's old figure and its arithmetic were both
  wrong for this file.
- check_repo.py's yaml sentinel carries the type ignore, so mypy is clean
  with PyYAML installed as well as without it.
- The CPUID test now skips with the probe's own note on a host without
  CPUID instead of failing, and pytest.ini points at tests/README.md, which
  exists, instead of an EXTENSION file that never did.

Tooling: .flake8 (a measured 120-column limit), .gitattributes, .gitignore
and .github/workflows/ci.yml (the five gates, the suite on 3.11-3.14 and a
lint job), which is what CONTRIBUTING.md already claimed CI runs. The
pull-request template it refers to now exists.

Content: pitfalls P26-P34 -- the analysis-level failures the catalogue was
missing (sampling read as observation, a self-built parser trusted, a
verification that could not have failed, a shell-mangled command line) --
registered in the symptom index and its routing mirror. FINDINGS F11-F15
record the defects above.

Tests: the coverage guard derives its subject from scripts/ rather than a
hand-written list, pe_triage.py and pe_diff.py gain their first tests, and
plan.py / preflight.py are declared uncovered with reasons.
2026-10-24 14:55:02 +08:00

80 lines
3.6 KiB
Markdown

<!--
Fill this in. Three sections are read by a reviewer and one is not yours to fill.
An unchecked box is not evidence of absence: a pull-request template with a blank effect-surface
checklist has not been shown to be documentation-only, it has been shown to be unfinished
(CONTRIBUTING.md, section Review). The readiness declaration is left for a human owner; an agent
leaves it blank rather than writing a claim it cannot make.
-->
## What this changes
One paragraph. What changes, and what a reader can do afterwards that they could not before. If the
change is documentation only, say so here and again in the effect surface.
## Evidence
Every command below was run in this checkout. Paste the output that decides the question; a summary
of confidence is not a result, and `should pass` is not a run.
```
python check_repo.py
python check_refs.py
python check_budget.py
python check_routing.py
python check_commands.py
python -m pytest -q
mypy *.py skills/exe-reverse/scripts/*.py
flake8 *.py skills/exe-reverse/scripts/*.py
```
Output that matters:
```
<paste the decisive lines, and say what they decide>
```
Claims added or changed:
| Claim | Grade | What it rests on (command + result) |
|---|---|---|
| | observed / inferred / unverified | |
- [ ] No claim is graded above the weakest step in its chain.
- [ ] Every `observed` has the command and the output beside it.
- [ ] Every negative result names the range, the pattern and what was searched. A search that
returned nothing is evidence about the search.
- [ ] Every limit cites the measurement or the constraint that set it, rather than a preference.
## Effect surface
Check each line that applies. `Documentation only` is a claim, so make it explicitly rather than
leaving the list blank.
- [ ] `SKILL.md` — the budget gate output is attached above; it is loaded in full on activation.
- [ ] `references/` — a new or renamed file is registered in `references/routing.md`, reachable from
`SKILL.md` or the README, and carries a navigable head if it passes 100 lines.
- [ ] `references/pitfalls.md` — a new entry takes the next number and keeps the same shape.
- [ ] `scripts/` — a new script is in the routing script table, answers `--help` on a bare
interpreter, and its argument table matches every command the docs tell a reader to run.
- [ ] `tests/` — a new script is added to `conftest.SCRIPT_FILES` or declared uncovered with a
reason in `tests/cli/test_cli_coverage.py`; a fixed defect has a test that fails without it.
- [ ] `evidence/` and `docs/tool-verification/` — a capability claim moved in both, and the
measurement record quotes the command it rests on.
- [ ] `README.md` and `README.zh-CN.md` — the two stay in step.
- [ ] `docs/tool-verification/FINDINGS.md` — a defect found by the repository's own tools is
recorded with its symptom, root cause, how it surfaced, and the check that now catches it.
- [ ] Documentation only — no behaviour changed, and the gates above still pass.
## Readiness declaration (human owner only)
An agent does not fill this section in. Leave it blank; the reviewer completes it.
- [ ] The change belongs in this repository rather than in a fork or a downstream project.
- [ ] The boundary of what was not exercised is stated, not implied: every route that needs a
debugger, a driver, a kernel component, a hypervisor, test signing or a second machine is
named as not run here.
- [ ] The serialized evidence is committed, and nothing in it carries target identity or a
machine-specific path.
- [ ] The commit is ready to be fast-forwarded onto `main`.