--- id: PLN-0080 ticket: pbs-autocomplete-parameter-names title: Propagate semantic parameter names to PBS LSP editor assistance status: open created: 2026-05-08 ref_decisions: [DEC-0036] tags: [compiler-pbs, studio, lsp, autocomplete, signature-help, stdlib] --- ## Briefing `DEC-0036` requires completion, signature help, and hover to consume callable parameter names from the compiler semantic model and prevents generated ordinal placeholders from reaching user-facing editor/LSP output. This plan implements the LSP/editor consumption slice after compiler semantic callable metadata exists. ## Objective Propagate canonical semantic parameter names into PBS completion, signature help, hover, and VS Code-facing protocol mapping. Add tests proving `arg0`, `arg1`, and equivalent generated placeholders do not leak through user-facing LSP/editor surfaces. ## Dependencies - Depends on accepted decision `DEC-0036`. - Should follow `PLN-0078` for spec contract alignment. - Requires `PLN-0079` or equivalent compiler semantic metadata before final acceptance. ## Scope - Update PBS editorial support outputs consumed by the LSP bridge. - Update LSP baseline messages/mappers if the protocol shape needs richer parameter metadata. - Update completion item construction to use semantic parameter names in labels/details/snippets. - Update signature help to display semantic parameter names and types. - Update hover signatures to use the same parameter identity. - Update VS Code extension only if it formats snippets or signatures locally. - Add LSP/protocol tests that reject `argN` leakage. ## Non-Goals - No compiler semantic model implementation; that belongs to `PLN-0079`. - No authored parameter prose documentation. - No final design for optional/default/rest parameter UI unless already surfaced by compiler metadata. - No UI-only guesswork for missing names. ## Execution Method 1. Identify current LSP/editor assistance boundary: - Inspect: - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/services/compiler/CompilerLanguageServiceBridge.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/services/LanguageServiceBridge.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/messages/BaselineCompletionItem.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/messages/BaselineSignature.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/messages/BaselineSignatureHelp.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/messages/BaselineHover.java` - Map which fields currently carry callable signatures and parameters. 2. Consume semantic parameter names from compiler outputs: - Update bridge/mapping code so completion/signature/hover surfaces use parameter names from PBS semantic callable metadata. - Do not generate display names from method names, types, docs, or local maps. - Treat missing semantic names as incomplete metadata and apply a non-misleading fallback UI that does not show `argN`. 3. Update protocol mapping: - Inspect: - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/services/protocol/mapping/Lsp4jProtocolMessageMapper.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/services/protocol/mapping/ProtocolMessageMapper.java` - Ensure LSP4J completion/signature/hover conversion preserves semantic parameter names. - Ensure snippet placeholders, if emitted, use canonical parameter names. 4. Update VS Code extension if required: - Inspect: - `tools/vscode-extension/src/extension.ts` - If the extension formats call snippets or signatures locally, remove any generated ordinal placeholders and consume protocol-provided semantic names. 5. Add LSP/editor tests: - Extend: - `prometeu-lsp/prometeu-lsp-v1/src/test/java/p/studio/lsp/services/compiler/CompilerLanguageServiceBridgeTest.java` - `prometeu-lsp/prometeu-lsp-v1/src/test/java/p/studio/lsp/services/protocol/PrometeuTextDocumentServiceTest.java` - `prometeu-lsp/prometeu-lsp-v1/src/test/java/p/studio/lsp/services/protocol/PrometeuLanguageServerTest.java` - Assert completion labels/details/snippets do not contain `arg0` or `arg1`. - Assert signature help parameter labels use semantic names. - Assert hover callable signatures use the same semantic names. ## Acceptance Criteria - Completion surfaces use canonical semantic parameter names and do not leak `argN`. - Signature help surfaces use canonical semantic parameter names and do not leak `argN`. - Hover callable signatures use canonical semantic parameter names and do not leak `argN`. - The same callable uses the same parameter names across completion, signature help, and hover. - Missing parameter metadata is represented without fabricating public ordinal names. - VS Code extension behavior remains compatible with protocol outputs. ## Tests - Run focused LSP tests: - `CompilerLanguageServiceBridgeTest` - `PrometeuTextDocumentServiceTest` - `PrometeuLanguageServerTest` - Run the LSP Gradle test task for `prometeu-lsp-v1` if available. - Run VS Code extension tests/build if the extension code changes: - `npm test` or `npm run compile` in `tools/vscode-extension`, depending on available scripts. - Run `discussion validate`. ## Affected Artifacts - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/services/compiler/CompilerLanguageServiceBridge.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/services/LanguageServiceBridge.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/messages/BaselineCompletionItem.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/messages/BaselineSignature.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/messages/BaselineSignatureHelp.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/messages/BaselineHover.java` - `prometeu-lsp/prometeu-lsp-v1/src/main/java/p/studio/lsp/services/protocol/mapping/Lsp4jProtocolMessageMapper.java` - `tools/vscode-extension/src/extension.ts` if local formatting is present. - LSP protocol and bridge tests.