@willcgage/module-schematic 0.53.0 → 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1039,22 +1039,25 @@ declare const RAIL_GAUGE_INCHES = 0.354;
1039
1039
  * frog, i.e. a turnout's LEAD if lead were proportional to frog number. From an
1040
1040
  * Atlas code 55 #7 measuring 3⅜″ (Steve Branton, #173) ⇒ 3.375 / 7.
1041
1041
  *
1042
- * It is NOT proportional. Measured lead ÷ N: **#7 = 0.482, #10 = 0.419.** The
1043
- * rule predicted 4.82″ for the #10; it measures 4³⁄₁₆″ **13% over**. Atlas
1044
- * compress the lead on long turnouts, just as they compress overall length.
1042
+ * It is NOT proportional. Measured lead ÷ N: **#5 = 0.600, #7 = 0.482,
1043
+ * #10 = 0.494.** This rule reads ~20% SHORT at N=5 (2.41″ vs a measured 3.00″).
1045
1044
  *
1046
1045
  * Prefer {@link leadInchesForSize}, which returns a real part's measurement when
1047
1046
  * one exists and only falls back here for sizes nothing in the library covers.
1048
- * A fallback at N 10 will read LONG.
1047
+ * ⚠️ The remaining fallback user is the #2.5 wye at 1.21″; since per-frog is
1048
+ * HIGHEST at the low end (0.600 at N=5), that is very likely SHORT. It is a
1049
+ * placeholder, not a value.
1049
1050
  *
