Skip to content

S2 0.3.0: a single-document answer may describe a workspace in part - #25

Closed
speak-agent wants to merge 1 commit into
Sunrisepeak:mainfrom
speak-agent:docs/s2-partial-document
Closed

speak-agent wants to merge 1 commit into
Sunrisepeak:mainfrom
speak-agent:docs/s2-partial-document

Conversation

@speak-agent

Copy link
Copy Markdown
Contributor

Summary

S2 0.3.0: in single-document mode, a document may carry data together with error diagnostics, and it then describes everything except what those diagnostics name.

  • data (S2-3.4-5) is present when the command described the workspace in whole or in part. A command without data has still failed (S2-3.4-11, unchanged).
  • A diagnostic may carry path (optional), the file it concerns, relative to the workspace root. The schema gains the property.
  • S2-3.4-12, S2-3.4-13: the producer names each part it could not describe (a workspace member or a package) in an error diagnostic whose path is that part's build description file; a consumer should use the rest of the document and report the errors; the exit status is non-zero.

Why

mcpp-community/mcpp#699: on a five-member workspace, one member whose host tool failed to build removed every member's sets, and the language server fell back to a guessed model. mcpp now plans every selected member on its own and describes a package whose build program fails without that program's directives (mcpp-community/mcpp#702, design record .agents/docs/2026-09-26-compile-database-and-issue-699-design.md §4.4). S2 0.2.0 had no partial outcome, so the producer's new shape needed one sentence here.

Compatibility

MINOR: an optional field and a relaxation of when data appears. A consumer written for 0.2.0 reads such a document as a success with error diagnostics, which is the intended reading.

Sunrisepeak added a commit that referenced this pull request Sep 26, 2026
… not describe is said (S2 0.3.0, F10)

S2 0.3.0 (from #25) lets a single-document answer carry data together with error diagnostics whose path names each part the producer could not describe, as mcpp does after mcpp-community/mcpp#699. mcppls already used such data; it now reads the diagnostics' path and reports each missing part as a model issue (producer-partial) by its build description file. The mock mcpp answers that way when a fixture records a database and diagnostics; fixture mcpp-emit-partial, and validate.py checks the schema's path. S2-3.4-12 and S2-3.4-13 have their evidence.
@Sunrisepeak

Copy link
Copy Markdown
Owner

Folded into #26 (release 0.0.5) so it lands as one PR: the S2 0.3.0 change is merged there unchanged, together with its consumer side in mcppls (F10: a partial answer is used and each part the producer could not describe is reported as producer-partial), the traceability evidence S2-3.4-12/13 needs (validate.py checks and fixture mcpp-emit-partial), and the specs CHANGELOG entry. Closing in favour of #26.

Sunrisepeak added a commit that referenced this pull request Sep 26, 2026
…import no longer stalls clangd, restarts back off, C++26 aligned, one-click diagnostic bundle (#26)

clangd's module scan failed on every unit of a project built with LTO for the MSVC ABI, because the commands it was given had no -c and the driver's link-phase check (LTO requires -fuse-ld=lld) fired; no module was built, imports were not found, and on Windows clangd crashed until it was given up on (issue #23). Every engine command now compiles only, -flto kept. A crash sets aside the file clangd names in its crash context; restarts have a budget per cause (plan, recovery, crash) and are backed off 1/2/4/8 minutes past it, never refused, with Restart clangd and switches of toolchain or context never counted; clangd waits for the build tool's model when a build system was found; a command clangd rejects is an environment issue.

clangd reads an open file's imports from disk (UP-14), so an autosave of a half-typed import reached it past every workaround: import hello. spun it and an import of a module not provided yet deadlocked it, and every request for the file waited behind it. A file whose text on disk would stall clangd is now set aside before clangd builds it and handed back once the disk or the database makes it safe; files being edited are planned with what their buffer and disk import, stand-ins no longer restart clangd, and a missing ';' and an unsaved import are reported where and as they are (WA-CLANGD-006, -007).

The module units of a context are read with one C++ standard, the newest they name, so a C++26 file imports what a C++23 one built; sources nothing describes are read as C++26 where the compiler takes it. S2 0.3.0 (#25): a build tool's partial answer is used and what it could not describe is reported. A space after import opens the module list and module keywords come from mcppls; export and C++26 contract keywords are colored. clangd logs at info into memory, incidents record what went wrong, and Export Diagnostic Bundle zips report, environment, logs, incidents and engine database with home, names and secrets replaced, refusing to write anything left over. macOS 11 again with mcpp 2026.9.26.1.

Plan, decisions and implementation record: .agents/docs/2026-09-26-issue-23-fix-plan.md; analysis of #23: .agents/docs/2026-09-26-issue-23-lto-module-scan.md; details in CHANGELOG [0.0.5].

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
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