hhh134 commited on
Commit
354db6b
·
verified ·
1 Parent(s): 874a7ca

Upload HCL open-source release

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +3 -0
  2. .gitignore +26 -0
  3. LICENSE +21 -0
  4. README.md +305 -0
  5. configs/README.md +62 -0
  6. configs/coco_stability_125_50_250_local.json +137 -0
  7. configs/deepseek_flash_reasoning_hcl_plasticity_250_50_500.json +142 -0
  8. configs/deepseek_flash_reasoning_hcl_stability_250_50_500.json +142 -0
  9. configs/deepseek_flash_reasoning_raw_zero_shot_500.json +29 -0
  10. configs/deepseek_v4_flash_textual_budget_b0_300_80_80_600.json +142 -0
  11. configs/deepseek_v4_flash_textual_budget_b1_300_80_80_600.json +142 -0
  12. configs/deepseek_v4_flash_textual_budget_b3_300_80_80_600.json +142 -0
  13. configs/deepseek_v4_flash_textual_budget_binf_300_80_80_600.json +142 -0
  14. configs/full_coco_stability_250_50_500_local.json +137 -0
  15. configs/qwen36_27b_coco_gpu1_direct_raw_zero_shot_500.json +27 -0
  16. configs/qwen36_27b_coco_gpu1_hcl_plasticity_250_50_500.json +137 -0
  17. configs/qwen36_27b_coco_gpu1_hcl_stability_250_50_500.json +137 -0
  18. configs/qwen36_27b_coco_gpu1_v0_harness_500.json +99 -0
  19. configs/qwen36_27b_reasoning_hcl_stability_capabilities_250_50_500.json +153 -0
  20. configs/run_stability_hcl_01_4b.json +96 -0
  21. configs/run_stability_hcl_02_4b_opt27b.json +108 -0
  22. configs/run_stability_hcl_03_4b_teacher27b.json +120 -0
  23. configs/taskstream_multimodal_main_250_50_500.json +50 -0
  24. configs/taskstream_multimodal_recovered_500_100_500.json +55 -0
  25. configs/taskstream_textual_budget_300_80_80_600.json +50 -0
  26. configs/taskstream_textual_main_250_50_500.json +50 -0
  27. configs/validation_coco_distill_01_limit1.json +100 -0
  28. configs/validation_coco_distill_02_limit1.json +116 -0
  29. configs/validation_coco_distill_03_limit1.json +132 -0
  30. configs/validation_coco_stability_limit1.json +137 -0
  31. configs/validation_distill_01_limit1.json +96 -0
  32. configs/validation_distill_02_limit1.json +112 -0
  33. configs/validation_distill_03_limit1.json +128 -0
  34. data/README.md +69 -0
  35. docs/assets/capability-aware-results.png +0 -0
  36. docs/assets/controlled-forgetting.png +0 -0
  37. docs/assets/distillation-results.png +0 -0
  38. docs/assets/logo.png +3 -0
  39. docs/assets/method-overview.png +3 -0
  40. docs/assets/teaser.png +3 -0
  41. examples/data/test.jsonl +1 -0
  42. examples/data/train.jsonl +1 -0
  43. examples/task_stream.json +13 -0
  44. experiments/HCL_ALFworld/README.md +25 -0
  45. experiments/HCL_ALFworld/configs/ablations/no_capabilities.yaml +5 -0
  46. experiments/HCL_ALFworld/configs/ablations/no_gate.yaml +5 -0
  47. experiments/HCL_ALFworld/configs/ablations/no_memory.yaml +5 -0
  48. experiments/HCL_ALFworld/configs/ablations/stability_gate.yaml +6 -0
  49. experiments/HCL_ALFworld/configs/ablations/static.yaml +16 -0
  50. experiments/HCL_ALFworld/configs/baselines/alfworld_standard.yaml +13 -0
