verify(P01): passed (4 layers, 1 P1 finding)
---ci---
phase: 1
milestone: v1.0
status: verify
requirements:
covered: [REQ-01, REQ-09]
partial: [REQ-10, REQ-12]
lessons:
- Gitea returns 404 (not 401) on /raw/ for private repos; the body is empty so
the cause is not obvious. Documented in D-012 workaround: make the
evidence repo public.
- Bash parameter expansion '"${TOKEN:+<set>}${TOKEN:-<unset>}"' leaks the
literal token to stdout when the variable is set. Use if/else.
- rg is not installed in this environment; verification used grep instead.
Recorded so future phases don't repeat the assumption.
review:
p0: 0
p1: 1
p1_items:
- id: P1-001
location: .git/config (remote 'origin' URL)
issue: Gitea API token embedded in the remote URL as https://<token>@git.cloudinit.dev/...
risk: Token readable by any process with read access to .git/config on this host
recommendation: Switch the remote to a tokenless URL and use a git credential helper or
GIT_ASKPASS to supply the token at push time. Removing it now would break auto-push
in ship.md Step 6, so defer to the COMPLETE audit gate before the milestone ships.
disposition: deferred_to_audit
---/ci---
Layer 1 STRUCTURAL: PASS (all 11 PLAN.md files exist; bash -n + yaml load clean; no TODO/FIXME).
Layer 2 BEHAVIORAL: PASS (verify_phase01.sh + idempotency re-run both green; all 4 must-haves from PLAN.md met).
Layer 3 SECURITY: PASS with 1 P1 finding (P1-001: token in .git/config remote URL — deferred to audit).
Layer 4 QUALITY: PASS (correctness, testing, security, performance, maintainability, adversarial all green).
Requirements covered this phase: REQ-01, REQ-09. Partial: REQ-10, REQ-12
(skeletons; full implementation in Phase 04).
This commit is contained in: