<!-- canonical: efficientnewlanguage.org/ai/examples/928-eight-points-on-one-side-and-all-of-them-in-limits | ai_layer_version: 0.1.0 | updated: 2026-09-20 -->

# Example 928 — Eight points on one side and all of them in limits

`eight_points_on_one_side_and_all_of_them_in_limits.eml` - A control chart shows the last eight points all above the centre line, every one of them comfortably inside the three-sigma limits, and the rule in use - a point beyond the limits - has not fired. Every point is real. How likely eight in a row on one side is for a process that has not moved is computed below.

## EML

```eml
# Self-authored for the EML case corpus (no external origin). A control chart
# shows the last eight points all above the centre line, every one of them
# comfortably inside the three-sigma limits, and the rule in use - a point
# beyond the limits - has not fired. Every point is real. How likely eight in
# a row on one side is for a process that has not moved is computed below.
#
# The chart is careful. The limits are the real three-sigma limits; every
# point is real; the beyond-the-limits rule is applied exactly and has not
# fired; and the intent is exactly 'has the process shifted'.
#
# A process that has not moved lands each point above or below the centre
# like a coin toss, so eight on the same side is one chance in a hundred and
# twenty-eight - rarer than a single point beyond three sigma - and the rule
# that only watches the limits cannot see it.

8 => consecutive_points_above_centre
0 => points_beyond_three_sigma
27 => chance_of_a_point_beyond_three_sigma_per_myriad
256 => ways_eight_coin_tosses_can_fall

int(ways_eight_coin_tosses_can_fall / 2) => ways_eight_can_fall_on_one_chosen_side
int(10000 / ways_eight_can_fall_on_one_chosen_side) => chance_of_eight_above_by_luck_per_myriad
int(chance_of_eight_above_by_luck_per_myriad * 100 / chance_of_a_point_beyond_three_sigma_per_myriad) => run_rarity_over_limit_rarity_hundredths

"points above the centre in a row : " + str(consecutive_points_above_centre) ^0
"points beyond three sigma       : " + str(points_beyond_three_sigma) ^0
"rule in use                     : a point beyond the limits" ^0
"" ^0
"ways eight tosses can fall      : " + str(ways_eight_coin_tosses_can_fall) + "; all above : 1 of them" ^0
"chance of eight above, unmoved  : " + str(chance_of_eight_above_by_luck_per_myriad) + " per ten thousand" ^0
"chance of one point past 3 sigma : " + str(chance_of_a_point_beyond_three_sigma_per_myriad) + " per ten thousand" ^0
"the run is                      : " + str(run_rarity_over_limit_rarity_hundredths) + " hundredths as likely as a limit breach" ^0
"rule fired                      : no" ^0
"" ^0

# ---- what the chart verified ----

"the beyond-the-limits rule" ^0
"  limits : real three-sigma" ^0
"  points : every one real" ^0
"  rule : applied exactly; " + str(points_beyond_three_sigma) + " points outside" ^0
"  intent : has the process shifted" ^0
"  points outside the limits : " + str(points_beyond_three_sigma) ^0
"  verdict : NO SIGNAL" ^0
"" ^0
"  applying the limit rule exactly to real points is the" ^0
"  part done right here, and it is why 'no point beyond" ^0
"  three sigma' is a true statement" ^0
"" ^0

# ---- what eight on one side says ----

"a run" ^0
"  an unmoved process : lands each point above or below the" ^0
"    centre with equal chance" ^0
"  eight in a row above : 1 in " + str(ways_eight_can_fall_on_one_chosen_side) + ", " + str(chance_of_eight_above_by_luck_per_myriad) + " per ten thousand" ^0
"  a single point beyond three sigma : " + str(chance_of_a_point_beyond_three_sigma_per_myriad) + " per ten thousand" ^0
"  so the run : is a signal of the same order as the limit" ^0
"    rule's own, in a shape that rule does not look at" ^0
"  what it means : the centre has moved up, by less than" ^0
"    three sigma" ^0
"" ^0

# ---- what the line got ----

"the shift" ^0
"  evidence on the chart : eight points, one side" ^0
"  signal raised : none" ^0
"  is the limit rule misapplied : no" ^0
"  is 'no point outside the limits' the same as 'no shift' :" ^0
"    no; a shift smaller than three sigma stays inside the" ^0
"    limits and shows up as a run" ^0
"" ^0

# ---- null control ----

# The same chart read with the run rules as well (eight on one side, six
# trending, and the like), so a small shift is caught in its own shape.
0 => nc_signals_from_the_limit_rule_alone
1 => nc_signals_with_run_rules_added
1 => nc_shift_caught

"null control - add the run rules" ^0
"  signals, limit rule alone : " + str(nc_signals_from_the_limit_rule_alone) ^0
"  signals, with run rules : " + str(nc_signals_with_run_rules_added) ^0
"  shift caught : " + str(nc_shift_caught) ^0
"  no point and no limit changed; the chart stopped reading" ^0
"  only the height of the points and started reading their" ^0
"  side" ^0
"" ^0

# ---- the rule ----

"what a no-point-beyond-the-limits chart guarantees" ^0
"  no single point is more than three sigma from the centre :" ^0
"    exactly, real limits, real points" ^0
"  the process has not shifted : not addressed; eight in a" ^0
"    row on one side is " + str(chance_of_eight_above_by_luck_per_myriad) + " per ten thousand by luck, rarer" ^0
"    than the limit breach the rule waits for, and it fired" ^0
"    nothing" ^0
"" ^0

"a rule that watches only how far each point strays cannot see a small move" ^0
"of the whole; the evidence of that move is in which side the points fall on," ^0
"and eight tosses that all land heads are telling you the coin has changed" ^0
"" ^0

"Every point is inside real three-sigma limits and the limit rule fired" ^0
"nothing - correctly. But eight consecutive points above centre is " + str(chance_of_eight_above_by_luck_per_myriad) + " per" ^0
"ten thousand for an unmoved process, " + str(run_rarity_over_limit_rarity_hundredths) + " hundredths as likely as the breach the" ^0
"rule watches for; the process shifted and the chart stayed silent, until the run rules were added." ^0
```