1050
- * BETTER MODEL (hypothesis, not yet enough data): a roughly CONSTANT SWITCH
1051
- * ANGLE α the angle the point rails leave the stock rail at — which is real
1052
- * prototype practice, points being planed to a standard angle. Inverting
1053
- * {@link turnoutClosure} gives `lead = 2g / (1/N + α)`, and the two measured
1054
- * leads agree to 3%: #7 α = 0.0669, #10 α = 0.0691. If it holds, lead is
1055
- * whatever falls out of a fixed point angle meeting the frog, not a multiple
1056
- * of N. DISCRIMINATING TEST: at α ≈ 0.068 the #5's lead is **2.64″**, where
1057
- * this constant says 2.41″ measure a physical 2050 to settle it.
1051
+ * A constant-switch-angle model was also proposed here and is likewise REFUTED:
1052
+ * inverting {@link turnoutClosure} gives α = 0.036 (#5), 0.067 (#7), 0.043
1053
+ * (#10). Kept as a warning it was floated when the #7 and #10 agreed to 3%,
1054
+ * on a #10 figure that later turned out to be measured to the wrong landmark.
1055
+ * TWO AGREEING PARTS ARE NOT A LAW, and neither is a coincidence you haven't
1056
+ * checked the provenance of.
1057
+ *
1058
+ * The pattern that currently fits is on {@link ATLAS_CODE55_N}: the moulding
1059
+ * runs past the frog far enough to gain a constant 0.25″ of separation. Note it
1060
+ * predicts the FROG POSITION, not the lead — this constant has no successor.
1058
1061
  */
1059
1062
  declare const TURNOUT_LEAD_INCHES_PER_FROG = 0.482;
1060
1063
  /** Where a dimension came from. `derived` = we computed it from another part or
@@ -1103,6 +1106,13 @@ interface TrackPart {
1103
1106
  * inside its moulding; the rest of that end is plain approach track. Needed to
1104
1107
  * fit a part into a space, and by any renderer drawing the real outline. */
1105
1108
  pointsOffset?: PartDimension;
1109
+ /** End of the tie strip → the APEX OF THE FROG V, measured from the same end
1110
+ * as {@link pointsOffset}. ⚠️ The apex, NOT the end of the frog casting — on a
1111
+ * shallow #10 those are ¾″ apart, which is how this library recorded a wrong
1112
+ * #10 lead through two releases. `lead` is the difference of the two, so
1113
+ * prefer these when both are known: they're what someone can actually put a
1114
+ * rule against. */
1115
+ frogOffset?: PartDimension;
1106
1116
  /** End-to-end length of the part. */
1107
1117
  overallLength?: PartDimension;
1108
1118
  /** Diverging route radius (straight turnouts). */
@@ -1123,26 +1133,46 @@ declare const CODE55_RAIL_HEIGHT_INCHES = 0.055;
1123
1133
  * (3⅜″ points→frog, #173) and Will Gage's #5/#7/#10 overall lengths plus the
1124
1134
  * #10's lead and points offset. The #5's lead and the wye's are still derived.
1125
1135
  *
1126
- * NEITHER DIMENSION IS PROPORTIONAL TO FROG NUMBER. Both rules that assumed so
1127
- * have now been tested and failed:
1128
- * - **Lead does NOT scale with N.** Measured lead ÷ N: #7 = 0.482, #10 = 0.419.
1129
- * {@link TURNOUT_LEAD_INCHES_PER_FROG} predicted 4.82 for the #10 against a
1130
- * measured 4³⁄₁₆″ — 13% over. See that constant for the constant-switch-angle
1131
- * model that fits both measurements, and the test that would confirm it.
1132
- * - ⭐ **Overall length is NOT A FUNCTION OF N AT ALL.** Measured: #5 = 6.00″,
1133
- * **#7 = 6.00″**, #10 = 8.00″. The #5 and #7 are the SAME LENGTH — Atlas mould
1134
- * them on a shared 6″ tie strip and vary only the frog angle and where the frog
1135
- * sits. NEVER derive a length from a frog number; look the part up.
1136
+ * MEASURED GEOMETRY (all Will Gage's, off physical parts, frog taken at the V):
1137
+ *
1138
+ * part points frog V overall lead past frog ÷N
1139
+ * #5 1¾″ 4.75 6.00″ 3.0000″ 1.25″ 0.2500
1140
+ * #7 — 4³⁄₁₆″ 6.00″ 3.3750″* 1.8125″ 0.2589
1141
+ * #10 ⁹⁄₁₆″ 5.50″ 8.00″ 4.9375″ 2.50″ 0.2500
1142
+ *
1143
+ * * the #7's lead is Steve Branton's (#173), a DIFFERENT person and possibly
1144
+ * a different convention. Its points offset has never been measured, so
1145
+ * 4³⁄₁₆ 3⅜ = ¹³⁄₁₆″ is implied, not observed. Measure a 2052 to close it.
1146
+ *
1147
+ * ⭐ **THE PART RUNS PAST THE FROG FAR ENOUGH TO GAIN 0.25″ OF SEPARATION.**
1148
+ * Past-frog run ÷ N is 0.2500 / 0.2589 / 0.2500 — the #5 and #10 EXACT, the #7
1149
+ * within ¹⁄₁₆″ of the tie end (a 4¼″ frog would make it exact too). At the frog
1150
+ * the routes are one gauge apart; at the end of the moulding they are
1151
+ * 0.354 + 0.25 ≈ 0.6″ apart. So Atlas size the moulding for a constant
1152
+ * CLEARANCE, not a constant length — which is what a manufacturer would
1153
+ * sensibly do, and why overall length looks arbitrary until you divide by N.
1154
+ * ⚠️ It predicts the FROG POSITION from the overall length. It does NOT predict
1155
+ * the lead — the points offset is independent and must still be measured.
1156
+ * ⚠️ HYPOTHESIS. It is the FOURTH rule fitted to this data; the first three all
1157
+ * died. Two exact hits and a near miss is not a law.
1136
1158
  *
1137
- * This is what the frog-number definition actually says, and it's easy to forget:
1138
- * #N fixes the DIVERGENCE RATE AT THE FROG (1 across per N along). It says
1139
- * nothing about how much tie strip the manufacturer wraps around it. Angle is
1140
- * geometry; length is packaging. Hence the lead — where the frog falls inside
1141
- * that strip is the only dimension worth chasing.
1159
+ * NOTHING HERE IS PROPORTIONAL TO FROG NUMBER. Three rules assumed otherwise;
1160
+ * all three were tested against a physical part and FAILED:
1161
+ * - **Lead N.** Measured lead ÷ N: #5 = 0.600, #7 = 0.482, #10 = 0.494.
1162
+ * {@link TURNOUT_LEAD_INCHES_PER_FROG} reads ~20% SHORT at N=5.
1163
+ * - **Constant switch angle.** Inverting {@link turnoutClosure} gives α =
1164
+ * 0.036 (#5), 0.067 (#7), 0.043 (#10). Not constant.
1165
+ * - ❌ **Overall length ∝ N.** #5 = 6.00″ and #7 = 6.00″ — same moulding, two
1166
+ * frog numbers.
1167
+ * - ❌ **Frog fixed at 4.75″** (shipped in 0.54.0, retracted in 0.55.0). It
1168
+ * rested on the #5 and #10 both reading 4.75″, but the #10's was the END OF
1169
+ * THE FROG CASTING, not the V. Measured consistently the frogs are at 4.75″,
1170
+ * 4³⁄₁₆″ and 5.5″ — all different.
1142
1171
  *
1143
- * (Lengths are whole inches and the #5 diverges at exactly 1/32 of a circle, so
1144
- * Atlas do seem to work to round numbers but a prediction that the #7 would
1145
- * therefore be 7.00″ was tested and FAILED. Round, but not one inch per frog.)
1172
+ * The definition is the reason: #N fixes the DIVERGENCE RATE AT THE FROG (1
1173
+ * across per N along) and says NOTHING about how much tie strip the manufacturer
1174
+ * wraps around it, or where inside it the frog goes. Angle is geometry;
1175
+ * everything else is a tooling decision. **Measure the part. Do not model it.**
1146
1176
  */
1147
1177
  declare const ATLAS_CODE55_N: TrackPart[];
1148
1178
  /** Every built-in part, across manufacturers. */
package/dist/index.d.ts CHANGED
@@ -1039,22 +1039,25 @@ declare const RAIL_GAUGE_INCHES = 0.354;
1039
1039
  * frog, i.e. a turnout's LEAD if lead were proportional to frog number. From an
1040
1040
  * Atlas code 55 #7 measuring 3⅜″ (Steve Branton, #173) ⇒ 3.375 / 7.
1041
1041
  *
1042
- * It is NOT proportional. Measured lead ÷ N: **#7 = 0.482, #10 = 0.419.** The
1043
- * rule predicted 4.82″ for the #10; it measures 4³⁄₁₆″ **13% over**. Atlas
1044
- * compress the lead on long turnouts, just as they compress overall length.
1042
+ * It is NOT proportional. Measured lead ÷ N: **#5 = 0.600, #7 = 0.482,
1043
+ * #10 = 0.494.** This rule reads ~20% SHORT at N=5 (2.41″ vs a measured 3.00″).
1045
1044
  *
1046
1045
  * Prefer {@link leadInchesForSize}, which returns a real part's measurement when
1047
1046
  * one exists and only falls back here for sizes nothing in the library covers.
1048
- * A fallback at N 10 will read LONG.
1047
+ * ⚠️ The remaining fallback user is the #2.5 wye at 1.21″; since per-frog is
1048
+ * HIGHEST at the low end (0.600 at N=5), that is very likely SHORT. It is a
1049
+ * placeholder, not a value.
1049
1050
  *
1050
- * BETTER MODEL (hypothesis, not yet enough data): a roughly CONSTANT SWITCH
1051
- * ANGLE α the angle the point rails leave the stock rail at — which is real
1052
- * prototype practice, points being planed to a standard angle. Inverting
1053
- * {@link turnoutClosure} gives `lead = 2g / (1/N + α)`, and the two measured
1054
- * leads agree to 3%: #7 α = 0.0669, #10 α = 0.0691. If it holds, lead is
1055
- * whatever falls out of a fixed point angle meeting the frog, not a multiple
1056
- * of N. DISCRIMINATING TEST: at α ≈ 0.068 the #5's lead is **2.64″**, where
1057
- * this constant says 2.41″ measure a physical 2050 to settle it.
1051
+ * A constant-switch-angle model was also proposed here and is likewise REFUTED:
1052
+ * inverting {@link turnoutClosure} gives α = 0.036 (#5), 0.067 (#7), 0.043
1053
+ * (#10). Kept as a warning it was floated when the #7 and #10 agreed to 3%,
1054
+ * on a #10 figure that later turned out to be measured to the wrong landmark.
1055
+ * TWO AGREEING PARTS ARE NOT A LAW, and neither is a coincidence you haven't
1056
+ * checked the provenance of.
1057
+ *
1058
+ * The pattern that currently fits is on {@link ATLAS_CODE55_N}: the moulding
1059
+ * runs past the frog far enough to gain a constant 0.25″ of separation. Note it
1060
+ * predicts the FROG POSITION, not the lead — this constant has no successor.
1058
1061
  */
1059
1062
  declare const TURNOUT_LEAD_INCHES_PER_FROG = 0.482;
1060
1063
  /** Where a dimension came from. `derived` = we computed it from another part or
@@ -1103,6 +1106,13 @@ interface TrackPart {
1103
1106
  * inside its moulding; the rest of that end is plain approach track. Needed to
1104
1107
  * fit a part into a space, and by any renderer drawing the real outline. */
1105
1108
  pointsOffset?: PartDimension;
1109
+ /** End of the tie strip → the APEX OF THE FROG V, measured from the same end
1110
+ * as {@link pointsOffset}. ⚠️ The apex, NOT the end of the frog casting — on a
1111
+ * shallow #10 those are ¾″ apart, which is how this library recorded a wrong
1112
+ * #10 lead through two releases. `lead` is the difference of the two, so
1113
+ * prefer these when both are known: they're what someone can actually put a
1114
+ * rule against. */
1115
+ frogOffset?: PartDimension;
1106
1116
  /** End-to-end length of the part. */
1107
1117
  overallLength?: PartDimension;
1108
1118
  /** Diverging route radius (straight turnouts). */
@@ -1123,26 +1133,46 @@ declare const CODE55_RAIL_HEIGHT_INCHES = 0.055;
1123
1133
  * (3⅜″ points→frog, #173) and Will Gage's #5/#7/#10 overall lengths plus the
1124
1134
  * #10's lead and points offset. The #5's lead and the wye's are still derived.
1125
1135
  *
1126
- * NEITHER DIMENSION IS PROPORTIONAL TO FROG NUMBER. Both rules that assumed so
1127
- * have now been tested and failed:
1128
- * - **Lead does NOT scale with N.** Measured lead ÷ N: #7 = 0.482, #10 = 0.419.
1129
- * {@link TURNOUT_LEAD_INCHES_PER_FROG} predicted 4.82 for the #10 against a
1130
- * measured 4³⁄₁₆″ — 13% over. See that constant for the constant-switch-angle
1131
- * model that fits both measurements, and the test that would confirm it.
1132
- * - ⭐ **Overall length is NOT A FUNCTION OF N AT ALL.** Measured: #5 = 6.00″,
1133
- * **#7 = 6.00″**, #10 = 8.00″. The #5 and #7 are the SAME LENGTH — Atlas mould
1134
- * them on a shared 6″ tie strip and vary only the frog angle and where the frog
1135
- * sits. NEVER derive a length from a frog number; look the part up.
1136
+ * MEASURED GEOMETRY (all Will Gage's, off physical parts, frog taken at the V):
1137
+ *
1138
+ * part points frog V overall lead past frog ÷N
1139
+ * #5 1¾″ 4.75 6.00″ 3.0000″ 1.25″ 0.2500
1140
+ * #7 — 4³⁄₁₆″ 6.00″ 3.3750″* 1.8125″ 0.2589
1141
+ * #10 ⁹⁄₁₆″ 5.50″ 8.00″ 4.9375″ 2.50″ 0.2500
1142
+ *
1143
+ * * the #7's lead is Steve Branton's (#173), a DIFFERENT person and possibly
1144
+ * a different convention. Its points offset has never been measured, so
1145
+ * 4³⁄₁₆ 3⅜ = ¹³⁄₁₆″ is implied, not observed. Measure a 2052 to close it.
1146
+ *
1147
+ * ⭐ **THE PART RUNS PAST THE FROG FAR ENOUGH TO GAIN 0.25″ OF SEPARATION.**
1148
+ * Past-frog run ÷ N is 0.2500 / 0.2589 / 0.2500 — the #5 and #10 EXACT, the #7
1149
+ * within ¹⁄₁₆″ of the tie end (a 4¼″ frog would make it exact too). At the frog
1150
+ * the routes are one gauge apart; at the end of the moulding they are
1151
+ * 0.354 + 0.25 ≈ 0.6″ apart. So Atlas size the moulding for a constant
1152
+ * CLEARANCE, not a constant length — which is what a manufacturer would
1153
+ * sensibly do, and why overall length looks arbitrary until you divide by N.
1154
+ * ⚠️ It predicts the FROG POSITION from the overall length. It does NOT predict
1155
+ * the lead — the points offset is independent and must still be measured.
1156
+ * ⚠️ HYPOTHESIS. It is the FOURTH rule fitted to this data; the first three all
1157
+ * died. Two exact hits and a near miss is not a law.
1136
1158
  *
1137
- * This is what the frog-number definition actually says, and it's easy to forget:
1138
- * #N fixes the DIVERGENCE RATE AT THE FROG (1 across per N along). It says
1139
- * nothing about how much tie strip the manufacturer wraps around it. Angle is
1140
- * geometry; length is packaging. Hence the lead — where the frog falls inside
1141
- * that strip is the only dimension worth chasing.
1159
+ * NOTHING HERE IS PROPORTIONAL TO FROG NUMBER. Three rules assumed otherwise;
1160
+ * all three were tested against a physical part and FAILED:
1161
+ * - **Lead N.** Measured lead ÷ N: #5 = 0.600, #7 = 0.482, #10 = 0.494.
1162
+ * {@link TURNOUT_LEAD_INCHES_PER_FROG} reads ~20% SHORT at N=5.
1163
+ * - **Constant switch angle.** Inverting {@link turnoutClosure} gives α =
1164
+ * 0.036 (#5), 0.067 (#7), 0.043 (#10). Not constant.
1165
+ * - ❌ **Overall length ∝ N.** #5 = 6.00″ and #7 = 6.00″ — same moulding, two
1166
+ * frog numbers.
1167
+ * - ❌ **Frog fixed at 4.75″** (shipped in 0.54.0, retracted in 0.55.0). It
1168
+ * rested on the #5 and #10 both reading 4.75″, but the #10's was the END OF
1169
+ * THE FROG CASTING, not the V. Measured consistently the frogs are at 4.75″,
1170
+ * 4³⁄₁₆″ and 5.5″ — all different.
1142
1171
  *
1143
- * (Lengths are whole inches and the #5 diverges at exactly 1/32 of a circle, so
1144
- * Atlas do seem to work to round numbers but a prediction that the #7 would
1145
- * therefore be 7.00″ was tested and FAILED. Round, but not one inch per frog.)
1172
+ * The definition is the reason: #N fixes the DIVERGENCE RATE AT THE FROG (1
1173
+ * across per N along) and says NOTHING about how much tie strip the manufacturer
1174
+ * wraps around it, or where inside it the frog goes. Angle is geometry;
1175
+ * everything else is a tooling decision. **Measure the part. Do not model it.**
1146
1176
  */
1147
1177
  declare const ATLAS_CODE55_N: TrackPart[];
1148
1178
  /** Every built-in part, across manufacturers. */
package/dist/index.js CHANGED
@@ -1102,9 +1102,19 @@ var ATLAS_CODE55_N = [
1102
1102
  partNumbers: { left: "2050", right: "2051" },
1103
1103
  frogNumber: 5,
1104
1104
  lead: {
1105
- inches: 5 * TURNOUT_LEAD_INCHES_PER_FROG,
1106
- source: "derived",
1107
- note: "scaled from the measured #7 by frog number \u2014 not measured, BUT now corroborated: a photo read of Will's physical 2050 puts points\u2192frog at ~2.4\u2033, i.e. 0.48/frog against the #7's 0.482. Replace with a real measurement when someone puts a rule on it."
1105
+ inches: 3,
1106
+ source: "measured",
1107
+ note: "Will Gage, physical Atlas 2050 (#5 LH): points at 1\xBE\u2033, frog at 4.75\u2033 \u21D2 3\u2033 exactly. REFUTED BOTH standing models \u2014 the per-frog rule predicted 2.41\u2033, the constant-switch-angle model 2.64\u2033; both read short. It also retired my earlier ~2.4\u2033 photo estimate, which was 20% under."
1108
+ },
1109
+ pointsOffset: {
1110
+ inches: 1.75,
1111
+ source: "measured",
1112
+ note: "Will Gage, physical Atlas 2050 (#5 LH) \u2014 end of tie strip to point tips"
1113
+ },
1114
+ frogOffset: {
1115
+ inches: 4.75,
1116
+ source: "measured",
1117
+ note: "Will Gage, physical Atlas 2050 (#5 LH) \u2014 tie end to the apex of the V"
1108
1118
  },
1109
1119
  overallLength: {
1110
1120
  inches: 6,
@@ -1131,6 +1141,11 @@ var ATLAS_CODE55_N = [
1131
1141
  source: "measured",
1132
1142
  note: "Steve Branton, physical Atlas code 55 #7, 3\u215C\u2033 points\u2192frog (#173)"
1133
1143
  },
1144
+ frogOffset: {
1145
+ inches: 4.1875,
1146
+ source: "measured",
1147
+ note: "Will Gage, physical Atlas 2052 (#7) \u2014 tie end to the apex of the V"
1148
+ },
1134
1149
  overallLength: {
1135
1150
  inches: 6,
1136
1151
  source: "measured",
@@ -1152,15 +1167,20 @@ var ATLAS_CODE55_N = [
1152
1167
  partNumbers: { left: "2054", right: "2055" },
1153
1168
  frogNumber: 10,
1154
1169
  lead: {
1155
- inches: 4.1875,
1170
+ inches: 4.9375,
1156
1171
  source: "measured",
1157
- note: "Will Gage, physical Atlas 2054 (#10): points at 9/16\u2033 from the end, frog at 4.75\u2033 \u21D2 4\xB3\u2044\u2081\u2086\u2033. THIS IS THE MEASUREMENT THAT REFUTED the lead-per-frog rule \u2014 it predicted 4.82\u2033, 13% over."
1172
+ note: "Will Gage, physical Atlas 2054 (#10): 5.5\u2033 frog \u2212 9/16\u2033 points = 4\xB9\u2075\u2044\u2081\u2086\u2033. \u26A0\uFE0F CORRECTED from 4\xB3\u2044\u2081\u2086\u2033 (0.53.0\u20130.54.0), which used a 4.75\u2033 frog reading taken before we'd agreed the landmark. That earlier figure was the END OF THE FROG CASTING; a #10's V is shallow, so the apex is \xBE\u2033 back from it."
1158
1173
  },
1159
1174
  pointsOffset: {
1160
1175
  inches: 0.5625,
1161
1176
  source: "measured",
1162
1177
  note: "Will Gage, physical Atlas 2054 (#10) \u2014 end of tie strip to point tips"
1163
1178
  },
1179
+ frogOffset: {
1180
+ inches: 5.5,
1181
+ source: "measured",
1182
+ note: "Will Gage, physical Atlas 2054 (#10) \u2014 tie end to the apex of the V"
1183
+ },
1164
1184
  overallLength: {
1165
1185
  inches: 8,
1166
1186
  source: "measured",