263 lines
6.1 KiB
Plaintext
263 lines
6.1 KiB
Plaintext
|
|
# Generator Contracts
|
||
|
|
#
|
||
|
|
# Type-safe contracts for infrastructure generation, gap analysis,
|
||
|
|
# change tracking, declarations, and questionnaires.
|
||
|
|
|
||
|
|
{
|
||
|
|
# ========================================================================
|
||
|
|
# Gap Analysis Contracts
|
||
|
|
# ========================================================================
|
||
|
|
|
||
|
|
MissingTaskservGap = {
|
||
|
|
taskserv_name | String,
|
||
|
|
reason | String,
|
||
|
|
required | Bool,
|
||
|
|
suggested_version | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
MissingFieldGap = {
|
||
|
|
schema_name | String,
|
||
|
|
field_name | String,
|
||
|
|
reason | String,
|
||
|
|
suggested_value | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
VersionMismatchGap = {
|
||
|
|
taskserv_name | String,
|
||
|
|
current_version | String,
|
||
|
|
recommended_version | String,
|
||
|
|
reason | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
DependencyGap = {
|
||
|
|
taskserv_name | String,
|
||
|
|
depends_on | String,
|
||
|
|
reason | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
Gap = {
|
||
|
|
kind | String, # "missing_taskserv" | "missing_field" | "version_mismatch" | "dependency"
|
||
|
|
severity | String, # "error" | "warning" | "info"
|
||
|
|
location | String | optional,
|
||
|
|
message | String,
|
||
|
|
suggestion | String | optional,
|
||
|
|
context | {_: String} | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
GapAnalysisReport = {
|
||
|
|
declaration_name | String,
|
||
|
|
declaration_version | String,
|
||
|
|
gaps | Array Gap,
|
||
|
|
total_errors | Number,
|
||
|
|
total_warnings | Number,
|
||
|
|
total_info | Number,
|
||
|
|
completeness_score | Number, # 0.0 to 1.0
|
||
|
|
},
|
||
|
|
|
||
|
|
GapFix = {
|
||
|
|
gap_id | String,
|
||
|
|
action | String, # "add" | "update" | "remove" | "skip"
|
||
|
|
value | String | optional,
|
||
|
|
reasoning | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
GapFixPlan = {
|
||
|
|
declaration_name | String,
|
||
|
|
fixes | Array GapFix,
|
||
|
|
estimated_changes | Number,
|
||
|
|
preservation_strategy | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
# ========================================================================
|
||
|
|
# Change Tracking Contracts
|
||
|
|
# ========================================================================
|
||
|
|
|
||
|
|
AddTaskservChange = {
|
||
|
|
taskserv_name | String,
|
||
|
|
version | String,
|
||
|
|
profile | String,
|
||
|
|
reason | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
RemoveTaskservChange = {
|
||
|
|
taskserv_name | String,
|
||
|
|
reason | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
UpdateTaskservChange = {
|
||
|
|
taskserv_name | String,
|
||
|
|
old_version | String | optional,
|
||
|
|
new_version | String | optional,
|
||
|
|
old_profile | String | optional,
|
||
|
|
new_profile | String | optional,
|
||
|
|
reason | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
UpdateFieldChange = {
|
||
|
|
schema_name | String,
|
||
|
|
field_name | String,
|
||
|
|
old_value | String | optional,
|
||
|
|
new_value | String,
|
||
|
|
reason | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
PreserveCustomizationChange = {
|
||
|
|
location | String,
|
||
|
|
value | String,
|
||
|
|
reason | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
Change = {
|
||
|
|
kind | String,
|
||
|
|
timestamp | String,
|
||
|
|
author | String | optional,
|
||
|
|
breaking | Bool,
|
||
|
|
details | {_: String},
|
||
|
|
},
|
||
|
|
|
||
|
|
MergeResult = {
|
||
|
|
success | Bool,
|
||
|
|
changes | Array Change,
|
||
|
|
preserved_customizations | Array String,
|
||
|
|
conflicts | Array String,
|
||
|
|
version_bumped | String | optional, # "major" | "minor" | "patch"
|
||
|
|
new_version | String | optional,
|
||
|
|
warning_messages | Array String,
|
||
|
|
},
|
||
|
|
|
||
|
|
ChangelogEntry = {
|
||
|
|
version | String,
|
||
|
|
date | String,
|
||
|
|
changes_summary | Array String,
|
||
|
|
breaking_changes | Array String,
|
||
|
|
merged_by | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
# ========================================================================
|
||
|
|
# Declaration Contracts
|
||
|
|
# ========================================================================
|
||
|
|
|
||
|
|
Metadata = {
|
||
|
|
name | String,
|
||
|
|
version | String,
|
||
|
|
description | String | optional,
|
||
|
|
author | String | optional,
|
||
|
|
created_at | String | optional,
|
||
|
|
updated_at | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
TechnologyDetection = {
|
||
|
|
name | String,
|
||
|
|
version | String | optional,
|
||
|
|
confidence | Number, # 0.0 to 1.0
|
||
|
|
detected_from | Array String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
TaskservRequirement = {
|
||
|
|
name | String,
|
||
|
|
version | String | optional,
|
||
|
|
profile | String, # "default" | "minimal" | "HA"
|
||
|
|
required | Bool,
|
||
|
|
confidence | Number,
|
||
|
|
reason | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
ServerConfig = {
|
||
|
|
name | String,
|
||
|
|
provider | String,
|
||
|
|
flavor | String | optional,
|
||
|
|
region | String | optional,
|
||
|
|
taskservs | Array String,
|
||
|
|
},
|
||
|
|
|
||
|
|
DeploymentConfig = {
|
||
|
|
mode | String, # "solo" | "multiuser" | "cicd" | "enterprise"
|
||
|
|
servers | Array ServerConfig,
|
||
|
|
ha_enabled | Bool,
|
||
|
|
},
|
||
|
|
|
||
|
|
WorkspaceDeclaration = {
|
||
|
|
metadata | Metadata,
|
||
|
|
detections | Array TechnologyDetection,
|
||
|
|
requirements | Array TaskservRequirement,
|
||
|
|
deployment | DeploymentConfig,
|
||
|
|
custom_config | {_: String} | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
Changelog = {
|
||
|
|
entries | Array ChangelogEntry,
|
||
|
|
},
|
||
|
|
|
||
|
|
Workspace = {
|
||
|
|
declaration | WorkspaceDeclaration,
|
||
|
|
changelog | Changelog,
|
||
|
|
},
|
||
|
|
|
||
|
|
# ========================================================================
|
||
|
|
# Questionnaire Contracts
|
||
|
|
# ========================================================================
|
||
|
|
|
||
|
|
Expression = {
|
||
|
|
expr | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
ValidationRule = {
|
||
|
|
required | Bool,
|
||
|
|
pattern | String | optional,
|
||
|
|
min_value | Number | optional,
|
||
|
|
max_value | Number | optional,
|
||
|
|
choices | Array String | optional,
|
||
|
|
custom_validator | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
Question = {
|
||
|
|
id | String,
|
||
|
|
kind | String, # "text" | "select" | "multiselect" | "confirm" | "number"
|
||
|
|
message | String,
|
||
|
|
help | String | optional,
|
||
|
|
default | String | optional,
|
||
|
|
when | Expression | optional,
|
||
|
|
depends_on | Array String | optional,
|
||
|
|
validation | ValidationRule,
|
||
|
|
ai_suggest | Bool,
|
||
|
|
ai_context | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
DecisionNode = {
|
||
|
|
question_id | String,
|
||
|
|
next_nodes | {_: String} | optional,
|
||
|
|
default_next | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
DecisionTree = {
|
||
|
|
root | String,
|
||
|
|
nodes | {_: DecisionNode},
|
||
|
|
},
|
||
|
|
|
||
|
|
QuestionnaireMetadata = {
|
||
|
|
name | String,
|
||
|
|
version | String,
|
||
|
|
description | String | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
Questionnaire = {
|
||
|
|
metadata | QuestionnaireMetadata,
|
||
|
|
questions | Array Question,
|
||
|
|
decision_tree | DecisionTree,
|
||
|
|
},
|
||
|
|
|
||
|
|
Answer = {
|
||
|
|
question_id | String,
|
||
|
|
value | Dyn, # String | Bool | Number
|
||
|
|
timestamp | String,
|
||
|
|
},
|
||
|
|
|
||
|
|
QuestionnaireResponse = {
|
||
|
|
questionnaire_name | String,
|
||
|
|
questionnaire_version | String,
|
||
|
|
answers | Array Answer,
|
||
|
|
completed | Bool,
|
||
|
|
completion_time | String | optional,
|
||
|
|
},
|
||
|
|
}
|