Download ProjectIntakeTower/verifier/generate_test_generation.py from smlflg/AgentProjectMinenraeumer: direct link, hf CLI and curl.
- Browser
- Download file 5.93 kB
-
https://huggingface.co/smlflg/AgentProjectMinenraeumer/resolve/main/ProjectIntakeTower/verifier/generate_test_generation.py
- Command line
-
hf download hf://smlflg/AgentProjectMinenraeumer/ProjectIntakeTower/verifier/generate_test_generation.py
-
curl -L -o generate_test_generation.py https://huggingface.co/smlflg/AgentProjectMinenraeumer/resolve/main/ProjectIntakeTower/verifier/generate_test_generation.py
5.93 kB
| #!/usr/bin/env python3 | |
| import json, re | |
| from pathlib import Path | |
| from datetime import datetime, timezone | |
| ROOT=Path(__file__).resolve().parents[1] | |
| TRIAGE=ROOT/'triage' | |
| OUT=ROOT/'test_generation' | |
| PLANS=OUT/'plans' | |
| PATCHES=OUT/'patches' | |
| JOBS=ROOT/'jobs/pending' | |
| for d in [OUT,PLANS,PATCHES,JOBS]: d.mkdir(parents=True,exist_ok=True) | |
| MAX_PROJECTS=20 | |
| def load(path): return json.loads(Path(path).read_text(encoding='utf-8')) | |
| def slug(s): return re.sub(r'[^A-Za-z0-9_.-]+','_',s.replace('/home/smlflg/',''))[:100] | |
| def test_cmd(row): | |
| tech=(row.get('tech') or '').lower() | |
| path=row['path'] | |
| if 'python' in tech: return 'pytest -q' | |
| if 'node' in tech or 'javascript' in tech or 'typescript' in tech: return 'npm test -- --runInBand || npm test' | |
| if 'rust' in tech: return 'cargo test' | |
| if 'go' in tech: return 'go test ./...' | |
| return 'manual: inspect README/manifest and propose native smoke test' | |
| def plan_for(row): | |
| cmd=test_cmd(row) | |
| name=row['name']; path=row['path'] | |
| return f"""# TEST_GENERATION Plan — {name} | |
| Project: `{path}` | |
| Categories: {', '.join(row['categories'])} | |
| Score: {row['score']} | |
| Dirty: {row['dirty_count']} | |
| TODO/FIXME: {row['todo_fixme_count']} | |
| Plans: {row['plan_hit_count']} | |
| ## Mode | |
| READ_ONLY_TEST_GENERATION. | |
| Do not edit source project files directly. Produce a patch artifact or test proposal under ProjectIntakeTower first. | |
| ## Goal | |
| Create the smallest useful test layer that proves current intended behavior before any further build work. | |
| ## TDD Rules | |
| 1. Identify one behavior from README/TODO/current code. | |
| 2. Write one failing test as a patch artifact. | |
| 3. Document expected RED failure command. | |
| 4. Do not implement production code. | |
| 5. If tests already exist, add one focused regression/smoke test. | |
| 6. If no test framework is obvious, write a minimal test harness proposal. | |
| ## Suggested verifier command | |
| ```bash | |
| cd {path} | |
| {cmd} | |
| ``` | |
| ## Output artifact expected | |
| `ProjectIntakeTower/test_generation/patches/{slug(path)}.patch.md` | |
| ## Human gate | |
| Applying patch to source repo, installing dependencies, committing, pushing, or creating issues requires Samuel approval. | |
| """ | |
| def patch_template(row): | |
| cmd=test_cmd(row) | |
| return f"""# Patch Artifact — {row['name']} | |
| Project: `{row['path']}` | |
| Status: draft_test_patch_needed | |
| ## Intended test | |
| A bounded worker should inspect the project README/source and produce an actual patch here. | |
| This file is intentionally not applied automatically. | |
| ## Verifier | |
| ```bash | |
| cd {row['path']} | |
| {cmd} | |
| ``` | |
| ## Safety | |
| - Do not modify source repo directly in intake mode. | |
| - Do not install dependencies without Human Gate. | |
| - Do not commit/push. | |
| """ | |
| def main(): | |
| pri=load(TRIAGE/'PROJECT_PRIORITIZATION.json') | |
| # choose valuable/risky projects: URGENT first, KEEP next, skip ARCHIVE-only/PAUSE-only | |
| by_path={} | |
| selected=[] | |
| for cat in ['URGENT','KEEP','MERGE','TOKEN_BURN_CANDIDATE']: | |
| for r in pri['categories'].get(cat,[]): | |
| if r['path'] in by_path: continue | |
| if 'ARCHIVE' in r['categories'] and 'KEEP' not in r['categories']: continue | |
| by_path[r['path']]=1; selected.append(r) | |
| if len(selected)>=MAX_PROJECTS: break | |
| if len(selected)>=MAX_PROJECTS: break | |
| job_paths=[] | |
| index=['# TEST_GENERATION','',f'Generated: {datetime.now(timezone.utc).isoformat()}','',f'Projects selected: {len(selected)}','', 'Mode: READ_ONLY_TEST_GENERATION — patches/plans only, no source edits.', ''] | |
| for i,row in enumerate(selected,1): | |
| s=slug(row['path']) | |
| plan_path=PLANS/f'{i:02d}_{s}.md' | |
| patch_path=PATCHES/f'{i:02d}_{s}.patch.md' | |
| plan_path.write_text(plan_for(row),encoding='utf-8') | |
| patch_path.write_text(patch_template(row),encoding='utf-8') | |
| cmd=test_cmd(row) | |
| job={ | |
| 'job_id': f'testgen-2026-05-04-{i:02d}-{s.lower()}', | |
| 'project_name': row['name'], | |
| 'project_path': row['path'], | |
| 'mode': 'review_only', | |
| 'allowed_actions': ['read files','inspect README/source/tests','write ProjectIntakeTower test patch artifact only','run non-destructive test discovery commands'], | |
| 'forbidden_actions': ['modify source project files','commit','push','merge','delete files','install dependencies','create GitHub issues','print secrets'], | |
| 'allowed_files': [f'{row["path"]} read-only', 'ProjectIntakeTower/test_generation write scope'], | |
| 'expected_artifacts': [str(patch_path), str(plan_path)], | |
| 'verifier_commands': ['python3 ProjectIntakeTower/verifier/verify_test_generation.py'], | |
| 'stop_conditions': ['dependency install required','source edit required','test behavior ambiguous','credentials required'], | |
| 'objective': f'Generate one focused test patch artifact for {row["name"]} using strict TDD RED-first semantics.', | |
| 'suggested_project_test_command': cmd, | |
| 'source_plan': str(plan_path) | |
| } | |
| jp=JOBS/f'testgen_{i:02d}_{s}.json' | |
| jp.write_text(json.dumps(job,indent=2,ensure_ascii=False),encoding='utf-8') | |
| job_paths.append(str(jp)) | |
| index.append(f'## {i}. {row["name"]}') | |
| index.append(f'Path: `{row["path"]}`') | |
| index.append(f'Categories: {", ".join(row["categories"])}') | |
| index.append(f'Plan: `{plan_path}`') | |
| index.append(f'Patch artifact: `{patch_path}`') | |
| index.append(f'Verifier: `{cmd}`') | |
| index.append('') | |
| result={'status':'succeeded','mode':'READ_ONLY_TEST_GENERATION','projects':len(selected),'plans':len(list(PLANS.glob('*.md'))),'patch_artifacts':len(list(PATCHES.glob('*.patch.md'))),'jobs_created':len(job_paths),'jobs':job_paths} | |
| (OUT/'TEST_GENERATION.md').write_text('\n'.join(index),encoding='utf-8') | |
| (OUT/'result.json').write_text(json.dumps(result,indent=2,ensure_ascii=False),encoding='utf-8') | |
| print(json.dumps(result,indent=2)) | |
| if __name__=='__main__': main() | |