44 Commits

Author SHA1 Message Date
jonathan 57528d7473 Merge pull request 'fix: count a run completed at the DONE transition, not after it (researchx#28)' (#29) from po/fix-cost-counter-race into main
ci / backend (uv, Python 3.12: ruff/mypy/pytest) (push) Successful in 32s
ci / frontend (Next.js on pnpm: typecheck/lint/test/build) (push) Successful in 1m37s
Reviewed-on: #29
2026-10-27 22:36:42 +00:00
jonathan f790435023 Merge branch 'main' into po/fix-cost-counter-race
ci / backend (uv, Python 3.12: ruff/mypy/pytest) (push) Successful in 32s
ci / frontend (Next.js on pnpm: typecheck/lint/test/build) (push) Successful in 1m36s
ci / backend (uv, Python 3.12: ruff/mypy/pytest) (pull_request) Successful in 32s
ci / frontend (Next.js on pnpm: typecheck/lint/test/build) (pull_request) Successful in 1m35s
2026-10-27 22:35:50 +00:00
jonathan b29105adf3 Merge pull request 'ci: quote the two job names so the gate file parses (researchx#24)' (#27) from po/phase4-ci-trigger2 into main
ci / backend (uv, Python 3.12: ruff/mypy/pytest) (push) Successful in 31s
ci / frontend (Next.js on pnpm: typecheck/lint/test/build) (push) Successful in 1m36s
Reviewed-on: #27
2026-10-27 22:35:39 +00:00
coreci-researchx-po 70243eeb8b fix: count a run completed at the DONE transition, not after it (researchx#28)
ci / backend (uv, Python 3.12: ruff/mypy/pytest) (push) Successful in 31s
ci / frontend (Next.js on pnpm: typecheck/lint/test/build) (push) Successful in 1m35s
ci / backend (uv, Python 3.12: ruff/mypy/pytest) (pull_request) Successful in 31s
ci / frontend (Next.js on pnpm: typecheck/lint/test/build) (pull_request) Successful in 1m35s
The cost counter was incremented by a watcher that awaited the run task, so it
lagged the status flip: the run read as done while /api/config still counted
zero completed runs. The increment now happens in the same step as the
transition to DONE, so any client that observes the run as done also observes
the counter.

Refs researchx#28
2026-10-27 05:18:51 +00:00
coreci-researchx-po c7ce780edd ci: quote the two job names - the file could not parse
ci / backend (uv, Python 3.12: ruff/mypy/pytest) (pull_request) Failing after 31s
ci / frontend (Next.js on pnpm: typecheck/lint/test/build) (pull_request) Successful in 1m39s
ci / backend (uv, Python 3.12: ruff/mypy/pytest) (push) Successful in 32s
ci / frontend (Next.js on pnpm: typecheck/lint/test/build) (push) Successful in 1m38s
The gate file has never parsed: the two job names were plain scalars
containing ': ' (YAML 1.2 plain-scalar rule - a colon followed by a space
ends the scalar and starts a mapping, so the file fails to load). Gitea
cannot build a run from a file it cannot parse, and the tell is a
dispatch POST answered HTTP 500 with an empty body.

Measured at this seat, own PAT, own repo: dispatch on main -> HTTP 500,
dispatch on this branch -> HTTP 500, 0 run records, 0 queued jobs.
Quoting the two names is the whole change; gates, labels, toolchain and
the trigger shape (workflow_dispatch: {} -> workflow_dispatch:) are
unchanged. Evidence and the follow-up dispatch live on researchx#24.
2026-10-27 04:34:06 +00:00
coreci-researchx-po 95681c4b97 ci: workflow_dispatch as a null trigger, not an empty map (researchx#24 - the fleet control) 2026-10-27 03:41:30 +00:00
jonathan 5d9b6fca23 Merge pull request 'ci: fire the pipeline - the trigger shape this instance actually runs (researchx#24)' (#26) from po/phase4-ci-trigger into main
Reviewed-on: #26
2026-10-27 03:34:53 +00:00
coreci-researchx-po ae2584c7f7 ci: pin a runner label that exists (ubuntu-latest) and install uv+pnpm in-file (researchx#24) 2026-10-27 03:29:06 +00:00
coreci-researchx-po de6c4e096c ci: fire the pipeline - bare push trigger and a non-null workflow_dispatch (researchx#24) 2026-10-27 00:59:08 +00:00
jonathan b9108ae873 Merge pull request 'ci: register the phase-4 gate - backend + frontend jobs, one dispatched green run on main opens the code phase (researchx#24)' (#25) from po/phase4-ci-gate into main
Reviewed-on: #25
2026-10-26 23:18:24 +00:00
coreci-researchx-po 01e2d2702c ci: register the phase-4 gating workflow (researchx#24) - backend (uv/Python 3.12: ruff, mypy, pytest) + frontend (Node 22/pnpm 12.6.0: typecheck, lint, test, build); one dispatched run on main with both jobs green opens the code phase 2026-10-26 12:55:48 +00:00
coreci-hap ab1cf5f3f8 Merge pull request 'comms-etiquette v1.0 pass: TL;DR prologues for README + frontend/README (researchx#20)' (#21) from docs/comms-etiquette-tldr-prologues into main 2026-10-19 19:51:57 +00:00
coreci-researchx-po 9ace9d8a02 docs(comms): TL;DR prologue for frontend/README.md (comms-etiquette v1.0; researchx#20) 2026-10-19 19:43:57 +00:00
coreci-researchx-po c1e8e53e5b docs(comms): TL;DR prologue for README.md (comms-etiquette v1.0; researchx#20) 2026-10-19 19:43:51 +00:00
coreci 8db45e478b docs(release): v0.2.5 published — approved milestone release; ledger closed for v0.2
---ci---
phase: 5
milestone: v0.2
status: complete
escalation:
  type: deploy
  hook: deploy
  resolution: auto
  directive: milestone release publication post-approval
  message: >-
    The approved milestone release v0.2.5 published. Gitea release
    retitled to note the recorded approval (decision 4721c2a) and
    G-009 ratification. The deployed container at
    https://research.coreci.dev already serves the release content
    (the v0.2.5-uat staging was built from the same milestone HEAD
    as the merged release) - no redeploy needed. DEPLOY-RECORD
    ledger row added; v0.2 milestone cycle closed.
requirements:
  covered: []
  partial: []
---/ci---
2026-09-29 15:29:21 +00:00
coreci 702d3aae71 chore(milestone): clear checkpoint — v0.2-mvp complete
---ci---
phase: 5
milestone: v0.2
status: complete
message: >-
  Milestone v0.2-mvp COMPLETE and APPROVED. Checkpoint cleared per
  the run workflow: the next /ci-run starts milestone v0.3 at
  phase 0 (pre-execution: specify, clarify, research, plan,
  grill, mvp/ux check), which config.json now points at (tag line
  v0.3.x). v0.3 scope is pending owner direction: live-bound
  library/settings/suggestions/refine surfaces (G-009 ratified
  scope), backend hosting for the LXC deployment, and the remaining
  6 methodologies from the locked catalog.
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---

Milestone branch will be deleted (local + remote); tags
v0.2.0-v0.2.5 and the main merge (b11b202) preserve the full
history. v0.3 unblocked.
2026-09-29 15:28:52 +00:00
coreci-bot b11b202271 milestone: v0.2 MVP — approved, merge to main (#15) 2026-09-29 15:28:45 +00:00
coreci 42435bc3b3 chore(milestone): clear checkpoint — v0.1-prototype complete
---ci---
phase: 8
milestone: v0.1
status: complete
message: >-
  Milestone v0.1-prototype COMPLETE and APPROVED. Checkpoint cleared
  per the run workflow: the next /ci-run starts milestone v0.2-mvp
  at phase 0 (pre-execution: specify, clarify, research, plan),
  which config.json now points at (tag line v0.2.x).
requirements:
  covered: [REQ-52, REQ-53, REQ-54, REQ-55, REQ-56, REQ-57, REQ-58, REQ-59, REQ-60, REQ-61, REQ-62, REQ-63, REQ-64, REQ-65, REQ-66, REQ-67, REQ-68]
  partial: []
---/ci---

Milestone branch deleted (local + remote); tags v0.1.0-v0.1.8 and the
main merge (d6ddcfe) preserve the full history. v0.2-mvp unblocked.
2026-09-27 10:06:08 +00:00
coreci cd01901183 docs(release): v0.1.8 published — approved milestone release deployed
---ci---
phase: 8
milestone: v0.1
status: complete
escalation:
  type: deploy
  hook: deploy
  resolution: auto
  directive: milestone release publication post-approval
  message: >-
    The approved milestone release v0.1.8 deployed to the LXC host
    (plain tag, not -uat): gates green at the tagged tree, container
    swapped, health check passed. Gitea release renamed to note the
    recorded approval. DEPLOY-RECORD ledger updated.
requirements:
  covered: [REQ-62]
  partial: []
---/ci---

Fifth deploy row: v0.1.8 (release) -> 93a7b57 at the tag. The
container at http://10.0.0.114:3000 now serves the approved
prototype.
2026-09-27 10:05:55 +00:00
coreci d6ddcfeb82 Merge milestone/v0.1-prototype: approved prototype (v0.1.8)
Milestone v0.1 — Prototype — COMPLETE.

Owner approval recorded 2026-09-27 (decision commit 3fd0e10) on the
extended prototype: v0.1.8. Phases P0–P8 (two owner-feedback
extension cycles), requirements REQ-52..62 + REQ-63..68 complete.

Delivered: Ask/Choose/Plan & Run/Reading Room inside a persistent app
shell (sidebar + top bar + avatar), folder-structured research library
with cross-report connections, settings surface, open-question
suggestions, refine dialogue — all behind the typed ApiClient
boundary, 90/90 tests, mock-backed (zero throwaway for v0.2).

Next: milestone v0.2 — MVP (FastAPI backend, engine, adapters,
trust loop, OpenAPI client swap).
2026-09-27 10:03:20 +00:00
coreci 5a8de00d63 docs(milestone): complete v0.1-prototype — approved and released
---ci---
phase: 8
milestone: v0.1
status: complete
requirements:
  covered: [REQ-52, REQ-53, REQ-54, REQ-55, REQ-56, REQ-57, REQ-58, REQ-59, REQ-60, REQ-61, REQ-62, REQ-63, REQ-64, REQ-65, REQ-66, REQ-67, REQ-68]
  partial: []
---/ci---

Milestone v0.1-prototype complete: REQ-62 owner approval recorded
(3fd0e10); REQUIREMENTS traceability all complete; ROADMAP marks
the milestone complete with the phase ledger; config.json advances
to milestone v0.2-mvp (tag line v0.2.x) — the MVP is unblocked.
Merging to main next; milestone branches are deleted after (tags
v0.1.0–v0.1.8 preserve history).
2026-09-27 10:03:16 +00:00
coreci 3fd0e10734 decision(P08): owner approval recorded — prototype approved at the REQ-62 gate
---ci---
phase: 8
milestone: v0.1
status: complete
escalation:
  type: prototype_approval
  hook: prototype_approval
  resolution: approved
  decided_by: owner
  decided_at: 2026-09-27
  message: >-
    The owner has recorded approval of the extended prototype
    (v0.1.8): the 5-screen click-path inside the app shell
    (sidebar + top bar + avatar), the folder-structured research
    library with cross-report connections, the settings surface,
    the open-question suggestions, and the refine dialogue —
    reviewed live on the staged UAT build and in the releases.
    All milestone requirements (REQ-52..61, REQ-63..68) are
    approved. This decision unblocks: milestone merge to main,
    v0.1.8 publication as the milestone release, and the v0.2
    MVP milestone.
requirements:
  covered: [REQ-52, REQ-53, REQ-54, REQ-55, REQ-56, REQ-57, REQ-58, REQ-59, REQ-60, REQ-61, REQ-62, REQ-63, REQ-64, REQ-65, REQ-66, REQ-67, REQ-68]
  partial: []
---/ci---

Approved via the owner's recorded /ci-run directive ('approved').
Milestone v0.1-prototype now completes: merge to main, milestone
branch deletion (tags preserve history), v0.2 unblocked.
2026-09-27 10:02:55 +00:00
coreci 57c5231d88 docs(P08): final phase shipped — v0.1.8-uat staged; pipeline halts at approval gate
---ci---
phase: 8
milestone: v0.1
status: approval_pending
escalation:
  type: prototype_approval
  hook: prototype_approval
  resolution: pending_owner_decision
  message: >-
    v0.1.8 milestone release candidate shipped and presented. UAT
    staged per owner cadence (v0.1.7-uat mid-cycle, v0.1.8-uat at
    gate). On recorded approval: milestone merge to main, milestone
    branches deleted, v0.2 unblocked. On rejection: feedback becomes
    binding decisions for a fix cycle.
requirements:
  covered: [REQ-52, REQ-53, REQ-54, REQ-55, REQ-56, REQ-57, REQ-58, REQ-59, REQ-60, REQ-61, REQ-63, REQ-64, REQ-65, REQ-66, REQ-67, REQ-68]
  partial: [REQ-62]
---/ci---

Ship record: PR #8 squash-merged phase/08-final-review-approval-ship →
milestone/v0.1-prototype (93a7b57), tag v0.1.8, phase branch deleted
(local+remote), Gitea release v0.1.8 created (HTTP 201), v0.1.8-uat
deployed healthy to the LXC host (gates re-run at deploy time, all
routes 200, suggestions + refine affordances served). DEPLOY-RECORD
row added; ROADMAP P8 → complete-pending-approval. Checkpoint stays
approval_pending at the REQ-62 gate — the milestone merge to main
awaits the owner's recorded decision.
2026-09-27 05:30:28 +00:00
coreci-bot 93a7b5755c docs(P08): complete 2nd final review + audit + approval-gate phase (#8)
Squash-merge of phase/08-final-review-approval-ship into milestone/v0.1-prototype. Review PASS-WITH-FIXES (double-compose + drawer-keyboard P1s, 90/90). Audit PASS-WITH-NOTES (all applied). Tag v0.1.8 = extended-prototype release candidate. Milestone merge to main HALTS at the REQ-62 owner approval gate.
v0.1.8
2026-09-27 05:27:37 +00:00
coreci b7c1eb89a6 docs(release): record v0.1.7-uat LXC staging (owner cadence directive)
---ci---
phase: 8
milestone: v0.1
status: execute
escalation:
  type: deploy
  hook: deploy
  resolution: auto
  directive: UAT cadence after P7 and P8 (owner fork decision)
  message: >-
    v0.1.7-uat deployed to the LXC Docker host per the owner-selected
    cadence. Gates re-run green at deploy time; container swapped,
    health check passed; /ask serves the suggestions + refine
    affordances. Approval gate UNCHANGED.
requirements:
  covered: []
  partial: [REQ-62]
---/ci---

DEPLOY-RECORD.md: third UAT staging row (v0.1.7-uat -> 432d2c0).
Owner can try suggestions + refine mid-cycle at
http://10.0.0.114:3000 before the P8 final review pass.
2026-09-27 05:07:22 +00:00
coreci 432d2c0eb0 docs(P07): phase 7 shipped — checkpoint advances to phase 8 (final)
---ci---
phase: 7
milestone: v0.1
status: complete
requirements:
  covered: [REQ-67, REQ-68]
  partial: []
---/ci---

Ship record: PR #7 squash-merged phase/07-ask-suggestions-refine →
milestone/v0.1-prototype (fe82508), tag v0.1.7, phase branch deleted
(local+remote), Gitea release v0.1.7 created (HTTP 201). REQUIREMENTS
traceability REQ-67/68 → complete; ROADMAP P7 → complete, P8 → next.
P8 re-presents the extended prototype at the REQ-62 owner approval
gate: review the full milestone diff, audit, tag v0.1.8, UAT deploy
per owner cadence directive, halt for the recorded decision.
2026-09-27 05:04:05 +00:00
coreci-bot fe82508131 feat(P07): ask screen intelligence — suggestions + refine dialogue (#7)
Squash-merge of phase/07-ask-suggestions-refine into milestone/v0.1-prototype. REQ-67 (open-question suggestions, click-fills-box) + REQ-68 (refine dialogue, scripted exchange, composed question). Verify: PASS — 88/88 tests, 2 P1 fixes (Enter-guard, focus return) with regression tests. Ships as v0.1.7.
v0.1.7
2026-09-27 05:03:38 +00:00
coreci 2652630a37 docs(release): record v0.1.6-uat LXC staging (owner directive)
---ci---
phase: 6
milestone: v0.1
status: approval_pending
escalation:
  type: deploy
  hook: deploy
  resolution: auto
  directive: push updates to lxc container
  message: >-
    Owner-directed UAT deploy of the extended prototype to the LXC
    Docker host via the codified release system. Gates re-run green
    (typecheck/lint/75 tests/build) at deploy time; image
    researchx:v0.1.6-uat swapped in; health check + route smoke
    passed. Approval gate UNCHANGED - the REQ-62 owner decision on
    the milestone merge to main is still pending.
requirements:
  covered: [REQ-52, REQ-53, REQ-54, REQ-55, REQ-56, REQ-57, REQ-58, REQ-59, REQ-60, REQ-61, REQ-63, REQ-64, REQ-65, REQ-66]
  partial: [REQ-62]
---/ci---

DEPLOY-RECORD.md (new): ledger of owner-directed UAT stagings.
v0.1.6-uat -> 600b49c, healthy at http://10.0.0.114:3000 with the
app shell, library, and settings verified in served HTML. Checkpoint
remains approval_pending.
2026-09-27 04:42:19 +00:00
coreci-bot 600b49c2fa docs(P06): complete final review + audit + approval-gate phase (#6)
Squash-merge of phase/06-final-review-approval-ship into milestone/v0.1-prototype. Review PASS-WITH-FIXES (deep-link P0 + 5 P1s, 75/75 tests). Audit PASS-WITH-NOTES (all notes applied). Tag v0.1.6 = extended-prototype release candidate. Milestone merge to main HALTS at the REQ-62 owner approval gate.
v0.1.6
2026-09-27 04:37:36 +00:00
coreci a118f359a7 docs(P05): phase 5 shipped — checkpoint advances to phase 6 (final)
---ci---
phase: 5
milestone: v0.1
status: complete
requirements:
  covered: [REQ-63, REQ-64, REQ-65, REQ-66]
  partial: []
---ci---

Ship record: PR #5 squash-merged phase/05-app-shell-reports-settings →
milestone/v0.1-prototype (b44bffc), tag v0.1.5, phase branch deleted
(local+remote), Gitea release v0.1.5 created (HTTP 201). REQUIREMENTS
traceability REQ-63..66 → complete; ROADMAP P5 → complete, P6 → next.
P6 re-presents the extended prototype at the REQ-62 owner approval
gate: review the full milestone diff, audit, tag v0.1.6, halt for
the owner's recorded decision.
2026-09-27 03:24:04 +00:00
coreci-bot b44bffcd7e feat(P05): app shell + research library + settings + avatar (#5)
Squash-merge of phase/05-app-shell-reports-settings into milestone/v0.1-prototype. REQ-63..66 covered. Verify: PASS (72/72 tests, P1 main-landmark fix in-phase). Ships as v0.1.5.
v0.1.5
2026-09-27 03:23:42 +00:00
coreci 0fa0b07429 fix(P04): deploy.sh — UAT branch lookup strips patch segment; SSH-key auth preferred
---ci---
phase: 4
milestone: v0.1
status: execute
persona: ci-lead-developer
task: T-4.2
requirements:
  covered: [REQ-52]
  partial: []
---/ci---

UAT variant now resolves the milestone branch by milestone number
(v0.1) not full tag version (v0.1.4), matching branch-strategy
labeling. DEPLOY_KEY (path in .env.secrets) preferred over passwords —
survives sshd PermitRootLogin prohibit-password (Ubuntu 24.04 default
that rejects root password auth; observed on the LXC host). Deployed
v0.1.4-uat for manual UAT: http://10.0.0.114:3000.
2026-09-27 02:48:41 +00:00
coreci 2ffc71cff9 feat(P04): codified docker release system — deploy.sh + Dockerfile + versioning
---ci---
phase: 4
milestone: v0.1
status: execute
persona: ci-lead-developer
task: T-4.2
requirements:
  covered: [REQ-52]
  partial: []
---/ci---

Codified release workflow for future releases: .ciagent/release/deploy.sh
(one-command tag-anchored deploy: gates at tag, worktree build, sync to
Docker host, image build, rolling container swap with researchx-prev
rollback, health check), frontend/Dockerfile (multi-stage, Next.js
standalone, non-root runtime), VERSIONING.md release rules, README.
Transport: sshpass OR native SSH_ASKPASS; rsync OR tar-over-ssh.
Version argument supports <tag>-uat variants staging milestone HEAD
(tag + review infra) without minting release tags — used for manual
UAT deployment while the owner approval gate stays closed. Secrets
(DEPLOY_HOST/USER/PASSWORD) resolve only from .ciagent/.env.secrets.
2026-09-27 02:33:12 +00:00
coreci 7db53d625b docs(P04): final phase shipped — pipeline HALTED at owner approval gate (REQ-62)
---ci---
phase: 4
milestone: v0.1
status: complete
escalation:
  type: prototype_approval
  hook: prototype_approval
  resolution: pending_owner_decision
  message: >-
    Prototype complete and presented for approval. On recorded approval:
    milestone merge to main, milestone branches deleted, v0.2 unblocked.
    On rejection: feedback becomes binding decisions for a fix cycle.
requirements:
  covered: [REQ-52, REQ-53, REQ-54, REQ-55, REQ-56, REQ-57, REQ-58, REQ-59, REQ-60, REQ-61]
  partial: [REQ-62]
---/ci---

Ship record: PR #4 squash-merged phase/04-final-review-approval-ship →
milestone/v0.1-prototype (1d97788), tag v0.1.4, phase branch deleted
(local+remote), Gitea release v0.1.4 created (HTTP 201) with full
milestone summary. Review: PASS-WITH-FIXES, 5 P0s fixed in-phase.
Audit: PASS. Per REQ-62 and the prototype_approval escalation hook,
the milestone merge to main does NOT proceed autonomously — the
pipeline halts here for the recorded owner decision.
2026-09-27 02:24:03 +00:00
coreci-bot 1d97788e5d docs(P04): complete final review + audit + approval-gate phase
Final phase: full-milestone review PASS-WITH-FIXES (5 P0s fixed with tests), audit PASS, PLAN/CHECKPOINT advance. REQ-62 owner approval gate: milestone merge to main + v0.1.4 publication halt for recorded owner approval. Gates 42/42 green.
v0.1.4
2026-09-27 02:23:44 +00:00
coreci b03f57bc56 docs(P03): phase 3 shipped — checkpoint advances to phase 4 (final)
---ci---
phase: 3
milestone: v0.1
status: complete
requirements:
  covered: [REQ-60, REQ-61]
  partial: []
---/ci---

Ship record: PR #3 squash-merged phase/03-mockups-polish-3click →
milestone/v0.1-prototype (d15568f), tag v0.1.3, phase branch deleted
(local+remote), Gitea release v0.1.3 created (HTTP 201). REQUIREMENTS
traceability REQ-60/61 → complete; ROADMAP P3 → complete, P4 → in
progress. Next: final phase (review + audit + P1-flag fixes), then the
owner approval gate halts the milestone before merge to main.
2026-09-27 01:53:49 +00:00
coreci-bot d15568f19b docs(P03): complete v2 mockups + polish + 3-click validation phase
Phase 3: /library v2-preview mockups (project graph, task inbox) behind the ApiClient boundary; typography pass; 3-click criterion pinned by test. REQ-60, REQ-61 covered. Gates green (37/37). Verify: PASS zero P0, two P1 fixed in-phase.
v0.1.3
2026-09-27 01:53:21 +00:00
coreci 17dd302f71 docs(P02): phase 2 shipped — checkpoint advances to phase 3 execute
---ci---
phase: 2
milestone: v0.1
status: complete
requirements:
  covered: [REQ-57, REQ-58, REQ-59]
  partial: []
---/ci---

Ship record: PR #2 squash-merged phase/02-plan-run-reading-room →
milestone/v0.1-prototype (d07e0b8), tag v0.1.2, phase branch deleted
(local+remote), Gitea release v0.1.2 created (HTTP 201). REQUIREMENTS
traceability REQ-57..59 → complete; ROADMAP P2 → complete, P3 → next.
2026-09-27 01:36:24 +00:00
coreci-bot d07e0b87b3 docs(P02): complete plan & run + reading room v0 phase
Phase 2: Plan & Run screen (approval UI, scripted live trace, pause/resume/cancel), Reading Room v0 (hover-anchored citations, ledger panel, real exports), mock multi-run store. REQ-57..59 covered. Gates: typecheck/lint/test(33)/build green. Verify: PASS zero P0, four P1 fixed in-phase.
v0.1.2
2026-09-27 01:36:02 +00:00
coreci 59af9cb3d1 docs(P01): phase 1 shipped — checkpoint advances to phase 2 execute
---ci---
phase: 1
milestone: v0.1
status: complete
requirements:
  covered: [REQ-52, REQ-53, REQ-54, REQ-55, REQ-56]
  partial: []
---/ci---

Ship record: PR #1 squash-merged phase/01-frontend-scaffold-ask-choose →
milestone/v0.1-prototype (dd2538f), tag v0.1.1, phase branch deleted
(local+remote), Gitea release v0.1.1 created (HTTP 201). REQUIREMENTS
traceability REQ-52..56 → complete; ROADMAP P1 → complete, P2 → planned.
Post-hoc P1 flags (drawer hyphen rendering, empty-question guard) routed to
P4 pre-demo fixes; P1-3/P1-4 fold into P2.
2026-09-27 00:44:57 +00:00
coreci-bot dd2538f33e docs(P01): complete frontend scaffold + ask + choose phase
Phase 1: Next.js App Router scaffold (TS strict, Tailwind v4, Vitest), ApiClient/MockApiClient boundary, /ask + /choose with 8 methodology cards, advanced dials drawer, root redirect, README quickstart. REQ-52..56 covered. Gates: typecheck/lint/test(20)/build green. Verify: PASS zero P0, 4 P1 flagged post-hoc.
v0.1.1
2026-09-27 00:44:31 +00:00
coreci 8a3baa15f1 docs(P01): phase 0 shipped — checkpoint advances to phase 1 execute (awaiting owner go)
---ci---
phase: 0
milestone: v0.1
status: complete
---/ci---

Ship record: squash-merge phase/00 → milestone/v0.1-prototype (4306b90), tag v0.1.0, origin bootstrap (main + milestone + tag pushed), Gitea release v0.1.0 created (HTTP 201), phase branch deleted. Owner bootstrap directive honored: PLAN.md covers phase 1 in detail; execution of P1 deferred until the owner runs /ci-run 1.
2026-09-27 00:06:30 +00:00
coreci 4306b9057e docs(P00): complete pre-execution phase
---ci---
phase: 0
milestone: v0.1
status: complete
---/ci---
v0.1.0
2026-09-27 00:05:53 +00:00
coreci 6ee4cbbf39 docs(init): initialize researchx (6 phases)
---ci---
phase: 0
milestone: v1.0
status: specify
autonomy: full
decisions:
  - id: D-001
    decision: Milestone v1.0 scope = slice 1 core loop (Ask → Choose → Plan & Run) with Rapid Answer + Deep Report only
    rationale: Phased MVP approved in planning session; 8-methodology catalog locked in vision but rolled out across milestones
    confidence: 0.95
    alternatives: [all 8 methodologies in v1.0, backend-engine-first]
  - id: D-002
    decision: Custom async engine (hand-rolled asyncio state machine) instead of LangGraph
    rationale: Full control over pause/resume, durable state, and trace streaming; avoids framework lock-in (open_deep_research archived Aug 2026)
    confidence: 0.85
    alternatives: [langgraph engine, custom-deferred-interrupts]
  - id: D-003
    decision: Stack = FastAPI (Python 3.12, uv, pydantic) + Next.js App Router (TypeScript strict)
    rationale: Best fit for adapter/LLM ecosystem; gpt-researcher validates the split; OpenAPI generates typed frontend client
    confidence: 0.9
    alternatives: [python cli-first, typescript end-to-end]
  - id: D-004
    decision: Model adapter defaults to Ollama cloud (ollama.com/v1, keyed) with keyless localhost:11434/v1 fallback
    rationale: User clarification — covers cloud + local in one default; graceful degradation
    confidence: 0.9
    alternatives: [cloud-only, local-first]
  - id: D-005
    decision: Release target = Gitea git.coreci.dev/coreci/researchx; secrets in .ciagent/.env.secrets (0600, gitignored)
    rationale: User-provided forge target and credentials; keys never in config.json or git
    confidence: 1.0
    alternatives: [local-only]
  - id: D-006
    decision: Phase tags run on v0.9.x patch line; final phase patch tag is the v1.0 milestone release
    rationale: Branch-strategy tag rules — tags run on previous minor's patch line, no separate milestone tag
    confidence: 0.9
    alternatives: [tags on v1.0.x line]
---/ci---

Specification: ResearchX deep-research studio — BYO model/storage/memory, methodology-first selection, visited-only verified citations, 3-click core loop
Requirements: 12-dial methodology framework, 5 adapter slots, custom async engine, trust loop, API + Next.js frontend, fake-adapter test suite
Constraints: local-first single-user, OpenAI-compatible endpoints only, no paywalled academic access, secrets never committed
Out of scope: chatbot/model host/closed index, auth/multi-tenancy, remaining 6 methodologies (v2 backlog)
2026-09-26 23:46:58 +00:00