Dre Greenlaw shoved Christian McCaffrey face-first into the grass at the San Francisco 49ers’ first padded practice of training camp, and McCaffrey popped back up smiling. He’d tangle with the same guy two more times before the day was over.

Two separate fights broke out at that practice, and the easy read is dysfunction. The actual read is a defense and an offense that spent last season disappointing themselves and are now allergic to letting anything slide, even in July, even against each other.

The Greenlaw-McCaffrey pushing wasn’t a grudge. McCaffrey told reporters afterward that Dre is his favorite football player in the NFL and has been for a long time, and it’s because of stuff like that. “He’s a guy that I’m glad just stopped at the pushing,” McCaffrey said. “He’s a guy if you have to, you might have to, but that’s not my first pick for guys I want to fight.” Coming from a guy who just tangled with Greenlaw three times in one practice, that’s about as close to a real compliment as this sport allows.

Same two players, three times, one practice.

This camp already had some swagger walking in. Deebo Samuel’s return to the same practice fields put a little of last year’s edge back into the building before a single pad even popped, and Friday just made that literal.

The second fight had nothing to do with McCaffrey. Tight end Jake Tonges pushed off Warner on a route, two officials threw flags for pass interference on the play, and none of it satisfied the All-Pro linebacker anyway.

Warner went after Tonges himself, and by every account needled him into sparking the fight.

It didn’t stay a two-man argument. Greenlaw pulled right tackle Colton McKivitz to the turf, fullback Kyle Juszczyk piled on top of that, and within seconds half the roster was tangled in a scrum that Kyle Shanahan just let play out, no whistle, no coaches wading in, a head coach watching his team handle something on its own.

Coach Yac’s camera caught the scrum from the sideline, pads on for the first time all camp:

https://twitter.com/Coach_Yac/status/2083191887842726299

The hit Greenlaw put on Juszczyk in that pile is the kind that would’ve been unremarkable in NFL camps two decades ago and isn’t anymore. That’s the physics of this roster in one clip: two linebackers who treat a July rep like it’s a divisional game, teammates included.

Assistant coach Chris Foerster tried to shut the story down afterward: “Fighting’s not something that we want at practice… Fights are a waste of time and energy. Absolute waste of time and energy.” he said. Fine. Tell that to a defense that spent last season watching ten-yard mistakes turn into someone else’s highlight reel.

New defensive tackle Osa Odighizuwa, six months into learning this roster, put it more plainly: “Fred and Greenlaw have a menacing aura,” he said. “The way they practice is the way they play.” That’s the tell, not the shove.

Consider how thin the week already was. This is a camp that opened with five players on the sideline nursing injuries before either fight happened, and it still found the energy to scrap over ten uncalled yards. Teams running out the string don’t do that. Teams that still believe in the season ahead do.

My mom, who reads every one of these before I file them, texted to ask if anybody got hurt. Nobody did. That was always the actual headline.

Two fights, zero apologies, and a roster too impatient to lose again.