> For the complete documentation index, see [llms.txt](https://docs.layeronecloud.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.layeronecloud.com/platform/open-items.md).

# Open items and deliberate non-goals

Carried forward from the standing code review.

## 14.1 Open items <a href="#id-141-open-items" id="id-141-open-items"></a>

Carried forward from the standing code review. Line numbers from the original report are omitted because they have shifted; each item is described so it can be found.

| Area                | Item                                                                                                                                                                                                                                                                                         |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Billing             | `account_credit_balance` is a full ledger scan and is called in tight loops. The bulk helpers in `insights.py` avoid it per row, but the per-account predicate is still O(ledger).                                                                                                           |
| Billing maintenance | Managed-service accrual can restart from `enabled_at` at 26+ VMs per account.                                                                                                                                                                                                                |
| Tickets             | Attachment filenames arrive percent-encoded.                                                                                                                                                                                                                                                 |
| Accounts            | `request_ip_address` can return a non-IP string, which is written straight into a `GenericIPAddressField`.                                                                                                                                                                                   |
| Core                | `set_secret` has no way to **clear** a stored secret.                                                                                                                                                                                                                                        |
| Billing views       | `globals().update(dir(_common))` is a star-import shim that defeats static analysis. Open **by design**; replacing it is a mechanical refactor nobody has funded.                                                                                                                            |
| Console             | `billing:admin-dashboard` and `core:admin-dashboard` still overlap on recent orders and recent events (they no longer both publish revenue figures). The two should probably merge.                                                                                                          |
| Console             | The client-side invoice list and the client record's Invoices panel are still `status=PAID` only. Defensible for the customer-facing one (an unpaid order shows in its own panel); the admin's view of one client's invoices should probably gain the `?status=` filter the global list has. |
| Console             | `monitoring:admin-list` renders a per-server incident roll-up, not monitors, deliberately. `monitoring:admin-detail` is reachable from the device and incident pages rather than from the list that names it.                                                                                |
| Data model          | `infrastructure.Device` and `billing.ProxmoxNode` are two rows for the same hypervisor.                                                                                                                                                                                                      |
| Monitoring          | Multi-region confirmation before publishing. Outages record `confirmed_regions`, but publication fires on the first threshold crossing regardless of how many regions saw it.                                                                                                                |
| Monitoring          | Scheduled maintenance windows. Pausing a monitor already reads as Maintenance publicly and `counts_against_sla` exists on the model, but nothing sets it and there is no scheduling UI.                                                                                                      |
| Monitoring          | An SLA credit report built on the stored intervals.                                                                                                                                                                                                                                          |
| Reverse DNS         | No default PTR is generated at allocation time; IPv6 works by the same code path but has not been exercised against a real `ip6.arpa` delegation.                                                                                                                                            |
| Web hosting         | Immutable archive retention, clean-node restore and two-stage node deletion do not exist, so a termination review containing live shared hosting cannot be approved (`webhosting_deletion_unavailable`).                                                                                     |
| Web hosting         | The node has not been run on a real CloudLinux node for every family; DNS publication and host-level production qualification remain outstanding per the sub-project's readiness audit.                                                                                                      |

## 14.2 Deliberate non-goals <a href="#id-142-deliberate-non-goals" id="id-142-deliberate-non-goals"></a>

Things that look missing and are **decisions**, so they should not be "fixed" without a new decision:

* **No plan downgrades.** Storage cannot shrink, so a downgrade is not the inverse of an upgrade; it needs a rebuild-or-migrate design. The pricing FAQ points downgrades at support.
* **No invoice due-date dunning.** The receivable is a negative ledger balance.
* **No proration.** Every plan converts to an hourly rate; repointing the plan is the entire money change.
* **No Stripe Billing subscriptions**, and `customer.subscription.*` events are logged and ignored.
* **No PayPal Reference Transactions, vaulting, saved PayPal methods, billing-agreement charges or PayPal auto-recharge.** PayPal is account credit only.
* **No automatic chargeback handling** for partner commission; a super admin records the reversal.
* **No passwordless sign-in.** Passkeys are a second factor.
* **No email open tracking** (Apple Mail Privacy Protection pre-fetches images, so an open count measures mail clients rather than readers) and no generic link rewriting.
* **No generic coupon framework.** Each promotion knows about one thing.
* **No public newsletter signup form**; contacts are added by an admin.
* **No per-recipient-timezone quiet hours**; quiet hours use the server timezone.
* **No customer VNet FORWARD rules, platform NAT/egress, IPv6, SDN DHCP/IPAM or adding/removing a public IP after deploy.**
* **No QEMU pause as a customer action**, and suspend/unsuspend are not client power actions.
* **No customer backup creation, restore or retention deletion** in the hosting portal.
* **No customer DNSSEC toggle** (operator-observed status only), and no NS/SOA, wildcard, delegated-name or raw provider operations.
* **No recording of `/console/`**, no heatmaps, no rage-click, no consent banner, no third-party replay SaaS, no shareable replay URLs.
* **No assistant actions** (deploy, refund, destroy), no account internals in the model context, no fine-tuning.
* **No AI sending authority**, no drip/recurring campaign builder, no A/B testing, no AI discount issuance.
* **No cookie-consent gating for analytics**; the tag is all-or-nothing per install.
* **No mTLS or certificate pinning for tenant hosting operations** (pinning is required only for node administrator security operations).

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.layeronecloud.com/platform/open-items.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
