mirror of
https://github.com/elicpeter/nyx.git
synced 2026-07-18 21:21:03 +02:00
35 lines
1.2 KiB
Markdown
35 lines
1.2 KiB
Markdown
|
|
# cross_file_scc_16cycle
|
|||
|
|
|
|||
|
|
A 16-function chain SCC across 16 files. Same structure as
|
|||
|
|
`cross_file_scc_8cycle`, scaled to 16 hops:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
server.py --> step_a --> step_b --> ... --> step_o --> step_p
|
|||
|
|
^ |
|
|||
|
|
+--------------- back edge --------------+
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
The sink (`subprocess.run(x, shell=True)`) is in `step_p.py`.
|
|||
|
|
|
|||
|
|
## Why this fixture exists
|
|||
|
|
|
|||
|
|
Stretches the SCC fix-point loop to a depth well beyond what an
|
|||
|
|
earlier cap of 3 could handle, and near what `64` allows comfortably.
|
|||
|
|
The observed iteration count is the single strongest evidence that the
|
|||
|
|
production cap is sized correctly for deep chains.
|
|||
|
|
|
|||
|
|
## Expected convergence
|
|||
|
|
|
|||
|
|
- Lower bound: 16 iterations (one per chain hop).
|
|||
|
|
- Upper bound: 32 iterations (2× monotone-refinement margin).
|
|||
|
|
|
|||
|
|
If this ever exceeds 32, the summary lattice is either non-monotone
|
|||
|
|
(a bug) or is growing more slowly per iteration than it should.
|
|||
|
|
|
|||
|
|
## Relationship to the worklist
|
|||
|
|
|
|||
|
|
A dependency-driven worklist will eventually reduce per-iteration cost
|
|||
|
|
without raising iteration count — i.e. the same 16 iterations, but
|
|||
|
|
with each iteration re-analysing only the dirty subset of files. This
|
|||
|
|
fixture becomes the primary test case for proving that change.
|