| index b5e01c53e..ffde16ece 100644 |
| --- a/implementation/carloku-paid-launch/AGENT_HANDOFF.md |
| +++ b/implementation/carloku-paid-launch/AGENT_HANDOFF.md |
| @@ -1,6 +1,6 @@ |
| # Agent pickup instructions — Carloku paid launch |
| |
| -CURRENT GATE: local build, vet and `make test` GREEN after fixing the intermittent durability snapshot failure and sustained-drain fallback. Amadan CI passed on the preceding commit; the final reviewed change needs its own CI run. This remains a checkpoint of unfinished work. |
| +CURRENT GATE: local build, vet and `make test` GREEN after fixing the intermittent durability snapshot failure and sustained-drain fallback. Amadan CI passed on final durability commit `c0d60af8`. This remains a checkpoint of unfinished work. |
| |
| This file is context and instructions for the next coding agent. The branch is a work-in-progress checkpoint, not a release candidate. Do not merge, deploy, enable billing, or infer that the overnight launch goal was achieved. |
| |
| @@ -8,7 +8,7 @@ This file is context and instructions for the next coding agent. The branch is a |
| |
| Paul asked to get carloku.com paid pricing live by morning and asked whether Stripe Tax can handle tax. Yes for calculation/collection; actual registrations and the approved product tax code still need confirmation. He then explicitly requested this branch handoff so another agent can pick up the work. |
| |
| -Billing remains OFF. No live Stripe requests, charges, catalog mutations, production infrastructure changes, or deployments were made in this session. The platform changes are being checkpointed on `feat/carloku-paid-launch-20260916` at `https://amadan.net/carlos/platform`. Nothing is being merged to main. |
| +Billing remains OFF. Read-only live Stripe requests verified the account on 2026-09-21; no charges, catalog mutations, production infrastructure changes, or deployments were made. The platform changes are being checkpointed on `feat/carloku-paid-launch-20260916` at `https://amadan.net/carlos/platform`. Nothing is being merged to main. |
| |
| Read `AGENTS.md` and `docs/superpowers/specs/2026-09-07-carloku-pricing-plans-design.md` before proceeding. `requirements-audit.json` inventories all 18 spec steps and deliberately marks the overall implementation incomplete. `session.md` is the chronological investigation/test log; prefer this handoff for current state where older log entries disagree. |
| |
| @@ -40,7 +40,7 @@ Read `AGENTS.md` and `docs/superpowers/specs/2026-09-07-carloku-pricing-plans-de |
| - Quantity/checkout/membership audit tests passed `-race` (49.015s), before the final invoice lock changes. Log: `quantity-complete-root-race.txt`. |
| - New host ownership, locked-ledger timeout, shutdown/publication and actual fake-HTTP SDK List/Copy/Delete-to-ledger tests passed `-race` (1.551s). Log: `host-durability-sdk-root-race.txt`. |
| - New activator meter selection plus existing staging-restore tests passed `-race` (1.032s). Log: `activator-metering-root-race.txt`. |
| -- The prior intermittent failure was real: a snapshot could read SQLite before a background failure drain, then read the latch after that drain cleared it. The fix retries when a committed drain crosses the read and checks the final latch state under the writer mutex, which spans commit and subtraction. A forced-interleaving regression, an arrival-during-read regression, a sustained-drain regression, and the original late-failure test passed repeated `-race` runs. The complete local gate (`go build ./...`, `go vet ./...`, `make test` with JS parity) passed on the final code on 2026-09-18. Amadan CI passed on the previous handoff commit `099586ea`, first fix commit `eea00ee`, and first reviewed amendment `665bcb7`. A single green run did not settle this intermittent bug; CI on the final code is pending. |
| +- The prior intermittent failure was real: a snapshot could read SQLite before a background failure drain, then read the latch after that drain cleared it. The fix retries when a committed drain crosses the read and checks the final latch state under the writer mutex, which spans commit and subtraction. A forced-interleaving regression, an arrival-during-read regression, a sustained-drain regression, and the original late-failure test passed repeated `-race` runs. The complete local gate (`go build ./...`, `go vet ./...`, `make test` with JS parity) passed on the final code on 2026-09-18. Amadan CI passed on the previous handoff commit `099586ea`, first fix commit `eea00ee`, first reviewed amendment `665bcb7`, and final durability commit `c0d60af8`. |
| - Opus reviews found and verified three follow-up corrections: arriving failures do not cause retries; after eight crossed drains a ninth snapshot holds a dedicated drain lock so publication gets a stable view; the drainer waits without holding the ordinary recording lock. The ninth-read test proves `Start`/`Finish` still progress and a new failure is counted. Final Opus review found no deadlock or data loss in this diff. Low residual risk: `Close(ctx)` and `Seal` can wait on a fallback read without a context bound, and a long fallback delays drain persistence; this does not block ordinary recording. A reviewer also noted a pre-existing unsynchronized read of `l.state.epoch` in the snapshot; it has not been addressed here. |
| - CURRENT tree passed all five cross-builds (Darwin arm64/amd64, Linux arm64, Windows amd64/arm64). Log: `handoff-cross.txt`. |
| - Final whole-branch Fable review and production/authority Opus review remain outstanding. All three Claude agents stopped at the shared usage limit, which reports reset at05:50 Europe/Dublin on2026-09-17 (04:50UTC). No agents remain running. That reset time has now passed; availability has not been rechecked for this handoff. Relevant task briefs/reports are in scratch, especially `durability-host-integration-brief.txt`, `opus-durability-integration-design.txt`, `quantity-history-hardening-brief.txt` and the invoice reports. The older design's arbitrary five-minute late-callback slack is NOT accepted proof. |
| @@ -57,13 +57,21 @@ make test |
| |
| `/tmp/k` is a task-owned real directory, mode0700. Do not replace it with a symlink. /tmp had approximately2.9GB free at the last check; cache is on the main disk. Never edit source while a test of that source is running; immutable checkpoint tests may run independently. |
| |
| +## Stripe live account state (read-only, 2026-09-21) |
| + |
| +- 1Password item `Carloku/Stripe Production Keys/Live Key` authenticated successfully against expected merchant `acct_1UD7LXI4Nrr6AEsO`: Ireland, EUR, charges and payouts enabled. |
| +- The key is a full `sk_live` provisioning key. Production console configuration deliberately requires an `rk_live` restricted key, which does not exist in the inspected item. Never put the full key into console runtime configuration. |
| +- The live account has zero active products, recurring prices, portal configurations and webhook endpoints. |
| +- Stripe Tax reports active with an Irish head-office address, but there are zero active tax registrations. The account default is generic tax code `txcd_10000000`; that is not approval to use it for Carloku. |
| +- `stripe-live-readiness.json` records the exact required 12-price EUR catalog and the remaining mutation gates. No live Stripe object was created or changed. |
| +- Raw read-only API responses were kept only in task-owned scratch with mode 0600. The 1Password session token must be removed when credential work finishes. |
| + |
| ## Pending user/external inputs — do not repeatedly ask |
| |
| -- Stripe authentication for merchant `acct_1UD7LXI4Nrr6AEsO`. The configured Stripe MCP requires authentication; no callable authenticated account or keys are available. Never request keys in chat. |
| - Actual VAT/OSS registration confirmation and accountant-approved product tax code. Stripe Tax is not itself evidence that registration is complete. |
| -- Pricing copy review: http://docs-t1.tail5fd3ba.ts.net:40927 |
| -- Billing copy review: http://docs-t1.tail5fd3ba.ts.net:43963 |
| -- Postal/location copy review: http://docs-t1.tail5fd3ba.ts.net:37419 |
| +- Pricing copy review: http://docs-t1.tail5fd3ba.ts.net:37461 |
| +- Billing copy review: http://docs-t1.tail5fd3ba.ts.net:34185 |
| +- Postal/location copy review: http://docs-t1.tail5fd3ba.ts.net:46235 |
| - Review data lives in `writing/{pricing-launch,billing-launch,billing-location}` in scratch. All three servers last responded HTTP200; no result.json was present. No pricing page or billing UI copy has been applied. Apply submitted source strings verbatim; use the writing/copy-review skills for new user-facing copy. |
| - Object-store transfer contract question is pending: all bytes served directly to customers/apps (including AWS), excluding Carloku's traffic, or only AWS-chargeable external transfer? AWS IP-feed complement is not proof of chargeable traffic; it omits BYOIP/some services. |
| - Optional annual-only launch/waived-overage question was asked and unanswered. No waiver or reduced launch scope is authorized by silence. |