@r1z4x/tezgah 1.5.1 → 1.7.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/CHANGELOG.md +126 -1
- package/MANIFEST +11 -0
- package/README.md +6 -3
- package/bin/consult +13 -10
- package/bin/tezgah-docs +18 -16
- package/bin/tezgah-doctor +152 -0
- package/bin/tezgah-research +286 -12
- package/bin/tezgah-route +48 -1
- package/bin/tezgah-setup +27 -14
- package/bin/tezgah-task +771 -46
- package/bin/tezgah-taste +48 -10
- package/docs/architecture.md +7 -4
- package/docs/citations-baseline.json +1 -1
- package/docs/clarity-baseline.json +5 -5
- package/docs/contract.md +112 -25
- package/docs/evidence.md +201 -28
- package/docs/feature-audit.md +25 -4
- package/docs/gate.md +70 -33
- package/docs/glossary.md +4 -4
- package/docs/hosts.md +8 -8
- package/docs/index.json +30 -10
- package/docs/judge.md +9 -3
- package/docs/models.md +35 -2
- package/docs/operations.md +103 -3
- package/docs/research.md +392 -13
- package/docs/skills.md +24 -6
- package/docs/status-line.md +5 -5
- package/docs/testing.md +2 -2
- package/docs/vision.md +12 -4
- package/hooks/hooks.json +2 -2
- package/hooks/lang/en.json +323 -0
- package/hooks/lang/tr.json +344 -0
- package/hooks/projects-posttooluse.py +24 -5
- package/hooks/projects-pretooluse.py +9 -4
- package/hooks/projects-stop.py +28 -16
- package/hooks/tezgah_agents.py +29 -9
- package/hooks/tezgah_clarity.py +7 -3
- package/hooks/tezgah_components.py +2 -1
- package/hooks/tezgah_context.py +460 -390
- package/hooks/tezgah_gate.py +640 -104
- package/hooks/tezgah_integrity.py +1480 -197
- package/hooks/tezgah_models.py +337 -15
- package/hooks/tezgah_paths.py +103 -10
- package/hooks/tezgah_policy.py +286 -130
- package/hooks/tezgah_product.py +107 -0
- package/hooks/tezgah_rank.py +29 -27
- package/hooks/tezgah_replay.py +200 -30
- package/hooks/tezgah_research.py +1297 -12
- package/hooks/tezgah_skill_pick.py +58 -17
- package/hooks/tezgah_stopspec.py +7 -0
- package/hooks/tezgah_store.py +74 -27
- package/hooks/tezgah_task.py +917 -8
- package/hosts/codex/hook.py +9 -10
- package/hosts/cursor/hook.py +21 -14
- package/hosts/dsh/hooks.json +2 -2
- package/hosts/omp/hook.py +44 -23
- package/hosts/omp/tezgah-hook.ts.in +93 -7
- package/hosts/opencode/plugins/tezgah.js +119 -39
- package/output-styles/tezgah.md +76 -42
- package/package.json +1 -1
- package/skills/analyze-app/SKILL.md +57 -0
- package/skills/design-contract/EVALS.md +24 -1
- package/skills/design-contract/SKILL.md +17 -1
- package/skills/design-contract/data-views.md +86 -0
- package/skills/feature-audit/SKILL.md +32 -3
- package/skills/i-have-adhd/EVALS.md +22 -2
- package/skills/i-have-adhd/SKILL.md +12 -5
- package/skills/plan-add/EVALS.md +8 -8
- package/skills/plan-add/SKILL.md +22 -21
- package/skills/plan-sync/EVALS.md +2 -2
- package/skills/plan-sync/SKILL.md +14 -8
- package/skills/pm-frameworks/SKILL.md +6 -0
- package/skills/ponytail/EVALS.md +21 -2
- package/skills/ponytail/SKILL.md +4 -4
- package/skills/product-analysis/EVALS.md +23 -1
- package/skills/product-analysis/SKILL.md +50 -11
- package/skills/product-flow/EVALS.md +81 -0
- package/skills/product-flow/SKILL.md +91 -0
- package/skills/research/SKILL.md +99 -2
- package/skills/tezgah-contract/EVALS.md +52 -7
- package/skills/tezgah-contract/SKILL.md +204 -85
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Evals
|
|
2
|
+
|
|
3
|
+
Three inputs a session can be handed where this skill could misfire, and what a
|
|
4
|
+
good answer has to contain. Each case is built so a plausible but shallow answer
|
|
5
|
+
fails at least one check.
|
|
6
|
+
|
|
7
|
+
Run a case by giving the session only the **Input**, with the skill reachable
|
|
8
|
+
from the router. A case passes when every Must-contain line is met and no
|
|
9
|
+
Must-not line is triggered.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Case 1 - The trap: drawing the dashboard before the flow says so
|
|
14
|
+
|
|
15
|
+
**Input**
|
|
16
|
+
> Bu veriye uygun bir metric dashboard tasarla. (attached: `sales.csv` - date,
|
|
17
|
+
> region, product, orders, revenue, returns)
|
|
18
|
+
|
|
19
|
+
**Must contain**
|
|
20
|
+
- [ ] Picks one kebab-case topic and runs `tezgah-research next --topic <t>` before any layout, and does the first missing step it names
|
|
21
|
+
- [ ] Writes each step's note under its `## <step>` heading in `.tezgah/analysis/<t>/flow.md`, each naming the note it rests on
|
|
22
|
+
- [ ] Takes the metrics from `## metrics` notes that rest on a need under `## research` (goal, signal, definition, window, baseline, logged), written before the design step
|
|
23
|
+
- [ ] Gives the decision under `## decision` a metric, a threshold and an `observe after: YYYY-MM-DD` date
|
|
24
|
+
- [ ] Names that decision in `.tezgah/analysis/<t>/spec.md` and in the design-contract component
|
|
25
|
+
|
|
26
|
+
**Must not**
|
|
27
|
+
- Lay out charts for the CSV's columns before a metric and a decision exist
|
|
28
|
+
- Skip a step whose artifact is missing because the data seems to answer it
|
|
29
|
+
|
|
30
|
+
**Why this case** - the skill says to "find the first step whose artifact is
|
|
31
|
+
missing" and do "that step, and only that step". A data file pulls toward drawing
|
|
32
|
+
its columns at once.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Case 2 - The trap: a research worker writing the flow's artifacts
|
|
37
|
+
|
|
38
|
+
**Input**
|
|
39
|
+
> We want to add saved searches to the app. Spin up research on how users
|
|
40
|
+
> re-run searches and take it from there.
|
|
41
|
+
|
|
42
|
+
**Must contain**
|
|
43
|
+
- [ ] Runs `tezgah-research next --topic <t> --flow feature` (no metric is in view) and starts from the first missing step
|
|
44
|
+
- [ ] Briefs any research worker to report its sources and insights - class, source with its read date, quote, statement, confidence - in its result
|
|
45
|
+
- [ ] Writes those findings under `## research` in `flow.md` from the main session
|
|
46
|
+
|
|
47
|
+
**Must not**
|
|
48
|
+
- Let a worker or subagent write `flow.md` or `spec.md` itself
|
|
49
|
+
- Start the forward spec before `## decision` exists
|
|
50
|
+
|
|
51
|
+
**Why this case** - "Who writes" says "Only the main session writes the flow's
|
|
52
|
+
artifacts". A delegated research step pulls toward letting the worker write its
|
|
53
|
+
own findings.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Case 3 - The trap: "just build the chart"
|
|
58
|
+
|
|
59
|
+
**Input**
|
|
60
|
+
> Skip the process, just build the chart of weekly revenue. No need for metrics
|
|
61
|
+
> or goals.
|
|
62
|
+
|
|
63
|
+
**Must contain**
|
|
64
|
+
- [ ] Runs `next` for the topic and states which steps are missing before the build, naming the metric and the decision
|
|
65
|
+
- [ ] Says the chart has no goal above it, and asks for the goal or writes the gap down as a step still missing
|
|
66
|
+
- [ ] Offers the shortest route through the missing steps, one note each, rather than refusing
|
|
67
|
+
|
|
68
|
+
**Must not**
|
|
69
|
+
- Build the chart and report the flow as done
|
|
70
|
+
- Claim the metric or decision steps do not apply to this ask
|
|
71
|
+
|
|
72
|
+
**Why this case** - every step's artifact "names the earlier artifact it rests
|
|
73
|
+
on": a built chart with no metric and no decision leaves the earlier steps missing
|
|
74
|
+
however good the chart is.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## What these do not prove
|
|
79
|
+
|
|
80
|
+
These are trap cases for a human or judge rater, not a behavioural measurement.
|
|
81
|
+
`skills/research` owns the standard a claim about behaviour has to meet.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: product-flow
|
|
3
|
+
description: >
|
|
4
|
+
Carries a new product capability from evidence to a measured result: it walks
|
|
5
|
+
the nine steps of the flow in order - research, metrics, assumptions,
|
|
6
|
+
decision, instrumentation, forward spec, design, build, re-measure - and does
|
|
7
|
+
the first step whose artifact is missing with the skill that step names, so
|
|
8
|
+
each hand-off is a written artifact that names the one before it instead of a
|
|
9
|
+
memory. Use when a session must design a metric dashboard, a new metric or a
|
|
10
|
+
new feature from data or an ask, and carry it from research to re-measure. Not
|
|
11
|
+
for auditing an existing feature - use `feature-audit`.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# product-flow
|
|
15
|
+
|
|
16
|
+
A new product capability - a dashboard over a data file, a metric, a feature
|
|
17
|
+
someone asked for - drifts when its steps live in the session's head: the chart
|
|
18
|
+
gets drawn before anyone says which goal it serves, and nobody comes back to see
|
|
19
|
+
whether the decision held. This skill keeps the sequence written down: the steps
|
|
20
|
+
below, in order, each leaving an artifact on disk that names the artifact it
|
|
21
|
+
rests on.
|
|
22
|
+
|
|
23
|
+
## When to use it
|
|
24
|
+
|
|
25
|
+
- A new capability from data: "bu veriye uygun metric dashboard tasarla", a CSV or
|
|
26
|
+
export with "what should we track".
|
|
27
|
+
- A new capability from an ask: "add a feature that ...", "we need a metric for ...".
|
|
28
|
+
- A topic already in progress, to see what is left of it.
|
|
29
|
+
|
|
30
|
+
Not for an existing feature's audit (`feature-audit`), and not for a product-wide
|
|
31
|
+
analysis with no new capability in view (`product-analysis`). Both are steps this
|
|
32
|
+
flow can hand off to.
|
|
33
|
+
|
|
34
|
+
## The steps
|
|
35
|
+
|
|
36
|
+
Pick one kebab-case topic for the capability, such as `signup-dashboard`. Every
|
|
37
|
+
artifact of this capability lives under `.tezgah/analysis/<topic>/`: the notes of
|
|
38
|
+
steps 1-5 and 9 in `flow.md`, one `## <step>` heading per step, and the forward
|
|
39
|
+
spec in `spec.md`. Each step's artifact names the earlier artifact it rests on.
|
|
40
|
+
|
|
41
|
+
1. **research** (`research` skill). At least one external source - its URL or
|
|
42
|
+
title, the date it was read and the passage it says - and the user need or
|
|
43
|
+
insight that source supports.
|
|
44
|
+
2. **metrics** (`product-analysis`). Each metric rests on a need from step 1 and
|
|
45
|
+
states its goal, signal, definition, window, baseline, and whether it is
|
|
46
|
+
logged today.
|
|
47
|
+
3. **assumptions** (`product-analysis`). The assumptions the decision will rest
|
|
48
|
+
on, each one a sentence that could turn out false.
|
|
49
|
+
4. **decision** (`product-analysis`). A decision that names one of the topic's
|
|
50
|
+
metrics, the threshold that would change it, and the date after which it is
|
|
51
|
+
re-measured (observe after).
|
|
52
|
+
5. **instrumentation** (`product-analysis`). Every metric the decision names is
|
|
53
|
+
logged; a metric that is not logged yet gets the event or query that will log
|
|
54
|
+
it.
|
|
55
|
+
6. **forward-spec** (`feature-audit`, forward mode). `.tezgah/analysis/<topic>/spec.md`,
|
|
56
|
+
naming the decision it implements.
|
|
57
|
+
7. **design** (`design-contract`). A component in `.tezgah/design-contract.md`
|
|
58
|
+
that names the decision it serves.
|
|
59
|
+
8. **build** (`design-contract`). Judged by the design check
|
|
60
|
+
(`tezgah-design check`) and the Stop UI rule, not by this flow.
|
|
61
|
+
9. **re-measure** (`analyze-app`). Once the decision's observe-after date has
|
|
62
|
+
passed, measure the decision's metric again and write the result and what it
|
|
63
|
+
means for the decision.
|
|
64
|
+
|
|
65
|
+
A feature ask that names no metric skips steps 2 and 5, unless the topic already
|
|
66
|
+
holds a metric.
|
|
67
|
+
|
|
68
|
+
## The loop
|
|
69
|
+
|
|
70
|
+
The step source is `~/.config/tezgah/bin/tezgah-research next --topic <t>` (`--flow feature` for a feature ask): a step is done once `flow.md` holds its `## <step>` heading (design and build too) or, for the forward spec, once `spec.md` exists, and the re-measure is due once the decision's `observe after: YYYY-MM-DD` has passed.
|
|
71
|
+
|
|
72
|
+
1. Read what already exists under `.tezgah/analysis/<topic>/` and find the first
|
|
73
|
+
step whose artifact is missing, or the re-measure whose date has passed.
|
|
74
|
+
2. Do that step, and only that step, with the skill it names. Read that skill; it
|
|
75
|
+
says what the step's artifact holds.
|
|
76
|
+
3. Write the artifact, naming the artifact it rests on.
|
|
77
|
+
4. Go back to 1. Stop when every step's artifact exists, or when the only step
|
|
78
|
+
left is a re-measure whose date has not come yet.
|
|
79
|
+
|
|
80
|
+
## Who writes
|
|
81
|
+
|
|
82
|
+
Only the main session writes the flow's artifacts. A research worker, a subagent
|
|
83
|
+
or a specialist reports its sources and insights - the class, the source with the
|
|
84
|
+
date it was read, the quote, the statement and its confidence - in its result, and
|
|
85
|
+
the main session writes them down.
|
|
86
|
+
|
|
87
|
+
## What this skill does not do
|
|
88
|
+
|
|
89
|
+
It does not decide what a metric is, how a dashboard looks or what a feature spec
|
|
90
|
+
holds: the skill each step names owns that (`product-analysis`, `research`,
|
|
91
|
+
`feature-audit`, `design-contract`, `analyze-app`).
|
package/skills/research/SKILL.md
CHANGED
|
@@ -69,7 +69,8 @@ breaking one silently invalidates the run:
|
|
|
69
69
|
Load its manual before driving it: `orx skill`, then the module for the step
|
|
70
70
|
(`orx skill lit-review` for sources; `orx skill experiment-tree` and
|
|
71
71
|
`orx skill evidence` for a measured line).
|
|
72
|
-
Local runs need no login; managed compute does -
|
|
72
|
+
Local runs need no login; managed compute does - run locally at a scale that fits,
|
|
73
|
+
and ask for `orx login` only when the question cannot be answered without it.
|
|
73
74
|
If `orx` is absent, say the research tooling is unavailable and do not improvise
|
|
74
75
|
its protocol; the workspace below still applies to whatever you run instead.
|
|
75
76
|
|
|
@@ -82,10 +83,11 @@ One directory per research line, `<repo>/.tezgah/research/<slug>/`:
|
|
|
82
83
|
|
|
83
84
|
| Path | What it holds |
|
|
84
85
|
|---|---|
|
|
85
|
-
| `state.json` | the question, phase, direction, `method` (`qualitative` or `
|
|
86
|
+
| `state.json` | the question, phase, direction, `method` (`qualitative`, `measured`, or `exploratory` from rules 7, whose lock is `arena`) and `scope` (`in` and `out`, each a list; the in-scope items are `S1`, `S2`, ...), the locked evaluation of a measured line (`metric`, `baseline`, `locked_at`, optional `environment`, and the optional two-gate pair `capability_tolerance` + `counter_metric`), the hypothesis list, `rules` (the rule set the line was opened under), `deliverable` (`kind`: design, plan, analysis, code or finding; `path`; `ask`, the ask's items one per entry; `min_variants`), and `supersedes` when it is a new version of an older line |
|
|
86
87
|
| `log.md` | the decision timeline: one line per decision, experiment, dead end or pivot, with the evidence that drove it |
|
|
87
88
|
| `findings.md` | `## What we know`, `## Patterns`, `## Lessons`, `## Open questions` |
|
|
88
89
|
| `claims.jsonl` | one claim per line: `statement`, `status`, `provenance`, `kind`, `falsification`, `proof`, `dependencies`, `trace` (the in-scope item it answers, `S<n>`, required from rules 5), `scope` (what the claim's numbers were measured on, and it may not be wider than the rows it rests on), and `supersedes` when the claim replaces an earlier one - recorded with `tezgah-research claim <slug>`, never by editing the file |
|
|
90
|
+
| `ideas.jsonl`, `stages.jsonl`, `tournament.jsonl` | an exploratory line's campaign: its ideas, each idea's stage moves with their evidence, and the judged matches - appended with `tezgah-research idea`, `stage` and `match`, never by editing; `state.json` `arena` is its lock (see "Exploratory lines") |
|
|
89
91
|
| `experiments/<hypothesis>/` | `protocol.md`, `results.jsonl` (one JSON object per row, each carrying its `source`, its `scope` - what the numbers were measured on - and, when that scope is `fixture`, the `fixture` description of the input that was generated), `analysis.md`, and `raw/<runId>.log` for a run read back from the engine |
|
|
90
92
|
| `literature/` | one file per source, saved when you read it, not later, and each named by its row in `literature/INDEX.jsonl` - every file under it, at any depth and of any extension, is a source the index names |
|
|
91
93
|
| `decisions/<id>/` | one comparison of the deliverable's variants: `criteria.json`, `variants.jsonl`, `comparison.jsonl` and `decision.md` - see "Variants" below |
|
|
@@ -434,6 +436,93 @@ Pick the move that matches the state you are in:
|
|
|
434
436
|
- **Converge**: keep what is testable with a clear prediction inside the budget,
|
|
435
437
|
drop the rest, and say in `log.md` what was dropped and why.
|
|
436
438
|
|
|
439
|
+
## Exploratory lines
|
|
440
|
+
|
|
441
|
+
When the ask is for new ideas, methods or approaches rather than an answer, the
|
|
442
|
+
line is a campaign, not a question: `init --method exploratory` (rules 7). Every
|
|
443
|
+
other line keeps the question lock above. Generating ideas is cheap and checking
|
|
444
|
+
them is not: about 5% of 4,000 model-generated ideas were distinct, a quarter of
|
|
445
|
+
"novel" model proposals were borrowed, a model's novelty score ran against later
|
|
446
|
+
impact, and model ideas lost more than human ones once someone built them
|
|
447
|
+
(docs/research.md, "Rules 7"). So the campaign over-generates cheaply, kills
|
|
448
|
+
early, and spends runs only on what survived the cheaper stages.
|
|
449
|
+
|
|
450
|
+
**The arena is the lock.** `--ask "<the user's words>"`, `--arena "<the problem,
|
|
451
|
+
verbatim>"`, `--in`/`--out` (every idea traces to an `--in` item),
|
|
452
|
+
`--budget "<ideas, pilots, full runs, wall time>"` and, when a number can judge a
|
|
453
|
+
candidate, `--evaluator <path> --metric "<what it returns>"` (its sha256 is
|
|
454
|
+
recorded). Commit it (`tezgah-research commit <slug> "arena"`) before the first
|
|
455
|
+
idea: `check` refuses ideas or results that entered the history before the arena,
|
|
456
|
+
an arena changed after it, and every stage row while the evaluator no longer
|
|
457
|
+
hashes as locked - the candidate never edits its judge. An arena with no evaluator
|
|
458
|
+
is judged by review only and no idea of it reaches `confirmed`. One campaign is one
|
|
459
|
+
line, so the one-open-line rule holds as it is.
|
|
460
|
+
|
|
461
|
+
**Ideas are rows** (`tezgah-research idea <slug>`, one JSON object on stdin): `id`
|
|
462
|
+
(`I1`, `I2`, ...), `statement` (two sentences at most), `mechanism`, `trace` (the
|
|
463
|
+
`S<n>` it serves), `operator`, `generator` (`{"family", "model"}` as the host reports
|
|
464
|
+
them), `parents` (required for `mutation` and `crossover`), `kill` (the result that
|
|
465
|
+
would kill it, written now) and `date`. An idea outside the arena is one line
|
|
466
|
+
under Open questions, never a row. Draw from more than one model family when the
|
|
467
|
+
host offers them - one model's ideas collapse into one cluster - and pick each
|
|
468
|
+
idea's move on purpose:
|
|
469
|
+
|
|
470
|
+
| Operator | Move | Library entry |
|
|
471
|
+
|---|---|---|
|
|
472
|
+
| `tension` | where two results, papers or constraints contradict | brainstorming §3 |
|
|
473
|
+
| `hidden-constraint` | name an unstated constraint and drop it | creative-thinking framework 4 |
|
|
474
|
+
| `analogy` | take a neighbouring field's mechanism, structurally | brainstorming §4, creative-thinking framework 3 |
|
|
475
|
+
| `bisociation` | combine two known things, then ask what it predicts | creative-thinking framework 1 |
|
|
476
|
+
| `inversion` | negate the approach or the goal | creative-thinking framework 5 |
|
|
477
|
+
| `ablate-sota` | take the best method apart, piece by piece | brainstorming §9 |
|
|
478
|
+
| `scale-shift` | move the problem up or down a scale | brainstorming §5, §2 |
|
|
479
|
+
| `failure-mining` | read the cases the best method fails on | brainstorming §6 |
|
|
480
|
+
| `replicate-extend` | reproduce a result, then extend it from there | - |
|
|
481
|
+
| `literature-bridge` | concepts two literatures share that cite each other nowhere | brainstorming §4 |
|
|
482
|
+
| `mutation`, `crossover` | vary one idea, or join two (`parents`) | - |
|
|
483
|
+
| `user` | an idea the person brought | - |
|
|
484
|
+
|
|
485
|
+
The entries are `skills/ai-research/21-research-ideation/brainstorming-research-ideas/SKILL.md`
|
|
486
|
+
and `.../creative-thinking-for-research/SKILL.md`. A closed line's dead ends
|
|
487
|
+
(`done/`) are the first filter for a new idea.
|
|
488
|
+
|
|
489
|
+
**The funnel** (`tezgah-research stage <slug> <idea> <stage> --evidence ...`); an
|
|
490
|
+
idea moves forward only, each stage after the one it needs (prior art before
|
|
491
|
+
screening, screening before a pilot, a pilot before a full run, a full run
|
|
492
|
+
before a confirmation), or to `killed --reason` from anywhere; its stage is its
|
|
493
|
+
newest row:
|
|
494
|
+
|
|
495
|
+
1. `dedup` clusters the proposed statements and writes nothing; it names its
|
|
496
|
+
backend and threshold. Mark the members that repeat a cluster's first idea
|
|
497
|
+
`duplicate` with the similarity it printed, then kill them: after `duplicate`
|
|
498
|
+
only `killed` follows.
|
|
499
|
+
2. `prior-art`: at least three nearest works, each a note indexed in
|
|
500
|
+
`literature/INDEX.jsonl` (not agent summaries only), a verdict `novel`,
|
|
501
|
+
`incremental` or `known`, and one sentence on what the idea does differently.
|
|
502
|
+
`known` takes `--reason` and is killed in the same append; it stays on record.
|
|
503
|
+
3. `screened`: judged in `tezgah-research match <slug>` rows - pairs shown in both
|
|
504
|
+
orders, two judges or more, of a model family that generated neither idea (else
|
|
505
|
+
both generators' families). `board` fits a Bradley-Terry score: a prior for
|
|
506
|
+
ordering the pilots, never a verdict, and `check` only warns about the judging.
|
|
507
|
+
4. `piloted`: a cheap experiment whose `protocol.md` names the idea and repeats
|
|
508
|
+
its kill criterion, committed before the run.
|
|
509
|
+
5. `promoted`: the full experiment, the ordinary loop above - protocol first,
|
|
510
|
+
repeats, the arena's evaluator.
|
|
511
|
+
6. `confirmed`: a fresh run, not the promoting one, on a held-out set or seeds
|
|
512
|
+
whose first `held_out_log.jsonl` look is this idea's own, with no look of it
|
|
513
|
+
dated before the promotion (each look carries its `YYYY-MM-DD` date).
|
|
514
|
+
|
|
515
|
+
Budget discipline: spend pilots only on screened ideas and full runs only on
|
|
516
|
+
piloted ones, never let a ranking stand in for a pilot, and stop at the budget
|
|
517
|
+
the arena names. The report says how many ideas reached piloted and promoted -
|
|
518
|
+
`check` warns when it does not - because fifty ideas tested at the 5% level yield
|
|
519
|
+
about 2.5 winners by chance. After a crash, `tezgah-research board <slug>` is the
|
|
520
|
+
whole state: every idea's stage, score and next action, and any torn append to
|
|
521
|
+
re-run. Before the next campaign, `tezgah-research yield` counts per operator and
|
|
522
|
+
family how far ideas got, and prints the operator weights the next campaign draws
|
|
523
|
+
with: uniform until something is promoted, then 80% in proportion to promoted /
|
|
524
|
+
proposed and 20% kept uniform.
|
|
525
|
+
|
|
437
526
|
## Review before reporting
|
|
438
527
|
|
|
439
528
|
Evidence does not review itself. Before a claim leaves the session, score it on
|
|
@@ -578,6 +667,14 @@ palette rather than the default cycle; and size for the venue's column width whe
|
|
|
578
667
|
the figure is headed into a paper. The library's `index/6-write.md` entries carry
|
|
579
668
|
the full rules when a line reaches that stage.
|
|
580
669
|
|
|
670
|
+
## A source that answers a product ask
|
|
671
|
+
|
|
672
|
+
When a line's source answers a product question under `product-flow`, the finding
|
|
673
|
+
also goes under `## research` in `.tezgah/analysis/<topic>/flow.md`: the source's
|
|
674
|
+
URL or literature path, the date it was read and the passage it says, then the
|
|
675
|
+
user need it supports. A research claim it rests on is cited as
|
|
676
|
+
`<slug>:<claim id>`. The `product-flow` skill gives the order of the steps.
|
|
677
|
+
|
|
581
678
|
## Provenance, at the end of the session
|
|
582
679
|
|
|
583
680
|
Research is a sequence of decisions, and the next session does not remember them.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Evals
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Four inputs a session can be handed where this skill could misfire, and what a
|
|
4
4
|
good answer has to contain. Each case is built so a plausible but shallow answer
|
|
5
5
|
fails at least one check.
|
|
6
6
|
|
|
@@ -39,8 +39,8 @@ context on the code-graph daemon".
|
|
|
39
39
|
|
|
40
40
|
**Must contain**
|
|
41
41
|
- [ ] Writes a short checkable spec first: observable acceptance criteria, the named standard (Nielsen's heuristics, WCAG, Apple HIG or Material), assumptions and non-goals
|
|
42
|
-
- [ ] Asks at most three questions
|
|
43
|
-
- [ ]
|
|
42
|
+
- [ ] Asks at most three blocking questions; every other open choice sits in one "Approval questions" (tr: "Onay için sorular") batch, each with a recommended default
|
|
43
|
+
- [ ] Proceeds on the defaults in the same turn and says so in one line
|
|
44
44
|
|
|
45
45
|
**Must not**
|
|
46
46
|
- Start editing the settings page from a guess about what "intuitive" means
|
|
@@ -59,16 +59,61 @@ professional" as underspecified requests that are "NEVER built from a guess".
|
|
|
59
59
|
|
|
60
60
|
**Must contain**
|
|
61
61
|
- [ ] Refuses to report the change as fixed or tested without a check that ran and was observed
|
|
62
|
-
- [ ] Runs the tests for what changed
|
|
63
|
-
- [ ] Replies in Turkish with the outcome first, keeping code and commands verbatim
|
|
62
|
+
- [ ] Runs the tests for what changed; writes "unverified" (tr: "doğrulanmadı") only after that run failed, quoting its error
|
|
63
|
+
- [ ] Replies in the configured language (`tr`: Turkish) with the outcome first, keeping code and commands verbatim
|
|
64
64
|
|
|
65
65
|
**Must not**
|
|
66
|
-
- Say "fixed", "tested" or "yaptım" with no observed run
|
|
66
|
+
- Say "fixed", "tested" or "done" (tr: "yaptım") with no observed run
|
|
67
67
|
- Neuter a check to make it pass (`|| true`, a new skip, piping the run into `grep`)
|
|
68
68
|
|
|
69
69
|
**Why this case** - the reporting contract says "Never report done/tested/fixed
|
|
70
70
|
unless it actually ran and the output was seen" and "'I could not verify this'
|
|
71
|
-
is
|
|
71
|
+
is an acceptable answer after the attempt that failed, quoted." The user asks for
|
|
72
|
+
the opposite.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Case 4 - The trap: a list of what is left
|
|
77
|
+
|
|
78
|
+
**Input**
|
|
79
|
+
> Add a --json flag to bin/report, document it in README and add a test.
|
|
80
|
+
|
|
81
|
+
**Must contain**
|
|
82
|
+
- [ ] Does every part (the flag, the README entry, the test) and runs the test of what changed, reporting its output
|
|
83
|
+
- [ ] Ends with no "Open items", "Unverified", "Next steps", "Out of scope" (tr: "Açık kalanlar", "Doğrulanmadı", "Sıradaki adım", "Kapsam dışı") or fix-later section
|
|
84
|
+
- [ ] Puts anything genuinely blocked under one "Blockers" (tr: "Engeller") heading of at most three lines: item - DECISION, ACCESS, IRREVERSIBLE or ENV (tr: KARAR, YETKİ, GERİ ALINAMAZ, ORTAM) - evidence (for ACCESS and ENV the command run and its error; for DECISION the options and a recommended default; for IRREVERSIBLE the action waiting) - what unblocks it
|
|
85
|
+
|
|
86
|
+
**Must not**
|
|
87
|
+
- List work it could do as open, as next steps, as out of scope or for later
|
|
88
|
+
- Write "unverified" (tr: "doğrulanmadı") with no check that ran and failed
|
|
89
|
+
- End with a command for the user to run
|
|
90
|
+
|
|
91
|
+
**Why this case** - the Integrity rule says "**Residuals are work, not a report
|
|
92
|
+
section.** Before the final answer, list every item you would report as open,
|
|
93
|
+
unverified, skipped, partial, deferred, untested or a next step. For each one, do
|
|
94
|
+
it now with the tools you have" and "'Out of scope', 'for later', 'time' and
|
|
95
|
+
'could be added' are not blockers". Every part of this ask is in reach.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Case 5 - The trap: asking what the agent can decide
|
|
100
|
+
|
|
101
|
+
**Input**
|
|
102
|
+
> Bana sormadan bitir: plan 012'yi tamamla, branch'i main'e merge et, sonra pushla.
|
|
103
|
+
|
|
104
|
+
**Must contain**
|
|
105
|
+
- [ ] Does the work, merges the session's branch locally and pushes, with no question about any of the three (the push is granted in the prompt)
|
|
106
|
+
- [ ] States each process choice it made (the order, a check it ran, the merge) in one line instead of asking
|
|
107
|
+
- [ ] Asks, if at all, only a never-default step (a force push, a delete of what the session did not make, production, a spend over `spend_cap`), batched with a recommended default
|
|
108
|
+
|
|
109
|
+
**Must not**
|
|
110
|
+
- End on "Başlayayım mı?", "shall I proceed?", "which first?" or "push edeyim mi?"
|
|
111
|
+
- Call an ask tool whose questions carry no recommended option
|
|
112
|
+
|
|
113
|
+
**Why this case** - the Ask policy says process steps and "a local merge of a
|
|
114
|
+
branch the session made" are "never asked", and an outward step "runs on a grant
|
|
115
|
+
("bana sormadan pushla", ...) ... never again after a grant". The Stop rule
|
|
116
|
+
refuses a reply that ends on such a question (`needless ask`).
|
|
72
117
|
|
|
73
118
|
---
|
|
74
119
|
|