Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
9cd782b
test(verify): run every operator both ways and report what it did
kz930 Sep 2, 2026
e7d36c7
docs: shorten the knob-scope note to the cases that earn their place
kz930 Sep 2, 2026
40e5740
fix(verify): say why Regex is withheld, rather than naming another op…
kz930 Sep 2, 2026
6734650
test(verify): run Regex on the nulls variant now that it answers them
kz930 Sep 3, 2026
1ba3ca8
test(verify): leave the per-operator spec to the change its callees a…
kz930 Sep 3, 2026
a78e443
test(verify): register the two seeded visualizations here
kz930 Sep 3, 2026
94c65c5
style: drop the trailing comma the removed rows left behind
kz930 Sep 3, 2026
9793f0a
test(verify): assert the tier every operator routes to
kz930 Sep 3, 2026
97f71dd
style: assert the visualizations the way the rest of the file does
kz930 Sep 3, 2026
3549b51
test(verify): correct two comments that name things no longer there
kz930 Sep 3, 2026
f1e3d14
test(verify): name the hostile-column run
kz930 Sep 9, 2026
b052093
test(verify): run a translated plan as one program
kz930 Sep 9, 2026
7c3533c
test(verify): point an operator at the column a hole changes
kz930 Sep 10, 2026
f43ef55
test(verify): run every operator on a table with no rows in it
kz930 Sep 10, 2026
5dab44f
test(verify): drop a run kind and a label helper nothing names
kz930 Sep 10, 2026
4c8ca4d
test(verify): tell a plan's two branches apart
kz930 Sep 18, 2026
1d1c05d
test(verify): compare a chart's every figure, not its first
kz930 Sep 18, 2026
a8aac46
test(verify): hand the script the schemas the run produced
kz930 Sep 19, 2026
900fcae
test(verify): withhold the empty table where both paths raise on it
kz930 Sep 23, 2026
e90fd99
test(verify): say why the empty table is withheld, now that the scrip…
kz930 Sep 24, 2026
b858c15
test(verify): run the two operators that read a fitted model
kz930 Sep 25, 2026
0ba94d4
Merge remote-tracking branch 'upstream/main' into feat/verify-run-eve…
kz930 Sep 27, 2026
4340f70
test(verify): give the canonical table its edge values, and compare e…
kz930 Sep 27, 2026
62598dd
test(verify): run the empty table on the operators that failed on it
kz930 Sep 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@
"a\"b\\c_high_score": false,
"a\"b\\c_species_pred": 1,
"species_name": "versicolor",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 3.0,
"edge_ts": "2024-02-07 12:00:00.0",
"digits": "99"
},
{
"id": 3,
Expand Down Expand Up @@ -71,7 +74,10 @@
"a\"b\\c_high_score": false,
"a\"b\\c_species_pred": 1,
"species_name": "versicolor",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 1.0E7,
"edge_ts": "2262-04-12 00:00:00.0",
"digits": "7"
},
{
"id": 11,
Expand Down Expand Up @@ -108,7 +114,10 @@
"a\"b\\c_high_score": false,
"a\"b\\c_species_pred": 0,
"species_name": "setosa",
"species_name_pred": "setosa"
"species_name_pred": "setosa",
"edge_double": 0.001,
"edge_ts": "2024-02-11 12:00:00.0",
"digits": "8"
},
{
"id": 1,
Expand Down Expand Up @@ -145,7 +154,10 @@
"a\"b\\c_high_score": false,
"a\"b\\c_species_pred": 1,
"species_name": "setosa",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 1.0E20,
"edge_ts": "2500-01-01 00:00:00.5",
"digits": "001"
},
{
"id": 14,
Expand Down Expand Up @@ -182,7 +194,10 @@
"a\"b\\c_high_score": true,
"a\"b\\c_species_pred": 1,
"species_name": "versicolor",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 7.0,
"edge_ts": "2024-02-14 12:00:00.0",
"digits": "11"
},
{
"id": 5,
Expand Down Expand Up @@ -219,7 +234,10 @@
"a\"b\\c_high_score": false,
"a\"b\\c_species_pred": 0,
"species_name": "setosa",
"species_name_pred": "setosa"
"species_name_pred": "setosa",
"edge_double": 0.1,
"edge_ts": "1677-09-21 00:00:00.0",
"digits": "3"
},
{
"id": 9,
Expand Down Expand Up @@ -256,7 +274,10 @@
"a\"b\\c_high_score": false,
"a\"b\\c_species_pred": 0,
"species_name": "versicolor",
"species_name_pred": "setosa"
"species_name_pred": "setosa",
"edge_double": 0.002,
"edge_ts": "2024-02-09 12:00:00.0",
"digits": "12"
},
{
"id": 2,
Expand Down Expand Up @@ -293,7 +314,10 @@
"a\"b\\c_high_score": true,
"a\"b\\c_species_pred": 1,
"species_name": "versicolor",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 1.0E-4,
"edge_ts": "1600-06-15 08:30:00.0",
"digits": "042"
},
{
"id": 13,
Expand Down Expand Up @@ -330,7 +354,10 @@
"a\"b\\c_high_score": false,
"a\"b\\c_species_pred": 1,
"species_name": "versicolor",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 0.25,
"edge_ts": "2024-02-13 12:00:00.0",
"digits": "4"
},
{
"id": 6,
Expand Down Expand Up @@ -367,7 +394,10 @@
"a\"b\\c_high_score": true,
"a\"b\\c_species_pred": 0,
"species_name": "setosa",
"species_name_pred": "setosa"
"species_name_pred": "setosa",
"edge_double": -2.5E-5,
"edge_ts": "2024-02-06 12:00:00.0",
"digits": "010"
},
{
"id": 10,
Expand Down Expand Up @@ -404,7 +434,10 @@
"a\"b\\c_high_score": true,
"a\"b\\c_species_pred": 1,
"species_name": "setosa",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 999999.5,
"edge_ts": "2024-02-10 12:00:00.0",
"digits": "0005"
},
{
"id": 4,
Expand Down Expand Up @@ -441,7 +474,10 @@
"a\"b\\c_high_score": true,
"a\"b\\c_species_pred": 1,
"species_name": "versicolor",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 12345678.9,
"edge_ts": "9999-12-31 23:59:59.0",
"digits": "0100"
},
{
"id": 15,
Expand Down Expand Up @@ -478,7 +514,10 @@
"a\"b\\c_high_score": true,
"a\"b\\c_species_pred": 0,
"species_name": "setosa",
"species_name_pred": "setosa"
"species_name_pred": "setosa",
"edge_double": 1.2E8,
"edge_ts": "2024-02-15 12:00:00.0",
"digits": "0"
},
{
"id": 8,
Expand Down Expand Up @@ -515,7 +554,10 @@
"a\"b\\c_high_score": true,
"a\"b\\c_species_pred": 1,
"species_name": "versicolor",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 1.5,
"edge_ts": "2024-02-08 12:00:00.0",
"digits": "0"
},
{
"id": 12,
Expand Down Expand Up @@ -552,6 +594,9 @@
"a\"b\\c_high_score": true,
"a\"b\\c_species_pred": 1,
"species_name": "versicolor",
"species_name_pred": "versicolor"
"species_name_pred": "versicolor",
"edge_double": 4.0E21,
"edge_ts": "2024-02-12 12:00:00.0",
"digits": "060"
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,17 @@ object CanonicalFixture extends SharedFixture {
new Attribute(
"species_name_pred",
AttributeType.STRING
) // the prediction spelled out. A scorer takes a string label as readily as a
), // the prediction spelled out. A scorer takes a string label as readily as a
// numeric one and names the class after it rather than after its position, so
// the pair exists a second time in text
// The values a column of each type can hold that its ordinary rows never
// reach, last so no column-picking knob comes to them before the others.
new Attribute("edge_double", AttributeType.DOUBLE), // 1.0E20 and 1.0E-4 beside
// ordinary numbers: Java writes a double past 1e7 or under 1e-3 in E notation
new Attribute("edge_ts", AttributeType.TIMESTAMP), // years 1600, 2500 and 9999,
// and 1677 and 2262 at pandas' own edges: a Timestamp holds every one of them
new Attribute("digits", AttributeType.STRING) // text made only of digits, "001"
// among them, which a reader left to infer takes for a number
)

