docs(bf-3e0vl): document diagnostic output files in build directories
This commit is contained in:
parent
8ea1ea69fb
commit
010a1fc6f5
2 changed files with 178 additions and 0 deletions
78
notes/bf-3e0vl.md
Normal file
78
notes/bf-3e0vl.md
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
# Diagnostic Output Files in pdftract Build Directories
|
||||
|
||||
## Summary
|
||||
|
||||
Located and documented diagnostic output files stored in the project build and test output directories.
|
||||
|
||||
## Build Diagnostic Files (target/ directory)
|
||||
|
||||
### Location: `/home/coding/pdftract/target/debug/build/*/stderr`
|
||||
|
||||
Build stderr files are stored in build-specific subdirectories within `target/debug/build/`. These contain compiler warnings and build diagnostic information.
|
||||
|
||||
**Example file:** `/home/coding/pdftract/target/debug/build/pdftract-core-0d428a00850f9797/stderr`
|
||||
|
||||
- **File size:** 760 bytes
|
||||
- **Last modified:** July 6, 2026 17:23
|
||||
- **Contents:** Cargo compiler warnings about missing optional checksum files and unused code
|
||||
|
||||
**Sample content:**
|
||||
```
|
||||
cargo:warning=Checksum file not found (optional): std14-metrics.json
|
||||
cargo:warning=Checksum file not found (optional): ../../../build/glyph-shapes.json
|
||||
cargo:warning=Checksum file not found (optional): named-encodings.json
|
||||
cargo:warning=Checksum file not found (optional): predefined-cmaps/adobe-japan1.json
|
||||
```
|
||||
|
||||
**Pattern:** Each build crate has its own subdirectory with a `stderr` file (e.g., `pdftract-core-HASH/stderr`, `pdftract-cli-HASH/stderr`).
|
||||
|
||||
### File Count
|
||||
|
||||
- **Total stderr files found:** ~150+ (one per build crate dependency)
|
||||
- **Non-empty stderr files:** ~10-15 (containing actual compiler warnings)
|
||||
- **Most recent:** July 6, 2026 17:30
|
||||
|
||||
## Test Output Files (notes/ directory)
|
||||
|
||||
### Location: `/home/coding/pdftract/notes/`
|
||||
|
||||
The `notes/` directory contains diagnostic output files from test runs and CLI invocations. These are more comprehensive and user-readable than the build stderr files.
|
||||
|
||||
**Most recent diagnostic file:** `/home/coding/pdftract/notes/bf-677eo-output.txt`
|
||||
|
||||
- **File size:** 104K (104,000+ bytes)
|
||||
- **Last modified:** July 6, 2026 16:36
|
||||
- **Contents:** Full compiler output with warnings, dead code analysis, and cfg condition checks
|
||||
|
||||
**Other diagnostic files found:**
|
||||
- `bf-5ucbr-pdftract-debug-output.json` - JSON debug output from pdftract CLI
|
||||
- `bf-694ie-extract.log` - Extraction operation log
|
||||
- `bf-694ie-help.log` - CLI help output log
|
||||
- `bf-3j4ec-*.txt` - Multiple output format test files (text, ndjson, json)
|
||||
|
||||
## Key Findings
|
||||
|
||||
1. **Build stderr files** are small (usually 0 bytes, 760 bytes when non-empty) and contain compiler warnings
|
||||
2. **Test output files** in `notes/` are much larger (up to 104K) and contain comprehensive diagnostic information
|
||||
3. **File naming pattern:** Build stderr uses crate-HASH directory, test outputs use bead-ID prefix
|
||||
4. **Most recent diagnostic:** `bf-677eo-output.txt` (104K, July 6, 2026 16:36)
|
||||
|
||||
## Access Patterns
|
||||
|
||||
### For build diagnostics:
|
||||
```bash
|
||||
# Find most recent non-empty stderr files
|
||||
find /home/coding/pdftract/target/debug/build -name "stderr" -size +0c -exec ls -lth {} \; | head -10
|
||||
```
|
||||
|
||||
### For test outputs:
|
||||
```bash
|
||||
# Find most recent diagnostic files
|
||||
ls -lht /home/coding/pdftract/notes/*.log /home/coding/pdftract/notes/*output* 2>/dev/null | head -10
|
||||
```
|
||||
|
||||
## Recommendations
|
||||
|
||||
1. The `notes/` directory appears to be the primary location for comprehensive test diagnostic outputs
|
||||
2. Build stderr files are useful for tracking compiler warnings across build iterations
|
||||
3. Test output files in `notes/` are substantially larger and more detailed than build diagnostics
|
||||
100
notes/bf-igsqf.md
Normal file
100
notes/bf-igsqf.md
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
# Bead bf-igsqf: Synchronize GitHub to match Forgejo
|
||||
|
||||
## Investigation Summary
|
||||
|
||||
### Current State
|
||||
- **Forgejo main**: `fc88f570` (latest)
|
||||
- **GitHub main**: `88b4f0da` (309 commits behind)
|
||||
- GitHub has 0 divergent commits (Forgejo is purely ahead)
|
||||
|
||||
### Blocker Discovered: Large Files in Git History
|
||||
|
||||
The push to GitHub is **blocked by large files** in commit history:
|
||||
|
||||
| File | Size | Status |
|
||||
|------|------|--------|
|
||||
| `--1.ppm` | 235.13 MB | Removed in commit 007439e7 but exists in history |
|
||||
| `test_parse_simple` | 60.74 MB | Removed in commit 007439e7 but exists in history |
|
||||
|
||||
GitHub's pre-receive hook rejects any push containing files >100MB in the entire history, even if those files were later deleted.
|
||||
|
||||
### Error Output
|
||||
```
|
||||
remote: error: File --1.ppm is 235.13 MB; this exceeds GitHub's file size limit of 100.00 MB
|
||||
remote: error: GH001: Large files detected. You may want to try Git Large File Storage
|
||||
remote: error: File test_parse_simple is 60.74 MB; larger than recommended 50.00 MB
|
||||
remote: error: Trace: f338a08cfb9744b571b78169e74d313ba22fced9e24079fc169da8702d9b41b4
|
||||
To https://github.com/jedarden/pdftract.git
|
||||
! [remote rejected] main -> main (pre-receive hook declined)
|
||||
```
|
||||
|
||||
### Root Cause
|
||||
The files `--1.ppm` (235MB) and `test_parse_simple` (60MB) were committed to the repository (likely as test fixtures) and later removed in commit `007439e7 chore(bf-a8031): remove tracked debug/scratch artifacts and compiled binaries`. However, git history retains all objects, so GitHub still sees them when pushing.
|
||||
|
||||
### Parent Mirror Configuration (bf-10182)
|
||||
The parent bead `bf-10182` was about configuring a Forgejo server-side push mirror to GitHub. Without API access, I cannot verify if this mirror is configured and active. If the mirror is properly configured on Forgejo, it may handle large file filtering differently than direct git push.
|
||||
|
||||
## Acceptance Criteria Status
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| GitHub main equals forgejo/main | **FAIL** | Blocked by large files in git history |
|
||||
| Any divergence reconciled with merge commit | N/A | No divergent commits (GitHub is purely behind, no fork) |
|
||||
| No force-push performed | **PASS** | Attempted regular fast-forward push |
|
||||
| Reconciliation documented | **PASS** | This note |
|
||||
|
||||
## Resolution Options
|
||||
|
||||
To complete the synchronization, one of these approaches must be taken:
|
||||
|
||||
### Option 1: Git History Rewrite (Recommended)
|
||||
Use `git filter-repo` or BFG Repo-Cleaner to remove large files from git history:
|
||||
|
||||
```bash
|
||||
# Install git-filter-repo
|
||||
pip install git-filter-repo
|
||||
|
||||
# Remove the large files from history
|
||||
git filter-repo --invert-paths --path --1.ppm --path test_parse_simple
|
||||
|
||||
# Force push to GitHub (required after history rewrite)
|
||||
git push github main --force
|
||||
```
|
||||
|
||||
**Trade-off**: This rewrites commit hashes from the rewrite point onward, which would require re-syncing Forgejo's mirror configuration.
|
||||
|
||||
### Option 2: Configure Git LFS Going Forward
|
||||
Add large files to Git LFS and clean up history:
|
||||
|
||||
1. Set up `.gitattributes`:
|
||||
```
|
||||
*.ppm filter=lfs diff=lfs merge=lfs -text
|
||||
test_parse_simple filter=lfs diff=lfs merge=lfs -text
|
||||
```
|
||||
|
||||
2. Migrate existing large files (if any still exist)
|
||||
|
||||
3. Rewrite history to move LFS objects
|
||||
|
||||
### Option 3: Forgejo Server-Side Mirror with LFS Filtering
|
||||
If the Forgejo push mirror (from bf-10182) can be configured to handle LFS or filter large files, this would be the cleanest solution. However, without API access, I cannot verify or configure this.
|
||||
|
||||
## WARN Items
|
||||
|
||||
1. **GitHub remains 309 commits behind Forgejo** due to large file blocker
|
||||
2. **No force-push was performed** (per workspace convention)
|
||||
3. **Git history cleanup required** before synchronization can complete
|
||||
4. **Cannot verify Forgejo push mirror status** without API access token
|
||||
|
||||
## Recommendation
|
||||
|
||||
Create a follow-up bead to:
|
||||
1. Rewrite git history using `git filter-repo` to remove large files
|
||||
2. Update Forgejo push mirror configuration if needed
|
||||
3. Re-attempt synchronization after cleanup
|
||||
|
||||
---
|
||||
|
||||
**Verification performed**: 2026-07-06
|
||||
**Bead ID**: bf-igsqf
|
||||
**Status**: PARTIAL (blocked by infrastructure constraint - large files in git history)
|
||||
Loading…
Add table
Reference in a new issue