chore: adopt remaining local development state

Catch-all for the intermixed residue of the unpushed otko-development
work ported into this tree: combinations/console-dock/quick-guide wiring
across commands, core, services, views and tests; repo-wide ruff-format
normalization; README/CONTRIBUTING updates; and the toolbar default
(both toolbars now open in the top area, quick guide text updated).

Splitting this further would require hunk-level surgery with low
confidence; the preceding commits in this branch isolate the
self-contained features.
This commit is contained in:
smillmorel 2026-09-16 12:03:22 -04:00
commit ba783718d4
152 changed files with 3394 additions and 1651 deletions

View file

@ -24,9 +24,14 @@ class TestConcrete04Instantiation:
def test_with_tension_construct(self) -> None:
m = Concrete04(
id=2, name="C30-Tension",
fpc=-30e6, epsc0=-0.002, epscu=-0.005, Ec=30e9,
fct=3.0e6, et=1e-4,
id=2,
name="C30-Tension",
fpc=-30e6,
epsc0=-0.002,
epscu=-0.005,
Ec=30e9,
fct=3.0e6,
et=1e-4,
)
assert m.fct == 3.0e6
assert m.et == 1e-4
@ -34,9 +39,15 @@ class TestConcrete04Instantiation:
def test_with_beta_construct(self) -> None:
m = Concrete04(
id=3, name="C30-Cyclic",
fpc=-30e6, epsc0=-0.002, epscu=-0.005, Ec=30e9,
fct=3.0e6, et=1e-4, beta=0.1,
id=3,
name="C30-Cyclic",
fpc=-30e6,
epsc0=-0.002,
epscu=-0.005,
Ec=30e9,
fct=3.0e6,
et=1e-4,
beta=0.1,
)
assert m.beta == pytest.approx(0.1)
@ -83,8 +94,14 @@ class TestConcrete04TensileParamConsistency:
def test_beta_bounds(self) -> None:
with pytest.raises(ValidationError):
Concrete04(
id=1, fpc=-30e6, epsc0=-0.002, epscu=-0.005, Ec=30e9,
fct=3e6, et=1e-4, beta=1.5,
id=1,
fpc=-30e6,
epsc0=-0.002,
epscu=-0.005,
Ec=30e9,
fct=3e6,
et=1e-4,
beta=1.5,
)
@ -101,9 +118,14 @@ class TestConcrete04JsonRoundTrip:
def test_with_tension_round_trip(self) -> None:
original = Concrete04(
id=2, name="C30-T",
fpc=-30e6, epsc0=-0.002, epscu=-0.005, Ec=30e9,
fct=3.0e6, et=1e-4,
id=2,
name="C30-T",
fpc=-30e6,
epsc0=-0.002,
epscu=-0.005,
Ec=30e9,
fct=3.0e6,
et=1e-4,
)
payload = material_adapter.dump_python(original, mode="json", by_alias=True)
restored = material_adapter.validate_python(payload)