Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Bug report
about: Report a reproducible problem with PALM.
---

## Problem

What did you expect, and what happened instead? Identify the stage: analysis, generation, repair, or coverage.

## Reproduction

Include the command and a small target or function that reproduces the problem.

## Environment

- PALM commit:
- Operating system:
- `rustc --version`:
- `cargo llvm-cov --version` (for coverage problems):

## Relevant output

Include the error output. For model-related problems, optionally include the model identifier and a relevant response or request summary. Remove private information; do not attach API keys or `api.json`.
11 changes: 11 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## Problem

<!-- Describe the concrete problem or link a related issue. -->

## Change

<!-- Explain the resulting behavior and relevant scope. -->

## Validation

<!-- List relevant checks, or explain why none were needed. Keep trial artifacts and credentials out of commits. -->
6 changes: 5 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@ Use the existing check relevant to your change:
| Generation, repair, result handling, or test execution | `python3 scripts/check_minimal.py` |
| Task scheduling, request budgets, or failure cleanup | `python3 scripts/check_tasks.py` |
| Coverage annotations or preprocessing | `python3 scripts/check_coverage.py` |
| Coverage denominators or target-specific baseline maps | `cargo test -p utgen --locked coverage_baselines_match_test_build_modes -- --ignored` |
| Library/binary ownership, target selection, or dependency context | `python3 scripts/check_mixed.py` |
| Analysis, focal context, or method identity | `cargo build --workspace --release --locked` then `python3 scripts/check_bytes.py` |

The checks use temporary targets and local model fixtures. They do not need API keys or call an external model service; dependency installation may need network access. The full suite runs in CI for code changes. Documentation changes should preserve working links, command examples, and the distinction between offline validation and real-model results.

## Report a problem

Open a [GitHub issue](https://github.com/cppbear/PALM/issues) with:
Use the [bug report template](https://github.com/cppbear/PALM/issues/new/choose) with:

- The PALM commit, operating system, `rustc --version`, and `cargo llvm-cov --version`.
- The command you ran, expected behavior, actual behavior, and relevant error output.
Expand All @@ -37,4 +39,6 @@ Run PALM on a working copy of a target crate: preprocessing changes its source a

Keep the change focused and explain the problem, resulting behavior, and checks you ran. Add a regression case for a reproduced behavior change when the existing checks do not cover it. Real-model calls are not required for ordinary fixes; use local fixtures or existing saved candidates where practical.

The PR template has three short sections: problem, change, and validation. Use the checks relevant to the change; if none are needed, explain why.

Keep credentials, target build directories, generated answers, coverage reports, and local trial logs out of commits. Preserve the pinned toolchain and dependency lockfile unless changing them is part of the task.
135 changes: 92 additions & 43 deletions README.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ PALM's implementation, technical guide, and conference materials are available i
| [Technical guide in Chinese](palm-rust-unit-test-generation.md) | Condition chains, context construction, generation, repair, and usage. |
| [Minimal pipeline](minimal-pipeline.md) | Deterministic program-analysis, generation, repair, and coverage validation. |
| [Bytes analysis](bytes-analysis.md) | Analysis artifacts, method identities, constructor context, and timing output. |
| [bytes example](../examples/README.md) | Commands for analyzing a working copy of the bundled target. |
| [Examples](../examples/README.md) | Minimal and mixed-target fixtures, bytes analysis, and bounded unit/integration model trials. |
| [utgen reference](../utgen/README.md) | Configuration, CLI behavior, and output files. |
| [ASE 2025 materials](ase2025/README.md) | Original poster and presentation PDFs. |
| [ASE 2025 materials](ase2025/README.md) | Conference poster and presentation PDFs, with revision and statistical notes. |
| [Build and installation checks](build-validation.md) | Build, tests, CLI entry points, installation, and CI scope. |

The conference PDFs describe the work presented in 2025. The technical guide and command reference describe the implementation maintained here; the current code includes changes made after that presentation.
6 changes: 5 additions & 1 deletion docs/ase2025/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# ASE 2025 Materials

These are the original presentation materials for **PALM: Synergizing Program Analysis and LLMs to Enhance Rust Unit Test Coverage**.
Conference presentation materials for **PALM: Synergizing Program Analysis and LLMs to Enhance Rust Unit Test Coverage**.

- [Poster](research-2647-poster.pdf): one A0 page.
- [Presentation](research-2647-pre.pdf): 33 pages.

This repository copy updates the poster's materials QR code to this page and adds acceptance-rate denominator notes to the poster and slides 28 and 32. The experimental figures remain unchanged; the materials describe the paper's experiments, not a new evaluation of the current implementation.

The reported acceptance rate is **80 / (80 + 5) = 94.1%**, among submissions with a decision at the time of the paper. Of 91 submitted tests, 80 were accepted, 5 were rejected, and 6 were pending; the pending submissions are excluded from that rate. See the [paper](https://arxiv.org/abs/2506.09002) for the study and its scope.

For installation and commands for the current code, see the [project README](../../README.md) and [technical guide](../palm-rust-unit-test-generation.md).
Binary file modified docs/ase2025/research-2647-poster.pdf
Binary file not shown.
Binary file modified docs/ase2025/research-2647-pre.pdf
Binary file not shown.
Binary file removed docs/assets/palm-tech-route.png
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/bytes-analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ The script prints its temporary working directory and finishes with `All bytes a
| Source identity | Exported function code matches its source location, accounting for brinfo's indentation normalization. |
| Method identity | Distinct generic trait implementations, reference receivers, default methods, and recoverable macro-generated methods retain the correct bodies and impl headers. Inactive `cfg` alternatives do not replace active methods. |
| Constructor context | Constructors returning `Self` or the concrete impl type retain their bodies, including the checked generic and macro-generated cases. Unrelated methods remain subject to context trimming. |
| Function lists | The checked-in two- and eight-function selections match the analysis index and their expected representative condition chains. |
| Function lists | The unit-mode `bytes-smoke-2.txt` and `bytes-smoke-8.txt` selections match the analysis index and their expected representative condition chains. This script does not check the separate integration or mixed-target trial lists. |
| Source preservation | Analysis leaves the prepared sources and manifest unchanged. |

## Logs and Timings
Expand Down
2 changes: 2 additions & 0 deletions docs/minimal-pipeline.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ python3 scripts/check_minimal.py

The script uses the [minimal fixture](../examples/minimal/README.md) in temporary copies. It prints the working directory and finishes with `Minimal analysis/generation/repair/coverage checks passed.` The checked-in fixture remains unchanged.

The [homepage example](../README.md#a-small-example) shows excerpts from its fixed responses for `classify`. Those assertions are illustrative excerpts, not a complete generated file or a model-quality result. The full script also exercises deliberate compilation failures and runtime failures; the final success message means those outcomes and cleanup matched expectations.

Run the related checks when changing coverage/preprocessing or task scheduling:

```sh
Expand Down
Loading
Loading