# Happy path: 4 shard files, gridSize 4, pool size 4 -- 20,000 rows

$ java -jar target/spring-batch-partitioning-1.0.0.jar \
    --partition.shards-dir=./data/shards-small --partition.grid-size=4 \
    --partition.pool-core-size=4 --partition.pool-max-size=4

2026-09-14T09:29:56.758Z  INFO 4937 --- [           main] c.a.b.PartitioningDemoApplication        : Started PartitioningDemoApplication in 3.563 seconds (process running for 4.114)
2026-09-14T09:29:56.876Z  INFO 4937 --- [           main] o.s.batch.core.step.AbstractStep         : Executing step: [ordersManagerStep]
2026-09-14T09:29:56.892Z  INFO 4937 --- [der-partition-2] o.s.batch.core.step.AbstractStep         : Executing step: [ordersWorkerStep:partition0]
2026-09-14T09:29:56.890Z  INFO 4937 --- [der-partition-1] o.s.batch.core.step.AbstractStep         : Executing step: [ordersWorkerStep:partition1]
2026-09-14T09:29:56.900Z  INFO 4937 --- [der-partition-4] o.s.batch.core.step.AbstractStep         : Executing step: [ordersWorkerStep:partition2]
2026-09-14T09:29:56.901Z  INFO 4937 --- [der-partition-3] o.s.batch.core.step.AbstractStep         : Executing step: [ordersWorkerStep:partition3]
2026-09-14T09:29:57.962Z  INFO 4937 --- [der-partition-2] o.s.batch.core.step.AbstractStep         : Step: [ordersWorkerStep:partition0] executed in 1s70ms
2026-09-14T09:29:57.963Z  INFO 4937 --- [der-partition-4] o.s.batch.core.step.AbstractStep         : Step: [ordersWorkerStep:partition2] executed in 1s64ms
2026-09-14T09:29:57.990Z  INFO 4937 --- [der-partition-1] o.s.batch.core.step.AbstractStep         : Step: [ordersWorkerStep:partition1] executed in 1s99ms
2026-09-14T09:29:57.998Z  INFO 4937 --- [der-partition-3] o.s.batch.core.step.AbstractStep         : Step: [ordersWorkerStep:partition3] executed in 1s98ms
2026-09-14T09:29:58.005Z  INFO 4937 --- [           main] o.s.batch.core.step.AbstractStep         : Step: [ordersManagerStep] executed in 1s130ms
2026-09-14T09:29:58.011Z  INFO 4937 --- [           main] o.s.batch.core.step.AbstractStep         : Executing step: [reportStep]
REPORT: 20000 orders scored, 1561 flagged high-risk
JOB FINISHED: id=1 status=COMPLETED exitCode=COMPLETED

All four partitions start within a few milliseconds of each other, on four distinct named
threads (order-partition-1..4) -- this is what "partitioned" actually looks like at the OS level,
not just in configuration. 1,561 of 20,000 orders (7.8%) came back flagged high-risk, matching the
expected rate from the threshold math in docs/06-why-cpu-bound-not-io-bound.md.

--- GET /batch/partitions/1 (the diagnostic endpoint -- delete before shipping) ---
[
    {
        "PARTITION_NAME": "ordersWorkerStep:partition0",
        "THREAD_NAME": "order-partition-2",
        "READ_COUNT": 5000,
        "STARTED_AT": "2026-09-14T09:29:56.892Z",
        "FINISHED_AT": "2026-09-14T09:29:57.968Z",
        "DURATION_MS": 1075,
        "EXIT_CODE": "COMPLETED"
    },
    {
        "PARTITION_NAME": "ordersWorkerStep:partition1",
        "THREAD_NAME": "order-partition-1",
        "READ_COUNT": 5000,
        "STARTED_AT": "2026-09-14T09:29:56.895Z",
        "FINISHED_AT": "2026-09-14T09:29:57.999Z",
        "DURATION_MS": 1103,
        "EXIT_CODE": "COMPLETED"
    },
    {
        "PARTITION_NAME": "ordersWorkerStep:partition2",
        "THREAD_NAME": "order-partition-4",
        "READ_COUNT": 5000,
        "STARTED_AT": "2026-09-14T09:29:56.900Z",
        "FINISHED_AT": "2026-09-14T09:29:57.964Z",
        "DURATION_MS": 1064,
        "EXIT_CODE": "COMPLETED"
    },
    {
        "PARTITION_NAME": "ordersWorkerStep:partition3",
        "THREAD_NAME": "order-partition-3",
        "READ_COUNT": 5000,
        "STARTED_AT": "2026-09-14T09:29:56.901Z",
        "FINISHED_AT": "2026-09-14T09:29:58.002Z",
        "DURATION_MS": 1101,
        "EXIT_CODE": "COMPLETED"
    }
]
