Today was the day the narrative shifted.
The first three days of training camp, the narrative was all about Jimmy Garoppolo. How much he has improved and how confident he looks. Meanwhile, players and coaches said as little as possible about the rookie, Trey Lance.
Until Garoppolo threw two picks during today's practice.
Now Lance is the focus of everyone's attention, and Garoppolo is the invisible man in Santa Clara.
Here's what happened on Day 4.
He started out sharp and confident, and then completely fell apart. After his first interception, he became Indecisive Jimmy, the guy who stands in the pocket, seems confused, goes through his progressions too slowly and telegraphs his passes. That's who he is and always will be. Enough with the narrative that Garoppolo has turned a corner and become a brand new quarterback. He hasn't. He's the same guy who lost the Super Bowl.
Here's a blow-by-blow of his performance Saturday:
1. Completed a 15-yard pass over the middle to Deebo Samuel running a dig route against Jason Verrett. Garoppolo came out aggressive after checking down during most of Friday's practice.
2. Completed a 15-yard pass to Brandon Aiyuk running an out route against Tim Harris Jr. Another aggressive pass.
3. Completed a five-yard checkdown to Raheem Mostert.
4. Telegraphed a checkdown to Trey Sermon and got his pass batted down by Azeez Al-Shaair. This play foreshadowed the rest of Garoppolo's morning.
5. Telegraphed a checkdown pass to Kyle Juszczyk in the flat and got intercepted by Fred Warner, who returned the pick for a touchdown. Garoppolo might as well have walked the ball over the Warner and handed it to him. I have no idea how Garoppolo gets intercepted so frequently by linebackers standing 10 yards away from him. Warner did nothing to fool Garoppolo -- he just stood there. Garoppolo needs to know where these players will be.
6. Completed a 15-yard pass to Aiyuk running a deep crossing route against K'Waun Williams.
7. Completed a 25-yard pass up the seam to Ross Dwelley, who was double covered by Al-Shaair and Tavon Wilson. Dwelley jumped and caught the ball over both them. This was Garoppolo's best throw of camp so far.
8. Threw an incomplete pass over the middle intended for Aiyuk which Verrett knocked down.
9. Threw an incomplete pass behind an open Mohamed Sanu.
10. Scrambled for five yards. I was freaking shocked.
11. Completed a five-yard checkdown pass to Mostert.
12. Threw his second interception of the morning. This time, he hesitated before throwing a deep pass to Deebo Samuel, who had beaten Verrett. Garoppolo double pumped, threw off his back foot and uncorked a dead duck that faded into the middle of the field and landed right in Verrett's arms as if he were the intended receiver. Just an embarassing rep by Garoppolo, and it wouldn't be his last.
13. Completed a 10-yard pass to Trent Sherfield running an out route.
14. Completed a 15-yard pass to Mostert running a wheel route.
15. Threw an incomplete check down pass to Austin Watkins, who was wide open for three seconds before Garoppolo saw him. Watkins literally was jumping up and down, waving his arms in air -- he looked like he was doing jumping jacks. Then Garoppolo fired him a one-hopper.
16. Completed a five-yard pass to River Cracraft.
Bad day for Garoppolo, who has had three of those in a row.
Unlike Garoppolo, Lance has thrown zero picks in camp so far. And he primarily is playing from the pocket. He scrambled for the first time today, and the 49ers called their first zone read. And he looked fanstastic, as he has all of camp. He's so much better than young Colin Kaepernick, who constantly looked to scramble during practices. Lance scrambles as a last resort.
Here's the blow-by-blow of his performance from Day 4.
1. Scrambled for 10 yards.
2. Threw an incomplete deep pass to Richie James Jr., who was open. Lance's pass landed out of bounds. He always seems to miss his first throw.
3. Scrambled for 10 yards.
4. Ran a zone read and gained 10 yards.
5. Scrambled for 20 yards.
6. Completed a 15-yard pass to Dwelley running a corner route against Talanoa Hufanga.
7. Completed a five-yard pass to Samuel running an out route.
8. Threw a strike over the middle to Sanu who dropped the pass. Incomplete.
9. Scrambled to his left and threw the ball away.
10. Completed a 10-yard pass to Sanu running a dig route against rookie cornerback Deommodore Lenoir.
11. Ran a zone read and gained five yards.
12. Completed a 15-yard pass to Aiyuk running a curl route.
13. Fumbled a handoff to JaMycal Hasty. Arden Key recovered the fumble and returned it for a touchdown. This was Lance's first turnover of camp.
14. Ran a zone read and gained 10 yards.
15. Threw a strike over the middle to Sanu who was running a dig route and never turned his head to find the ball.
16. Completed a 5-yard pass to Sherfield running an out route.
17. Completed a 15-yard pass to Aiyuk running an out route. This was Lance's second read in the progression.
18. Completed a 15-yard pass to Richie James Jr. running a dig route.
Good day for Lance, who's had nothing but good days so far.
If this wasn't a quarterback competition before, it is one now.
And Lance is winning.