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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/decisions.md
Original file line number Diff line number Diff line change
Expand Up @@ -549,3 +549,11 @@ result files when the documentation was cleaned up on 2026-10-17.
| d562 | 2026-10-23 | FINDING | lsp | K11b-6 per-language places = "auto" (branch feat/k11b-6-per-language-auto, not merged): its pre-registered release-build measurement failed (mixed tree: 0 python lsp.live cards, R1a/R1b; small rust and deadline misses that the diagnosis reads as window noise, every card difference sitting on a deadline- or cap-hit call). The gate itself works: the rust index covers only .rs, python files are outlined and minted as sym:python:, and py01 discovers the two call_site.py members (hops 96 vs 94), but none is popped or listed: Contains edges carry prior 0.5 against 1.0 for calls and references, the 20-pop budget goes to the rust seeds' neighbours and answers keep 8 walk cards. No change inside the slice can surface them, so per-language auto moves to cycle 2 together with mixed-tree surfacing (Contains prior, budget, top_k), measured with a pre-registered python-seeded mixed question. A redo under a rule written after the failure is not taken. M2 closes without it. | private run record (K11b-6 measurement and diagnosis) |
| d563 | 2026-10-23 | FINDING | process | Sanity 20 (M2 closed, d561 and d562): the direction holds; K11b-6's miss is a walk-ranking and seed finding, not a places one (the gate is verified; hard-coded hop priors, 20 pops, 8 walk cards; vectorless mixed arms), and its remedy is cycle 2 iteration with vectors present, a python-seeded mixed question and a discovered-nodes rule, seed-side before priors; prior art (aider's language-agnostic PageRank, Serena's explicit per-language routing, Sourcegraph's per-language SCIP) surfaces nothing by priors. The finish line is unchanged (d422); what remained was docs fold 4, K39b, K12a-2 narrowed to its measured pyright gain (0 of 7 against 5 of 5, opt-in, tsserver no gain) and the cycle 1 report. Recommended cut: K12b-2 and K31 to cycle 2, K12b-1 parked on its branch, K39b and K12a-2 kept; the K26 and K20c value windows need the owner's placement. Forecast at the time: close about 2026-10-24 02:00Z without K12b and K31. Process: two brittle pre-registrations in a row (K11b-6's positive rules could not fire under the question set; K11b-5's absolute-hash precondition failed literally under a merge of a default-off key, d558). Adopted change: every pre-registered positive rule carries a reachability line naming the baseline artefact that shows its measured quantity's input exists and that the budget leaves room; a precondition compares golden text against the baseline commit ("empty, or only default-off keys named here"), never an absolute hash; a reviewer other than the planner signs both before the quiet window. | private run record (sanity 20 review) |
| d564 | 2026-10-23 | DECISION | traverse | K39b (PR 223): `run_with_trait_seeds` in `src/app/traverse/mod.rs` is split into private phases, move-only: `prepare` returns `Prepared` (the resolved call: limits as `Cow`, steer, selection, walk_off, store, loaded, observer, rescorer), `WalkSetup` (snapshot, handler, actions, priors, tie_break, identity, preset) and `Ledger` (budget, notes, warnings); the tree barrier stays in the orchestrator because the map context ties the restarts' lifetime to the call; `seeds` returns `Seeded` (found, `maps::Built`, arbitration; `find_seeds`, `build`, the arbitration and confirm checks, the trait-seed hoist); `run_first_stage` returns `Staged` (stage, exact report, stage time); the setup credit stays in the orchestrator at the same sequence point (`plan_maps` is taken, not cloned); `walk` returns `WalkOutcome` (the no-seeds answer or `Walked`: result, effective policy, enabled maps, restored nodes, notes, warnings); `finish` builds the handle, trace, map notes and response. Public paths and signatures and the report JSON are unchanged; the 18-cell `traverse_matrix` was byte-identical after each of the five commits (the fifth is the docs pass: the stale "below" comments in `mod.rs` and `maps.rs` and the module table in `architecture.md`). Fable review by normalised statement diff (495 old statements against 493 new, every residual diff glue or rustfmt reflow; the 30 note and deadline-credit sites in the same sequence; 13 `.clone()` sites unchanged; no new `pub` or `#[allow]`; the three note arms the matrix does not pin read verbatim): MERGE, no kill rule tripped. No Full gate locally (narrow, d520) and no Sol review (no behaviour change). K39 closed. | PR 223; merge 6efaf47; private run record (K39b review) |
| d565 | 2026-10-23 | FINDING | process | Cycle 1 time estimate, outcome (the roadmap subsection is retired; its text is in `git show 6d6a9bb:docs/development/roadmap.md`). Estimated agent wall time for the whole loop per slice: XS 0.5 h, S 1.5 h, S-M 2.5 h, M 3.5 h; the size table's hours were never re-measured per slice. Measured: S slices K1a, K1b and K1c 1 to 1.5 h each, one at a time (2026-10-20, Full gate about 25 min and CI about 20 min then; about 3 min and 8 min after d415 and d419); K0a part 1 (S-M) about 3.5 h with two review rounds; K4a about 2.7 h and K4b about 2 h, one review round each (d505); M1 about 20 h wall with K7b-1, K7b-2 and K9a in parallel; M2 about 30 h wall at the last count, closed 2026-10-23 about 13Z, about 3.4 days after the roadmap merge (2026-10-20 03:49Z), with lanes in parallel and without K11b-6 (d562); M3 about 8 h wall plus 6.5 h measurement machine time (lane A 3.5 h, lane B 3 h, debug builds under load, against 25 to 90 min of estimate) plus K22a-2 about 5 h wall (build 32 min, main run 4 h 12 min, release, under load; d497). Pace on 2026-10-21 (sanity 10, d459): PRs 139 to 159, 21 merges in 8 h (09:36 to 17:39 local), 2.6 per hour with four lanes, 33 merges since midnight; lanes are limited by dependencies, by merges into `main` one at a time and by build slots. Risks named at the time: the weekly usage stop, SHARED's 1 s stamp-walk kill rule on deno-sized trees (30k files), debug builds under load, M rows with two review rounds (about +30 %), Windows gaps for marksman, Serena and the ast-grep tree-sitter pin, and outputs dying with worktrees. K32-3 (pickaxe) was noted as a decision, not a slice. | roadmap@6d6a9bb "Cycle 1 time estimate" |
| d566 | 2026-10-23 | DECISION | tests | N21 (PR 196, test-only): the JSON-metrics test `evaluation_reports_required_failures_optional_skips_and_json_metrics` pins `hit_at_1_rate`, `mrr` and `role_distribution` to hand-derived values (0.0, 0.0, {}) with a poisoned skipped query that proves exclusion, and loads its definition through `load_definition` instead of asserting an `EvaluationFile` it built itself. | PR 196 (roadmap row N21 at 6d6a9bb) |
| d567 | 2026-10-23 | DECISION | engine | N18 low batch (PR 195): items (a), (c), (d) and (e) are fixed: (a) the `manifest::save` removal of the destination before the rename; (c) `serve --port 0` uses the bound port for the log, `/openapi.json` and the Origin check; (d) the navigation tests assert their own adapter's running flag; (e) the model listing probe keeps the configured URL's path prefix (`model_listing_url`) and falls back to the origin `/v1/models` on 404 or 405; the stale self LSP acceptance needle for `openapi_document` is fixed too. Item (b), the Java readiness probe, was N77 (d190). Item (f), the per-file size cap, stays open in the roadmap. | PR 195 (roadmap row N18 at 6d6a9bb) |
| d568 | 2026-10-23 | DECISION | tests | N112 and N113 (PR 190, test-only): N112, the flaky freshness test `with_sync_on_the_session_is_told_about_the_edit_and_the_barrier_replaces_it` (seen once on CI 2026-10-22, PR 188, docs-only), waits on `synced()` before it reads `sync_status`; N113, the literal suite lengths (`args(Suite::Lsp).len()` style asserts), are replaced by derived tests that every `tests/integration.rs` case module is in a focused suite or `FULL_ONLY_CASES` and every filter names a declared module. | PR 190 (roadmap rows N112 and N113 at 6d6a9bb) |
| d569 | 2026-10-23 | DECISION | tests | N115 (PR 202, 2026-10-22, test-only): the Freshness cases `a_rewritten_scip_index_refreshes_the_scip_built_maps_by_its_stamp`, `without_the_key_the_labelled_maps_are_gaps_on_a_line_shift_too` and `with_the_stat_gate_on_the_labels_equal_the_full_hash_path` get a 10-minute test deadline (the config keeps the 60 s that validate accepts; `assert_no_timeout` is kept), and the lci-maps probe gate test asserts cargo's timeout against the measured gate hold, with no wall-clock margin, so no case depends on machine speed. | PR 202 (roadmap row N115 at 6d6a9bb) |
| 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 |
3 changes: 2 additions & 1 deletion docs/development/documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ Agents read these files without chat context and pay for every token, so the fil
`*-prereg*.md` and `*-results.md` records under `docs/spike/multimap/v2`) and runs in `--suite Full`; none may be
missing.
10. Short over complete: a table over prose for facts with the same shape; one example instead of three; a pointer
instead of a copy. Target sizes: README <= 260 lines, any guide <= 250, the roadmap <= 350, the log <= 300.
instead of a copy. Target sizes: README <= 260 lines, any guide <= 250, the roadmap <= 350. The append-only log
`docs/decisions.md` is exempt from the line target.
11. Vendored third-party files (`.agents/skills/rust-skills/**`) are not edited.
12. Every change to these files is checked against the code it describes (names, defaults, ports, commands) in the
same change.
Loading
Loading