## Python (deterministic transpilation)

```python
consecutive_points_above_centre = 8
points_beyond_three_sigma = 0
chance_of_a_point_beyond_three_sigma_per_myriad = 27
ways_eight_coin_tosses_can_fall = 256
ways_eight_can_fall_on_one_chosen_side = int(ways_eight_coin_tosses_can_fall / 2)
chance_of_eight_above_by_luck_per_myriad = int(10000 / ways_eight_can_fall_on_one_chosen_side)
run_rarity_over_limit_rarity_hundredths = int(chance_of_eight_above_by_luck_per_myriad * 100 / chance_of_a_point_beyond_three_sigma_per_myriad)
print("points above the centre in a row : " + str(consecutive_points_above_centre))
print("points beyond three sigma       : " + str(points_beyond_three_sigma))
print("rule in use                     : a point beyond the limits")
print("")
print("ways eight tosses can fall      : " + str(ways_eight_coin_tosses_can_fall) + "; all above : 1 of them")
print("chance of eight above, unmoved  : " + str(chance_of_eight_above_by_luck_per_myriad) + " per ten thousand")
print("chance of one point past 3 sigma : " + str(chance_of_a_point_beyond_three_sigma_per_myriad) + " per ten thousand")
print("the run is                      : " + str(run_rarity_over_limit_rarity_hundredths) + " hundredths as likely as a limit breach")
print("rule fired                      : no")
print("")
print("the beyond-the-limits rule")
print("  limits : real three-sigma")
print("  points : every one real")
print("  rule : applied exactly; " + str(points_beyond_three_sigma) + " points outside")
print("  intent : has the process shifted")
print("  points outside the limits : " + str(points_beyond_three_sigma))
print("  verdict : NO SIGNAL")
print("")
print("  applying the limit rule exactly to real points is the")
print("  part done right here, and it is why 'no point beyond")
print("  three sigma' is a true statement")
print("")
print("a run")
print("  an unmoved process : lands each point above or below the")
print("    centre with equal chance")
print("  eight in a row above : 1 in " + str(ways_eight_can_fall_on_one_chosen_side) + ", " + str(chance_of_eight_above_by_luck_per_myriad) + " per ten thousand")
print("  a single point beyond three sigma : " + str(chance_of_a_point_beyond_three_sigma_per_myriad) + " per ten thousand")
print("  so the run : is a signal of the same order as the limit")
print("    rule's own, in a shape that rule does not look at")
print("  what it means : the centre has moved up, by less than")
print("    three sigma")
print("")
print("the shift")
print("  evidence on the chart : eight points, one side")
print("  signal raised : none")
print("  is the limit rule misapplied : no")
print("  is 'no point outside the limits' the same as 'no shift' :")
print("    no; a shift smaller than three sigma stays inside the")
print("    limits and shows up as a run")
print("")
nc_signals_from_the_limit_rule_alone = 0
nc_signals_with_run_rules_added = 1
nc_shift_caught = 1
print("null control - add the run rules")
print("  signals, limit rule alone : " + str(nc_signals_from_the_limit_rule_alone))
print("  signals, with run rules : " + str(nc_signals_with_run_rules_added))
print("  shift caught : " + str(nc_shift_caught))
print("  no point and no limit changed; the chart stopped reading")
print("  only the height of the points and started reading their")
print("  side")
print("")
print("what a no-point-beyond-the-limits chart guarantees")
print("  no single point is more than three sigma from the centre :")
print("    exactly, real limits, real points")
print("  the process has not shifted : not addressed; eight in a")
print("    row on one side is " + str(chance_of_eight_above_by_luck_per_myriad) + " per ten thousand by luck, rarer")
print("    than the limit breach the rule waits for, and it fired")
print("    nothing")
print("")
print("a rule that watches only how far each point strays cannot see a small move")
print("of the whole; the evidence of that move is in which side the points fall on,")
print("and eight tosses that all land heads are telling you the coin has changed")
print("")
print("Every point is inside real three-sigma limits and the limit rule fired")
print("nothing - correctly. But eight consecutive points above centre is " + str(chance_of_eight_above_by_luck_per_myriad) + " per")
print("ten thousand for an unmoved process, " + str(run_rarity_over_limit_rarity_hundredths) + " hundredths as likely as the breach the")
print("rule watches for; the process shifted and the chart stayed silent, until the run rules were added.")
```

