feat(pipeline): the pure pipeline, checked against its goldens
The modules that turn a frozen range into passes and passes into a verdict: :Schema, :Tools (the DENY, git and base lists, a leaf, so the config and the pool both read them), :Plan, :Artifact, :Inventory, :Dispositions, :State, :Normalize, :Stream, :Prompt, :Config, and the URL half of :PgWire. Units, jobs, results, the config and the claude stream stay JSON from end to end, so every key keeps its place; :Text gives JSON values truthiness, get, ==, membership and Str(), and throws Dyn::Error under a name for each kind of unexpected data. Exactness where the bytes are seen: - the stream classifiers are hand-written scanners with case-insensitive folds (the Kelvin sign is a k), Unicode \b and \s, and `.` stopping at \n; the SQL call detection takes `<exe> sql` with any path before it; - config problems carry the JSON scanner's and the UTF-8 decoder's own texts, positions included; - a float total is Neumaier's compensated sum, and the build passes -ffp-contract=off: -march=native would fuse a*b+c; - `crafter-review inventory` and `config` print what the goldens record, byte for byte (the fixture and 14 configs, broken ones included); a message names this binary as the command to run. tests/Goldens: the recorded answers over the fixtures next to them (the commits fixture, a rich versioned series with CRLF, a folded subject, Markdown headings in and out of fences, the code-key rewrites); the suite compares 2304 results as DumpFile writes them, so a key out of order fails too. All agree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
b02de3ceff
commit
741e3a656d
70 changed files with 30565 additions and 21 deletions
|
|
@ -0,0 +1,30 @@
|
|||
From 1111111111111111111111111111111111111111 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH 1/2] add the greeting module
|
||||
|
||||
---
|
||||
hello.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 hello.py
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
new file mode 100644
|
||||
index 0000000..a1b2c3d
|
||||
--- /dev/null
|
||||
+++ b/hello.py
|
||||
@@ -0,0 +1,9 @@
|
||||
+"""Greetings."""
|
||||
+
|
||||
+
|
||||
+def greet():
|
||||
+ return "hello"
|
||||
+
|
||||
+
|
||||
+def farewell():
|
||||
+ return "bye"
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From 2222222222222222222222222222222222222222 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH 2/2] greet by name and document it
|
||||
|
||||
The greeting takes a name now and the farewell mirrors it; the README
|
||||
documents both calls. Callers that pass nothing still get the old text.
|
||||
|
||||
The format follows the greeting spec [1].
|
||||
|
||||
[1] https://example.org/greeting-spec
|
||||
---
|
||||
README.md | 4 ++++
|
||||
hello.py | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
create mode 100644 README.md
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
new file mode 100644
|
||||
index 0000000..d4e5f6a
|
||||
--- /dev/null
|
||||
+++ b/README.md
|
||||
@@ -0,0 +1,4 @@
|
||||
+# hello
|
||||
+
|
||||
+Call `greet(name)` or `farewell(name)`; without a name both return the
|
||||
+plain text.
|
||||
diff --git a/hello.py b/hello.py
|
||||
index a1b2c3d..b7c8d9e 100644
|
||||
--- a/hello.py
|
||||
+++ b/hello.py
|
||||
@@ -1,9 +1,13 @@
|
||||
"""Greetings."""
|
||||
|
||||
|
||||
-def greet():
|
||||
- return "hello"
|
||||
+def greet(name=None):
|
||||
+ if name is None:
|
||||
+ return "hello"
|
||||
+ return "hello " + name
|
||||
|
||||
|
||||
@@ -7,3 +11,5 @@ def greet():
|
||||
-def farewell():
|
||||
- return "bye"
|
||||
+def farewell(name=None):
|
||||
+ if name is None:
|
||||
+ return "bye"
|
||||
+ return "bye " + name
|
||||
|
||||
base-commit: 9999999999999999999999999999999999999999
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
From 1111111111111111111111111111111111111111 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH 1/2] add the greeting module
|
||||
|
||||
---
|
||||
hello.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 hello.py
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
new file mode 100644
|
||||
index 0000000..a1b2c3d
|
||||
--- /dev/null
|
||||
+++ b/hello.py
|
||||
@@ -0,0 +1,9 @@
|
||||
+"""Greetings."""
|
||||
+
|
||||
+
|
||||
+def greet():
|
||||
+ return "hello"
|
||||
+
|
||||
+
|
||||
+def farewell():
|
||||
+ return "bye"
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From 2222222222222222222222222222222222222222 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH 2/2] greet by name and document it
|
||||
|
||||
The greeting takes a name now and the farewell mirrors it; the README
|
||||
documents both calls. Callers that pass nothing still get the old text.
|
||||
|
||||
The format follows the greeting spec [1].
|
||||
|
||||
[1] https://example.org/greeting-spec
|
||||
---
|
||||
README.md | 4 ++++
|
||||
hello.py | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
create mode 100644 README.md
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
new file mode 100644
|
||||
index 0000000..d4e5f6a
|
||||
--- /dev/null
|
||||
+++ b/README.md
|
||||
@@ -0,0 +1,4 @@
|
||||
+# hello
|
||||
+
|
||||
+Call `greet(name)` or `farewell(name)`; without a name both return the
|
||||
+plain text.
|
||||
diff --git a/hello.py b/hello.py
|
||||
index a1b2c3d..b7c8d9e 100644
|
||||
--- a/hello.py
|
||||
+++ b/hello.py
|
||||
@@ -1,9 +1,13 @@
|
||||
"""Greetings."""
|
||||
|
||||
|
||||
-def greet():
|
||||
- return "hello"
|
||||
+def greet(name=None):
|
||||
+ if name is None:
|
||||
+ return "hello"
|
||||
+ return "hi " + name
|
||||
|
||||
|
||||
@@ -7,3 +11,5 @@ def greet():
|
||||
-def farewell():
|
||||
- return "bye"
|
||||
+def farewell(name=None):
|
||||
+ if name is None:
|
||||
+ return "bye"
|
||||
+ return "bye " + name
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
From 1111111111111111111111111111111111111111 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH 1/2] add the greeting module
|
||||
|
||||
---
|
||||
hello.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 hello.py
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
new file mode 100644
|
||||
index 0000000..a1b2c3d
|
||||
--- /dev/null
|
||||
+++ b/hello.py
|
||||
@@ -0,0 +1,9 @@
|
||||
+"""Greetings."""
|
||||
+
|
||||
+
|
||||
+def greet():
|
||||
+ return "hello"
|
||||
+
|
||||
+
|
||||
+def farewell():
|
||||
+ return "bye"
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From 2222222222222222222222222222222222222222 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH 2/2] greet by name and document it
|
||||
|
||||
The greeting takes a name now and the farewell mirrors it; the README
|
||||
documents both calls. Callers that pass nothing still get the old text.
|
||||
|
||||
The format follows the greeting spec [1].
|
||||
|
||||
[1] https://example.org/greeting-spec
|
||||
---
|
||||
README.md | 4 ++++
|
||||
hello.py | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
create mode 100644 README.md
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
new file mode 100644
|
||||
index 0000000..d4e5f6a
|
||||
--- /dev/null
|
||||
+++ b/README.md
|
||||
@@ -0,0 +1,4 @@
|
||||
+# hello
|
||||
+
|
||||
+Call `greet(name)` or `farewell(name)`; without a name both return the
|
||||
+plain text.
|
||||
diff --git a/hello.py b/hello.py
|
||||
index a1b2c3d..b7c8d9e 100644
|
||||
--- a/hello.py
|
||||
+++ b/hello.py
|
||||
@@ -1,9 +1,13 @@
|
||||
"""Greetings, by name."""
|
||||
|
||||
|
||||
-def greet():
|
||||
- return "hello"
|
||||
+def greet(name=None):
|
||||
+ if name is None:
|
||||
+ return "hello"
|
||||
+ return "hello " + name
|
||||
|
||||
|
||||
@@ -7,3 +11,5 @@ def greet():
|
||||
-def farewell():
|
||||
- return "bye"
|
||||
+def farewell(name=None):
|
||||
+ if name is None:
|
||||
+ return "bye"
|
||||
+ return "bye " + name
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
From 1111111111111111111111111111111111111111 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH 1/2] add the greeting module
|
||||
|
||||
---
|
||||
hello.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 hello.py
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
new file mode 100644
|
||||
index 0000000..a1b2c3d
|
||||
--- /dev/null
|
||||
+++ b/hello.py
|
||||
@@ -0,0 +1,9 @@
|
||||
+"""Greetings."""
|
||||
+
|
||||
+
|
||||
+def greet():
|
||||
+ return "hello"
|
||||
+
|
||||
+
|
||||
+def farewell():
|
||||
+ return "bye"
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From 2222222222222222222222222222222222222222 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH 2/2] greet by name and document it
|
||||
|
||||
The greeting takes a name now and the farewell mirrors it; the README
|
||||
documents both calls. Callers that pass nothing still get the old text.
|
||||
|
||||
The format follows the greeting spec [1].
|
||||
|
||||
[1] https://example.org/greeting-spec
|
||||
---
|
||||
README.md | 4 ++++
|
||||
hello.py | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
create mode 100644 README.md
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
new file mode 100644
|
||||
index 0000000..d4e5f6a
|
||||
--- /dev/null
|
||||
+++ b/README.md
|
||||
@@ -0,0 +1,4 @@
|
||||
+# hello
|
||||
+
|
||||
+Use `greet(name)` or `farewell(name)`; without a name both return the
|
||||
+plain text.
|
||||
diff --git a/hello.py b/hello.py
|
||||
index a1b2c3d..b7c8d9e 100644
|
||||
--- a/hello.py
|
||||
+++ b/hello.py
|
||||
@@ -1,9 +1,13 @@
|
||||
"""Greetings."""
|
||||
|
||||
|
||||
-def greet():
|
||||
- return "hello"
|
||||
+def greet(name=None):
|
||||
+ if name is None:
|
||||
+ return "hello"
|
||||
+ return "hello " + name
|
||||
|
||||
|
||||
@@ -7,3 +11,5 @@ def greet():
|
||||
-def farewell():
|
||||
- return "bye"
|
||||
+def farewell(name=None):
|
||||
+ if name is None:
|
||||
+ return "bye"
|
||||
+ return "bye " + name
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
From 1111111111111111111111111111111111111111 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH 1/2] add the greeting module
|
||||
|
||||
---
|
||||
hello.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 hello.py
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
new file mode 100644
|
||||
index 0000000..a1b2c3d
|
||||
--- /dev/null
|
||||
+++ b/hello.py
|
||||
@@ -0,0 +1,9 @@
|
||||
+"""Greetings."""
|
||||
+
|
||||
+
|
||||
+def greet():
|
||||
+ return "hello"
|
||||
+
|
||||
+
|
||||
+def farewell():
|
||||
+ return "bye"
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From 2222222222222222222222222222222222222222 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH 2/2] greet by name and document it
|
||||
|
||||
The greeting takes a name now and the farewell mirrors it; the README
|
||||
documents both calls. Callers that pass nothing still get the old text.
|
||||
|
||||
The format follows the greeting spec [1].
|
||||
|
||||
[1] https://example.org/greeting-spec
|
||||
---
|
||||
README.md | 4 ++++
|
||||
hello.py | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
create mode 100644 README.md
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
new file mode 100644
|
||||
index 0000000..d4e5f6a
|
||||
--- /dev/null
|
||||
+++ b/README.md
|
||||
@@ -0,0 +1,4 @@
|
||||
+# hello
|
||||
+
|
||||
+Call `greet(name)` or `farewell(name)`; without a name both return the
|
||||
+plain text.
|
||||
diff --git a/hello.py b/hello.py
|
||||
index a1b2c3d..b7c8d9e 100755
|
||||
--- a/hello.py
|
||||
+++ b/hello.py
|
||||
@@ -1,9 +1,13 @@
|
||||
"""Greetings."""
|
||||
|
||||
|
||||
-def greet():
|
||||
- return "hello"
|
||||
+def greet(name=None):
|
||||
+ if name is None:
|
||||
+ return "hello"
|
||||
+ return "hello " + name
|
||||
|
||||
|
||||
@@ -7,3 +11,5 @@ def greet():
|
||||
-def farewell():
|
||||
- return "bye"
|
||||
+def farewell(name=None):
|
||||
+ if name is None:
|
||||
+ return "bye"
|
||||
+ return "bye " + name
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
From 1111111111111111111111111111111111111111 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH 1/2] add the greeting module
|
||||
|
||||
---
|
||||
hello.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 hello.py
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
new file mode 100644
|
||||
index 0000000..a1b2c3d
|
||||
--- /dev/null
|
||||
+++ b/hello.py
|
||||
@@ -0,0 +1,9 @@
|
||||
+"""Greetings."""
|
||||
+
|
||||
+
|
||||
+def greet():
|
||||
+ return "hello"
|
||||
+
|
||||
+
|
||||
+def farewell():
|
||||
+ return "bye"
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
From 2222222222222222222222222222222222222222 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH 2/2] greet by name and document it
|
||||
|
||||
---
|
||||
README.md | 4 ++++
|
||||
hello.py | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
create mode 100644 README.md
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
new file mode 100644
|
||||
index 0000000..d4e5f6a
|
||||
--- /dev/null
|
||||
+++ b/README.md
|
||||
@@ -0,0 +1,4 @@
|
||||
+# hello
|
||||
+
|
||||
+Call `greet(name)` or `farewell(name)`; without a name both return the
|
||||
+plain text.
|
||||
diff --git a/hello.py b/hello.py
|
||||
index a1b2c3d..b7c8d9e 100644
|
||||
--- a/hello.py
|
||||
+++ b/hello.py
|
||||
@@ -1,9 +1,13 @@
|
||||
"""Greetings."""
|
||||
|
||||
|
||||
-def greet():
|
||||
- return "hello"
|
||||
+def greet(name=None):
|
||||
+ if name is None:
|
||||
+ return "hello"
|
||||
+ return "hello " + name
|
||||
|
||||
|
||||
@@ -7,3 +11,5 @@ def greet():
|
||||
-def farewell():
|
||||
- return "bye"
|
||||
+def farewell(name=None):
|
||||
+ if name is None:
|
||||
+ return "bye"
|
||||
+ return "bye " + name
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
From 1111111111111111111111111111111111111111 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH 1/2] add the greeting module
|
||||
|
||||
---
|
||||
hello.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 hello.py
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
new file mode 100644
|
||||
index 0000000..a1b2c3d
|
||||
--- /dev/null
|
||||
+++ b/hello.py
|
||||
@@ -0,0 +1,9 @@
|
||||
+"""Greetings."""
|
||||
+
|
||||
+
|
||||
+def greet():
|
||||
+ return "hello"
|
||||
+
|
||||
+
|
||||
+def farewell():
|
||||
+ return "bye"
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
From 2222222222222222222222222222222222222222 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH 2/2] greet by name and document it
|
||||
|
||||
The greeting takes a name now and the farewell mirrors it; the README
|
||||
documents both calls. Callers that pass nothing still get the old text.
|
||||
|
||||
The format follows the greeting spec [1].
|
||||
|
||||
[1] https://example.org/greeting-spec
|
||||
---
|
||||
README.md | 4 ++++
|
||||
hello.py | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
create mode 100644 README.md
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
index a1b2c3d..b7c8d9e 100644
|
||||
--- a/hello.py
|
||||
+++ b/hello.py
|
||||
@@ -1,9 +1,13 @@
|
||||
"""Greetings."""
|
||||
|
||||
|
||||
-def greet():
|
||||
- return "hello"
|
||||
+def greet(name=None):
|
||||
+ if name is None:
|
||||
+ return "hello"
|
||||
+ return "hello " + name
|
||||
|
||||
|
||||
@@ -7,3 +11,5 @@ def greet():
|
||||
-def farewell():
|
||||
- return "bye"
|
||||
+def farewell(name=None):
|
||||
+ if name is None:
|
||||
+ return "bye"
|
||||
+ return "bye " + name
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
From bcdef0123456789abcd000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH 1/3] add the greeting module
|
||||
|
||||
---
|
||||
hello.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 hello.py
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
new file mode 100644
|
||||
index 1234567..89abcde
|
||||
--- /dev/null
|
||||
+++ b/hello.py
|
||||
@@ -2,0 +3,9 @@
|
||||
+"""Greetings."""
|
||||
+
|
||||
+
|
||||
+def greet():
|
||||
+ return "hello"
|
||||
+
|
||||
+
|
||||
+def farewell():
|
||||
+ return "bye"
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.55.0
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From cdef0123456789abcd0000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH 2/3] greet by name and document it
|
||||
|
||||
greet() takes a name now and the farewell mirrors it; the README
|
||||
documents both calls. Callers that pass nothing still get the old text.
|
||||
|
||||
The format follows the greeting spec [1].
|
||||
|
||||
[1] https://example.org/greeting-spec
|
||||
---
|
||||
README.md | 4 ++++
|
||||
hello.py | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
create mode 100644 README.md
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
new file mode 100644
|
||||
index 1234567..89abcde
|
||||
--- /dev/null
|
||||
+++ b/README.md
|
||||
@@ -2,0 +3,4 @@
|
||||
+# hello
|
||||
+
|
||||
+Call `greet(name)` or `farewell(name)`; without a name both return the
|
||||
+plain text.
|
||||
diff --git a/hello.py b/hello.py
|
||||
index 1234567..89abcde 100644
|
||||
--- a/hello.py
|
||||
+++ b/hello.py
|
||||
@@ -3,9 +3,13 @@
|
||||
"""Greetings."""
|
||||
|
||||
|
||||
-def greet():
|
||||
- return "hello"
|
||||
+def greet(name=None):
|
||||
+ if name is None:
|
||||
+ return "hello"
|
||||
+ return "hello " + name
|
||||
|
||||
|
||||
@@ -9,3 +13,5 @@ def greet():
|
||||
-def farewell():
|
||||
- return "bye"
|
||||
+def farewell(name=None):
|
||||
+ if name is None:
|
||||
+ return "bye"
|
||||
+ return "bye " + name
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.55.0
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
From 1111111111111111111111111111111111111111 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH 1/2] add the greeting module
|
||||
|
||||
---
|
||||
hello.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 hello.py
|
||||
|
||||
diff --git a/hello.py b/hello.py
|
||||
new file mode 100644
|
||||
index 0000000..a1b2c3d
|
||||
--- /dev/null
|
||||
+++ b/hello.py
|
||||
@@ -0,0 +1,9 @@
|
||||
+"""Greetings."""
|
||||
+
|
||||
+
|
||||
+def greet():
|
||||
+ return "hello"
|
||||
+
|
||||
+
|
||||
+def farewell():
|
||||
+ return "bye"
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From 2222222222222222222222222222222222222222 Mon Sep 17 00:00:00 2001
|
||||
From: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH 2/2] greet by name and document it
|
||||
|
||||
The greeting takes a name now and the farewell mirrors it; the README
|
||||
documents both calls. Callers that pass nothing still get the old text.
|
||||
|
||||
The format follows the greeting spec [1].
|
||||
|
||||
[1] https://example.org/greeting-spec
|
||||
---
|
||||
README.md | 4 ++++
|
||||
hello.py | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
create mode 100644 README.md
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
new file mode 100644
|
||||
index 0000000..d4e5f6a
|
||||
--- /dev/null
|
||||
+++ b/README.md
|
||||
@@ -0,0 +1,4 @@
|
||||
+# hello
|
||||
+
|
||||
+Call `greet(name)` or `farewell(name)`; without a name both return the
|
||||
+plain text.
|
||||
diff --git a/hello.py b/hello.py
|
||||
index a1b2c3d..b7c8d9e 100644
|
||||
--- a/hello.py
|
||||
+++ b/hello.py
|
||||
@@ -1,9 +1,13 @@
|
||||
"""Greetings."""
|
||||
|
||||
|
||||
-def greet():
|
||||
- return "hello"
|
||||
+def greet(name=None):
|
||||
+ if name is None:
|
||||
+ return "hello"
|
||||
+ return "hello " + name
|
||||
|
||||
|
||||
@@ -7,3 +11,5 @@ def greet():
|
||||
-def farewell():
|
||||
- return "bye"
|
||||
+def farewell(name=None):
|
||||
+ if name is None:
|
||||
+ return "bye"
|
||||
+ return "bye " + name
|
||||
|
||||
base-commit: 0000000000000000000000000000000000000000
|
||||
--
|
||||
2.51.0
|
||||
|
||||
5
tests/Goldens/fixture/dispositions/0001-a.patch
Normal file
5
tests/Goldens/fixture/dispositions/0001-a.patch
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
x
|
||||
ANCHOR TEXT
|
||||
y
|
||||
ANCHOR TEXT
|
||||
CRLF
|
||||
23519
tests/Goldens/fixture/pipeline.json
Normal file
23519
tests/Goldens/fixture/pipeline.json
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,60 @@
|
|||
From 1111111111111111111111111111111111111111 Mon Sep 17 00:00:00 2001
|
||||
From: Jörijn Tester <tester@example.com>
|
||||
Date: Wed, 24 Sep 2026 10:00:00 +0200
|
||||
Subject: [PATCH v2 1/3] [RFC] add the docs and a tool, with a subject long enough to
|
||||
be folded onto a second line by git
|
||||
|
||||
The docs explain the tool. A non-breaking space sits in this line,
|
||||
|
||||
and the line before holds nothing else.
|
||||
|
||||
Signed-off-by: Jörijn Tester <tester@example.com>
|
||||
Co-Authored-By: Someone <someone@example.com>
|
||||
---
|
||||
docs/guide.md | 22 ++++++++++++++++++++++
|
||||
tool.py | 4 ++++
|
||||
2 files changed, 26 insertions(+)
|
||||
create mode 100644 docs/guide.md
|
||||
create mode 100755 tool.py
|
||||
|
||||
diff --git a/docs/guide.md b/docs/guide.md
|
||||
new file mode 100644
|
||||
index 0000000..1234567
|
||||
--- /dev/null
|
||||
+++ b/docs/guide.md
|
||||
@@ -0,0 +1,22 @@
|
||||
+# Guide
|
||||
+## Straight after the title
|
||||
+
|
||||
+Intro text.
|
||||
+
|
||||
+## Install
|
||||
+
|
||||
+Run the installer.
|
||||
+
|
||||
+```sh
|
||||
+# not a heading, inside a fence
|
||||
+make install
|
||||
+```
|
||||
+
|
||||
+####### seven hashes are no heading
|
||||
+#nospace is no heading either
|
||||
+ ~~~
|
||||
+## inside a fence indented by three
|
||||
+ ~~~
|
||||
+ ~~~
|
||||
+## a fence indented by four is none
|
||||
+Done.
|
||||
diff --git a/tool.py b/tool.py
|
||||
new file mode 100755
|
||||
index 0000000..89abcde
|
||||
--- /dev/null
|
||||
+++ b/tool.py
|
||||
@@ -0,0 +1,4 @@
|
||||
+#!/usr/bin/env python3
|
||||
+import sys
|
||||
+print("é ünïcödé – a dash, and a line long enough that its excerpt is cut at ninety code points …")
|
||||
+sys.exit(0)
|
||||
--
|
||||
2.55.0
|
||||
|
||||
40
tests/Goldens/fixture/rich/v2-0002-rename-the-tool.patch
Normal file
40
tests/Goldens/fixture/rich/v2-0002-rename-the-tool.patch
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
From 2222222222222222222222222222222222222222 Mon Sep 17 00:00:00 2001
|
||||
From: Jörijn Tester <tester@example.com>
|
||||
Date: Wed, 24 Sep 2026 10:05:00 +0200
|
||||
Subject: [PATCH v2 2/3] rename the tool
|
||||
|
||||
---
|
||||
README.md | 2 --
|
||||
tool.py => bin/tool.py | 4 ++--
|
||||
2 files changed, 2 insertions(+), 4 deletions(-)
|
||||
delete mode 100644 README.md
|
||||
rename tool.py => bin/tool.py (80%)
|
||||
mode change 100755 => 100644
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
deleted file mode 100644
|
||||
index 1111111..0000000
|
||||
--- a/README.md
|
||||
+++ /dev/null
|
||||
@@ -1,2 +0,0 @@
|
||||
-# Old
|
||||
-text
|
||||
diff --git a/tool.py b/bin/tool.py
|
||||
similarity index 80%
|
||||
rename from tool.py
|
||||
rename to bin/tool.py
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
index 89abcde..fedcba9
|
||||
--- a/tool.py
|
||||
+++ b/bin/tool.py
|
||||
@@ -1 +1 @@
|
||||
-#!/usr/bin/env python3
|
||||
+#!/usr/bin/python3
|
||||
@@ -3,2 +3,2 @@ import sys
|
||||
-print("é ünïcödé – a dash")
|
||||
+print("ascii")
|
||||
sys.exit(0)
|
||||
--
|
||||
2.55.0
|
||||
|
||||
26
tests/Goldens/fixture/rich/v2-0003-add-tests.patch
Normal file
26
tests/Goldens/fixture/rich/v2-0003-add-tests.patch
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
From 3333333333333333333333333333333333333333 Mon Sep 17 00:00:00 2001
|
||||
From: Jörijn Tester <tester@example.com>
|
||||
Date: Wed, 24 Sep 2026 10:10:00 +0200
|
||||
Subject: [PATCH v2 3/3] add tests
|
||||
|
||||
Reviewed-by: Someone <someone@example.com>
|
||||
---
|
||||
tests/test_tool.py | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
create mode 100644 tests/test_tool.py
|
||||
|
||||
diff --git a/tests/test_tool.py b/tests/test_tool.py
|
||||
new file mode 100644
|
||||
index 0000000..1111111
|
||||
--- /dev/null
|
||||
+++ b/tests/test_tool.py
|
||||
@@ -0,0 +1,3 @@
|
||||
+def test_tool():
|
||||
+ assert True # x
y
|
||||
+ pass
|
||||
|
||||
base-commit: 0123456789abcdef0123456789abcdef01234567
|
||||
prerequisite-patch-id: abcdef0123456789abcdef0123456789abcdef01
|
||||
--
|
||||
2.55.0
|
||||
|
||||
1
tests/Goldens/fixture/slots/fixture.json
Normal file
1
tests/Goldens/fixture/slots/fixture.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
1
tests/Goldens/fixture/slots/slots/1/slot.json
Normal file
1
tests/Goldens/fixture/slots/slots/1/slot.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"appUrl": "http://localhost:8081/", "apiUrls": ["http://a"], "dbUrl": "postgresql://u:p@127.0.0.1:1/x", "login": "fixture.json"}
|
||||
1
tests/Goldens/fixture/slots/slots/10/slot.json
Normal file
1
tests/Goldens/fixture/slots/slots/10/slot.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"appUrl": "https://h:8443"}
|
||||
1
tests/Goldens/fixture/slots/slots/2/slot.json
Normal file
1
tests/Goldens/fixture/slots/slots/2/slot.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"appUrl": "ftp://x"}
|
||||
1
tests/Goldens/fixture/slots/slots/3/slot.json
Normal file
1
tests/Goldens/fixture/slots/slots/3/slot.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{nope
|
||||
1
tests/Goldens/fixture/slots/slots/4/slot.json
Normal file
1
tests/Goldens/fixture/slots/slots/4/slot.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"appUrl": "http://x", "apiUrls": [1]}
|
||||
1
tests/Goldens/fixture/slots/slots/5/slot.json
Normal file
1
tests/Goldens/fixture/slots/slots/5/slot.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"appUrl": "http://x", "dbUrl": "postgresql://u@db.example.com/x"}
|
||||
1
tests/Goldens/fixture/slots/slots/6/slot.json
Normal file
1
tests/Goldens/fixture/slots/slots/6/slot.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"appUrl": "http://x", "login": "missing.json"}
|
||||
1
tests/Goldens/fixture/slots/slots/7/slot.json
Normal file
1
tests/Goldens/fixture/slots/slots/7/slot.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"appUrl": "http://x", "login": 5}
|
||||
1
tests/Goldens/fixture/slots/slots/x/slot.json
Normal file
1
tests/Goldens/fixture/slots/slots/x/slot.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
[]
|
||||
5
tests/Goldens/fixture/stream-success.jsonl
Normal file
5
tests/Goldens/fixture/stream-success.jsonl
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{"type":"system","subtype":"init","cwd":"/home/jorijn/repos/example","session_id":"11111111-2222-4333-8444-555555555555","tools":["Bash","Glob","Grep","Read","StructuredOutput"],"mcp_servers":[],"model":"claude-opus-5","permissionMode":"default","slash_commands":[],"apiKeySource":"none","claude_code_version":"2.1.263","output_style":"default","agents":["claude","claude-code-guide","Explore","general-purpose","Plan"],"skills":[],"plugins":[],"capabilities":["interrupt_receipt_v1","interrupt_cancel_queued_v1","msg_lifecycle_v1"],"analytics_disabled":true,"product_feedback_disabled":true,"uuid":"685017ca-8568-4652-9e23-830f5da1970d","messaging_socket_path":"/run/user/1000/cc-socks/254300.sock","fast_mode_state":"off","fast_mode_disabled_reason":"unknown"}
|
||||
{"type":"assistant","message":{"model":"claude-opus-5","id":"msg_011Cf7xXggLZUyvd46RvtTQK","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_012DoTWyn2Zsw7bzvkYnA6bq","name":"StructuredOutput","input":{"coverage":[{"item":"R1","verdict":"clear","basis":"fixture"}],"findings":[],"notes":[],"verdict":"SEND-READY"},"caller":{"type":"direct"}}],"container":null,"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":8630,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":8630},"output_tokens":25,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"11111111-2222-4333-8444-555555555555","uuid":"27b4e645-8830-4ed3-80e7-3b9b72786291","timestamp":"2026-09-16T23:07:12.378Z","request_id":"req_011Cf7xXgFnbpSD2d9VNWVBQ"}
|
||||
{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_012DoTWyn2Zsw7bzvkYnA6bq","type":"tool_result","content":"Structured output provided successfully"}]},"parent_tool_use_id":null,"session_id":"11111111-2222-4333-8444-555555555555","uuid":"5ac21f12-5a67-4ed3-88bd-699742874b2b","timestamp":"2026-09-16T23:07:12.385Z","tool_use_result":"Structured output provided successfully"}
|
||||
{"type":"rate_limit_event","rate_limit_info":{"status":"allowed","resetsAt":1789614000,"rateLimitType":"five_hour","overageStatus":"rejected","overageDisabledReason":"org_level_disabled","isUsingOverage":false,"unifiedWindows":{"five_hour":{"utilization":0.2,"resetsAt":1789614000},"seven_day":{"utilization":0.38,"resetsAt":1789783200}}},"uuid":"56cea5e6-f4ec-4c14-a61d-2d21e1faa9e7","session_id":"11111111-2222-4333-8444-555555555555"}
|
||||
{"duration_api_ms":1916,"stop_reason":"tool_use","session_id":"11111111-2222-4333-8444-555555555555","total_cost_usd":0.090135,"usage":{"input_tokens":2,"cache_creation_input_tokens":8630,"cache_read_input_tokens":0,"output_tokens":153,"output_tokens_details":{"thinking_tokens":0},"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":8630,"ephemeral_5m_input_tokens":0},"inference_geo":"not_available","iterations":[],"speed":"standard"},"modelUsage":{"claude-opus-5":{"inputTokens":2,"outputTokens":153,"cacheReadInputTokens":0,"cacheCreationInputTokens":8630,"webSearchRequests":0,"costUSD":0.090135,"contextWindow":1000000,"maxOutputTokens":64000,"thinkingTokens":0,"canonicalModel":"claude-opus-5","provider":"firstParty","costBasis":"list"}},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","fast_mode_disabled_reason":"unknown","subagent_stats":{"spawned":0,"requested":{"background":0,"foreground":0,"unset":0},"started_in_background":0,"max_depth":0,"spawned_by_subagents":0,"completed":0,"failed":0,"killed":{"parent":0,"user":0,"system":0},"refused":{"depth_limit":0,"concurrency_limit":0,"budget":0},"by_type":{}},"is_error":false,"num_turns":2,"subtype":"success","api_error_status":null,"result":"{\"coverage\":[{\"item\":\"R1\",\"verdict\":\"clear\",\"basis\":\"fixture\"}],\"findings\":[],\"notes\":[],\"verdict\":\"SEND-READY\"}","structured_output":{"coverage":[{"item":"R1","verdict":"clear","basis":"fixture"}],"findings":[],"notes":[],"verdict":"SEND-READY"},"ttft_ms":1972,"type":"result","duration_ms":1984,"uuid":"7f3d8d6f-23df-4f6e-8114-ae6caddd353b","ttft_stream_ms":913,"time_to_request_ms":71,"first_content_frame_ms":913,"queued_turn_count":0}
|
||||
Loading…
Reference in a new issue