@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.
Files changed (81) hide show
  1. package/CHANGELOG.md +126 -1
  2. package/MANIFEST +11 -0
  3. package/README.md +6 -3
  4. package/bin/consult +13 -10
  5. package/bin/tezgah-docs +18 -16
  6. package/bin/tezgah-doctor +152 -0
  7. package/bin/tezgah-research +286 -12
  8. package/bin/tezgah-route +48 -1
  9. package/bin/tezgah-setup +27 -14
  10. package/bin/tezgah-task +771 -46
  11. package/bin/tezgah-taste +48 -10
  12. package/docs/architecture.md +7 -4
  13. package/docs/citations-baseline.json +1 -1
  14. package/docs/clarity-baseline.json +5 -5
  15. package/docs/contract.md +112 -25
  16. package/docs/evidence.md +201 -28
  17. package/docs/feature-audit.md +25 -4
  18. package/docs/gate.md +70 -33
  19. package/docs/glossary.md +4 -4
  20. package/docs/hosts.md +8 -8
  21. package/docs/index.json +30 -10
  22. package/docs/judge.md +9 -3
  23. package/docs/models.md +35 -2
  24. package/docs/operations.md +103 -3
  25. package/docs/research.md +392 -13
  26. package/docs/skills.md +24 -6
  27. package/docs/status-line.md +5 -5
  28. package/docs/testing.md +2 -2
  29. package/docs/vision.md +12 -4
  30. package/hooks/hooks.json +2 -2
  31. package/hooks/lang/en.json +323 -0
  32. package/hooks/lang/tr.json +344 -0
  33. package/hooks/projects-posttooluse.py +24 -5
  34. package/hooks/projects-pretooluse.py +9 -4
  35. package/hooks/projects-stop.py +28 -16
  36. package/hooks/tezgah_agents.py +29 -9
  37. package/hooks/tezgah_clarity.py +7 -3
  38. package/hooks/tezgah_components.py +2 -1
  39. package/hooks/tezgah_context.py +460 -390
  40. package/hooks/tezgah_gate.py +640 -104
  41. package/hooks/tezgah_integrity.py +1480 -197
  42. package/hooks/tezgah_models.py +337 -15
  43. package/hooks/tezgah_paths.py +103 -10
  44. package/hooks/tezgah_policy.py +286 -130
  45. package/hooks/tezgah_product.py +107 -0
  46. package/hooks/tezgah_rank.py +29 -27
  47. package/hooks/tezgah_replay.py +200 -30
  48. package/hooks/tezgah_research.py +1297 -12
  49. package/hooks/tezgah_skill_pick.py +58 -17
  50. package/hooks/tezgah_stopspec.py +7 -0
  51. package/hooks/tezgah_store.py +74 -27
  52. package/hooks/tezgah_task.py +917 -8
  53. package/hosts/codex/hook.py +9 -10
  54. package/hosts/cursor/hook.py +21 -14
  55. package/hosts/dsh/hooks.json +2 -2
  56. package/hosts/omp/hook.py +44 -23
  57. package/hosts/omp/tezgah-hook.ts.in +93 -7
  58. package/hosts/opencode/plugins/tezgah.js +119 -39
  59. package/output-styles/tezgah.md +76 -42
  60. package/package.json +1 -1
  61. package/skills/analyze-app/SKILL.md +57 -0
  62. package/skills/design-contract/EVALS.md +24 -1
  63. package/skills/design-contract/SKILL.md +17 -1
  64. package/skills/design-contract/data-views.md +86 -0
  65. package/skills/feature-audit/SKILL.md +32 -3
  66. package/skills/i-have-adhd/EVALS.md +22 -2
  67. package/skills/i-have-adhd/SKILL.md +12 -5
  68. package/skills/plan-add/EVALS.md +8 -8
  69. package/skills/plan-add/SKILL.md +22 -21
  70. package/skills/plan-sync/EVALS.md +2 -2
  71. package/skills/plan-sync/SKILL.md +14 -8
  72. package/skills/pm-frameworks/SKILL.md +6 -0
  73. package/skills/ponytail/EVALS.md +21 -2
  74. package/skills/ponytail/SKILL.md +4 -4
  75. package/skills/product-analysis/EVALS.md +23 -1
  76. package/skills/product-analysis/SKILL.md +50 -11
  77. package/skills/product-flow/EVALS.md +81 -0
  78. package/skills/product-flow/SKILL.md +91 -0
  79. package/skills/research/SKILL.md +99 -2
  80. package/skills/tezgah-contract/EVALS.md +52 -7
  81. 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`).
@@ -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 - ask the user to run `orx login`.
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 `measured`) 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
+ | `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
- Three inputs a session can be handed where this skill could misfire, and what a
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 that change the outcome, each with a recommended default
43
- - [ ] Says it will proceed on the recorded assumptions if the user is unavailable
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, or marks the claim "doğrulanmadı" and names the command that would verify it
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 always an acceptable answer". The user asks for the opposite.
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