@willcgage/module-schematic 0.54.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,24 +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, and the error CHANGES SIGN. Measured lead ÷ N:
1043
- * **#5 = 0.600, #7 = 0.482, #10 = 0.419** it falls monotonically. This rule
1044
- * reads **20% SHORT at N=5** (2.41″ vs a measured 3.00″) and **13% LONG at
1045
- * N=10** (4.82″ vs 4³⁄₁₆″). There is no safe direction to be wrong in.
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″).
1046
1044
  *
1047
1045
  * Prefer {@link leadInchesForSize}, which returns a real part's measurement when
1048
1046
  * one exists and only falls back here for sizes nothing in the library covers.
1049
- * ⚠️ The remaining fallback user is the #2.5 wye at 1.21″; since per-frog RISES
1050
- * as N falls, that is very likely SHORT. Treat it as a placeholder.
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.
1051
1050
  *
1052
1051
  * A constant-switch-angle model was also proposed here and is likewise REFUTED:
1053
- * inverting {@link turnoutClosure} gives α = 0.036 (#5), 0.067 (#7), 0.069
1054
- * (#10). It was floated when only the #7 and #10 were known, which agreed to
1055
- * 3%; the #5 killed it. Kept as a warning two agreeing parts are not a law,
1056
- * and this library has now watched three separate rules die that way.
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
1057
  *
1058
- * The pattern that DOES fit both fully-measured parts is on {@link
1059
- * ATLAS_CODE55_N}: the frog sits at a fixed 4.75and the points move.
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.25of separation. Note it
1060
+ * predicts the FROG POSITION, not the lead — this constant has no successor.
1060
1061
  */
1061
1062
  declare const TURNOUT_LEAD_INCHES_PER_FROG = 0.482;
1062
1063
  /** Where a dimension came from. `derived` = we computed it from another part or
@@ -1105,6 +1106,13 @@ interface TrackPart {
1105
1106
  * inside its moulding; the rest of that end is plain approach track. Needed to
1106
1107
  * fit a part into a space, and by any renderer drawing the real outline. */
1107
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;
1108
1116
  /** End-to-end length of the part. */
1109
1117
  overallLength?: PartDimension;
1110
1118
  /** Diverging route radius (straight turnouts). */
@@ -1125,32 +1133,41 @@ declare const CODE55_RAIL_HEIGHT_INCHES = 0.055;
1125
1133
  * (3⅜″ points→frog, #173) and Will Gage's #5/#7/#10 overall lengths plus the
1126
1134
  * #10's lead and points offset. The #5's lead and the wye's are still derived.
1127
1135
  *
1128
- * ⭐⭐ **THE FROG SITS AT 4.75″ FROM THE TIE END ON BOTH MEASURED PARTS.**
1136
+ * MEASURED GEOMETRY (all Will Gage's, off physical parts, frog taken at the V):
1129
1137
  *
1130
- * part points FROG overall lead
1131
- * #5 1¾″ 4.75″ 6.00″ 3.0000″
1132
- * #10 ⁹⁄₁₆″ 4.75″ 8.00″ 4.1875
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
1133
1142
  *
1134
- * Atlas appear to FIX where the frog casting sits in the moulding and move the
1135
- * POINTS to change the frog number. That single fact explains every failed rule
1136
- * below at once: lead was never a property of N it is just
1137
- * `4.75 − wherever the points landed`.
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.
1138
1146
  *
1139
- * ⚠️ TESTABLE, AND CHEAP: Steve's #7 lead of 3⅜″ was measured independently, by
1140
- * someone else, on a different part. If the frog really is fixed at 4.75″, that
1141
- * part's POINTS must sit at 4.75 3.375 = **1⅜″**. Measure a physical 2052 and
1142
- * this model is confirmed or dead. Nobody has measured the #7's points offset.
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.
1143
1158
  *
1144
1159
  * NOTHING HERE IS PROPORTIONAL TO FROG NUMBER. Three rules assumed otherwise;
1145
1160
  * all three were tested against a physical part and FAILED:
1146
- * - ❌ **Lead ∝ N.** Measured lead ÷ N: #5 = 0.600, #7 = 0.482, #10 = 0.419 —
1147
- * falls monotonically. {@link TURNOUT_LEAD_INCHES_PER_FROG} reads 13% LONG at
1148
- * N=10 and 20% SHORT at N=5, so its error even changes sign.
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.
1149
1163
  * - ❌ **Constant switch angle.** Inverting {@link turnoutClosure} gives α =
1150
- * 0.036 (#5), 0.067 (#7), 0.069 (#10). The #7 and #10 agreed to 3% and the #5
1151
- * killed it. Two agreeing parts are not a law.
1164
+ * 0.036 (#5), 0.067 (#7), 0.043 (#10). Not constant.
1152
1165
  * - ❌ **Overall length ∝ N.** #5 = 6.00″ and #7 = 6.00″ — same moulding, two
1153
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.
1154
1171
  *
1155
1172
  * The definition is the reason: #N fixes the DIVERGENCE RATE AT THE FROG (1
1156
1173
  * across per N along) and says NOTHING about how much tie strip the manufacturer
package/dist/index.d.ts CHANGED
@@ -1039,24 +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, and the error CHANGES SIGN. Measured lead ÷ N:
1043
- * **#5 = 0.600, #7 = 0.482, #10 = 0.419** it falls monotonically. This rule
1044
- * reads **20% SHORT at N=5** (2.41″ vs a measured 3.00″) and **13% LONG at
1045
- * N=10** (4.82″ vs 4³⁄₁₆″). There is no safe direction to be wrong in.
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″).
1046
1044
  *
1047
1045
  * Prefer {@link leadInchesForSize}, which returns a real part's measurement when
1048
1046
  * one exists and only falls back here for sizes nothing in the library covers.
1049
- * ⚠️ The remaining fallback user is the #2.5 wye at 1.21″; since per-frog RISES
1050
- * as N falls, that is very likely SHORT. Treat it as a placeholder.
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.
1051
1050
  *
1052
1051
  * A constant-switch-angle model was also proposed here and is likewise REFUTED:
1053
- * inverting {@link turnoutClosure} gives α = 0.036 (#5), 0.067 (#7), 0.069
1054
- * (#10). It was floated when only the #7 and #10 were known, which agreed to
1055
- * 3%; the #5 killed it. Kept as a warning two agreeing parts are not a law,
1056
- * and this library has now watched three separate rules die that way.
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
1057
  *
1058
- * The pattern that DOES fit both fully-measured parts is on {@link
1059
- * ATLAS_CODE55_N}: the frog sits at a fixed 4.75and the points move.
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.25of separation. Note it
1060
+ * predicts the FROG POSITION, not the lead — this constant has no successor.
1060
1061
  */
1061
1062
  declare const TURNOUT_LEAD_INCHES_PER_FROG = 0.482;
1062
1063
  /** Where a dimension came from. `derived` = we computed it from another part or
@@ -1105,6 +1106,13 @@ interface TrackPart {
1105
1106
  * inside its moulding; the rest of that end is plain approach track. Needed to
1106
1107
  * fit a part into a space, and by any renderer drawing the real outline. */
1107
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;
1108
1116
  /** End-to-end length of the part. */
1109
1117
  overallLength?: PartDimension;
1110
1118
  /** Diverging route radius (straight turnouts). */
@@ -1125,32 +1133,41 @@ declare const CODE55_RAIL_HEIGHT_INCHES = 0.055;
1125
1133
  * (3⅜″ points→frog, #173) and Will Gage's #5/#7/#10 overall lengths plus the
1126
1134
  * #10's lead and points offset. The #5's lead and the wye's are still derived.
1127
1135
  *
1128
- * ⭐⭐ **THE FROG SITS AT 4.75″ FROM THE TIE END ON BOTH MEASURED PARTS.**
1136
+ * MEASURED GEOMETRY (all Will Gage's, off physical parts, frog taken at the V):
1129
1137
  *
1130
- * part points FROG overall lead
1131
- * #5 1¾″ 4.75″ 6.00″ 3.0000″
1132
- * #10 ⁹⁄₁₆″ 4.75″ 8.00″ 4.1875
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
1133
1142
  *
1134
- * Atlas appear to FIX where the frog casting sits in the moulding and move the
1135
- * POINTS to change the frog number. That single fact explains every failed rule
1136
- * below at once: lead was never a property of N it is just
1137
- * `4.75 − wherever the points landed`.
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.
1138
1146
  *
1139
- * ⚠️ TESTABLE, AND CHEAP: Steve's #7 lead of 3⅜″ was measured independently, by
1140
- * someone else, on a different part. If the frog really is fixed at 4.75″, that
1141
- * part's POINTS must sit at 4.75 3.375 = **1⅜″**. Measure a physical 2052 and
1142
- * this model is confirmed or dead. Nobody has measured the #7's points offset.
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.
1143
1158
  *
1144
1159
  * NOTHING HERE IS PROPORTIONAL TO FROG NUMBER. Three rules assumed otherwise;
1145
1160
  * all three were tested against a physical part and FAILED:
1146
- * - ❌ **Lead ∝ N.** Measured lead ÷ N: #5 = 0.600, #7 = 0.482, #10 = 0.419 —
1147
- * falls monotonically. {@link TURNOUT_LEAD_INCHES_PER_FROG} reads 13% LONG at
1148
- * N=10 and 20% SHORT at N=5, so its error even changes sign.
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.
1149
1163
  * - ❌ **Constant switch angle.** Inverting {@link turnoutClosure} gives α =
1150
- * 0.036 (#5), 0.067 (#7), 0.069 (#10). The #7 and #10 agreed to 3% and the #5
1151
- * killed it. Two agreeing parts are not a law.
1164
+ * 0.036 (#5), 0.067 (#7), 0.043 (#10). Not constant.
1152
1165
  * - ❌ **Overall length ∝ N.** #5 = 6.00″ and #7 = 6.00″ — same moulding, two
1153
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.
1154
1171
  *
1155
1172
  * The definition is the reason: #N fixes the DIVERGENCE RATE AT THE FROG (1
1156
1173
  * across per N along) and says NOTHING about how much tie strip the manufacturer
package/dist/index.js CHANGED
@@ -1111,6 +1111,11 @@ var ATLAS_CODE55_N = [
1111
1111
  source: "measured",
1112
1112
  note: "Will Gage, physical Atlas 2050 (#5 LH) \u2014 end of tie strip to point tips"
1113
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"
1118
+ },
1114
1119
  overallLength: {
1115
1120
  inches: 6,
1116
1121
  source: "measured",
@@ -1136,6 +1141,11 @@ var ATLAS_CODE55_N = [
1136
1141
  source: "measured",
1137
1142
  note: "Steve Branton, physical Atlas code 55 #7, 3\u215C\u2033 points\u2192frog (#173)"
1138
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
+ },
1139
1149
  overallLength: {
1140
1150
  inches: 6,
1141
1151
  source: "measured",
@@ -1157,15 +1167,20 @@ var ATLAS_CODE55_N = [
1157
1167
  partNumbers: { left: "2054", right: "2055" },
1158
1168
  frogNumber: 10,
1159
1169
  lead: {
1160
- inches: 4.1875,
1170
+ inches: 4.9375,
1161
1171
  source: "measured",
1162
- 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."
1163
1173
  },
1164
1174
  pointsOffset: {
1165
1175
  inches: 0.5625,
1166
1176
  source: "measured",
1167
1177
  note: "Will Gage, physical Atlas 2054 (#10) \u2014 end of tie strip to point tips"
1168
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
+ },
1169
1184
  overallLength: {
1170
1185
  inches: 8,
1171
1186
  source: "measured",