dsh-harbor-evolution 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -6
- package/index.js +69 -7
- package/lib/candidate.js +29 -2
- package/lib/client.js +321 -0
- package/lib/dashboard.js +266 -0
- package/lib/evolution.js +105 -26
- package/lib/service.js +67 -0
- package/lib/setup.js +7 -1
- package/lib/web.js +76 -0
- package/package.json +23 -4
- package/skills/evolve-agent-with-harbor/SKILL.md +105 -78
- package/skills/evolve-agent-with-harbor/references/initialization.md +89 -83
|
@@ -1,127 +1,154 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: evolve-agent-with-harbor
|
|
3
|
-
description:
|
|
3
|
+
description: Architect, initialize, diagnose, evaluate, compare, and safely improve a DeepSeek Harness business Agent with Harbor Evaluation Stack, Dataset Manifest, Context v2, Architecture Doctor, and Promotion Gate. Use for Harbor setup, Agent self-evolution, vertical-search evaluation loops, evaluation architecture review, failed Job diagnosis, Candidate optimization, evaluator meta-evaluation, or promotion decisions.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Evolve Agent With Harbor
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Build a reproducible improvement loop around three boundaries:
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
- **Generator/Candidate**: the immutable DSH Agent composition being improved.
|
|
11
|
+
- **Evaluator/Evaluation Stack**: Integration, Renderer, Evaluator, Rubric, Diagnoser, Optimizer, Runner, Reporter, and Judge identities.
|
|
12
|
+
- **Optimizer**: proposes one evidence-linked Candidate change; it never controls the final Gate.
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
Treat Harbor as the experiment boundary. Deployment, CI/CD, and Champion replacement remain external actions requiring separate authority.
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
- **Initialize**: create the missing Candidate, Dataset, and Promotion Policy structure.
|
|
16
|
-
- **Evaluate**: snapshot and run one Candidate.
|
|
17
|
-
- **Compare**: compare an existing baseline Job with a new Candidate Job.
|
|
18
|
-
- **Evolve**: run the complete baseline, diagnosis, controlled change, regression, and gate loop.
|
|
19
|
-
- **Meta-evaluate**: optimize a Verifier or Judge against human ground truth rather than optimizing the business Agent.
|
|
16
|
+
## Select the narrowest mode
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
- **Clarify**: define progress, identities, constraints, and promotion ownership.
|
|
19
|
+
- **Architecture**: inspect role boundaries and run `harbor_evolution_doctor`.
|
|
20
|
+
- **Initialize**: read `references/initialization.md`, obtain explicit values, then call `harbor_evolution_init`.
|
|
21
|
+
- **Diagnostic**: investigate failures without making a promotion claim.
|
|
22
|
+
- **Promotion**: run a `promotion-eligible` Job and apply the deterministic Gate.
|
|
23
|
+
- **Evolve**: baseline → diagnose → one controlled change → regression Job → Gate.
|
|
24
|
+
- **Meta-evaluate**: improve an Evaluator/Judge against independently maintained human GT.
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
Do not turn an inspection or diagnostic request into Agent mutation or deployment.
|
|
24
27
|
|
|
25
|
-
|
|
28
|
+
## Clarify before initializing
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
Inspect the workspace first. Resolve only material gaps, preferably in no more than three grouped questions. Obtain:
|
|
28
31
|
|
|
29
|
-
1. Business behavior and
|
|
30
|
-
2.
|
|
31
|
-
3.
|
|
32
|
-
4.
|
|
33
|
-
5.
|
|
34
|
-
6.
|
|
35
|
-
7.
|
|
36
|
-
8. Promotion owner and external CI/CD
|
|
32
|
+
1. Business behavior, failure pattern, and Candidate path/product identity.
|
|
33
|
+
2. Dataset path/id/version, task population, holdout boundary, and side-effect sandbox.
|
|
34
|
+
3. Evaluation Stack id/version and one entry for every required role.
|
|
35
|
+
4. Judge provider/model/version/parameters without credentials.
|
|
36
|
+
5. Evaluation Contract id/version, primary metric and direction, diagnostic metrics, groups, and hard requirements.
|
|
37
|
+
6. Promotion Policy id/version, delta, minimums, maximums, non-regression metrics, and metric directions.
|
|
38
|
+
7. Baseline Job/Candidate, repeat policy, run budget, stopping rule, allowed mutation surface, and forbidden files.
|
|
39
|
+
8. Promotion owner and external CI/CD handoff.
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
Never invent GT, a Judge model, reward definitions, thresholds, credentials, or deployment authority. Offer draft values only when clearly labeled and accepted.
|
|
39
42
|
|
|
40
|
-
##
|
|
43
|
+
## Enforce the strict architecture
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
Require these before every Job:
|
|
43
46
|
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
- Version the Promotion Policy. A policy or Verifier change requires a fresh baseline.
|
|
49
|
-
- Use test accounts, mocks, or sandboxes for business side effects.
|
|
47
|
+
- `candidate-manifest.json` verified against the Candidate files.
|
|
48
|
+
- `dataset-manifest.json` with unique task ids, non-empty instructions, safe paths, and a matching source digest.
|
|
49
|
+
- `.harbor/evaluation-stack.yml` with all eight roles, Judge identity, and Evaluation Contract.
|
|
50
|
+
- Evaluation Context v2 preview.
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
Before a formal Job, call in order:
|
|
52
53
|
|
|
53
|
-
|
|
54
|
+
1. `harbor_candidate_snapshot`
|
|
55
|
+
2. `harbor_dataset_validate`
|
|
56
|
+
3. `harbor_evolution_doctor`
|
|
57
|
+
4. `harbor_context_preview`
|
|
54
58
|
|
|
55
|
-
|
|
59
|
+
Do not launch a `promotion-eligible` Job when Doctor reports an error, no comparable baseline exists, or `fresh_baseline_required` is true. A diagnostic Job may investigate architecture warnings, but still requires a valid Candidate, Dataset Manifest, Evaluation Stack, and Context v2.
|
|
56
60
|
|
|
57
|
-
|
|
61
|
+
Keep Runner orchestration-only. Treat these as architecture errors:
|
|
58
62
|
|
|
59
|
-
|
|
63
|
+
- Runner combines HTTP integration, rubric, and Judge logic.
|
|
64
|
+
- Runner makes a promotion/Champion decision.
|
|
60
65
|
|
|
61
|
-
|
|
66
|
+
## Initialize without overwriting
|
|
62
67
|
|
|
63
|
-
|
|
68
|
+
Read `references/initialization.md` when required files are missing. After the user accepts all required identities and metric semantics, call `harbor_evolution_init`. It preserves existing files and creates explicit placeholders that still require business implementation.
|
|
64
69
|
|
|
65
|
-
|
|
70
|
+
After initialization:
|
|
66
71
|
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
- Dataset
|
|
70
|
-
-
|
|
71
|
-
|
|
72
|
+
- Replace placeholders with real role implementations.
|
|
73
|
+
- Pin Candidate dependencies and keep secrets runtime-injected.
|
|
74
|
+
- Re-snapshot the Dataset after intentional Dataset changes.
|
|
75
|
+
- Run Doctor again; initialization success is not evaluation readiness.
|
|
76
|
+
|
|
77
|
+
## Determine comparability correctly
|
|
78
|
+
|
|
79
|
+
Use the Context v2 `digest`, not timestamps or Job names.
|
|
80
|
+
|
|
81
|
+
A fresh baseline is required when any of these change:
|
|
82
|
+
|
|
83
|
+
- Dataset id, version, or source digest.
|
|
84
|
+
- Integration, Renderer, Evaluator, or Rubric identity.
|
|
85
|
+
- Judge provider, model, version, or parameters.
|
|
86
|
+
- Runner marked `semantic: true`.
|
|
87
|
+
- Harbor or integration runtime identity.
|
|
72
88
|
|
|
73
|
-
|
|
89
|
+
Diagnoser, Optimizer, Reporter, and non-semantic Runner changes remain comparable but change the full audit digest. A Candidate digest must differ from the baseline Candidate digest. Promotion Policy is reapplied as a separately versioned decision contract; changing it does not rewrite Evaluation Context.
|
|
74
90
|
|
|
75
|
-
|
|
91
|
+
## Run the evolution loop
|
|
76
92
|
|
|
77
|
-
|
|
93
|
+
### Establish a baseline
|
|
78
94
|
|
|
79
|
-
|
|
95
|
+
Call `harbor_eval_run` with Candidate, Dataset, Stack, explicit `mode`, and a Policy for `promotion-eligible`. Preserve Candidate, Dataset, Stack, Context, Doctor, Contract, Trial assessments, Population report, Summary, and later Promotion report.
|
|
96
|
+
|
|
97
|
+
Never cherry-pick stochastic runs. Apply the accepted repeat/seed policy symmetrically.
|
|
98
|
+
|
|
99
|
+
### Diagnose before changing
|
|
100
|
+
|
|
101
|
+
Use `harbor_eval_result` only to reopen a stable Job summary. Inspect Trial assessments and classify each failure as:
|
|
102
|
+
|
|
103
|
+
- Candidate capability or policy.
|
|
104
|
+
- Tool-call, invalid search, citation, or output-contract failure.
|
|
105
|
+
- Dataset, Evaluator, Rubric, Judge, or GT defect.
|
|
106
|
+
- Infrastructure, dependency, permission, timeout, or deployment failure.
|
|
107
|
+
- Stochastic uncertainty.
|
|
80
108
|
|
|
81
|
-
|
|
109
|
+
Do not optimize the Candidate around broken evaluation infrastructure. Never leak holdout answers or GT into Candidate prompts, skills, tools, or memory.
|
|
82
110
|
|
|
83
|
-
|
|
111
|
+
### Propose one controlled change
|
|
84
112
|
|
|
85
|
-
|
|
113
|
+
Require every optimization hypothesis to include:
|
|
86
114
|
|
|
87
|
-
|
|
115
|
+
- Evidence references to Job/Trial/findings.
|
|
116
|
+
- Root-cause classification.
|
|
117
|
+
- Expected metric effect.
|
|
118
|
+
- Exact mutation surface and forbidden surface.
|
|
119
|
+
- Rollback condition.
|
|
88
120
|
|
|
89
|
-
|
|
121
|
+
Create a new immutable Candidate version; never edit the baseline in place. Stop when the new digest is unchanged.
|
|
90
122
|
|
|
91
|
-
-
|
|
92
|
-
- `REJECT`: keep the current Champion and explain each failed criterion.
|
|
123
|
+
### Re-run and gate
|
|
93
124
|
|
|
94
|
-
|
|
125
|
+
Call `harbor_context_preview`; establish a fresh baseline if needed. Run the Candidate under the same comparable Context. Then call `harbor_candidate_compare`.
|
|
95
126
|
|
|
96
|
-
|
|
127
|
+
- `PROMOTE`: recommend external promotion with the complete evidence package.
|
|
128
|
+
- `REJECT`: keep the Champion and explain every structured reason code.
|
|
97
129
|
|
|
98
|
-
|
|
99
|
-
- Baseline and Candidate must share the same evaluation-context digest.
|
|
100
|
-
- Keep Candidate, evaluation context, policy, summaries, trajectories, and gate report as checkpoints.
|
|
101
|
-
- Separate infrastructure failures from capability failures in every report.
|
|
102
|
-
- Change one causal factor per iteration unless the user explicitly accepts a bundled experiment.
|
|
103
|
-
- Use hidden or held-out evaluation data for promotion; do not let the Optimizer train directly on it.
|
|
104
|
-
- Report uncertainty when sample size or stochastic variance prevents a stable conclusion.
|
|
130
|
+
Never bypass `INFRASTRUCTURE_EXCEPTION_PRESENT`, `ARTIFACT_SCHEMA_INVALID`, Dataset/Stack/Rubric/Judge mismatch, or non-regression failures.
|
|
105
131
|
|
|
106
132
|
## Handle evaluator meta-evaluation
|
|
107
133
|
|
|
108
|
-
|
|
134
|
+
Rotate roles when improving the Evaluator:
|
|
109
135
|
|
|
110
|
-
- Candidate is
|
|
111
|
-
- Dataset contains
|
|
112
|
-
- Metrics
|
|
113
|
-
-
|
|
136
|
+
- Candidate is the Evaluator/Rubric/Judge version.
|
|
137
|
+
- Dataset contains independently maintained human GT.
|
|
138
|
+
- Metrics include RCR, bias, variance, calibration, latency, and cost as appropriate.
|
|
139
|
+
- The Candidate evaluator must not author its own GT or final promotion decision.
|
|
114
140
|
|
|
115
|
-
|
|
141
|
+
Manage evaluator Candidates and meta-evaluation Jobs with the same Manifest, Context v2, Doctor, evidence, and Gate rules.
|
|
116
142
|
|
|
117
143
|
## Report each cycle
|
|
118
144
|
|
|
119
|
-
Return
|
|
145
|
+
Return:
|
|
120
146
|
|
|
121
|
-
- Accepted
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
- Representative
|
|
126
|
-
-
|
|
127
|
-
-
|
|
147
|
+
- Accepted Evaluation Contract and unresolved assumptions.
|
|
148
|
+
- Candidate, Dataset, Stack, Context, Judge, and Policy identities.
|
|
149
|
+
- Comparable baseline or fresh-baseline decision.
|
|
150
|
+
- Metric deltas, exception counts, Population groups, and artifact validation.
|
|
151
|
+
- Representative Trial evidence and root-cause classes.
|
|
152
|
+
- Controlled change hypothesis and mutation surface.
|
|
153
|
+
- Gate decision with exact reason codes.
|
|
154
|
+
- External CI/CD action still required.
|
|
@@ -1,114 +1,120 @@
|
|
|
1
|
-
# Initialization
|
|
1
|
+
# Strict Project Initialization
|
|
2
2
|
|
|
3
|
-
Load this reference only when the
|
|
3
|
+
Load this reference only when the project is missing the Evaluation Stack structure or the user asks to initialize it.
|
|
4
4
|
|
|
5
|
-
## Readiness
|
|
5
|
+
## Readiness worksheet
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Resolve every value before calling `harbor_evolution_init`:
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
| Field | Required meaning |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `datasetPath` | Existing Harbor Dataset inside `projectRoot` |
|
|
12
|
+
| `stackId` / `stackVersion` | Stable identity of the complete evaluation architecture |
|
|
13
|
+
| `datasetId` / `datasetVersion` | Stable identity of task population and GT boundary |
|
|
14
|
+
| `contractId` / `contractVersion` | Stable metric semantics |
|
|
15
|
+
| `primaryMetric` / `primaryDirection` | Exact reward key and `maximize` or `minimize` |
|
|
16
|
+
| Judge provider/model/version | Reproducible Judge identity, never credentials |
|
|
17
|
+
| Policy id/version | Stable Gate identity |
|
|
18
|
+
| `minImprovement` | Accepted primary-metric delta |
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
Also establish diagnostic metrics, min/max thresholds, non-regression metrics, mutation surface, repeat policy, and promotion owner. The initializer creates a minimal Policy; update its explicit placeholders before a formal Gate.
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
| Contract field | Example | Why it matters |
|
|
20
|
-
| --- | --- | --- |
|
|
21
|
-
| Target behavior | Produce cited research answers | Defines task success |
|
|
22
|
-
| Candidate identity | `deep-research-agent` | Keeps v1/v2 in one product line |
|
|
23
|
-
| Candidate path | `candidates/deep-research/v1` | Defines what is snapshotted |
|
|
24
|
-
| Dataset path | `datasets/deep-research-regression` | Fixes tasks and Verifier |
|
|
25
|
-
| Primary metric | `reward` | Ranks Candidates |
|
|
26
|
-
| Minimums | completion and citation >= 0.95 | Prevents unsafe tradeoffs |
|
|
27
|
-
| Non-regression | tool success, latency | Protects existing capability |
|
|
28
|
-
| Mutation surface | prompt and search plugin only | Controls causal attribution |
|
|
29
|
-
| Repeat policy | 5 fixed-seed runs | Controls stochastic variance |
|
|
30
|
-
| Promotion owner | CI gate plus human approval | Keeps deployment external |
|
|
31
|
-
|
|
32
|
-
## Recommended layout
|
|
22
|
+
## Generated layout
|
|
33
23
|
|
|
34
24
|
```text
|
|
35
|
-
|
|
25
|
+
projectRoot/
|
|
26
|
+
├── .harbor/
|
|
27
|
+
│ ├── evolution.yml
|
|
28
|
+
│ └── evaluation-stack.yml
|
|
36
29
|
├── candidates/
|
|
37
|
-
│ └── <agent-id>/
|
|
38
|
-
│ ├── v1/
|
|
39
|
-
│ │ ├── cordis.yml
|
|
40
|
-
│ │ ├── package.json
|
|
41
|
-
│ │ ├── package-lock.json
|
|
42
|
-
│ │ └── business plugins...
|
|
43
|
-
│ └── v2/
|
|
44
30
|
├── datasets/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
├──
|
|
53
|
-
|
|
31
|
+
├── integrations/default.py
|
|
32
|
+
├── renderers/default.py
|
|
33
|
+
├── evaluators/default.py
|
|
34
|
+
├── rubrics/default.md
|
|
35
|
+
├── diagnosers/default.py
|
|
36
|
+
├── optimizers/default.py
|
|
37
|
+
├── runners/harbor.py
|
|
38
|
+
├── reporters/default.py
|
|
39
|
+
├── policies/promotion.json
|
|
54
40
|
└── jobs/
|
|
55
41
|
```
|
|
56
42
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
##
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
43
|
+
The initializer never overwrites existing files. `created` and `preserved` in its result are part of the audit. Placeholder components provide identities, not a finished business evaluator.
|
|
44
|
+
|
|
45
|
+
## Evaluation Stack shape
|
|
46
|
+
|
|
47
|
+
```yaml
|
|
48
|
+
schema_version: 1
|
|
49
|
+
stack_id: vertical-search
|
|
50
|
+
version: 1.0.0
|
|
51
|
+
components:
|
|
52
|
+
integration: { id: search-api, version: 1.0.0, entry: integrations/default.py }
|
|
53
|
+
renderer: { id: search-renderer, version: 1.0.0, entry: renderers/default.py }
|
|
54
|
+
evaluator: { id: search-evaluator, version: 1.0.0, entry: evaluators/default.py }
|
|
55
|
+
rubric: { id: search-rubric, version: 1.0.0, entry: rubrics/default.md }
|
|
56
|
+
diagnoser: { id: search-diagnoser, version: 1.0.0, entry: diagnosers/default.py }
|
|
57
|
+
optimizer: { id: search-optimizer, version: 1.0.0, entry: optimizers/default.py }
|
|
58
|
+
runner: { id: harbor-runner, version: 1.0.0, entry: runners/harbor.py, semantic: false }
|
|
59
|
+
reporter: { id: search-reporter, version: 1.0.0, entry: reporters/default.py }
|
|
60
|
+
judge:
|
|
61
|
+
provider: accepted-provider
|
|
62
|
+
model: accepted-model
|
|
63
|
+
version: pinned-version
|
|
64
|
+
parameters: { temperature: 0 }
|
|
65
|
+
evaluation_contract:
|
|
66
|
+
contract_id: vertical-search
|
|
67
|
+
version: 1.0.0
|
|
68
|
+
primary_metric: reward
|
|
69
|
+
metrics:
|
|
70
|
+
- { id: reward, label: Overall reward, direction: maximize }
|
|
71
|
+
- { id: valid_search_rate, label: Valid search rate, direction: maximize }
|
|
72
|
+
- { id: citation_accuracy, label: Citation accuracy, direction: maximize }
|
|
73
|
+
```
|
|
70
74
|
|
|
71
|
-
|
|
75
|
+
Do not duplicate Evaluator logic inside each Task. Reference one Stack Evaluator from task metadata when task-specific routing is needed.
|
|
72
76
|
|
|
73
|
-
|
|
77
|
+
## Dataset rules
|
|
74
78
|
|
|
75
|
-
|
|
76
|
-
- `instruction.md`: the behavior requested from the Candidate.
|
|
77
|
-
- `environment/Dockerfile`: a reproducible sandbox with required runtime dependencies.
|
|
78
|
-
- `tests/test.sh`: the verifier entrypoint.
|
|
79
|
-
- Verifier code that writes primary and diagnostic metrics to Harbor's reward output.
|
|
79
|
+
Keep `dataset-manifest.json` at Dataset root. Generate it through initialization or `harbor-dsh dataset snapshot`; do not hand-edit its digest. Validation rejects:
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
- Missing/duplicate Task ids or empty instructions.
|
|
82
|
+
- Duplicate normalized queries.
|
|
83
|
+
- Missing/out-of-root paths or symlinks.
|
|
84
|
+
- Source/file counts that no longer match.
|
|
85
|
+
- Secret-bearing metadata fields.
|
|
82
86
|
|
|
83
|
-
|
|
87
|
+
Intentional Dataset changes require a new Dataset version, a new snapshot, and a fresh baseline.
|
|
84
88
|
|
|
85
|
-
|
|
89
|
+
## Promotion Policy v2
|
|
86
90
|
|
|
87
91
|
```json
|
|
88
92
|
{
|
|
89
|
-
"schema_version":
|
|
93
|
+
"schema_version": 2,
|
|
94
|
+
"policy_id": "vertical-search",
|
|
95
|
+
"version": "1.0.0",
|
|
90
96
|
"primary_metric": "reward",
|
|
97
|
+
"primary_direction": "maximize",
|
|
91
98
|
"min_improvement": 0.05,
|
|
92
|
-
"minimums": {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
"
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
],
|
|
99
|
-
"non_regression_tolerance": 0.0
|
|
99
|
+
"minimums": { "citation_accuracy": 0.9 },
|
|
100
|
+
"maximums": { "latency_seconds": 20 },
|
|
101
|
+
"non_regression": ["valid_search_rate"],
|
|
102
|
+
"metric_directions": { "valid_search_rate": "maximize" },
|
|
103
|
+
"non_regression_tolerance": 0.0,
|
|
104
|
+
"hard_requirements": ["exception_free", "artifact_schema_valid", "doctor_error_free"]
|
|
100
105
|
}
|
|
101
106
|
```
|
|
102
107
|
|
|
103
|
-
|
|
108
|
+
Use business-accepted thresholds. Do not assume all metrics are `/10`, maximized, or universal across domains.
|
|
104
109
|
|
|
105
|
-
##
|
|
110
|
+
## Handoff before the first Job
|
|
106
111
|
|
|
107
|
-
|
|
112
|
+
Show the user:
|
|
108
113
|
|
|
109
|
-
1.
|
|
110
|
-
2.
|
|
111
|
-
3.
|
|
112
|
-
4.
|
|
114
|
+
1. Resolved Candidate, Dataset, Stack, Policy, and Jobs paths.
|
|
115
|
+
2. Role identities and which ones affect reward comparability.
|
|
116
|
+
3. Metric directions, thresholds, groups, and hard requirements.
|
|
117
|
+
4. Holdout, mutation, side-effect, repeat, and deployment boundaries.
|
|
118
|
+
5. Doctor findings and Context preview.
|
|
113
119
|
|
|
114
|
-
|
|
120
|
+
Start with a baseline. Do not create Candidate v2 until baseline evidence supports one controlled hypothesis.
|