From c271cb90ff58ced13e1e5f7e1b91e4db9956b439 Mon Sep 17 00:00:00 2001 From: Kadir Mert Okumus Date: Sat, 24 Oct 2026 03:33:11 +0300 Subject: [PATCH 1/2] Record the cleanup: d573-d575, roadmap N126, N127 and the On main line d573 summarises the docs and code cleanup (PRs 226-233); d574 amends d487 for the two items the cleanup took (LSP initialize_params, SCIP map skeleton) plus the traverse request struct; d575 records what was rescued before three local work items were removed. N126 (SCIP Partial note quotes the configured cap, not the applied one) and N127 (the acceptance coordinator dedupe, live run only) carry the review findings left for later. Evidence: cargo xtask docs check: 81 files, 292 links, 0 problems; lint-machine-paths ok. Co-Authored-By: Claude Opus 5.5 --- docs/decisions.md | 3 +++ docs/development/roadmap.md | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/decisions.md b/docs/decisions.md index 92d530de..a52c9fd6 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -557,3 +557,6 @@ result files when the documentation was cleaned up on 2026-10-17. | d570 | 2026-10-23 | DECISION | infra | tokio 1.54.1 (PR 224, merge 7ba065c, commit d8911b1; `Cargo.lock` only): RUSTSEC-2026-0386 (the `AsyncFd` constructors accept any raw fd, unix only; fixed in tokio 1.53.3 and later) failed the cargo-deny advisories check on every PR, so the lock moves to 1.54.1. | d8911b1 (PR 224; merge 7ba065c) | | d571 | 2026-10-23 | DECISION | process | Rule change in `docs/development/documentation.md` rule 10: the append-only log `docs/decisions.md` is exempt from the line target (the target `log <= 300` is removed; the log is 551 lines at 6d6a9bb, and moving old entries to an archive would break the frozen ids that are cited everywhere). README, guide and roadmap targets are unchanged. | cleanup S2a | | d572 | 2026-10-23 | DECISION | lsp | N123 (from the K11b-5 review) is done: the lsp-cost report labels the version-probe row with the probe each adapter runs (`gopls version`; the python probe is skipped) and no longer claims a 5000 ms bound the code does not impose. Recorded so the id stays traceable after its roadmap row left in cleanup S2a. | ef9bf71 (PR 219); d557 | +| d573 | 2026-10-24 | DECISION | process | The docs and code cleanup of 2026-10-23/24 is finished. Docs: the roadmap is trimmed 333 -> 252 lines (PR 226); README 370 -> 227 lines, with the reference guides `docs/reference/mcp-and-rest.md`, `docs/reference/cli.md`, `docs/reference/retrieval.md` and `docs/development/module-boundaries.md` (PR 228; the Rust help and OpenAPI strings that named moved README sections are repointed, PR 229); every statement a docs-vs-code audit found to disagree with the code is fixed, and `docs/architecture.md` 360 -> 238 lines, with `docs/lsp-channel.md` and `docs/traverse-flow.md` (PR 230). Process: the PR-closing workflow for the Copilot bot is removed (PR 227); 122 remote and 13 local branches are deleted, each proven merged first (a merged PR whose head SHA is the branch tip, and the tip an ancestor of main). Code, behaviour-preserving with new pins: PRs 231, 232 and 233 (d574). Each docs PR passed a token-inventory compare (ids, numbers, dates, statuses, conditions, negations) and a second-model loss read. | PRs 226-233 | +| d574 | 2026-10-24 | DECISION | process | d487 amended: two of its "not taken" items were taken in the cleanup. The LSP `initialize_params` dedupe (PR 231): `initialize_params_for` with `InitializeVariant` builds the `initialize` request of python, go, clangd and java (`Base`), markdown (`DocumentSymbol`) and typescript (`PublishDiagnostics`); rust and csharp keep their own `initializationOptions`; an exact-JSON pin per adapter, written against the old code first. The SCIP map boilerplate (PR 233): `scip_ranked_hits` in `lci-maps/src/edge.rs` holds the `query` skeleton of `ImpactMap`, `ImplementsMap` and `TestedByMap`, with the note, rank, score, evidence, dedupe and truncation pinned per map. Also: `app::traverse::search` takes a `TraverseRequest` (PR 232) and loses its `too_many_arguments` allow. Still not taken: the multilingual acceptance table and a shared per-language acceptance runner, which only a live acceptance run proves (N127). Found in review, left for a later output change: N126. | PRs 231-233 | +| d575 | 2026-10-24 | FINDING | process | Rescued before the cleanup removed three local work items that had no decision id. An evaluation worktree at bfaff44 carried an uncommitted `.lciignore` variant that drops the `.agents/**` and `.github/instructions/**` lines (kept outside the repository as a diff that applies cleanly). An evaluation worktree at f1d401d was clean and is reproducible from that SHA. Branch `feat/live-grep-lockfiles` (tip 39aff96: a lockfile-skip default for live grep) is superseded by the opt-in mechanism on main (d393); its patch is kept outside the repository. | cleanup S1c, S4 | diff --git a/docs/development/roadmap.md b/docs/development/roadmap.md index 217b7841..219e3459 100644 --- a/docs/development/roadmap.md +++ b/docs/development/roadmap.md @@ -48,7 +48,7 @@ that document and is not a roadmap id. ## Now and next -Cycle 1 implementation is complete (finish line d422): the last feature merges were K39b (d564) and K12a-2 (d533); M2 closed 2026-10-23 without K11b-6, whose release-build measurement failed, so per-language `places = "auto"` moves to cycle 2 with mixed-tree surfacing (d562). On main: the cleanup PRs land on top of PR 225 (2026-10-23); the closing cleanup PR refreshes this line. A cleanup of docs and code is running. Next: the cycle 1 report went to the owner on 2026-10-23; the owner's cut (asked 2026-10-23) and the answers to the report's questions follow, then cycle 2. Waiting on the cut: sanity 20 (d563) recommends K12b-2 and K31 move to cycle 2 and K12b-1 stay parked on its branch (nothing merges before the tsgo facts check and the lsp-cost pair, d537), and the placement of the K20c rust and K26 value windows (each needs a release quiet window with no cargo; the arbitration stays off until the K20c measurement passes), which sanity 20 proposes for cycle 2. K7b-3b and K11d-2b stay open (their rows), and ASYNC-2 C stays parked. Per the autonomy rule the coordinator waits for the owner's word after the report. Only docs PRs and the coordinator rewrite this section; a feature PR leaves it alone so parallel PRs do not conflict (d476). The live state is the coordinator's run checkpoint. +Cycle 1 implementation is complete (finish line d422): the last feature merges were K39b (d564) and K12a-2 (d533); M2 closed 2026-10-23 without K11b-6, whose release-build measurement failed, so per-language `places = "auto"` moves to cycle 2 with mixed-tree surfacing (d562). On main: the docs and code cleanup (PRs 226 onward, finished 2026-10-24, d573) on top of PR 225. Next: the cycle 1 report went to the owner on 2026-10-23; the owner's cut (asked 2026-10-23) and the answers to the report's questions follow, then cycle 2. Waiting on the cut: sanity 20 (d563) recommends K12b-2 and K31 move to cycle 2 and K12b-1 stay parked on its branch (nothing merges before the tsgo facts check and the lsp-cost pair, d537), and the placement of the K20c rust and K26 value windows (each needs a release quiet window with no cargo; the arbitration stays off until the K20c measurement passes), which sanity 20 proposes for cycle 2. K7b-3b and K11d-2b stay open (their rows), and ASYNC-2 C stays parked. Per the autonomy rule the coordinator waits for the owner's word after the report. Only docs PRs and the coordinator rewrite this section; a feature PR leaves it alone so parallel PRs do not conflict (d476). The live state is the coordinator's run checkpoint. ## Cycle 1 @@ -135,6 +135,7 @@ P3 umbrella research. Rows are open items only. Item text names symbols, never l | N121 | If the detached start task of a session panics before it publishes an outcome, `failed()` stays false and the session is never idle-swept; a panic during priming leaves the ready client set with `primed` false. No normal server failure takes either path. Fix: publish `Err` when the task ends (a drop guard) and treat a priming panic as settled. From the K11b-4 Sol re-check | ready, low | XS | N117 | | N124 | `open_split` partial-failure visibility: when one provider's probe fails and another passes, the walk shows the drop only per node ("no language server is available for python"). Add one note per failed provider (`lsp.live: unavailable: `). Also from the K11b-5 Sol review: a broken pyright shim passes the start probe (`/ready` green), and an initialize inactivity timeout opens no breaker window. Deferred from K11b-5 commit 2 | ready, low | XS | K11b-5 | | N125 | Under per-language `places = "auto"` (K11b-6, cycle 2), a direct symbol seed in an unindexed language gets no `lsp.live` expansion until its file is reached and outlined (the `lsp_live.rs` ask returns without `place_of`); file and chunk expansions do outline. Option: outline the seed's file first. From the K11b-6 Sol review; not the cause of the K11b-6 failure (its python seed was a chunk) | blocked(K11b-6, cycle 2), low | XS | K11b-6 | +| N126 | `ImpactMap` and `ImplementsMap` (`scip_ranked_hits`): the Partial note quotes the configured `cap` while `edges_of` applies `cap.min(EXPAND_LIMIT)` (256), so a configured cap above 256 makes the note state the wrong cap. Fix: quote the applied cap (an intended output change; update the per-map note pins). From the cleanup S5 review (d574) | ready, low | XS | - | | N14 | Lexical matches credited to the first chunk of a path-suffix match: tag only (see Earlier items outside cycle 1, row 10) (roadmap@bbd3292 N14) | paused | S | - | Items marked `cloud-ok` in older notes may run in a cloud agent; items marked `local` need the owner's machine. @@ -197,6 +198,7 @@ Umbrella items: split each into S/M slices with acceptance criteria, and show a | M4 | Matryoshka dimension truncation (`embedding_dimensions`) and int8/binary storage with rescoring; a storage item, search is 60 ms here (roadmap@bbd3292 M4) | research, paused | M | - | | A5 | Availability and safety extras: lexical results while the first index builds, secret redaction on returned text, agent-supplied `annotate` summaries keyed by chunk hash, optional bearer token on the loopback HTTP surface (roadmap@bbd3292 A5) | research | M each | A1 | | P1 | Packaging: cargo-dist installers (shell, PowerShell, MSI, Homebrew) and `service install|uninstall|start|stop` via the `service-manager` crate (roadmap@bbd3292 P1) | research | M + M | - | +| N127 | Acceptance coordinator dedupe: table-drive the `assert_search` calls of `xtask/src/acceptance/multilingual.rs`, and share one runner for the per-language `*_lsp.rs` and `*_recovery.rs` steps; evidence names stay verbatim. Only a live acceptance run proves it (no automated gate). From the cleanup S1e audit (d574) | ready | M | a live acceptance run | ### Investigations From a505f0bba6e223c63015c7318e072976f120b5a0 Mon Sep 17 00:00:00 2001 From: Kadir Mert Okumus Date: Sat, 24 Oct 2026 03:39:42 +0300 Subject: [PATCH 2/2] Fix the S6 cleanup records after the fact check Name the docs PRs that had a loss review, cite the merge SHAs as evidence, attribute the lockfile patch to d393 correctly, mark N126 latent, and drop the run from N127's dependencies. Co-Authored-By: Claude Opus 5.5 --- docs/decisions.md | 6 +++--- docs/development/roadmap.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/decisions.md b/docs/decisions.md index a52c9fd6..6c455533 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -557,6 +557,6 @@ result files when the documentation was cleaned up on 2026-10-17. | d570 | 2026-10-23 | DECISION | infra | tokio 1.54.1 (PR 224, merge 7ba065c, commit d8911b1; `Cargo.lock` only): RUSTSEC-2026-0386 (the `AsyncFd` constructors accept any raw fd, unix only; fixed in tokio 1.53.3 and later) failed the cargo-deny advisories check on every PR, so the lock moves to 1.54.1. | d8911b1 (PR 224; merge 7ba065c) | | d571 | 2026-10-23 | DECISION | process | Rule change in `docs/development/documentation.md` rule 10: the append-only log `docs/decisions.md` is exempt from the line target (the target `log <= 300` is removed; the log is 551 lines at 6d6a9bb, and moving old entries to an archive would break the frozen ids that are cited everywhere). README, guide and roadmap targets are unchanged. | cleanup S2a | | d572 | 2026-10-23 | DECISION | lsp | N123 (from the K11b-5 review) is done: the lsp-cost report labels the version-probe row with the probe each adapter runs (`gopls version`; the python probe is skipped) and no longer claims a 5000 ms bound the code does not impose. Recorded so the id stays traceable after its roadmap row left in cleanup S2a. | ef9bf71 (PR 219); d557 | -| d573 | 2026-10-24 | DECISION | process | The docs and code cleanup of 2026-10-23/24 is finished. Docs: the roadmap is trimmed 333 -> 252 lines (PR 226); README 370 -> 227 lines, with the reference guides `docs/reference/mcp-and-rest.md`, `docs/reference/cli.md`, `docs/reference/retrieval.md` and `docs/development/module-boundaries.md` (PR 228; the Rust help and OpenAPI strings that named moved README sections are repointed, PR 229); every statement a docs-vs-code audit found to disagree with the code is fixed, and `docs/architecture.md` 360 -> 238 lines, with `docs/lsp-channel.md` and `docs/traverse-flow.md` (PR 230). Process: the PR-closing workflow for the Copilot bot is removed (PR 227); 122 remote and 13 local branches are deleted, each proven merged first (a merged PR whose head SHA is the branch tip, and the tip an ancestor of main). Code, behaviour-preserving with new pins: PRs 231, 232 and 233 (d574). Each docs PR passed a token-inventory compare (ids, numbers, dates, statuses, conditions, negations) and a second-model loss read. | PRs 226-233 | -| d574 | 2026-10-24 | DECISION | process | d487 amended: two of its "not taken" items were taken in the cleanup. The LSP `initialize_params` dedupe (PR 231): `initialize_params_for` with `InitializeVariant` builds the `initialize` request of python, go, clangd and java (`Base`), markdown (`DocumentSymbol`) and typescript (`PublishDiagnostics`); rust and csharp keep their own `initializationOptions`; an exact-JSON pin per adapter, written against the old code first. The SCIP map boilerplate (PR 233): `scip_ranked_hits` in `lci-maps/src/edge.rs` holds the `query` skeleton of `ImpactMap`, `ImplementsMap` and `TestedByMap`, with the note, rank, score, evidence, dedupe and truncation pinned per map. Also: `app::traverse::search` takes a `TraverseRequest` (PR 232) and loses its `too_many_arguments` allow. Still not taken: the multilingual acceptance table and a shared per-language acceptance runner, which only a live acceptance run proves (N127). Found in review, left for a later output change: N126. | PRs 231-233 | -| d575 | 2026-10-24 | FINDING | process | Rescued before the cleanup removed three local work items that had no decision id. An evaluation worktree at bfaff44 carried an uncommitted `.lciignore` variant that drops the `.agents/**` and `.github/instructions/**` lines (kept outside the repository as a diff that applies cleanly). An evaluation worktree at f1d401d was clean and is reproducible from that SHA. Branch `feat/live-grep-lockfiles` (tip 39aff96: a lockfile-skip default for live grep) is superseded by the opt-in mechanism on main (d393); its patch is kept outside the repository. | cleanup S1c, S4 | +| d573 | 2026-10-24 | DECISION | process | The docs and code cleanup of 2026-10-23/24 is finished. Docs: the roadmap is trimmed 333 -> 252 lines (PR 226); README 370 -> 227 lines, with the reference guides `docs/reference/mcp-and-rest.md`, `docs/reference/cli.md`, `docs/reference/retrieval.md` and `docs/development/module-boundaries.md` (PR 228; the Rust help and OpenAPI strings that named moved README sections are repointed, PR 229); every statement a docs-vs-code audit found to disagree with the code is fixed, and `docs/architecture.md` 360 -> 238 lines, with `docs/lsp-channel.md` and `docs/traverse-flow.md` (PR 230). Process: the PR-closing workflow for the Copilot bot is removed (PR 227); 122 remote and 13 local branches are deleted, each proven merged first (a merged PR whose head SHA is the branch tip, and the tip an ancestor of main). Code, behaviour-preserving with new pins: PRs 231, 232 and 233 (d574). Each docs PR (226, 228, 230) passed a token-inventory compare (ids, numbers, dates, statuses, conditions, negations) and a separate loss review. | merges b642599 (PR 226), cff615f (227), 09da959 (228), 3c3092f (229), 4fd0e72 (230); d574 | +| d574 | 2026-10-24 | DECISION | process | d487 amended: two of its "not taken" items were taken in the cleanup. The LSP `initialize_params` dedupe (PR 231): `initialize_params_for` with `InitializeVariant` builds the `initialize` request of python, go, clangd and java (`Base`), markdown (`DocumentSymbol`) and typescript (`PublishDiagnostics`); rust and csharp keep their own `initializationOptions`; an exact-JSON pin per adapter, written against the old code first. The SCIP map boilerplate (PR 233): `scip_ranked_hits` in `lci-maps/src/edge.rs` holds the `query` skeleton of `ImpactMap`, `ImplementsMap` and `TestedByMap`, with the note, rank, score, evidence, dedupe and truncation pinned per map. Also: `app::traverse::search` takes a `TraverseRequest` (PR 232) and loses its `too_many_arguments` allow. Still not taken: the multilingual acceptance table and a shared per-language acceptance runner, which only a live acceptance run proves (N127). Found in review, left for a later output change: N126. | merges bb3e071 (PR 231), ffdeeff (232), a60923c (233); d487 | +| d575 | 2026-10-24 | FINDING | process | Rescued before the cleanup removed three local work items that had no decision id. An evaluation worktree at bfaff44 carried an uncommitted `.lciignore` variant that drops the `.agents/**` and `.github/instructions/**` lines (kept outside the repository as a diff that applies cleanly). An evaluation worktree at f1d401d was clean and is reproducible from that SHA. Branch `feat/live-grep-lockfiles` (tip 39aff96: the lockfile-skip default that d393 dropped) is superseded: main keeps the skip opt-in (`GrepOptions::skip_files`, empty by default); its patch is kept outside the repository. | cleanup S1c, S4 (work area, not in this repository) | diff --git a/docs/development/roadmap.md b/docs/development/roadmap.md index 219e3459..9ac2882f 100644 --- a/docs/development/roadmap.md +++ b/docs/development/roadmap.md @@ -135,7 +135,7 @@ P3 umbrella research. Rows are open items only. Item text names symbols, never l | N121 | If the detached start task of a session panics before it publishes an outcome, `failed()` stays false and the session is never idle-swept; a panic during priming leaves the ready client set with `primed` false. No normal server failure takes either path. Fix: publish `Err` when the task ends (a drop guard) and treat a priming panic as settled. From the K11b-4 Sol re-check | ready, low | XS | N117 | | N124 | `open_split` partial-failure visibility: when one provider's probe fails and another passes, the walk shows the drop only per node ("no language server is available for python"). Add one note per failed provider (`lsp.live: unavailable: `). Also from the K11b-5 Sol review: a broken pyright shim passes the start probe (`/ready` green), and an initialize inactivity timeout opens no breaker window. Deferred from K11b-5 commit 2 | ready, low | XS | K11b-5 | | N125 | Under per-language `places = "auto"` (K11b-6, cycle 2), a direct symbol seed in an unindexed language gets no `lsp.live` expansion until its file is reached and outlined (the `lsp_live.rs` ask returns without `place_of`); file and chunk expansions do outline. Option: outline the seed's file first. From the K11b-6 Sol review; not the cause of the K11b-6 failure (its python seed was a chunk) | blocked(K11b-6, cycle 2), low | XS | K11b-6 | -| N126 | `ImpactMap` and `ImplementsMap` (`scip_ranked_hits`): the Partial note quotes the configured `cap` while `edges_of` applies `cap.min(EXPAND_LIMIT)` (256), so a configured cap above 256 makes the note state the wrong cap. Fix: quote the applied cap (an intended output change; update the per-map note pins). From the cleanup S5 review (d574) | ready, low | XS | - | +| N126 | `ImpactMap` and `ImplementsMap` (`scip_ranked_hits`): the Partial note quotes the configured `cap` while `edges_of` applies `cap.min(EXPAND_LIMIT)` (256), so a configured cap above 256 makes the note state the wrong cap. Latent: the app always uses the default cap 64; only a caller that sets `cap` above 256 sees it. Predates PR 233. Fix: quote the applied cap (an intended output change; update the per-map note pins). From the cleanup S5 review (d574) | ready, low | XS | - | | N14 | Lexical matches credited to the first chunk of a path-suffix match: tag only (see Earlier items outside cycle 1, row 10) (roadmap@bbd3292 N14) | paused | S | - | Items marked `cloud-ok` in older notes may run in a cloud agent; items marked `local` need the owner's machine. @@ -198,7 +198,7 @@ Umbrella items: split each into S/M slices with acceptance criteria, and show a | M4 | Matryoshka dimension truncation (`embedding_dimensions`) and int8/binary storage with rescoring; a storage item, search is 60 ms here (roadmap@bbd3292 M4) | research, paused | M | - | | A5 | Availability and safety extras: lexical results while the first index builds, secret redaction on returned text, agent-supplied `annotate` summaries keyed by chunk hash, optional bearer token on the loopback HTTP surface (roadmap@bbd3292 A5) | research | M each | A1 | | P1 | Packaging: cargo-dist installers (shell, PowerShell, MSI, Homebrew) and `service install|uninstall|start|stop` via the `service-manager` crate (roadmap@bbd3292 P1) | research | M + M | - | -| N127 | Acceptance coordinator dedupe: table-drive the `assert_search` calls of `xtask/src/acceptance/multilingual.rs`, and share one runner for the per-language `*_lsp.rs` and `*_recovery.rs` steps; evidence names stay verbatim. Only a live acceptance run proves it (no automated gate). From the cleanup S1e audit (d574) | ready | M | a live acceptance run | +| N127 | Acceptance coordinator dedupe: table-drive the `assert_search` calls of `xtask/src/acceptance/multilingual.rs`, and share one runner for the per-language `*_lsp` and `*_recovery` modules; evidence names stay verbatim. Only a live acceptance run proves it (no automated gate). From the cleanup S1e audit (d574) | ready | M | - | ### Investigations