ifc-structural 0.2.0

Structural analysis model: members, connections, actions, reactions, loads.
Documentation
# ifc-structural instructions

Purpose: Bounded borrowed structural-analysis views, relationship traversal, and selected transaction-staged authoring.

Follow `../AGENTS.md`. Read `PLAN.md` only for assigned implementation or
roadmap work; keep progress, blockers, and evidence there.

- `IfcStructuralLoadGroup` and `IfcStructuralLoadCase` authoring, plus the
  `Varying` forms of the curve and surface members. The case form's inherited
  `PredefinedType` is pinned to `LOAD_CASE` by `IsLoadCasePredefinedType`, so
  it is not a caller field; `HasObjectType` spans `PredefinedType`,
  `ActionType` and `ActionSource` together, not one of them.
- `SuitablePredefinedType` on `IfcStructuralCurveAction`: `EQUIDISTANT` is a
  member of the shared activity-type enum but is excluded for the action form.

## Boundary

Allowed production dependencies: ifc-model and schema metadata only; no geometry crate.
- `LoadDraft::SingleDisplacement` stages `IfcStructuralLoadSingleDisplacement`,
  the distortion form minus its trailing `Distortion` slot.
- `stage_connection` resolves its axis attribute per entity: a curve *member*
  names it `Axis`, a curve *connection* `AxisDirection`. Hardcoding either
  made the other unauthorable.

## Module ownership

- `model.rs`: analysis models/load/result groups
- `member.rs`: curve/surface/varying members
- `connection.rs`: point/curve/surface connections
- `condition.rs`: boundary/connection conditions
- `load.rs`: load value families
- `action.rs`: structural activities/actions
- `result.rs`: reactions/results
- `boundary.rs`: references to structural geometry/topology IDs
- `query.rs`: bounded model graph traversal
- `authoring.rs` and `authoring/`: schema-resolved transaction staging for
  selected models, loads, members, connections, actions, and relationships
- `error.rs`: inconsistent structural semantics

## Invariants

- This crate references geometry/profile entities by EntityId; it does not evaluate shape or link axiolid crates.
- Authored section properties and computed section properties are distinguished.
- Solvers, FEM meshes, and numerical analysis are application/adapter capabilities, not IFC views.
- Construction-resource planning belongs to `ifc-resource`; structural-analysis entities are not construction resources.

Keep entity views, relationship traversal, mutation, and domain algorithms in
separate files. New child modules remain crate-private until a real public
contract is ready for deliberate re-export.

## Verification

Run targeted tests/clippy, then the package architecture/context gates. Add
fixtures and cycle/invalid-input cases for every relationship traversal.