bench: matrix v4 adds pid_roundtrip; correctness suite grows to 29 with three P&ID checks
tasks_v4.py extends v3 with one task the reader can fail on its own: the example spec is drawn through pid_from_spec's code and read back by the graph builder, which never sees the spec. The runner, the chart and the doc-number gate now default to v4; --matrix v3 / v2 reproduce the earlier sets, and tests/test_benchmark_v3.py labels its full-matrix run "v3" explicitly now that the default has moved. The plan's adapter check expected the two unnumbered lines to come back with no line number; draw_line builds one from the default number_format (bare sequence when size/service/spec/insulation are empty), so the task asserts the two authored numbers on the two process lines and sequence- built XDATA numbers on the other two instead. The published A/B report still covers 26 checks; Task 21 re-runs it against v1.5.1, which is what clears the remaining doc-number drift. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FKFStjEFzpGyLq5bMpWxTd
This commit is contained in:
co-authored by
Claude Opus 5
parent
e911a3a8fb
commit
8d9c444b76
@@ -293,6 +293,34 @@ async def radius_dim_ignores_the_leader_length():
|
||||
return all(abs(v - 20.0) < 1e-6 for v in values)
|
||||
|
||||
|
||||
# ── P&ID (v1.6, track A) ──────────────────────────────────────────────────────
|
||||
|
||||
|
||||
async def pid_block_define_attdef_roundtrip():
|
||||
b = await _b()
|
||||
await b.block_define(
|
||||
"PID_T",
|
||||
[{"type": "line", "x1": 0, "y1": 0, "x2": 8, "y2": 0}],
|
||||
[{"tag": "TAG", "x": 0, "y": 3, "height": 2.5}],
|
||||
)
|
||||
ref = await b.block_insert("PID_T", 5, 5, attributes={"TAG": "HV-1"})
|
||||
return await b.block_get_attributes(ref.handle) == {"TAG": "HV-1"}
|
||||
|
||||
|
||||
async def pid_tag_parse_fic():
|
||||
from engineering.pid.tags import parse_tag
|
||||
|
||||
return parse_tag("FIC-101")["description"] == "Flow Indicating Controller"
|
||||
|
||||
|
||||
async def pid_graph_edge_count():
|
||||
from engineering.pid.spec import EXAMPLE_SPEC, run_spec
|
||||
|
||||
b = await _b()
|
||||
result = await run_spec(b, EXAMPLE_SPEC)
|
||||
return len(result["graph"]["edges"]) == 4 and result["graph"]["stats"]["dangling"] == 0
|
||||
|
||||
|
||||
CHECKS = {
|
||||
"core_line_length": (core_line_length, "Core"),
|
||||
"core_circle_radius": (core_circle_radius, "Core"),
|
||||
@@ -320,6 +348,9 @@ CHECKS = {
|
||||
"two_vertex_circle_has_area": (two_vertex_circle_has_area, "Measurement"),
|
||||
"diameter_dim_measures_the_diameter": (diameter_dim_measures_the_diameter, "Dimensions"),
|
||||
"radius_dim_ignores_the_leader_length": (radius_dim_ignores_the_leader_length, "Dimensions"),
|
||||
"pid_block_define_attdef_roundtrip": (pid_block_define_attdef_roundtrip, "P&ID"),
|
||||
"pid_tag_parse_fic": (pid_tag_parse_fic, "P&ID"),
|
||||
"pid_graph_edge_count": (pid_graph_edge_count, "P&ID"),
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user