Skip to content

Manifest schema ownership: provides=, --strict, profile passthrough, platforms validation#110

Merged
Sunrisepeak merged 6 commits into
mainfrom
feat/schema-ownership
Jun 4, 2026
Merged

Manifest schema ownership: provides=, --strict, profile passthrough, platforms validation#110
Sunrisepeak merged 6 commits into
mainfrom
feat/schema-ownership

Conversation

@Sunrisepeak
Copy link
Copy Markdown
Member

Implements .agents/docs/2026-06-04-manifest-schema-ownership.md (closed grammar / open vocabulary):

  • [runtime] provides= (TOML + xpkg Lua): strong provider claim; provider mapping prefers provides-declarers over weak capabilities-listers (back-compat kept); [runtime.<cap>] provider= override still wins.
  • --strict on build: schema warnings → errors (unknown requested feature incl. backend= sugar, unknown platform).
  • [profile.] passthrough: cflags/cxxflags/ldflags (fixed keys, open values). Built-in dist no longer enables lto (several packaged gcc payloads lack the LTO plugin).
  • [package] platforms validated against the mcpp-owned vocabulary.
  • fix: fresh-build.ninja fast path silently ignored --profile/--features/--strict/-p — now bypasses like --target/--static.
  • e2e 66/67/68 cover provides/override, features+backend+platforms strict gate, profile knobs+passthrough.
  • docs: 05-mcpp-toml.md sections 2.8–2.11 + dep-spec sugar + appendix A (schema-ownership admission rule); 03/00 touches.

All verified locally (new e2e + 02/04 regression incl. fast-path).

…idation

Implements .agents/docs/2026-06-04-manifest-schema-ownership.md D2-D5:
- [runtime] provides = [...] (TOML + xpkg Lua): strong provider claim;
  provider mapping now prefers provides-declarers over weak
  capabilities-listing packages (back-compat retained).
- --strict on build: schema warnings become errors.
- features strict check: a requested feature (incl. backend= sugar) must
  exist in the target's [features] table when one is declared.
- [profile.<name>] passthrough: cflags/cxxflags/ldflags (fixed keys, open
  values).
- [package] platforms validated against the mcpp-owned vocabulary.
…6-68

The fresh-build.ninja fast path skipped prepare_build, silently ignoring
resolution-affecting flags (a plain build followed by build --features X
no-op'd). Bail out like --target/--static already did. Built-in dist profile
no longer enables lto (several packaged gcc payloads lack the LTO plugin;
remains an explicit [profile.*] knob). Adds e2e: 66 runtime provides
(strong-vs-weak provider + override), 67 features/backend=/platforms strict
gate, 68 profile knobs + passthrough.
05-mcpp-toml.md: new sections 2.8 [features], 2.9 [profile.<name>] (incl.
passthrough), 2.10 [runtime] (provides/provider override/capability naming),
2.11 [package] platforms; dep-spec features/backend= sugar in 2.5; appendix A
'schema ownership' (closed grammar / open vocabulary) as the admission rule
for future fields. Examples mirror the verified e2e 66-68. 03-toolchains:
abi capability enforcement; 00-getting-started: gui template + why/doctor.
@Sunrisepeak Sunrisepeak merged commit 24c6bd4 into main Jun 4, 2026
3 checks passed
@Sunrisepeak Sunrisepeak deleted the feat/schema-ownership branch June 4, 2026 00:08
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