Skip to content

feat(clearfolio): expose queryable capability readiness to planners - #537

Draft
cursor[bot] wants to merge 3 commits into
feat/clearfolio-capability-readiness-489from
cursor/bc-7295b3cf-ffc9-426a-b244-d93d50dc6d53-190f
Draft

feat(clearfolio): expose queryable capability readiness to planners#537
cursor[bot] wants to merge 3 commits into
feat/clearfolio-capability-readiness-489from
cursor/bc-7295b3cf-ffc9-426a-b244-d93d50dc6d53-190f

Conversation

@cursor

@cursor cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown

Buyer and operator impact

Startup logs are not a planner control surface. After this change, a signed-in operator can query the same non-secret Clearfolio readiness record, and a planner who opens 산출물 sees the next action before picking a file. Unconfigured or unsafe conversion fails closed with HTTP 503 instead of a generic 502 after wasted upload work. Whole-process /api/health liveness stays {ok:true}.

This is a bounded follow-up to #502 and does not close #489.

Exact current stack

Parent: feat/clearfolio-capability-readiness-489@f1f0cee6da9dd6ced09b624ae75376dd38d4d670 (#502).
Head: a460724e8ff58203e8c6da6a4fd44bed098506af.

Fresh parent→child comparison is ahead-only, zero-behind, and has the exact #502 head as merge base. The child was reconciled non-destructively after #502 moved onto #538; parent-owned artifact-origin and capability-readiness behavior is preserved while the original operator-surface delta remains 13 files. No predecessor-head evidence transfers.

Do not merge before #502, #538, #498, #493, and their protected predecessors.

What changed

  • Authenticated GET /api/capabilities returns {capabilities:{clearfolio:{ready,mode,reason,action}}} from the configuration-only evaluator. Anonymous callers get 401. No DNS or HTTP provider call.
  • Attachment upload and view return HTTP 503 with the same record when Clearfolio is locally unready, before reading upload bytes or asking the provider for an artifact link.
  • The 산출물 dialog shows that action as a status notice, disables the file input, and changes the submit label to 변환 설정 필요.
  • Tests cover weak HMAC readiness, anonymous vs authenticated query, and 503 upload rejection with fetch replaced by a throwing function.
  • docs/api.md and docs/deploy.md preserve fix(clearfolio): require canonical artifact-origin allowlist entries #538's exact artifact-origin allowlist/operator contract while adding the queryable readiness and HTTP 503 behavior.
  • Doctoring: docs/doctoring/clearfolio-capability-operator-surface.md (RFC 9110; Kubernetes probes; APA 7th).

Out of scope

Remote Clearfolio reachability, retry/idempotency, and the persisted provider lifecycle remain later #489 work. Coordinate any wire-protocol change with ContextualWisdomLab/clearfolio.

Current exact-head evidence boundary

All checks, reviews, and statuses predating a460724e8ff58203e8c6da6a4fd44bed098506af are historical. This PR remains Draft until fresh exact-head repository and organization checks pass, valid review findings are exhausted, and live governance requirements are satisfied.

Merge gate

Do not self-approve. Exact-head repository and organization checks on this unchanged head are required. Pending, queued, skipped-required, absent, stale, predecessor, author-only, draft-skip, status-only, or model-only evidence does not transfer or count as passing.

Refs #489 #502

Authenticated GET /api/capabilities and attachment 503 reuse the
configuration-only evaluator so operators and the 산출물 dialog can act
without coupling optional conversion to /api/health liveness.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
@seonghobae
seonghobae changed the base branch from fix/clearfolio-artifact-origin-policy-489-reconciled to feat/clearfolio-capability-readiness-489 August 16, 2026 16:03
@cursor
cursor Bot requested a review from seonghobae August 16, 2026 16:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants