SANTA CLARA -- Here's who stood during today's OTA. Keep in mind, the 49ers mostly did 7-on-7 team drills -- no pass rush -- and when they did 11-on-11s, they didn't wear helmets.
1. Quarterback Trey Lance.
Completed 17 of 20 passes, which is impressive, but also to be expected from a starting NFL quarterback in a 7-on-7 drill with no pass rush. What stood about Lance's performance was how confident and decisive he was in the pocket. He didn't hesitate. Didn't hold the ball too long. Didn't scramble or extend plays. He got the ball and threw it quickly and on time, like he's been running the offense for years. Good to see.
2. Cornerback Charvarius Ward.
Gave up zero catches during team drills. Got targeted once by Lance while covering Jauan Jennings over the middle and broke up the pass. Good first impression.
3. Wide receiver Jauan Jennings.
Received a team-high five targets during team drills and caught five of them. The passes he didn't catch were errant throws. It's clear Lance trusts Jennings. That's his safety blanket.
4. Wide receiver Malik Turner.
Made the longest catch of the day -- a 60-yard touchdown. On that play, he beat cornerback Hadar Kollman and safety George Odum (more on him below). If Turner continues to play like this throughout the offseason, he absolutely will make the team.
5. Tight end Ross Dwelley.
Started at tight end in place of George Kittle who didn't practice and caught four passes, and all of which were thrown by Lance, who seems to know which players won't drop his fastball.
6. Offensive tackle Justin Skule.
Practiced for the first time since tearing his ACL last offseason and looked completely healthy. Even started at right tackle in place of Mike McGlinchey, who will be out until training camp.
7. Cornerback Sam Womack.
Played outside and in the slot with the backups and broke up a pass intended for undrafted rookie wide receiver Tay Martin. If Womack keeps it up, he'll get reps with the starters. For now, the starting nickelback is Darqueze Dennard.
8. Running back Jordan Mason.
Had the longest run of the day -- a 70-yard touchdown. Mason exploded through the tackles and ran away from the 49ers' defensive pursuit. Impressive.
THE NOT SO GOOD
1. The entire offensive line.
Zero starters from last year's offensive line were on the field today. Trent Williams wasn't there. Laken Tomlinson is on the Jets. Alex Mack is mulling over retirement. Daniel Brunskill has knee tendinitis. And Mike McGlinchey is still recovering from a quad injury. Which means the left tackle was Colton McKivitz, the left guard was Aaron Banks, the center was Jake Brendel, the right guard was Jaylon Moore and the right tackle was Justin Skule. On the second team, the left tackle was Sam Schlueter, the left guard was Nick Zakelj, the center was Keaton Sutherland, the right guard was Spencer Burford and the right tackle was Jaylon Moore. Not ideal.
2. Safety George Odum.
Gave up a long touchdown catch while he was the last line of defense. Now we see why the Colts rarely played Odum on their defense, relegated him to special teams and decided not to re-sign him. It seems like second-year safety Talanoa Hufanga is a lock to start over Odum.
3. Running back Ty Davis-Price.
Dropped another pass. Which means he has dropped two passes in two practices in front of the media.
4. Quarterback Brock Purdy.
He was the only quarterback who threw an interception. It was the final play of practice. Purdy stared at his first read, decided he wasn't open, panicked, forced the ball to his second read, the pass got tipped by a defender standing five yards in front of him and landed in the hands of nickelback Qwantrezz Knight. It was a vintage Jimmy Garoppolo interception. Maybe that's why the 49ers drafted Purdy.
5. Defensive tackle Javon Kinlaw.
Still isn't healthy enough to practice, but today he was healthy enough to confront me on the sideline, call me lots of curse words and flick the baseball cap off my head. Baby steps.