Skip to content

[codex] refresh ProvekIt docs for v1.6.2 surfaces#480

Merged
TSavo merged 3 commits into
mainfrom
codex/centralize-protocol-pin
May 7, 2026
Merged

[codex] refresh ProvekIt docs for v1.6.2 surfaces#480
TSavo merged 3 commits into
mainfrom
codex/centralize-protocol-pin

Conversation

@TSavo
Copy link
Copy Markdown
Owner

@TSavo TSavo commented May 7, 2026

Summary

Refreshes ProvekIt documentation around the current v1.6.2 protocol/tooling surface and the broader product framing: a toolchain for proving content-addressed claims, with software correctness across domains as the center use case.

What changed

  • Reframes the top-level docs around software correctness across domains, content-addressed claims, and fail-closed evidence graphs.
  • Updates v1.6.2 catalog/CID references, PEP/CICP docs, proof-protocol notes, release/contributing docs, per-language status, and tutorials.
  • Adds docs for use cases, protocol extensions, content-addressed CI, Bug Zoo, cross-domain bridges, handshake debugging, canonical form, error codes, and the LSP helper protocol.
  • Reworks Bug Zoo docs to sell the idea as executable receipt infrastructure for rediscovering and closing missing bug edges.
  • Frames CICP as supply-chain admission over exact input closures, with reuse as the secondary benefit.

Validation

  • python3 relative-link check over changed/new Markdown files: 48 files checked, all links resolve.
  • git diff --check
  • cargo run --release --manifest-path tools/recompute-spec-cids/Cargo.toml -- --verify
  • cargo run --release --manifest-path implementations/rust/Cargo.toml --bin provekit -- ci check --body protocol/conformance/cicp/job-result-pass.json
  • cargo run --release --manifest-path implementations/rust/Cargo.toml --bin provekit -- zoo

Notes: the Rust/Maven commands still emit existing warnings from generated/compiler/self-contract code and Maven shading; the commands exit successfully.

Summary by CodeRabbit

Release Notes

  • Documentation

    • Added comprehensive guides for Bug Zoo specimen testing, Content-Addressed CI Protocol, and cross-domain bridge construction
    • New error codes reference and protocol extension surface documentation
    • Updated per-language kit status and IDE integration references to reflect current availability
  • Updates

    • Protocol catalog version bumped to v1.6.2 with updated canonical CIDs
    • Conformance artifacts and CI job results updated to reflect latest snapshot

Copilot AI review requested due to automatic review settings May 7, 2026 10:43
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 7, 2026

Review Change Stack

Walkthrough

ProvekIt protocol is bumped from v1.6.0 to v1.6.2. A new lift-plugin-protocol contract-set constant is introduced and pinned in the self-contracts library. Twelve language kit CI job results are recorded as accepted witnesses in the CICP artifact store. Comprehensive documentation is refreshed across explanations, how-tos, references, tutorials, contributing guides, and security sections to reflect the v1.6.2 version and new protocol features.

Changes

Protocol v1.6.2 & Lift-Plugin CID Pinning

Layer / File(s) Summary
Protocol Version & Contract Boundaries
Makefile, implementations/rust/provekit-self-contracts/src/lib.rs, .provekit/ci/README.md
Catalog CID pinned to v1.6.2 in Makefile; new ACCEPTED_LIFT_PLUGIN_PROTOCOL_CONTRACT_SET_CID constant added and exported; CICP admission framing clarified as primary safety claim over time savings.
Implementation & Test Updates
implementations/rust/provekit-cli/tests/mint_kit_integration.rs, tools/cross-kit-conformance/src/lib.rs
Integration test renamed and re-pinned constant from canonical slab to full self-contract surface; new test added to validate lift-plugin protocol contract-set separately; cross-kit-conformance gate updated to validate against new constant.
Protocol Artifacts & Acceptance Records
.github/workflows/ci.yml, .provekit/ci/accepted/*/*.job-result.json (12 files), protocol/conformance/cicp/README.md, protocol/evolution/README.md
CI conformance comment updated to v1.6.2 description; job-result claims added for C, C++, C#, Go, Java, Python, Ruby, Rust (2), Swift, TypeScript, and Zig; CICP and protocol-evolution documentation added.
Public Documentation & Reference Updates
README.md, docs/*/**/*.md (70+ files), bug-zoo/, implementations/rust/libprovekit/README.md
All user-facing docs refreshed: READMEs emphasize v1.6.2; CID references updated; new how-to guides added (content-addressed-ci.md, cross-domain-bridges.md, bug-zoo.md, debugging-a-failed-handshake.md); reference pages restructured (cids.md, error-codes.md, canonical-form.md, lsp-plugin-protocol.md, protocol-extensions.md); tutorials updated to current version; supply-chain and contributing guides expanded.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • TSavo/provekit#348: Both PRs modify Rust integration tests and adjust pinned contract-set CIDs/self-contract attestation handling in mint_kit_integration.rs.
  • TSavo/provekit#225: Related through lift-plugin protocol surface—main PR pins ACCEPTED_LIFT_PLUGIN_PROTOCOL_CONTRACT_SET_CID and updates validation, while retrieved PR introduces the provekit-lift protocol adapter.
  • TSavo/provekit#474: Both PRs modify cross-kit-conformance behavior and self-contracts attestation/contract-set CID validation and bootstrap handling.

Poem

🐰 The garden grows, version-bumped and bright,
From v1.6.0 to v1.6.2's light,
Lift-plugins pinned, CI jobs witnessed true,
Twelve implementations blessed, the whole crew,
Docs refresh like clover, supply chains blessed anew! 🌿

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/centralize-protocol-pin

@TSavo TSavo force-pushed the codex/centralize-protocol-pin branch from 064e433 to 224aeac Compare May 7, 2026 10:50
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@TSavo TSavo changed the title [codex] centralize protocol contract CID pin [codex] refresh ProvekIt docs for v1.6.2 surfaces May 7, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
implementations/rust/provekit-self-contracts/src/lib.rs (1)

126-144: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Doc comment says "C1-C8" but LIFT_PLUGIN_PROTOCOL_CONTRACT_NAMES has 11 entries.

The phrase "lift-plugin-protocol C1-C8" implies 8 contracts; the array has 11. The comment does say "split into concrete contract facets," which allows more than 8 facets, but the range annotation will still mislead contributors counting entries to validate coverage. Consider replacing "C1-C8" with the actual clause-to-facet mapping (e.g., "11 facets spanning spec clauses C1–C8") or removing the range entirely.

📝 Proposed fix
-/// The standard protocol-contract slab: lift-plugin-protocol C1-C8, split
-/// into the concrete contract facets authored by `lift_plugin_protocol.rs`.
+/// The standard protocol-contract slab: 11 facets covering lift-plugin-protocol
+/// spec clauses C1–C8, authored by `lift_plugin_protocol.rs`.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@implementations/rust/provekit-self-contracts/src/lib.rs` around lines 126 -
144, Update the doc comment above the constant
LIFT_PLUGIN_PROTOCOL_CONTRACT_NAMES to stop claiming "C1-C8" implies exactly
eight contracts; instead state the actual mapping/size (e.g., "11 facets
spanning spec clauses C1–C8" or simply "11 facets") so the comment matches the
array contents and avoids misleading readers counting entries. Ensure the
wording still notes these are concrete facets split from lift_plugin_protocol,
and keep the reference to the stable ordering.
🧹 Nitpick comments (3)
docs/reference/error-codes.md (1)

20-23: 💤 Low value

Minor style note: repetitive sentence structure is acceptable here.

The static analysis tool flagged the repetitive "Use" sentence beginnings in the emission rules. While this creates parallel structure, it's appropriate and effective for a technical reference that enumerates rule categories. The parallel construction makes the severity-level rules easy to scan and compare.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/reference/error-codes.md` around lines 20 - 23, The repeated "Use"
sentence starters for the emission rules (lines referencing 'error', 'warning',
'information', 'hint') are intentional for parallel, scannable documentation —
leave the four bullet lines unchanged; if you want to address the static
analysis warning, add a single brief author note above or below the list (one
sentence) stating that the repetition is intentional for readability, rather
than rewording the bullets themselves.
docs/contributing/release-process.md (1)

125-125: ⚡ Quick win

Make the planned governance reference navigable in “Read next”.

This item is rendered as inline code, so it can’t be followed like the other entries. Consider converting it to a Markdown link (or a TODO issue link) for consistent navigation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/contributing/release-process.md` at line 125, In the "Read next" section
replace the inline code entry `docs/governance/protocol-versions.md` (planned):
version policy. with a proper Markdown link (or a TODO issue-style link) so it
is navigable; locate the exact string in the "Read next" list in
docs/contributing/release-process.md and change it to a link like
[docs/governance/protocol-versions.md (planned): version
policy](docs/governance/protocol-versions.md) or an appropriate placeholder link
if the file is not yet published.
bug-zoo/README.md (1)

5-5: 💤 Low value

Consider breaking this sentence into multiple sentences for improved readability.

This 50+ word sentence packs a lot of technical detail. While accurate, splitting it into 2-3 shorter sentences would make the concept easier to parse on first reading.

📝 Suggested refactor for readability
-A normal bug corpus says: this project failed, and this patch fixed it. Bug Zoo asks for a stronger receipt: can ProvekIt rediscover the missing obligation from the code, framework metadata, schemas, or annotations already present; name that obligation by CID; and accept a repair only after the repaired artifact re-lifts to a closed proof graph?
+A normal bug corpus says: this project failed, and this patch fixed it. Bug Zoo asks for a stronger receipt. Can ProvekIt rediscover the missing obligation from the code, framework metadata, schemas, or annotations already present? Can it name that obligation by CID and accept a repair only after the repaired artifact re-lifts to a closed proof graph?
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bug-zoo/README.md` at line 5, The README contains one long 50+ word sentence
starting "A normal bug corpus says: this project failed, and this patch fixed
it..." that should be split into 2–3 shorter sentences for readability; edit the
sentence in bug-zoo/README.md to break the ideas into separate sentences (e.g.,
one stating what a normal bug corpus does, a second asking whether ProvekIt can
rediscover the missing obligation from code/framework
metadata/schemas/annotations, and a third about naming the obligation by CID and
accepting a repair only after the repaired artifact re-lifts to a closed proof
graph) so each clause is clearer and flows logically.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/contributing/build.md`:
- Around line 15-16: The two pseudocode lines "provekit ci ..." and "provekit
zoo ..." are incorrectly placed inside the "Make targets" sh code block; remove
those lines from the existing Make targets block and create a short separate
section (or a details/summary snippet) titled like "Additional CI commands (not
make targets)" that shows concrete examples using the real commands "provekit ci
check/shadow/result/reuse" and "provekit zoo [--all]" with brief comments;
ensure the Make targets block only contains actual make targets or valid shell
commands and that the new block clearly indicates these are non-make helper
commands.

In `@docs/explanation/compared-to/kani-prusti-creusot.md`:
- Line 142: The sentence currently reads in present tense for the planned
adapter "provekit-lift-kani"; change the phrasing to conditional or future tense
(for example, replace "walks" with "would walk" or "will walk") so the file's
status remains consistent; update the line referencing provekit-lift-kani to use
the chosen conditional/future verb to avoid implying the adapter already ships.

In `@docs/reference/lsp-plugin-protocol.md`:
- Around line 9-10: The doc is ambiguous about request vs response envelopes:
clarify that request messages include {id, method, params?} while responses
include {id, result? , error?} and do not require a method; update the two
sentences so the first explicitly describes the request envelope (mentioning
`id`, `method`, optional `params`) and the second explicitly describes the
response envelope (same `id` and either `result` or `error` without `method`),
using the exact field names (`id`, `method`, `params`, `result`, `error`) to
avoid ambiguity for helper/plugin implementers.

---

Outside diff comments:
In `@implementations/rust/provekit-self-contracts/src/lib.rs`:
- Around line 126-144: Update the doc comment above the constant
LIFT_PLUGIN_PROTOCOL_CONTRACT_NAMES to stop claiming "C1-C8" implies exactly
eight contracts; instead state the actual mapping/size (e.g., "11 facets
spanning spec clauses C1–C8" or simply "11 facets") so the comment matches the
array contents and avoids misleading readers counting entries. Ensure the
wording still notes these are concrete facets split from lift_plugin_protocol,
and keep the reference to the stable ordering.

---

Nitpick comments:
In `@bug-zoo/README.md`:
- Line 5: The README contains one long 50+ word sentence starting "A normal bug
corpus says: this project failed, and this patch fixed it..." that should be
split into 2–3 shorter sentences for readability; edit the sentence in
bug-zoo/README.md to break the ideas into separate sentences (e.g., one stating
what a normal bug corpus does, a second asking whether ProvekIt can rediscover
the missing obligation from code/framework metadata/schemas/annotations, and a
third about naming the obligation by CID and accepting a repair only after the
repaired artifact re-lifts to a closed proof graph) so each clause is clearer
and flows logically.

In `@docs/contributing/release-process.md`:
- Line 125: In the "Read next" section replace the inline code entry
`docs/governance/protocol-versions.md` (planned): version policy. with a proper
Markdown link (or a TODO issue-style link) so it is navigable; locate the exact
string in the "Read next" list in docs/contributing/release-process.md and
change it to a link like [docs/governance/protocol-versions.md (planned):
version policy](docs/governance/protocol-versions.md) or an appropriate
placeholder link if the file is not yet published.

In `@docs/reference/error-codes.md`:
- Around line 20-23: The repeated "Use" sentence starters for the emission rules
(lines referencing 'error', 'warning', 'information', 'hint') are intentional
for parallel, scannable documentation — leave the four bullet lines unchanged;
if you want to address the static analysis warning, add a single brief author
note above or below the list (one sentence) stating that the repetition is
intentional for readability, rather than rewording the bullets themselves.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 419fa9d6-ed4a-4c68-82c9-8161c80f5c98

📥 Commits

Reviewing files that changed from the base of the PR and between ce8b6c8 and da33e78.

📒 Files selected for processing (65)
  • .github/workflows/ci.yml
  • .provekit/ci/README.md
  • .provekit/ci/accepted/c/blake3-512:62a0c412512c0caadb734ef89dbe037a9c8125edc9f7f0dcd553bafdc3d1ec4b9d0ffd1e6267a625e6a006f7d15ed542f9fee045ba4c2990e5bb67806a3622c6.job-result.json
  • .provekit/ci/accepted/cpp/blake3-512:5fbd5e703372ba39f1fecb111a87a3290e206bee7cab1d71dc6b590772a8ed6cd25aca7a3250f15217bd04184b3af5e771038f0953491b77bce1ac43d13cc854.job-result.json
  • .provekit/ci/accepted/csharp/blake3-512:7b18a2a1208030708fc0f181950e3924fba180c015c12a24883a1643b1782ed88949e14fdb75532faa4b9cd82bbc7052eb7c54265053983ed947ab2093b4d6c0.job-result.json
  • .provekit/ci/accepted/go/blake3-512:d0c24f41b43f77a2f29ea7bc7bcfa27843e63849069042f46738b08342e8038fe8c46ce3adb3034058cbd8b981355bdc0b7729f1a7fc185b73ac8b759cf2216b.job-result.json
  • .provekit/ci/accepted/java/blake3-512:65ff1380c69021005518cb24fdfd183deaca60fe4e1ea18c6f9461e96c9616bf6bd4a285e69a84242de09408e821db89a04c0774b1f3124946b95b5bf24d9119.job-result.json
  • .provekit/ci/accepted/python/blake3-512:e68d4db0b26dc2204eea435724e86bbb5857b681a587bba6a8cec5cdc2895103ede4e3e0cf69a67d246b119397064799091ed04b4de5c5e90f710e539a3d12c4.job-result.json
  • .provekit/ci/accepted/ruby/blake3-512:53c2f0158f55a1da14b1ede806ace042a0f73a77adf08c348ff617a95fcb221096f2325c49e7332f45694f8e9bf69017f0cc5a392422de77492a13a48551c7a2.job-result.json
  • .provekit/ci/accepted/rust/blake3-512:445c29af52235d5b3f15c1bf8b5c3a1e183ea6c12501a1556bab5c4e76a17b37add44a47122a4246eb46b65f24dd65a3761654e1a0b22236853e29c8e492da8f.job-result.json
  • .provekit/ci/accepted/rust/blake3-512:49b8ecbb4465dbc370c5a0c81634e7edf89eef4ab93a7617d185061579e4958af9c263e7c3f60cef42184a226cf47611ed69bfdf0a97ff72386ecf1ed9541897.job-result.json
  • .provekit/ci/accepted/swift/blake3-512:df2d6ae49a9d3bc105cad278ddf2d7e7091ca3549d33b36e3b561a978700ddeb96deb30b13c31533ae9e41cd35905ce4a77ca4aa4620a0d2bc00dcdb6bd96211.job-result.json
  • .provekit/ci/accepted/ts/blake3-512:def5c32342ef31dc04c1a33a878e8c0e5aa6dc935398b5ebcb06d4dbb409f78329d7a36dbe57994f113d0c198c49463d65e5a4c3637f7e615180155e600c33ab.job-result.json
  • .provekit/ci/accepted/zig/blake3-512:4f1a87bbd96d3c593f8f1e279e36f32d3abb46071e79ffcec2a9390f7293f0910c3078fd4e4c06f3b2749489366a9a4b70278c3526ac9a6945b2b970b168649b.job-result.json
  • Makefile
  • README.md
  • bug-zoo/README.md
  • bug-zoo/species/BZ-SHAPE-005-java-null-boundary-equivalence/README.md
  • docs/contributing/build.md
  • docs/contributing/proposing-a-spec-change.md
  • docs/contributing/release-process.md
  • docs/contributing/writing-a-kit/02-canonicalizer.md
  • docs/contributing/writing-an-LSP-plugin.md
  • docs/explanation/architecture.md
  • docs/explanation/compared-to/kani-prusti-creusot.md
  • docs/explanation/landing.md
  • docs/explanation/pitch.md
  • docs/explanation/product.md
  • docs/explanation/use-cases.md
  • docs/how-to/bug-zoo.md
  • docs/how-to/content-addressed-ci.md
  • docs/how-to/cross-domain-bridges.md
  • docs/how-to/debugging-a-failed-handshake.md
  • docs/how-to/ide-integration/jetbrains.md
  • docs/how-to/ide-integration/neovim.md
  • docs/how-to/ide-integration/overview.md
  • docs/how-to/ide-integration/vscode.md
  • docs/index.md
  • docs/papers/README.md
  • docs/quickstart-end-user.md
  • docs/quickstart-extender.md
  • docs/reference/cids.md
  • docs/reference/error-codes.md
  • docs/reference/ir/canonical-form.md
  • docs/reference/lsp-plugin-protocol.md
  • docs/reference/per-language-status.md
  • docs/reference/protocol-extensions.md
  • docs/security/supply-chain.md
  • docs/tutorials/c.md
  • docs/tutorials/cpp.md
  • docs/tutorials/csharp.md
  • docs/tutorials/go.md
  • docs/tutorials/java.md
  • docs/tutorials/python.md
  • docs/tutorials/ruby.md
  • docs/tutorials/rust.md
  • docs/tutorials/swift.md
  • docs/tutorials/typescript.md
  • docs/tutorials/zig.md
  • implementations/rust/libprovekit/README.md
  • implementations/rust/provekit-cli/tests/mint_kit_integration.rs
  • implementations/rust/provekit-self-contracts/src/lib.rs
  • protocol/conformance/cicp/README.md
  • protocol/evolution/README.md
  • tools/cross-kit-conformance/src/lib.rs

Comment on lines +15 to +16
provekit ci ... # CICP supply-chain admission and result witnesses
provekit zoo ... # Bug Zoo specimen/exposure/dropper checks
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

provekit commands are misplaced in the Make targets block.

Lines 15–16 (provekit ci ... and provekit zoo ...) appear inside the sh code block under the "Make targets" heading, but they are neither make targets nor valid shell invocations — the ... placeholder is pseudocode. A contributor following this section literally would be confused.

Consider breaking these out into a short separate block, e.g.:

📝 Proposed fix
 make clean         # remove all build artifacts

+Additional CI commands (not make targets):
+sh +provekit ci check/shadow/result/reuse # CICP supply-chain admission and result witnesses +provekit zoo [--all] # Bug Zoo specimen/exposure/dropper checks +

and removing lines 15–16 from the existing `make` block.
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @docs/contributing/build.md around lines 15 - 16, The two pseudocode lines
"provekit ci ..." and "provekit zoo ..." are incorrectly placed inside the "Make
targets" sh code block; remove those lines from the existing Make targets block
and create a short separate section (or a details/summary snippet) titled like
"Additional CI commands (not make targets)" that shows concrete examples using
the real commands "provekit ci check/shadow/result/reuse" and "provekit zoo
[--all]" with brief comments; ensure the Make targets block only contains actual
make targets or valid shell commands and that the new block clearly indicates
these are non-make helper commands.


</details>

<!-- fingerprinting:phantom:poseidon:churro -->

<!-- 4e71b3a2 -->

<!-- This is an auto-generated comment by CodeRabbit -->

With ProvekIt:

1. `provekit-lift-kani` (planned for v1.2) walks `#[kani::proof]` and lifts to canonical IR.
1. `provekit-lift-kani` walks `#[kani::proof]` and lifts to canonical IR.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Clarify hypothetical wording to avoid implying the adapter already ships.

Line 142 uses present tense (“walks”), but this file still marks provekit-lift-kani as planned elsewhere. Consider switching to conditional/future wording (e.g., “would walk”) to keep status consistent.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/explanation/compared-to/kani-prusti-creusot.md` at line 142, The
sentence currently reads in present tense for the planned adapter
"provekit-lift-kani"; change the phrasing to conditional or future tense (for
example, replace "walks" with "would walk" or "will walk") so the file's status
remains consistent; update the line referencing provekit-lift-kani to use the
chosen conditional/future verb to avoid implying the adapter already ships.

Comment on lines +9 to +10
- Each message has an `id`, `method`, and optional `params`.
- Responses carry the same `id` with either `result` or `error`.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Clarify request vs response envelope to avoid protocol ambiguity.

Line 9 implies all messages require method, but Line 10 defines responses as {id, result|error}. This contradiction can lead to incompatible helper/plugin implementations.

Suggested wording fix
-- Each message has an `id`, `method`, and optional `params`.
-- Responses carry the same `id` with either `result` or `error`.
+- Requests use `{ "id", "method", "params"? }`.
+- Responses use `{ "id", "result" }` or `{ "id", "error" }`.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- Each message has an `id`, `method`, and optional `params`.
- Responses carry the same `id` with either `result` or `error`.
- Requests use `{ "id", "method", "params"? }`.
- Responses use `{ "id", "result" }` or `{ "id", "error" }`.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/reference/lsp-plugin-protocol.md` around lines 9 - 10, The doc is
ambiguous about request vs response envelopes: clarify that request messages
include {id, method, params?} while responses include {id, result? , error?} and
do not require a method; update the two sentences so the first explicitly
describes the request envelope (mentioning `id`, `method`, optional `params`)
and the second explicitly describes the response envelope (same `id` and either
`result` or `error` without `method`), using the exact field names (`id`,
`method`, `params`, `result`, `error`) to avoid ambiguity for helper/plugin
implementers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants