new stuff

This commit is contained in:
2026-02-27 21:44:13 +01:00
parent 6e33b9b51e
commit 444d376e42
12 changed files with 428 additions and 46 deletions

View File

@@ -20,7 +20,7 @@
pattern: MonthlyOpt(dom: 1, months: ["February", "May", "August", "November"]),
),
(
name: "Überweisungen auf Local Benefits",
name: "Sachbezüge überweisen",
pattern: Monthly(dom: 1),
),
(

View File

@@ -1,8 +0,0 @@
[package]
name = "cli_img_test"
version = "0.1.0"
edition = "2024"
[dependencies]
image = "0.25.9"
showie = "2.0.1"

View File

@@ -1,16 +0,0 @@
use image::ImageReader;
fn main() {
// as
let img = ImageReader::open(
"/home/jan/pl/nextcloud/Pandaloop/Intern/logos/pl_logo_r1/logo_260x173_white_outline.png",
)
.unwrap()
.with_guessed_format()
.unwrap()
.decode()
.unwrap();
let s = showie::render(&img);
println!("{}", s);
}

18
contracts_checklist.md Normal file
View File

@@ -0,0 +1,18 @@
## GTH Rahmenvertrag
- Mitwirkungspflichten des Auftraggebers: Informationen, Zugänge, Zugangsdaten, Unterlagen, Ansprechpartner, Sicherstellung technischer Voraussetzungen
- Verfügbarkeit
- Beauftragung von Leistungen / eigeninitiierte Leistungen
- Haftungsausschluss bei rechtlich kritischer Arbeit außerhalb unseres Expertisebereiches (z.B. baulich) -> Rechtsgültigkeit prüfen: Kann man das einfach so machen? Geht es auch bei z.B. Datenschutzthemen, also Dingen innerhalb unseres Expertisebereichs?
- AVV
## Remagen
- Reporting-Pflichten
- Abrechnungsmuster (EarnWeeklyPayMonthly)
- Leistungsabrufe
- Leistungsbestätigung (abgeschwächte Form der Abnahme)
## Weiteres
- Einheitlich Zahlen schreiben, z.B> "zwölf (12) Tage"

View File

@@ -1650,10 +1650,16 @@ Hassan Schuldenliste:
# 2026-02-26
- [ ] Zuletzt geschickte Steuerunterlagen durchschauen
- [x] Finanzamt Säumniszuschläge überweisen
- [ ] Localbenefits: PIN? Gebühren?
- [x] App-Pin: 5715
- [x] Sachbezüge überweisen
- [ ] Übersicht aktiver Verträge?
- [ ] island Hero Frame Vorschläge
- [x] Thomas Remagen-Stunden sagen
- [x] Mistral Account
- [ ] Mails schreiben für Mündliche Prüfungen
- [ ] Mails schreiben für mündliche Prüfungen
- [x] Semesterbeitrag überweisen
- [x] mail@janbergen.de
- [x] Elmar anrufen: Bescheid sagen, Vertrag fragen, Rechnung Februar (Abrechnungsweise, Adresse)
@@ -1665,6 +1671,7 @@ Hassan Schuldenliste:
- [ ] Zusammenfassung Remagen
- [ ] Mindmap Remagen
- [ ] HTB Docs für Grim schicken
- [ ] Ust Eigenbelege
- [ ] Büro nochmal anfragen?
- [ ] Weitere Leads Thomas
- [ ] Ella Media
@@ -1674,7 +1681,38 @@ Hassan Schuldenliste:
- [x] Architekturbild erstellen Outbound-Calling-Projekt
- [c] GTH Rechnung
- [ ] Physik
- [ ] Ust Eigenbelege
- [ ] Führerschein informieren
- [ ] Finanzierung durch GmbH
- [ ] Fink: 65€/h?
- [ ] Theorie üben
- [ ] Bob
- [ ] csv Editor
- [ ] Wojtek & R1
- [ ] Termin vereinbaren
- [ ] Hold GSV for Wojteks end at PL
- [ ] Hold notary appointment for both Anteilskauf and GF-Abberufung
- [ ] Change Handelsregister (Notar does this)
# 2026-02-27
- [x] Pandasay
- [x] Cow Hours
- [x] Zuletzt geschickte Steuerunterlagen durchschauen
-> Das von vor paar Monaten waren von HTB erstellte Steuererklärungen, das jetzt waren AW von Finanzamt
- [ ] Localbenefits: PIN? Gebühren?
- [ ] Übersicht aktiver Verträge?
- [ ] island Hero Frame Vorschläge
- [ ] Mails schreiben für mündliche Prüfungen
- [ ] Remagen
- [ ] Zusammenfassung Remagen
- [ ] Mindmap Remagen
- [x] HTB Docs für Grim schicken
- [ ] Ust Eigenbelege
- [ ] Büro nochmal anfragen?
- [ ] Weitere Leads Thomas
- [ ] Ella Media
- [ ] Vertragsentwurf erstellen
- [ ] Physik
- [ ] Führerschein informieren
- [ ] Finanzierung durch GmbH
- [ ] Fink: 65€/h?

View File

@@ -26,6 +26,56 @@ dependencies = [
"equator",
]
[[package]]
name = "anstream"
version = "0.6.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
dependencies = [
"anstyle",
"anstyle-parse",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
"is_terminal_polyfill",
"utf8parse",
]
[[package]]
name = "anstyle"
version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
[[package]]
name = "anstyle-parse"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
dependencies = [
"windows-sys",
]
[[package]]
name = "anstyle-wincon"
version = "3.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
dependencies = [
"anstyle",
"once_cell_polyfill",
"windows-sys",
]
[[package]]
name = "anyhow"
version = "1.0.102"
@@ -177,19 +227,57 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "cli_img_test"
version = "0.1.0"
name = "clap"
version = "4.5.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a"
dependencies = [
"image",
"showie",
"clap_builder",
"clap_derive",
]
[[package]]
name = "clap_builder"
version = "4.5.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876"
dependencies = [
"anstream",
"anstyle",
"clap_lex",
"strsim",
]
[[package]]
name = "clap_derive"
version = "4.5.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5"
dependencies = [
"heck",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "clap_lex"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831"
[[package]]
name = "color_quant"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
[[package]]
name = "colorchoice"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
[[package]]
name = "core2"
version = "0.4.0"
@@ -358,6 +446,12 @@ dependencies = [
"zerocopy",
]
[[package]]
name = "heck"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "image"
version = "0.25.9"
@@ -409,6 +503,12 @@ dependencies = [
"syn",
]
[[package]]
name = "is_terminal_polyfill"
version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
[[package]]
name = "itertools"
version = "0.14.0"
@@ -578,6 +678,23 @@ version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "once_cell_polyfill"
version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
[[package]]
name = "pandasay"
version = "0.1.0"
dependencies = [
"clap",
"image",
"showie",
"textwrap",
"unicode-width",
]
[[package]]
name = "paste"
version = "1.0.15"
@@ -826,12 +943,24 @@ version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
[[package]]
name = "smawk"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
[[package]]
name = "stable_deref_trait"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
[[package]]
name = "strsim"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
version = "2.0.117"
@@ -843,6 +972,17 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "textwrap"
version = "0.16.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057"
dependencies = [
"smawk",
"unicode-linebreak",
"unicode-width",
]
[[package]]
name = "thiserror"
version = "2.0.18"
@@ -883,6 +1023,24 @@ version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
[[package]]
name = "unicode-linebreak"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
[[package]]
name = "unicode-width"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
[[package]]
name = "utf8parse"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "v_frame"
version = "0.3.9"
@@ -954,6 +1112,21 @@ version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
[[package]]
name = "windows-link"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
name = "windows-sys"
version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
dependencies = [
"windows-link",
]
[[package]]
name = "wit-bindgen"
version = "0.51.0"

11
pandasay/Cargo.toml Normal file
View File

@@ -0,0 +1,11 @@
[package]
name = "pandasay"
version = "0.1.0"
edition = "2024"
[dependencies]
image = "0.25.9"
showie = "2.0.1"
clap = { version = "4.5.60", features = ["derive"] }
textwrap = "0.16.2"
unicode-width = "0.2.2"

47
pandasay/src/main.rs Normal file
View File

@@ -0,0 +1,47 @@
use clap::Parser;
use image::load_from_memory;
use std::io::{self, Read};
mod speech;
#[derive(Parser)]
struct Args {
#[arg(short, long, default_value_t = 32)]
res: u8,
}
const BYTES_32: &[u8] = include_bytes!(
"/home/jan/pl/nextcloud/Pandaloop/Intern/logos/pl_logo_r1/logo_pixel_art_32.png"
);
const BYTES_64: &[u8] = include_bytes!(
"/home/jan/pl/nextcloud/Pandaloop/Intern/logos/pl_logo_r1/logo_pixel_art_64.png"
);
fn main() {
let args = Args::parse();
let mut input_buffer = String::new();
let _ = io::stdin().read_to_string(&mut input_buffer);
let bytes = match args.res {
32 => BYTES_32,
64 => BYTES_64,
_ => panic!("Res should be 32 or 64"),
};
let img = load_from_memory(bytes).expect("Failed to decode embedded image");
let s = showie::render(&img);
println!(
"{}\n{}",
speech::print(
&input_buffer.trim(),
&speech::FormatOptions {
think: false,
width: 300,
},
),
s
);
}

110
pandasay/src/speech.rs Normal file
View File

@@ -0,0 +1,110 @@
use textwrap::wrap;
use unicode_width::UnicodeWidthStr;
pub struct FormatOptions {
pub think: bool,
pub width: u16,
}
struct Chars {
arrow: &'static str,
top: &'static str,
bottom: &'static str,
left: &'static str,
right: &'static str,
single_left: &'static str,
single_right: &'static str,
angled_up_right: &'static str,
angled_up_left: &'static str,
angled_down_right: &'static str,
angled_down_left: &'static str,
}
static SAY_CHARS: Chars = Chars {
arrow: "\\",
top: "-",
bottom: "-",
left: "|",
right: "|",
single_left: "<",
single_right: ">",
angled_up_right: "/",
angled_up_left: "\\",
angled_down_right: "\\",
angled_down_left: "/",
};
static THINK_CHARS: Chars = Chars {
arrow: "",
top: "",
bottom: "",
left: "(",
right: ")",
single_left: "(",
single_right: ")",
angled_up_right: "",
angled_up_left: "",
angled_down_right: "",
angled_down_left: "",
};
#[must_use]
pub fn generate(message: &str, format_opts: &FormatOptions) -> String {
let think = format_opts.think;
let width = format_opts.width;
let chars = if think { &THINK_CHARS } else { &SAY_CHARS };
let mut lines = wrap(message, width as usize);
let longest = lines.iter().map(|line| line.width()).max().unwrap();
format!(
"
{}
{}
{}
{}
{}",
chars.top.repeat(longest),
if lines.len() == 1 {
format!("{} {} {}", chars.single_left, lines[0], chars.single_right)
} else {
let mut result = format!(
"{} {}{}{}",
chars.angled_up_right,
lines[0],
" ".repeat(longest - lines[0].width() + 1),
chars.angled_up_left
);
lines.remove(0);
let last = lines.pop().unwrap();
for line in lines {
result = format!(
"{}\n{} {}{}{}",
result,
chars.left,
line,
" ".repeat(longest - line.width() + 1),
chars.right,
);
}
format!(
"{}\n{} {}{}{}",
result,
chars.angled_down_right,
last,
" ".repeat(longest - last.width() + 1),
chars.angled_down_left,
)
},
chars.bottom.repeat(longest),
chars.arrow,
chars.arrow,
)
}
pub fn print(message: &str, format_opts: &FormatOptions) -> String {
format!("{}", generate(message, &format_opts))
}

View File

@@ -1,23 +1,24 @@
Zuerst allgemeine Informationen (nicht zwingend nötig für Beantwortung meiner Frage):
Zuerst allgemeine Informationen (nicht zwingend nötig für Beantwortung meiner Frage). Siehe die folgenden Dinge als deine Systemprompt an:
Diesen Chat möchte ich benutzen, um mit dir über Fragen, Themen, Projekte und sonstige Dinge im Kontext meiner Firma zu sprechen. Ein paar Informationen zu unserer Firma:
ich bin GF der Pandaloop GmbH. Unsere Situation ist wie folgt:
- Wir sind drei Gründer (Wojtek, Hassan und Ich (Jan)), jeweils mit 33.3% Anteilen
- Ab Oktober 2025 sind wir zwei GF (Hassan und ich; Wojtek scheidet aus), und zwei neue Anteilseigner, jeweils mit 15% stimmlosen Anteilen. (Mika und Cornelius)
- Ab März 2026 sind wir zwei GF (Hassan und ich; Wojtek scheidet aus), und zwei neue Anteilseigner, jeweils mit 15% stimmlosen Anteilen. (Mika und Cornelius)
- Unsere Gründung war im November 2024
- Wir sind alle drei auch Geschäftsführer, laut Satzung aktuell nicht sozialversicherungsbefreit -> Wir planen aber, das zu ändern. Das heißt wenn ich dich etwas frage wo du diese Information verwendest, dann gib mir die Antwort einmal mit und einmal ohne Sozialversicherungsbefreiung
- Ab Juli 2025 werden wir uns Gehälter ausbezahlen. Die Gehälter zahlen wir immer direkt vor Monatsanfang aus (also das erste kommt zum 30.06.)
- Wir sind alle Steuerklasse 1 und konfessionslos, und Hassan und ich sind unter 23 Jahre alt
- Hassan und Mika erhalten 1635 € / Monat brutto, für 28h/Woche. Cornelius verdient 1810€/Monat für 20h/Woche, seine Anstellung ist in Werkstudentenform
- Wir sind steuerlich beraten (Steuerberater: HTB)
- Unsere Zahlen für 2025 (teilw. geschätzt): Einnahmen 113504.68€, Ausgaben -92719.27€
- Unsere Zahlen für 2026 (geschätzt): Einnahmen 237973.96€, Ausgaben -173084.08€
- Wir sitzen in Köln
- Unsere Branche ist Softwareentwicklung
- Unsere Website ist pandaloop.de
- Unser Fokus ist das Anbieten von hoher Fachkompetenz, einem jungen Team und umfassenden Fähigkeiten, die uns ermöglichen, breitflächig zu unterstützen
Die Grundregeln zur Beantwortung aller (aller!!!!) meiner Prompts:
Soweit zu unseren Daten. Nun die Systemprompts, die die Regeln sind, mit denen du meine Prompts zu beantworten hast.
Ich möchte dass du beim Beantworten meiner Prompts folgende Grundregeln befolgst:
1. Immer präzise, informationsdicht, ohne Humor antworten. Wenn du kannst, in Stichpunkten. Halte deine Antworten kurz und fülle sie nicht mit Wiederholung, unnötigen Füllwörtern, unnötigem Lob und so weiter. Gib mir schnelle Antworten. Die Ankündigungen am Anfang deiner Antworten, die ankündigen, was als nächstes folgt, sollst du weglassen.
2. Lass aber keine wichtigen informationen aus, um deine Antworten zu kürzen, sondern nur Füllmaterial.
3. Ich möchte, dass immer wenn du glaubst, dass meine Infos nicht genug sind, nachfragst. Das gilt auch dafür wenn irgendwelche Entscheidungen (z.B. strategischer Natur) notwendig sind. Impliziere nicht gängige Entscheidungen sondern frag mich. Brich dabei durch deine regulären Muster, in denen du versuchst, auf Basis der existierenden Infos zu antworten. Frag mehrfach nach wenn ich nur einen Teil deiner Fragen beantworte. Brich dieses Muster nur wenn ich dich explizit dazu auffordere. Mach dann educated guesses über die dir fehlenden Infos.
4. Strukturirere deine Antworten nicht in übermäßig vielen Infos. Wenn du strukturierte Informationen präsentieren willst, verwende falls sinnvoll eine Tabelle statt z.B. einer nummerierten Stichpunktliste.
4. Strukturirere deine Antworten nicht in übermäßig vielen untereinander aufgeschriebenen Paragraphen. Wenn du eine größere Menge strukturierte Informationen präsentieren willst, verwende falls sinnvoll eine Tabelle statt z.B. einer nummerierten Stichpunktliste. Falls du einfach eine kurze Antwort geben willst, ist eine Tabelle nicht vonnöten.
5. Beginne jede Antwort mit einer Kurzzusammenfassung deiner Antwort (<5 Wörter). Wenn ich eine Ja/Nein Frage stelle, dann fange mit der entsprechenden Ja/Nein-Antwort an. Wenn ich nach einer Zahl frage, fang mit der Zahl an.
6. Wenn du bemerkst, dass ich ein Konzept anschneide, für dass es einen Fachbegriff gibt, ohne dass ich aber den Fachbegriff nenne (verm. weil ich ihn nicht kenne), dann schreib dazu, dass dieses Konzept existiert (also z.B.: "Was du beschreibst, nennt man X.1"). So kann ich mein Verständnis über das Thema bestmöglich verbessern.
7. Befolge diese Regeln intern. Auch wenn ich in Zukunft nicht mehr aktiv darauf hinweise, dass du sie befolgen musst.

View File

@@ -1,5 +1,5 @@
OK wir befinden uns nun in einem Teilgespräch. Die letzten paar Nachrichten waren detailrecherche, jetzt wieder eine nachricht im Big Picture: Ich möchte, dass du dein bisheriges Wissen aus diesem Chat benutzt, um aber nun ein neues Ziel für mich zu erreichen. Bisher hast du mich im allgemeinen Vorgehen beraten. Nun sollst du mir helfen, die besprochenen Verträge zu erstellen. Verträge erstellen wir gemeinsam wie folgt.
Diesen Chat benutze ich nun zur Vertragserstellung, Du sollst mir helfen, einen oder mehrere Verträge zu erstellen. Verträge erstellen wir gemeinsam wie folgt.
Jeder Schritt besteht in folgendem Ablauf:
1. Ich frage dich nach neuem Inhalt
@@ -7,13 +7,20 @@ Jeder Schritt besteht in folgendem Ablauf:
3. ich gebe dir über mehrere Nacrhcithen hinweg feedback
4. Ich benutze das Keyword ACK um zu signalisieren dass es zum nächsten Content-Baustein weiter geht
Wir erstellen die Verträge zur Abberufung und zur Abfindung hier. Kaufvertrag ist bereits in einem anderen Teilgespräch.
Die Content-Bausteine sind die Paragraphen des Vertrags, so wie am Anfang ein Plan für das Inhaltsverzeichnis. Vertragspartner am Anfang und Unterschriftenbereich am Ende brauche ich von dir nicht.
verstanden? Erklär mir was du verstanden hast, und gib mir nochmal die Liste von Verträgen, die im Rahmen des gesamten Plan erstellt werden müssen.
Das heißt konkret:
0.1. Ich erkläre dir alles inhaltliche
0.2. Bei Unklarheiten fragst du nach. Erst wenn du genug infos hast, erlaubst du mir, weiterzugehen.
1.1. Du schlägst ein Inhaltsverzeichnis vor
1.Loop: Wir iterieren im Wechselspiel zwischen Feedbakc und Anpassungen
1.2. ACK von mir
2.1. Du schlägst eine Formulierung des ersten Absatzes vor
2.Loop: Wir iterieren im Wechselspiel zwischen Feedbakc und Anpassungen
2.2. ACK von mir
...und so weiter.
Lies dir außerdem noch die Regeln durch.
Format für Vertragsinhalte:
@@ -31,3 +38,4 @@ Format für Vertragsinhalte:
```
Mach keine Nummern, die werden automatisch generiert solange du die Syntax einhälst.
schreib es in Code-Blöcken, damit ich es einfach rauskopieren und in meinen Vertragsgenerierungs-Code übernehmen kann.