Files
willtools-demo/docs/pa-unused-options.md
T
will 25592fa6c2
ci / test (push) Successful in 6m14s
WillTools 2026-09-09 -- clean snapshot of the development repo for review
History-free snapshot of the private development repository at 77a82eb.
Code, docs and the public catalogue only: no plant or job knowledge
layers, no client, job or producer names (tools/scrub.py clean against
the widened term list; a second word-level grep clean). The intro deck is
left out because its slide images cannot be checked for job drawings.
2026-09-09 08:35:15 -05:00

89 lines
7.1 KiB
Markdown

# Panel Analysis: controls the solve does not read (inventory)
Owner, 2026-09-07 (issue #22, item 2): *"现在还有什么选项,是前端做出来了,引擎
或者后端还没实现的?比方说我现在选择 code,有意义吗?"*
This is the answer, as of 2026-09-07. Method: every key the five page
modules (`pa_criteria` / `pa_extents` / `pa_structural` / `pa_handling` /
`pa_reinforcement`) render, checked for a consumer in
`WillTools.extension/lib/vibe/panelanalysisform.py`'s `validate()` /
`build_deck()` (what reaches the deck), `tools/panelanalysis.py` and
`panellift/src/panellift/*.py` (what the engine and 后端 read), and the
`pa_sketch_*` modules (what a drawing reads). **"Not used by the solve"
means it never reaches the deck.** A key a drawing reads but the solve
does not is listed with that said.
How the page shows it: `pa_pagespec` stamps `unused_by_solve: true` on
every field block or stage-matrix row whose own hint says "not (yet) used
by the solve", plus the explicit list in `_UNUSED_BY_SOLVE_KEYS`; the page
mutes those and tags them "not used by the solve"
(`docs/pa-web-spec.md` §2a). So the cue is only as honest as the hints —
three hints were found stale the other way on 2026-09-07 (`deflection_
limit`, `cracking_assumption`, `strand_rail_location` DO reach the deck)
and were corrected. **Run `python tools/pa_pagespec.py --out /tmp/s.json`
and grep `unused_by_solve` rather than trusting this list**; it was true
the day it was written.
## Design Criteria
| key | control | state |
| --- | --- | --- |
| `design_spec` | Governing design code (ACI 318-19 / -14 / -11) | **Not used.** No formula in `panellift` (`pci.py`, `capacity.py`, `inplace.py`) or `tools/panelanalysis.py` branches on the edition. Selecting it changes nothing. |
| `conc_ec_psi`, `conc_eci_psi` | Elastic moduli | **Not used** by the solve (`panellift` computes its own from f'c). Live on the page: recomputed from f'c / f'ci / unit weight as those are edited (issue #22 item 1). |
| `rebar_fy_ksi`, `rebar_es_ksi`, `mesh_fy_ksi`, `mesh_es_ksi`, `strand_ep_ksi` | Material stiffness / yield | **Not used.** Collected for the record. |
| `ps_loss_humidity_pct`, `ps_loss_release_hours`, `ps_loss_erection_days` | Loss inputs | **Not used.** Only `ps_loss_pct` (the flat percentage) reaches the deck. |
| `second_order` | 2nd-order effects | **Not used.** |
| `inplace_comp_ratio`, `inplace_tension_sqrt` | In-place stress limits | **Not used** as such; the deck carries the HANDLING limits (`handling_tension_sqrt` / `handling_comp_ratio`). |
| `deflection_limit`, `cracking_assumption` | Service check | **Used** (`_service_from` → `loading.service`). Hints corrected 2026-09-07. |
## Concrete Extents
| key | control | state |
| --- | --- | --- |
| `top_in_form` | Which face is up in the casting bed | **Not used** (reference only). Shown only for a Sandwich section since 2026-09-07 (owner ruling). |
| `left_miter`, `right_miter` | Miter flags | **Not used.** Only print a footnote sentence (`_miter_sentence`). |
| `top_in_form_check`, `top_in_form_width_in`, `top_in_form_height_in` | Formed step at the top edge | **Not used; no longer rendered** (issue #22 item 4). Declared so a saved value survives; return when `pa_sketch_extents` folds the step into the section, weight and centroid. |
| `wythe_top_in`, `insulation_in`, `wythe_bottom_in` | Sandwich wythes | **Not rendered by any page today**; read by the drawings (`pa_sketch_extents`, `pa_sketch_reinf`, `pa_sketch_handling`) and `liftexport`, not by the in-place solve. |
| `fc2_psi`, `fci2_psi`, `unit_weight2_pcf` | Wythe-2 materials | **Not rendered by any page today**; `unit_weight2_pcf` is read by `pa_sketch_handling` only. No wythe-2 modulus field exists, so item 1's "wythe-2 pair" has no target yet. |
## Structural Model
| key | control | state |
| --- | --- | --- |
| `restraint.<n>.type` = Fixed / Free / Floor tie | Restraint type | **Not used.** `inplace.InPlaceInputs.restraint_xs` is bare positions — every restraint solves as a simple support whatever its type. `Fixed` is only a hatch glyph in `pa_sketch_freebody`. Needs an engine concept before it can mean anything (owner's call: which types matter, and what a Fixed end does to the model). |
| `load_opt_pattern_live` | Pattern live load | **Not used.** |
| `seismic_cs`, `seismic_zone_location`, `seismic_apply_to`, seismic zones | Seismic (collapsed) | **Not used.** Module docstring: collected, never computed. |
| `temp_ext_f`, `temp_int_f`, `temp_elasticity_mult`, `temp_alpha_t` | Temperature (collapsed) | **Not used.** |
| `ext_soil_*`, `int_soil_*` | Soil loads (collapsed) | **Not used.** |
| `addl_sw_start_in`, `addl_sw_end_in`, `addl_sw_magnitude_plf` | Additional Self Weight (collapsed) | **Not used**, and the owner wants this section GONE in favour of the concentrated-loads table (issue #22 item 6a — not done in this pass, see the issue comment). |
| `design_strips_method` | Design strips (collapsed) | **Not used.** |
| `conc_load` table, `wind_zone` table, `support` table, `restraint` positions | | **Used** (`applied_axial`, `wind`, `supports`, `restraints` in the deck). |
## Handling (stage matrix)
Only `include` and `load_multiplier` are `drives='solve'` in
`panelanalysisform.STAGE_OPTIONS`; every other row is `stage3`:
| row | state |
| --- | --- |
| `lift_type`, `concrete_strength`, `stress_limits`, `rigging`, `sling_angle`, `ground_reaction`, `min_tilt_deg`, `max_tilt_deg`, `top_crane_carries` | **Not used.** `build_deck` packs only each included stage's `load_multiplier`. The `rigging` / `sling_angle` names that DO appear in `panellift` are the job file's own `handling.rigging` block (set by `liftexport` off plant knowledge), a different namespace from `stage.<name>.rigging`. |
| Secondary Erection `load_multiplier` | **Not used** — no deck slot (`_STAGE_DECK_MULT_KEY` has three). |
| `weight_lb` (Panel weight override) | **Used** by the handling weight/centroid summary and the deck's `concrete_extents.weight_lb`. Owner wants it replaced by the concentrated-loads table (item 6a). |
| `face_lifter` / `edge_lifter` tables, `dunnage` | **Used** by the drawing and `_lifter_tables`; the per-stage lifter SET (item 8) does not exist yet — every included stage sees the same lifters. |
## Reinforcement
| key | control | state |
| --- | --- | --- |
| `strand_rail_location` | Rail | **Used** (`_model_strand_x_ft` mirrors/offsets the read strand x). Hint corrected 2026-09-07. |
| `strand_rail_offset_in` | Rail offset | Drawing only (`pa_sketch_reinf`); not in the deck. |
| `mesh`, `mesh_layers`, `mesh_depth_in` | Welded wire mesh | Drawing only (`pa_sketch_reinf`); not in the deck. (This page is under active change on the Windows side — re-check.) |
| `interrupt` table | Reinforcement interrupts | Collected only (issue #23 item 9h); the development-length restart is the companion engine issue. |
## What to do with one
Either wire it into the solve — in which case delete the "Not yet used"
phrase from its hint so the page stops muting it — or leave it muted. Never
a third state where the control looks live and does nothing; that is the
complaint this document exists for.