---ci---
phase: 5
milestone: v0.2
status: complete
escalation:
type: merge_to_main
hook: merge_to_main
resolution: approved
decided_by: owner
decided_at: 2026-09-27
message: >-
The owner has recorded approval of the v0.2 MVP (v0.2.5) via the
/ci-run directive 'APPROVED', following the owner-directed UAT
staging at https://research.coreci.dev (validated: all routes
healthy through the HAProxy SSL front, v0.2.5 build confirmed
in the served bundle, the 3-click core path + trust surfaces
exercised per the committed UAT script). G-009 is RATIFIED at
the same gate: live mode covers the core research loop only
(G-002); library, settings persistence, suggestions, refine,
and graph surfaces stay mock-backed until v0.3+. This decision
unblocks: milestone merge to main, v0.2.5 publication as the
MVP release, milestone branch deletion (tags preserve history),
and v0.3 planning.
requirements:
covered: [REQ-01, REQ-02, REQ-03, REQ-04, REQ-05, REQ-06, REQ-07, REQ-08, REQ-09, REQ-10, REQ-11, REQ-12, REQ-13, REQ-14, REQ-15, REQ-16, REQ-17, REQ-18, REQ-19, REQ-20, REQ-21, REQ-22, REQ-23, REQ-24, REQ-25, REQ-26, REQ-31, REQ-32, REQ-33, REQ-34]
partial: []
---/ci---
Approved via the owner's recorded /ci-run directive ('APPROVED').
Milestone v0.2-mvp now completes: merge to main, v0.2.5 publication,
milestone branch deletion (tags v0.2.0-v0.2.5 preserve history),
v0.3 unblocked.
---ci---
phase: 5
milestone: v0.2
status: approval_pending
escalation:
type: deploy
hook: deploy
resolution: auto
directive: owner — deploy v0.2.5 and validate against https://research.coreci.dev
message: >-
v0.2.5-uat deployed to the LXC Docker host per direct owner
request, superseding the D-019 no-deploy default for this one
staging. Gates re-run green at deploy time; image built,
container swapped (v0.1.8 kept as researchx-prev rollback);
health check passed; validated through the HAProxy SSL front
(https://research.coreci.dev): all routes 200, TLS clean, the
served bundle reports v0.2.5 MVP release candidate with the
live-mode switch present (mock default — frontend-only
container). The merge gate (D-018) is UNCHANGED and remains
closed for the recorded owner decision; G-009 rides the same
gate.
requirements:
covered: []
partial: []
---/ci---
DEPLOY-RECORD ledger row added: v0.2.5-uat -> c28a97e at
https://research.coreci.dev.
---ci---
phase: 5
milestone: v0.2
status: approval_pending
message: >-
Release-candidate bookkeeping for the owner-directed v0.2.5
deploy: package.json and the Settings About surface report
v0.2.5 MVP release candidate with the live-mode hint. Same
class of update as the v0.1.8 audit note (About + package.json
-> release version). Gates green (97/97).
---/ci---
---ci---
phase: 5
milestone: v0.2
status: approval_pending
escalation:
type: merge_to_main
hook: merge_to_main
resolution: pending_owner_decision
message: >-
The v0.2 MVP milestone is complete: all six phases shipped
(v0.2.0 pre-execution, v0.2.1 methodology+adapters, v0.2.2
engine+trust, v0.2.3 API+integration, v0.2.4 adversarial+E2E,
v0.2.5 final review+ship), all REQ-01..34 covered, 129 backend
+ 97 frontend tests green, the trust thesis attack-proven.
On recorded approval: milestone merge to main, milestone
branches deleted (tags preserve history), v0.2.5 published as
the MVP release, v0.3+ unblocked. On rejection: feedback
becomes binding decisions for a fix cycle. G-009 is presented
at the same gate: live mode covers the core research loop
only (G-002); library/settings/suggestions/refine/graph stay
mock-backed to v0.3+ — the owner ratifies this scope.
requirements:
covered: [REQ-01, REQ-02, REQ-03, REQ-04, REQ-05, REQ-06, REQ-07, REQ-08, REQ-09, REQ-10, REQ-11, REQ-12, REQ-13, REQ-14, REQ-15, REQ-16, REQ-17, REQ-18, REQ-19, REQ-20, REQ-21, REQ-22, REQ-23, REQ-24, REQ-25, REQ-26, REQ-31, REQ-32, REQ-33, REQ-34]
partial: []
---/ci---
Ship record: PR #14 squash-merged phase/05-final-review-ship →
milestone/v0.2-mvp (023667e), tag v0.2.5 = the MVP release
candidate, phase branch deleted (local+remote), Gitea release
v0.2.5 created (HTTP 201) with the full milestone summary.
CHECKPOINT stays approval_pending at the merge gate — the
milestone merge to main awaits the owner's recorded decision.