P07 — Finish creator and protected visitor journeys
Status: Ready for owner-launched SWE work, subject to dependencies below; no worker dispatched.
Difficulty: 3/5 · Agent tier: L2 · Implementer: SWE-2.
Review: GPT-6 Astra medium.
Dependencies / write ownership: Independent source lane; coordinate if App Health/Clarity work later touches Karte. Cancelled Knowledge Base #48 must not be reopened as a dependency.
The owner requested completion of this retained scope on 2026-09-19. Earlier queue-excluded/portfolio-deferred notes below are historical scheduling decisions, not current exclusions. This PRD organizes the remaining work; it does not mark prior unchecked criteria done or grant release authority.
Why
Existing published pages work, but fresh creator, protected chat, generated modes and customer-domain evidence remain incomplete.
What
Finish the remaining acceptance below and the retained original issue criteria. Audit existing merged work first; no feature expansion or unrelated rewrite.
Design
Retain maintenance/personal-use scope and current profile/RAG boundaries. Audit existing storage/cache fixes before coding. Use fixture-backed local integration tests and a specific hosted handoff; mocks are never hosted proof.
Specs
Requirement 1
WHEN creator onboarding/import storage fails, THEN the visible draft survives and login navigation stops until a durable retry succeeds.
Requirement 2
WHEN a published profile is opened, THEN intended links and enabled generated modes resolve to correct content without leaking owner-only data.
Requirement 3
WHEN chat verification fails or expires, THEN the app fails safely with retry; valid live challenges must be exercised normally, never bypassed.
Requirement 4
WHEN an approved customer domain is attached, THEN ownership, TLS, routing and rollback are qualified separately from source tests.
Tasks — SWE-2 phase
Tasks — Codex review and web/device phase
Agent contract and completion boundary
- Default implementer: SWE-2 (owner-preferred/free). L1 = bounded audit/test/receipt work; L2 = multi-file implementation/integration; L3 = privacy, ownership, migration or security-critical work. These are task tiers, not SWE model settings or benchmark claims.
- Read nearest AGENTS.md, PROJECT_STATUS.md, current issue/comments and current main/PR state. Preserve dirty work. Use an isolated checkout; one writer per repository/shared file set. Reuse existing scripts and package manager.
- Start with source audit and smallest relevant regression; expand to required owning gates. No weakened assertions, performance budgets, skipped blockers or repeated reruns until green. Native builds/tests use the installed XcodeBuildMCP skill; unavailable macOS tooling is a named handoff, not fake verification.
- Local synthetic tests are SWE work; authenticated hosted browser/provider and physical-device tasks are Codex handoff. Do not stop all source work merely because the later web gate exists.
- No browser signup, secrets/env/production-config access, provider account creation, production migration/deploy/release, paid service, destructive cleanup or automatic merge. Commit/push/open PR only when the owner's worker launch explicitly authorizes it.
- Deliver: exact branch/SHA or local diff, acceptance-to-test matrix, actual commands/results, unresolved failures, PR description, and a numbered browser/device handoff with synthetic-data boundaries and rollback needs. A no-code-needed result is valid only with evidence.
- Use Refs, not auto-closing issue keywords, while any browser/device/production criterion is open. Track SWE complete and product complete separately. Codex reviews; the owner remains the authority for additional production actions.
Model routing is a risk-based recommendation. GPT-6 Astra review/browser capability reference: https://developers.openai.com/api/docs/guides/latest-model . No agent is launched by this PRD. Cancelled Knowledge Base #48 and Paths #32/#36 remain out of scope.
Retained original requirements and historical receipts
September 12 — creator draft and release-cache repairs deployed
Source 745254fff16d003c1ed8a4e1d594924dc8c2894d is pushed and deployed. CI 34647291900 and deployment 34647565894 passed. Worker version: fa092f5e-1c39-414d-a3d1-c7a9a6060c81. Full local quality: 217 tests passed.
- Chat onboarding and link import preserve the visible draft and stop login navigation if browser storage fails. Retrying saves the same content before navigation.
- The live verification exposed URL-only edge HTML caching that survived a release and referenced a removed JavaScript chunk. Next.js documents now retain OpenNext's cache policy. The welcome app route no longer receives public-profile cache headers.
- Production browser checks at 390px and 1440px verified both storage-failure paths and successful retries, with no horizontal overflow. Those fault tests used synthetic chat/import responses; they do not qualify backend import or generated onboarding answers.
- A separate unmocked scratch-draft flow on ordinary /create returned 200 with private/no-store HTML, zero failed JavaScript chunks, and preserved the entered draft through navigation to login.
- All isolated test contexts were closed. No account/profile was created, no login was submitted, and no owner data or provider settings were changed.
First-time authenticated profile creation and customer custom-domain acceptance remain open. This repair does not close the issue or change the maintenance posture.
Current queue disposition — 11 September 2026
Owner and guest core flows passed. First-time creation, customer custom domains and historical/generated-mode cleanup remain follow-ups.
This remains an open repository backlog issue. Its outstanding acceptance criteria are not marked complete. The owner-approved minimum-use review has moved it out of the immediate project queue; the original requirements below and existing README references are preserved. To resume, remove queue: excluded and unarchive the project card.
Published profile content cleanup — 2026-09-11
Source 2a1927bd3b98293ed53abeff9402f186b50b1d3f is pushed and clean. CI passed at the current head.
- Live
/sarthak project cards now use the current catalog descriptions and canonical links.
- Three placeholder article destinations, two duplicate AI Revamp sections, and the duplicate Profile Memory project card are hidden with their source records retained.
- The secondary booking action now uses the complete Google Calendar link:
https://calendar.app.google/ZMDHRKzLDNpZsv6x6.
- Four profile-memory blocks now distinguish CodeVetter focus, Karte’s personal-maintenance posture, direct Workers AI chat, and the separate operator-provisioned Free AI gateway.
- Fresh read-only D1 verification matched all 15 guarded updates and preserved observed row counts and untargeted fields. No conversation, account, lead, or owner-authored archive was deleted. Historical timeline entries and cached generated pages were not rewritten.
This is a scoped content correction and link cleanup. It does not qualify first-time creator onboarding, customer custom-domain setup, company adoption, or complete reconciliation of historical profile knowledge.
Current verification — 2026-09-10
Source 85df536be83ff53f11f5f1e02b89d32d825419d9 is pushed and deployed. CI and deployment passed; 197 tests and the full quality gate pass.
- Owner Google login, location edit/save/reload, public propagation after the cache window, and complete restoration verified.
- Real generated answers work after replacing the deprecated Workers AI default and removing overbroad shortcut routing and indefinite browser response caching.
- Mobile chat title/controls fit a 390px CSS viewport; saved answers reload correctly.
- Mobile and desktop sign-out work. Protected dashboard redirects to login afterward. Public chat generated a meaningful answer while logged out.
- Owner-confirmed cleanup removed only verification conversations. Read-only database counts returned to the original 20 conversations and 40 messages. Original profile fields restored; owner session ended and owned browser tabs closed.
- Git checkout is clean, only local main exists, and there are no stashes. Repository is public and its homepage is https://karte.cc.
Draft handoff follow-up — 2026-09-10
Source 4a209df070a590c9fae351eceb555f1890e940b4 is pushed. Full local quality checks and 202 tests passed, including five new first-time creation/handoff tests using actual migrated in-memory SQLite. The banner now describes an unpublished draft and refreshes the editor after creation. CI 34482754995 and deployment 34482775715 passed; production onboarding is not yet claimed verified.
Import recovery source 7c4fffccb7f26c6786c62c0a891afa2aa71ceaba is pushed. The full local quality gate and 205 tests passed. Page ID and remaining items survive reload; successful items are checkpointed. Owned saved items are read before retry to reconcile lost item responses. Failed items remain visible for manual recovery; unavailable storage stops new writes. CI 34483498519 and deployment 34483508806 passed; anonymous public agent smoke also passed. Checkout clean. Interrupted page creation is addressed in pushed source 11e0655daa182342f6f32b8d861e1a6f17ddda88: the pre-write owned-page baseline survives reload, allowing recovery of a newly saved matching page while protecting existing profiles. All 208 tests and full local quality passed; CI 34484075756 and deployment 34484093920 passed; anonymous public agent smoke passed. Checkout clean. Production signup and domain acceptance remain unqualified. There is no page/account deletion flow for cleaning up a disposable production creator yet.
The older custom-domain platform diagnosis needs correction: current Cloudflare documentation supports a regular Worker origin using a zone-scoped wildcard route. Inspect live routing before concluding a platform migration is required. CUSTOM_DOMAINS_LIVE remains false; no provider configuration was changed.
Remaining
- First-time creator profile creation and a customer custom-domain flow have not been qualified.
- Historical and cached profile material remains intentionally retained; dated timeline entries and owner-authored career history were not rewritten. Complete profile-knowledge reconciliation is not claimed.
- Company adoption remains unverified; maintenance/personal-use intent is unchanged.
Conversation cleanup is complete in #83. No existing conversation or owner-authored archive was deleted.
Earlier qualification record
Hosted link repair is deployed and accepted on ordinary https://karte.cc/sarthak at desktop and 390px: truncated secondary booking CTA is unavailable, three homepage article destinations say Visit website, and all three generated modes load substantive published text.
Release: source e7072fc; run https://github.com/Significant-Hobbies/karte/actions/runs/34129473645 passed; Worker version 8f4a28c3-db91-40d2-9749-58b0404fa1ab at 100%. Rollback 51cc9395-19ce-4992-9ee0-2317cca88840.
Fresh chat remains unqualified: a single normal click on the visually verified real Turnstile checkbox produced Verification failed / Troubleshoot and the app's Verification failed to load. Refresh and try again. No token, no chat POST, no inference, no question or lead stored. Targeted D1 checks for the reserved synthetic email were zero; no cleanup mutation needed. No accounts, contact messages or bookings were made.
Remaining: owner replaces incomplete booking and generic article destinations with intended URLs; protected browser chat must complete with a grounded answer; fresh profile creation and customer custom-domain qualification remain separate. Company adoption is unverified. Evidence: docs/knowledge/audits/2026-09-07-release/README.md. Keep this issue open.
Owner session cleanup qualification (2026-09-10)
The dashboard has no sign-out action, preventing normal owner session cleanup and a browser-level logged-out check. Add the existing Better Auth sign-out operation to shared desktop/mobile navigation. On success perform a full navigation to login; on failure keep the user informed and allow retry. No auth configuration or credential change.
Latest read-only routing audit could not open Chrome: browser automation reported the browser unavailable. No provider settings or secrets were changed.
P07 — Finish creator and protected visitor journeys
Status: Ready for owner-launched SWE work, subject to dependencies below; no worker dispatched.
Difficulty: 3/5 · Agent tier: L2 · Implementer: SWE-2.
Review: GPT-6 Astra medium.
Dependencies / write ownership: Independent source lane; coordinate if App Health/Clarity work later touches Karte. Cancelled Knowledge Base #48 must not be reopened as a dependency.
The owner requested completion of this retained scope on 2026-09-19. Earlier queue-excluded/portfolio-deferred notes below are historical scheduling decisions, not current exclusions. This PRD organizes the remaining work; it does not mark prior unchecked criteria done or grant release authority.
Why
Existing published pages work, but fresh creator, protected chat, generated modes and customer-domain evidence remain incomplete.
What
Finish the remaining acceptance below and the retained original issue criteria. Audit existing merged work first; no feature expansion or unrelated rewrite.
Design
Retain maintenance/personal-use scope and current profile/RAG boundaries. Audit existing storage/cache fixes before coding. Use fixture-backed local integration tests and a specific hosted handoff; mocks are never hosted proof.
Specs
Requirement 1
WHEN creator onboarding/import storage fails, THEN the visible draft survives and login navigation stops until a durable retry succeeds.
Requirement 2
WHEN a published profile is opened, THEN intended links and enabled generated modes resolve to correct content without leaking owner-only data.
Requirement 3
WHEN chat verification fails or expires, THEN the app fails safely with retry; valid live challenges must be exercised normally, never bypassed.
Requirement 4
WHEN an approved customer domain is attached, THEN ownership, TLS, routing and rollback are qualified separately from source tests.
Tasks — SWE-2 phase
Tasks — Codex review and web/device phase
Agent contract and completion boundary
Model routing is a risk-based recommendation. GPT-6 Astra review/browser capability reference: https://developers.openai.com/api/docs/guides/latest-model . No agent is launched by this PRD. Cancelled Knowledge Base #48 and Paths #32/#36 remain out of scope.
Retained original requirements and historical receipts
September 12 — creator draft and release-cache repairs deployed
Source
745254fff16d003c1ed8a4e1d594924dc8c2894dis pushed and deployed. CI 34647291900 and deployment 34647565894 passed. Worker version:fa092f5e-1c39-414d-a3d1-c7a9a6060c81. Full local quality: 217 tests passed.First-time authenticated profile creation and customer custom-domain acceptance remain open. This repair does not close the issue or change the maintenance posture.
Current queue disposition — 11 September 2026
Owner and guest core flows passed. First-time creation, customer custom domains and historical/generated-mode cleanup remain follow-ups.
This remains an open repository backlog issue. Its outstanding acceptance criteria are not marked complete. The owner-approved minimum-use review has moved it out of the immediate project queue; the original requirements below and existing README references are preserved. To resume, remove
queue: excludedand unarchive the project card.Published profile content cleanup — 2026-09-11
Source
2a1927bd3b98293ed53abeff9402f186b50b1d3fis pushed and clean. CI passed at the current head./sarthakproject cards now use the current catalog descriptions and canonical links.https://calendar.app.google/ZMDHRKzLDNpZsv6x6.This is a scoped content correction and link cleanup. It does not qualify first-time creator onboarding, customer custom-domain setup, company adoption, or complete reconciliation of historical profile knowledge.
Current verification — 2026-09-10
Source
85df536be83ff53f11f5f1e02b89d32d825419d9is pushed and deployed. CI and deployment passed; 197 tests and the full quality gate pass.Draft handoff follow-up — 2026-09-10
Source
4a209df070a590c9fae351eceb555f1890e940b4is pushed. Full local quality checks and 202 tests passed, including five new first-time creation/handoff tests using actual migrated in-memory SQLite. The banner now describes an unpublished draft and refreshes the editor after creation. CI 34482754995 and deployment 34482775715 passed; production onboarding is not yet claimed verified.Import recovery source
7c4fffccb7f26c6786c62c0a891afa2aa71ceabais pushed. The full local quality gate and 205 tests passed. Page ID and remaining items survive reload; successful items are checkpointed. Owned saved items are read before retry to reconcile lost item responses. Failed items remain visible for manual recovery; unavailable storage stops new writes. CI 34483498519 and deployment 34483508806 passed; anonymous public agent smoke also passed. Checkout clean. Interrupted page creation is addressed in pushed source11e0655daa182342f6f32b8d861e1a6f17ddda88: the pre-write owned-page baseline survives reload, allowing recovery of a newly saved matching page while protecting existing profiles. All 208 tests and full local quality passed; CI 34484075756 and deployment 34484093920 passed; anonymous public agent smoke passed. Checkout clean. Production signup and domain acceptance remain unqualified. There is no page/account deletion flow for cleaning up a disposable production creator yet.The older custom-domain platform diagnosis needs correction: current Cloudflare documentation supports a regular Worker origin using a zone-scoped wildcard route. Inspect live routing before concluding a platform migration is required. CUSTOM_DOMAINS_LIVE remains false; no provider configuration was changed.
Remaining
Conversation cleanup is complete in #83. No existing conversation or owner-authored archive was deleted.
Earlier qualification record
Hosted link repair is deployed and accepted on ordinary https://karte.cc/sarthak at desktop and 390px: truncated secondary booking CTA is unavailable, three homepage article destinations say Visit website, and all three generated modes load substantive published text.
Release: source e7072fc; run https://github.com/Significant-Hobbies/karte/actions/runs/34129473645 passed; Worker version 8f4a28c3-db91-40d2-9749-58b0404fa1ab at 100%. Rollback 51cc9395-19ce-4992-9ee0-2317cca88840.
Fresh chat remains unqualified: a single normal click on the visually verified real Turnstile checkbox produced Verification failed / Troubleshoot and the app's Verification failed to load. Refresh and try again. No token, no chat POST, no inference, no question or lead stored. Targeted D1 checks for the reserved synthetic email were zero; no cleanup mutation needed. No accounts, contact messages or bookings were made.
Remaining: owner replaces incomplete booking and generic article destinations with intended URLs; protected browser chat must complete with a grounded answer; fresh profile creation and customer custom-domain qualification remain separate. Company adoption is unverified. Evidence: docs/knowledge/audits/2026-09-07-release/README.md. Keep this issue open.
Owner session cleanup qualification (2026-09-10)
The dashboard has no sign-out action, preventing normal owner session cleanup and a browser-level logged-out check. Add the existing Better Auth sign-out operation to shared desktop/mobile navigation. On success perform a full navigation to login; on failure keep the user informed and allow retry. No auth configuration or credential change.
Latest read-only routing audit could not open Chrome: browser automation reported the browser unavailable. No provider settings or secrets were changed.