2026-07-29 10:15:27 -04:00
{
"$schema" : "https://json-schema.org/draft/2020-12/schema" ,
"$id" : "https://docforge.local/schema/client-configuration-v1.json" ,
"title" : "DocForge deterministic client configuration plan" ,
"$defs" : {
"sha256" : {
"type" : "string" ,
"pattern" : "^[0-9a-f]{64}$"
} ,
"adapter_policy" : {
"oneOf" : [
{
"type" : "object" ,
"required" : [
"mode" ,
"ast_analysis" ,
"logic_projection" ,
"incremental_extraction" ,
"adapter_rewrite"
] ,
"properties" : {
"mode" : { "const" : "standard" } ,
"ast_analysis" : { "const" : "allowed" } ,
"logic_projection" : { "const" : "allowed" } ,
"incremental_extraction" : { "const" : "allowed" } ,
"adapter_rewrite" : { "const" : "not_requested" }
} ,
"additionalProperties" : false
} ,
{
"type" : "object" ,
"required" : [
"mode" ,
"ast_analysis" ,
"logic_projection" ,
"incremental_extraction" ,
"adapter_rewrite" ,
"blocked_tools" ,
"instruction"
] ,
"properties" : {
"mode" : { "const" : "preserve-no-ast" } ,
"ast_analysis" : { "const" : "forbidden" } ,
"logic_projection" : { "const" : "forbidden" } ,
"incremental_extraction" : { "const" : "allowed" } ,
"adapter_rewrite" : { "const" : "forbidden" } ,
"blocked_tools" : {
"const" : [ "docforge_get_logic" ]
} ,
"instruction" : {
"const" : "Preserve the existing adapter extraction strategy. Do not add Python AST, Tree-sitter, compiler-AST, or function-Logic extraction. Non-AST incremental fingerprinting and caching remain allowed."
}
} ,
"additionalProperties" : false
}
]
} ,
"effective_policy" : {
"type" : "object" ,
"required" : [
"schema_version" ,
"capability_mode" ,
"capability_source" ,
"adapter_evolution" ,
"ast_analysis" ,
"logic_indexing" ,
"synchronization" ,
"integrity" ,
"manual_render" ,
"graph_render" ,
"live_viewer" ,
"profiling" ,
"blocked_tools" ,
"prohibitions" ,
"precedence"
] ,
"properties" : {
"schema_version" : { "const" : 1 } ,
"capability_mode" : {
"enum" : [ "read" , "proposal" , "application" ]
} ,
"capability_source" : { "const" : "explicit" } ,
"adapter_evolution" : { "enum" : [ "allowed" , "preserve" ] } ,
"ast_analysis" : { "enum" : [ "allowed" , "forbidden" ] } ,
"logic_indexing" : { "enum" : [ "full" , "off" ] } ,
"synchronization" : { "const" : "automatic" } ,
"integrity" : { "const" : "validated" } ,
"manual_render" : { "enum" : [ "auto" , "explicit" , "disabled" ] } ,
"graph_render" : { "const" : "disabled" } ,
"live_viewer" : { "const" : "on-demand" } ,
"profiling" : { "const" : "disabled" } ,
"blocked_tools" : {
"type" : "array" ,
"maxItems" : 1 ,
"items" : { "const" : "docforge_get_logic" } ,
"uniqueItems" : true
} ,
"prohibitions" : {
"type" : "array" ,
"minItems" : 7 ,
"maxItems" : 11 ,
"items" : {
"enum" : [
"arbitrary_file_access" ,
"arbitrary_renderer_execution" ,
"shell_execution" ,
"git_mutation" ,
"deployment" ,
"publication" ,
"project_switching" ,
"adapter_ast_upgrade" ,
"tree_sitter_upgrade" ,
"compiler_ast_upgrade" ,
"function_logic_extraction"
]
} ,
"uniqueItems" : true
} ,
"precedence" : {
"const" : [
"core_safety" ,
"explicit_binding" ,
"no_ast_shorthand" ,
"resource_availability"
]
}
} ,
"additionalProperties" : false
} ,
2026-07-29 12:38:25 -04:00
"projection_policy" : {
"type" : "object" ,
"required" : [ "schema_version" , "manual" , "portable_graph" , "live_viewer" ] ,
"properties" : {
"schema_version" : { "const" : 2 } ,
"manual" : { "enum" : [ "auto" , "explicit" , "disabled" ] } ,
"portable_graph" : { "enum" : [ "explicit" , "disabled" ] } ,
"live_viewer" : { "enum" : [ "on-demand" , "disabled" ] }
} ,
"additionalProperties" : false
} ,
2026-07-29 10:15:27 -04:00
"diagnostics" : {
"type" : "object" ,
"required" : [
"schema_version" ,
"operation" ,
"outcome" ,
"elapsed_ns" ,
"stages" ,
"counters"
] ,
"properties" : {
"schema_version" : { "const" : 1 } ,
"operation" : { "const" : "cli.configure" } ,
"outcome" : { "const" : "ok" } ,
"elapsed_ns" : { "type" : "integer" , "minimum" : 0 } ,
"stages" : {
"type" : "object" ,
"maxProperties" : 14 ,
"propertyNames" : {
"enum" : [
"source.generation" ,
"source.parse" ,
"adapter.projection" ,
"adapter.extract" ,
"index.check" ,
"index.synchronize" ,
"index.build" ,
"index.read" ,
"render.status" ,
"render.prepare" ,
"render.output_hash" ,
"visualization.status" ,
"viewer.manager" ,
"mcp.runtime_validation"
]
} ,
"additionalProperties" : {
"type" : "object" ,
"required" : [ "calls" , "elapsed_ns" ] ,
"properties" : {
"calls" : { "type" : "integer" , "minimum" : 1 } ,
"elapsed_ns" : { "type" : "integer" , "minimum" : 0 }
} ,
"additionalProperties" : false
}
} ,
"counters" : {
"type" : "object" ,
"required" : [
"project_loads" ,
"source_files_parsed" ,
"source_bytes_parsed" ,
"adapter_projection_loads" ,
"adapter_source_extractions" ,
"source_generation_checks" ,
"index_checks" ,
"index_synchronizations" ,
"index_builds" ,
"render_prepare_calls" ,
"render_output_bytes_built" ,
"render_output_bytes_hashed" ,
"viewer_manager_requests"
] ,
"additionalProperties" : {
"type" : "integer" ,
"minimum" : 0
} ,
"maxProperties" : 13
}
} ,
"additionalProperties" : false
}
} ,
"type" : "object" ,
"required" : [
"status" ,
"schema_version" ,
2026-07-29 15:47:08 -04:00
"docforge_version" ,
2026-07-29 10:15:27 -04:00
"operation" ,
"action" ,
"client" ,
"server_name" ,
"project" ,
"binding" ,
"effective_policy" ,
2026-07-29 12:38:25 -04:00
"projection_policy" ,
"projection_policy_hash" ,
"projection_availability" ,
2026-07-29 10:15:27 -04:00
"artifact" ,
"configuration_hash" ,
"warnings"
] ,
"properties" : {
"status" : { "const" : "ok" } ,
"schema_version" : { "const" : 1 } ,
2026-07-29 15:47:08 -04:00
"docforge_version" : {
"type" : "string" ,
"minLength" : 1 ,
"maxLength" : 128
} ,
2026-07-29 10:15:27 -04:00
"operation" : { "const" : "client.configure" } ,
"action" : { "enum" : [ "preview" , "write" ] } ,
"client" : { "enum" : [ "codex" , "claude" , "openclaw" ] } ,
"server_name" : {
"type" : "string" ,
"pattern" : "^[a-z0-9][a-z0-9_-]{0,63}$"
} ,
"project" : {
"type" : "object" ,
"required" : [
"project_id" ,
"project_root" ,
"project_root_fingerprint" ,
2026-07-29 12:38:25 -04:00
"adapter" ,
"descriptor_hash"
2026-07-29 10:15:27 -04:00
] ,
"properties" : {
"project_id" : { "type" : "string" , "minLength" : 1 } ,
"project_root" : { "type" : "string" , "minLength" : 1 } ,
"project_root_fingerprint" : {
"type" : "string" ,
"pattern" : "^[0-9a-f]{16}$"
} ,
2026-07-29 12:38:25 -04:00
"adapter" : { "type" : "string" , "minLength" : 1 } ,
"descriptor_hash" : { "$ref" : "#/$defs/sha256" }
2026-07-29 10:15:27 -04:00
} ,
"additionalProperties" : false
} ,
"binding" : {
"type" : "object" ,
"required" : [
"transport" ,
"capability_mode" ,
"adapter_policy" ,
"render_policy" ,
"command" ,
"args" ,
"environment" ,
"timeouts"
] ,
"properties" : {
"transport" : { "const" : "stdio" } ,
"capability_mode" : {
"enum" : [ "read" , "proposal" , "application" ]
} ,
"adapter_policy" : { "$ref" : "#/$defs/adapter_policy" } ,
"render_policy" : {
"type" : "object" ,
"required" : [ "manual" , "graph" , "live_viewer" ] ,
"properties" : {
"manual" : { "enum" : [ "auto" , "explicit" , "disabled" ] } ,
"graph" : { "const" : "disabled" } ,
"live_viewer" : { "const" : "on-demand" }
} ,
"additionalProperties" : false
} ,
"command" : { "type" : "string" , "minLength" : 1 } ,
"args" : {
"type" : "array" ,
"minItems" : 7 ,
"maxItems" : 64 ,
"prefixItems" : [
{ "const" : "-I" } ,
{ "const" : "-m" } ,
{ "const" : "docforge.mcp_server" } ,
{ "const" : "--project-root" } ,
{ "type" : "string" , "minLength" : 1 , "maxLength" : 4096 } ,
{ "const" : "--capability-mode" } ,
{ "enum" : [ "read" , "proposal" , "application" ] }
] ,
"items" : {
"type" : "string" ,
"minLength" : 1 ,
"maxLength" : 4096
}
} ,
"environment" : {
"type" : "object" ,
"maxProperties" : 0
} ,
"timeouts" : {
"type" : "object" ,
"required" : [ "startup_seconds" , "tool_seconds" ] ,
"properties" : {
"startup_seconds" : {
"type" : "integer" ,
"minimum" : 1 ,
"maximum" : 3600
} ,
"tool_seconds" : {
"type" : "integer" ,
"minimum" : 1 ,
"maximum" : 86400
}
} ,
"additionalProperties" : false
}
} ,
"additionalProperties" : false
} ,
"effective_policy" : { "$ref" : "#/$defs/effective_policy" } ,
2026-07-29 12:38:25 -04:00
"projection_policy" : { "$ref" : "#/$defs/projection_policy" } ,
"projection_policy_hash" : { "$ref" : "#/$defs/sha256" } ,
"projection_availability" : {
"type" : "object" ,
"required" : [
"manual_configured" ,
"portable_graph_configured" ,
"application_enabled" ,
"live_viewer_available"
] ,
"properties" : {
"manual_configured" : { "type" : "boolean" } ,
"portable_graph_configured" : { "type" : "boolean" } ,
"application_enabled" : { "type" : "boolean" } ,
"live_viewer_available" : { "const" : true }
} ,
"additionalProperties" : false
} ,
2026-07-29 10:15:27 -04:00
"artifact" : {
"type" : "object" ,
"required" : [
"format" ,
"content" ,
"content_sha256" ,
"output_path" ,
"write_state" ,
"durability"
] ,
"properties" : {
"format" : {
"enum" : [
"codex-toml-fragment-v1" ,
"claude-json-fragment-v1" ,
"openclaw-json-fragment-v1"
]
} ,
"content" : {
"type" : "string" ,
"minLength" : 1 ,
"maxLength" : 65536
} ,
"content_sha256" : { "$ref" : "#/$defs/sha256" } ,
"output_path" : {
"type" : [ "string" , "null" ] ,
"minLength" : 1
} ,
"write_state" : {
"enum" : [ "not_requested" , "created" , "unchanged" ]
} ,
"durability" : {
"enum" : [ "not_applicable" , "confirmed" , "unconfirmed" ]
}
} ,
"additionalProperties" : false
} ,
"configuration_hash" : { "$ref" : "#/$defs/sha256" } ,
"warnings" : {
"type" : "array" ,
"maxItems" : 8 ,
"items" : {
"type" : "object" ,
"required" : [ "code" ] ,
"properties" : {
"code" : {
"enum" : [
"timeout_format_unverified" ,
"publication_durability_unconfirmed" ,
"publication_location_unconfirmed" ,
"publication_binding_unconfirmed"
]
}
} ,
"additionalProperties" : false
}
} ,
"diagnostics" : { "$ref" : "#/$defs/diagnostics" }
} ,
"allOf" : [
{
"if" : {
"properties" : {
"warnings" : {
"contains" : {
"properties" : {
"code" : { "const" : "publication_binding_unconfirmed" }
} ,
"required" : [ "code" ]
}
}
} ,
"required" : [ "warnings" ]
} ,
"then" : {
"properties" : {
"artifact" : {
"properties" : {
"output_path" : { "type" : "null" } ,
"write_state" : { "const" : "created" } ,
"durability" : { "const" : "unconfirmed" }
}
}
}
}
} ,
{
"if" : {
"properties" : { "client" : { "const" : "codex" } } ,
"required" : [ "client" ]
} ,
"then" : {
"properties" : {
"artifact" : {
"properties" : {
"format" : { "const" : "codex-toml-fragment-v1" }
}
} ,
"warnings" : {
"not" : {
"contains" : {
"properties" : {
"code" : { "const" : "timeout_format_unverified" }
} ,
"required" : [ "code" ]
}
}
}
}
}
} ,
{
"if" : {
"properties" : { "client" : { "const" : "openclaw" } } ,
"required" : [ "client" ]
} ,
"then" : {
"properties" : {
"artifact" : {
"properties" : {
"format" : { "const" : "openclaw-json-fragment-v1" }
}
} ,
"warnings" : {
"not" : {
"contains" : {
"properties" : {
"code" : { "const" : "timeout_format_unverified" }
} ,
"required" : [ "code" ]
}
}
}
}
}
} ,
{
"if" : {
"properties" : { "client" : { "const" : "claude" } } ,
"required" : [ "client" ]
} ,
"then" : {
"properties" : {
"artifact" : {
"properties" : {
"format" : { "const" : "claude-json-fragment-v1" }
}
} ,
"warnings" : {
"contains" : {
"properties" : {
"code" : { "const" : "timeout_format_unverified" }
} ,
"required" : [ "code" ]
}
}
}
}
} ,
{
"if" : {
"properties" : { "action" : { "const" : "preview" } } ,
"required" : [ "action" ]
} ,
"then" : {
"properties" : {
"artifact" : {
"properties" : {
"output_path" : { "type" : "null" } ,
"write_state" : { "const" : "not_requested" } ,
"durability" : { "const" : "not_applicable" }
}
}
}
} ,
"else" : {
"properties" : {
"artifact" : {
"properties" : {
"output_path" : {
"type" : [ "string" , "null" ] ,
"minLength" : 1
} ,
"write_state" : { "enum" : [ "created" , "unchanged" ] }
} ,
"allOf" : [
{
"if" : {
"properties" : { "write_state" : { "const" : "created" } } ,
"required" : [ "write_state" ]
} ,
"then" : {
"properties" : {
"durability" : { "enum" : [ "confirmed" , "unconfirmed" ] }
}
} ,
"else" : {
"properties" : {
"durability" : { "const" : "not_applicable" }
}
}
}
]
}
}
}
} ,
{
"if" : {
"properties" : {
"binding" : {
"properties" : { "capability_mode" : { "const" : "read" } } ,
"required" : [ "capability_mode" ]
}
} ,
"required" : [ "binding" ]
} ,
"then" : {
"properties" : {
"binding" : {
"properties" : {
"args" : {
"prefixItems" : [ { } , { } , { } , { } , { } , { } , { "const" : "read" } ]
}
}
} ,
"effective_policy" : {
"properties" : { "capability_mode" : { "const" : "read" } }
}
}
}
} ,
{
"if" : {
"properties" : {
"binding" : {
"properties" : { "capability_mode" : { "const" : "proposal" } } ,
"required" : [ "capability_mode" ]
}
} ,
"required" : [ "binding" ]
} ,
"then" : {
"properties" : {
"binding" : {
"properties" : {
"args" : {
"prefixItems" : [ { } , { } , { } , { } , { } , { } , { "const" : "proposal" } ]
}
}
} ,
"effective_policy" : {
"properties" : { "capability_mode" : { "const" : "proposal" } }
}
}
}
} ,
{
"if" : {
"properties" : {
"binding" : {
"properties" : { "capability_mode" : { "const" : "application" } } ,
"required" : [ "capability_mode" ]
}
} ,
"required" : [ "binding" ]
} ,
"then" : {
"properties" : {
"binding" : {
"properties" : {
"args" : {
"prefixItems" : [ { } , { } , { } , { } , { } , { } , { "const" : "application" } ]
}
}
} ,
"effective_policy" : {
"properties" : { "capability_mode" : { "const" : "application" } }
}
}
}
} ,
{
"if" : {
"properties" : {
"binding" : {
"properties" : {
"adapter_policy" : {
"properties" : { "mode" : { "const" : "preserve-no-ast" } } ,
"required" : [ "mode" ]
}
} ,
"required" : [ "adapter_policy" ]
}
} ,
"required" : [ "binding" ]
} ,
"then" : {
"properties" : {
"binding" : {
"properties" : {
"args" : {
"contains" : { "const" : "--no-ast" } ,
"minContains" : 1 ,
"maxContains" : 1
}
}
} ,
"effective_policy" : {
"properties" : {
"adapter_evolution" : { "const" : "preserve" } ,
"ast_analysis" : { "const" : "forbidden" } ,
"logic_indexing" : { "const" : "off" } ,
"blocked_tools" : { "const" : [ "docforge_get_logic" ] } ,
"prohibitions" : {
"const" : [
"arbitrary_file_access" ,
"arbitrary_renderer_execution" ,
"shell_execution" ,
"git_mutation" ,
"deployment" ,
"publication" ,
"project_switching" ,
"adapter_ast_upgrade" ,
"tree_sitter_upgrade" ,
"compiler_ast_upgrade" ,
"function_logic_extraction"
]
}
}
}
}
} ,
"else" : {
"properties" : {
"binding" : {
"properties" : {
"args" : {
"not" : {
"contains" : { "const" : "--no-ast" }
}
}
}
} ,
"effective_policy" : {
"properties" : {
"adapter_evolution" : { "const" : "allowed" } ,
"ast_analysis" : { "const" : "allowed" } ,
"logic_indexing" : { "const" : "full" } ,
"blocked_tools" : { "const" : [ ] } ,
"prohibitions" : {
"const" : [
"arbitrary_file_access" ,
"arbitrary_renderer_execution" ,
"shell_execution" ,
"git_mutation" ,
"deployment" ,
"publication" ,
"project_switching"
]
}
}
}
}
}
} ,
{
"if" : {
"properties" : {
"binding" : {
"properties" : {
"render_policy" : {
"properties" : { "manual" : { "const" : "auto" } } ,
"required" : [ "manual" ]
}
} ,
"required" : [ "render_policy" ]
}
} ,
"required" : [ "binding" ]
} ,
"then" : {
"properties" : {
"effective_policy" : {
"properties" : { "manual_render" : { "const" : "auto" } }
}
}
}
} ,
{
"if" : {
"properties" : {
"binding" : {
"properties" : {
"render_policy" : {
"properties" : { "manual" : { "const" : "explicit" } } ,
"required" : [ "manual" ]
}
} ,
"required" : [ "render_policy" ]
}
} ,
"required" : [ "binding" ]
} ,
"then" : {
"properties" : {
"effective_policy" : {
"properties" : { "manual_render" : { "const" : "explicit" } }
}
}
}
} ,
{
"if" : {
"properties" : {
"binding" : {
"properties" : {
"render_policy" : {
"properties" : { "manual" : { "const" : "disabled" } } ,
"required" : [ "manual" ]
}
} ,
"required" : [ "render_policy" ]
}
} ,
"required" : [ "binding" ]
} ,
"then" : {
"properties" : {
"effective_policy" : {
"properties" : { "manual_render" : { "const" : "disabled" } }
}
}
}
} ,
{
"if" : {
"properties" : {
"artifact" : {
"properties" : {
"durability" : { "const" : "unconfirmed" }
} ,
"required" : [ "durability" ]
}
} ,
"required" : [ "artifact" ]
} ,
"then" : {
"properties" : {
"artifact" : {
"properties" : {
"write_state" : { "const" : "created" }
}
} ,
"warnings" : {
"anyOf" : [
{
"contains" : {
"properties" : {
"code" : { "const" : "publication_durability_unconfirmed" }
} ,
"required" : [ "code" ]
}
} ,
{
"contains" : {
"properties" : {
"code" : { "const" : "publication_location_unconfirmed" }
} ,
"required" : [ "code" ]
}
} ,
{
"contains" : {
"properties" : {
"code" : { "const" : "publication_binding_unconfirmed" }
} ,
"required" : [ "code" ]
}
}
]
}
}
}
} ,
{
"if" : {
"properties" : {
"warnings" : {
"contains" : {
"properties" : {
"code" : { "const" : "publication_location_unconfirmed" }
} ,
"required" : [ "code" ]
}
}
} ,
"required" : [ "warnings" ]
} ,
"then" : {
"properties" : {
"artifact" : {
"properties" : {
"output_path" : { "type" : "null" } ,
"write_state" : { "const" : "created" } ,
"durability" : { "const" : "unconfirmed" }
}
}
}
}
} ,
{
"if" : {
"properties" : {
"action" : { "const" : "write" } ,
"artifact" : {
"properties" : { "output_path" : { "type" : "null" } } ,
"required" : [ "output_path" ]
}
} ,
"required" : [ "action" , "artifact" ]
} ,
"then" : {
"properties" : {
"warnings" : {
"anyOf" : [
{
"contains" : {
"properties" : {
"code" : { "const" : "publication_location_unconfirmed" }
} ,
"required" : [ "code" ]
}
} ,
{
"contains" : {
"properties" : {
"code" : { "const" : "publication_binding_unconfirmed" }
} ,
"required" : [ "code" ]
}
}
]
}
}
}
} ,
{
"if" : {
"properties" : {
"warnings" : {
"contains" : {
"properties" : {
"code" : { "const" : "publication_durability_unconfirmed" }
} ,
"required" : [ "code" ]
}
}
} ,
"required" : [ "warnings" ]
} ,
"then" : {
"properties" : {
"artifact" : {
"properties" : {
"write_state" : { "const" : "created" } ,
"durability" : { "const" : "unconfirmed" }
}
}
}
}
}
] ,
"additionalProperties" : false
}