Skip to content

feat(recon): resolve writeup deliverables at case/path variants - #22

Merged
agiacalone merged 1 commit into
mainfrom
feat/recon-tolerant-writeup-discovery
Jun 28, 2026
Merged

feat(recon): resolve writeup deliverables at case/path variants#22
agiacalone merged 1 commit into
mainfrom
feat/recon-tolerant-writeup-discovery

Conversation

@agiacalone

Copy link
Copy Markdown
Owner

Problem

reg-lab-recon matched the manifest deliverable path strictly (repo/<file>). A writeup committed as WRITEUP.md, Writeup.md, submission/writeup.md, or CECS 378 Lab Writeup.md read as not-present — a false doc-✗ in FACTS.md, and (the part that bit us) no body to snapshot into recon-<lab>/writeups/. In the su26 §01 Lab 2 population that silently dropped 5 of 24 submitters — including two top-of-class writeups — from the vault cross-reference.

Fix

resolve_doc_path(repo_root, rel_file) resolves in priority order:

  1. exact repo/<rel_file>
  2. case-insensitive basename match anywhere in the tree (shallowest wins)
  3. a single .md whose name contains the configured stem (e.g. …Writeup.md)

Ambiguous (2+ fuzzy) or not-found returns the canonical path, so a genuine non-submission still records present=False. .git is never searched. Wired into recon.py's cloned-repo doc pass.

Tests

9 resolver cases + integration; verified against the 5 real repos that exposed the bug (all now resolve; true non-submitter stays present=False). Full suite green — 397 passed.

🤖 Generated with Claude Code

https://claude.ai/code/session_015cY2osrcunEXb5a8xtTy2V

reg-lab-recon matched the manifest deliverable path strictly
(repo/<file>), so a writeup committed as WRITEUP.md, Writeup.md,
submission/writeup.md, or "CECS 378 Lab Writeup.md" read as not-present:
a false doc-✗ in FACTS.md and, worse, no body to snapshot into
recon-<lab>/writeups/. In the su26 §01 Lab 2 population that dropped 5 of
24 submitters (including two top-of-class writeups) from the vault snapshot.

Add resolve_doc_path(repo_root, rel_file): exact -> case-insensitive
basename anywhere (shallowest wins) -> a single .md whose name contains the
configured stem. Ambiguous or not-found returns the canonical path, so a
genuine non-submission still records present=False. .git is never searched.
Wired into recon.py's cloned-repo doc pass.

Tests: 9 resolver cases (exact/case/subdir/fuzzy/root-pref/git-skip/
ambiguous/not-found/integration). Full suite green (397 passed).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015cY2osrcunEXb5a8xtTy2V
@agiacalone
agiacalone merged commit 71e8f3b into main Jun 28, 2026
4 checks passed
@agiacalone
agiacalone deleted the feat/recon-tolerant-writeup-discovery branch June 28, 2026 21:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant