feat(clearfolio): expose capability readiness without failing liveness - #502
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Review (head fa9a747f2b24857d4ca7df3207434242c9853457)
The seven-file parent→child delta matches the stated contract: clearfolioCapabilityStatus() is configuration-only, /api/health stays {ok:true}, the development mock is named development_mock, and invalid provider/HMAC/artifact-origin configuration degrades only Clearfolio with a secret-free next action. Local tests/unit/clearfolio-capability-readiness.test.mjs is 5/5 on this head after installing runtime dependencies.
No must-fix in the startup-log slice. This review does not approve and does not authorize merge. The PR is still Draft; queued/skipped/pending checks and CodeRabbit's draft skip are non-passing. Do not integrate before #504, #498, and #493. Predecessor-head evidence does not transfer.
Residuals (do not block this slice; they are the buyer gap)
- Startup logs are not a planner surface. A user who opens 산출물 can still pick a file and only then see a generic 502. Operators without container stdout cannot query the same record. Successor on
cursor/bc-7295b3cf-ffc9-426a-b244-d93d50dc6d53-190fadds authenticatedGET /api/capabilities, attachment HTTP 503 with the same payload, and a dialog notice that disables upload. - HMAC-invalid action was untested on this head. The successor adds that case plus anonymous 401 vs authenticated query.
docs/deploy.mdstill says::1while the runtime hostname is[::1]. Fixed in the successor.
Keep #489 open. This slice still does not claim remote reachability, retry/idempotency, or the persisted provider lifecycle.
Sent by Cursor Automation: Fix Issues
…igin parent Advance the Clearfolio capability-readiness child onto the exact current #538 parent without changing its seven-file semantic delta.
|
Caution Review failedAn error occurred during the review process. Please try again later. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
1 similar comment
|
Caution Review failedAn error occurred during the review process. Please try again later. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |


Buyer and operator impact
ScopeWeave keeps whole-process liveness independent from its optional Clearfolio integration while giving operators an actionable, non-secret capability-readiness signal. Planning remains live when document conversion is unavailable, while operators can distinguish unconfigured production, explicit development mock, valid provider configuration, and unsafe configuration.
This is a bounded follow-up slice of #489. It is stacked on #538 and does not close #489.
Exact current stack and scope
Current parent:
cursor/bc-d8443854-d031-4b84-b085-56f439fcbf05-df45@7b4b9fd0991673263b0cec16ee1f7f2f7e01fa60(#538).Current child head:
96f217715783c2e906c916113aad93ab890d9212.The parent advanced from the prior artifact-policy snapshot through a substantive reconciliation with current #498. Current #502 was rebuilt from the exact new #538 tree and only the seven readiness-owned semantic paths were overlaid; shared
CHANGELOG.mdandpackage.jsonwere merged deliberately so #538's artifact-origin policy and protected toast-accessibility registrations are retained. Fresh parent→child comparison is ahead-only, zero-behind, has7b4b9fd0...as the exact merge base, and contains exactly seven readiness-scope files.CHANGELOG.md(+4/-0 relative to fix(clearfolio): require canonical artifact-origin allowlist entries #538);docs/deploy.md(+25/-1, replacing the liveness-only health sentence with explicit optional-capability readiness separation while preserving fix(clearfolio): require canonical artifact-origin allowlist entries #538 artifact-origin operations guidance);docs/doctoring/clearfolio-capability-readiness.md;package.json;server/clearfolio.mjs;server/server.mjs;tests/unit/clearfolio-capability-readiness.test.mjs.The branch preserves #538's canonical
CLEARFOLIO_ARTIFACT_ORIGINSvalidation and regressions, parent Clearfolio artifact-origin/operator documentation, current provider response/resource hardening, protected Microsoft Project XML behavior, and toast accessibility coverage. No database, auth/session, attachment-refresh engine, dependency lockfile, workflow, scanner suppression, contextual-orchestrator runtime contract, or branch-protection artifact is changed by the final parent→child delta.Readiness contract
clearfolioCapabilityStatus()performs configuration-only evaluation and deliberately makes no DNS, HTTP, authentication, or provider-health request.ready=false,mode=unavailable, stable reasonclearfolio_not_configured, and a concrete non-secret remediation action;SCOPEWEAVE_DEV=1mock mode returnsready=true,mode=development_mock, with an action requiring a real provider before production;ready=true,mode=provider;CLEARFOLIO_ARTIFACT_ORIGINSdegrades only the Clearfolio capability with a stable reason and safe next action; andAt startup
server/server.mjsemits one structuredcapability.readinessrecord containing only capability, readiness, mode, stable reason, and fixed remediation text. Secret values, URLs, provider responses, and transport diagnostics are not logged.Liveness separation
GET /api/healthremains liveness-only and returns HTTP 200 with{ "ok": true }when optional Clearfolio is unavailable. The regression runs a fresh process per configuration, replacesfetchwith a throwing function, and proves readiness evaluation performs no provider traffic while liveness remains healthy.Current exact-head evidence boundary
All workflow/check/review evidence predating
96f217715783c2e906c916113aad93ab890d9212is historical and non-authorizing. Fresh exact-head repository and organization workflows are required. Pending, queued, skipped-required, neutral, absent, stale, predecessor, status-only, author-only, or model-only evidence is non-passing.This PR remains Draft until the unchanged current head has terminal-success applicable checks, exact owned-production coverage evidence, zero valid unresolved findings, and qualifying independent current-head approval under the live policy.
Remaining #489 work
This slice does not complete the Clearfolio production lifecycle. Protected integration, durable provider lifecycle/persistence controls, incident and recovery evidence, release acceptance, and any remaining provider-contract obligations remain separate work.
Merge gate
Do not integrate before #538, #498, #493, and their protected predecessors. After the parent stack reaches protected
develop, retarget or reconcile this bounded semantic diff against the resulting protected head, rerun all then-applicable repository and organization gates, and require qualifying independent current-head approval. No predecessor-head, author-only, status-only, synthetic-only, or model-only evidence transfers.Refs #489