| name | vnext-meta-validator |
| description | Validates vnext-meta package JSON files for schema compliance, version consistency, and codebase alignment. Use when the user says "validate meta", "meta check", "meta kontrol", "vnext-meta validate", or after modifying vnext-meta JSON files. |
vNext Meta Validator
Trigger
Activate when:
- The user says any of: validate meta, meta check, meta kontrol, vnext-meta validate, meta dogrula (Turkish spelling variants may omit diacritics: dogrula / doğrula).
- Immediately after any edit under
vnext-meta/ (same session / follow-up turn).
Do not skip categories because the change touched only one file — run all applicable checks below and report PASS/FAIL per category.
Scope
Root: vnext-meta/ at the repository root.
| File | Role |
|---|
package.json | NPM package identity; version must match repo release. |
version-manifest.json | Released runtime versions and schemaVersion. |
features.json | Feature catalog keyed by area (engine, api, …). |
component-registry.json | Tasks, functions, extensions with key, since, stable, domains. |
performance-profiles.json | Numeric limits + sources mapping to C# constants. |
deprecations.json | Structured deprecation items. |
security-policy.json | Policy statements tied to enforcement in code. |
migrations.json | Migration notes (structure as in repo). |
known-issues.json | Known issues register (structure as in repo). |
index.js | Package entry (non-JSON; only if user changed it or asks for full package health). |
Workflow
- Collect current versions — Read
common.props (<Version>) and vnext-meta/package.json (version). Note the effective "current" runtime version string.
- Parse JSON — Ensure every
*.json under vnext-meta/ parses; record line/column on failure.
- Run checks 1–8 below in order; for each category emit PASS or FAIL with evidence.
- Summarize using the Output Format template; for every FAIL, give concrete suggested fixes (file + field or code symbol).
Tools: Prefer the code-review-graph MCP tools (semantic_search_nodes, query_graph) over Grep when possible. Open the C# files referenced in performance-profiles.json sources when verifying numeric limits.
1. Schema compliance
Goal: Each JSON file matches the expected structural contract used by this package (fields, nesting, types).
1.1 version-manifest.json
1.2 package.json
1.3 features.json
1.4 component-registry.json
1.5 performance-profiles.json
1.6 deprecations.json
1.7 security-policy.json
1.8 migrations.json / known-issues.json
2. Version consistency
Goal: Published meta versions agree with the canonical MSBuild version.
Sources of truth
common.props: <Version> — authoritative runtime/package alignment target.
vnext-meta/package.json: version must equal <Version>.
vnext-meta/features.json: runtimeVersion must equal <Version> when documenting the current tip (unless intentionally documenting a fork — then FAIL with explanation).
vnext-meta/version-manifest.json: Must contain an entry for the current <Version> if that version is released and described in meta; schemaVersion inside that entry must match the key.
Checks
3. Component registry alignment
Goal: Registry keys mirror runtime constants and enums.
Tasks → TaskTypes
- File:
src/BBT.Workflow.Execution.Abstractions/TaskTypes.cs
- Rule: Every
public const string value must appear exactly once as a tasks[].key in component-registry.json, and every tasks[].key must match a const value (lowercase naming per file comments).
Functions → FunctionTypeConst
- File:
src/BBT.Workflow.Domain/Definitions/Functions/FunctionTypeConst.cs
- Rule: Const values (e.g.
"state", "permissions") must match functions[].key. Cover all consts; registry must not invent undocumented function keys.
Extensions → ExtensionType
- File:
src/BBT.Workflow.Domain/Definitions/Extensions/ExtensionEnums.cs — enum ExtensionType
- Rule: JSON uses camelCase keys derived from enum names (
Global → global, DefinedFlowAndRequested → definedFlowAndRequested). Every enum member must have a registry row and vice versa.
4. Performance profile accuracy
Goal: Numeric limits match live C# constants and private caps.
Primary files (non-exhaustive — follow sources map in JSON)
| Area | Typical symbols |
|---|
| Workflow string limits | BBT.Workflow.Definitions.WorkflowConstants (src/BBT.Workflow.Domain/Definitions/WorkflowConstants.cs) |
| Transition / version strategy | TransitionConstants, LanguageLabelConstants |
| Query / security input | BBT.Workflow.Domain.Security.InputValidator (src/BBT.Workflow.Domain/Security/InputValidator.cs) |
| Auto-chain depth | TransitionPipeline: MaxChainDepth (src/BBT.Workflow.Application/Execution/Transitions/Pipeline/TransitionPipeline.cs) — must align with limits.runtime.maxAutoTransitionChainDepth |
| Serialization depth | Json serializer / trigger task limits as named in sources |
Checks
5. Feature existence
Goal: Entries in features.json correspond to real implementations, not aspirations.
Method
For each feature block (especially engine and api):
Mark FAIL if the feature reads as shipped but symbols or routes are missing or behavior clearly differs.
6. Deprecation tracking
Goal: deprecations.json matches [Obsolete] and related migration reality.
Method
Severity in JSON should align with compiler warning vs error where applicable.
7. Security policy grounding
Goal: Each security-policy.json policy is traceable to enforcement code.
Method
8. Cross-reference integrity
Goal: Shared version references and identifiers agree across meta files.
Checks
Output format
Emit validation results in markdown using this structure:
## vnext-meta validation summary
**Scope**: `vnext-meta/` (+ referenced `common.props`, C# sources)
**Baseline version**: `<Version from common.props>`
### 1. Schema compliance — PASS | FAIL
- Details: ...
### 2. Version consistency — PASS | FAIL
- Details: ...
### 3. Component registry alignment — PASS | FAIL
- Details: ...
### 4. Performance profile accuracy — PASS | FAIL
- Details: ...
### 5. Feature existence — PASS | FAIL
- Details: ...
### 6. Deprecation tracking — PASS | FAIL
- Details: ...
### 7. Security policy grounding — PASS | FAIL
- Details: ...
### 8. Cross-reference integrity — PASS | FAIL
- Details: ...
## Mismatches (if any)
| Location | Expected | Actual | Suggested fix |
|----------|----------|--------|---------------|
| ... | ... | ... | ... |
## Suggested fixes
- Ordered list of concrete actions (edit file X, add const Y, update limit Z to match `WorkflowConstants.*`, …)
Rules
- Use PASS only if all sub-bullets in that section succeed; one defect → FAIL.
- Prefer tables and file paths over vague prose.
- For large FAIL sets, cap the table at the top 25 issues and note "truncated"; still mark section FAIL.
Notes for agents
- After localized edits, re-run full validation before declaring the meta package release-ready.
- If JSON schema files are added later under
vnext-meta/, extend §1 using those schemas as machine-verifiable contracts.
- Keep suggestions minimal and reversible: align meta to code unless the user explicitly intends to document future behavior.