You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/plans/github-marketplace-action.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,7 +133,7 @@ These are the design questions the plan-PR resolves before impl starts. Each get
133
133
134
134
**Resolution (Q-B grill):****α + skip-on-non-PR**. On `pull_request` events the Action runs `codemap audit --base ${{ github.base_ref }} --ci` (SARIF + non-zero exit + quiet). On any other event (`push`, `schedule`, `workflow_dispatch`, …) the Action no-ops with `echo "codemap action: no PR context, skipping"` and exits 0 — there's no meaningful default without a base ref, and firing β-style opinionated recipes on push events surfaces findings consumers didn't ask for. β is a worse α (no PR-scoped diff). γ is reserved until multi-recipe SARIF composition is proven; current `action.yml` rejects `mode: aggregate` with a v1.x message. δ over-engineers a config concept that doesn't exist. Consumers wanting push-event runs pass an explicit `command:` input.
135
135
136
-
-**Q6 — SARIF rule.id taxonomy under `mode: aggregate`.**_(Deferred to v1.x — superseded Q1 ripple that promoted this to a v1.0 blocker.)_ Single-recipe `--format sarif` is shipped (`rule.id = codemap.<recipe-id>`). Aggregate runs (multiple recipes in one Action invocation) need a stable convention for combining results — likely concat-into-one-sarif-file with rule definitions de-duplicated by `recipe-id`. Verify in GitHub Code Scanning before enabling `mode: aggregate`; fall back to one-SARIF-per-recipe with `category:` if dedup misbehaves.
136
+
-**Q6 — SARIF rule.id taxonomy under `mode: aggregate`.**_(Deferred to v1.x — superseded Q1 ripple that promoted this to a v1.0 blocker.)_ Single-recipe `--format sarif` is shipped (`rule.id = codemap.<recipe-id>`). Aggregate runs (multiple recipes in one Action invocation) need a stable convention for combining results — likely concat-into-one-sarif-file with rule definitions de-duplicated by `recipe-id` (each rule appears once in `tool.driver.rules[]`; each finding's `ruleId` matches). Verify in GitHub Code Scanning before enabling `mode: aggregate`; fall back to one-SARIF-per-recipe with `category:` if dedup misbehaves.
137
137
-**Q7 — Versioning + `@v1` tag strategy.** Convention: floating `@v1` major tag updated on every minor/patch release; `@v1.2.3` for pin-to-exact. `action.yml` lives at repo root; `dist/` is **not** required for composite actions (only for JS actions).
138
138
139
139
**Resolution: floating major `@v1` + changesets-driven release.** Cohort norm (`actions/checkout@v4`, `actions/setup-node@v4`, `oven-sh/setup-bun@v2`, …); Renovate/Dependabot-friendly (major tags are the unit they bump on); enforces semver discipline (any input/output break is a v2 bump, never within v1.x).
Copy file name to clipboardExpand all lines: docs/plans/perf-triangulation-rollout.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -84,7 +84,7 @@ Every distinct finding across the five source audits, with per-audit priority. E
84
84
85
85
The audit's predicted optimisation (per-file `Map.get` hoist saving the ~38ms it estimated from ~1.26M skipped lookups × ~30ns each) was **wrong** — tested both `ORDER BY file_path, id` SQL and JS-side `Map<file, Ref[]>` grouping variants on this repo (340 files) and a 2.1k-file external corpus; both showed 0 to slight regression. V8 already optimises hot `Map.get`; JS-side grouping overhead exceeded any savings.
86
86
87
-
**Profile-driven actual win:** Bindings-phase profiling revealed `bindings_ms` decomposes as `resolveBindings ≈ 17%` + `persistBindings.insert ≈ 83%` on a 2k-file corpus — the bottleneck was 243k row INSERTs with `foreign_keys=ON` + `synchronous=NORMAL` per row, NOT the resolver loop. Extending the existing bulk-INSERT PRAGMA-OFF window (already used during parallel parse+insert) through the bindings/cycles/re-exports phase saved **-33% `bindings_ms`** on the 2k-file corpus and **-27% here**. Behavior-preserved (stable-snapshot SHA bit-identical on both corpora).
87
+
**Profile-driven actual win:** Bindings-phase profiling (`bindings_ms` decomposition instrumentation; no longer a public env var) revealed `bindings_ms` decomposes as `resolveBindings ≈ 17%` + `persistBindings.insert ≈ 83%` on a 2k-file corpus — the bottleneck was 243k row INSERTs with `foreign_keys=ON` + `synchronous=NORMAL` per row, NOT the resolver loop. Extending the existing bulk-INSERT PRAGMA-OFF window (already used during parallel parse+insert) through the bindings/cycles/re-exports phase saved **-33% `bindings_ms`** on the 2k-file corpus and **-27% here**. Behavior-preserved (stable-snapshot SHA bit-identical on both corpora).
88
88
89
89
The "deeper optimisations (TypedArrays, no-imports fast-path)" the original audit gated on a larger corpus are still untested and may be similarly off — see § Methodology gaps below.
Copy file name to clipboardExpand all lines: docs/research/codemap-richer-index-synthesis-2026-05.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,16 +71,16 @@ A1 and A4 share an author but diverge on the agent-angle weighting and AST-engin
71
71
72
72
These have **6/6** support (counting A1 and A4 separately because their conclusions diverge on emphasis even when the author overlaps). They are the load-bearing claims for the synthesised path; nothing in the disagreement map should override them.
| C1 | The doc reframe (**shipped 2026-05**): [`roadmap.md`](../roadmap.md) Floors now split verdict-shaped lints from the substrate-shaped `codemap apply` executor. The old single "no fix engine" row conflated two product classes.| A1, A2, A3, A4, A5, A6 |
77
-
| C2 | The reframe shape: **"No verdict-shaped fix engine"** (preserved — `knip` / `eslint --fix` / `jscpd` own that class) AND **"Substrate-shaped diff executor IS in scope"** (the shipped reality; recipes propose, engine executes, agent confirms). | A1, A2 (implicit), A3 (implicit), A4, A5, A6 |
78
-
| C3 |`calls.{line_start, column_start}` is the **highest-ROI single substrate addition.** Closes the rename-preview substrate gap; unblocks app-wide rename of call sites; foundation for replace-deprecated-call recipes; foundation for diagnostic-push hotspot rendering when LSP plan ships. | A1, A2, A3, A4, A5, A6 |
79
-
| C4 |**Re-export source locations** are needed (whether as `exports.{line_start, column_start}` columns or a separate `export_locations` table). Re-export alias chains and barrel-safe rewrites both need it. | A1, A2, A3, A4, A5, A6 |
80
-
| C5 | More diff-shape recipes are needed in the bundled catalog. Today the count is 1 (`rename-preview`); consensus floor is 3–5 more. Specific candidates with multi-source agreement listed in [§ 4.3](#43-recipe-additions). | A1, A2, A3, A4 (item #4), A5, A6 (implicit) |
81
-
| C6 |**Moat A applies to writes by analogue.** Reviewer test: _"is this fix also expressible as `query --recipe <id>` + `apply <recipe-id>`?"_ Pass → moat-clean. Fail → verdict shape; reject. The recipes are the API for writes, same as for reads. | A1, A2, A3, A4, A5, A6 |
82
-
| C7 |**Dry-run-first + explicit confirmation gate is correct** and stays. Phase-1-validates-before-phase-2-writes pattern preserved; non-TTY without `--yes` rejected. | A1, A2, A3, A4, A5, A6 |
83
-
| C8 |**Watch + apply + reindex is the agent loop.** Default-ON watch on long-running transports keeps reads fresh; codemap-specific structural verification (the index reflects disk truth) is sufficient for the agent path; full typecheck/lint/tests verifier is consumer-side. | A1, A4, A6 explicit; A2, A3, A5 don't contradict |
| C1 | The doc reframe (**shipped 2026-05**): [`roadmap.md`](../roadmap.md) Floors now split verdict-shaped lints from the substrate-shaped `codemap apply` executor (`apply-engine.ts`, `cmd-apply.ts`, `rename-preview.sql`; see [`glossary.md`](../glossary.md) Substrate-shaped fix executor). The old single "no fix engine" row conflated two product classes. | A1, A2, A3, A4, A5, A6 |
77
+
| C2 | The reframe shape: **"No verdict-shaped fix engine"** (preserved — `knip` / `eslint --fix` / `jscpd` own that class) AND **"Substrate-shaped diff executor IS in scope"** (the shipped reality; recipes propose, engine executes, agent confirms). | A1, A2 (implicit), A3 (implicit), A4, A5, A6 |
78
+
| C3 |`calls.{line_start, column_start}` is the **highest-ROI single substrate addition.** Closes the rename-preview substrate gap; unblocks app-wide rename of call sites; foundation for replace-deprecated-call recipes; foundation for diagnostic-push hotspot rendering when LSP plan ships. | A1, A2, A3, A4, A5, A6 |
79
+
| C4 |**Re-export source locations** are needed (whether as `exports.{line_start, column_start}` columns or a separate `export_locations` table). Re-export alias chains and barrel-safe rewrites both need it. | A1, A2, A3, A4, A5, A6 |
80
+
| C5 | More diff-shape recipes are needed in the bundled catalog. Today the count is 1 (`rename-preview`); consensus floor is 3–5 more. Specific candidates with multi-source agreement listed in [§ 4.3](#43-recipe-additions). | A1, A2, A3, A4 (item #4), A5, A6 (implicit) |
81
+
| C6 |**Moat A applies to writes by analogue.** Reviewer test: _"is this fix also expressible as `query --recipe <id>` + `apply <recipe-id>`?"_ Pass → moat-clean. Fail → verdict shape; reject. The recipes are the API for writes, same as for reads. | A1, A2, A3, A4, A5, A6 |
82
+
| C7 |**Dry-run-first + explicit confirmation gate is correct** and stays. Phase-1-validates-before-phase-2-writes pattern preserved; non-TTY without `--yes` rejected. | A1, A2, A3, A4, A5, A6 |
83
+
| C8 |**Watch + apply + reindex is the agent loop.** Default-ON watch on long-running transports keeps reads fresh; codemap-specific structural verification (the index reflects disk truth) is sufficient for the agent path; full typecheck/lint/tests verifier is consumer-side. | A1, A4, A6 explicit; A2, A3, A5 don't contradict |
84
84
85
85
These eight are the **non-negotiable spine** of any synthesis path. Every step in [§ 6](#6-synthesised-12-step-path-with-open-implementation-questions) preserves them.
86
86
@@ -527,10 +527,10 @@ The minimum synthesis preserving every consensus claim (§ 2) and resolving ever
527
527
528
528
**Source ancestry:** C1, C2; all six positions.
529
529
530
-
**Open questions:**
530
+
**Open questions (resolved on ship):**
531
531
532
-
1. Two distinct rows or one row with two clauses? Bias toward two distinct rows — they're independent product-class decisions and each should grep / cite cleanly.
533
-
2. Lift any salvageable text from the existing row 45 ("Adjacent to Moat A" framing)? Yes — both new rows reference Moat A.
532
+
1. Two distinct rows or one row with two clauses? **Shipped: two distinct rows** in [`roadmap.md`](../roadmap.md) Floors.
533
+
2. Lift any salvageable text from the existing row 45 ("Adjacent to Moat A" framing)? **Yes** — both new rows reference Moat A.
534
534
535
535
### Step 2 — Three more diff-shape recipes (S × 3)
0 commit comments