CHAPTER 49: Keep row level and measurement windows explicit

Boards: 49a and 49b.
Read the surrounding chapter before this lab. All examples are original and synthetic.

PREDICT
Predict the grouped L01 row before execution. The lab uses an in-memory SQLite table for that small example, then reads the actual supplied project files for both date windows. It writes no report and does not change the original END value.

RUN
From the companion root, run:
python visual_labs/ch49/walkthrough.py
Use python3 if that is your configured command.

COMPARE
Compare the printed values and explanations with both boards. Read expected_output.txt after making your prediction. An assert checks a known expected result and stops if it differs. Temporary output folders are removed after the demonstrations; original course files are not edited.

CHANGE ONE THING
Add a third L01 order worth 100 with goods cost 60 in the small in-memory example. Expect revenue 1300, goods contribution 520, one buying enquiry. Explain why the revised full-project window keeps 17 enquiries but has eight orders and seven buying enquiries.

EXPLAIN
State which input changed, which instruction handled that change, and why the resulting output is appropriate. If your prediction differs, identify the first step at which it diverges. Return to the surrounding lesson before adding more complexity.
