Update ChangelogSAFE
Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust
Overview
Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust
8aad396344a4OBSERVED · 2026-10-07What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: update-changelog description: Update CHANGELOG.md with merged PRs since the last changelog update, categorized by type --- # Update Changelog This skill updates CHANGELOG.md with merged PRs that aren't already listed. ## Step 1: Determine the changelog scope Read `CHANGELOG.md` to identify the current unreleased version section at the top (e.g., `Tantivy 0.26 (Unreleased)`). Collect all PR numbers already mentioned in the unreleased section by extracting `#NNNN` references. ## Step 2: Find merged PRs not yet in the changelog Use `gh` to list recently merged PRs from the upstream repo: ```bash gh pr list --repo quickwit-oss/tantivy --state merged --limit 100 --json number,title,author,labels,mergedAt ``` Filter out any PRs whose number already appears in the unreleased section of the changelog. ## Step 3: Consolidate related PRs Before categorizing, group PRs that belong to the same logical change. This is critical for producing a clean changelog. Use PR descriptions, titles, cross-references, and the files touched to identify relationships. **Merge follow-up PRs into the original:** - If a PR is a bugfix, refinement, or follow-up to another PR in the same unreleased cycle, combine them into a single changelog entry with multiple `[#N](url)` links. - Also consolidate PRs that touch the same feature area even if not explicitly linked — e.g., a PR fixing an edge case in a new API should be folded into the entry for the PR that introduced that API. **Filter out bugfixes on unreleased features:** - If a bugfix PR fixes something introduced by another PR in the **same unreleased version**, it must NOT appear as a separate Bugfixes entry. Instead, silently fold it into the original feature/improvement entry. The changelog should describe the final shipped state, not the development history. - To detect this: check if the bugfix PR references or reverts changes from another PR in the same release cycle, or if it touches code that was newly added (not present in the previous release). ## Step 4: Review the actual code diff **Do not rely on PR titles or descriptions alone.** For every candidate PR, run `gh pr diff <number> --repo quickwit-oss/tantivy` and read the actual changes. PR titles are often misleading — the diff is the source of truth. **What to look for in the diff:** - Does it change observable behavior, public API surface, or performance characteristics? - Is the change something a user of the library would notice or need to know about? - Could the change break existing code (API changes, removed features)? **Skip PRs where the diff reveals the change is not meaningful enough for the changelog** — e.g., cosmetic renames, trivial visibility tweaks, test-only changes, etc. ## Step 5: Categorize each PR group For each PR (or consolidated group) that survived the diff review, determine its category: - **Bugfixes** — fixes to behavior that existed in the **previous release**. NOT fixes to features introduced in this release cycle. - **Features/Improvements** — new features, API additions, new options, improvements that change user-facing behavior or add new capabilities. - **Performance** — optimizations, speed improvements, memory reductions. **If a PR adds new API whose primary purpose is enabling a performance optimization, categorize it as Performance, not Features.** The deciding question is: does a user benefit from this because of new functionality, or because things got faster/leaner? For example, a new trait method that exists solely to enable cheaper intersection ordering is Performance, not a Feature. If a PR doesn't clearly fit any category (e.g., CI-only changes, internal refactors with no user-facing impact, dependency bumps with no behavior change), skip it — not everything belongs in the changelog. When unclear, use your best judgment or ask the user. ## Step 6: Format entries Each entry must follow this exact format: ``` - Description [#NUMBER](https://github.com/quickwit-oss/tantivy/pull/NUMBER)(@author) ``` Rules: - The description should be concise and describe the user-facing change (not the implementation). Describe the final shipped state, not the incremental development steps. - Use sub-categories with bold headers when multiple entries relate to the same area (e.g., `- **Aggregation**` with indented entries beneath). Follow the existing grouping style in the changelog. - Author is the GitHub username from the PR, prefixed with `@`. For consolidated entries, include all contributing authors. - For consolidated PRs, list all PR links in a single entry: `[#100](url) [#110](url)` (see existing entries for examples). ## Step 7: Present changes to the user Show the user the proposed changelog entries grouped by category **before** editing the file. Ask for confirmation or adjustments. ## Step 8: Update CHANGELOG.md Insert the new entries into the appropriate sections of the unreleased version block. If a section doesn't exist yet, create it following the order: Bugfixes, Features/Improvements, Performance. Append new entries at the end of each section (before the next section header or version header). ## Step 9: Verify Read back the updated unreleased section and display it to the user for final review.
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | NA |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
8aad396344a4full audit observations/trust-audit/skill/quickwit-oss__update-changelog.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-07 | 8aad396344a4 | SAFE | B | 89 | first audit |
Questions
What does the Update Changelog skill do?
Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust
Is Update Changelog safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Update Changelog access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (8aad396344a4), read on 2026-10-07. The repository is watched, and a new audit runs when it changes — this is the first audit.