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**