diff --git a/AGENTS.md b/AGENTS.md index a968054..4f76d8e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -55,9 +55,13 @@ plans/ design specs (multi-provider-payment-model.md, tests/crosscheck/ cross-language LIC1 verifier → guides/crypto-wire-format.md ``` -Note: `licensing-service-startos/` and each SDK are **separate git repos**; the -root `Licensing` repo is a workspace backup that tracks docs (AGENTS.md, plans, -guides) but not the code. Commit code changes in their own repo. +Note: the daemon (`licensing-service-startos`, repo `keysat`), each SDK, and +`plans/` are **separate git repos** — commit code/plan changes in their own repo. +The root `Licensing` repo (`keysat-root`) tracks only `AGENTS.md` + `docs/guides/` ++ `.claude/rules/`. **Remotes differ per repo**: the daemon's `main` tracks +**GitHub** (`origin`, the public upstream) with a `gitea` backup — plain `git push` +goes to GitHub, so also `git push gitea main`; root + plans are **Gitea-only**. +Run `git remote -v` (full) and check what the branch tracks before pushing. ## Conventions (whole-repo) @@ -93,18 +97,23 @@ Operator-specific memories at `~/.claude/projects/-Users-macpro-Projects-licensi ## Current state (2026-06-12) -- **Live**: operator's server `immense-voyage.local` runs daemon `0.2.0:52` - (installed from `:45`; migrations 0020–0022 applied). Registry - `registry.keysat.xyz` still publishes `:45` — `:52` built/installed but **not - published**. Four SDKs published; `keysat.xyz` + `docs.keysat.xyz` deployed. +- **Live**: server `immense-voyage.local` runs daemon `0.2.0:52` (from `:45`; + migrations 0020–0022 applied). Registry `registry.keysat.xyz` still publishes + `:45`. Four SDKs published; `keysat.xyz` + `docs.keysat.xyz` deployed. - **`:52` = multi-provider/merchant-profile model**: data model + backend - resolution shipped and audited sound. **Deferred (parked):** four UIs (buy-page - rail picker, product-edit profile picker, per-profile SMTP form, rail-preference - editor) and the `unlimited_merchant_profiles` master-policy entitlement. See - `docs/guides/payments.md`. -- **Open bug fix not yet shipped**: a purchase-path SQL bug (ambiguous column, - broke every paid purchase on `:52`) is **fixed in the working tree but - uncommitted**, so prod `:52` is still broken until a `:53` rebuild+reinstall. No - live buyers yet, so not urgent. Working tree also has the test compile-fixes, a - new query-audit test, the manifest license fix, and an unused-import removal — - all uncommitted. See `docs/guides/payments.md` and `docs/guides/testing.md`. + resolution shipped and audited sound; the resolution/CRUD query surface now has + test coverage. See `docs/guides/payments.md`. +- **Prod runs a known-broken `:52`**: a purchase-path ambiguous-column bug (broke + *every* paid purchase) is **fixed, committed, and pushed** (daemon `31f4670`, on + GitHub + gitea), but **no `:53` build/install yet**, so the live server is still + broken. No live buyers, so not urgent — but this is the top next step. +- **Next, in priority order**: (1) bump `:53` + `make x86` + `make install` to ship + the fix; (2) resolve the 3 red tests — delete the dead `payment_provider_preference_round_trip`, + decide the mock-injection seam for the two `paid_purchase_*` (see `docs/guides/testing.md`); + (3) build the 4 deferred UIs + add `unlimited_merchant_profiles` to master + Pro/Patron policies; (4) re-register the master Zaprite webhook; (5) optional: + run formatters as a standalone commit. +- **Tests/build**: `cargo check` clean (1 intentional deprecation warning); api + 43 pass / 3 known-fail (test-debt), other suites green. No CI; fmt/prettier not + enforced or clean. Latent: confirm the sqlx pool sets `PRAGMA foreign_keys = ON` + per-connection (else FKs aren't runtime-enforced) — flagged by review, unchecked.