File size: 3,138 Bytes
a835d2f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Continuous learning configuration for Jekyll & Hyde

paths:
  interactions: data/learning/interactions.jsonl
  curated: data/learning/curated_train.jsonl
  rejected: data/learning/rejected.jsonl
  state: data/learning/state.json

quality:
  min_assistant_chars: 80
  min_quality_score: 0.65
  require_markdown: true
  reject_leak_patterns:
    - "^model$"
    - "<start_of_turn>"
    - "Hyde test probe:"
    - "RESPONSE TEMPLATE"
    - "KEY CONCEPT"
    - "SAMPLE ANSWER"
    - "USER QUERY:"
    - "Policy Analyst Role"

auto:
  curate_after_each_turn: true
  merge_dataset_on_curate: false
  train_when_curated_reaches: 20
  train_min_interval_hours: 6
  train_epochs_incremental: 2
  train_base: gemma2-2b
  auto_train_enabled: true
  adapter_only: true

feedback:
  upvote_boost: 0.35
  downvote_reject: true

diet:
  enabled: true
  semantic_threshold: 0.92
  embedding_model: BAAI/bge-small-en-v1.5
  embedding_index: data/learning/embedding_index.json
  max_total_records: 2000
  category_caps:
    quant: 400
    policy: 500
    duel: 300
    chat: 800
    mcp_tools: 250
  persona_caps:
    jekyll: 800
    hyde: 600
    neutral: 1200

quantize:
  export_gguf_after_train: true
  gguf_quant: q4_k_m
  prune_old_gguf: true

# Gray-zone reinforcement: duel β†’ extract zones β†’ dual synthesis β†’ curated training
gray_reinforce:
  enabled: true
  synthesize_solutions: true
  use_llm_synthesis: true
  auto_curate: true
  min_zones: 1
  max_zones_per_duel: 8

# RLAIF gate β€” verification API score before auto-curation (prevents hallucination loops)
rlaif:
  enabled: true
  min_score: 85

# Distilled gray-zone rule memory (RAG injection + eviction preservation)
memory:
  enabled: true
  inject_on_query: true
  distill_on_evict: true
  max_entries: 500
  retrieve_k: 3
  min_similarity: 0.55
  consolidate_after: 40
  consolidate_similarity: 0.88
  consolidation_enabled: true
  paths:
    rules: data/learning/memory_rules.jsonl

# LoRA MoE β€” dynamic jekyll/hyde adapter blend
lora_moe:
  enabled: true
  quantize_step: 0.05
  bucket_cache: true
  buckets:
    - { jekyll: 0.9, hyde: 0.1 }
    - { jekyll: 0.7, hyde: 0.3 }
    - { jekyll: 0.5, hyde: 0.5 }
    - { jekyll: 0.3, hyde: 0.7 }
    - { jekyll: 0.1, hyde: 0.9 }

# MCP structured tool-calling training bucket (high priority in data diet)
mcp_training:
  enabled: true
  priority_boost: 0.35

# Dynamic decoding β€” MoE blend ratio β†’ temperature / top-p / min-p
decoding:
  dynamic_entropy: true
  link_to_moe: true
  jekyll_temperature: 0.15
  jekyll_top_p: 0.85
  jekyll_min_p: 0.08
  hyde_temperature: 0.35
  hyde_top_p: 0.92
  hyde_min_p: 0.05
  blend_temp_min: 0.2
  blend_temp_max: 0.78
  blend_top_p_min: 0.88
  blend_min_p_min: 0.06

# Grammar-constrained MCP JSON tool output at decode time
grammar:
  mcp_tool_json: true

# DPO preference alignment from curated vs rejected (RLAIF pairs)
dpo:
  enabled: true
  prefer_over_sft: true
  min_pairs: 2
  beta: 0.1
  epochs: 1
  dataset_path: data/learning/dpo_pairs.jsonl