Labels: type:feature, area:cli, area:ingest, priority:critical,
status:blocked, milestone:M1, phase:2
Summary
Wire the cobra subcommands init and ingest to the store and ingest
packages, producing a working end-to-end ingestion flow.
Acceptance criteria
Dependencies
Depends on: #8, #10
Verification
./forkguard init
./forkguard ingest --upstream github.com/openssl/openssl
sqlite3 ~/.forkguard/state.db 'SELECT COUNT(*) FROM advisories;'
# > 0
sqlite3 ~/.forkguard/state.db 'SELECT COUNT(*) FROM fix_commits;'
# > 0
# Idempotency:
./forkguard ingest --upstream github.com/openssl/openssl
sqlite3 ~/.forkguard/state.db 'SELECT COUNT(*) FROM advisories;'
# Same as before
This completes Milestone M1.
Milestone M2: Repository Mirroring & Ancestry
Labels:
type:feature,area:cli,area:ingest,priority:critical,status:blocked,milestone:M1,phase:2Summary
Wire the cobra subcommands
initandingestto the store and ingestpackages, producing a working end-to-end ingestion flow.
Acceptance criteria
forkguard initcreates~/.forkguard/state.db, runs migrations,optionally loads
--forks <path>(loading is implemented in M2.x butthe flag is accepted now and validated)
forkguard ingest --upstream <name>performs the full flow:OSVClient.QueryByReposource+source_id)upstreams.last_ingested_atingestis idempotent — no duplicate advisories or fixcommits
processed, M new, K fix commits, etc.
Dependencies
Depends on: #8, #10
Verification
This completes Milestone M1.
Milestone M2: Repository Mirroring & Ancestry