## stdout (executed)

```text
points above the centre in a row : 8
points beyond three sigma       : 0
rule in use                     : a point beyond the limits

ways eight tosses can fall      : 256; all above : 1 of them
chance of eight above, unmoved  : 78 per ten thousand
chance of one point past 3 sigma : 27 per ten thousand
the run is                      : 288 hundredths as likely as a limit breach
rule fired                      : no

the beyond-the-limits rule
  limits : real three-sigma
  points : every one real
  rule : applied exactly; 0 points outside
  intent : has the process shifted
  points outside the limits : 0
  verdict : NO SIGNAL

  applying the limit rule exactly to real points is the
  part done right here, and it is why 'no point beyond
  three sigma' is a true statement

a run
  an unmoved process : lands each point above or below the
    centre with equal chance
  eight in a row above : 1 in 128, 78 per ten thousand
  a single point beyond three sigma : 27 per ten thousand
  so the run : is a signal of the same order as the limit
    rule's own, in a shape that rule does not look at
  what it means : the centre has moved up, by less than
    three sigma

the shift
  evidence on the chart : eight points, one side
  signal raised : none
  is the limit rule misapplied : no
  is 'no point outside the limits' the same as 'no shift' :
    no; a shift smaller than three sigma stays inside the
    limits and shows up as a run

null control - add the run rules
  signals, limit rule alone : 0
  signals, with run rules : 1
  shift caught : 1
  no point and no limit changed; the chart stopped reading
  only the height of the points and started reading their
  side

what a no-point-beyond-the-limits chart guarantees
  no single point is more than three sigma from the centre :
    exactly, real limits, real points
  the process has not shifted : not addressed; eight in a
    row on one side is 78 per ten thousand by luck, rarer
    than the limit breach the rule waits for, and it fired
    nothing

a rule that watches only how far each point strays cannot see a small move
of the whole; the evidence of that move is in which side the points fall on,
and eight tosses that all land heads are telling you the coin has changed

Every point is inside real three-sigma limits and the limit rule fired
nothing - correctly. But eight consecutive points above centre is 78 per
ten thousand for an unmoved process, 288 hundredths as likely as the breach the
rule watches for; the process shifted and the chart stayed silent, until the run rules were added.
```

## Round-trip

`ok: true` — round-trip fixpoint reached (python1 == python2)

## Trace event types

eml:run:start · eml:assign · eml:output · eml:run:done
