This commit is contained in:
team3
2026-07-02 03:05:57 +02:00
parent afa8b36105
commit 41c9f29a37
38 changed files with 4671 additions and 2634 deletions

View File

@@ -1,20 +0,0 @@
Below are numbered block candidates for the topic "{topic}". They come from a similarity cluster. Some refer to the SAME block or a property of it, others are distinct. Group them.
CANDIDATES:
{entries}
Rules:
- Form groups: numbers that belong to the SAME block go into ONE group.
- **Watch the core entity** (the problem/object): Clique, Vertex Cover, Set Cover, Knapsack, Dominating Set, LPT/List Scheduling … Different entity → different groups, even with similar phrasing ("Lower Bound Clique" ≠ "Lower Bound Vertex Cover").
- True paraphrases go TOGETHER, even when worded differently ("List Scheduling" = "LPT-Algorithmus"; "Set Cover" = "Mengenüberdeckung").
- **A problem's properties belong TO the problem block — not on their own.** Bundle with the problem: its complexity status (∈ NP, NP-schwer, NP-vollständig), its verifier / certificate / NDTM, "… als Sprache / Definition", its individual lower-bound parameters (k / r / |U|).
- Example: "Knapsack", "Knapsack ∈ NP", "Knapsack NP-schwer", "Knapsack NP-vollständig", "Verifizierer für Knapsack" → ONE group (the "Knapsack" block).
- Example: "Hitting Set Lower Bound (k)", "(r)", "(|U|)" → ONE group.
- Keep SEPARATE (own blocks): different problems (Clique-Member ≠ Clique-Nomember); a REDUCTION between two problems is its own technique (e.g. "3-SAT ⪯ k-Clique" stays separate); different methods/theorems with their own statement.
- When in doubt between two different problems → SEPARATE. For a problem + its property → BUNDLE.
- EVERY number goes into EXACTLY ONE group. A standalone block is a group with one element.
Write ONLY the JSON file to: {out_path}
Format (lists of candidate numbers; each number exactly once):
{{"groups": [[1, 3], [2], [4, 5]]}}

View File

@@ -0,0 +1,15 @@
The numbered entries below all describe the SAME block for the topic "{topic}". Entry number {current} was chosen as the canonical title. Check whether that is the best choice — if another entry is a clearly better canonical name, pick it instead.
MEMBERS:
{members}
Rules:
- Pick an EXISTING entry number — do NOT invent a title.
- Best = most concrete, precise, self-explanatory, established term for the shared concept.
- If the current choice ({current}) is already the best, return it unchanged.
- When in doubt, keep the current choice.
Write ONLY the JSON file to: {out_path}
Format (the best member number, nothing else):
{{"best": {current}}}

View File

@@ -0,0 +1,15 @@
The numbered entries below all describe the SAME block (concept) for the topic "{topic}", just worded differently. Pick the ONE entry whose title is the best canonical name for this block.
MEMBERS:
{members}
Rules:
- Pick an EXISTING entry — do NOT invent a new title or umbrella term.
- Prefer the most CONCRETE, precise, self-explanatory title for the shared concept.
- Prefer the established/standard term (correct spelling, full form over cryptic abbreviation) — but stay concrete, never over-general.
- Avoid reference/placeholder titles ("Satz 7.18", "Punkt 3", "(**)") if a meaningful one exists.
Write ONLY the JSON file to: {out_path}
Format (the chosen member number, nothing else):
{{"best": 1}}

View File