.gitattributes CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ docs/assets/logo.png filter=lfs diff=lfs merge=lfs -text
37
+ docs/assets/method-overview.png filter=lfs diff=lfs merge=lfs -text
38
+ docs/assets/teaser.png filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ __pycache__/
2
+ .pytest_cache/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .venv/
6
+ venv/
7
+ .env
8
+ .env.*
9
+ build/
10
+ dist/
11
+
12
+ # Local credentials and machine-specific configuration
13
+ **/conf/config.json
14
+
15
+ # Runtime artifacts
16
+ storage/
17
+ outputs/
18
+ reports/
19
+ logs/
20
+ *.log
21
+ llm_calls.txt
22
+ llm_calls.jsonl
23
+ checkpoint*.json
24
+ prediction_cache/
25
+ node_modules/
26
+ .DS_Store
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2026 HCL Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README.md ADDED
@@ -0,0 +1,305 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h1 align="center">
2
+ <img src="docs/assets/logo.png" alt="HCL logo" height="48" align="absmiddle">
3
+ Harness Continual Learning
4
+ </h1>
5
+
6
+ <p align="center"><strong>Continual Adaptation Beyond Model Parameters</strong></p>
7
+
8
+ Official implementation of **Harness Continual Learning (HCL)**, a framework that enables frozen foundation-model agents to continually adapt their memory, routing, task interfaces, reusable capabilities, and optimization policies.
9
+
10
+ <p align="center">
11
+ <img src="docs/assets/teaser.png" alt="Overview of Harness Continual Learning" width="900">
12
+ </p>
13
+
14
+ ## Abstract
15
+
16
+ Continual learning has largely focused on model parameters, yet modern agents can also adapt through a harness of prompts, memories, tools, skills, and routing rules. We introduce **Harness Continual Learning (HCL)**, a paradigm in which this harness evolves around a frozen foundation model, and define the resulting loss of previously acquired behavior as **harness-level forgetting**. HCL comprises four execution-facing components: the Task Interface, Experience Memory, Capability Map, and Adaptive Router. To balance adaptation and retention, **guarded harness evolution** separates update generation from state commitment: a Continual Optimizer proposes candidate harnesses from execution feedback, while a Continual Evaluator commits an update only after checking current improvement, historical retention, and validity. Across open-world capability accumulation, textual reasoning, and multimodal perception, HCL supports capability growth and failure recovery, exceeds corresponding baselines by more than 10% in multiple settings, and provides a controllable stability–plasticity trade-off.
17
+
18
+ ## Key contributions
19
+
20
+ We evaluate HCL across textual reasoning, multimodal perception, and open-world interaction, and further study retention control, harness-level distillation, and component contributions. Our main contributions are:
21
+
22
+ - **Harness Continual Learning:** We propose and formalize HCL as a new continual learning paradigm, shifting the object of continual learning from model state to the harness state surrounding a frozen foundation model.
23
+ - **Guarded harness evolution:** We identify harness-level forgetting and make current improvement, historical retention, and validity explicit conditions for committing a harness update.
24
+ - **Capability accumulation and controlled retention:** Across reasoning, multimodal, and interactive task streams, we show that harness evolution supports capability accumulation. Component ablations and retention sweeps reveal the contributions of individual harness components, measurable forgetting, and controllable stability–plasticity trade-offs, with exploratory evidence of knowledge transfer.
25
+
26
+ <p align="center">
27
+ <img src="docs/assets/method-overview.png" alt="HCL method overview" width="900">
28
+ </p>
29
+
30
+ ## Repository layout
31
+
32
+ ```text
33
+ HCL/
34
+ ├── hcl/ # Core HCL implementation
35
+ │ ├── capability/ # Reusable skills, tools, and capability services
36
+ │ ├── memory/ # Raw, abstract, and anchor memories
37
+ │ ├── optimizer/ # Candidate harness-update generation
38
+ │ ├── router/ # Workflow and artifact selection prompts
39
+ │ └── task_interface/ # Shared task structuring interface
40
+ ├── configs/ # Paper experiment and task-stream profiles
41
+ ├── data/ # Expected external dataset layout
42
+ ├── examples/ # Minimal synthetic task-stream fixtures
43
+ ├── tests/ # Offline unit and regression tests
44
+ ├── scripts/ # Utility and integration scripts
45
+ ├── experiments/
46
+ │ ├── HCL_ALFworld/ # ALFWorld integration
47
+ │ └── Odyssey/ # Minecraft/Odyssey integration
48
+ ├── docs/assets/ # README figures
49
+ ├── main.py # Main experiment entry point
50
+ ├── run.sh # Reference launch script
51
+ ├── requirements.txt
52
+ └── pyproject.toml
53
+ ```
54
+
55
+ The core implementation is exposed at the repository root, following the same entry-point-oriented layout as DFA-MoE. ALFWorld and Odyssey retain isolated environments because their simulator dependencies are incompatible with parts of the core stack.
56
+
57
+ ## Installation
58
+
59
+ ### Core environment
60
+
61
+ Python 3.10 or later is required.
62
+
63
+ ```bash
64
+ git clone https://github.com/RL-MIND/Harness-Continual-Learning.git
65
+ cd HCL
66
+ python3 -m venv .venv
67
+ source .venv/bin/activate
68
+ python -m pip install --upgrade pip
69
+ python -m pip install -r requirements.txt
70
+ ```
71
+
72
+ Install optional dependencies only when needed:
73
+
74
+ ```bash
75
+ # Local Transformers models
76
+ python -m pip install -e '.[local-model]'
77
+
78
+ # COCO metrics and development tests
79
+ python -m pip install -e '.[coco-eval,test]'
80
+ ```
81
+
82
+ Verify the installation without model or dataset downloads:
83
+
84
+ ```bash
85
+ python -m unittest discover -s tests -v
86
+ ```
87
+
88
+ ## Supported task streams
89
+
90
+ | Modality | Task stream | Tasks |
91
+ | --- | --- | --- |
92
+ | Textual reasoning | `configs/taskstream_textual_main_250_50_500.json` | MuSiQue, ProofWriter, GSM8K, HotpotQA |
93
+ | Multimodal | `configs/taskstream_multimodal_main_250_50_500.json` | COCO detection, COCO captioning, RefCOCO grounding, VQAv2 |
94
+ | Embodied | `experiments/HCL_ALFworld/` | ALFWorld domain-incremental sequences |
95
+ | Open world | `experiments/Odyssey/` | Minecraft/Odyssey curriculum tasks |
96
+
97
+ Datasets and model checkpoints are not redistributed. Prepare them under `data/` according to [the data layout](data/README.md), or update the project-relative paths in the selected task-stream file.
98
+
99
+ ## Quick start
100
+
101
+ ### Run a textual HCL experiment
102
+
103
+ The following profile runs Stability-HCL with a Qwen3-4B main model:
104
+
105
+ ```bash
106
+ python main.py \
107
+ --config configs/run_stability_hcl_01_4b.json \
108
+ --splits train,test
109
+ ```
110
+
111
+ The equivalent installed command is:
112
+
113
+ ```bash
114
+ hcl run \
115
+ --config configs/run_stability_hcl_01_4b.json \
116
+ --splits train,test
117
+ ```
118
+
119
+ Use `--limit-per-task` for a small integration run, and use `--method` to override the method declared by a profile:
120
+
121
+ ```bash
122
+ python main.py \
123
+ --config configs/deepseek_flash_reasoning_hcl_stability_250_50_500.json \
124
+ --splits train,test \
125
+ --limit-per-task 5 \
126
+ --method hcl
127
+ ```
128
+
129
+ `run.sh` is a reference wrapper around the same entry point. Its first argument may be a configuration path; remaining arguments are forwarded to `main.py`.
130
+
131
+ ### Run the baselines
132
+
133
+ Use the checked-in baseline profiles directly:
134
+
135
+ ```bash
136
+ # Zero-shot
137
+ python main.py --config configs/deepseek_flash_reasoning_raw_zero_shot_500.json --splits test
138
+ ```
139
+
140
+ See [the configuration inventory](configs/README.md) for the complete reasoning, multimodal, budget-sweep, and distillation profile list.
141
+
142
+ ## Important configuration options
143
+
144
+ HCL experiments use JSON configurations. The main options are:
145
+
146
+ ```json
147
+ {
148
+ "method": "hcl",
149
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
150
+ "storage_dir": "storage/experiments/example",
151
+ "model": {
152
+ "backend": "chat_completions",
153
+ "name": "model-name",
154
+ "base_url": "http://127.0.0.1:8000",
155
+ "api_key_env": "MODEL_API_KEY"
156
+ },
157
+ "optimizer": {
158
+ "historical_loss_budget": 0
159
+ }
160
+ }
161
+ ```
162
+
163
+ - `model` generates final answers. `judge_model`, `selection_model`, and `memory_model` can assign optimizer, online-selection, and memory operations to different models.
164
+ - `method` selects the HCL update mode. Supported CLI overrides are `hcl` and `hcl_memory`.
165
+ - `optimizer.historical_loss_budget` controls accepted historical degradation; `null` represents $b=\infty$.
166
+ - `storage_dir` contains generated state, metrics, predictions, and checkpoints and must remain under `storage/` when automatic reset is enabled.
167
+ - `task_flow` controls the named train/test phases selected with `--splits`.
168
+
169
+ For hosted OpenAI-compatible endpoints, export the credential named by `api_key_env`; do not place secrets in configuration files:
170
+
171
+ ```bash
172
+ export MODEL_API_KEY="your-key"
173
+ ```
174
+
175
+ ## Experiments
176
+
177
+ ### ALFWorld
178
+
179
+ ```bash
180
+ cd experiments/HCL_ALFworld
181
+ python3 -m venv .venv
182
+ source .venv/bin/activate
183
+ python -m pip install -e '.[llm]'
184
+ hcl-alfworld --help
185
+ ```
186
+
187
+ Use the `local` extra for a local Transformers backend. Profiles are in `configs/`, and domain-incremental sequences are in `sequences/`.
188
+
189
+ ### Odyssey / Minecraft
190
+
191
+ ```bash
192
+ cd experiments/Odyssey/Odyssey
193
+ python3 -m venv .venv
194
+ source .venv/bin/activate
195
+ python -m pip install -e .
196
+ cp conf/config.example.json conf/config.json
197
+ python harness_cli.py --help
198
+ python harness_curriculum_cli.py --help
199
+ ```
200
+
201
+ Odyssey additionally requires its Node/Mineflayer bridge, a reachable Minecraft server, and an OpenAI-compatible model endpoint. Local values can be supplied with `ODYSSEY_*` environment variables; `conf/config.json` is ignored by version control.
202
+
203
+ ## Main results
204
+
205
+ The results below follow the order of the experiments in the main paper. Additional analyses reported only in the appendix are not included here.
206
+
207
+ ### Open-world capability accumulation
208
+
209
+ #### ALFWorld
210
+
211
+ We evaluate six sequential ALFWorld task categories with a frozen Qwen3.5-9B model. Plasticity-HCL achieves the highest final average success rate, while Stability-HCL retains comparable performance with substantially less forgetting.
212
+
213
+ | Method | Pick | Look | Clean | Heat | Cool | Two-object | Final Avg. $\uparrow$ | Avg. Fgt. (%) $\downarrow$ |
214
+ | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
215
+ | Static Harness | 95.80 | 66.70 | 25.80 | 26.10 | 9.50 | 58.80 | 47.12 | — |
216
+ | RAG Baseline | 95.80 | 83.30 | 41.90 | 39.10 | 14.30 | 58.80 | 55.56 | **1.74** |
217
+ | **Stability-HCL (Ours)** | **100.00** | 83.30 | **51.60** | 30.40 | 28.60 | 76.50 | 61.74 | 2.64 |
218
+ | **Plasticity-HCL (Ours)** | **100.00** | 77.80 | 41.90 | 39.10 | 19.00 | **100.00** | **62.98** | 10.94 |
219
+
220
+ #### Minecraft
221
+
222
+ On a 50-task Minecraft curriculum, Plasticity-HCL completes the full sequence in 83 environment actions.
223
+
224
+ ### Controlled-stream continual learning
225
+
226
+ We next evaluate HCL on textual reasoning and multimodal perception streams. Each task contains 250 adaptation examples, 50 validation examples, and 500 disjoint test examples.
227
+
228
+ #### Textual reasoning
229
+
230
+ The stream order is MuSiQue $\rightarrow$ ProofWriter $\rightarrow$ GSM8K $\rightarrow$ HotpotQA, using frozen DeepSeek-V4.1-Flash. Plasticity-HCL obtains the best final average performance of 76.10%.
231
+
232
+ | Method | MuSiQue | ProofWriter | GSM8K | HotpotQA | Final Avg. $\uparrow$ | Avg. Fgt. (%) $\downarrow$ |
233
+ | --- | ---: | ---: | ---: | ---: | ---: | ---: |
234
+ | Zero-shot | 48.00 | 79.20 | 65.20 | 62.20 | 63.65 | — |
235
+ | **Plasticity-HCL (Ours)** | **58.60** | **85.60** | **96.00** | **64.20** | **76.10** | 0.40 |
236
+ | **Stability-HCL (Ours)** | 53.60 | 82.80 | 82.60 | 63.60 | 70.65 | 0.27 |
237
+
238
+ #### Multimodal perception
239
+
240
+ The stream order is COCO detection $\rightarrow$ COCO captioning $\rightarrow$ RefCOCO grounding $\rightarrow$ VQAv2, using frozen Qwen3.6-27B. Stability-HCL achieves the best final mean of 68.92 with only 0.22% average forgetting.
241
+
242
+ | Method | Detection | Caption | Grounding | VQAv2 | Final Mean $\uparrow$ | Avg. Fgt. (%) $\downarrow$ |
243
+ | --- | ---: | ---: | ---: | ---: | ---: | ---: |
244
+ | Zero-shot | 37.52 | 21.10 | 43.00 | **85.47** | 46.77 | — |
245
+ | **Plasticity-HCL (Ours)** | 64.14 | 37.31 | 90.60 | 79.80 | 67.96 | 0.81 |
246
+ | **Stability-HCL (Ours)** | **65.34** | **39.41** | **91.60** | 79.33 | **68.92** | 0.22 |
247
+
248
+ ### Stability–plasticity control
249
+
250
+ We vary the historical-loss budget over $b\in\{0,1,3,\infty\}$ while holding the current-improvement and validity criteria fixed. The strict setting $b=0$ minimizes forgetting, whereas a small tolerance of $b=1$ produces the best final average accuracy. Further relaxation degrades both final accuracy and retention.
251
+
252
+ | Historical-loss budget $b$ | MuSiQue | ProofWriter | GSM8K | HotpotQA | Final Avg. $\uparrow$ | Avg. Fgt. (%) $\downarrow$ |
253
+ | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
254
+ | $0$ | 27.83 | 73.33 | 84.33 | **59.50** | 61.25 | **0.39** |
255
+ | $1$ | 24.83 | 77.50 | **92.33** | 59.17 | **63.46** | 1.22 |
256
+ | $3$ | 26.83 | **79.83** | 83.00 | 58.50 | 62.04 | 2.00 |
257
+ | $\infty$ | **28.33** | 71.00 | 82.00 | 59.17 | 60.13 | 3.45 |
258
+
259
+ ### External-model assistance
260
+
261
+ Base-HCL uses Qwen3-4B throughout. Opt-HCL uses Qwen3.6-27B only to generate candidate harness updates, whereas Online-HCL uses the stronger model for per-example online harness operations. Opt-HCL improves final average accuracy from 35.10% to 45.75% while maintaining latency comparable to Base-HCL; Online-HCL reaches 44.80% but incurs substantially higher online latency.
262
+
263
+ <p align="center">
264
+ <img src="docs/assets/distillation-results.png" alt="Accuracy and latency under different placements of stronger-model assistance" width="900">
265
+ </p>
266
+
267
+ ### Component ablation
268
+
269
+ On the controlled multimodal stream with frozen Qwen3.5-4B, each ablation keeps one component available during execution but freezes its persistent updates. All four components contribute to continual adaptation, with freezing Experience Memory causing the largest reduction in final average performance and the most forgetting.
270
+
271
+ | Variant | Interface | Memory | Capability | Router | Final Avg. $\uparrow$ | Avg. Fgt. (%) $\downarrow$ |
272
+ | --- | :---: | :---: | :---: | :---: | ---: | ---: |
273
+ | Zero-shot | — | — | — | — | 34.84 | — |
274
+ | w/o Interface update | ✗ | ✓ | ✓ | ✓ | 62.37 | 0.11 |
275
+ | w/o Memory update | ✓ | ✗ | ✓ | ✓ | 62.28 | 0.83 |
276
+ | w/o Capability update | ✓ | ✓ | ✗ | ✓ | 63.12 | **0.06** |
277
+ | w/o Router update | ✓ | ✓ | ✓ | ✗ | 62.77 | 0.14 |
278
+ | **Plasticity-HCL** | ✓ | ✓ | ✓ | ✓ | **63.41** | 0.45 |
279
+
280
+ ## Notes
281
+
282
+ - `main.py`, the installed `hcl` command, and `run.sh` are the recommended core entry points.
283
+ - Generated logs, predictions, checkpoints, caches, simulator state, and credentials are intentionally excluded.
284
+ - Some configuration filenames retain original GPU scheduling labels; the configurations themselves use portable paths and do not require that device index.
285
+ - The ALFWorld and Odyssey environments should be installed separately from the core environment.
286
+
287
+ ## Citation
288
+
289
+ If you find this repository useful, please cite the HCL paper:
290
+
291
+ ```bibtex
292
+ @misc{kang2026harnesscontinuallearning,
293
+ title = {Harness Continual Learning: Continual Adaptation Beyond Model Parameters},
294
+ author = {Borui Kang and Jinrui Gu and Junhan Lv and Wenbin Li and Lei Wang and Yang Gao},
295
+ year = {2026},
296
+ eprint = {2608.19013},
297
+ archivePrefix = {arXiv},
298
+ primaryClass = {cs.LG},
299
+ url = {https://arxiv.org/abs/2608.19013}
300
+ }
301
+ ```
302
+
303
+ ## License and acknowledgements
304
+
305
+ The core HCL implementation is released under the [MIT License](LICENSE). The integrations under `experiments/` build on ALFWorld, Odyssey, Mineflayer, and related third-party components; consult their respective licenses before redistribution.
configs/README.md ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Experiment configuration inventory
2
+
3
+ This directory contains the textual-reasoning and multimodal configurations retained for reproducibility. Interactive ALFWorld and Minecraft configurations live under the repository's `experiments/` directory. No metrics, predictions, logs, checkpoints, figures, or other prior-run outputs are included.
4
+
5
+ ## Path convention
6
+
7
+ - `configs/taskstream_textual_main_250_50_500.json`: included portable manifest for MuSiQue, ProofWriter, GSM8K, and HotpotQA.
8
+ - `configs/taskstream_multimodal_main_250_50_500.json`: included portable manifest for COCO detection, COCO captioning, RefCOCO grounding, and VQAv2.
9
+ - `data/datasets/`: externally supplied dataset splits.
10
+ - `storage/experiments/<configuration-name>/`: generated logs, caches, checkpoints, manifests, and predictions. `storage/` is ignored by Git.
11
+
12
+ Relative paths are resolved from the repository root by the CLI configuration loader.
13
+
14
+ ## HCL reasoning experiments
15
+
16
+ - `deepseek_flash_reasoning_hcl_plasticity_250_50_500.json`
17
+ - `deepseek_flash_reasoning_hcl_stability_250_50_500.json`
18
+ - `qwen36_27b_reasoning_hcl_stability_capabilities_250_50_500.json`
19
+
20
+ ## Independent textual historical-loss-budget sweep
21
+
22
+ - `deepseek_v4_flash_textual_budget_b0_300_80_80_600.json`
23
+ - `deepseek_v4_flash_textual_budget_b1_300_80_80_600.json`
24
+ - `deepseek_v4_flash_textual_budget_b3_300_80_80_600.json`
25
+ - `deepseek_v4_flash_textual_budget_binf_300_80_80_600.json`
26
+ - `taskstream_textual_budget_300_80_80_600.json`
27
+
28
+ These four runnable profiles use frozen DeepSeek-V4-Flash, the paper's 300 adaptation / 80 validation / 80 historical-anchor / 600 test allocation, and ten 30-example update batches per task stage. The profiles are identical in experimental settings except for `optimizer.historical_loss_budget`, which is 0, 1, 3, or `null` ($B_n=\infty$). The optimizer generates three alternatives inside each update opportunity, matching the recovered experiment configuration; that internal multiplicity is distinct from the paper's count of ten proposal opportunities per task stage.
29
+
30
+ ## Distillation comparison experiments
31
+
32
+ - `run_stability_hcl_01_4b.json` (`Base-HCL`): Qwen3-4B performs final answering, online structuring and selection, optimizer candidate generation, and memory operations.
33
+ - `run_stability_hcl_02_4b_opt27b.json` (`Opt-HCL`): Qwen3.6-27B generates optimizer candidates; Qwen3-4B retains all online and memory roles.
34
+ - `run_stability_hcl_03_4b_teacher27b.json` (`Online-HCL`): Qwen3.6-27B performs online task structuring, workflow and artifact selection, and memory operations; Qwen3-4B retains final answering and optimizer candidate generation.
35
+ - `taskstream_textual_main_250_50_500.json`: the portable MuSiQue, ProofWriter, GSM8K, and HotpotQA task stream shared by all three runs.
36
+
37
+ The three profiles share the same Stability-HCL gate, three optimizable components, candidate budget, task stream, data allocation, memory limits, and update schedule. With a batch size of 300 and 250 adaptation examples per task, each task stage has one optimizer update opportunity. The `selection_model` and `memory_model` fields make the Online-HCL role split explicit; when absent, both roles fall back to the main model.
38
+
39
+ The local checkpoints are expected at `models/Qwen3-4B/` and `models/Qwen3.6-27B/`. These directories are not included. Paths can be changed to checkpoints supplied by the evaluation environment without changing the experimental method or hyperparameters.
40
+
41
+ ## Reasoning baselines
42
+
43
+ - `deepseek_flash_reasoning_raw_zero_shot_500.json`
44
+
45
+ ## Multimodal experiments and baselines
46
+
47
+ - `qwen36_27b_coco_gpu1_direct_raw_zero_shot_500.json`
48
+ - `qwen36_27b_coco_gpu1_v0_harness_500.json`
49
+ - `qwen36_27b_coco_gpu1_hcl_plasticity_250_50_500.json`
50
+ - `qwen36_27b_coco_gpu1_hcl_stability_250_50_500.json`
51
+
52
+ ## Task-stream configurations
53
+
54
+ - `taskstream_textual_main_250_50_500.json`
55
+ - `taskstream_multimodal_main_250_50_500.json`
56
+ - `taskstream_textual_budget_300_80_80_600.json`
57
+
58
+ Configuration filenames containing a GPU number preserve the original experiment-to-device scheduling label. They contain no hostname, username, institution, filesystem location, or hardware identifier unique to the authors, and do not require that same device number when reproduced.
59
+
60
+ The previous component-ablation matrix is intentionally not included as a paper configuration: it used Qwen3.6-27B and disabled runtime components, whereas the paper specifies Qwen3.5-4B and freezes only persistent updates while keeping each component available. A search of the additional experiment server found no Qwen3.5-4B four-way persistent-update-freeze configuration, so this remains unresolved rather than being approximated.
61
+
62
+ The stronger-model comparison is the Stability-HCL series above. Earlier `run_paper_*` profiles represented a separate four-run study and are intentionally excluded to avoid conflating that study with the paper's Base/Opt/Online comparison.
configs/coco_stability_125_50_250_local.json ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "Qwen3.6-27B COCO HCL stability 125-50-250 local validation",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
6
+ "paper_model_name": "Qwen3.6-27B",
7
+ "base_url": "http://127.0.0.1:8017",
8
+ "api_key": "EMPTY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 1024,
11
+ "temperature": 0.0,
12
+ "cleanup_output": true,
13
+ "enable_image_input": true,
14
+ "chat_template_kwargs": {
15
+ "enable_thinking": false
16
+ },
17
+ "json_object_for_structured_phases": true,
18
+ "system_prompt": "You are a concise multimodal reasoning assistant. Inspect the supplied image directly, follow the requested output schema exactly, and output only the final answer.",
19
+ "timeout_seconds": 600,
20
+ "max_retries": 20,
21
+ "log_path": "storage/experiments/coco_stability_125_50_250_local/llm_calls.txt",
22
+ "log_prompt_chars": 8000
23
+ },
24
+ "execution": {
25
+ "read_only_workers": 2,
26
+ "run_train_final": true
27
+ },
28
+ "task_interface": {
29
+ "mode": "auto",
30
+ "max_new_tokens": 640,
31
+ "invalid_output_retries": 1,
32
+ "retry_max_new_tokens": 1024,
33
+ "fallback_to_rules_on_invalid": true
34
+ },
35
+ "router": {
36
+ "route_name": "qwen36_27b_coco_gpu3_hcl_stability",
37
+ "strip_output": true,
38
+ "use_llm_workflow_selector": true,
39
+ "use_memory_selector": true,
40
+ "memory_always_on": true,
41
+ "use_skill_selector": true,
42
+ "use_tool_selector": false,
43
+ "tool_auto_select": false,
44
+ "use_chat_tool_calls": false,
45
+ "memory_selector_max_new_tokens": 256,
46
+ "memory_selector_invalid_output_retries": 1,
47
+ "memory_selector_retry_max_new_tokens": 256,
48
+ "skill_selector_max_new_tokens": 256,
49
+ "skill_selector_invalid_output_retries": 1,
50
+ "skill_selector_retry_max_new_tokens": 256,
51
+ "skill_selector_fallback_to_empty_on_invalid": true,
52
+ "capability_enabled": false,
53
+ "capability_execution_mode": "disabled"
54
+ },
55
+ "optimizer": {
56
+ "candidate_count": 3,
57
+ "selection_objective": "plasticity",
58
+ "commit_policy": "plasticity_first",
59
+ "historical_loss_budget": 0,
60
+ "max_forget_count": 0,
61
+ "min_primary_score_delta": 1e-09,
62
+ "min_correct_gain": 0,
63
+ "min_format_compliance_rate": 1.0,
64
+ "recover_reward": 1.0,
65
+ "forget_penalty": 1.5,
66
+ "min_anchor_score": -5.0,
67
+ "min_anchor_net_score": -0.1,
68
+ "max_anchor_forget_rate": 0.2,
69
+ "components": [
70
+ "task_interface_structuring",
71
+ "router_workflow",
72
+ "memory_selector",
73
+ "router_context"
74
+ ]
75
+ },
76
+ "memory": {
77
+ "enabled": true,
78
+ "raw_capacity_per_task": 10,
79
+ "abstract_capacity_per_task": 2,
80
+ "anchor_capacity_per_task": 25,
81
+ "retrieval_top_k": 2,
82
+ "reset_on_start": false,
83
+ "abstract_mode": "llm",
84
+ "abstract_max_new_tokens": 512,
85
+ "anchor_selection_mode": "llm",
86
+ "anchor_count_per_batch": 2,
87
+ "anchor_candidate_limit": 10,
88
+ "anchor_selection_max_new_tokens": 128,
89
+ "skill_enabled": true,
90
+ "skill_mode": "llm",
91
+ "abstract_prompt_max_chars": 12000
92
+ },
93
+ "forgetting_probe": {
94
+ "enabled": true,
95
+ "interval_batches": 2,
96
+ "samples_per_task": 100,
97
+ "target_correct_ratio": 0.8,
98
+ "seed": 20260726,
99
+ "split": "test",
100
+ "historical_tasks_only": true,
101
+ "reuse_probe_set": true,
102
+ "record_predictions": false
103
+ },
104
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
105
+ "reset_run_on_start": false,
106
+ "storage_dir": "storage/experiments/coco_stability_125_50_250_local",
107
+ "prediction_cache": {
108
+ "enabled": true,
109
+ "path": "storage/experiments/coco_stability_125_50_250_local/prediction_cache/read_only_predictions.jsonl"
110
+ },
111
+ "checkpoint": {
112
+ "enabled": true,
113
+ "path": "storage/experiments/coco_stability_125_50_250_local/checkpoint.json",
114
+ "resume": true
115
+ },
116
+ "task_flow": [
117
+ {
118
+ "name": "train",
119
+ "phase": "train",
120
+ "train_split": "train",
121
+ "val_split": "validation",
122
+ "test_split": "test",
123
+ "continual": true,
124
+ "batchsize": 25,
125
+ "train_limit_per_task": 125,
126
+ "validation_limit_per_task": 50,
127
+ "test_limit_per_task": 250
128
+ },
129
+ {
130
+ "name": "test",
131
+ "phase": "test",
132
+ "test_split": "test",
133
+ "test_limit_per_task": 250,
134
+ "group_by_task": true
135
+ }
136
+ ]
137
+ }
configs/deepseek_flash_reasoning_hcl_plasticity_250_50_500.json ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "DeepSeek-V4.1-Flash reasoning HCL plasticity 250-50-500",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "deepseek-flash",
6
+ "paper_model_name": "DeepSeek-V4.1-Flash",
7
+ "base_url": "https://api.deepseek.com",
8
+ "api_key_env": "DEEPSEEK_API_KEY",
9
+ "max_new_tokens": 1024,
10
+ "answer_max_new_tokens": 512,
11
+ "temperature": 0.0,
12
+ "thinking": {
13
+ "type": "disabled"
14
+ },
15
+ "cleanup_output": true,
16
+ "json_object_for_structured_phases": false,
17
+ "system_prompt": "You are a concise reasoning assistant. Follow the requested output schema and return only the final answer.",
18
+ "timeout_seconds": 600,
19
+ "max_retries": 10,
20
+ "log_path": "storage/experiments/deepseek_flash_reasoning_hcl_plasticity_250_50_500/llm_calls.txt",
21
+ "log_prompt_chars": 12000
22
+ },
23
+ "execution": {
24
+ "read_only_workers": 1,
25
+ "run_train_final": true
26
+ },
27
+ "task_interface": {
28
+ "mode": "llm",
29
+ "max_new_tokens": 768,
30
+ "invalid_output_retries": 1,
31
+ "retry_max_new_tokens": 768,
32
+ "fallback_to_rules_on_invalid": true,
33
+ "long_context_rule_threshold_chars": 8192
34
+ },
35
+ "router": {
36
+ "route_name": "deepseek_flash_reasoning_hcl_plasticity",
37
+ "strip_output": true,
38
+ "use_llm_workflow_selector": true,
39
+ "use_memory_selector": true,
40
+ "memory_always_on": false,
41
+ "use_skill_selector": true,
42
+ "use_tool_selector": false,
43
+ "tool_auto_select": false,
44
+ "use_chat_tool_calls": false,
45
+ "tool_max_rounds": 0,
46
+ "workflow_selector_max_new_tokens": 512,
47
+ "memory_selector_max_new_tokens": 256,
48
+ "memory_selector_invalid_output_retries": 1,
49
+ "memory_selector_retry_max_new_tokens": 256,
50
+ "skill_selector_max_new_tokens": 256,
51
+ "skill_selector_invalid_output_retries": 1,
52
+ "skill_selector_retry_max_new_tokens": 256,
53
+ "skill_selector_fallback_to_empty_on_invalid": true,
54
+ "capability_enabled": false,
55
+ "capability_execution_mode": "disabled",
56
+ "capability_service_url": null,
57
+ "semantic_search_enabled": false,
58
+ "cross_modal_match_enabled": false
59
+ },
60
+ "optimizer": {
61
+ "candidate_count": 3,
62
+ "selection_objective": "plasticity",
63
+ "commit_policy": "plasticity_first",
64
+ "historical_loss_budget": null,
65
+ "min_primary_score_delta": 1e-09,
66
+ "min_correct_gain": 0,
67
+ "max_forget_count": 0,
68
+ "min_format_compliance_rate": 1.0,
69
+ "recover_reward": 1.0,
70
+ "forget_penalty": 1.5,
71
+ "min_anchor_score": -5.0,
72
+ "min_anchor_net_score": -0.1,
73
+ "max_anchor_forget_rate": 0.2,
74
+ "components": [
75
+ "task_interface_structuring",
76
+ "router_workflow",
77
+ "memory_selector",
78
+ "router_context"
79
+ ]
80
+ },
81
+ "memory": {
82
+ "enabled": true,
83
+ "raw_capacity_per_task": 10,
84
+ "abstract_capacity_per_task": 2,
85
+ "anchor_capacity_per_task": 25,
86
+ "retrieval_top_k": 2,
87
+ "reset_on_start": false,
88
+ "abstract_mode": "llm",
89
+ "abstract_max_new_tokens": 512,
90
+ "anchor_selection_mode": "llm",
91
+ "anchor_count_per_batch": 2,
92
+ "anchor_candidate_limit": 10,
93
+ "anchor_selection_max_new_tokens": 256,
94
+ "skill_enabled": true,
95
+ "skill_mode": "llm",
96
+ "abstract_prompt_max_chars": 12000
97
+ },
98
+ "forgetting_probe": {
99
+ "enabled": true,
100
+ "interval_batches": 2,
101
+ "samples_per_task": 100,
102
+ "target_correct_ratio": 0.8,
103
+ "seed": 20260726,
104
+ "split": "test",
105
+ "historical_tasks_only": true,
106
+ "reuse_probe_set": true,
107
+ "record_predictions": false
108
+ },
109
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
110
+ "reset_run_on_start": false,
111
+ "storage_dir": "storage/experiments/deepseek_flash_reasoning_hcl_plasticity_250_50_500",
112
+ "prediction_cache": {
113
+ "enabled": true,
114
+ "path": "storage/experiments/deepseek_flash_reasoning_hcl_plasticity_250_50_500/prediction_cache/prediction_cache.jsonl"
115
+ },
116
+ "checkpoint": {
117
+ "enabled": true,
118
+ "path": "storage/experiments/deepseek_flash_reasoning_hcl_plasticity_250_50_500/checkpoint.json",
119
+ "resume": true
120
+ },
121
+ "task_flow": [
122
+ {
123
+ "name": "train",
124
+ "phase": "train",
125
+ "train_split": "train",
126
+ "val_split": "validation",
127
+ "test_split": "test",
128
+ "continual": true,
129
+ "batchsize": 25,
130
+ "train_limit_per_task": 250,
131
+ "validation_limit_per_task": 50,
132
+ "test_limit_per_task": 500
133
+ },
134
+ {
135
+ "name": "test",
136
+ "phase": "test",
137
+ "test_split": "test",
138
+ "test_limit_per_task": 500,
139
+ "group_by_task": true
140
+ }
141
+ ]
142
+ }
configs/deepseek_flash_reasoning_hcl_stability_250_50_500.json ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "DeepSeek-V4.1-Flash reasoning HCL stability 250-50-500",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "deepseek-flash",
6
+ "paper_model_name": "DeepSeek-V4.1-Flash",
7
+ "base_url": "https://api.deepseek.com",
8
+ "api_key_env": "DEEPSEEK_API_KEY",
9
+ "max_new_tokens": 1024,
10
+ "answer_max_new_tokens": 512,
11
+ "temperature": 0.0,
12
+ "thinking": {
13
+ "type": "disabled"
14
+ },
15
+ "cleanup_output": true,
16
+ "json_object_for_structured_phases": false,
17
+ "system_prompt": "You are a concise reasoning assistant. Follow the requested output schema and return only the final answer.",
18
+ "timeout_seconds": 600,
19
+ "max_retries": 10,
20
+ "log_path": "storage/experiments/deepseek_flash_reasoning_hcl_stability_250_50_500/llm_calls.txt",
21
+ "log_prompt_chars": 12000
22
+ },
23
+ "execution": {
24
+ "read_only_workers": 1,
25
+ "run_train_final": true
26
+ },
27
+ "task_interface": {
28
+ "mode": "llm",
29
+ "max_new_tokens": 768,
30
+ "invalid_output_retries": 1,
31
+ "retry_max_new_tokens": 768,
32
+ "fallback_to_rules_on_invalid": true,
33
+ "long_context_rule_threshold_chars": 8192
34
+ },
35
+ "router": {
36
+ "route_name": "deepseek_flash_reasoning_hcl_stability",
37
+ "strip_output": true,
38
+ "use_llm_workflow_selector": true,
39
+ "use_memory_selector": true,
40
+ "memory_always_on": false,
41
+ "use_skill_selector": true,
42
+ "use_tool_selector": false,
43
+ "tool_auto_select": false,
44
+ "use_chat_tool_calls": false,
45
+ "tool_max_rounds": 0,
46
+ "workflow_selector_max_new_tokens": 512,
47
+ "memory_selector_max_new_tokens": 256,
48
+ "memory_selector_invalid_output_retries": 1,
49
+ "memory_selector_retry_max_new_tokens": 256,
50
+ "skill_selector_max_new_tokens": 256,
51
+ "skill_selector_invalid_output_retries": 1,
52
+ "skill_selector_retry_max_new_tokens": 256,
53
+ "skill_selector_fallback_to_empty_on_invalid": true,
54
+ "capability_enabled": false,
55
+ "capability_execution_mode": "disabled",
56
+ "capability_service_url": null,
57
+ "semantic_search_enabled": false,
58
+ "cross_modal_match_enabled": false
59
+ },
60
+ "optimizer": {
61
+ "candidate_count": 3,
62
+ "selection_objective": "plasticity",
63
+ "commit_policy": "plasticity_first",
64
+ "historical_loss_budget": 0,
65
+ "min_primary_score_delta": 1e-09,
66
+ "min_correct_gain": 0,
67
+ "max_forget_count": 0,
68
+ "min_format_compliance_rate": 1.0,
69
+ "recover_reward": 1.0,
70
+ "forget_penalty": 1.5,
71
+ "min_anchor_score": -5.0,
72
+ "min_anchor_net_score": -0.1,
73
+ "max_anchor_forget_rate": 0.2,
74
+ "components": [
75
+ "task_interface_structuring",
76
+ "router_workflow",
77
+ "memory_selector",
78
+ "router_context"
79
+ ]
80
+ },
81
+ "memory": {
82
+ "enabled": true,
83
+ "raw_capacity_per_task": 10,
84
+ "abstract_capacity_per_task": 2,
85
+ "anchor_capacity_per_task": 25,
86
+ "retrieval_top_k": 2,
87
+ "reset_on_start": false,
88
+ "abstract_mode": "llm",
89
+ "abstract_max_new_tokens": 512,
90
+ "anchor_selection_mode": "llm",
91
+ "anchor_count_per_batch": 2,
92
+ "anchor_candidate_limit": 10,
93
+ "anchor_selection_max_new_tokens": 256,
94
+ "skill_enabled": true,
95
+ "skill_mode": "llm",
96
+ "abstract_prompt_max_chars": 12000
97
+ },
98
+ "forgetting_probe": {
99
+ "enabled": true,
100
+ "interval_batches": 2,
101
+ "samples_per_task": 100,
102
+ "target_correct_ratio": 0.8,
103
+ "seed": 20260726,
104
+ "split": "test",
105
+ "historical_tasks_only": true,
106
+ "reuse_probe_set": true,
107
+ "record_predictions": false
108
+ },
109
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
110
+ "reset_run_on_start": false,
111
+ "storage_dir": "storage/experiments/deepseek_flash_reasoning_hcl_stability_250_50_500",
112
+ "prediction_cache": {
113
+ "enabled": true,
114
+ "path": "storage/experiments/deepseek_flash_reasoning_hcl_stability_250_50_500/prediction_cache/prediction_cache.jsonl"
115
+ },
116
+ "checkpoint": {
117
+ "enabled": true,
118
+ "path": "storage/experiments/deepseek_flash_reasoning_hcl_stability_250_50_500/checkpoint.json",
119
+ "resume": true
120
+ },
121
+ "task_flow": [
122
+ {
123
+ "name": "train",
124
+ "phase": "train",
125
+ "train_split": "train",
126
+ "val_split": "validation",
127
+ "test_split": "test",
128
+ "continual": true,
129
+ "batchsize": 25,
130
+ "train_limit_per_task": 250,
131
+ "validation_limit_per_task": 50,
132
+ "test_limit_per_task": 500
133
+ },
134
+ {
135
+ "name": "test",
136
+ "phase": "test",
137
+ "test_split": "test",
138
+ "test_limit_per_task": 500,
139
+ "group_by_task": true
140
+ }
141
+ ]
142
+ }
configs/deepseek_flash_reasoning_raw_zero_shot_500.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "DeepSeek Flash reasoning raw zero-shot 4-task 500-test",
3
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
4
+ "split": "test",
5
+ "limit_per_task": 500,
6
+ "workers": 4,
7
+ "resume": true,
8
+ "output_dir": "storage/experiments/deepseek_flash_reasoning_raw_zero_shot_500",
9
+ "model": {
10
+ "backend": "chat_completions",
11
+ "name": "deepseek-flash",
12
+ "paper_model_name": "DeepSeek-V4.1-Flash",
13
+ "base_url": "https://api.deepseek.com",
14
+ "api_key_env": "DEEPSEEK_API_KEY",
15
+ "max_new_tokens": 2048,
16
+ "answer_max_new_tokens": 512,
17
+ "temperature": 0.0,
18
+ "thinking": {
19
+ "type": "disabled"
20
+ },
21
+ "cleanup_output": true,
22
+ "enable_image_input": false,
23
+ "system_prompt": "You are a concise reasoning assistant. Follow the requested output format and return only the final answer.",
24
+ "timeout_seconds": 600,
25
+ "max_retries": 10,
26
+ "log_path": "storage/experiments/deepseek_flash_reasoning_raw_zero_shot_500/llm_calls.txt",
27
+ "log_prompt_chars": 12000
28
+ }
29
+ }
configs/deepseek_v4_flash_textual_budget_b0_300_80_80_600.json ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "DeepSeek-V4-Flash textual budget sweep b=0 300-80-80-600",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "deepseek-v4-flash",
6
+ "paper_model_name": "DeepSeek-V4-Flash",
7
+ "base_url": "https://api.deepseek.com",
8
+ "api_key_env": "DEEPSEEK_API_KEY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 512,
11
+ "temperature": 0.0,
12
+ "thinking": {"type": "disabled"},
13
+ "reasoning_effort": null,
14
+ "system_prompt": "You are a concise reasoning assistant. Reason internally and return only the final answer in the requested format.",
15
+ "timeout_seconds": 300,
16
+ "max_retries": 3,
17
+ "cleanup_output": true
18
+ },
19
+ "execution": {
20
+ "read_only_workers": 8,
21
+ "run_train_final": false
22
+ },
23
+ "task_interface": {
24
+ "mode": "llm",
25
+ "max_new_tokens": 2048,
26
+ "invalid_output_retries": 2,
27
+ "retry_max_new_tokens": 2048,
28
+ "fallback_to_rules_on_invalid": true,
29
+ "long_context_rule_threshold_chars": 5000,
30
+ "visible_context_max_chars": 12000,
31
+ "visible_context_max_items": 8
32
+ },
33
+ "router": {
34
+ "route_name": "direct",
35
+ "strip_output": true,
36
+ "use_llm_workflow_selector": true,
37
+ "use_memory_selector": true,
38
+ "memory_always_on": true,
39
+ "use_skill_selector": true,
40
+ "use_tool_selector": true,
41
+ "tool_auto_select": true,
42
+ "use_chat_tool_calls": false,
43
+ "tool_max_rounds": 2,
44
+ "tool_strict_schema": false,
45
+ "tool_js_timeout_seconds": 8.0,
46
+ "skill_selector_max_new_tokens": 512,
47
+ "skill_selector_invalid_output_retries": 2,
48
+ "skill_selector_retry_max_new_tokens": 512,
49
+ "skill_selector_fallback_to_empty_on_invalid": true,
50
+ "tool_selector_max_new_tokens": 512,
51
+ "tool_selector_invalid_output_retries": 2,
52
+ "tool_selector_retry_max_new_tokens": 512,
53
+ "tool_selector_fallback_to_empty_on_invalid": true,
54
+ "memory_selector_max_new_tokens": 512,
55
+ "memory_selector_invalid_output_retries": 2,
56
+ "memory_selector_retry_max_new_tokens": 512,
57
+ "memory_selector_fallback_to_empty_on_invalid": true
58
+ },
59
+ "optimizer": {
60
+ "candidate_count": 3,
61
+ "selection_objective": "plasticity",
62
+ "commit_policy": "paper_historical_loss_budget",
63
+ "historical_loss_budget": 0,
64
+ "min_primary_score_delta": 1e-09,
65
+ "min_correct_gain": 2,
66
+ "min_format_compliance_rate": 0.9,
67
+ "selection_mode": "argmax",
68
+ "min_historical_anchor_count": 80,
69
+ "min_historical_anchors_per_task": 80,
70
+ "require_all_historical_tasks": true,
71
+ "min_anchor_evaluation_coverage": 1.0,
72
+ "components": [
73
+ "task_interface_structuring",
74
+ "router_workflow",
75
+ "memory_selector",
76
+ "router_context"
77
+ ]
78
+ },
79
+ "memory": {
80
+ "enabled": true,
81
+ "raw_capacity_per_task": 15,
82
+ "abstract_capacity_per_task": 2,
83
+ "abstract_mode": "llm",
84
+ "abstract_max_new_tokens": 512,
85
+ "anchor_capacity_per_task": 80,
86
+ "anchor_selection_mode": "llm",
87
+ "anchor_count_per_batch": 8,
88
+ "anchor_candidate_limit": 80,
89
+ "anchor_selection_max_new_tokens": 256,
90
+ "retrieval_top_k": 2,
91
+ "retrieval_candidate_limit": 12,
92
+ "reset_on_start": true,
93
+ "skill_enabled": true,
94
+ "skill_mode": "llm",
95
+ "skill_max_count": 6,
96
+ "skill_min_source_tasks": 2
97
+ },
98
+ "forgetting_probe": {
99
+ "enabled": true,
100
+ "interval_batches": 2,
101
+ "samples_per_task": 80,
102
+ "target_correct_ratio": 0.8,
103
+ "seed": 20260713,
104
+ "split": "test",
105
+ "historical_tasks_only": true,
106
+ "reuse_probe_set": true,
107
+ "record_predictions": false
108
+ },
109
+ "task_stream_path": "configs/taskstream_textual_budget_300_80_80_600.json",
110
+ "reset_run_on_start": true,
111
+ "storage_dir": "storage/textual_budget_sweep/b0",
112
+ "checkpoint": {
113
+ "enabled": true,
114
+ "path": "storage/textual_budget_sweep/b0/checkpoint.json",
115
+ "resume": true
116
+ },
117
+ "prediction_cache": {
118
+ "enabled": true,
119
+ "path": "storage/textual_budget_sweep/b0/prediction_cache/read_only_predictions.jsonl"
120
+ },
121
+ "task_flow": [
122
+ {
123
+ "name": "train",
124
+ "phase": "train",
125
+ "train_split": "train",
126
+ "val_split": "validation",
127
+ "test_split": "test",
128
+ "continual": true,
129
+ "batchsize": 30,
130
+ "train_limit_per_task": 300,
131
+ "validation_limit_per_task": 80,
132
+ "test_limit_per_task": 600
133
+ },
134
+ {
135
+ "name": "test",
136
+ "phase": "test",
137
+ "test_split": "test",
138
+ "test_limit_per_task": 600,
139
+ "group_by_task": true
140
+ }
141
+ ]
142
+ }
configs/deepseek_v4_flash_textual_budget_b1_300_80_80_600.json ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "DeepSeek-V4-Flash textual budget sweep b=1 300-80-80-600",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "deepseek-v4-flash",
6
+ "paper_model_name": "DeepSeek-V4-Flash",
7
+ "base_url": "https://api.deepseek.com",
8
+ "api_key_env": "DEEPSEEK_API_KEY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 512,
11
+ "temperature": 0.0,
12
+ "thinking": {"type": "disabled"},
13
+ "reasoning_effort": null,
14
+ "system_prompt": "You are a concise reasoning assistant. Reason internally and return only the final answer in the requested format.",
15
+ "timeout_seconds": 300,
16
+ "max_retries": 3,
17
+ "cleanup_output": true
18
+ },
19
+ "execution": {
20
+ "read_only_workers": 8,
21
+ "run_train_final": false
22
+ },
23
+ "task_interface": {
24
+ "mode": "llm",
25
+ "max_new_tokens": 2048,
26
+ "invalid_output_retries": 2,
27
+ "retry_max_new_tokens": 2048,
28
+ "fallback_to_rules_on_invalid": true,
29
+ "long_context_rule_threshold_chars": 5000,
30
+ "visible_context_max_chars": 12000,
31
+ "visible_context_max_items": 8
32
+ },
33
+ "router": {
34
+ "route_name": "direct",
35
+ "strip_output": true,
36
+ "use_llm_workflow_selector": true,
37
+ "use_memory_selector": true,
38
+ "memory_always_on": true,
39
+ "use_skill_selector": true,
40
+ "use_tool_selector": true,
41
+ "tool_auto_select": true,
42
+ "use_chat_tool_calls": false,
43
+ "tool_max_rounds": 2,
44
+ "tool_strict_schema": false,
45
+ "tool_js_timeout_seconds": 8.0,
46
+ "skill_selector_max_new_tokens": 512,
47
+ "skill_selector_invalid_output_retries": 2,
48
+ "skill_selector_retry_max_new_tokens": 512,
49
+ "skill_selector_fallback_to_empty_on_invalid": true,
50
+ "tool_selector_max_new_tokens": 512,
51
+ "tool_selector_invalid_output_retries": 2,
52
+ "tool_selector_retry_max_new_tokens": 512,
53
+ "tool_selector_fallback_to_empty_on_invalid": true,
54
+ "memory_selector_max_new_tokens": 512,
55
+ "memory_selector_invalid_output_retries": 2,
56
+ "memory_selector_retry_max_new_tokens": 512,
57
+ "memory_selector_fallback_to_empty_on_invalid": true
58
+ },
59
+ "optimizer": {
60
+ "candidate_count": 3,
61
+ "selection_objective": "plasticity",
62
+ "commit_policy": "paper_historical_loss_budget",
63
+ "historical_loss_budget": 1,
64
+ "min_primary_score_delta": 1e-09,
65
+ "min_correct_gain": 2,
66
+ "min_format_compliance_rate": 0.9,
67
+ "selection_mode": "argmax",
68
+ "min_historical_anchor_count": 80,
69
+ "min_historical_anchors_per_task": 80,
70
+ "require_all_historical_tasks": true,
71
+ "min_anchor_evaluation_coverage": 1.0,
72
+ "components": [
73
+ "task_interface_structuring",
74
+ "router_workflow",
75
+ "memory_selector",
76
+ "router_context"
77
+ ]
78
+ },
79
+ "memory": {
80
+ "enabled": true,
81
+ "raw_capacity_per_task": 15,
82
+ "abstract_capacity_per_task": 2,
83
+ "abstract_mode": "llm",
84
+ "abstract_max_new_tokens": 512,
85
+ "anchor_capacity_per_task": 80,
86
+ "anchor_selection_mode": "llm",
87
+ "anchor_count_per_batch": 8,
88
+ "anchor_candidate_limit": 80,
89
+ "anchor_selection_max_new_tokens": 256,
90
+ "retrieval_top_k": 2,
91
+ "retrieval_candidate_limit": 12,
92
+ "reset_on_start": true,
93
+ "skill_enabled": true,
94
+ "skill_mode": "llm",
95
+ "skill_max_count": 6,
96
+ "skill_min_source_tasks": 2
97
+ },
98
+ "forgetting_probe": {
99
+ "enabled": true,
100
+ "interval_batches": 2,
101
+ "samples_per_task": 80,
102
+ "target_correct_ratio": 0.8,
103
+ "seed": 20260713,
104
+ "split": "test",
105
+ "historical_tasks_only": true,
106
+ "reuse_probe_set": true,
107
+ "record_predictions": false
108
+ },
109
+ "task_stream_path": "configs/taskstream_textual_budget_300_80_80_600.json",
110
+ "reset_run_on_start": true,
111
+ "storage_dir": "storage/textual_budget_sweep/b1",
112
+ "checkpoint": {
113
+ "enabled": true,
114
+ "path": "storage/textual_budget_sweep/b1/checkpoint.json",
115
+ "resume": true
116
+ },
117
+ "prediction_cache": {
118
+ "enabled": true,
119
+ "path": "storage/textual_budget_sweep/b1/prediction_cache/read_only_predictions.jsonl"
120
+ },
121
+ "task_flow": [
122
+ {
123
+ "name": "train",
124
+ "phase": "train",
125
+ "train_split": "train",
126
+ "val_split": "validation",
127
+ "test_split": "test",
128
+ "continual": true,
129
+ "batchsize": 30,
130
+ "train_limit_per_task": 300,
131
+ "validation_limit_per_task": 80,
132
+ "test_limit_per_task": 600
133
+ },
134
+ {
135
+ "name": "test",
136
+ "phase": "test",
137
+ "test_split": "test",
138
+ "test_limit_per_task": 600,
139
+ "group_by_task": true
140
+ }
141
+ ]
142
+ }
configs/deepseek_v4_flash_textual_budget_b3_300_80_80_600.json ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "DeepSeek-V4-Flash textual budget sweep b=3 300-80-80-600",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "deepseek-v4-flash",
6
+ "paper_model_name": "DeepSeek-V4-Flash",
7
+ "base_url": "https://api.deepseek.com",
8
+ "api_key_env": "DEEPSEEK_API_KEY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 512,
11
+ "temperature": 0.0,
12
+ "thinking": {"type": "disabled"},
13
+ "reasoning_effort": null,
14
+ "system_prompt": "You are a concise reasoning assistant. Reason internally and return only the final answer in the requested format.",
15
+ "timeout_seconds": 300,
16
+ "max_retries": 3,
17
+ "cleanup_output": true
18
+ },
19
+ "execution": {
20
+ "read_only_workers": 8,
21
+ "run_train_final": false
22
+ },
23
+ "task_interface": {
24
+ "mode": "llm",
25
+ "max_new_tokens": 2048,
26
+ "invalid_output_retries": 2,
27
+ "retry_max_new_tokens": 2048,
28
+ "fallback_to_rules_on_invalid": true,
29
+ "long_context_rule_threshold_chars": 5000,
30
+ "visible_context_max_chars": 12000,
31
+ "visible_context_max_items": 8
32
+ },
33
+ "router": {
34
+ "route_name": "direct",
35
+ "strip_output": true,
36
+ "use_llm_workflow_selector": true,
37
+ "use_memory_selector": true,
38
+ "memory_always_on": true,
39
+ "use_skill_selector": true,
40
+ "use_tool_selector": true,
41
+ "tool_auto_select": true,
42
+ "use_chat_tool_calls": false,
43
+ "tool_max_rounds": 2,
44
+ "tool_strict_schema": false,
45
+ "tool_js_timeout_seconds": 8.0,
46
+ "skill_selector_max_new_tokens": 512,
47
+ "skill_selector_invalid_output_retries": 2,
48
+ "skill_selector_retry_max_new_tokens": 512,
49
+ "skill_selector_fallback_to_empty_on_invalid": true,
50
+ "tool_selector_max_new_tokens": 512,
51
+ "tool_selector_invalid_output_retries": 2,
52
+ "tool_selector_retry_max_new_tokens": 512,
53
+ "tool_selector_fallback_to_empty_on_invalid": true,
54
+ "memory_selector_max_new_tokens": 512,
55
+ "memory_selector_invalid_output_retries": 2,
56
+ "memory_selector_retry_max_new_tokens": 512,
57
+ "memory_selector_fallback_to_empty_on_invalid": true
58
+ },
59
+ "optimizer": {
60
+ "candidate_count": 3,
61
+ "selection_objective": "plasticity",
62
+ "commit_policy": "paper_historical_loss_budget",
63
+ "historical_loss_budget": 3,
64
+ "min_primary_score_delta": 1e-09,
65
+ "min_correct_gain": 2,
66
+ "min_format_compliance_rate": 0.9,
67
+ "selection_mode": "argmax",
68
+ "min_historical_anchor_count": 80,
69
+ "min_historical_anchors_per_task": 80,
70
+ "require_all_historical_tasks": true,
71
+ "min_anchor_evaluation_coverage": 1.0,
72
+ "components": [
73
+ "task_interface_structuring",
74
+ "router_workflow",
75
+ "memory_selector",
76
+ "router_context"
77
+ ]
78
+ },
79
+ "memory": {
80
+ "enabled": true,
81
+ "raw_capacity_per_task": 15,
82
+ "abstract_capacity_per_task": 2,
83
+ "abstract_mode": "llm",
84
+ "abstract_max_new_tokens": 512,
85
+ "anchor_capacity_per_task": 80,
86
+ "anchor_selection_mode": "llm",
87
+ "anchor_count_per_batch": 8,
88
+ "anchor_candidate_limit": 80,
89
+ "anchor_selection_max_new_tokens": 256,
90
+ "retrieval_top_k": 2,
91
+ "retrieval_candidate_limit": 12,
92
+ "reset_on_start": true,
93
+ "skill_enabled": true,
94
+ "skill_mode": "llm",
95
+ "skill_max_count": 6,
96
+ "skill_min_source_tasks": 2
97
+ },
98
+ "forgetting_probe": {
99
+ "enabled": true,
100
+ "interval_batches": 2,
101
+ "samples_per_task": 80,
102
+ "target_correct_ratio": 0.8,
103
+ "seed": 20260713,
104
+ "split": "test",
105
+ "historical_tasks_only": true,
106
+ "reuse_probe_set": true,
107
+ "record_predictions": false
108
+ },
109
+ "task_stream_path": "configs/taskstream_textual_budget_300_80_80_600.json",
110
+ "reset_run_on_start": true,
111
+ "storage_dir": "storage/textual_budget_sweep/b3",
112
+ "checkpoint": {
113
+ "enabled": true,
114
+ "path": "storage/textual_budget_sweep/b3/checkpoint.json",
115
+ "resume": true
116
+ },
117
+ "prediction_cache": {
118
+ "enabled": true,
119
+ "path": "storage/textual_budget_sweep/b3/prediction_cache/read_only_predictions.jsonl"
120
+ },
121
+ "task_flow": [
122
+ {
123
+ "name": "train",
124
+ "phase": "train",
125
+ "train_split": "train",
126
+ "val_split": "validation",
127
+ "test_split": "test",
128
+ "continual": true,
129
+ "batchsize": 30,
130
+ "train_limit_per_task": 300,
131
+ "validation_limit_per_task": 80,
132
+ "test_limit_per_task": 600
133
+ },
134
+ {
135
+ "name": "test",
136
+ "phase": "test",
137
+ "test_split": "test",
138
+ "test_limit_per_task": 600,
139
+ "group_by_task": true
140
+ }
141
+ ]
142
+ }
configs/deepseek_v4_flash_textual_budget_binf_300_80_80_600.json ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "DeepSeek-V4-Flash textual budget sweep b=inf 300-80-80-600",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "deepseek-v4-flash",
6
+ "paper_model_name": "DeepSeek-V4-Flash",
7
+ "base_url": "https://api.deepseek.com",
8
+ "api_key_env": "DEEPSEEK_API_KEY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 512,
11
+ "temperature": 0.0,
12
+ "thinking": {"type": "disabled"},
13
+ "reasoning_effort": null,
14
+ "system_prompt": "You are a concise reasoning assistant. Reason internally and return only the final answer in the requested format.",
15
+ "timeout_seconds": 300,
16
+ "max_retries": 3,
17
+ "cleanup_output": true
18
+ },
19
+ "execution": {
20
+ "read_only_workers": 8,
21
+ "run_train_final": false
22
+ },
23
+ "task_interface": {
24
+ "mode": "llm",
25
+ "max_new_tokens": 2048,
26
+ "invalid_output_retries": 2,
27
+ "retry_max_new_tokens": 2048,
28
+ "fallback_to_rules_on_invalid": true,
29
+ "long_context_rule_threshold_chars": 5000,
30
+ "visible_context_max_chars": 12000,
31
+ "visible_context_max_items": 8
32
+ },
33
+ "router": {
34
+ "route_name": "direct",
35
+ "strip_output": true,
36
+ "use_llm_workflow_selector": true,
37
+ "use_memory_selector": true,
38
+ "memory_always_on": true,
39
+ "use_skill_selector": true,
40
+ "use_tool_selector": true,
41
+ "tool_auto_select": true,
42
+ "use_chat_tool_calls": false,
43
+ "tool_max_rounds": 2,
44
+ "tool_strict_schema": false,
45
+ "tool_js_timeout_seconds": 8.0,
46
+ "skill_selector_max_new_tokens": 512,
47
+ "skill_selector_invalid_output_retries": 2,
48
+ "skill_selector_retry_max_new_tokens": 512,
49
+ "skill_selector_fallback_to_empty_on_invalid": true,
50
+ "tool_selector_max_new_tokens": 512,
51
+ "tool_selector_invalid_output_retries": 2,
52
+ "tool_selector_retry_max_new_tokens": 512,
53
+ "tool_selector_fallback_to_empty_on_invalid": true,
54
+ "memory_selector_max_new_tokens": 512,
55
+ "memory_selector_invalid_output_retries": 2,
56
+ "memory_selector_retry_max_new_tokens": 512,
57
+ "memory_selector_fallback_to_empty_on_invalid": true
58
+ },
59
+ "optimizer": {
60
+ "candidate_count": 3,
61
+ "selection_objective": "plasticity",
62
+ "commit_policy": "paper_historical_loss_budget",
63
+ "historical_loss_budget": null,
64
+ "min_primary_score_delta": 1e-09,
65
+ "min_correct_gain": 2,
66
+ "min_format_compliance_rate": 0.9,
67
+ "selection_mode": "argmax",
68
+ "min_historical_anchor_count": 80,
69
+ "min_historical_anchors_per_task": 80,
70
+ "require_all_historical_tasks": true,
71
+ "min_anchor_evaluation_coverage": 1.0,
72
+ "components": [
73
+ "task_interface_structuring",
74
+ "router_workflow",
75
+ "memory_selector",
76
+ "router_context"
77
+ ]
78
+ },
79
+ "memory": {
80
+ "enabled": true,
81
+ "raw_capacity_per_task": 15,
82
+ "abstract_capacity_per_task": 2,
83
+ "abstract_mode": "llm",
84
+ "abstract_max_new_tokens": 512,
85
+ "anchor_capacity_per_task": 80,
86
+ "anchor_selection_mode": "llm",
87
+ "anchor_count_per_batch": 8,
88
+ "anchor_candidate_limit": 80,
89
+ "anchor_selection_max_new_tokens": 256,
90
+ "retrieval_top_k": 2,
91
+ "retrieval_candidate_limit": 12,
92
+ "reset_on_start": true,
93
+ "skill_enabled": true,
94
+ "skill_mode": "llm",
95
+ "skill_max_count": 6,
96
+ "skill_min_source_tasks": 2
97
+ },
98
+ "forgetting_probe": {
99
+ "enabled": true,
100
+ "interval_batches": 2,
101
+ "samples_per_task": 80,
102
+ "target_correct_ratio": 0.8,
103
+ "seed": 20260713,
104
+ "split": "test",
105
+ "historical_tasks_only": true,
106
+ "reuse_probe_set": true,
107
+ "record_predictions": false
108
+ },
109
+ "task_stream_path": "configs/taskstream_textual_budget_300_80_80_600.json",
110
+ "reset_run_on_start": true,
111
+ "storage_dir": "storage/textual_budget_sweep/binf",
112
+ "checkpoint": {
113
+ "enabled": true,
114
+ "path": "storage/textual_budget_sweep/binf/checkpoint.json",
115
+ "resume": true
116
+ },
117
+ "prediction_cache": {
118
+ "enabled": true,
119
+ "path": "storage/textual_budget_sweep/binf/prediction_cache/read_only_predictions.jsonl"
120
+ },
121
+ "task_flow": [
122
+ {
123
+ "name": "train",
124
+ "phase": "train",
125
+ "train_split": "train",
126
+ "val_split": "validation",
127
+ "test_split": "test",
128
+ "continual": true,
129
+ "batchsize": 30,
130
+ "train_limit_per_task": 300,
131
+ "validation_limit_per_task": 80,
132
+ "test_limit_per_task": 600
133
+ },
134
+ {
135
+ "name": "test",
136
+ "phase": "test",
137
+ "test_split": "test",
138
+ "test_limit_per_task": 600,
139
+ "group_by_task": true
140
+ }
141
+ ]
142
+ }
configs/full_coco_stability_250_50_500_local.json ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "Qwen3.6-27B COCO HCL stability full 250-50-500 local validation",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
6
+ "paper_model_name": "Qwen3.6-27B",
7
+ "base_url": "http://127.0.0.1:8017",
8
+ "api_key": "EMPTY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 1024,
11
+ "temperature": 0.0,
12
+ "cleanup_output": true,
13
+ "enable_image_input": true,
14
+ "chat_template_kwargs": {
15
+ "enable_thinking": false
16
+ },
17
+ "json_object_for_structured_phases": true,
18
+ "system_prompt": "You are a concise multimodal reasoning assistant. Inspect the supplied image directly, follow the requested output schema exactly, and output only the final answer.",
19
+ "timeout_seconds": 600,
20
+ "max_retries": 20,
21
+ "log_path": "storage/experiments/full_coco_stability_250_50_500_local/llm_calls.txt",
22
+ "log_prompt_chars": 8000
23
+ },
24
+ "execution": {
25
+ "read_only_workers": 2,
26
+ "run_train_final": true
27
+ },
28
+ "task_interface": {
29
+ "mode": "auto",
30
+ "max_new_tokens": 640,
31
+ "invalid_output_retries": 1,
32
+ "retry_max_new_tokens": 1024,
33
+ "fallback_to_rules_on_invalid": true
34
+ },
35
+ "router": {
36
+ "route_name": "qwen36_27b_coco_gpu3_hcl_stability",
37
+ "strip_output": true,
38
+ "use_llm_workflow_selector": true,
39
+ "use_memory_selector": true,
40
+ "memory_always_on": true,
41
+ "use_skill_selector": true,
42
+ "use_tool_selector": false,
43
+ "tool_auto_select": false,
44
+ "use_chat_tool_calls": false,
45
+ "memory_selector_max_new_tokens": 256,
46
+ "memory_selector_invalid_output_retries": 1,
47
+ "memory_selector_retry_max_new_tokens": 256,
48
+ "skill_selector_max_new_tokens": 256,
49
+ "skill_selector_invalid_output_retries": 1,
50
+ "skill_selector_retry_max_new_tokens": 256,
51
+ "skill_selector_fallback_to_empty_on_invalid": true,
52
+ "capability_enabled": false,
53
+ "capability_execution_mode": "disabled"
54
+ },
55
+ "optimizer": {
56
+ "candidate_count": 3,
57
+ "selection_objective": "plasticity",
58
+ "commit_policy": "plasticity_first",
59
+ "historical_loss_budget": 0,
60
+ "max_forget_count": 0,
61
+ "min_primary_score_delta": 1e-09,
62
+ "min_correct_gain": 0,
63
+ "min_format_compliance_rate": 1.0,
64
+ "recover_reward": 1.0,
65
+ "forget_penalty": 1.5,
66
+ "min_anchor_score": -5.0,
67
+ "min_anchor_net_score": -0.1,
68
+ "max_anchor_forget_rate": 0.2,
69
+ "components": [
70
+ "task_interface_structuring",
71
+ "router_workflow",
72
+ "memory_selector",
73
+ "router_context"
74
+ ]
75
+ },
76
+ "memory": {
77
+ "enabled": true,
78
+ "raw_capacity_per_task": 10,
79
+ "abstract_capacity_per_task": 2,
80
+ "anchor_capacity_per_task": 25,
81
+ "retrieval_top_k": 2,
82
+ "reset_on_start": false,
83
+ "abstract_mode": "llm",
84
+ "abstract_max_new_tokens": 512,
85
+ "anchor_selection_mode": "llm",
86
+ "anchor_count_per_batch": 2,
87
+ "anchor_candidate_limit": 10,
88
+ "anchor_selection_max_new_tokens": 128,
89
+ "skill_enabled": true,
90
+ "skill_mode": "llm",
91
+ "abstract_prompt_max_chars": 12000
92
+ },
93
+ "forgetting_probe": {
94
+ "enabled": true,
95
+ "interval_batches": 2,
96
+ "samples_per_task": 100,
97
+ "target_correct_ratio": 0.8,
98
+ "seed": 20260726,
99
+ "split": "test",
100
+ "historical_tasks_only": true,
101
+ "reuse_probe_set": true,
102
+ "record_predictions": false
103
+ },
104
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
105
+ "reset_run_on_start": false,
106
+ "storage_dir": "storage/experiments/full_coco_stability_250_50_500_local",
107
+ "prediction_cache": {
108
+ "enabled": true,
109
+ "path": "storage/experiments/full_coco_stability_250_50_500_local/prediction_cache/read_only_predictions.jsonl"
110
+ },
111
+ "checkpoint": {
112
+ "enabled": true,
113
+ "path": "storage/experiments/full_coco_stability_250_50_500_local/checkpoint.json",
114
+ "resume": true
115
+ },
116
+ "task_flow": [
117
+ {
118
+ "name": "train",
119
+ "phase": "train",
120
+ "train_split": "train",
121
+ "val_split": "validation",
122
+ "test_split": "test",
123
+ "continual": true,
124
+ "batchsize": 25,
125
+ "train_limit_per_task": 250,
126
+ "validation_limit_per_task": 50,
127
+ "test_limit_per_task": 500
128
+ },
129
+ {
130
+ "name": "test",
131
+ "phase": "test",
132
+ "test_split": "test",
133
+ "test_limit_per_task": 500,
134
+ "group_by_task": true
135
+ }
136
+ ]
137
+ }
configs/qwen36_27b_coco_gpu1_direct_raw_zero_shot_500.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "Qwen3.6-27B COCO corrected multimodal raw zero-shot 500-test",
3
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
4
+ "split": "test",
5
+ "limit_per_task": 500,
6
+ "resume": true,
7
+ "output_dir": "storage/experiments/qwen36_27b_coco_gpu1_direct_raw_zero_shot_500",
8
+ "model": {
9
+ "backend": "chat_completions",
10
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
11
+ "paper_model_name": "Qwen3.6-27B",
12
+ "base_url": "http://127.0.0.1:8007",
13
+ "api_key": "EMPTY",
14
+ "max_new_tokens": 1024,
15
+ "answer_max_new_tokens": 1024,
16
+ "temperature": 0.0,
17
+ "cleanup_output": true,
18
+ "enable_image_input": true,
19
+ "chat_template_kwargs": {
20
+ "enable_thinking": false
21
+ },
22
+ "system_prompt": "You are a concise multimodal reasoning assistant. Inspect the supplied image directly and output only the final answer in the requested format.",
23
+ "timeout_seconds": 600,
24
+ "max_retries": 20,
25
+ "log_prompt_chars": 8000
26
+ }
27
+ }
configs/qwen36_27b_coco_gpu1_hcl_plasticity_250_50_500.json ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "Qwen3.6-27B COCO HCL plasticity 250-50-500 migrated",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
6
+ "paper_model_name": "Qwen3.6-27B",
7
+ "base_url": "http://127.0.0.1:8007",
8
+ "api_key": "EMPTY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 1024,
11
+ "temperature": 0.0,
12
+ "cleanup_output": true,
13
+ "enable_image_input": true,
14
+ "chat_template_kwargs": {
15
+ "enable_thinking": false
16
+ },
17
+ "json_object_for_structured_phases": true,
18
+ "system_prompt": "You are a concise multimodal reasoning assistant. Inspect the supplied image directly, follow the requested output schema exactly, and output only the final answer.",
19
+ "timeout_seconds": 600,
20
+ "max_retries": 20,
21
+ "log_path": "storage/experiments/qwen36_27b_coco_gpu1_hcl_plasticity_250_50_500/llm_calls.txt",
22
+ "log_prompt_chars": 8000
23
+ },
24
+ "execution": {
25
+ "read_only_workers": 2,
26
+ "run_train_final": true
27
+ },
28
+ "task_interface": {
29
+ "mode": "auto",
30
+ "max_new_tokens": 640,
31
+ "invalid_output_retries": 1,
32
+ "retry_max_new_tokens": 1024,
33
+ "fallback_to_rules_on_invalid": true
34
+ },
35
+ "router": {
36
+ "route_name": "qwen36_27b_coco_gpu3_hcl_plasticity",
37
+ "strip_output": true,
38
+ "use_llm_workflow_selector": true,
39
+ "use_memory_selector": true,
40
+ "memory_always_on": true,
41
+ "use_skill_selector": true,
42
+ "use_tool_selector": false,
43
+ "tool_auto_select": false,
44
+ "use_chat_tool_calls": false,
45
+ "memory_selector_max_new_tokens": 256,
46
+ "memory_selector_invalid_output_retries": 1,
47
+ "memory_selector_retry_max_new_tokens": 256,
48
+ "skill_selector_max_new_tokens": 256,
49
+ "skill_selector_invalid_output_retries": 1,
50
+ "skill_selector_retry_max_new_tokens": 256,
51
+ "skill_selector_fallback_to_empty_on_invalid": true,
52
+ "capability_enabled": false,
53
+ "capability_execution_mode": "disabled"
54
+ },
55
+ "optimizer": {
56
+ "candidate_count": 3,
57
+ "selection_objective": "plasticity",
58
+ "commit_policy": "plasticity_first",
59
+ "historical_loss_budget": null,
60
+ "max_forget_count": 0,
61
+ "min_primary_score_delta": 1e-09,
62
+ "min_correct_gain": 0,
63
+ "min_format_compliance_rate": 1.0,
64
+ "recover_reward": 1.0,
65
+ "forget_penalty": 1.5,
66
+ "min_anchor_score": -5.0,
67
+ "min_anchor_net_score": -0.1,
68
+ "max_anchor_forget_rate": 0.2,
69
+ "components": [
70
+ "task_interface_structuring",
71
+ "router_workflow",
72
+ "memory_selector",
73
+ "router_context"
74
+ ]
75
+ },
76
+ "memory": {
77
+ "enabled": true,
78
+ "raw_capacity_per_task": 10,
79
+ "abstract_capacity_per_task": 2,
80
+ "anchor_capacity_per_task": 25,
81
+ "retrieval_top_k": 2,
82
+ "reset_on_start": false,
83
+ "abstract_mode": "llm",
84
+ "abstract_max_new_tokens": 512,
85
+ "anchor_selection_mode": "llm",
86
+ "anchor_count_per_batch": 2,
87
+ "anchor_candidate_limit": 10,
88
+ "anchor_selection_max_new_tokens": 128,
89
+ "skill_enabled": true,
90
+ "skill_mode": "llm",
91
+ "abstract_prompt_max_chars": 12000
92
+ },
93
+ "forgetting_probe": {
94
+ "enabled": true,
95
+ "interval_batches": 2,
96
+ "samples_per_task": 100,
97
+ "target_correct_ratio": 0.8,
98
+ "seed": 20260726,
99
+ "split": "test",
100
+ "historical_tasks_only": true,
101
+ "reuse_probe_set": true,
102
+ "record_predictions": false
103
+ },
104
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
105
+ "reset_run_on_start": false,
106
+ "storage_dir": "storage/experiments/qwen36_27b_coco_gpu1_hcl_plasticity_250_50_500",
107
+ "prediction_cache": {
108
+ "enabled": true,
109
+ "path": "storage/experiments/qwen36_27b_coco_gpu1_hcl_plasticity_250_50_500/prediction_cache/read_only_predictions.jsonl"
110
+ },
111
+ "checkpoint": {
112
+ "enabled": true,
113
+ "path": "storage/experiments/qwen36_27b_coco_gpu1_hcl_plasticity_250_50_500/checkpoint.json",
114
+ "resume": true
115
+ },
116
+ "task_flow": [
117
+ {
118
+ "name": "train",
119
+ "phase": "train",
120
+ "train_split": "train",
121
+ "val_split": "validation",
122
+ "test_split": "test",
123
+ "continual": true,
124
+ "batchsize": 25,
125
+ "train_limit_per_task": 250,
126
+ "validation_limit_per_task": 50,
127
+ "test_limit_per_task": 500
128
+ },
129
+ {
130
+ "name": "test",
131
+ "phase": "test",
132
+ "test_split": "test",
133
+ "test_limit_per_task": 500,
134
+ "group_by_task": true
135
+ }
136
+ ]
137
+ }
configs/qwen36_27b_coco_gpu1_hcl_stability_250_50_500.json ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "Qwen3.6-27B COCO HCL stability 250-50-500 migrated",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
6
+ "paper_model_name": "Qwen3.6-27B",
7
+ "base_url": "http://127.0.0.1:8007",
8
+ "api_key": "EMPTY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 1024,
11
+ "temperature": 0.0,
12
+ "cleanup_output": true,
13
+ "enable_image_input": true,
14
+ "chat_template_kwargs": {
15
+ "enable_thinking": false
16
+ },
17
+ "json_object_for_structured_phases": true,
18
+ "system_prompt": "You are a concise multimodal reasoning assistant. Inspect the supplied image directly, follow the requested output schema exactly, and output only the final answer.",
19
+ "timeout_seconds": 600,
20
+ "max_retries": 20,
21
+ "log_path": "storage/experiments/qwen36_27b_coco_gpu1_hcl_stability_250_50_500/llm_calls.txt",
22
+ "log_prompt_chars": 8000
23
+ },
24
+ "execution": {
25
+ "read_only_workers": 2,
26
+ "run_train_final": true
27
+ },
28
+ "task_interface": {
29
+ "mode": "auto",
30
+ "max_new_tokens": 640,
31
+ "invalid_output_retries": 1,
32
+ "retry_max_new_tokens": 1024,
33
+ "fallback_to_rules_on_invalid": true
34
+ },
35
+ "router": {
36
+ "route_name": "qwen36_27b_coco_gpu3_hcl_stability",
37
+ "strip_output": true,
38
+ "use_llm_workflow_selector": true,
39
+ "use_memory_selector": true,
40
+ "memory_always_on": true,
41
+ "use_skill_selector": true,
42
+ "use_tool_selector": false,
43
+ "tool_auto_select": false,
44
+ "use_chat_tool_calls": false,
45
+ "memory_selector_max_new_tokens": 256,
46
+ "memory_selector_invalid_output_retries": 1,
47
+ "memory_selector_retry_max_new_tokens": 256,
48
+ "skill_selector_max_new_tokens": 256,
49
+ "skill_selector_invalid_output_retries": 1,
50
+ "skill_selector_retry_max_new_tokens": 256,
51
+ "skill_selector_fallback_to_empty_on_invalid": true,
52
+ "capability_enabled": false,
53
+ "capability_execution_mode": "disabled"
54
+ },
55
+ "optimizer": {
56
+ "candidate_count": 3,
57
+ "selection_objective": "plasticity",
58
+ "commit_policy": "plasticity_first",
59
+ "historical_loss_budget": 0,
60
+ "max_forget_count": 0,
61
+ "min_primary_score_delta": 1e-09,
62
+ "min_correct_gain": 0,
63
+ "min_format_compliance_rate": 1.0,
64
+ "recover_reward": 1.0,
65
+ "forget_penalty": 1.5,
66
+ "min_anchor_score": -5.0,
67
+ "min_anchor_net_score": -0.1,
68
+ "max_anchor_forget_rate": 0.2,
69
+ "components": [
70
+ "task_interface_structuring",
71
+ "router_workflow",
72
+ "memory_selector",
73
+ "router_context"
74
+ ]
75
+ },
76
+ "memory": {
77
+ "enabled": true,
78
+ "raw_capacity_per_task": 10,
79
+ "abstract_capacity_per_task": 2,
80
+ "anchor_capacity_per_task": 25,
81
+ "retrieval_top_k": 2,
82
+ "reset_on_start": false,
83
+ "abstract_mode": "llm",
84
+ "abstract_max_new_tokens": 512,
85
+ "anchor_selection_mode": "llm",
86
+ "anchor_count_per_batch": 2,
87
+ "anchor_candidate_limit": 10,
88
+ "anchor_selection_max_new_tokens": 128,
89
+ "skill_enabled": true,
90
+ "skill_mode": "llm",
91
+ "abstract_prompt_max_chars": 12000
92
+ },
93
+ "forgetting_probe": {
94
+ "enabled": true,
95
+ "interval_batches": 2,
96
+ "samples_per_task": 100,
97
+ "target_correct_ratio": 0.8,
98
+ "seed": 20260726,
99
+ "split": "test",
100
+ "historical_tasks_only": true,
101
+ "reuse_probe_set": true,
102
+ "record_predictions": false
103
+ },
104
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
105
+ "reset_run_on_start": false,
106
+ "storage_dir": "storage/experiments/qwen36_27b_coco_gpu1_hcl_stability_250_50_500",
107
+ "prediction_cache": {
108
+ "enabled": true,
109
+ "path": "storage/experiments/qwen36_27b_coco_gpu1_hcl_stability_250_50_500/prediction_cache/read_only_predictions.jsonl"
110
+ },
111
+ "checkpoint": {
112
+ "enabled": true,
113
+ "path": "storage/experiments/qwen36_27b_coco_gpu1_hcl_stability_250_50_500/checkpoint.json",
114
+ "resume": true
115
+ },
116
+ "task_flow": [
117
+ {
118
+ "name": "train",
119
+ "phase": "train",
120
+ "train_split": "train",
121
+ "val_split": "validation",
122
+ "test_split": "test",
123
+ "continual": true,
124
+ "batchsize": 25,
125
+ "train_limit_per_task": 250,
126
+ "validation_limit_per_task": 50,
127
+ "test_limit_per_task": 500
128
+ },
129
+ {
130
+ "name": "test",
131
+ "phase": "test",
132
+ "test_split": "test",
133
+ "test_limit_per_task": 500,
134
+ "group_by_task": true
135
+ }
136
+ ]
137
+ }
configs/qwen36_27b_coco_gpu1_v0_harness_500.json ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "Qwen3.6-27B COCO fixed v0 harness 500-test migrated",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
6
+ "paper_model_name": "Qwen3.6-27B",
7
+ "base_url": "http://127.0.0.1:8007",
8
+ "api_key": "EMPTY",
9
+ "max_new_tokens": 1024,
10
+ "answer_max_new_tokens": 1024,
11
+ "temperature": 0.0,
12
+ "cleanup_output": true,
13
+ "enable_image_input": true,
14
+ "chat_template_kwargs": {
15
+ "enable_thinking": false
16
+ },
17
+ "json_object_for_structured_phases": true,
18
+ "system_prompt": "You are a concise multimodal reasoning assistant. Inspect the supplied image directly, follow the requested output schema exactly, and output only the final answer.",
19
+ "timeout_seconds": 600,
20
+ "max_retries": 20,
21
+ "log_path": "storage/experiments/qwen36_27b_coco_gpu1_v0_harness_500/llm_calls.txt",
22
+ "log_prompt_chars": 8000
23
+ },
24
+ "execution": {
25
+ "read_only_workers": 2,
26
+ "run_train_final": false
27
+ },
28
+ "task_interface": {
29
+ "mode": "auto",
30
+ "max_new_tokens": 640,
31
+ "invalid_output_retries": 1,
32
+ "retry_max_new_tokens": 1024,
33
+ "fallback_to_rules_on_invalid": true
34
+ },
35
+ "router": {
36
+ "route_name": "qwen36_27b_coco_gpu3_v0_harness",
37
+ "strip_output": true,
38
+ "use_llm_workflow_selector": true,
39
+ "use_memory_selector": true,
40
+ "memory_always_on": true,
41
+ "use_skill_selector": true,
42
+ "use_tool_selector": false,
43
+ "tool_auto_select": false,
44
+ "use_chat_tool_calls": false,
45
+ "memory_selector_max_new_tokens": 256,
46
+ "memory_selector_invalid_output_retries": 1,
47
+ "memory_selector_retry_max_new_tokens": 256,
48
+ "skill_selector_max_new_tokens": 256,
49
+ "skill_selector_invalid_output_retries": 1,
50
+ "skill_selector_retry_max_new_tokens": 256,
51
+ "skill_selector_fallback_to_empty_on_invalid": true,
52
+ "capability_enabled": false,
53
+ "capability_execution_mode": "disabled"
54
+ },
55
+ "optimizer": {
56
+ "candidate_count": 0,
57
+ "components": []
58
+ },
59
+ "memory": {
60
+ "enabled": true,
61
+ "raw_capacity_per_task": 10,
62
+ "abstract_capacity_per_task": 2,
63
+ "anchor_capacity_per_task": 25,
64
+ "retrieval_top_k": 2,
65
+ "reset_on_start": true,
66
+ "abstract_mode": "llm",
67
+ "abstract_max_new_tokens": 512,
68
+ "anchor_selection_mode": "llm",
69
+ "anchor_count_per_batch": 2,
70
+ "anchor_candidate_limit": 10,
71
+ "anchor_selection_max_new_tokens": 128,
72
+ "skill_enabled": true,
73
+ "skill_mode": "llm"
74
+ },
75
+ "forgetting_probe": {
76
+ "enabled": false
77
+ },
78
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
79
+ "reset_run_on_start": false,
80
+ "storage_dir": "storage/experiments/qwen36_27b_coco_gpu1_v0_harness_500",
81
+ "prediction_cache": {
82
+ "enabled": true,
83
+ "path": "storage/experiments/qwen36_27b_coco_gpu1_v0_harness_500/prediction_cache/read_only_predictions.jsonl"
84
+ },
85
+ "checkpoint": {
86
+ "enabled": true,
87
+ "path": "storage/experiments/qwen36_27b_coco_gpu1_v0_harness_500/checkpoint.json",
88
+ "resume": true
89
+ },
90
+ "task_flow": [
91
+ {
92
+ "name": "test",
93
+ "phase": "test",
94
+ "test_split": "test",
95
+ "test_limit_per_task": 500,
96
+ "group_by_task": true
97
+ }
98
+ ]
99
+ }
configs/qwen36_27b_reasoning_hcl_stability_capabilities_250_50_500.json ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "Qwen3.6-27B Stability-HCL with router-selected external capabilities reasoning 250-50-500",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "qwen3.6-27b-capabilities-gpu0",
6
+ "paper_model_name": "Qwen3.6-27B",
7
+ "base_url": "http://127.0.0.1:8006",
8
+ "api_key": "EMPTY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 1024,
11
+ "temperature": 0.0,
12
+ "thinking": null,
13
+ "reasoning_effort": null,
14
+ "system_prompt": "You are a concise reasoning assistant. Reason internally, use relevant tool evidence when available, follow the requested output schema exactly, and return only the final answer.",
15
+ "timeout_seconds": 600,
16
+ "max_retries": 20,
17
+ "cleanup_output": true,
18
+ "log_path": "storage/experiments/qwen36_27b_reasoning_hcl_stability_capabilities_250_50_500/llm_calls.txt",
19
+ "log_prompt_chars": 8000
20
+ },
21
+ "execution": {
22
+ "read_only_workers": 1,
23
+ "run_train_final": true
24
+ },
25
+ "task_interface": {
26
+ "mode": "llm",
27
+ "max_new_tokens": 1024,
28
+ "invalid_output_retries": 1,
29
+ "retry_max_new_tokens": 1024,
30
+ "fallback_to_rules_on_invalid": true,
31
+ "long_context_rule_threshold_chars": 8192
32
+ },
33
+ "router": {
34
+ "route_name": "qwen36_27b_reasoning_hcl_stability_capabilities_router_fixed",
35
+ "strip_output": true,
36
+ "use_llm_workflow_selector": true,
37
+ "use_memory_selector": true,
38
+ "memory_always_on": false,
39
+ "use_skill_selector": true,
40
+ "use_tool_selector": true,
41
+ "tool_auto_select": true,
42
+ "use_chat_tool_calls": false,
43
+ "tool_max_rounds": 0,
44
+ "tool_strict_schema": false,
45
+ "tool_js_timeout_seconds": 8.0,
46
+ "tool_selector_max_new_tokens": 512,
47
+ "tool_selector_invalid_output_retries": 1,
48
+ "tool_selector_retry_max_new_tokens": 512,
49
+ "tool_selector_fallback_to_empty_on_invalid": true,
50
+ "skill_selector_max_new_tokens": 512,
51
+ "skill_selector_invalid_output_retries": 1,
52
+ "skill_selector_retry_max_new_tokens": 512,
53
+ "skill_selector_fallback_to_empty_on_invalid": true,
54
+ "memory_selector_max_new_tokens": 512,
55
+ "memory_selector_invalid_output_retries": 1,
56
+ "memory_selector_retry_max_new_tokens": 512,
57
+ "capability_enabled": true,
58
+ "capability_execution_mode": "router_managed",
59
+ "capability_service_url": "http://127.0.0.1:8091",
60
+ "capability_timeout_seconds": 30,
61
+ "capability_allowed_corpora": [
62
+ "reasoning_train_corpus"
63
+ ],
64
+ "capability_default_corpus_id": "reasoning_train_corpus",
65
+ "capability_default_top_k": 5,
66
+ "capability_continue_on_error": true,
67
+ "capability_force_semantic_search": false,
68
+ "semantic_search_enabled": true,
69
+ "cross_modal_match_enabled": true
70
+ },
71
+ "optimizer": {
72
+ "candidate_count": 3,
73
+ "selection_objective": "stability",
74
+ "commit_policy": "strict_no_forgetting",
75
+ "min_accuracy_delta": 0.0,
76
+ "min_correct_gain": 0,
77
+ "max_forget_count": 0,
78
+ "min_format_compliance_rate": 0.85,
79
+ "recover_reward": 1.0,
80
+ "forget_penalty": 2.0,
81
+ "min_anchor_score": 0.0,
82
+ "min_anchor_net_score": 0.0,
83
+ "max_anchor_forget_rate": 0.0,
84
+ "components": [
85
+ "task_interface_structuring",
86
+ "router_workflow",
87
+ "memory_selector",
88
+ "tool_selector",
89
+ "router_context"
90
+ ]
91
+ },
92
+ "memory": {
93
+ "enabled": true,
94
+ "raw_capacity_per_task": 10,
95
+ "abstract_capacity_per_task": 2,
96
+ "anchor_capacity_per_task": 25,
97
+ "retrieval_top_k": 2,
98
+ "reset_on_start": false,
99
+ "abstract_mode": "llm",
100
+ "abstract_max_new_tokens": 512,
101
+ "anchor_selection_mode": "llm",
102
+ "anchor_count_per_batch": 2,
103
+ "anchor_candidate_limit": 10,
104
+ "anchor_selection_max_new_tokens": 256,
105
+ "skill_enabled": true,
106
+ "skill_mode": "llm",
107
+ "abstract_prompt_max_chars": 12000
108
+ },
109
+ "forgetting_probe": {
110
+ "enabled": true,
111
+ "interval_batches": 2,
112
+ "samples_per_task": 100,
113
+ "target_correct_ratio": 0.8,
114
+ "seed": 20260726,
115
+ "split": "test",
116
+ "historical_tasks_only": true,
117
+ "reuse_probe_set": true,
118
+ "record_predictions": false
119
+ },
120
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
121
+ "reset_run_on_start": false,
122
+ "storage_dir": "storage/experiments/qwen36_27b_reasoning_hcl_stability_capabilities_250_50_500",
123
+ "prediction_cache": {
124
+ "enabled": true,
125
+ "path": "storage/experiments/qwen36_27b_reasoning_hcl_stability_capabilities_250_50_500/prediction_cache/read_only_predictions.jsonl"
126
+ },
127
+ "checkpoint": {
128
+ "enabled": true,
129
+ "path": "storage/experiments/qwen36_27b_reasoning_hcl_stability_capabilities_250_50_500/checkpoint.json",
130
+ "resume": true
131
+ },
132
+ "task_flow": [
133
+ {
134
+ "name": "train",
135
+ "phase": "train",
136
+ "train_split": "train",
137
+ "val_split": "validation",
138
+ "test_split": "test",
139
+ "continual": true,
140
+ "batchsize": 25,
141
+ "train_limit_per_task": 250,
142
+ "validation_limit_per_task": 50,
143
+ "test_limit_per_task": 500
144
+ },
145
+ {
146
+ "name": "test",
147
+ "phase": "test",
148
+ "test_split": "test",
149
+ "test_limit_per_task": 500,
150
+ "group_by_task": true
151
+ }
152
+ ]
153
+ }
configs/run_stability_hcl_01_4b.json ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "hcl_stability_01_4b",
3
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
4
+ "storage_dir": "storage/experiments/stability_hcl_01_4b",
5
+ "reset_run_on_start": true,
6
+ "batchsize": 300,
7
+ "model": {
8
+ "backend": "local_transformers",
9
+ "name": "Qwen3-4B",
10
+ "path": "models/Qwen3-4B",
11
+ "device_map": "cuda:0",
12
+ "torch_dtype": "bfloat16",
13
+ "max_new_tokens": 2048,
14
+ "answer_max_new_tokens": 200,
15
+ "temperature": 0.0,
16
+ "enable_thinking": false,
17
+ "log_path": "storage/experiments/stability_hcl_01_4b/llm_calls.txt"
18
+ },
19
+ "task_interface": {
20
+ "mode": "auto",
21
+ "long_context_rule_threshold_chars": 24000,
22
+ "visible_context_max_chars": 24000,
23
+ "visible_context_max_items": 12
24
+ },
25
+ "router": {
26
+ "use_llm_workflow_selector": true,
27
+ "use_memory_selector": true,
28
+ "use_skill_selector": true,
29
+ "use_tool_selector": true,
30
+ "capability_enabled": false,
31
+ "memory_selector_fallback_to_empty_on_invalid": true,
32
+ "skill_selector_fallback_to_empty_on_invalid": true,
33
+ "tool_selector_fallback_to_empty_on_invalid": true,
34
+ "memory_selector_invalid_output_retries": 2,
35
+ "skill_selector_invalid_output_retries": 2,
36
+ "tool_selector_invalid_output_retries": 2
37
+ },
38
+ "optimizer": {
39
+ "candidate_count": 3,
40
+ "components": [
41
+ "task_interface_structuring",
42
+ "router_workflow",
43
+ "router_context"
44
+ ],
45
+ "selection_objective": "stability",
46
+ "min_accuracy_delta": 0.0,
47
+ "min_correct_gain": 1,
48
+ "max_forget_count": 0,
49
+ "min_format_compliance_rate": 0.0,
50
+ "min_historical_anchor_count": 1,
51
+ "min_historical_anchors_per_task": 1
52
+ },
53
+ "memory": {
54
+ "enabled": true,
55
+ "reset_on_start": true,
56
+ "abstract_mode": "llm",
57
+ "anchor_selection_mode": "llm",
58
+ "anchor_count_per_batch": 5,
59
+ "anchor_capacity_per_task": 15,
60
+ "skill_mode": "llm"
61
+ },
62
+ "prediction_cache": {
63
+ "enabled": true
64
+ },
65
+ "checkpoint": {
66
+ "enabled": true,
67
+ "resume": true
68
+ },
69
+ "execution": {
70
+ "read_only_workers": 1,
71
+ "run_train_final": false
72
+ },
73
+ "forgetting_probe": {
74
+ "enabled": false
75
+ },
76
+ "task_flow": [
77
+ {
78
+ "name": "train",
79
+ "phase": "train",
80
+ "train_split": "train",
81
+ "val_split": "validation",
82
+ "test_split": "test",
83
+ "continual": true,
84
+ "batchsize": 300,
85
+ "train_limit_per_task": 250,
86
+ "validation_limit_per_task": 50,
87
+ "test_limit_per_task": 500
88
+ },
89
+ {
90
+ "name": "test",
91
+ "phase": "test",
92
+ "test_split": "test",
93
+ "test_limit_per_task": 500
94
+ }
95
+ ]
96
+ }
configs/run_stability_hcl_02_4b_opt27b.json ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "hcl_stability_02_4b_opt27b",
3
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
4
+ "storage_dir": "storage/experiments/stability_hcl_02_4b_opt27b",
5
+ "reset_run_on_start": true,
6
+ "batchsize": 300,
7
+ "model": {
8
+ "backend": "local_transformers",
9
+ "name": "Qwen3-4B",
10
+ "path": "models/Qwen3-4B",
11
+ "device_map": "cuda:0",
12
+ "torch_dtype": "bfloat16",
13
+ "max_new_tokens": 2048,
14
+ "answer_max_new_tokens": 200,
15
+ "temperature": 0.0,
16
+ "enable_thinking": false,
17
+ "log_path": "storage/experiments/stability_hcl_02_4b_opt27b/llm_calls.txt"
18
+ },
19
+ "judge_model": {
20
+ "backend": "local_transformers",
21
+ "name": "Qwen3.6-27B",
22
+ "path": "models/Qwen3.6-27B",
23
+ "device_map": "cuda:0",
24
+ "torch_dtype": "bfloat16",
25
+ "max_new_tokens": 2048,
26
+ "answer_max_new_tokens": 200,
27
+ "temperature": 0.0,
28
+ "enable_thinking": false,
29
+ "log_path": "storage/experiments/stability_hcl_02_4b_opt27b/judge_llm_calls.txt"
30
+ },
31
+ "task_interface": {
32
+ "mode": "auto",
33
+ "long_context_rule_threshold_chars": 24000,
34
+ "visible_context_max_chars": 24000,
35
+ "visible_context_max_items": 12
36
+ },
37
+ "router": {
38
+ "use_llm_workflow_selector": true,
39
+ "use_memory_selector": true,
40
+ "use_skill_selector": true,
41
+ "use_tool_selector": true,
42
+ "capability_enabled": false,
43
+ "memory_selector_fallback_to_empty_on_invalid": true,
44
+ "skill_selector_fallback_to_empty_on_invalid": true,
45
+ "tool_selector_fallback_to_empty_on_invalid": true,
46
+ "memory_selector_invalid_output_retries": 2,
47
+ "skill_selector_invalid_output_retries": 2,
48
+ "tool_selector_invalid_output_retries": 2
49
+ },
50
+ "optimizer": {
51
+ "candidate_count": 3,
52
+ "components": [
53
+ "task_interface_structuring",
54
+ "router_workflow",
55
+ "router_context"
56
+ ],
57
+ "selection_objective": "stability",
58
+ "min_accuracy_delta": 0.0,
59
+ "min_correct_gain": 1,
60
+ "max_forget_count": 0,
61
+ "min_format_compliance_rate": 0.0,
62
+ "min_historical_anchor_count": 1,
63
+ "min_historical_anchors_per_task": 1
64
+ },
65
+ "memory": {
66
+ "enabled": true,
67
+ "reset_on_start": true,
68
+ "abstract_mode": "llm",
69
+ "anchor_selection_mode": "llm",
70
+ "anchor_count_per_batch": 5,
71
+ "anchor_capacity_per_task": 15,
72
+ "skill_mode": "llm"
73
+ },
74
+ "prediction_cache": {
75
+ "enabled": true
76
+ },
77
+ "checkpoint": {
78
+ "enabled": true,
79
+ "resume": true
80
+ },
81
+ "execution": {
82
+ "read_only_workers": 1,
83
+ "run_train_final": false
84
+ },
85
+ "forgetting_probe": {
86
+ "enabled": false
87
+ },
88
+ "task_flow": [
89
+ {
90
+ "name": "train",
91
+ "phase": "train",
92
+ "train_split": "train",
93
+ "val_split": "validation",
94
+ "test_split": "test",
95
+ "continual": true,
96
+ "batchsize": 300,
97
+ "train_limit_per_task": 250,
98
+ "validation_limit_per_task": 50,
99
+ "test_limit_per_task": 500
100
+ },
101
+ {
102
+ "name": "test",
103
+ "phase": "test",
104
+ "test_split": "test",
105
+ "test_limit_per_task": 500
106
+ }
107
+ ]
108
+ }
configs/run_stability_hcl_03_4b_teacher27b.json ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "hcl_stability_03_4b_teacher27b",
3
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
4
+ "storage_dir": "storage/experiments/stability_hcl_03_4b_teacher27b",
5
+ "reset_run_on_start": true,
6
+ "batchsize": 300,
7
+ "model": {
8
+ "backend": "local_transformers",
9
+ "name": "Qwen3-4B",
10
+ "path": "models/Qwen3-4B",
11
+ "device_map": "cuda:0",
12
+ "torch_dtype": "bfloat16",
13
+ "max_new_tokens": 2048,
14
+ "answer_max_new_tokens": 200,
15
+ "temperature": 0.0,
16
+ "enable_thinking": false,
17
+ "log_path": "storage/experiments/stability_hcl_03_4b_teacher27b/llm_calls.txt"
18
+ },
19
+ "selection_model": {
20
+ "backend": "local_transformers",
21
+ "name": "Qwen3.6-27B",
22
+ "path": "models/Qwen3.6-27B",
23
+ "device_map": "cuda:0",
24
+ "torch_dtype": "bfloat16",
25
+ "max_new_tokens": 2048,
26
+ "answer_max_new_tokens": 200,
27
+ "temperature": 0.0,
28
+ "enable_thinking": false,
29
+ "log_path": "storage/experiments/stability_hcl_03_4b_teacher27b/teacher_llm_calls.txt"
30
+ },
31
+ "memory_model": {
32
+ "backend": "local_transformers",
33
+ "name": "Qwen3.6-27B",
34
+ "path": "models/Qwen3.6-27B",
35
+ "device_map": "cuda:0",
36
+ "torch_dtype": "bfloat16",
37
+ "max_new_tokens": 2048,
38
+ "answer_max_new_tokens": 200,
39
+ "temperature": 0.0,
40
+ "enable_thinking": false,
41
+ "log_path": "storage/experiments/stability_hcl_03_4b_teacher27b/teacher_llm_calls.txt"
42
+ },
43
+ "task_interface": {
44
+ "mode": "auto",
45
+ "long_context_rule_threshold_chars": 24000,
46
+ "visible_context_max_chars": 24000,
47
+ "visible_context_max_items": 12
48
+ },
49
+ "router": {
50
+ "use_llm_workflow_selector": true,
51
+ "use_memory_selector": true,
52
+ "use_skill_selector": true,
53
+ "use_tool_selector": true,
54
+ "capability_enabled": false,
55
+ "memory_selector_fallback_to_empty_on_invalid": true,
56
+ "skill_selector_fallback_to_empty_on_invalid": true,
57
+ "tool_selector_fallback_to_empty_on_invalid": true,
58
+ "memory_selector_invalid_output_retries": 2,
59
+ "skill_selector_invalid_output_retries": 2,
60
+ "tool_selector_invalid_output_retries": 2
61
+ },
62
+ "optimizer": {
63
+ "candidate_count": 3,
64
+ "components": [
65
+ "task_interface_structuring",
66
+ "router_workflow",
67
+ "router_context"
68
+ ],
69
+ "selection_objective": "stability",
70
+ "min_accuracy_delta": 0.0,
71
+ "min_correct_gain": 1,
72
+ "max_forget_count": 0,
73
+ "min_format_compliance_rate": 0.0,
74
+ "min_historical_anchor_count": 1,
75
+ "min_historical_anchors_per_task": 1
76
+ },
77
+ "memory": {
78
+ "enabled": true,
79
+ "reset_on_start": true,
80
+ "abstract_mode": "llm",
81
+ "anchor_selection_mode": "llm",
82
+ "anchor_count_per_batch": 5,
83
+ "anchor_capacity_per_task": 15,
84
+ "skill_mode": "llm"
85
+ },
86
+ "prediction_cache": {
87
+ "enabled": true
88
+ },
89
+ "checkpoint": {
90
+ "enabled": true,
91
+ "resume": true
92
+ },
93
+ "execution": {
94
+ "read_only_workers": 1,
95
+ "run_train_final": false
96
+ },
97
+ "forgetting_probe": {
98
+ "enabled": false
99
+ },
100
+ "task_flow": [
101
+ {
102
+ "name": "train",
103
+ "phase": "train",
104
+ "train_split": "train",
105
+ "val_split": "validation",
106
+ "test_split": "test",
107
+ "continual": true,
108
+ "batchsize": 300,
109
+ "train_limit_per_task": 250,
110
+ "validation_limit_per_task": 50,
111
+ "test_limit_per_task": 500
112
+ },
113
+ {
114
+ "name": "test",
115
+ "phase": "test",
116
+ "test_split": "test",
117
+ "test_limit_per_task": 500
118
+ }
119
+ ]
120
+ }
configs/taskstream_multimodal_main_250_50_500.json ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "description": "Paper-aligned multimodal stream manifest. Images and the exact sampled JSONL records are external data and are not redistributed.",
3
+ "paper_order": ["coco_detection", "coco_caption", "refcoco_grounding", "vqav2"],
4
+ "tasks": [
5
+ {
6
+ "task_name": "coco_detection",
7
+ "task_type": "coco_detection",
8
+ "modality": ["text", "image"],
9
+ "splits": {
10
+ "train": "data/datasets/coco_detection/train.jsonl",
11
+ "validation": "data/datasets/coco_detection/validation.jsonl",
12
+ "anchor": "data/datasets/coco_detection/validation.jsonl",
13
+ "test": "data/datasets/coco_detection/test.jsonl"
14
+ }
15
+ },
16
+ {
17
+ "task_name": "coco_caption",
18
+ "task_type": "coco_caption",
19
+ "modality": ["text", "image"],
20
+ "splits": {
21
+ "train": "data/datasets/coco_caption/train.jsonl",
22
+ "validation": "data/datasets/coco_caption/validation.jsonl",
23
+ "anchor": "data/datasets/coco_caption/validation.jsonl",
24
+ "test": "data/datasets/coco_caption/test.jsonl"
25
+ }
26
+ },
27
+ {
28
+ "task_name": "refcoco_grounding",
29
+ "task_type": "refcoco_grounding",
30
+ "modality": ["text", "image"],
31
+ "splits": {
32
+ "train": "data/datasets/refcoco_grounding/train.jsonl",
33
+ "validation": "data/datasets/refcoco_grounding/validation.jsonl",
34
+ "anchor": "data/datasets/refcoco_grounding/validation.jsonl",
35
+ "test": "data/datasets/refcoco_grounding/test.jsonl"
36
+ }
37
+ },
38
+ {
39
+ "task_name": "vqav2",
40
+ "task_type": "vqa",
41
+ "modality": ["text", "image"],
42
+ "splits": {
43
+ "train": "data/datasets/vqav2/train.jsonl",
44
+ "validation": "data/datasets/vqav2/validation.jsonl",
45
+ "anchor": "data/datasets/vqav2/validation.jsonl",
46
+ "test": "data/datasets/vqav2/test.jsonl"
47
+ }
48
+ }
49
+ ]
50
+ }
configs/taskstream_multimodal_recovered_500_100_500.json ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "stream_name": "multimodal_hcl_stream",
3
+ "description": "Recovered four-task multimodal 500/100/500 split manifest. Dataset records and images are external.",
4
+ "paper_order": ["coco_detection", "coco_caption", "refcoco_grounding", "vqav2"],
5
+ "tasks": [
6
+ {
7
+ "task_name": "coco_detection",
8
+ "task_type": "coco_detection",
9
+ "modality": ["image", "text"],
10
+ "interactions": 1,
11
+ "splits": {
12
+ "train": "data/datasets_multimodal_500_100_500/coco_detection/train.json",
13
+ "validation": "data/datasets_multimodal_500_100_500/coco_detection/validation.json",
14
+ "anchor": "data/datasets_multimodal_500_100_500/coco_detection/validation.json",
15
+ "test": "data/datasets_multimodal_500_100_500/coco_detection/test.json"
16
+ }
17
+ },
18
+ {
19
+ "task_name": "coco_caption",
20
+ "task_type": "coco_caption",
21
+ "modality": ["image", "text"],
22
+ "interactions": 1,
23
+ "splits": {
24
+ "train": "data/datasets_multimodal_500_100_500/coco_caption/train.json",
25
+ "validation": "data/datasets_multimodal_500_100_500/coco_caption/validation.json",
26
+ "anchor": "data/datasets_multimodal_500_100_500/coco_caption/validation.json",
27
+ "test": "data/datasets_multimodal_500_100_500/coco_caption/test.json"
28
+ }
29
+ },
30
+ {
31
+ "task_name": "refcoco_grounding",
32
+ "task_type": "refcoco_grounding",
33
+ "modality": ["image", "text"],
34
+ "interactions": 1,
35
+ "splits": {
36
+ "train": "data/datasets_multimodal_500_100_500/refcoco_grounding/train.json",
37
+ "validation": "data/datasets_multimodal_500_100_500/refcoco_grounding/validation.json",
38
+ "anchor": "data/datasets_multimodal_500_100_500/refcoco_grounding/validation.json",
39
+ "test": "data/datasets_multimodal_500_100_500/refcoco_grounding/test.json"
40
+ }
41
+ },
42
+ {
43
+ "task_name": "vqav2",
44
+ "task_type": "vqa",
45
+ "modality": ["image", "text"],
46
+ "interactions": 1,
47
+ "splits": {
48
+ "train": "data/datasets_multimodal_500_100_500/vqav2/train.json",
49
+ "validation": "data/datasets_multimodal_500_100_500/vqav2/validation.json",
50
+ "anchor": "data/datasets_multimodal_500_100_500/vqav2/validation.json",
51
+ "test": "data/datasets_multimodal_500_100_500/vqav2/test.json"
52
+ }
53
+ }
54
+ ]
55
+ }
configs/taskstream_textual_budget_300_80_80_600.json ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "description": "Paper-aligned independent textual budget-sweep stream. Exact split files are external; their provenance and fingerprints are documented in data/README.md.",
3
+ "paper_order": ["musique", "proofwriter", "gsm8k", "hotpotqa"],
4
+ "tasks": [
5
+ {
6
+ "task_name": "musique",
7
+ "task_type": "compositional_multi_hop_qa",
8
+ "modality": ["text"],
9
+ "splits": {
10
+ "train": "data/datasets_budget_300_80_80_600/musique/train.jsonl",
11
+ "validation": "data/datasets_budget_300_80_80_600/musique/validation.jsonl",
12
+ "anchor": "data/datasets_budget_300_80_80_600/musique/anchor.jsonl",
13
+ "test": "data/datasets_budget_300_80_80_600/musique/test.jsonl"
14
+ }
15
+ },
16
+ {
17
+ "task_name": "proofwriter",
18
+ "task_type": "logical_reasoning",
19
+ "modality": ["text"],
20
+ "splits": {
21
+ "train": "data/datasets_budget_300_80_80_600/proofwriter/train.jsonl",
22
+ "validation": "data/datasets_budget_300_80_80_600/proofwriter/validation.jsonl",
23
+ "anchor": "data/datasets_budget_300_80_80_600/proofwriter/anchor.jsonl",
24
+ "test": "data/datasets_budget_300_80_80_600/proofwriter/test.jsonl"
25
+ }
26
+ },
27
+ {
28
+ "task_name": "gsm8k",
29
+ "task_type": "math_word_problem",
30
+ "modality": ["text"],
31
+ "splits": {
32
+ "train": "data/datasets_budget_300_80_80_600/gsm8k/train.jsonl",
33
+ "validation": "data/datasets_budget_300_80_80_600/gsm8k/validation.jsonl",
34
+ "anchor": "data/datasets_budget_300_80_80_600/gsm8k/anchor.jsonl",
35
+ "test": "data/datasets_budget_300_80_80_600/gsm8k/test.jsonl"
36
+ }
37
+ },
38
+ {
39
+ "task_name": "hotpotqa",
40
+ "task_type": "knowledge_intensive_multi_hop_qa",
41
+ "modality": ["text"],
42
+ "splits": {
43
+ "train": "data/datasets_budget_300_80_80_600/hotpotqa/train.jsonl",
44
+ "validation": "data/datasets_budget_300_80_80_600/hotpotqa/validation.jsonl",
45
+ "anchor": "data/datasets_budget_300_80_80_600/hotpotqa/anchor.jsonl",
46
+ "test": "data/datasets_budget_300_80_80_600/hotpotqa/test.jsonl"
47
+ }
48
+ }
49
+ ]
50
+ }
configs/taskstream_textual_main_250_50_500.json ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "description": "Paper-aligned textual stream manifest. The exact sampled JSONL records are external data and are not redistributed.",
3
+ "paper_order": ["musique", "proofwriter", "gsm8k", "hotpotqa"],
4
+ "tasks": [
5
+ {
6
+ "task_name": "musique",
7
+ "task_type": "compositional_multi_hop_qa",
8
+ "modality": ["text"],
9
+ "splits": {
10
+ "train": "data/datasets/musique/train.jsonl",
11
+ "validation": "data/datasets/musique/validation.jsonl",
12
+ "anchor": "data/datasets/musique/anchor.jsonl",
13
+ "test": "data/datasets/musique/test.jsonl"
14
+ }
15
+ },
16
+ {
17
+ "task_name": "proofwriter",
18
+ "task_type": "logical_reasoning",
19
+ "modality": ["text"],
20
+ "splits": {
21
+ "train": "data/datasets/proofwriter/train.jsonl",
22
+ "validation": "data/datasets/proofwriter/validation.jsonl",
23
+ "anchor": "data/datasets/proofwriter/anchor.jsonl",
24
+ "test": "data/datasets/proofwriter/test.jsonl"
25
+ }
26
+ },
27
+ {
28
+ "task_name": "gsm8k",
29
+ "task_type": "math_word_problem",
30
+ "modality": ["text"],
31
+ "splits": {
32
+ "train": "data/datasets/gsm8k/train.jsonl",
33
+ "validation": "data/datasets/gsm8k/validation.jsonl",
34
+ "anchor": "data/datasets/gsm8k/anchor.jsonl",
35
+ "test": "data/datasets/gsm8k/test.jsonl"
36
+ }
37
+ },
38
+ {
39
+ "task_name": "hotpotqa",
40
+ "task_type": "knowledge_intensive_multi_hop_qa",
41
+ "modality": ["text"],
42
+ "splits": {
43
+ "train": "data/datasets/hotpotqa/train.jsonl",
44
+ "validation": "data/datasets/hotpotqa/validation.jsonl",
45
+ "anchor": "data/datasets/hotpotqa/anchor.jsonl",
46
+ "test": "data/datasets/hotpotqa/test.jsonl"
47
+ }
48
+ }
49
+ ]
50
+ }
configs/validation_coco_distill_01_limit1.json ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "coco_distill_01_smoke",
3
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
4
+ "storage_dir": "storage/validation/coco_distill_01_limit1",
5
+ "reset_run_on_start": true,
6
+ "batchsize": 300,
7
+ "model": {
8
+ "backend": "local_transformers",
9
+ "name": "Qwen3.5-4B",
10
+ "path": "models/Qwen3.5-4B",
11
+ "device_map": "cuda:0",
12
+ "torch_dtype": "bfloat16",
13
+ "max_new_tokens": 2048,
14
+ "answer_max_new_tokens": 512,
15
+ "temperature": 0.0,
16
+ "enable_thinking": false,
17
+ "log_path": "storage/validation/coco_distill_01_limit1/student_calls.txt"
18
+ },
19
+ "task_interface": {
20
+ "mode": "auto",
21
+ "long_context_rule_threshold_chars": 24000,
22
+ "visible_context_max_chars": 24000,
23
+ "visible_context_max_items": 12,
24
+ "max_new_tokens": 640,
25
+ "retry_max_new_tokens": 1024,
26
+ "invalid_output_retries": 1,
27
+ "fallback_to_rules_on_invalid": true
28
+ },
29
+ "router": {
30
+ "use_llm_workflow_selector": true,
31
+ "use_memory_selector": true,
32
+ "use_skill_selector": true,
33
+ "use_tool_selector": true,
34
+ "capability_enabled": false,
35
+ "memory_selector_fallback_to_empty_on_invalid": true,
36
+ "skill_selector_fallback_to_empty_on_invalid": true,
37
+ "tool_selector_fallback_to_empty_on_invalid": true,
38
+ "memory_selector_invalid_output_retries": 2,
39
+ "skill_selector_invalid_output_retries": 2,
40
+ "tool_selector_invalid_output_retries": 2
41
+ },
42
+ "optimizer": {
43
+ "candidate_count": 1,
44
+ "components": [
45
+ "task_interface_structuring",
46
+ "router_workflow",
47
+ "router_context"
48
+ ],
49
+ "selection_objective": "stability",
50
+ "min_accuracy_delta": 0.0,
51
+ "min_correct_gain": 1,
52
+ "max_forget_count": 0,
53
+ "min_format_compliance_rate": 0.0,
54
+ "min_historical_anchor_count": 1,
55
+ "min_historical_anchors_per_task": 1
56
+ },
57
+ "memory": {
58
+ "enabled": true,
59
+ "reset_on_start": true,
60
+ "abstract_mode": "llm",
61
+ "anchor_selection_mode": "llm",
62
+ "anchor_count_per_batch": 5,
63
+ "anchor_capacity_per_task": 15,
64
+ "skill_mode": "llm"
65
+ },
66
+ "prediction_cache": {
67
+ "enabled": true
68
+ },
69
+ "checkpoint": {
70
+ "enabled": true,
71
+ "resume": true
72
+ },
73
+ "execution": {
74
+ "read_only_workers": 1,
75
+ "run_train_final": false
76
+ },
77
+ "forgetting_probe": {
78
+ "enabled": false
79
+ },
80
+ "task_flow": [
81
+ {
82
+ "name": "train",
83
+ "phase": "train",
84
+ "train_split": "train",
85
+ "val_split": "validation",
86
+ "test_split": "test",
87
+ "continual": true,
88
+ "batchsize": 300,
89
+ "train_limit_per_task": 1,
90
+ "validation_limit_per_task": 1,
91
+ "test_limit_per_task": 1
92
+ },
93
+ {
94
+ "name": "test",
95
+ "phase": "test",
96
+ "test_split": "test",
97
+ "test_limit_per_task": 1
98
+ }
99
+ ]
100
+ }
configs/validation_coco_distill_02_limit1.json ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "coco_distill_02_smoke",
3
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
4
+ "storage_dir": "storage/validation/coco_distill_02_limit1",
5
+ "reset_run_on_start": true,
6
+ "batchsize": 300,
7
+ "model": {
8
+ "backend": "local_transformers",
9
+ "name": "Qwen3.5-4B",
10
+ "path": "models/Qwen3.5-4B",
11
+ "device_map": "cuda:0",
12
+ "torch_dtype": "bfloat16",
13
+ "max_new_tokens": 2048,
14
+ "answer_max_new_tokens": 512,
15
+ "temperature": 0.0,
16
+ "enable_thinking": false,
17
+ "log_path": "storage/validation/coco_distill_02_limit1/student_calls.txt"
18
+ },
19
+ "judge_model": {
20
+ "backend": "chat_completions",
21
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
22
+ "max_new_tokens": 2048,
23
+ "answer_max_new_tokens": 512,
24
+ "temperature": 0.0,
25
+ "enable_thinking": false,
26
+ "log_path": "storage/validation/coco_distill_02_limit1/judge_model_calls.txt",
27
+ "base_url": "http://127.0.0.1:8017",
28
+ "api_key": "EMPTY",
29
+ "chat_template_kwargs": {
30
+ "enable_thinking": false
31
+ },
32
+ "timeout_seconds": 600,
33
+ "max_retries": 1
34
+ },
35
+ "task_interface": {
36
+ "mode": "auto",
37
+ "long_context_rule_threshold_chars": 24000,
38
+ "visible_context_max_chars": 24000,
39
+ "visible_context_max_items": 12,
40
+ "max_new_tokens": 640,
41
+ "retry_max_new_tokens": 1024,
42
+ "invalid_output_retries": 1,
43
+ "fallback_to_rules_on_invalid": true
44
+ },
45
+ "router": {
46
+ "use_llm_workflow_selector": true,
47
+ "use_memory_selector": true,
48
+ "use_skill_selector": true,
49
+ "use_tool_selector": true,
50
+ "capability_enabled": false,
51
+ "memory_selector_fallback_to_empty_on_invalid": true,
52
+ "skill_selector_fallback_to_empty_on_invalid": true,
53
+ "tool_selector_fallback_to_empty_on_invalid": true,
54
+ "memory_selector_invalid_output_retries": 2,
55
+ "skill_selector_invalid_output_retries": 2,
56
+ "tool_selector_invalid_output_retries": 2
57
+ },
58
+ "optimizer": {
59
+ "candidate_count": 1,
60
+ "components": [
61
+ "task_interface_structuring",
62
+ "router_workflow",
63
+ "router_context"
64
+ ],
65
+ "selection_objective": "stability",
66
+ "min_accuracy_delta": 0.0,
67
+ "min_correct_gain": 1,
68
+ "max_forget_count": 0,
69
+ "min_format_compliance_rate": 0.0,
70
+ "min_historical_anchor_count": 1,
71
+ "min_historical_anchors_per_task": 1
72
+ },
73
+ "memory": {
74
+ "enabled": true,
75
+ "reset_on_start": true,
76
+ "abstract_mode": "llm",
77
+ "anchor_selection_mode": "llm",
78
+ "anchor_count_per_batch": 5,
79
+ "anchor_capacity_per_task": 15,
80
+ "skill_mode": "llm"
81
+ },
82
+ "prediction_cache": {
83
+ "enabled": true
84
+ },
85
+ "checkpoint": {
86
+ "enabled": true,
87
+ "resume": true
88
+ },
89
+ "execution": {
90
+ "read_only_workers": 1,
91
+ "run_train_final": false
92
+ },
93
+ "forgetting_probe": {
94
+ "enabled": false
95
+ },
96
+ "task_flow": [
97
+ {
98
+ "name": "train",
99
+ "phase": "train",
100
+ "train_split": "train",
101
+ "val_split": "validation",
102
+ "test_split": "test",
103
+ "continual": true,
104
+ "batchsize": 300,
105
+ "train_limit_per_task": 1,
106
+ "validation_limit_per_task": 1,
107
+ "test_limit_per_task": 1
108
+ },
109
+ {
110
+ "name": "test",
111
+ "phase": "test",
112
+ "test_split": "test",
113
+ "test_limit_per_task": 1
114
+ }
115
+ ]
116
+ }
configs/validation_coco_distill_03_limit1.json ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "coco_distill_03_smoke",
3
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
4
+ "storage_dir": "storage/validation/coco_distill_03_limit1",
5
+ "reset_run_on_start": true,
6
+ "batchsize": 300,
7
+ "model": {
8
+ "backend": "local_transformers",
9
+ "name": "Qwen3.5-4B",
10
+ "path": "models/Qwen3.5-4B",
11
+ "device_map": "cuda:0",
12
+ "torch_dtype": "bfloat16",
13
+ "max_new_tokens": 2048,
14
+ "answer_max_new_tokens": 512,
15
+ "temperature": 0.0,
16
+ "enable_thinking": false,
17
+ "log_path": "storage/validation/coco_distill_03_limit1/student_calls.txt"
18
+ },
19
+ "selection_model": {
20
+ "backend": "chat_completions",
21
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
22
+ "max_new_tokens": 2048,
23
+ "answer_max_new_tokens": 512,
24
+ "temperature": 0.0,
25
+ "enable_thinking": false,
26
+ "log_path": "storage/validation/coco_distill_03_limit1/selection_model_calls.txt",
27
+ "base_url": "http://127.0.0.1:8017",
28
+ "api_key": "EMPTY",
29
+ "chat_template_kwargs": {
30
+ "enable_thinking": false
31
+ },
32
+ "timeout_seconds": 600,
33
+ "max_retries": 1
34
+ },
35
+ "memory_model": {
36
+ "backend": "chat_completions",
37
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
38
+ "max_new_tokens": 2048,
39
+ "answer_max_new_tokens": 512,
40
+ "temperature": 0.0,
41
+ "enable_thinking": false,
42
+ "log_path": "storage/validation/coco_distill_03_limit1/memory_model_calls.txt",
43
+ "base_url": "http://127.0.0.1:8017",
44
+ "api_key": "EMPTY",
45
+ "chat_template_kwargs": {
46
+ "enable_thinking": false
47
+ },
48
+ "timeout_seconds": 600,
49
+ "max_retries": 1
50
+ },
51
+ "task_interface": {
52
+ "mode": "auto",
53
+ "long_context_rule_threshold_chars": 24000,
54
+ "visible_context_max_chars": 24000,
55
+ "visible_context_max_items": 12,
56
+ "max_new_tokens": 640,
57
+ "retry_max_new_tokens": 1024,
58
+ "invalid_output_retries": 1,
59
+ "fallback_to_rules_on_invalid": true
60
+ },
61
+ "router": {
62
+ "use_llm_workflow_selector": true,
63
+ "use_memory_selector": true,
64
+ "use_skill_selector": true,
65
+ "use_tool_selector": true,
66
+ "capability_enabled": false,
67
+ "memory_selector_fallback_to_empty_on_invalid": true,
68
+ "skill_selector_fallback_to_empty_on_invalid": true,
69
+ "tool_selector_fallback_to_empty_on_invalid": true,
70
+ "memory_selector_invalid_output_retries": 2,
71
+ "skill_selector_invalid_output_retries": 2,
72
+ "tool_selector_invalid_output_retries": 2
73
+ },
74
+ "optimizer": {
75
+ "candidate_count": 1,
76
+ "components": [
77
+ "task_interface_structuring",
78
+ "router_workflow",
79
+ "router_context"
80
+ ],
81
+ "selection_objective": "stability",
82
+ "min_accuracy_delta": 0.0,
83
+ "min_correct_gain": 1,
84
+ "max_forget_count": 0,
85
+ "min_format_compliance_rate": 0.0,
86
+ "min_historical_anchor_count": 1,
87
+ "min_historical_anchors_per_task": 1
88
+ },
89
+ "memory": {
90
+ "enabled": true,
91
+ "reset_on_start": true,
92
+ "abstract_mode": "llm",
93
+ "anchor_selection_mode": "llm",
94
+ "anchor_count_per_batch": 5,
95
+ "anchor_capacity_per_task": 15,
96
+ "skill_mode": "llm"
97
+ },
98
+ "prediction_cache": {
99
+ "enabled": true
100
+ },
101
+ "checkpoint": {
102
+ "enabled": true,
103
+ "resume": true
104
+ },
105
+ "execution": {
106
+ "read_only_workers": 1,
107
+ "run_train_final": false
108
+ },
109
+ "forgetting_probe": {
110
+ "enabled": false
111
+ },
112
+ "task_flow": [
113
+ {
114
+ "name": "train",
115
+ "phase": "train",
116
+ "train_split": "train",
117
+ "val_split": "validation",
118
+ "test_split": "test",
119
+ "continual": true,
120
+ "batchsize": 300,
121
+ "train_limit_per_task": 1,
122
+ "validation_limit_per_task": 1,
123
+ "test_limit_per_task": 1
124
+ },
125
+ {
126
+ "name": "test",
127
+ "phase": "test",
128
+ "test_split": "test",
129
+ "test_limit_per_task": 1
130
+ }
131
+ ]
132
+ }
configs/validation_coco_stability_limit1.json ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "Qwen3.6-27B COCO HCL stability 250-50-500 migrated",
3
+ "model": {
4
+ "backend": "chat_completions",
5
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
6
+ "paper_model_name": "Qwen3.6-27B",
7
+ "base_url": "http://127.0.0.1:8017",
8
+ "api_key": "EMPTY",
9
+ "max_new_tokens": 2048,
10
+ "answer_max_new_tokens": 1024,
11
+ "temperature": 0.0,
12
+ "cleanup_output": true,
13
+ "enable_image_input": true,
14
+ "chat_template_kwargs": {
15
+ "enable_thinking": false
16
+ },
17
+ "json_object_for_structured_phases": true,
18
+ "system_prompt": "You are a concise multimodal reasoning assistant. Inspect the supplied image directly, follow the requested output schema exactly, and output only the final answer.",
19
+ "timeout_seconds": 600,
20
+ "max_retries": 1,
21
+ "log_path": "storage/validation/coco_stability_limit1/llm_calls.txt",
22
+ "log_prompt_chars": 8000
23
+ },
24
+ "execution": {
25
+ "read_only_workers": 2,
26
+ "run_train_final": true
27
+ },
28
+ "task_interface": {
29
+ "mode": "auto",
30
+ "max_new_tokens": 640,
31
+ "invalid_output_retries": 1,
32
+ "retry_max_new_tokens": 1024,
33
+ "fallback_to_rules_on_invalid": true
34
+ },
35
+ "router": {
36
+ "route_name": "qwen36_27b_coco_gpu3_hcl_stability",
37
+ "strip_output": true,
38
+ "use_llm_workflow_selector": true,
39
+ "use_memory_selector": true,
40
+ "memory_always_on": true,
41
+ "use_skill_selector": true,
42
+ "use_tool_selector": false,
43
+ "tool_auto_select": false,
44
+ "use_chat_tool_calls": false,
45
+ "memory_selector_max_new_tokens": 256,
46
+ "memory_selector_invalid_output_retries": 1,
47
+ "memory_selector_retry_max_new_tokens": 256,
48
+ "skill_selector_max_new_tokens": 256,
49
+ "skill_selector_invalid_output_retries": 1,
50
+ "skill_selector_retry_max_new_tokens": 256,
51
+ "skill_selector_fallback_to_empty_on_invalid": true,
52
+ "capability_enabled": false,
53
+ "capability_execution_mode": "disabled"
54
+ },
55
+ "optimizer": {
56
+ "candidate_count": 3,
57
+ "selection_objective": "plasticity",
58
+ "commit_policy": "plasticity_first",
59
+ "historical_loss_budget": 0,
60
+ "max_forget_count": 0,
61
+ "min_primary_score_delta": 1e-09,
62
+ "min_correct_gain": 0,
63
+ "min_format_compliance_rate": 1.0,
64
+ "recover_reward": 1.0,
65
+ "forget_penalty": 1.5,
66
+ "min_anchor_score": -5.0,
67
+ "min_anchor_net_score": -0.1,
68
+ "max_anchor_forget_rate": 0.2,
69
+ "components": [
70
+ "task_interface_structuring",
71
+ "router_workflow",
72
+ "memory_selector",
73
+ "router_context"
74
+ ]
75
+ },
76
+ "memory": {
77
+ "enabled": true,
78
+ "raw_capacity_per_task": 10,
79
+ "abstract_capacity_per_task": 2,
80
+ "anchor_capacity_per_task": 25,
81
+ "retrieval_top_k": 2,
82
+ "reset_on_start": false,
83
+ "abstract_mode": "llm",
84
+ "abstract_max_new_tokens": 512,
85
+ "anchor_selection_mode": "llm",
86
+ "anchor_count_per_batch": 2,
87
+ "anchor_candidate_limit": 10,
88
+ "anchor_selection_max_new_tokens": 128,
89
+ "skill_enabled": true,
90
+ "skill_mode": "llm",
91
+ "abstract_prompt_max_chars": 12000
92
+ },
93
+ "forgetting_probe": {
94
+ "enabled": true,
95
+ "interval_batches": 2,
96
+ "samples_per_task": 100,
97
+ "target_correct_ratio": 0.8,
98
+ "seed": 20260726,
99
+ "split": "test",
100
+ "historical_tasks_only": true,
101
+ "reuse_probe_set": true,
102
+ "record_predictions": false
103
+ },
104
+ "task_stream_path": "configs/taskstream_multimodal_main_250_50_500.json",
105
+ "reset_run_on_start": true,
106
+ "storage_dir": "storage/validation/coco_stability_limit1",
107
+ "prediction_cache": {
108
+ "enabled": true,
109
+ "path": "storage/validation/coco_stability_limit1/prediction_cache/read_only_predictions.jsonl"
110
+ },
111
+ "checkpoint": {
112
+ "enabled": true,
113
+ "path": "storage/validation/coco_stability_limit1/checkpoint.json",
114
+ "resume": true
115
+ },
116
+ "task_flow": [
117
+ {
118
+ "name": "train",
119
+ "phase": "train",
120
+ "train_split": "train",
121
+ "val_split": "validation",
122
+ "test_split": "test",
123
+ "continual": true,
124
+ "batchsize": 25,
125
+ "train_limit_per_task": 1,
126
+ "validation_limit_per_task": 1,
127
+ "test_limit_per_task": 1
128
+ },
129
+ {
130
+ "name": "test",
131
+ "phase": "test",
132
+ "test_split": "test",
133
+ "test_limit_per_task": 1,
134
+ "group_by_task": true
135
+ }
136
+ ]
137
+ }
configs/validation_distill_01_limit1.json ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "hcl_stability_01_4b",
3
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
4
+ "storage_dir": "storage/validation/distill_01_limit1_full_output",
5
+ "reset_run_on_start": true,
6
+ "batchsize": 300,
7
+ "model": {
8
+ "backend": "local_transformers",
9
+ "name": "Qwen3-4B",
10
+ "path": "models/Qwen3-4B",
11
+ "device_map": "cuda:0",
12
+ "torch_dtype": "bfloat16",
13
+ "max_new_tokens": 2048,
14
+ "answer_max_new_tokens": 200,
15
+ "temperature": 0.0,
16
+ "enable_thinking": false,
17
+ "log_path": "storage/validation/distill_01_limit1_full_output/model_calls.txt"
18
+ },
19
+ "task_interface": {
20
+ "mode": "auto",
21
+ "long_context_rule_threshold_chars": 24000,
22
+ "visible_context_max_chars": 24000,
23
+ "visible_context_max_items": 12
24
+ },
25
+ "router": {
26
+ "use_llm_workflow_selector": true,
27
+ "use_memory_selector": true,
28
+ "use_skill_selector": true,
29
+ "use_tool_selector": true,
30
+ "capability_enabled": false,
31
+ "memory_selector_fallback_to_empty_on_invalid": true,
32
+ "skill_selector_fallback_to_empty_on_invalid": true,
33
+ "tool_selector_fallback_to_empty_on_invalid": true,
34
+ "memory_selector_invalid_output_retries": 2,
35
+ "skill_selector_invalid_output_retries": 2,
36
+ "tool_selector_invalid_output_retries": 2
37
+ },
38
+ "optimizer": {
39
+ "candidate_count": 3,
40
+ "components": [
41
+ "task_interface_structuring",
42
+ "router_workflow",
43
+ "router_context"
44
+ ],
45
+ "selection_objective": "stability",
46
+ "min_accuracy_delta": 0.0,
47
+ "min_correct_gain": 1,
48
+ "max_forget_count": 0,
49
+ "min_format_compliance_rate": 0.0,
50
+ "min_historical_anchor_count": 1,
51
+ "min_historical_anchors_per_task": 1
52
+ },
53
+ "memory": {
54
+ "enabled": true,
55
+ "reset_on_start": true,
56
+ "abstract_mode": "llm",
57
+ "anchor_selection_mode": "llm",
58
+ "anchor_count_per_batch": 5,
59
+ "anchor_capacity_per_task": 15,
60
+ "skill_mode": "llm"
61
+ },
62
+ "prediction_cache": {
63
+ "enabled": true
64
+ },
65
+ "checkpoint": {
66
+ "enabled": true,
67
+ "resume": true
68
+ },
69
+ "execution": {
70
+ "read_only_workers": 1,
71
+ "run_train_final": false
72
+ },
73
+ "forgetting_probe": {
74
+ "enabled": false
75
+ },
76
+ "task_flow": [
77
+ {
78
+ "name": "train",
79
+ "phase": "train",
80
+ "train_split": "train",
81
+ "val_split": "validation",
82
+ "test_split": "test",
83
+ "continual": true,
84
+ "batchsize": 300,
85
+ "train_limit_per_task": 1,
86
+ "validation_limit_per_task": 1,
87
+ "test_limit_per_task": 1
88
+ },
89
+ {
90
+ "name": "test",
91
+ "phase": "test",
92
+ "test_split": "test",
93
+ "test_limit_per_task": 1
94
+ }
95
+ ]
96
+ }
configs/validation_distill_02_limit1.json ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "hcl_stability_02_4b_opt27b",
3
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
4
+ "storage_dir": "storage/validation/distill_02_limit1",
5
+ "reset_run_on_start": true,
6
+ "batchsize": 300,
7
+ "model": {
8
+ "backend": "local_transformers",
9
+ "name": "Qwen3-4B",
10
+ "path": "models/Qwen3-4B",
11
+ "device_map": "cuda:0",
12
+ "torch_dtype": "bfloat16",
13
+ "max_new_tokens": 2048,
14
+ "answer_max_new_tokens": 200,
15
+ "temperature": 0.0,
16
+ "enable_thinking": false,
17
+ "log_path": "storage/validation/distill_02_limit1/model_calls.txt"
18
+ },
19
+ "judge_model": {
20
+ "backend": "chat_completions",
21
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
22
+ "max_new_tokens": 2048,
23
+ "answer_max_new_tokens": 200,
24
+ "temperature": 0.0,
25
+ "enable_thinking": false,
26
+ "log_path": "storage/validation/distill_02_limit1/judge_model_calls.txt",
27
+ "base_url": "http://127.0.0.1:8017",
28
+ "api_key": "EMPTY",
29
+ "timeout_seconds": 600,
30
+ "max_retries": 1,
31
+ "chat_template_kwargs": {
32
+ "enable_thinking": false
33
+ }
34
+ },
35
+ "task_interface": {
36
+ "mode": "auto",
37
+ "long_context_rule_threshold_chars": 24000,
38
+ "visible_context_max_chars": 24000,
39
+ "visible_context_max_items": 12
40
+ },
41
+ "router": {
42
+ "use_llm_workflow_selector": true,
43
+ "use_memory_selector": true,
44
+ "use_skill_selector": true,
45
+ "use_tool_selector": true,
46
+ "capability_enabled": false,
47
+ "memory_selector_fallback_to_empty_on_invalid": true,
48
+ "skill_selector_fallback_to_empty_on_invalid": true,
49
+ "tool_selector_fallback_to_empty_on_invalid": true,
50
+ "memory_selector_invalid_output_retries": 2,
51
+ "skill_selector_invalid_output_retries": 2,
52
+ "tool_selector_invalid_output_retries": 2
53
+ },
54
+ "optimizer": {
55
+ "candidate_count": 3,
56
+ "components": [
57
+ "task_interface_structuring",
58
+ "router_workflow",
59
+ "router_context"
60
+ ],
61
+ "selection_objective": "stability",
62
+ "min_accuracy_delta": 0.0,
63
+ "min_correct_gain": 1,
64
+ "max_forget_count": 0,
65
+ "min_format_compliance_rate": 0.0,
66
+ "min_historical_anchor_count": 1,
67
+ "min_historical_anchors_per_task": 1
68
+ },
69
+ "memory": {
70
+ "enabled": true,
71
+ "reset_on_start": true,
72
+ "abstract_mode": "llm",
73
+ "anchor_selection_mode": "llm",
74
+ "anchor_count_per_batch": 5,
75
+ "anchor_capacity_per_task": 15,
76
+ "skill_mode": "llm"
77
+ },
78
+ "prediction_cache": {
79
+ "enabled": true
80
+ },
81
+ "checkpoint": {
82
+ "enabled": true,
83
+ "resume": true
84
+ },
85
+ "execution": {
86
+ "read_only_workers": 1,
87
+ "run_train_final": false
88
+ },
89
+ "forgetting_probe": {
90
+ "enabled": false
91
+ },
92
+ "task_flow": [
93
+ {
94
+ "name": "train",
95
+ "phase": "train",
96
+ "train_split": "train",
97
+ "val_split": "validation",
98
+ "test_split": "test",
99
+ "continual": true,
100
+ "batchsize": 300,
101
+ "train_limit_per_task": 1,
102
+ "validation_limit_per_task": 1,
103
+ "test_limit_per_task": 1
104
+ },
105
+ {
106
+ "name": "test",
107
+ "phase": "test",
108
+ "test_split": "test",
109
+ "test_limit_per_task": 1
110
+ }
111
+ ]
112
+ }
configs/validation_distill_03_limit1.json ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "project_name": "hcl_stability_03_4b_teacher27b",
3
+ "task_stream_path": "configs/taskstream_textual_main_250_50_500.json",
4
+ "storage_dir": "storage/validation/distill_03_limit1",
5
+ "reset_run_on_start": true,
6
+ "batchsize": 300,
7
+ "model": {
8
+ "backend": "local_transformers",
9
+ "name": "Qwen3-4B",
10
+ "path": "models/Qwen3-4B",
11
+ "device_map": "cuda:0",
12
+ "torch_dtype": "bfloat16",
13
+ "max_new_tokens": 2048,
14
+ "answer_max_new_tokens": 200,
15
+ "temperature": 0.0,
16
+ "enable_thinking": false,
17
+ "log_path": "storage/validation/distill_03_limit1/model_calls.txt"
18
+ },
19
+ "selection_model": {
20
+ "backend": "chat_completions",
21
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
22
+ "max_new_tokens": 2048,
23
+ "answer_max_new_tokens": 200,
24
+ "temperature": 0.0,
25
+ "enable_thinking": false,
26
+ "log_path": "storage/validation/distill_03_limit1/selection_model_calls.txt",
27
+ "base_url": "http://127.0.0.1:8017",
28
+ "api_key": "EMPTY",
29
+ "timeout_seconds": 600,
30
+ "max_retries": 1,
31
+ "chat_template_kwargs": {
32
+ "enable_thinking": false
33
+ }
34
+ },
35
+ "memory_model": {
36
+ "backend": "chat_completions",
37
+ "name": "qwen3.6-27b-coco-ablation-gpu3",
38
+ "max_new_tokens": 2048,
39
+ "answer_max_new_tokens": 200,
40
+ "temperature": 0.0,
41
+ "enable_thinking": false,
42
+ "log_path": "storage/validation/distill_03_limit1/memory_model_calls.txt",
43
+ "base_url": "http://127.0.0.1:8017",
44
+ "api_key": "EMPTY",
45
+ "timeout_seconds": 600,
46
+ "max_retries": 1,
47
+ "chat_template_kwargs": {
48
+ "enable_thinking": false
49
+ }
50
+ },
51
+ "task_interface": {
52
+ "mode": "auto",
53
+ "long_context_rule_threshold_chars": 24000,
54
+ "visible_context_max_chars": 24000,
55
+ "visible_context_max_items": 12
56
+ },
57
+ "router": {
58
+ "use_llm_workflow_selector": true,
59
+ "use_memory_selector": true,
60
+ "use_skill_selector": true,
61
+ "use_tool_selector": true,
62
+ "capability_enabled": false,
63
+ "memory_selector_fallback_to_empty_on_invalid": true,
64
+ "skill_selector_fallback_to_empty_on_invalid": true,
65
+ "tool_selector_fallback_to_empty_on_invalid": true,
66
+ "memory_selector_invalid_output_retries": 2,
67
+ "skill_selector_invalid_output_retries": 2,
68
+ "tool_selector_invalid_output_retries": 2
69
+ },
70
+ "optimizer": {
71
+ "candidate_count": 3,
72
+ "components": [
73
+ "task_interface_structuring",
74
+ "router_workflow",
75
+ "router_context"
76
+ ],
77
+ "selection_objective": "stability",
78
+ "min_accuracy_delta": 0.0,
79
+ "min_correct_gain": 1,
80
+ "max_forget_count": 0,
81
+ "min_format_compliance_rate": 0.0,
82
+ "min_historical_anchor_count": 1,
83
+ "min_historical_anchors_per_task": 1
84
+ },
85
+ "memory": {
86
+ "enabled": true,
87
+ "reset_on_start": true,
88
+ "abstract_mode": "llm",
89
+ "anchor_selection_mode": "llm",
90
+ "anchor_count_per_batch": 5,
91
+ "anchor_capacity_per_task": 15,
92
+ "skill_mode": "llm"
93
+ },
94
+ "prediction_cache": {
95
+ "enabled": true
96
+ },
97
+ "checkpoint": {
98
+ "enabled": true,
99
+ "resume": true
100
+ },
101
+ "execution": {
102
+ "read_only_workers": 1,
103
+ "run_train_final": false
104
+ },
105
+ "forgetting_probe": {
106
+ "enabled": false
107
+ },
108
+ "task_flow": [
109
+ {
110
+ "name": "train",
111
+ "phase": "train",
112
+ "train_split": "train",
113
+ "val_split": "validation",
114
+ "test_split": "test",
115
+ "continual": true,
116
+ "batchsize": 300,
117
+ "train_limit_per_task": 1,
118
+ "validation_limit_per_task": 1,
119
+ "test_limit_per_task": 1
120
+ },
121
+ {
122
+ "name": "test",
123
+ "phase": "test",
124
+ "test_split": "test",
125
+ "test_limit_per_task": 1
126
+ }
127
+ ]
128
+ }
data/README.md ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # External data layout
2
+
3
+ Datasets are not redistributed in this repository. After obtaining each dataset according to its license and the paper's preprocessing protocol, place the generated task-stream files and splits under this directory.
4
+
5
+ The task-stream manifests are included under `configs/`. Supply the external splits in this layout:
6
+
7
+ ```text
8
+ data/
9
+ └── datasets/
10
+ ├── musique/{train,validation,anchor,test}.jsonl
11
+ ├── proofwriter/{train,validation,anchor,test}.jsonl
12
+ ├── gsm8k/{train,validation,anchor,test}.jsonl
13
+ ├── hotpotqa/{train,validation,anchor,test}.jsonl
14
+ ├── coco_detection/{train,validation,test}.jsonl
15
+ ├── coco_caption/{train,validation,test}.jsonl
16
+ ├── refcoco_grounding/{train,validation,test}.jsonl
17
+ └── vqav2/{train,validation,test}.jsonl
18
+ ```
19
+
20
+ Prepare disjoint splits according to the paper protocol. The main run configurations apply per-task limits of 250 adaptation examples, 50 validation examples, and 500 test examples.
21
+
22
+ ## Reproducible split builders
23
+
24
+ The recovered textual-reasoning stream builder is integrated as
25
+ `scripts/build_textual_stream.py`. It preserves the experiment seed and the
26
+ task-specific stratified sampling protocol. The default output is `data/datasets/`:
27
+
28
+ ```bash
29
+ python scripts/build_textual_stream.py \
30
+ --source-root /path/to/existing/gsm8k-proofwriter-hotpotqa/splits \
31
+ --musique-root /path/to/musique/data
32
+ ```
33
+
34
+ For a task-stream manifest whose train files have not yet been split, use the
35
+ generic deterministic JSON/JSONL splitter. It resolves dataset paths the same
36
+ way as the runtime loader and does not overwrite files unless requested:
37
+
38
+ ```bash
39
+ python scripts/split_task_stream.py \
40
+ --config configs/my_taskstream.json \
41
+ --output-config configs/my_taskstream_split.json \
42
+ --val-ratio 0.2
43
+ ```
44
+
45
+ The recovered multimodal 500/100/500 manifest is available at
46
+ `configs/taskstream_multimodal_recovered_500_100_500.json`. Place its JSON split files under
47
+ `data/datasets_multimodal_500_100_500/`. Validation is explicitly reused as the
48
+ anchor split, matching the recovered experiment directory. Image paths inside
49
+ the external records may need relocation for the local COCO installation.
50
+
51
+ The exact sampled record files for the independent textual budget sweep were recovered from the experiment server. They are not redistributed here because benchmark data remain subject to their original licenses. Place them under `data/datasets_budget_300_80_80_600/` using the layout in `configs/taskstream_textual_budget_300_80_80_600.json`.
52
+
53
+ The recovered budget-sweep counts are 300 train, 80 validation, 80 anchor, and 600 test records for every task. For GSM8K, ProofWriter, and HotpotQA, the recovered anchor file is byte-identical to the validation file; MuSiQue uses separate validation and anchor samples. This is recorded explicitly rather than silently claiming all evaluator subsets are mutually disjoint. Test records remain separate.
54
+
55
+ The additional server also contains larger ordered source pools for the main textual and multimodal runs. Because no dedicated 250/50/500 manifest was present, the exact main-run sampled record IDs remain unconfirmed in this release instead of being inferred from those larger pools.
56
+
57
+ The included single-task textual stream expects:
58
+
59
+ ```text
60
+ data/
61
+ └── datasets/
62
+ └── musique/
63
+ ├── train.jsonl
64
+ ├── validation.jsonl
65
+ ├── test.jsonl
66
+ └── anchor.jsonl
67
+ ```
68
+
69
+ Task-stream JSON files can point to any project-relative layout. Avoid adding personal absolute paths to committed configurations.
docs/assets/capability-aware-results.png ADDED
docs/assets/controlled-forgetting.png ADDED
docs/assets/distillation-results.png ADDED
docs/assets/logo.png ADDED

Git LFS Details

  • SHA256: b7fc6ab88e09594e6d2415cd81400b4ee4886ea037fc1f39fd00a455839444bd
  • Pointer size: 131 Bytes
  • Size of remote file: 218 kB
docs/assets/method-overview.png ADDED

Git LFS Details

  • SHA256: 7097ad4def36cc817e6f68d068b959d8b259f717ddfa0ad9861591720f693998
  • Pointer size: 131 Bytes
  • Size of remote file: 663 kB
docs/assets/teaser.png ADDED

Git LFS Details

  • SHA256: 7d3f0f3b7d087bdbf10256991b6645d6e7b20431f9c1abb073c76b3f959f6f58
  • Pointer size: 131 Bytes
  • Size of remote file: 398 kB
examples/data/test.jsonl ADDED
@@ -0,0 +1 @@
 
 
1
+ {"id":"test-1","question":"What is 2+2?","answer":"4"}
examples/data/train.jsonl ADDED
@@ -0,0 +1 @@
 
 
1
+ {"id":"train-1","question":"What is 2+2?","answer":"4"}
examples/task_stream.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "tasks": [
3
+ {
4
+ "task_name": "arithmetic_smoke",
5
+ "task_type": "question_answering",
6
+ "modality": ["text"],
7
+ "splits": {
8
+ "train": "data/train.jsonl",
9
+ "test": "data/test.jsonl"
10
+ }
11
+ }
12
+ ]
13
+ }
experiments/HCL_ALFworld/README.md ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # HCL ALFWorld experiments
2
+
3
+ This module contains the ALFWorld experiment implementation, configurations, task sequences, and command-line entry point used with the unified HCL submission.
4
+
5
+ ## Installation
6
+
7
+ Python 3.9 through 3.12 is supported by the package metadata.
8
+
9
+ ```bash
10
+ python -m venv .venv
11
+ source .venv/bin/activate
12
+ python -m pip install -e '.[llm]'
13
+ ```
14
+
15
+ Use the `local` extra instead of `llm` when running a local Transformers model, or install both extras when both backends are needed.
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ hcl-alfworld --help
21
+ ```
22
+
23
+ Experiment definitions are under `configs/`, and the supplied domain-incremental task sequences are under `sequences/`. External ALFWorld assets and model credentials are intentionally not bundled. API credentials should be supplied through the environment variable named by the selected configuration's `api_key_env` field.
24
+
25
+ The `scripts/bootstrap.sh` helper documents the environment bootstrap expected by this module.
experiments/HCL_ALFworld/configs/ablations/no_capabilities.yaml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ extends: ../hcl.yaml
2
+ output_dir: outputs/ablation_no_capabilities_seed42
3
+ harness:
4
+ capabilities_enabled: false
5
+
experiments/HCL_ALFworld/configs/ablations/no_gate.yaml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ extends: ../hcl.yaml
2
+ output_dir: outputs/ablation_no_gate_seed42
3
+ harness:
4
+ gate_enabled: false
5
+
experiments/HCL_ALFworld/configs/ablations/no_memory.yaml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ extends: ../hcl.yaml
2
+ output_dir: outputs/ablation_no_memory_seed42
3
+ harness:
4
+ memory_enabled: false
5
+
experiments/HCL_ALFworld/configs/ablations/stability_gate.yaml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ extends: ../hcl_abstract_only.yaml
2
+ output_dir: outputs/hcl_abstract_only_stability_llm_seed42
3
+
4
+ harness:
5
+ # Reproduce the original whole-candidate gate used by completed historical runs.
6
+ gate_mode: stability
experiments/HCL_ALFworld/configs/ablations/static.yaml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ extends: ../hcl.yaml
2
+
3
+ # Frozen pass@1 baseline on the complete official valid_unseen split.
4
+ run_mode: standard_evaluation
5
+ output_dir: outputs/ablation_static_llm_seed42
6
+
7
+ standard_evaluation:
8
+ game_source: full_split
9
+ split: valid_unseen
10
+ expected_game_count: 134
11
+
12
+ harness:
13
+ updates_enabled: false
14
+ # The frozen baseline evaluates the base action model without learned or
15
+ # environment-grounded capability descriptions in its prompt.
16
+ capabilities_enabled: false
experiments/HCL_ALFworld/configs/baselines/alfworld_standard.yaml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ extends: ../hcl.yaml
2
+
3
+ # Frozen pass@1 evaluation on the complete official ALFWorld valid_unseen split.
4
+ run_mode: standard_evaluation
5
+ output_dir: outputs/baseline_alfworld_standard_seed42
6
+
7
+ standard_evaluation:
8
+ game_source: full_split
9
+ split: valid_unseen
10
+ expected_game_count: 134
11
+
12
+ harness:
13
+ updates_enabled: false