| 165 | |
| 166 | |
| 167 | class FileRecord(BaseModel): |
| 168 | path: str |
| 169 | kind: FileKind |
| 170 | |
| 171 | # Computed from git (excluding metadata-only commits) |
| 172 | last_content_updated: date | None = None |
| 173 | # Debug-only: raw git last touched (may be metadata commit) |
| 174 | last_git_touched: date | None = None |
| 175 | |
| 176 | # Read from file metadata/frontmatter |
| 177 | meta: DLCMeta | None = None |
| 178 | |
| 179 | # Derived |
| 180 | days_since_content_update: int | None = None |
| 181 | days_since_verified: int | None = None |
| 182 | |
| 183 | warnings: list[str] = Field(default_factory=list) |
| 184 | errors: list[str] = Field(default_factory=list) |
| 185 | |
| 186 | # If update mode would change file |
| 187 | would_change: bool = False |
| 188 | |
| 189 | |
| 190 | class Report(BaseModel): |