Repository navigation
Release v4.39.0
The Blueprint package kind (Part B 1.1, 3, 6): what a domain blueprint declares, the rules that say it is done, the version pin, the gallery catalog, the scaffold all seven domain blueprints start from, and the CI gate that holds every blueprint to it. The rules live in the engines and are shared by both (REN1/REN2); nothing is Studio-only.
Added
- Manifest (
ScenePackage.blueprint, C#ScenePackage.Blueprint):BlueprintMetadata-domain,description,thumbnail,screenSet(namedBlueprintScreens with template, parent, order and icon, i.e. the navigation) anddefaultSampleData. Sample-data packs stay the existingsampleDatareferences.TemplateMetadata.thumbnailfor each template. There is deliberately no second version on the blueprint: the packageversionis the blueprint's version. The sharedscene-model-shape.jsonkeeps C# and TypeScript in step. verifyBlueprintPackage(C#BlueprintVerification.Verify), the definition of done: manifest kind and version; domain slug, description (at most 200 characters), thumbnail path and presence in the package; a non-empty screen set with unique names, titles, existing templates, parents in the set, no ancestor cycle and every screen provided; sample data present, references valid and in the package, a declared default when there are several; every template with display name, description, type from the vocabulary, aBusiness / <domain>category and a thumbnail, on top of the provenancedescribeTemplateCatalogalready checks; every screen template placed by the slot resolver (unplaced, ambiguous and self-nested are reported); a dependency on the foundation set. A package with noblueprintblock (a foundation blueprint) is held to the template, placement and sample-data rules only, or to all of them withrequireBlueprintMetadata.- Version pin semantics:
evaluateBlueprintPin(C#BlueprintVersionPin.Evaluate) decides Current / UpdateAvailable / UpdateBlockedByPin / NotSatisfied / Invalid for a reference's pinned range against the installed and latest versions;defaultBlueprintPinis the caret range of the installed version.compareVersions/PackageVersionRange.CompareVersionsare new in both engines. - Gallery data:
describeBlueprintCatalog(C#BlueprintCatalog.Describe) and theBlueprintCatalogFileshape (blueprintCatalog.json): per domain blueprint its description, thumbnail, version, license, dependencies, screen set in navigation order, templates with type, category and thumbnail, and sample-data packs with the default marked. Every domain blueprint ships its entry; the repository rootblueprintCatalog.jsoncollects them. blueprint-verification-fixtures.json, a shared corpus (27 verification cases, 5 catalog cases, 17 pin cases, 8 version comparisons) asserted byEngine.Specs/for_Blueprints(C#) andengine/for_blueprints(TypeScript), plus a specification that fails when a rule has no case.- Scaffold:
yarn new-blueprint <domain> ["Name"] ["Description"]writesSource/JavaScript/blueprint.<domain>(templates, screens, sampleData, thumbnails, manifest, bundle, provenance and the verifying specification). What it writes is already done. - CI:
yarn verify-blueprintsfails when a blueprint package has no verifying specification, when its packed archive lacksthumbnails/,sampleData/or the catalog or carries a thumbnail outsidethumbnails/, and when the root catalog is stale. The build also scaffolds a package, builds, lints, tests and verifies it unchanged, so the generator cannot rot. The default and components blueprints verify themselves with the same function. - Docs:
blueprints/ship-your-own-blueprint.md- the domain blueprint layout, manifest, definition of done, version pins and catalog.
Changed
- Ambiguity is reported as a problem only for a domain blueprint: the foundation's generic nesting chain (
ModuleWorkspace>FeatureSection>SliceSection) fits slots many templates declare and is chosen explicitly, so flagging it would be noise.
Part of #109