Conversation
ReviewThis PR is documentation-only (two new files under Verification of the headline claimsI spot-checked several of the "release blocker" findings against the actual source at the audited revision, and they all held up:
Given that 5-for-5 of the sampled critical findings check out precisely against current source, I have high confidence in the rest of the report's technical accuracy; it reads as genuinely investigated rather than templated. I also checked that the cross-referenced tracking issues (#26, #72) resolve and match the titles quoted in the doc, so those aren't dangling references. Minor nits (non-blocking)
Process observations
Overall: this is a well-executed, verifiably accurate audit with a credible, appropriately fail-closed verdict and a concrete, traceable remediation program. No changes requested from me. |
ReviewThis PR is documentation-only (adds two audit documents + a 3-line navigation-guide update), so the usual "bugs/perf/security" review criteria mostly reduce to: are the claims in the audit accurate, and is the document itself well-formed? I spot-checked a representative sample of the audit's specific, falsifiable claims against the actual source at the audited revision (
Every claim I checked (7 of the ~25 cited file:line references, including the highest-severity release blockers and the security-sensitive symlink findings) matched the code exactly, including subtleties like why the backward-search loop fails to stop at a file boundary. That's a strong signal the rest of the document is similarly grounded rather than speculative — nice work. Minor notes (non-blocking)
VerdictNo factual or structural issues found in the portions I verified. This looks like a solid, well-evidenced audit that appropriately doesn't overreach into fixing anything itself, and the remediation/reassessment split (playbook explicitly requiring red-before-fix evidence, hard gates, and a non-waivable severity rubric for correctness/security findings) is a sound structure for the follow-up work. Approving from a documentation-quality and factual-accuracy standpoint. |
ReviewThis PR is documentation/process-only, as advertised — the diff touches
|
ReviewThis PR adds no changes to the Rust product code ( Code quality / best practices
Potential bugs
Security
Performance
Test coverage
Everything else
Overall: solid, careful engineering for what it is. My main ask is just a maintainer-level sanity check on whether this much selector machinery is the right long-term investment versus a simpler heuristic, since none of it touches the actual navigation-guide tool's correctness. |
Situation
This PR records the broad pre-release due-diligence review of
agentic-navigation-guide, establishes the issue-driven path from a lightly used experimental tool to a defensible0.2.0release, and adds a fail-closed helper for choosing remediation work in priority and dependency order.The audit's verdict is deliberately conservative: the repository is a credible pre-1.0 Rust foundation and does not need a rewrite, but audited revision
bf40806993ce0e0f2de931cabd105e3a0e063789is not ready for the next formal release or for use as a load-bearing workplace verification gate.The static documentation site and landing page were excluded as requested. Cargo package-boundary behavior remains in scope because the current crate package includes the site and other unrelated repository content.
Scope of the findings
The release-blocking correctness and boundary defects include paths that can:
dump/initemit guides that do not round-trip through the parser;ignore=trueand bypass validation;initoutput through a dangling symlink, with a separate check/write race.The report also identifies inconsistent ignore/exclusion/path semantics, unfinished or incorrect public Rust API behavior, cross-platform and resource-scaling gaps, a non-hermetic test, mutable or overprivileged workflows, an unenforced MSRV, an overbroad Cargo package, missing release automation/provenance, the already-published
0.1.4version and SemVer break, contradictory immutable0.1.4licensing metadata, incomplete user/security/contributor documentation, and maintainer-recovery risk.What this PR adds
audits/2026-07-25-production-readiness-audit.md— commit-specific evidence, findings, verdict, limitations, and remediation order.audits/production-readiness-reassessment-playbook.md— a rigorous independent audit procedure to run against one immutable post-remediation candidate before publication.audits/production-readiness-work-selection.md— the operator contract, taxonomy, ordering semantics, maintenance rules, and live integration-test evidence for the burndown selector.audits/production-readiness-remediation-goal.md— the copy-paste/goalhandoff and end-to-end one-ticket/one-closing-PR execution contract.justfileand standalone standard-library Python selector adapted fromplx/ferric-rulesPR #226.This PR changes no product runtime behavior and claims no audited defect is fixed. It adds planning records and maintainer orchestration for the follow-up PR sequence.
Ticket program
The remediation program is tracked in milestone
v0.2.0 — production-readiness hardeningand top-level epic #26.It contains 49 open program issues arranged as a complete native sub-issue tree:
The component epics cover grammar/parser; dump/init/CLI; verifier/discovery/filesystem safety; public API/SemVer; cross-platform testing/performance; release/supply chain; and docs/governance/distribution. Contract decisions #34–#36 intentionally lead implementation. Independent reassessment #72 is blocked by all component epics, publication #73 is blocked by that audit PASS and the release controls, and Homebrew #74 follows the live audited release. Because #74 remains a native child of #26, the overall program epic closes only after post-publication verification; it does not delay the #73 publication gate.
Every ticket has current behavior/impact, required implementation direction, red-before-fix regression expectations where applicable, validation steps, acceptance criteria, dependencies, and non-goals. Draft PR #21 is cross-linked as prior art where it overlaps exact markers,
get_full_path, README cleanup, and historical specification handling; it is not silently treated as completed remediation.Labels and dependencies
The semantic taxonomy combines:
P0–P3);component: …,domain: …, and where relevantrisk: …labels;production-readiness,release-blocker,needs-decision,testing,hardening, orreleaseworkflow labels as applicable;target: v0.2.0versustarget: post-v0.2; andAll 49 tickets carry
production-readinessandworkflow:production-readiness; 39 areworkflow:production-readiness-leaf, and #26–#33, #72, and #73 are the 10workflow:production-readiness-gateissues. The redundant 49-issue cohorts are required to match exactly, preventing a dropped or stray label from silently changing the queue.GitHub-native sub-issue relationships encode ownership, and 84 native
blocked byrelationships encode cross-ticket prerequisites. The selector treats both blockers and native children as hard requirements for gates, which prevents an organizing epic from becoming actionable before all of its children have actually closed. Forty-eight issues belong to milestone #2; #74 is intentionally outside it.Automatic burndown selection
After this PR merges, the normal operator loop starts with:
--jsonprovides stable machine-readable state, and repeatable--exclude Nskips an otherwise-ready issue for one invocation without mutating GitHub.The selector reads live issue state, exact labels, native blockers/sub-issues, the current default branch, and GitHub's authoritative
closingIssuesReferences. It does not schedule from body prose, checklists, milestones, or project-board position.Ordering is P0 → P1 → P2 → P3, then leaf before gate, then issue number. An open default-branch PR (including a draft) covers exactly one issue only when GitHub recognizes a closing keyword. Covered leaf chains can sequence downstream leaf work, but every gate blocker and sub-issue must be actually closed. Closing PR coverage is work sequencing, never merge authorization.
The implementation fails closed on cohort/taxonomy mismatches, label-role collisions, graph truncation, external open blockers, ambiguous PR coverage, pagination changes, default-branch changes, and unstable snapshots. Before returning a dependent issue it now revalidates the exact transitive covered-leaf PR proof that made the issue ready, closing a narrow race inherited from the reference implementation.
The current production run selects #34 from 49 open issues, with zero covered and 11 ready.
Live integration validation and cleanup
A namespaced alternate-label smoke run exercised four fake issues and four draft, never-merged PRs without putting fixtures into the production cohort:
References, thenCloses, proving that only GitHub closing references count;completewith zero open, covered, or ready fixtures.The full 11-transition assertion table is retained in the work-selection guide. Cleanup closed PRs #80–#83 without merge, closed issues #76–#79 as completed, deleted all four fixture branches and temporary labels, and removed production priority labels from the fixtures. The only retained artifacts are the closed issue/PR evidence and consumed numbers.
Post-cleanup verification confirmed:
mainremained atbf40806993ce0e0f2de931cabd105e3a0e063789;03d12772138055582a2926fdf1a044a1adb16bcb0967b2a18176939cbc2f6a25;Final reassessment gate
The playbook does more than rerun the current suite. It requires a fresh-clone, exact-commit evidence ledger; red-before-fix reproduction of original defects; parser/generator/verifier/CLI/API adversarial checks; Linux/macOS/Windows and MSRV validation; property/fuzz/mutation/coverage/performance work; symlink, containment, concurrency, and resource-boundary checks; package/install/artifact smoke tests; dependency/license/SemVer review; workflow/repository/recovery/security-report inspection; release dry run; and an explicit PASS/CONDITIONAL/FAIL report.
A false-success, containment escape, unsafe publish path, unsupported claimed platform, unresolved P0/P1 defect, or untested release artifact forces a release FAIL. Substantive defects discovered during reassessment must receive separate issues and fixes, followed by rerun evidence; they must not be hidden inside the audit PR.
Validation
just --fmt --checkruff check scripts/get_next_production_readiness_issue.py tests/test_get_next_production_readiness_issue.pyruff format --check scripts/get_next_production_readiness_issue.py tests/test_get_next_production_readiness_issue.pypython3 -m py_compile scripts/get_next_production_readiness_issue.pycargo fmt --all -- --checkcargo test --locked— 127 tests pass; 2 doctests intentionally ignored.cargo clippy --locked --all-targets -- -D warningscargo run --locked -- check --guide AGENTIC_NAVIGATION_GUIDE.mdcargo run --locked -- verify --guide AGENTIC_NAVIGATION_GUIDE.md --root .markdownlint audits/*.mdlychee --no-progress audits/*.md— 70 links checked, 0 errors.git diff --checkThe original audit also records its baseline Rust and repository checks with exact results. Review of this PR should focus on whether the evidence, ticket decomposition, dependency order, selector policy, and final gate are complete and defensible. Merging it preserves and operationalizes the plan; it does not authorize publication.