FIBONACCI RING COSMOLOGICAL OBSERVATORY v1.1.0
================================================

FILES
-----
fibonacci_ring_observatory.py   Self-contained Python 3.13 implementation.
stress_test_report.json         Results from the repeated-subdivision test.

REQUIREMENTS
------------
Python 3.10+ (tested here with Python 3.13). Standard library only.
No pip installs required.

RUN
---
Windows:
  py -3.13 fibonacci_ring_observatory.py --steps 5 --mutations

Linux/macOS:
  python3 fibonacci_ring_observatory.py --steps 5 --mutations

Repeated-subdivision endurance test:
  py -3.13 fibonacci_ring_observatory.py --steps 7 --forecast-next

The next transition is expected to exceed the default 512 MiB memory budget.
It will be refused during preflight, before allocating or committing a new
candidate topology:
  py -3.13 fibonacci_ring_observatory.py --steps 8

OPTIONS
-------
  --steps N                 Number of Fibonacci ring transitions.
  --mutations               Run shadow-only mutation tests.
  --trials-per-family N     Repetitions per mutation family.
  --log-dir PATH            Output directory.
  --max-simplices N         Hard cap on subdivision output simplices.
  --max-memory-mb N         Conservative estimated memory budget (default 512 MiB).
  --forecast-next           Print exact next-subdivision f-vector/size forecast.
  --radius FLOAT            Strand radius (default 1.0).
  --axial-scale FLOAT       Strand axial scale L (default 1.0).

v1.1.0 CHANGES
--------------
1. Replaced repeated global face scans with ordered-partition generation.
   Each output simplex is one strict chain in the input face poset, generated
   exactly once by the unique largest face.
2. Added an exact combinatorial preflight for output simplex count and f-vector.
3. Added a conservative memory preflight. It estimates 128 MiB interpreter /
   index overhead plus 2 KiB per output simplex. This is a safety heuristic,
   not an exact prediction of every host's resident memory.
4. A rejected subdivision does not allocate or commit a candidate. The ring's
   topology, trace, and progression pair remain unchanged by the failed step.
5. The optimized subdivision produces the same canonical topology signature
   as v1.0.0 through K=6.

IMPORTANT MATHEMATICAL/IMPLEMENTATION NOTES
-------------------------------------------
1. The supplied pseudocode does not define COMPLETE_SIMPLEX, FIB_INDEX, R,
   or L. This implementation uses:
     - FIB_INDEX(F_k,F_{k+1}) = k, recovered by reversing the pair recurrence.
     - COMPLETE_SIMPLEX(V) = the abstract simplex on V vertices, including
       all nonempty faces.
     - R = 1.0 and L = 1.0 by default; both are command-line configurable.
2. Ω is computed by fixed-point iteration x <- 1 + 1/x, not stored as a
   decimal literal. Decimal precision is 80 digits.
3. P = A*Ω + (B-A), E = 1/P. K is derived from (A,B); no octave or recursion
   depth register exists in the primary ring.
4. Homology is computed over F_2. This is an explicit coefficient choice.
5. The initial four states create complete simplices with 1, 2, 3, and 4
   vertices. At K=4, the tetrahedron is barycentrically subdivided.
6. In a 3D complex each tetrahedron contributes 24 tetrahedra to the next
   barycentric subdivision. Total simplices grow rapidly. The program now
   refuses unsafe materialization before allocation; it does not promise
   unlimited in-memory refinement.
7. Mutations are applied only to deep-copied shadow evidence. The primary
   FibonacciRing is checked before and after the campaign.
8. The hash chain detects later changes to the ledger, but cannot prove that
   the original observation was truthful. Historical replay and independent
   checks are separate evidence.
9. The vertex-relabeling probe uses labelled signatures and is therefore
   representation-sensitive; it must not be interpreted as proof that a
   relabeling changes the underlying unlabeled topology.
10. This is a reference implementation of the supplied pseudocode, not a
    drop-in adapter for an unavailable original source-code implementation.
    The supplied material was pseudocode, so COMPLETE_SIMPLEX, topology
    representation, and geometric scale had to be made explicit here.

OUTPUTS
-------
<log-dir>/baseline.json
<log-dir>/observations.jsonl
<log-dir>/tomography.jsonl
<log-dir>/mutation_results.jsonl   (when --mutations is used)
<log-dir>/final_report.json

FIRST RUN RECOMMENDATION
------------------------
Run --steps 7 --forecast-next. This executes K=0 through K=6, verifies all
seven transitions, reconstructs the topology from TRACE, and reports the
exact resource forecast for the next subdivision.
