diff --git a/docs/specification.md b/docs/specification.md index dbe7bd381..005de815e 100644 --- a/docs/specification.md +++ b/docs/specification.md @@ -34672,6 +34672,29 @@ The following is the formal [JSON Schema](https://json-schema.org/) definition f "type": "array", "items": { "type": "string" }, "description": "Glob patterns for resources to skip during discovery." + }, + "parent_types": { + "type": "array", + "items": { "type": "string" }, + "description": "Resource types that trigger auto-discovery of this child type. When a resource of one of these parent types is registered, the system scans for children of this type." + }, + "detection": { + "type": "object", + "description": "Detection configuration for child resource discovery.", + "properties": { + "scan_paths": { + "type": "array", + "items": { "type": "string" }, + "description": "Relative paths (from the parent resource root) to check for the presence of this child resource type. If any path exists, a child resource is created." + }, + "activation": { + "type": "string", + "enum": ["eager", "lazy"], + "default": "lazy", + "description": "When to activate the discovered child resource. 'lazy' means the child is registered but not built/started until first needed. 'eager' means the child is activated immediately at discovery time." + } + }, + "additionalProperties": false } }, "additionalProperties": false @@ -34903,6 +34926,9 @@ The following annotated YAML provides an easier-to-read overview of the same sch | `scan_depth` | integer | No | Maximum recursion depth for scanning. Default: `3`. | | `include_patterns` | list | No | Glob patterns for resources to discover. | | `exclude_patterns` | list | No | Glob patterns for resources to skip during discovery. | +| `parent_types` | list | No | Resource types that trigger auto-discovery of this child type. When a resource of one of these parent types is registered, the system scans for children of this type. Used by built-in types such as `devcontainer-instance` (triggered by `git-checkout`). | +| `detection.scan_paths` | list | No | Relative paths (from the parent resource root) to check for the presence of this child resource type. If any path exists, a child resource is created. Example: `[".devcontainer/devcontainer.json", ".devcontainer.json"]`. | +| `detection.activation` | string | No | When to activate the discovered child resource. `lazy` (default) means the child is registered but not built/started until first needed. `eager` means the child is activated immediately at discovery time. | **Equivalence Fields (`equivalence`) — Virtual Types Only**