spec: S1 0.3.0, generated files and the path the build writes them to - #28
Merged
Sunrisepeak merged 2 commits intoSep 27, 2026
Merged
Conversation
A set's ide object gains generated (section 7.2): each file or directory the build generates and the set's units compile or include, with the path the document names, the path the build of the same configuration writes, its kind, and for a file the step that writes it. A consumer does not report a missing generated file as an error in the referring source, may read the build's copy read-only, and runs a step only with its user's consent. Motivated by mcpp-community/mcpp#724.
speak-agent
force-pushed
the
spec/s1-generated-files
branch
from
September 27, 2026 15:20
813dd12 to
3f18747
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
S1 0.3.0 adds the
generatedfield to a set'sideobject (section 7.2). Each entry describes one file or directory that the build generates and that the set's units compile or include:path: the path the document names;build-path: the path the build of the same configuration writes;kind:source,headerordirectory;generator, for a file only:id,inputs,argumentsandwork-directoryof the step that writes it.A consumer does not report a reference to a missing generated file as an error in the referring source (S1-7.2-10). It may read the build's copy read-only, treating it as possibly stale (S1-7.2-12), and it runs a step only with its user's consent (S1-7.2-13).
Motivation
mcpp-community/mcpp#724.
mcpp emit build-databaseplans in a private directory, and it writes nothing into the project and runs no build step. A header that a rule generates is therefore absent there, and every source that includes it loses its semantics. The plan already knows each generating step, its inputs and its outputs. This addition lets the producer state these facts, and it leaves the decision to run a generator with the consumer and its user.Compatibility
The change is additive. A 0.2.0 consumer ignores the field (S1-11.2-1), and the schema accepts every 0.2.0 document.
Contents
docs/specs/s1-build-database.mdgains section 7.2, with rules S1-7.2-1 to S1-7.2-13, and the profile version becomes 0.3.0. The schema, the README, the two S1 examples (theirprofile-version) and the CHANGELOG are updated to match.conformance/traceability.jsonrecords the producer rules as manual evidence; the producer is mcpp, whose e2e 815 checks the fields. The four consumer rules are listed as$pendinguntil the server reads the field.Test plan
python3 docs/specs/tools/validate.py: 0 failures. It reports 258 rules and 4 pending.