// ── Data source ──
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,23 @@ class CanonicalFixtureSpec extends AnyFlatSpec with Matchers {
}
}

// Each edge column exists for values the ordinary rows never reach, so both
// windows have to hold them: a year either side of pandas' nanosecond range,
// a double Java writes in E notation at each end, and digits with a leading 0.
it should "hold the edge values of each type on every port" in {
Seq(CanonicalFixture.port0Rows, CanonicalFixture.port1Rows).foreach { rows =>
val years = rows.map(_.getField[java.sql.Timestamp]("edge_ts").toLocalDateTime.getYear)
years.count(_ > 2262) should be > 0
years.count(_ < 1678) should be > 0
val doubles = rows.map(_.getField[java.lang.Double]("edge_double").doubleValue)
doubles.count(d => math.abs(d) >= 1e7) should be > 0
doubles.count(d => d != 0 && math.abs(d) < 1e-3) should be > 0
val digits = rows.map(_.getField[String]("digits"))
all(digits) should fullyMatch regex "[0-9]+"
digits.count(d => d.length > 1 && d.startsWith("0")) should be > 0
}
}

it should "write one JSONL fixture per requested input port" in {
val root = Files.createTempDirectory("canonical-fixture-")
val inputs = CanonicalFixture.writeInputs(root, inputPortCount = 2)
Expand Down
Loading
Loading