@@ -1,16 +0,0 @@
{n} research agents have independently determined the blocks of the topic "{topic}". Exactly identical titles have already been merged; the number in parentheses says how many research passes name the block. Consolidate the list.
{entries}
Rules:
- Recognize the SAME concepts under different titles and merge them into one block. The mention counts of the merged entries add up (each research pass counts a concept only once).
- A block solves EXACTLY ONE PROBLEM. Entries that are variants of the same solution are combined into ONE block (right: one block `<input>` for all types, one block "Modalverben" for all modal verbs; wrong: one entry per input type or per verb, but also collective entries that mix several problems).
- A block is ATOMIC: exactly one idea, complete in itself. Test: you can remove nothing without making it incomplete — and nothing is missing to understand it.
- CONSOLIDATE the granularity: a block is a LEARNING UNIT, not a dictionary entry. If the research passes deliver dozens of micro-entries of the same kind (one CSS property, one verb, one gesture per entry), group them by problem (right: "Flexbox-Ausrichtung" instead of six entries for justify-content, align-items, …). More than ~150 blocks is almost always a granularity problem — then check specifically for such series.
- Then split into two lists: blocks that (after merging) are named by AT LEAST TWO research passes → `blocks`. Named only once or doubtful on the merits → `rest`. Discard only what is obviously fabricated.
- Drop the sources. Title and short description (max. ~12 words) in GERMAN (code identifiers stay original). Every title must be UNIQUE.
Write ONLY the JSON file to: {out_path}
Format (each entry a string "Title — Kurzbeschreibung"; no other text in the file):
{{"blocks": ["Title — Kurzbeschreibung"], "rest": ["Title — Kurzbeschreibung"]}}

View File

@@ -1,19 +0,0 @@
Review the gathered contents for blocks of a learning guide on the topic "{topic}" (format: {format_name}). Audience: beginners. This is not yet guide text — only the content bullet points that will be taught later.
CONTENTS:
{sections}
Review each block:
1. Correctness: are the points and facts factually right and supportable? Nothing hallucinated, no invented values/versions.
2. Completeness: is something essential missing that a beginner needs to understand the block?
3. Scope: no more than the block yields — nothing mentioned in passing inflated; but also no central gap.
You only REVIEW and note problems — you change nothing. Note only genuine flaws, no matters of taste.
Write ONLY the JSON file to: {out_path}
Format — all in order:
{{"ok": true}}
Otherwise (block title EXACTLY as above):
{{"problems": [{{"section": "exact block title", "problem": "…"}}]}}
{extra}

View File

@@ -1,18 +0,0 @@
Revise individual block contents of a learning guide on the topic "{topic}". One PROBLEM is noted per block (correctness, completeness, or scope). Fix ONLY the noted problem; whatever is in order stays untouched.
{facts}
TASKS — per block, the problem and the current content:
{tasks}
Write all revised content in GERMAN (the guide is for German-speaking learners), even though these instructions are in English.
Write ONLY the file {out_path} — one section marker per revised block (title EXACTLY as in the task), with the corrected points beneath it:
<!-- section: exact block title -->
- Core point …
- Core point …
Example: short idea of what the example shows
Write the marker line exactly like that. No text outside the sections.
{extra}

View File

@@ -1,30 +0,0 @@
For each assigned block of a learning guide on the topic "{topic}", identify WHAT a beginner with no prior knowledge needs to understand. You are not yet writing guide text — you only gather the contents that will be taught later.
You are assigned the following chapters and blocks — binding: every assigned block must appear, invent no additional ones. Beneath each block are its SUBBLOCKS with their learning-path level (`[beginner]`/`[advanced]`/`[expert]`) — the sub-points that get taught:
{assignment}
{facts}
Guiding principle: only the **essentials**. Superfluous material harms learning — gather what a beginner REALLY needs, not everything one could possibly say.
Gather per block:
- Core points / learning goals: what must the reader grasp? Cover EVERY listed subblock with EXACTLY the one central core point — not several overlapping ones. If a block has no subblocks, gather 3-7 concise points.
- Prerequisites: which terms/ideas must one already know to understand this? Each explainable in half a sentence — these are the anchor points for newcomers.
- Typical hurdles: where do beginners typically misunderstand it or stumble?
- Cited facts (versions, names, values) — nothing unsupported; verify anything uncertain via web search.
- One concrete example idea ONLY where an example genuinely carries the understanding — not dutifully for every subblock.
- Scope: only what THIS block yields. No more, no less. Don't inflate something mentioned in passing into a topic.
Write all gathered content in GERMAN (the guide is for German-speaking learners), even though these instructions are in English.
Write ONLY the file {out_path} — one section marker per block (title EXACTLY from the assignment), with the points beneath it:
<!-- section: exact block title -->
- Core point …
- Core point …
Prerequisite: what must be briefly explained beforehand (anchor)
Hurdle: typical beginner misconception
Example: short idea of what the example shows
Write the marker line exactly like that. No text outside the sections, no prose guide.
{extra}

View File

@@ -0,0 +1,19 @@
Coverage gate ("Was fehlt?") for ONE written guide section on the topic "{topic}": check the text against its learning objectives. Objective without content = gap; content without objective = ballast.
LEARNING OBJECTIVES of block "{block}":
{ziele}
SECTION — current content (subblocks are marked with `<!-- sub: … -->`):
{section}
Procedure:
1. For EACH objective decide binary: does the text teach it well enough that a beginner could achieve the objective afterwards? Mentioning a keyword is NOT teaching — the how/why must be there.
2. For each NOT-covered objective state precisely WHAT is missing (German, concrete — the writer will patch exactly this).
3. List BALLAST: passages that serve none of the objectives (digressions, redundant repetition). Shortening candidates only — never a whole subblock.
4. Judge strictly binary per objective; no partial credit.
Write ONLY the JSON file to: {out_path}
Format (`ziele` maps EVERY objective id to true/false):
{{"ziele": {{"z1": true, "z2": false}}, "luecken": [{{"ziel": "z2", "fehlt": "…"}}], "ballast": ["passage …"]}}
{extra}

View File

@@ -0,0 +1,19 @@
Remove unsupported claims from ONE guide section on the topic "{topic}" — minimal edit, everything else stays VERBATIM.
SECTION (block "{block}") — current content:
{section}
UNSUPPORTED CLAIMS (from the fact gate) — ONLY these may be touched:
{claims}
VERIFIED FACTS (the only allowed factual basis — for rephrasing, if a claim can be corrected instead of removed):
{facts}
Rules:
- Per claim: correct it IF the verified facts state the right version; otherwise DELETE it (smooth the surrounding sentence so the text stays fluent).
- Everything else stays word-for-word identical — no rewriting, no shortening, no new content.
- STRUCTURE INVARIANT (mandatory, the level filter dies without it): keep ALL marker lines exactly — `<!-- kapitel: … -->`, `<!-- section: … -->`, `<!-- compact -->`, `<!-- ausführlich -->` and every `<!-- sub: LABEL | title -->` in BOTH blocks, same order. Never delete a whole subblock; if all its claims fall, keep a minimal supported sentence.
- German text, same tone as the original.
Write ONLY the file {out_path} — the COMPLETE corrected section in exactly the original marker format.
{extra}

View File

@@ -0,0 +1,21 @@
Fact-check ONE written guide section on the topic "{topic}" — Chain-of-Verification style, binary per claim.
SECTION (block "{block}"):
{section}
VERIFIED FACTS — the ONLY allowed factual basis (extract-once from the source):
{facts}
Procedure:
1. Decompose the section text into its ATOMIC factual claims (definitions, properties, numbers, procedure steps, causal statements). Ignore pure didactics (transitions, framing, mnemonic phrasing).
2. Check EACH claim INDIVIDUALLY and BINARY against the VERIFIED FACTS above: derivable from them → belegt. Not derivable, contradicting, or over-specific beyond the facts → nicht belegt.
3. Do NOT search the web, do NOT use outside knowledge — a claim that is true in the world but absent from the facts is still "nicht belegt".
4. When in doubt → nicht belegt (the guide may only teach verified material).
Write ONLY the JSON file to: {out_path}
Format — everything supported:
{{"ok": true}}
Otherwise (each unsupported claim VERBATIM as it appears in the text):
{{"claims": [{{"text": "verbatim claim from the section", "grund": "why unsupported (German, short)"}}]}}
{extra}

View File

@@ -0,0 +1,23 @@
Define learning objectives (Backward Design) for ONE block of a learning guide on the topic "{topic}" — BEFORE anything is written. The objectives anchor what the section must teach; later a coverage gate checks the text against exactly these objectives.
BLOCK:
{block}
SUBBLOCKS (with level label) — the intended coverage of this block:
{subs}
VERIFIED FACTS (extract-once from the source — the only allowed factual basis):
{facts}
Rules:
- 37 objectives, together covering THIS block completely — no more, no fewer than the material carries.
- Each objective is CHECKABLE: a Bloom verb (nennen, erklären, anwenden, unterscheiden, berechnen …) + concrete content. Never vague ("verstehen", "kennenlernen").
- Objectives follow the material: every subblock maps to at least one objective; invent NO objective the facts cannot support.
- `sub` = the subblock title an objective mainly belongs to ("" if it spans the whole block).
- German objective texts (the guide is for German-speaking learners).
Write ONLY the JSON file to: {out_path}
Format:
{{"ziele": [{{"id": "z1", "text": "Erklären, warum …", "sub": "exact subblock title or empty"}}]}}
{extra}

View File

@@ -10,7 +10,7 @@ SECTIONS:
Review each section:
1. Does the section teach the concept understandably for a beginner with no prior knowledge — does it frame it, explain the how/why, make an example concrete? Not so dense that only someone who already knows the topic can follow it.
2. Readability (note genuine flaws):
- Sentences over ~25 words, or nested sentences with several interjections.
- Sentences over ~20 words (never over 25), or nested sentences with several interjections.
- An enumeration (steps/options/requirements) written as one long prose sentence that should be a Markdown list.
- Wall of text: one dense block without paragraphs that could be split into several.
- More than ~4 new technical terms left unexplained at first occurrence.

View File

@@ -0,0 +1,47 @@
Write ONE section of a learning guide on the topic "{topic}" (format: {format_name}) — the block below, nothing else.
CHAPTER: {chapter}
BLOCK with its SUBBLOCKS and level labels (`[beginner]`/`[advanced]`/`[expert]`/`[peripheral]`):
{assignment}
LEARNING OBJECTIVES — after reading, a beginner must be able to do exactly this (a coverage gate checks the text against these objectives):
{ziele}
VERIFIED FACTS per subblock — binding basis. Quote cited facts (FACT[Source]) VERBATIM, invent nothing extra, do NOT re-research (a fact gate checks every claim against this list):
{facts}
{gaps}
IMPORTANT — each subblock is delimited with a marker so the guide can later be shown in stages. The label comes EXACTLY from the assignment. Despite the marker, you write FLUENTLY and interwoven — the marker is an invisible interface, NOT a visible heading.
The content is INDEPENDENT of the level: every subblock is explained in a **beginner-friendly** way, no matter the label. The label only says WHEN in the learning path the point comes up (foundation → finesse) — NOT how complicated it is written.
The block gets TWO versions with the SAME subblocks (same titles, same order):
- **compact**: one mnemonic per subblock as a bullet (`- …`). For recall. Only name it, don't explain.
- **ausführlich** (detailed): the coherent beginner learning text.
HOW TO WRITE the detailed version — ONE coherent text for a junior who is learning the topic anew:
- Start with the anchor (framing): which problem / what for, tied to something familiar — BEFORE the first subblock marker. Mandatory.
- Resolve EVERY technical term at first mention in half a sentence. Use "Prerequisite" hints as anchors, "Hurdle" hints to clear misconceptions up front.
- Order of the subblocks as in the assignment: first `[beginner]`, then `[advanced]`, then `[expert]`, last `[peripheral]`.
- The NUMBER of subblocks is the depth signal: many subblocks → the block deserves length; few → keep it short. Never pad.
- CONCISE: every sentence carries new information. No repetition, no filler, no preamble. When in doubt, leave it out.
- Show "how" procedures step by step. An example ONLY where it genuinely carries the understanding.
SECTION SPECIFICATION:
{spec}
Write the entire guide content in GERMAN (the guide is for German-speaking learners), even though these instructions are in English.
Write ONLY the file {out_path} in EXACTLY this format — one kapitel marker, one section marker (title EXACTLY as in the assignment), a `compact` and an `ausführlich` block, each subblock with its `<!-- sub: LABEL | subblock title -->` marker (LABEL and title EXACTLY from the assignment, same order in both blocks):
<!-- kapitel: {chapter} -->
<!-- section: exact block title -->
<!-- compact -->
<!-- sub: beginner | exact subblock title -->
- mnemonic for this subblock (concise, no explanation)
<!-- ausführlich -->
Anchor: framing of the whole block — before the first subblock.
<!-- sub: beginner | exact subblock title -->
Beginner-friendly prose for this subblock.
No text outside the section, no document title, no table of contents.
{extra}

