From 8401ed72ab7dee84acd048dad58976b3950bee98 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 3 Nov 2026 09:27:33 +0000 Subject: [PATCH] Prepare the Rust 5.0.0 release. Bump the crate to 5.0.0, record the rewrite in the changelog, and publish linux, macOS, and Windows archives from a version tag. Co-authored-by: Aron Amos --- .github/workflows/publish.yml | 211 +++++++++++++++++++++++++++++++--- AGENTS.md | 4 +- AGENTS.md.wiki.md | 2 +- CHANGELOG.md | 9 +- CHANGELOG.md.wiki.md | 4 +- CLAUDE.md | 4 +- CLAUDE.md.wiki.md | 2 +- Cargo.lock | 2 +- Cargo.toml | 2 +- README.md | 34 +++++- README.md.wiki.md | 2 +- file_health.json | 2 +- file_health.md | 13 ++- journal/2026/11/03.md | 32 ++++++ pending_updates.md | 5 - skills/run.md | 6 +- skills/run.md.wiki.md | 2 +- 17 files changed, 287 insertions(+), 49 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b8c0d7e..ca7bd1e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: permissions: - contents: write + contents: read jobs: test: @@ -19,28 +19,207 @@ jobs: - name: Test run: cargo test --locked - release: - name: GitHub release - runs-on: ubuntu-latest + build: + name: Build ${{ matrix.target }} needs: test + runs-on: ${{ matrix.os }} + permissions: + contents: read + actions: write + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + archive: tar.gz + - os: macos-latest + target: aarch64-apple-darwin + archive: tar.gz + - os: macos-latest + target: x86_64-apple-darwin + archive: tar.gz + - os: windows-latest + target: x86_64-pc-windows-msvc + archive: zip steps: - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@1.83.0 + with: + targets: ${{ matrix.target }} + + - name: Resolve version + shell: bash + run: | + set -euo pipefail + cargo_version="$(awk -F '"' '/^version = / { print $2; exit }' Cargo.toml)" + if [[ -z "$cargo_version" ]]; then + echo "Cargo.toml has no version" >&2 + exit 1 + fi + version="$cargo_version" + if [[ "$GITHUB_REF" == refs/tags/v*.*.* ]]; then + version="${GITHUB_REF_NAME#v}" + if [[ "$version" != "$cargo_version" ]]; then + echo "tag v${version} does not match Cargo.toml ${cargo_version}" >&2 + exit 1 + fi + fi + mkdir -p dist + printf '%s\n' "$version" > dist/VERSION + - name: Build release binary - run: cargo build --release --locked - - name: Create GitHub Release - uses: softprops/action-gh-release@v3 + shell: bash + env: + TARGET: ${{ matrix.target }} + run: cargo build --release --locked --target "$TARGET" + + - name: Package tar.gz + if: matrix.archive == 'tar.gz' + shell: bash + env: + TARGET: ${{ matrix.target }} + run: | + set -euo pipefail + version="$(tr -d '\r\n' < dist/VERSION)" + name="wikifier-${version}-${TARGET}" + stage="$(mktemp -d)" + cp "target/${TARGET}/release/wikifier" "${stage}/wikifier" + tar -C "$stage" -czf "${name}.tar.gz" wikifier + rm -rf "$stage" dist/VERSION + mv "${name}.tar.gz" dist/ + listing="$(tar -tzf "dist/${name}.tar.gz")" + if [[ "$listing" != "wikifier" ]]; then + echo "archive listing: ${listing}" >&2 + exit 1 + fi + + - name: Package zip + if: matrix.archive == 'zip' + shell: pwsh + env: + TARGET: ${{ matrix.target }} + run: | + $ErrorActionPreference = 'Stop' + $version = (Get-Content -Raw 'dist/VERSION').Trim() + $name = "wikifier-$version-$env:TARGET" + Copy-Item "target/$env:TARGET/release/wikifier.exe" 'dist/wikifier.exe' + Remove-Item 'dist/VERSION' + Push-Location dist + try { + Compress-Archive -LiteralPath 'wikifier.exe' -DestinationPath "$name.zip" -Force + } finally { + Pop-Location + } + Remove-Item 'dist/wikifier.exe' + if (-not (Test-Path "dist/$name.zip")) { throw "missing dist/$name.zip" } + + - name: Upload archive + uses: actions/upload-artifact@v7 + with: + name: release-${{ matrix.target }} + path: dist/wikifier-* + if-no-files-found: error + + release: + name: GitHub release + needs: build + runs-on: ubuntu-latest + permissions: + contents: write + actions: write + steps: + - uses: actions/checkout@v6 + + - name: Download archives + uses: actions/download-artifact@v8 with: - generate_release_notes: true - files: target/release/wikifier - body: | - ## Installation + path: dist + pattern: release-* + merge-multiple: true + + - name: SHA256SUMS + shell: bash + run: | + set -euo pipefail + cd dist + shopt -s nullglob + archives=(wikifier-*.tar.gz wikifier-*.zip) + if [[ ${#archives[@]} -ne 4 ]]; then + echo "expected 4 release archives, found ${#archives[@]}" >&2 + ls -la >&2 + exit 1 + fi + for archive in "${archives[@]}"; do + case "$archive" in + *.tar.gz) + listing="$(tar -tzf "$archive")" + if [[ "$listing" != "wikifier" ]]; then + echo "$archive listing: ${listing}" >&2 + exit 1 + fi + ;; + *.zip) + sig="$(od -An -tx1 -N4 "$archive" | tr -d ' \n')" + if [[ "$sig" != "504b0304" ]]; then + echo "$archive is not a zip (magic $sig)" >&2 + exit 1 + fi + listing="$(unzip -l "$archive")" + if [[ "$listing" != *wikifier.exe* ]]; then + echo "$archive listing: ${listing}" >&2 + exit 1 + fi + ;; + esac + done + sha256sum -- "${archives[@]}" | LC_ALL=C sort -k2 > SHA256SUMS + sha256sum --check SHA256SUMS + cat SHA256SUMS + + - name: Write release body + shell: bash + run: | + set -euo pipefail + cargo_version="$(awk -F '"' '/^version = / { print $2; exit }' Cargo.toml)" + version="$cargo_version" + if [[ "$GITHUB_REF" == refs/tags/v*.*.* ]]; then + version="${GITHUB_REF_NAME#v}" + fi + cat > release_body.md <<'EOF' + ## Install + + Download the archive for your platform and check it against `SHA256SUMS` before you unpack it. - Download the `wikifier` binary from this release, or build from source: + | Platform | File | + |---|---| + | Linux x86_64 | `wikifier-@@VERSION@@-x86_64-unknown-linux-gnu.tar.gz` | + | macOS Apple silicon (arm64) | `wikifier-@@VERSION@@-aarch64-apple-darwin.tar.gz` | + | macOS Intel (x86_64) | `wikifier-@@VERSION@@-x86_64-apple-darwin.tar.gz` | + | Windows x86_64 | `wikifier-@@VERSION@@-x86_64-pc-windows-msvc.zip` | - ```bash - cargo build --release - ./target/release/wikifier --version - ``` + On Linux and macOS, `tar -xzf wikifier-@@VERSION@@-.tar.gz` and run `./wikifier`. On Windows, unzip the archive and run `wikifier.exe`. Put that binary on your `PATH`. + + Or build from source: + + ```bash + cargo build --release + ./target/release/wikifier --version + ``` + + `pip install wikifier` still installs the old Python 4.7 package. + + The change list is in CHANGELOG.md. Measured startup, `update-maps`, and session commands are in the README Benchmarks section. + EOF + sed -i "s/@@VERSION@@/${version}/g" release_body.md + + - name: Create GitHub Release + uses: softprops/action-gh-release@v3 + with: + body_path: release_body.md + files: | + dist/wikifier-* + dist/SHA256SUMS env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/AGENTS.md b/AGENTS.md index aca9fad..af87734 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,12 +1,12 @@ # AGENTS.md -Entry point for any coding agent working in this repository, or using Wikifier on another tree. The day-to-day contract is `skills/run.md` (Agent Protocol v0.7, package 4.7.x). Read that file before substantive work. This file says what is live, what is history, and which rules are easy to miss. +Entry point for any coding agent working in this repository, or using Wikifier on another tree. The day-to-day contract is `skills/run.md` (Agent Protocol v0.7, package 5.0.0). Read that file before substantive work. This file says what is live, what is history, and which rules are easy to miss. ## What this program is Wikifier is a zero-dependency, agent-to-agent codebase wiki. Agents look up a health matrix, a dependency map, and short per-file wikis instead of re-reading full sources. The human dashboard (`index.html`) is a read-only view of the same artifacts. -The program is the std-only Rust binary under `src/`. Version is `Cargo.toml` (`wikifier --version`). `wikifier.sh`, `wikifier.ps1`, and `wikifier.bat` only exec that binary. MCP is `wikifier mcp` in the same binary. `.mcp.json` launches `wikifier` with args `["mcp"]`. There is no Python package. `pip install wikifier` and `python -m wikifier` are the archived product. +The program is the std-only Rust binary under `src/`. Version is `Cargo.toml` (`wikifier --version`). `wikifier.sh`, `wikifier.ps1`, and `wikifier.bat` only exec that binary. MCP is `wikifier mcp` in the same binary. `.mcp.json` launches `wikifier` with args `["mcp"]`. `pip install wikifier` and `python -m wikifier` are the archived Python 4.7 package. `src/main.rs` and `src/mcp.rs` both call `src/api.rs`. Every call returns JSON with `success`. An operational failure is `{"success": false, "error", "error_type"}`. diff --git a/AGENTS.md.wiki.md b/AGENTS.md.wiki.md index 5ae6fd9..6a603af 100644 --- a/AGENTS.md.wiki.md +++ b/AGENTS.md.wiki.md @@ -2,4 +2,4 @@ **Role:** Entry point for any coding agent in this repository. -It points at `skills/run.md` (protocol v0.7) and names the live Rust binary, the daily loop, and the Python-era records kept under `Findings/archive/`. Map roots stay `src/` and `tests/`. The import scan stays comment-masked regex plus named re-exports. Rust also resolves `crate::`, `self::`, `super::`, root crate names, and `[workspace] members`, so `src/main.rs` and `tests/*.rs` are dependents of the library modules they import. `mark-green` checks Rust `pub` names, impl methods, and trait-impl items. +It points at `skills/run.md` (protocol v0.7, package 5.0.0) and names the live Rust binary, the daily loop, and the Python-era records kept under `Findings/archive/`. `pip install wikifier` is the archived Python 4.7 package. Map roots stay `src/` and `tests/`. The import scan stays comment-masked regex plus named re-exports. Rust also resolves `crate::`, `self::`, `super::`, root crate names, and `[workspace] members`, so `src/main.rs` and `tests/*.rs` are dependents of the library modules they import. `mark-green` checks Rust `pub` names, impl methods, and trait-impl items. diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a3b983..2e65c2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,10 +9,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [5.0.0] - 2026-11-03 + +First release of the std-only Rust rewrite. `[dependencies]` is empty: no crates.io crates and no Python runtime. The binary implements the Python 4.7 agent contract. Protocol v0.7 stays. `pip install wikifier` still installs that Python 4.7 package. + +Python 4.7 at `24812ef` versus the Rust binary, 5 runs, median milliseconds (min–max). That Rust binary reported 4.7.0 when it was timed (`scripts/benchmark_results.md`). Figures: [Benchmarks](README.md#benchmarks). On the large tree, cold `update-maps` was 12675 (12540–13094) for Python and 3142 (3114–3305) for Rust; warm was 422 (417–433) and 246 (243–253). Resolved file edges on that tree were 9074 and 9074. Medium (this repo) was 44 Python and 98 Rust. Startup (`--version`) was 63 (61–66) and 2 (1–2). + ### Breaking -- The Python package is gone. Wikifier is the std-only Rust binary (`cargo build --release`). `pip install wikifier` and `python -m wikifier` are no longer the product. `wikifier.sh` / `.ps1` / `.bat` launch the Rust binary. MCP is `wikifier mcp`. +- This repository no longer ships the Python package. Wikifier 5.0.0 is the std-only Rust binary (`cargo build --release`, or a release archive). `pip install wikifier` still installs the archived Python 4.7 package. `wikifier.sh` / `.ps1` / `.bat` launch the Rust binary. MCP is `wikifier mcp`. ### Added +- A `v*.*.*` tag, after the test job, builds release binaries for `x86_64-unknown-linux-gnu`, `aarch64-apple-darwin`, `x86_64-apple-darwin`, and `x86_64-pc-windows-msvc` with the same Rust 1.83.0 pin as CI. Unix archives are `.tar.gz`, Windows is `.zip`, named `wikifier--`. `SHA256SUMS` is uploaded with them. - `update-maps` writes `library.md` (file tree, Mermaid, dependency table) and sharded folder cards under `.wikifier_staging/maps/`. `--directory`, `--max-files`, and `--stream` are honored. A `--max-files` budget leaves `map_complete=false`; the next run resumes because parsed files are stat-skipped. - `prune-health --deleted-missing` drops health rows whose path is no longer a file, including rows that still sit under a map root. - `dependencies --full` returns per-edge confidence, conditional / dynamic / via-barrel flags, and ACS reason codes. `cycles` adds `break_hint` (lowest-confidence edge in the component) and `external_edges`. diff --git a/CHANGELOG.md.wiki.md b/CHANGELOG.md.wiki.md index ab38179..46f2a2d 100644 --- a/CHANGELOG.md.wiki.md +++ b/CHANGELOG.md.wiki.md @@ -1,5 +1,5 @@ # CHANGELOG.md -**Role:** Keep a Changelog history for package 4.7.x. +**Role:** Keep a Changelog history. 5.0.0 is the first Rust release (std-only, Python 4.7 contract, release archives). The 4.7.0 section is the Python package that shipped then. -The 4.7.0 section is the record of that release, including the Python package that shipped then. Unreleased notes describe the Rust binary: map artifacts, dependency flags, wiki checks, deletion, background commands, the dashboard serve routes, MCP error reporting, `heal-stubs --dry-run`, and `init DIR`. The import scan is recorded as `regex+reexport`. Unreleased notes that Rust crate-name imports resolve to the library and to `[workspace] members`, that the unreproducible lookup benchmark was removed, that Rust `pub` names including impl methods can be verified Green, and that the MCP deadline, check-changes cap, sqlite import, and low-confidence edges have tests. CI pins Rust 1.83.0 and requires Ubuntu, macOS, and Windows. CI checks the empty dependency list without Python. +The 5.0.0 notes cover map artifacts, dependency flags, wiki checks, deletion, background commands, the dashboard serve routes, MCP error reporting, Rust crate and workspace resolution, and the tag workflow that uploads `wikifier--` archives plus `SHA256SUMS`. The import scan is recorded as `regex+reexport`. Benchmarks link to the README Benchmarks section and `scripts/benchmark_results.md`. CI pins Rust 1.83.0 and requires Ubuntu, macOS, and Windows. diff --git a/CLAUDE.md b/CLAUDE.md index f8179d4..10137f5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Wikifier is a **zero-dependency, agent-to-agent codebase wiki**: it gives AI agents a token-efficient, queryable map of a codebase (health matrix, dependency graph, per-file wiki summaries) so they can look things up instead of re-reading full sources. The human layer (`index.html` dashboard) is strictly secondary — a read-only viewer of the same artifacts. It is deliberately NOT a general human documentation tool. -**This repo dogfoods itself.** Wikifier runs on its own source, and you are expected to follow its agent protocol when working here (see below). `AGENTS.md` is the entry point for any coding agent. The authoritative contract is `skills/run.md` (Agent Protocol v0.7, package 4.7.x). Read it before substantive work. +**This repo dogfoods itself.** Wikifier runs on its own source, and you are expected to follow its agent protocol when working here (see below). `AGENTS.md` is the entry point for any coding agent. The authoritative contract is `skills/run.md` (Agent Protocol v0.7, package 5.0.0). Read it before substantive work. **USE WIKIFIER FIRST (non-negotiable in this repo, preferred on any managed target):** At session start call `session_bootstrap` (MCP or `wikifier session-bootstrap`). Prefer Core daily tools (`list_core_tools`): bootstrap, `check_changes`, `prepare_edit`, `suggest_next_actions` (json `actions[]`), `record_change`, `mark_green`. Look up via map/wiki/deps before re-reading full sources. Selective work only (🔴 / actionable 🟡). Never skip `record_change` after edits. @@ -56,7 +56,7 @@ wikifier mcp # MCP server on stdio ## Architecture -Pipeline: **scan → parse → resolve → cache → health → artifacts**, implemented in Rust under `src/` (version in `Cargo.toml`, currently **4.7.x**). The former Python package has been removed. CLI (`src/main.rs`) and MCP (`src/mcp.rs`) both call `src/api.rs`. Every function returns a JSON object with `success`. Operational failures return `{"success": false, "error", "error_type"}`. +Pipeline: **scan → parse → resolve → cache → health → artifacts**, implemented in Rust under `src/` (version in `Cargo.toml`, currently **5.0.0**). The Python package is no longer in this repository. `pip install wikifier` still installs Python 4.7. CLI (`src/main.rs`) and MCP (`src/mcp.rs`) both call `src/api.rs`. Every function returns a JSON object with `success`. Operational failures return `{"success": false, "error", "error_type"}`. - `src/api.rs` — the library surface: `session_bootstrap`, `check_changes`, `prepare_edit`, `suggest_next_actions`, `record_change`, `record_changes`, `record_deletion`, `mark_green`, `verify_wikis`, `update_maps` / `update_maps_run`, `dependency_report`, `load_dependents`, `cycles`, `init_project`, `serve_loop`, `monitor_loop`, `daemon_ctl`. `check_changes` watches mapped files, Green files, and `monitored_paths.txt`. `record_changes` reads `git status` (git is optional). - `src/scope.rs` — project root, `map_paths.txt`, `monitored_paths.txt`, excludes, and the file walk. A missing configured map directory is a scope error. Three or more child projects make the root a container and the walk stops. diff --git a/CLAUDE.md.wiki.md b/CLAUDE.md.wiki.md index c32c9c0..d9a3c6b 100644 --- a/CLAUDE.md.wiki.md +++ b/CLAUDE.md.wiki.md @@ -2,4 +2,4 @@ **Role:** Repo guidance for an agent working in this tree. -Hard constraints: empty Cargo dependencies, no hand-edits of `library.md` or the health and pending files, and the human dashboard stays secondary. The Python-era plan logs live under `Findings/archive/`. It points agents at `AGENTS.md` and `skills/run.md`. The architecture section names the Rust modules under `src/`, the library file tree, and this repo's map roots `src/` and `tests/`. The parse note includes Rust `crate::`, `self::`, `super::`, Cargo.toml crate names, `[workspace] members`, and `rust_public_symbols` for wiki checks. JSON failures use `success: false`. +Hard constraints: empty Cargo dependencies, no hand-edits of `library.md` or the health and pending files, and the human dashboard stays secondary. The Python-era plan logs live under `Findings/archive/`. It points agents at `AGENTS.md` and `skills/run.md` (protocol v0.7, package 5.0.0). The architecture section names the Rust modules under `src/`, the library file tree, and this repo's map roots `src/` and `tests/`. The parse note includes Rust `crate::`, `self::`, `super::`, Cargo.toml crate names, `[workspace] members`, and `rust_public_symbols` for wiki checks. JSON failures use `success: false`. diff --git a/Cargo.lock b/Cargo.lock index 5f697ea..6c8c4a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,4 +4,4 @@ version = 4 [[package]] name = "wikifier" -version = "4.7.0" +version = "5.0.0" diff --git a/Cargo.toml b/Cargo.toml index fd64a58..93878da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wikifier" -version = "4.7.0" +version = "5.0.0" edition = "2021" description = "Wikifier — zero-dependency agent-to-agent codebase wiki." license = "MIT" diff --git a/README.md b/README.md index e282623..2848465 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,29 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![GitHub Stars](https://img.shields.io/github/stars/IronAdamant/wikifier?style=social)](https://github.com/IronAdamant/wikifier/stargazers) -**The PyPI package is archived.** It will not receive further uploads, and it is not the project anymore. Do not use `pip install wikifier` for new work. +## Install -The replacement is this repository. Wikifier is a std-only Rust program. Build it from source: +Download a binary from the [GitHub releases](https://github.com/IronAdamant/wikifier/releases). A `v*.*.*` tag publishes these archives and a `SHA256SUMS` file: + +| Platform | Archive | +|---|---| +| Linux x86_64 | `wikifier--x86_64-unknown-linux-gnu.tar.gz` | +| macOS Apple silicon | `wikifier--aarch64-apple-darwin.tar.gz` | +| macOS Intel | `wikifier--x86_64-apple-darwin.tar.gz` | +| Windows x86_64 | `wikifier--x86_64-pc-windows-msvc.zip` | + +Check `SHA256SUMS`, unpack, and put `wikifier` (`wikifier.exe` on Windows) on your `PATH`. + +```bash +# Linux x86_64, 5.0.0 +curl -fsSL -O https://github.com/IronAdamant/wikifier/releases/download/v5.0.0/SHA256SUMS +curl -fsSL -O https://github.com/IronAdamant/wikifier/releases/download/v5.0.0/wikifier-5.0.0-x86_64-unknown-linux-gnu.tar.gz +sha256sum --check --ignore-missing SHA256SUMS +tar -xzf wikifier-5.0.0-x86_64-unknown-linux-gnu.tar.gz +./wikifier --version +``` + +Or build from source. `[dependencies]` is empty: ```bash git clone https://github.com/IronAdamant/wikifier @@ -14,6 +34,8 @@ cargo build --release ./target/release/wikifier --version ``` +`pip install wikifier` still installs the archived Python 4.7 package. + **A zero-dependency codebase wiki for AI agents.** Token-efficient maps so LLMs look things up instead of re-reading full sources. Wikifier is an **agent-to-agent** tool: it builds a living map of a project (health matrix, dependency graph, short file summaries) and agents keep that map current as they work. Humans can peek via a small dashboard; the product is the agent loop, not a general docs site or IDE. @@ -74,7 +96,7 @@ Always set an explicit root for external trees: `WIKIFIER_PROJECT_ROOT=/abs/path ## Steady state (only touch what needs it) -Full protocol: [`skills/run.md`](skills/run.md) (Agent Protocol v0.7 — package **4.7.x**). +Full protocol: [`skills/run.md`](skills/run.md) (Agent Protocol v0.7 — package **5.0.0**). ```bash wikifier session-bootstrap # one-shot: root, health, attention, actions[], names-only map_index @@ -137,7 +159,7 @@ Residual floor on large scopes is mtime/stat + live count under MapScope (not fu ## Benchmarks -Python 4.7 at `24812ef` versus this Rust release build, 5 runs, median milliseconds (min–max). Machine: Intel Xeon, 4 cores, 15.6 GiB RAM, Linux 6.12.94+, Python 3.12.3, rustc 1.83.0. Cold deletes `.wikifier_staging` first. Warm is the next `update-maps`. Full notes, peak RSS, and commands: [`scripts/benchmark_results.md`](scripts/benchmark_results.md). Reproduce with `scripts/benchmark_parity.sh`. +Python 4.7 at `24812ef` versus the Rust binary recorded in [`scripts/benchmark_results.md`](scripts/benchmark_results.md) (that binary reported 4.7.0). 5.0.0 is that program. 5 runs, median milliseconds (min–max). Machine: Intel Xeon, 4 cores, 15.6 GiB RAM, Linux 6.12.94+, Python 3.12.3, rustc 1.83.0. Cold deletes `.wikifier_staging` first. Warm is the next `update-maps`. Full notes, peak RSS, and commands are in that file. Reproduce with `scripts/benchmark_parity.sh`. | Command | small Python | small Rust | medium Python | medium Rust | large Python | large Rust | |---|---:|---:|---:|---:|---:|---:| @@ -192,7 +214,7 @@ Tests: `cargo test` (std-only Rust; accuracy fixtures, cache lookups, and the ag | `wikifier monitor` / `daemon` | Background maintenance (`WIKIFIER_DAEMON_MAPS=0` for check-only) | | `wikifier serve` | Localhost dashboard with Run/Stop | -The same operations live in `src/api.rs`. Agents call the CLI or `wikifier mcp`. `wikifier.sh` / `wikifier.ps1` / `wikifier.bat` launch the Rust binary (`WIKIFIER_BIN` overrides the path). There is no Python package. +The same operations live in `src/api.rs`. Agents call the CLI or `wikifier mcp`. `wikifier.sh` / `wikifier.ps1` / `wikifier.bat` launch the Rust binary (`WIKIFIER_BIN` overrides the path). `pip install wikifier` still installs the archived Python 4.7 package. ## MCP @@ -219,7 +241,7 @@ This repo's `.mcp.json` launches `wikifier` with argument `mcp`. Tool names and ## Links -- [PyPI](https://pypi.org/project/wikifier/) · [GitHub](https://github.com/IronAdamant/wikifier) +- [Releases](https://github.com/IronAdamant/wikifier/releases) · [PyPI](https://pypi.org/project/wikifier/) · [GitHub](https://github.com/IronAdamant/wikifier) - Agent protocol: [`skills/run.md`](skills/run.md) - Changelog: [`CHANGELOG.md`](CHANGELOG.md) - Dogfood notes: `Findings/` (historical plans and research in `Findings/archive/`) diff --git a/README.md.wiki.md b/README.md.wiki.md index cc0cf2d..cd1e259 100644 --- a/README.md.wiki.md +++ b/README.md.wiki.md @@ -2,4 +2,4 @@ **Role:** The public entry point for the std-only Rust program. -It tells agents to build with `cargo build --release`, start in this repo at `AGENTS.md`, and follow `skills/run.md`. Bootstrap a target with `wikifier init`. The language table describes the comment-masked regex scans, including Rust crate-name imports. The lookup benchmark that cited a missing `scripts/benchmark_lookup.py` is gone. The performance table that remains says its numbers are from the Python package. `mark-green` checks Rust `pub` items, impl methods, and trait-impl items, as well as Python and JS/TS. Rust also reads `[workspace] members`. MCP is `wikifier mcp`. +Install is a release archive (`wikifier--`, plus `SHA256SUMS`) or `cargo build --release`. `pip install wikifier` still installs Python 4.7. Agents start in this repo at `AGENTS.md` and follow `skills/run.md` (protocol v0.7, package 5.0.0). Bootstrap a target with `wikifier init`. The language table describes the comment-masked regex scans, including Rust crate-name imports. The lookup benchmark that cited a missing `scripts/benchmark_lookup.py` is gone. The performance table that remains says its numbers are from the Python package. `mark-green` checks Rust `pub` items, impl methods, and trait-impl items, as well as Python and JS/TS. Rust also reads `[workspace] members`. MCP is `wikifier mcp`. diff --git a/file_health.json b/file_health.json index 5ac356a..4a75859 100644 --- a/file_health.json +++ b/file_health.json @@ -1 +1 @@ -{"entries":{"AGENTS.md":{"last_updated":"2026-11-03 08:56:14","reason":"Correct the scanner and wiki-lookup notes.","source_content_hash":"sha256:42429e681e0de3c1e95b8a98c2dd3eccf8ac60f79da7ed55224102934b8d00d2","source_mtime_ns":"1793684917066518484","status":"🟡 Yellow","wiki_hash":"sha256:d5907471b6831952e34e64a033d471bb0264ef4dee92151ca2c0eaf40b1d16ef"},"CHANGELOG.md":{"last_updated":"2026-11-03 08:56:14","reason":"Record the parity work under Unreleased.","source_content_hash":"sha256:be95d797bbc840cf053f5ce7623f9907d67798dc5ea2092c2ff60d1189fdd889","source_mtime_ns":"1793684916746519688","status":"🟡 Yellow","wiki_hash":"sha256:43a7a238cc155970024675795f4d1f1fc0000e22cd22898ca7206c57dc111e67"},"CLAUDE.md":{"last_updated":"2026-11-03 08:56:14","reason":"Correct the tsconfig note.","source_content_hash":"sha256:87053cbd72c291e0057cd438bdb57f3fba43fec214b326d9b944520db82483fa","source_mtime_ns":"1793684916630520123","status":"🟡 Yellow","wiki_hash":"sha256:afc87f10c92c7cf033d4a5af38ff318ccc1d8ff069b88cab22b3563552ea071b"},"CONTRIBUTING.md":{"last_updated":"2026-11-03 05:34:35","reason":"Address the 3 Nov review findings (subid=review-2026-11-03)","source_content_hash":"sha256:d090280cd3d1c3ab1cf342d69392471ed3835512ff7381bf4409bada57bbe89c","source_mtime_ns":"1793683924316411256","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:ec0bd9342b8e9dfeefaabc8dcddeb577f6bd4f1c760d7286b21d709c2a372b29"},"Findings/M5-Dogfood-Assessment-Report.md":{"last_updated":"2026-07-09 05:02:27","reason":"kept; stale yellow cleared","source_content_hash":"sha256:238435188b1699e5bcf4753b62a6fe55cb064413a291259f0b696b5bd3c1692f","source_mtime_ns":"1780519956000000000","status":"🟢 Green"},"Findings/M5-Dogfood-Progress.md":{"last_updated":"2026-11-03 08:06:46","reason":"Wiki marks this file as the historical M5 log (subid=protocol-v07)","source_content_hash":"sha256:ef55167e819806060dfd7dfe7cdfd4d02024ca97706a7faa243710e2630b65fe","source_mtime_ns":"1793408707259550076","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:b6b1fa4bbee0c7e8c4035cd925f6d07e1221ba483e3472878d5b88236c5cf7f9"},"Findings/M5.1-cross-hardening-analysis.md":{"last_updated":"2026-07-09 05:02:27","reason":"kept; stale yellow cleared","source_content_hash":"sha256:a2c2414e5b6c9b1a802bec8734a7924850d546cd7746a8087216f3685ca36cb4","source_mtime_ns":"1780519762000000000","status":"🟢 Green"},"Findings/Milestones-Overview.md":{"last_updated":"2026-07-09 05:02:27","reason":"kept; stale yellow cleared","source_content_hash":"sha256:f8b7030ec8980774cf3a2560ad7aee6537263eadf8374e650718f7c6793c6d50","source_mtime_ns":"1780800604000000000","status":"🟢 Green"},"Findings/p6_real_world_validation_report.md":{"last_updated":"2026-07-09 05:02:27","reason":"kept; stale yellow cleared","source_content_hash":"sha256:0468224675888f2747674324726c0ea9a5dddded39d9a1a50f22fc3357dafc0f","source_mtime_ns":"1780520008000000000","status":"🟢 Green"},"README.md":{"last_updated":"2026-11-03 08:56:14","reason":"Command notes and the measured benchmark table.","source_content_hash":"sha256:3edc4babf7fe44662dd94e8b784ef87cf845d1130f04720552daf67fc77673d8","source_mtime_ns":"1793684917046518560","status":"🟡 Yellow","wiki_hash":"sha256:725a9cdfc3d48d9a343a319b192be15d107543a64246438ef72e83e710cb0667"},"docs/spec.md":{"last_updated":"2026-11-03 08:00:11","reason":"Name the Rust binary and protocol v0.7 in the living principles (subid=protocol-v07)","source_content_hash":"sha256:31fe6b3b3d705628692eb0512cf44cbb21861ccfc5bb02afdd46d796ec066c6e","source_mtime_ns":"1793653008580824356","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:a58b929d25d510f15f9fe176d7823e852f6d089e398accc2e22e1ed189f260ac"},"scripts/benchmark_parity.sh":{"last_updated":"2026-11-03 08:56:15","reason":"Benchmark script and measured results.","source_content_hash":"sha256:b8f72e3245e77b9df17b303293d8cbe4a93cc36023c41b89a794b77b01daef87","status":"🟡 Yellow"},"scripts/benchmark_results.md":{"last_updated":"2026-11-03 08:56:15","reason":"Benchmark script and measured results.","source_content_hash":"sha256:8bf9342fce85f126a37f812b03b6f6997f1fe8e7c5176d30301c1a4a15aeee29","status":"🟡 Yellow"},"skills/run.md":{"last_updated":"2026-11-03 08:56:14","reason":"Document the parity behaviour.","source_content_hash":"sha256:1bc5a678c5a2dff041ab80f88b314ca69e6d233a143ded039632469a081bbbde","source_mtime_ns":"1793684917474516945","status":"🟡 Yellow","wiki_hash":"sha256:5f6e7868ee9adee68bd634352413338e9a367eac640c623545bcad60f64b6389"},"src/api.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"MapRun\nVERSION\nMCP_TOOLS\nupdate_maps\nupdate_maps_opts\nupdate_maps_run\nmapped_edges\nload_dependencies\ndependency_report\nload_dependents\nlist_paths\nsession_bootstrap\nsuggest_next_actions\ncheck_changes\nprepare_edit\nrecord_change\nmark_green\nhealth\nread_health\nread_journal\ncache_status\nvalidate\ncycles\nverify_wikis\nrecord_changes\nrecord_changes_opts\nrecord_deletion\nheal_stubs\nprune_health\nprune_health_opts\nprune_pending\nstale_wikis\nprune_barrels\nmetrics_snapshot\nhealing_stats\nresolution_diagnostics\nbarrel_reports\nincremental_status\nserve_once\nserve_loop\nmonitor_loop\ndaemon_ctl\ndispatch\nCLI_COMMANDS\nensure_root","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:8b23c099bfab315e96c055c0bcaf7d7edceb9e40420adc2d21a8ba930abbf1ef","source_mtime_ns":"1793684003575439733","status":"🟡 Yellow","wiki_hash":"sha256:69ac1101639d23ac6893adf37e501a820e277ace0ddeaf3c2c80afba28557e54"},"src/artifacts.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"HealthRow\nread_health\nwrite_health\nupsert_health_row\nJournalEntry\njournal_path\nread_journal\nparse_journal\nJournalWrite\nappend_journal\nread_pending\nfolder_card\nnew\nkeep_baseline_from","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:6a7ca10120cbb4a37de62999330a92b181f3ebd7210f92209b280ba5282d8544","source_mtime_ns":"1793678007374624809","status":"🟡 Yellow","wiki_hash":"sha256:75bf0f72cc4bd57b6178dc6a0a58b8bf97bc3e7265485a28102093b967f20181"},"src/cache.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"check_consistency\nrebuild\nConsistency\nSession\npayload_path\nby_src_path\ncommit_pending_path\nload_dependencies\nInternalEdge\nconfidence_of\nformat_edge_line\nDependencyView\nload_dependency_view\nload_dependents\nlist_prefix\nall_paths\nFileUpdate\nupsert_file\nremove_file\nindexed_rows\npayload_bytes\nstat_ns\nedges\nrel_string\nwrite_barrel_record\nprune_barrel_files\nconfidence\nacs_reason","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:fb8a06997639e0f1556cc64ce5792f1525b0cb3c4afab5f9cbfcaeb9c809adf4","source_mtime_ns":"1793678007370625780","status":"🟡 Yellow","wiki_hash":"sha256:afb7493ff8742682f5f3c743da8919408502e6a6e75bba9998eb59cbbaf1c02a"},"src/cache_commit.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"Consistency\nSession\ncheck_consistency\nrebuild\nopen\nknown\ndsts_of\nnote_stat\nrels\nupsert\nremove\nstage_barrel\ncommit","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:c987ccdccdd0c980c0af64a2dcb349cd3b4ed1de7070a481dba146782f40a745","source_mtime_ns":"1793684429116993727","status":"🟡 Yellow","wiki_hash":"sha256:c6f3fbdcd6aafe62de119c302e09e11ae0ea208681c52166cfcf79de80bb5f6c"},"src/cycle_report.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:db35b610d9a9f9917805da9383e61872e66e640482f57fc9e17ae91daf77fe3d","status":"🟡 Yellow"},"src/daemon_svc.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:0887baeb3ad7f2fca851fccc0d9335dafd4b42f3e54e236175a13d39c5bcd063","status":"🟡 Yellow"},"src/jsonutil.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"Json\nparse\nparse_jsonc\nstrip_json_comments\nobj\nfrom_pairs\nget\nas_str\nas_bool\nas_array\nas_object\ninsert\nfmt","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:cb71e00e352df010928a42323d6d87bbe67348834a209348fc174b9d00489676","source_mtime_ns":"1793684429116993727","status":"🟡 Yellow","wiki_hash":"sha256:fb4cffba8b14a179dd90f201b61df2608ca78a9775e9646e7f011f1b9fa07c63"},"src/legacy_cache.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"import_if_empty","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:a127d0b1742d69b736194ca98579f5fc0611fc51a291d691aef6fe586fd68ba3","source_mtime_ns":"1793683981803718735","status":"🟡 Yellow","wiki_hash":"sha256:a6fe6c79185a46cc4b30d215475bab28f517f6e5a6fd7bce6423c2792814aac8"},"src/lib.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"api\nartifacts\ncache\njsonutil\nmaps_out\nmcp\nparse\nscope\nsha256\ntimeutil\ncache_status\ncheck_changes\nhealth\nlist_paths\nload_dependencies\nload_dependents\nmapped_edges\nmark_green\nprepare_edit\nread_health\nread_journal\nrecord_change\nsession_bootstrap\nsuggest_next_actions\nupdate_maps\nVERSION\nJson","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:9c27c83b58ff7f1acf62d5d19ee31e2070daa06499e27141cc7071fae44e26b8","source_mtime_ns":"1793678007370625780","status":"🟡 Yellow","wiki_hash":"sha256:d7e771a3ff63ab55a7967195e3b403dd75d5ae020a383adc56f0e5c09d7b03a0"},"src/low_conf.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:3ade5fc70ce585a48b9acf6a2b48753e58e80f63281a31c8b8453816700b375e","status":"🟡 Yellow"},"src/main.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:2b3cebdafca3ca3da7831101a63b36f72260b3b2879871e5364b427428e782e0","source_mtime_ns":"1793683990351610198","status":"🟡 Yellow","wiki_hash":"sha256:db6e1cd5beeb90e5a65b3e00a37ee2c73ea4c53750771151e655459a1b823ff5"},"src/maps_out.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"write\nwrite_status\nread_status","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:c018687f1e511e23bc92a3f771a1f2bf5e693d513d8e4bcad958d9908f0af09c","source_mtime_ns":"1793678007370625780","status":"🟡 Yellow","wiki_hash":"sha256:d441c395fe565828a87c54d5545e4c89e4ec4cfc49308a08525e6dcf3c744e75"},"src/mcp.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"tool_schema\nhandle_message\nserve_stdio","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:22c88894fc72f3fad68a31c1582a01772a8409483d3a3127730eccce63067119","source_mtime_ns":"1793683982335712018","status":"🟡 Yellow","wiki_hash":"sha256:8414b1757bf3acc39a66a52443e9625cb027173b2783d996e39e9f707a9a1933"},"src/parse.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"RawImport\nKind\nScan\nlanguage\nread_utf8\nscan_file_warned\nscan_file\nresolve_project\nrust_public_symbols\nresolve_python_spec\nFactEdge\nFileFacts\nAnalysis\nanalyze_files\nanalyze_changed\nedges_for_files","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:5607acdac0b08854951700a9d2187a9f849d2fdb4febc2959fe065bcf778963a","source_mtime_ns":"1793684824322776381","status":"🟡 Yellow","wiki_hash":"sha256:c70af52c81a4dfffb364cba13ca21873491e83e1c9c5cee31ab2bab2bc379fbb"},"src/pending_line.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:c941813474dbb2cfc1ffed8c7bc9791d08eb718d92d336e1f42d1c1b0d67bcdc","status":"🟡 Yellow"},"src/proc.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:8f13798a8b9289d78913becc626056c8b016838570e356e09bfa3333e800351c","status":"🟡 Yellow"},"src/project_lock.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"ProjectLock\ndrop\nacquire","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:194e329f35ff59b11fc734b980a1ee33f8e464bcdb5eae899486e487daef3a25","source_mtime_ns":"1793678007370625780","status":"🟡 Yellow","wiki_hash":"sha256:fccc8d547f30262ff64d506d842472623e828ebe39fde71532a683c6956329d2"},"src/scope.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:6dec4152e1ae1657661bd9f504877c02dd70bdb97c39173a952bea2851bedb4c","status":"🟡 Yellow"},"src/sha256.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:d16c7732fbdd20b3697b78129e8052f676c42bc862065f2bfe2b16fae1b7df30","status":"🟡 Yellow"},"src/symbols.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:4a150ba04e9ea26020c874c5e256a9ec5acc3ef4d621fb6ff03b21935c3f8046","status":"🟡 Yellow"},"src/text_out.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:8e0edc1141a2c1745c0e6fdd7a7645c7332365fac532d52fb3e188f4ef06148e","status":"🟡 Yellow"},"src/timeutil.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:9921127144d9d40619e260753e700e9c8a47135ed95b2ad8791afb7fe78afd75","status":"🟡 Yellow"},"src/wiki_files.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:2612539ce9092a3d126d80ce2947f6b4555ddb0bb335769b1619ec67d08a5e84","status":"🟡 Yellow"},"tests/behaviour_gaps.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Tests for those parity fixes.","source_content_hash":"sha256:8c8d669dae2dbe39b88c2223d20fb2fca51ac1605c62edd108d6ef224223402b","source_mtime_ns":"1793684893298602299","status":"🟡 Yellow","wiki_hash":"sha256:b9d20a310ca48ffd858e6d0d4e49b5e0568ecb57dc5ad981eb54398562864691"},"tests/cache_and_artifacts.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Tests for those parity fixes.","source_content_hash":"sha256:b9483666c1e19f90d4db1af718b08beebadfbcba66152497b7694d8e757a5ec1","status":"🟡 Yellow"},"tests/cli_surface.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Tests for those parity fixes.","source_content_hash":"sha256:c6d2ec49ab47aac39a17e6d39fb7eae08d4b27935a9d68bc02a238000646c739","status":"🟡 Yellow"},"tests/contract_gaps.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Tests for those parity fixes.","source_content_hash":"sha256:dc91a239bbc615524b4ac2c58d06515183dfc4981309906003f551e6721d82ae","status":"🟡 Yellow"},"tests/dogfood.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:b596d9aa2a19c0e030e8d0c02613d1ced0ddf026c976bfcb3c563758bce57fb6","source_mtime_ns":"1793683337392806763","status":"🟡 Yellow","wiki_hash":"sha256:9546cc2062f19584c348419322f07d25d353c7f8ba0257e992372f63d798c020"},"tests/parity.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:0246038a1cc01bf66da2fd186ede61f2dcd2c98da9c0c90dd7f3b2cbab1036db","source_mtime_ns":"1793683314773282057","status":"🟡 Yellow","wiki_hash":"sha256:32753c244642df6e08f8578c6203f77225363783c15bc57c33a84f03989f2378"},"tests/parity_fixes.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:ac0fa6064323885f6e7bd767557fe3721723c8d20d60e36c7cc5265b85747e31","status":"🟡 Yellow"},"tests/protocol_v07.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:bb7cffecabc3fb51ebcc77c64f7fd78f5cd15c445d7e13493ed491227280f37d","source_mtime_ns":"1793684781738827745","status":"🟡 Yellow","wiki_hash":"sha256:b38f4a13e316cefd56070f822980b4f83d9cdacb850ab1978de48ed35c630ec8"},"tests/robustness.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:fad304193a47baa8cce21cff8786b35974c7c7f6f71b3318edeb68bd60121681","status":"🟡 Yellow"},"tests/skip_maps.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:2eed0c6bc97d91a4be3f2b6ab08c78c62a3a05725a503496e3df91abad6b2130","status":"🟡 Yellow"},"wikifier.sh":{"last_updated":"2026-11-03 08:06:46","reason":"Wiki describes the Rust binary launcher (subid=protocol-v07)","source_content_hash":"sha256:4f467e2117e8c361882054998cb0506717d9555e2aa570f0e176fc18d9c2f4aa","source_mtime_ns":"1793410024331635951","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:3876708eaec60862b9b8b6f73e2ae87e4abca2f228c456f973ddb7c9ee36854a"}},"version":2} \ No newline at end of file +{"entries":{".github/workflows/publish.yml":{"last_updated":"2026-11-03 09:27:04","reason":"Multi-target release archives and SHA256SUMS (subid=release-5.0.0)","source_content_hash":"sha256:930170e1eb57afbe2850a0e9c2ac179eb2b5947bf2f74d4292bcd2b0099ab8de","source_mtime_ns":"1793697915725124882","status":"🟢 Green","verification":"no_wiki"},"AGENTS.md":{"last_updated":"2026-11-03 09:27:04","reason":"Package line is 5.0.0; pip remains Python 4.7 (subid=release-5.0.0)","source_content_hash":"sha256:f2db15364d5b8b309d03a37fa123c55eb73103316632d2d0b3418205fea5625e","source_mtime_ns":"1793697832705476376","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:d82ebf68153d48b828a60ddafa7e0f4ed00095141048f3014da7e520d994cde0"},"CHANGELOG.md":{"last_updated":"2026-11-03 09:27:04","reason":"5.0.0 Rust release notes and benchmark link (subid=release-5.0.0)","source_content_hash":"sha256:799b5a8acb15bd3ddcd35d9812d7014bab833bbab5dd11b51a580c7da107e729","source_mtime_ns":"1793697832121478133","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:757601288624e346279cef86383a88cdf7c1c467e7c6538f40c05d475e243de8"},"CLAUDE.md":{"last_updated":"2026-11-03 09:27:04","reason":"Package line is 5.0.0 (subid=release-5.0.0)","source_content_hash":"sha256:2734c85af757bf0b873c3cc5ced86347f9042e37a90976023fbdbe43a6dbeda3","source_mtime_ns":"1793697832749476242","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:8991f81c78306a55befa7ef13876879fc5c22cd58ee6013567db4133afa14d34"},"CONTRIBUTING.md":{"last_updated":"2026-11-03 05:34:35","reason":"Address the 3 Nov review findings (subid=review-2026-11-03)","source_content_hash":"sha256:d090280cd3d1c3ab1cf342d69392471ed3835512ff7381bf4409bada57bbe89c","source_mtime_ns":"1793683924316411256","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:ec0bd9342b8e9dfeefaabc8dcddeb577f6bd4f1c760d7286b21d709c2a372b29"},"Cargo.lock":{"last_updated":"2026-11-03 09:27:04","reason":"Lockfile version 5.0.0 (subid=release-5.0.0)","source_content_hash":"sha256:eb5e5f51e2a4fd584bd48af18328f7eaaae1efc4ee9fb23743d85a34faa8b435","source_mtime_ns":"1793697831949478649","status":"🟢 Green","verification":"no_wiki"},"Cargo.toml":{"last_updated":"2026-11-03 09:27:04","reason":"Version 5.0.0 (subid=release-5.0.0)","source_content_hash":"sha256:d16350a4d796d62eac12d64651ff9e9ae843db94489bfa4fb67c4a657b31b288","source_mtime_ns":"1793697832013478456","status":"🟢 Green","verification":"no_wiki"},"Findings/M5-Dogfood-Assessment-Report.md":{"last_updated":"2026-07-09 05:02:27","reason":"kept; stale yellow cleared","source_content_hash":"sha256:238435188b1699e5bcf4753b62a6fe55cb064413a291259f0b696b5bd3c1692f","source_mtime_ns":"1780519956000000000","status":"🟢 Green"},"Findings/M5-Dogfood-Progress.md":{"last_updated":"2026-11-03 08:06:46","reason":"Wiki marks this file as the historical M5 log (subid=protocol-v07)","source_content_hash":"sha256:ef55167e819806060dfd7dfe7cdfd4d02024ca97706a7faa243710e2630b65fe","source_mtime_ns":"1793408707259550076","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:b6b1fa4bbee0c7e8c4035cd925f6d07e1221ba483e3472878d5b88236c5cf7f9"},"Findings/M5.1-cross-hardening-analysis.md":{"last_updated":"2026-07-09 05:02:27","reason":"kept; stale yellow cleared","source_content_hash":"sha256:a2c2414e5b6c9b1a802bec8734a7924850d546cd7746a8087216f3685ca36cb4","source_mtime_ns":"1780519762000000000","status":"🟢 Green"},"Findings/Milestones-Overview.md":{"last_updated":"2026-07-09 05:02:27","reason":"kept; stale yellow cleared","source_content_hash":"sha256:f8b7030ec8980774cf3a2560ad7aee6537263eadf8374e650718f7c6793c6d50","source_mtime_ns":"1780800604000000000","status":"🟢 Green"},"Findings/p6_real_world_validation_report.md":{"last_updated":"2026-07-09 05:02:27","reason":"kept; stale yellow cleared","source_content_hash":"sha256:0468224675888f2747674324726c0ea9a5dddded39d9a1a50f22fc3357dafc0f","source_mtime_ns":"1780520008000000000","status":"🟢 Green"},"README.md":{"last_updated":"2026-11-03 09:27:04","reason":"Install leads with release archives; package 5.0.0 (subid=release-5.0.0)","source_content_hash":"sha256:040de72ecff9502785073970d2d04dc8fa07da8d440b9e9dc6d8f0253655bd8e","source_mtime_ns":"1793697834025472402","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:db9ac3864b0bfcee45ebc1fc34622dabaa5ba34d49baa171626997c3e03c677f"},"docs/spec.md":{"last_updated":"2026-11-03 08:00:11","reason":"Name the Rust binary and protocol v0.7 in the living principles (subid=protocol-v07)","source_content_hash":"sha256:31fe6b3b3d705628692eb0512cf44cbb21861ccfc5bb02afdd46d796ec066c6e","source_mtime_ns":"1793653008580824356","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:a58b929d25d510f15f9fe176d7823e852f6d089e398accc2e22e1ed189f260ac"},"scripts/benchmark_parity.sh":{"last_updated":"2026-11-03 08:56:15","reason":"Benchmark script and measured results.","source_content_hash":"sha256:b8f72e3245e77b9df17b303293d8cbe4a93cc36023c41b89a794b77b01daef87","status":"🟡 Yellow"},"scripts/benchmark_results.md":{"last_updated":"2026-11-03 08:56:15","reason":"Benchmark script and measured results.","source_content_hash":"sha256:8bf9342fce85f126a37f812b03b6f6997f1fe8e7c5176d30301c1a4a15aeee29","status":"🟡 Yellow"},"skills/run.md":{"last_updated":"2026-11-03 09:27:04","reason":"Package line is 5.0.0; protocol stays v0.7 (subid=release-5.0.0)","source_content_hash":"sha256:2ab1c890e39e1b499ebcfd4dd4a83733450369af6ef922ddf4fb4469b63b6b54","source_mtime_ns":"1793697833221474822","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:3956ae27f074aa9f8a94c643d2c8fb9ab56c38eb75e47a9bd727ad5de38ea4c7"},"src/api.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"MapRun\nVERSION\nMCP_TOOLS\nupdate_maps\nupdate_maps_opts\nupdate_maps_run\nmapped_edges\nload_dependencies\ndependency_report\nload_dependents\nlist_paths\nsession_bootstrap\nsuggest_next_actions\ncheck_changes\nprepare_edit\nrecord_change\nmark_green\nhealth\nread_health\nread_journal\ncache_status\nvalidate\ncycles\nverify_wikis\nrecord_changes\nrecord_changes_opts\nrecord_deletion\nheal_stubs\nprune_health\nprune_health_opts\nprune_pending\nstale_wikis\nprune_barrels\nmetrics_snapshot\nhealing_stats\nresolution_diagnostics\nbarrel_reports\nincremental_status\nserve_once\nserve_loop\nmonitor_loop\ndaemon_ctl\ndispatch\nCLI_COMMANDS\nensure_root","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:8b23c099bfab315e96c055c0bcaf7d7edceb9e40420adc2d21a8ba930abbf1ef","source_mtime_ns":"1793684003575439733","status":"🟡 Yellow","wiki_hash":"sha256:69ac1101639d23ac6893adf37e501a820e277ace0ddeaf3c2c80afba28557e54"},"src/artifacts.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"HealthRow\nread_health\nwrite_health\nupsert_health_row\nJournalEntry\njournal_path\nread_journal\nparse_journal\nJournalWrite\nappend_journal\nread_pending\nfolder_card\nnew\nkeep_baseline_from","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:6a7ca10120cbb4a37de62999330a92b181f3ebd7210f92209b280ba5282d8544","source_mtime_ns":"1793678007374624809","status":"🟡 Yellow","wiki_hash":"sha256:75bf0f72cc4bd57b6178dc6a0a58b8bf97bc3e7265485a28102093b967f20181"},"src/cache.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"check_consistency\nrebuild\nConsistency\nSession\npayload_path\nby_src_path\ncommit_pending_path\nload_dependencies\nInternalEdge\nconfidence_of\nformat_edge_line\nDependencyView\nload_dependency_view\nload_dependents\nlist_prefix\nall_paths\nFileUpdate\nupsert_file\nremove_file\nindexed_rows\npayload_bytes\nstat_ns\nedges\nrel_string\nwrite_barrel_record\nprune_barrel_files\nconfidence\nacs_reason","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:fb8a06997639e0f1556cc64ce5792f1525b0cb3c4afab5f9cbfcaeb9c809adf4","source_mtime_ns":"1793678007370625780","status":"🟡 Yellow","wiki_hash":"sha256:afb7493ff8742682f5f3c743da8919408502e6a6e75bba9998eb59cbbaf1c02a"},"src/cache_commit.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"Consistency\nSession\ncheck_consistency\nrebuild\nopen\nknown\ndsts_of\nnote_stat\nrels\nupsert\nremove\nstage_barrel\ncommit","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:c987ccdccdd0c980c0af64a2dcb349cd3b4ed1de7070a481dba146782f40a745","source_mtime_ns":"1793684429116993727","status":"🟡 Yellow","wiki_hash":"sha256:c6f3fbdcd6aafe62de119c302e09e11ae0ea208681c52166cfcf79de80bb5f6c"},"src/cycle_report.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:db35b610d9a9f9917805da9383e61872e66e640482f57fc9e17ae91daf77fe3d","status":"🟡 Yellow"},"src/daemon_svc.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:0887baeb3ad7f2fca851fccc0d9335dafd4b42f3e54e236175a13d39c5bcd063","status":"🟡 Yellow"},"src/jsonutil.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"Json\nparse\nparse_jsonc\nstrip_json_comments\nobj\nfrom_pairs\nget\nas_str\nas_bool\nas_array\nas_object\ninsert\nfmt","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:cb71e00e352df010928a42323d6d87bbe67348834a209348fc174b9d00489676","source_mtime_ns":"1793684429116993727","status":"🟡 Yellow","wiki_hash":"sha256:fb4cffba8b14a179dd90f201b61df2608ca78a9775e9646e7f011f1b9fa07c63"},"src/legacy_cache.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"import_if_empty","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:a127d0b1742d69b736194ca98579f5fc0611fc51a291d691aef6fe586fd68ba3","source_mtime_ns":"1793683981803718735","status":"🟡 Yellow","wiki_hash":"sha256:a6fe6c79185a46cc4b30d215475bab28f517f6e5a6fd7bce6423c2792814aac8"},"src/lib.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"api\nartifacts\ncache\njsonutil\nmaps_out\nmcp\nparse\nscope\nsha256\ntimeutil\ncache_status\ncheck_changes\nhealth\nlist_paths\nload_dependencies\nload_dependents\nmapped_edges\nmark_green\nprepare_edit\nread_health\nread_journal\nrecord_change\nsession_bootstrap\nsuggest_next_actions\nupdate_maps\nVERSION\nJson","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:9c27c83b58ff7f1acf62d5d19ee31e2070daa06499e27141cc7071fae44e26b8","source_mtime_ns":"1793678007370625780","status":"🟡 Yellow","wiki_hash":"sha256:d7e771a3ff63ab55a7967195e3b403dd75d5ae020a383adc56f0e5c09d7b03a0"},"src/low_conf.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:3ade5fc70ce585a48b9acf6a2b48753e58e80f63281a31c8b8453816700b375e","status":"🟡 Yellow"},"src/main.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:2b3cebdafca3ca3da7831101a63b36f72260b3b2879871e5364b427428e782e0","source_mtime_ns":"1793683990351610198","status":"🟡 Yellow","wiki_hash":"sha256:db6e1cd5beeb90e5a65b3e00a37ee2c73ea4c53750771151e655459a1b823ff5"},"src/maps_out.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"write\nwrite_status\nread_status","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:c018687f1e511e23bc92a3f771a1f2bf5e693d513d8e4bcad958d9908f0af09c","source_mtime_ns":"1793678007370625780","status":"🟡 Yellow","wiki_hash":"sha256:d441c395fe565828a87c54d5545e4c89e4ec4cfc49308a08525e6dcf3c744e75"},"src/mcp.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"tool_schema\nhandle_message\nserve_stdio","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:22c88894fc72f3fad68a31c1582a01772a8409483d3a3127730eccce63067119","source_mtime_ns":"1793683982335712018","status":"🟡 Yellow","wiki_hash":"sha256:8414b1757bf3acc39a66a52443e9625cb027173b2783d996e39e9f707a9a1933"},"src/parse.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"RawImport\nKind\nScan\nlanguage\nread_utf8\nscan_file_warned\nscan_file\nresolve_project\nrust_public_symbols\nresolve_python_spec\nFactEdge\nFileFacts\nAnalysis\nanalyze_files\nanalyze_changed\nedges_for_files","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:5607acdac0b08854951700a9d2187a9f849d2fdb4febc2959fe065bcf778963a","source_mtime_ns":"1793684824322776381","status":"🟡 Yellow","wiki_hash":"sha256:c70af52c81a4dfffb364cba13ca21873491e83e1c9c5cee31ab2bab2bc379fbb"},"src/pending_line.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:c941813474dbb2cfc1ffed8c7bc9791d08eb718d92d336e1f42d1c1b0d67bcdc","status":"🟡 Yellow"},"src/proc.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:8f13798a8b9289d78913becc626056c8b016838570e356e09bfa3333e800351c","status":"🟡 Yellow"},"src/project_lock.rs":{"last_updated":"2026-11-03 08:56:14","public_symbols":"ProjectLock\ndrop\nacquire","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:194e329f35ff59b11fc734b980a1ee33f8e464bcdb5eae899486e487daef3a25","source_mtime_ns":"1793678007370625780","status":"🟡 Yellow","wiki_hash":"sha256:fccc8d547f30262ff64d506d842472623e828ebe39fde71532a683c6956329d2"},"src/scope.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:6dec4152e1ae1657661bd9f504877c02dd70bdb97c39173a952bea2851bedb4c","status":"🟡 Yellow"},"src/sha256.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:d16c7732fbdd20b3697b78129e8052f676c42bc862065f2bfe2b16fae1b7df30","status":"🟡 Yellow"},"src/symbols.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:4a150ba04e9ea26020c874c5e256a9ec5acc3ef4d621fb6ff03b21935c3f8046","status":"🟡 Yellow"},"src/text_out.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:8e0edc1141a2c1745c0e6fdd7a7645c7332365fac532d52fb3e188f4ef06148e","status":"🟡 Yellow"},"src/timeutil.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:9921127144d9d40619e260753e700e9c8a47135ed95b2ad8791afb7fe78afd75","status":"🟡 Yellow"},"src/wiki_files.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions.","source_content_hash":"sha256:2612539ce9092a3d126d80ce2947f6b4555ddb0bb335769b1619ec67d08a5e84","status":"🟡 Yellow"},"tests/behaviour_gaps.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Tests for those parity fixes.","source_content_hash":"sha256:8c8d669dae2dbe39b88c2223d20fb2fca51ac1605c62edd108d6ef224223402b","source_mtime_ns":"1793684893298602299","status":"🟡 Yellow","wiki_hash":"sha256:b9d20a310ca48ffd858e6d0d4e49b5e0568ecb57dc5ad981eb54398562864691"},"tests/cache_and_artifacts.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Tests for those parity fixes.","source_content_hash":"sha256:b9483666c1e19f90d4db1af718b08beebadfbcba66152497b7694d8e757a5ec1","status":"🟡 Yellow"},"tests/cli_surface.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Tests for those parity fixes.","source_content_hash":"sha256:c6d2ec49ab47aac39a17e6d39fb7eae08d4b27935a9d68bc02a238000646c739","status":"🟡 Yellow"},"tests/contract_gaps.rs":{"last_updated":"2026-11-03 08:56:14","reason":"Tests for those parity fixes.","source_content_hash":"sha256:dc91a239bbc615524b4ac2c58d06515183dfc4981309906003f551e6721d82ae","status":"🟡 Yellow"},"tests/dogfood.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:b596d9aa2a19c0e030e8d0c02613d1ced0ddf026c976bfcb3c563758bce57fb6","source_mtime_ns":"1793683337392806763","status":"🟡 Yellow","wiki_hash":"sha256:9546cc2062f19584c348419322f07d25d353c7f8ba0257e992372f63d798c020"},"tests/parity.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:0246038a1cc01bf66da2fd186ede61f2dcd2c98da9c0c90dd7f3b2cbab1036db","source_mtime_ns":"1793683314773282057","status":"🟡 Yellow","wiki_hash":"sha256:32753c244642df6e08f8578c6203f77225363783c15bc57c33a84f03989f2378"},"tests/parity_fixes.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:ac0fa6064323885f6e7bd767557fe3721723c8d20d60e36c7cc5265b85747e31","status":"🟡 Yellow"},"tests/protocol_v07.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:bb7cffecabc3fb51ebcc77c64f7fd78f5cd15c445d7e13493ed491227280f37d","source_mtime_ns":"1793684781738827745","status":"🟡 Yellow","wiki_hash":"sha256:b38f4a13e316cefd56070f822980b4f83d9cdacb850ab1978de48ed35c630ec8"},"tests/robustness.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:fad304193a47baa8cce21cff8786b35974c7c7f6f71b3318edeb68bd60121681","status":"🟡 Yellow"},"tests/skip_maps.rs":{"last_updated":"2026-11-03 08:56:15","reason":"Tests for those parity fixes.","source_content_hash":"sha256:2eed0c6bc97d91a4be3f2b6ab08c78c62a3a05725a503496e3df91abad6b2130","status":"🟡 Yellow"},"wikifier.sh":{"last_updated":"2026-11-03 08:06:46","reason":"Wiki describes the Rust binary launcher (subid=protocol-v07)","source_content_hash":"sha256:4f467e2117e8c361882054998cb0506717d9555e2aa570f0e176fc18d9c2f4aa","source_mtime_ns":"1793410024331635951","status":"🟢 Green","verification":"unchecked","wiki_hash":"sha256:3876708eaec60862b9b8b6f73e2ae87e4abca2f228c456f973ddb7c9ee36854a"}},"version":2} \ No newline at end of file diff --git a/file_health.md b/file_health.md index 29a02d3..e7c22a2 100644 --- a/file_health.md +++ b/file_health.md @@ -2,20 +2,23 @@ | File | Status | Last Updated | Reason / Intent | |------|--------|--------------|-----------------| -| AGENTS.md | 🟡 Yellow | 2026-11-03 08:56:14 | Correct the scanner and wiki-lookup notes. | -| CHANGELOG.md | 🟡 Yellow | 2026-11-03 08:56:14 | Record the parity work under Unreleased. | -| CLAUDE.md | 🟡 Yellow | 2026-11-03 08:56:14 | Correct the tsconfig note. | +| .github/workflows/publish.yml | 🟢 Green | 2026-11-03 09:27:04 | Multi-target release archives and SHA256SUMS (subid=release-5.0.0) | +| AGENTS.md | 🟢 Green | 2026-11-03 09:27:04 | Package line is 5.0.0; pip remains Python 4.7 (subid=release-5.0.0) | +| CHANGELOG.md | 🟢 Green | 2026-11-03 09:27:04 | 5.0.0 Rust release notes and benchmark link (subid=release-5.0.0) | +| CLAUDE.md | 🟢 Green | 2026-11-03 09:27:04 | Package line is 5.0.0 (subid=release-5.0.0) | | CONTRIBUTING.md | 🟢 Green | 2026-11-03 05:34:35 | Address the 3 Nov review findings (subid=review-2026-11-03) | +| Cargo.lock | 🟢 Green | 2026-11-03 09:27:04 | Lockfile version 5.0.0 (subid=release-5.0.0) | +| Cargo.toml | 🟢 Green | 2026-11-03 09:27:04 | Version 5.0.0 (subid=release-5.0.0) | | Findings/M5-Dogfood-Assessment-Report.md | 🟢 Green | 2026-07-09 05:02:27 | kept; stale yellow cleared | | Findings/M5-Dogfood-Progress.md | 🟢 Green | 2026-11-03 08:06:46 | Wiki marks this file as the historical M5 log (subid=protocol-v07) | | Findings/M5.1-cross-hardening-analysis.md | 🟢 Green | 2026-07-09 05:02:27 | kept; stale yellow cleared | | Findings/Milestones-Overview.md | 🟢 Green | 2026-07-09 05:02:27 | kept; stale yellow cleared | | Findings/p6_real_world_validation_report.md | 🟢 Green | 2026-07-09 05:02:27 | kept; stale yellow cleared | -| README.md | 🟡 Yellow | 2026-11-03 08:56:14 | Command notes and the measured benchmark table. | +| README.md | 🟢 Green | 2026-11-03 09:27:04 | Install leads with release archives; package 5.0.0 (subid=release-5.0.0) | | docs/spec.md | 🟢 Green | 2026-11-03 08:00:11 | Name the Rust binary and protocol v0.7 in the living principles (subid=protocol-v07) | | scripts/benchmark_parity.sh | 🟡 Yellow | 2026-11-03 08:56:15 | Benchmark script and measured results. | | scripts/benchmark_results.md | 🟡 Yellow | 2026-11-03 08:56:15 | Benchmark script and measured results. | -| skills/run.md | 🟡 Yellow | 2026-11-03 08:56:14 | Document the parity behaviour. | +| skills/run.md | 🟢 Green | 2026-11-03 09:27:04 | Package line is 5.0.0; protocol stays v0.7 (subid=release-5.0.0) | | src/api.rs | 🟡 Yellow | 2026-11-03 08:56:14 | Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions. | | src/artifacts.rs | 🟡 Yellow | 2026-11-03 08:56:14 | Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions. | | src/cache.rs | 🟡 Yellow | 2026-11-03 08:56:14 | Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions. | diff --git a/journal/2026/11/03.md b/journal/2026/11/03.md index 7c9a360..49ce70b 100644 --- a/journal/2026/11/03.md +++ b/journal/2026/11/03.md @@ -446,3 +446,35 @@ **File:** tests/parity_fixes.rs **Reason:** Tests for those parity fixes. +## [2026-11-03 09:27:04] record-change +**File:** .github/workflows/publish.yml +**Reason:** Multi-target release archives and SHA256SUMS (subid=release-5.0.0) + +## [2026-11-03 09:27:04] record-change +**File:** AGENTS.md +**Reason:** Package line is 5.0.0; pip remains Python 4.7 (subid=release-5.0.0) + +## [2026-11-03 09:27:04] record-change +**File:** CHANGELOG.md +**Reason:** 5.0.0 Rust release notes and benchmark link (subid=release-5.0.0) + +## [2026-11-03 09:27:04] record-change +**File:** CLAUDE.md +**Reason:** Package line is 5.0.0 (subid=release-5.0.0) + +## [2026-11-03 09:27:04] record-change +**File:** Cargo.lock +**Reason:** Lockfile version 5.0.0 (subid=release-5.0.0) + +## [2026-11-03 09:27:04] record-change +**File:** Cargo.toml +**Reason:** Version 5.0.0 (subid=release-5.0.0) + +## [2026-11-03 09:27:04] record-change +**File:** README.md +**Reason:** Install leads with release archives; package 5.0.0 (subid=release-5.0.0) + +## [2026-11-03 09:27:04] record-change +**File:** skills/run.md +**Reason:** Package line is 5.0.0; protocol stays v0.7 (subid=release-5.0.0) + diff --git a/pending_updates.md b/pending_updates.md index 04bc97d..8253624 100644 --- a/pending_updates.md +++ b/pending_updates.md @@ -1,11 +1,6 @@ # Pending Updates (no pending items — run check-changes after making edits) -- AGENTS.md: LLM/agent edit — Correct the scanner and wiki-lookup notes. -- CHANGELOG.md: LLM/agent edit — Record the parity work under Unreleased. -- CLAUDE.md: LLM/agent edit — Correct the tsconfig note. -- README.md: LLM/agent edit — Command notes and the measured benchmark table. -- skills/run.md: LLM/agent edit — Document the parity behaviour. - src/api.rs: LLM/agent edit — Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions. - src/artifacts.rs: LLM/agent edit — Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions. - src/cache.rs: LLM/agent edit — Parity with the Python package: wiki lookup, symbols, daemon, init, flags, MCP, cycles, and low-confidence actions. diff --git a/skills/run.md b/skills/run.md index 05e7e7a..dece840 100644 --- a/skills/run.md +++ b/skills/run.md @@ -1,6 +1,6 @@ # Wikifier Agent Protocol v0.7 -**Package 4.7.x** (live version: `wikifier --version`, from `Cargo.toml`) · **Status:** active, supersedes v0.6 · **Scope:** agent-to-agent codebase wiki for token-efficient lookup. Not a human docs product, not an issue tracker. +**Package 5.0.0** (live version: `wikifier --version`, from `Cargo.toml`) · **Status:** active, supersedes v0.6 · **Scope:** agent-to-agent codebase wiki for token-efficient lookup. Not a human docs product, not an issue tracker. This file is the contract for any agent operating Wikifier. Part 1 is all you need day to day; Part 2 is reference. In the Wikifier repository, `AGENTS.md` is the entry point and points here. @@ -42,7 +42,7 @@ This file is the contract for any agent operating Wikifier. Part 1 is all you ne ### Paste into new sessions ``` -You are operating inside a Wikifier-managed codebase (Agent Protocol v0.7, package 4.7.x). +You are operating inside a Wikifier-managed codebase (Agent Protocol v0.7, package 5.0.0). It is an agent-to-agent wiki: look things up (health, file wikis, deps) instead of re-reading sources. SELECTIVE WORK: only update 🔴 Red and actionable 🟡 Yellow files; never re-wiki 🟢 Green files; @@ -147,7 +147,7 @@ The implementation is a std-only Rust binary. `wikifier.sh` / `.ps1` / `.bat` la There is no Python library. Agents call the CLI or `wikifier mcp`. The same functions live in the Rust crate (`src/api.rs`) and both fronts call them. -### Implementation (package 4.7.x, protocol stays v0.7) +### Implementation (package 5.0.0, protocol stays v0.7) The program is a std-only Rust binary under `src/`. `Cargo.toml` has an empty `[dependencies]` list. Launchers exec that binary. MCP is `wikifier mcp`. diff --git a/skills/run.md.wiki.md b/skills/run.md.wiki.md index 59c22fc..5060820 100644 --- a/skills/run.md.wiki.md +++ b/skills/run.md.wiki.md @@ -4,4 +4,4 @@ Part 1 is the session loop: bootstrap, check-changes, suggest-next, prepare-edit, record-change, mark-green, update-maps. Part 2 is the reference for health, wiki verification, batch recording, dependencies, and commands. Wiki verification covers Python, JS/TS, and Rust `pub` items including impl methods and trait-impl items. Rust import names include `[workspace] members`. -The implementation note records how the std-only Rust binary fills that contract: `wk_cache`, regex-plus-reexport parsing, Rust paths from `crate::` / `self::` / `super::` / the root Cargo.toml crate name, map artifacts, deletion, MCP errors, the project lock, and a standing `serve` that feeds the dashboard. Daemon actions are `start`, `stop`, `status`, and `run`. `init DIR`, `verify-wikis DIR`, and `search-journal --file` apply. The protocol version stays v0.7. The live version command is `wikifier --version`. +The implementation note records how the std-only Rust binary fills that contract: `wk_cache`, regex-plus-reexport parsing, Rust paths from `crate::` / `self::` / `super::` / the root Cargo.toml crate name, map artifacts, deletion, MCP errors, the project lock, and a standing `serve` that feeds the dashboard. Daemon actions are `start`, `stop`, `status`, and `run`. `init DIR`, `verify-wikis DIR`, and `search-journal --file` apply. The protocol version stays v0.7. The package line is 5.0.0. The live version command is `wikifier --version` (from `Cargo.toml`).