feat(registry): complete ATLAS-WP-0002 T04 (canon mapping) + T01 (surface schema)
T04: add docs/canon-mapping.md mapping config-atlas concepts to InfoTechCanon
(itc-gov/data/devsecops/land/org/access/sec/tag) and sibling repos with
consume/reference/align/own ownership, plus gaps, validation hooks, and
extension candidates. Resolves the (planned) refs in PRD and ecosystem-boundaries.
T01: add schemas/surface-entry.schema.json (Draft 2020-12, additionalProperties
false to forbid inline values/secrets), docs/configuration-surface-schema.md
(fields, kind taxonomy, L0-L9 ordering, explicit merge rules), a validating seed
entry (surface.infotech.state-hub.api-config), and expand registry/README.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 22:47:40 +02:00
{
"$schema" : "https://json-schema.org/draft/2020-12/schema" ,
"$id" : "https://config-atlas/schemas/surface-entry.schema.json" ,
"title" : "Configuration Surface Entry" ,
"description" : "Schema for the YAML frontmatter of a config-atlas configuration-surface entry (registry/surfaces/*.md). Records the MAP of a configuration surface: where it lives, who owns it, its kind, scope, and source links. It stores metadata and references only -- never live configuration values and never secret values. See docs/configuration-surface-schema.md and docs/canon-mapping.md." ,
"type" : "object" ,
"additionalProperties" : false ,
"required" : [ "id" , "name" , "kind" , "summary" , "owner" , "status" , "scope" , "mutability" , "security_class" , "sources" ] ,
"properties" : {
"id" : {
"type" : "string" ,
"description" : "Stable id: surface.<domain>.<system>.<name>" ,
"pattern" : "^surface\\.[a-z0-9-]+\\.[a-z0-9-]+\\.[a-z0-9-]+$"
} ,
"name" : { "type" : "string" , "minLength" : 1 } ,
"kind" : {
"type" : "string" ,
"description" : "Closed taxonomy. Drives kind-separation." ,
"enum" : [ "app-config" , "deploy-config" , "secret-ref" , "feature-flag" , "policy" , "tenant-config" , "infra-state" , "runtime-override" ]
} ,
"summary" : { "type" : "string" , "minLength" : 1 } ,
"owner" : {
"type" : "string" ,
"description" : "Team/agent identity, resolved against domain-tree bindings. Not a person." ,
"minLength" : 1
} ,
2026-06-27 00:27:57 +02:00
"status" : { "type" : "string" , "enum" : [ "candidate" , "draft" , "active" , "deprecated" ] } ,
feat(registry): complete ATLAS-WP-0002 T04 (canon mapping) + T01 (surface schema)
T04: add docs/canon-mapping.md mapping config-atlas concepts to InfoTechCanon
(itc-gov/data/devsecops/land/org/access/sec/tag) and sibling repos with
consume/reference/align/own ownership, plus gaps, validation hooks, and
extension candidates. Resolves the (planned) refs in PRD and ecosystem-boundaries.
T01: add schemas/surface-entry.schema.json (Draft 2020-12, additionalProperties
false to forbid inline values/secrets), docs/configuration-surface-schema.md
(fields, kind taxonomy, L0-L9 ordering, explicit merge rules), a validating seed
entry (surface.infotech.state-hub.api-config), and expand registry/README.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 22:47:40 +02:00
"scope" : {
"type" : "object" ,
"additionalProperties" : false ,
"required" : [ "allowed_layers" , "default_layer" ] ,
"properties" : {
"allowed_layers" : {
"type" : "array" ,
"minItems" : 1 ,
"uniqueItems" : true ,
"items" : { "$ref" : "#/$defs/layer" }
} ,
"default_layer" : { "$ref" : "#/$defs/layer" }
}
} ,
"mutability" : {
"type" : "string" ,
"description" : "How the surface may change (delivery stage / blast radius)." ,
"enum" : [ "build-time" , "deploy-time" , "startup-time" , "hot-reloadable" , "per-request" , "emergency" ]
} ,
"security_class" : {
"type" : "string" ,
"enum" : [ "operational" , "sensitive" , "secret-ref" , "policy" ]
} ,
"schema" : {
"type" : "object" ,
"description" : "The CONTRACT for the surface (metadata), not a live value. 'default' is the declared product default, treated as contract documentation." ,
"additionalProperties" : false ,
"properties" : {
"type" : { "type" : "string" , "enum" : [ "string" , "integer" , "number" , "boolean" , "object" , "array" , "enum" ] } ,
"default" : { } ,
"enum" : { "type" : "array" } ,
"minimum" : { "type" : "number" } ,
"maximum" : { "type" : "number" } ,
"validator" : {
"type" : "string" ,
"description" : "Reference to a JSON Schema / CUE file. A pointer, not an inlined value."
}
}
} ,
"sources" : {
"type" : "array" ,
"description" : "Canonical sources, by reference. NEVER inlines a configuration or secret value." ,
"minItems" : 1 ,
"items" : {
"type" : "object" ,
"additionalProperties" : false ,
"required" : [ "role" ] ,
"properties" : {
"repo" : { "type" : "string" } ,
"path" : { "type" : "string" } ,
"endpoint" : { "type" : "string" } ,
"role" : {
"type" : "string" ,
"description" : "The layer contribution this source makes, e.g. company-baseline, environment-overlay, feature-control-key."
}
} ,
"anyOf" : [
{ "required" : [ "path" ] } ,
{ "required" : [ "endpoint" ] }
]
}
} ,
"relations" : {
"type" : "object" ,
"additionalProperties" : false ,
"properties" : {
"consumed_by" : { "$ref" : "#/$defs/idlist" } ,
"overrides" : { "$ref" : "#/$defs/idlist" } ,
"depends_on_secret" : {
"type" : "array" ,
"description" : "Secret references only -- ids/paths, never values." ,
"items" : { "type" : "string" }
} ,
"related_to" : { "$ref" : "#/$defs/idlist" }
}
} ,
"evidence" : {
"type" : "object" ,
"additionalProperties" : false ,
"properties" : {
"last_seen" : { "type" : "string" , "format" : "date" } ,
"discovery_method" : { "type" : "string" } ,
"change_log_ref" : { "type" : "string" }
}
}
} ,
"$defs" : {
"layer" : {
"type" : "string" ,
"description" : "Shared scope vocabulary (L0-L9 ordering, aligned to ITC-LAND/ITC-ORG and feature-control EvaluationScope). NOT a new set of names." ,
"enum" : [ "product-default" , "company" , "platform" , "environment" , "region" , "installation" , "tenant" , "group" , "user" , "agent" , "emergency" ]
} ,
"idlist" : {
"type" : "array" ,
"items" : { "type" : "string" }
}
}
}