View File

@@ -1,51 +0,0 @@
Write sections for a learning guide on the topic "{topic}" (format: {format_name}).
You are assigned the following chapters and blocks — binding: every assigned section must appear, invent no additional ones. Beneath each block are its SUBBLOCKS with their level label (`[beginner]`/`[advanced]`/`[expert]`/`[peripheral]`):
{assignment}
IMPORTANT — each subblock is delimited with a marker so the guide can later be shown in stages (beginners see only `beginner`, advanced learners see more). The label comes EXACTLY from the assignment. Despite the marker, you write FLUENTLY and interwoven — the marker is an invisible interface, NOT a visible heading.
The content is INDEPENDENT of the level: every subblock is explained in a **beginner-friendly** way, no matter the label. The label only says WHEN in the learning path the point comes up (foundation → finesse) — NOT how complicated it is written. An `[expert]` point is explained just as simply as a `[beginner]` point. No perfectionism, no artificial depth: the essentials made clear, so that a newcomer understands them.
Each block gets TWO versions with the SAME subblocks (same titles, same order):
- **compact**: one mnemonic per subblock as a bullet (`- …`). For recall. Only name it, don't explain.
- **ausführlich** (detailed): the coherent beginner learning text (see below).
HOW TO WRITE the detailed version — ONE coherent text for a junior who is learning the topic anew:
- Start with the anchor (framing): which problem / what for, tied to something familiar — only then the new material. The anchor comes BEFORE the first subblock marker. Mandatory, never omit it.
- Resolve EVERY technical term at first mention in half a sentence. Assume nothing — not even terms from the title or other blocks. Use the "Prerequisite" hints as anchors, and the "Hurdle" hints to clear up misconceptions up front.
- Treat each subblock under its marker — fluently phrased, explanatory prose, not an isolated bullet block.
- Order of the subblocks as in the assignment: first `[beginner]` (foundation), then `[advanced]`, then `[expert]`, last `[peripheral]`.
- Show "how" procedures step by step, not just the result.
- CONCISE: every sentence carries new information. No repetition, no filler or meta sentences, no preamble. Superfluous material harms learning — when in doubt, leave it out, don't add.
- Length follows the content: a trivial detail one or two sentences; a complex concept as much as it REALLY needs — no more. Not "as long as possible".
- An example ONLY where it genuinely carries the understanding — not dutifully for every subblock.
VERIFIED CONTENTS per block — this is binding, what must be taught:
{contents}
Do NOT research and do NOT search the web. All necessary facts are in these verified contents — use only them. Invent nothing, leave out nothing essential. Teach simply: short sentences, lists for enumerations, a beginner understands it at once.
SECTION SPECIFICATION (applies per block):
{spec}
Write the entire guide content in GERMAN (the guide is for German-speaking learners), even though these instructions are in English.
Write ONLY the file {out_path} in EXACTLY this format — one kapitel marker per chapter, one section marker per block (title EXACTLY from the assignment), with a `compact` and an `ausführlich` block inside. In BOTH blocks, each subblock carries a `<!-- sub: LABEL | subblock title -->` marker (LABEL and title EXACTLY from the assignment, same order in both blocks):
<!-- kapitel: chapter title -->
<!-- section: exact block title -->
<!-- compact -->
<!-- sub: beginner | exact subblock title -->
- mnemonic for this subblock (concise, no explanation)
<!-- sub: advanced | exact subblock title -->
- mnemonic for this subblock
<!-- ausführlich -->
Anchor: framing of the whole block (which problem, what for) — before the first subblock.
<!-- sub: beginner | exact subblock title -->
Beginner-friendly prose for this subblock, with a small example.
<!-- sub: advanced | exact subblock title -->
Beginner-friendly prose for this subblock.
Write the marker lines exactly like that. Each section has exactly one `<!-- compact -->` and one `<!-- ausführlich -->` block; the subblock titles are identical in both. No text outside the sections, no document title, no table of contents.
{extra}