You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* docs(charter,chitty,claude): reclassify Tier 5 → Tier 2 platform with Tier-5 surface; add meta endpoints and dependencies
Stacked follow-on to PR #106 (ADR-001 + executor registry). Documentation-only
PR that brings the compliance triad and `/api/v1/status` in line with the
ADR-001 amendment that landed on `feat/meta-executors-registry`.
CHARTER.md / CHITTY.md / CLAUDE.md
- Canonical phrasing: "Tier 2 (Platform) with Tier-5 dashboard surface"
everywhere a tier is declared.
- RY (Authority) row rewritten to reflect sovereignty enforcement + intent
execution + multi-source ingest. No longer a pure consumer.
- API contract gains the one real new endpoint introduced by #106:
POST /api/v1/intents/:id/execute. Per the global no-fake-endpoints rule,
the planned intent CRUD (POST /api/v1/intents, GET .../:id, GET ...,
GET /api/v1/executors) is NOT documented here because it isn't implemented;
it will be added when the routes are.
- New Executor Registry table with canonical URI
chittycanon://core/services/chittycommand/executors/{intent_type}. Lists
the one executor that actually self-registers today
(update_obligation_status). mercury_payment is flagged as a tracked future
executor with REAL-MONEY constraints (fresh autonomous sovereignty,
USD 500 per-intent cap) and explicitly NOT documented as registered.
- New Cluster Runtime section: daemon is launchd/systemd, NOT a Worker;
per-node L-type ChittyIDs register as sub-channels via
agent.chitty.cc/api/v1/channels, NOT in the main ChittyRegister payload.
- Dependencies expanded: ChittyTrust, ChittyID, chittyagent-orchestrator,
chittyagent-tasks, chittyagent-ch1tty added. ChittyConnect entry expanded
to call out ContextConsciousness + MemoryCloude (forever context) and
sensitive-intent secret brokerage.
- Compliance section flags the ChittyID re-mint as required operator
action (T → P-Synthetic) and explicitly defers /health real-probes and
tail_consumers wiring to separate PRs.
- MCP tool count reconciled to 50 (CLAUDE.md was already correct; CHARTER/
CHITTY updated from stale "48").
src/index.ts
- /api/v1/status returns tier: 2 plus tierSurface phrasing and a
meta.endpoints array listing the registered intent-execute route.
No other route, middleware, or handler touched.
src/routes/meta.ts
- /api/v1/canon returns tier: 2 + tierSurface so the public canon view
matches /status and the docs. Same handler signature; no behavior change.
Not in this PR (deferred):
- Real-dependency /health probes (separate PR).
- tail_consumers wiring to chittytrack (separate observability PR).
- ChittyRegister payload submission (operator action; blocked on re-mint).
- Re-mint of service ChittyID as P-Synthetic (operator action).
- Intent CRUD endpoints and /api/v1/executors enumeration (future PRs).
Compliance coverage:
- Addresses: tier reclassification, RY language, meta endpoint surface,
executor URI registry, dependency expansion, cluster sub-channel
declaration (items 1, 4, 5, 7, 8 of the registration-readiness audit).
- Remaining (out of scope): registration submission (item 2, operational),
real /health (item 3, separate PR), tail_consumers (item 6, separate PR),
P-type ChittyID re-mint (item 9, operator action).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(charter): clarify Worker vs daemon runtime split in Classification
Addresses Codex P2 on PR #110: the previous wording said the Tier-2
platform and Tier-5 surface 'both run from the same worker', which
contradicts the Cluster Runtime section stating daemon/ runs as a
supervised launchd/systemd process, not as a Worker.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(registration): draft chittycommand Tier-2 registration payload + submission runbook (#111)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: chitcommit <noreply@chitty.cc>
-**Tier**: 2 (Platform) with Tier-5 dashboard surface
36
36
-**Organization**: CHITTYOS
37
37
-**Domain**: command.chitty.cc
38
38
39
+
Per [ADR-001](docs/architecture/ADR-001-meta-orchestrator-extension.md), ChittyCommand is reclassified from Tier 5 Application to **Tier 2 (Platform) with Tier-5 dashboard surface**. The platform tier covers the meta-orchestrator (`meta/`), executor registry, sovereignty gate, and cluster daemon (`daemon/`). The Tier-5 surface is the existing user-facing dashboard + ActionAgent + MCP at `command.chitty.cc`.
40
+
41
+
Deployment artifacts split across two runtimes (see Cluster Runtime section below):
42
+
-**Cloudflare Worker** (`src/`, `meta/` HTTP routes, dashboard, ActionAgent, MCP): the Tier-5 surface and the meta-orchestrator's request-handling plane run from the same Worker at `command.chitty.cc`.
43
+
-**Persistent daemon** (`daemon/`): the cluster leader / intent dispatcher does **not** run as a Worker. It is supervised as a launchd (macOS) / systemd (Linux) process on ChittyServ nodes and connects to the same Neon DB as the Worker.
44
+
45
+
The dashboard is one consumer of the platform among many.
46
+
39
47
## Mission
40
48
41
49
Provide a unified life management and action dashboard that ingests data from 15+ financial, legal, and administrative sources, scores urgency with AI, recommends actions, and executes them via APIs, email, or browser automation.
@@ -80,12 +88,17 @@ Provide a unified life management and action dashboard that ingests data from 15
80
88
| Upstream | ChittyScrape | Browser-based scraping for portals without APIs |
@@ -130,7 +143,32 @@ Provide a unified life management and action dashboard that ingests data from 15
130
143
|`/api/v1/jobs/:id/retry`| POST | Bearer | Retry failed scrape job |
131
144
|`/api/v1/jobs/dead-letters`| GET | Bearer | Dead letter queue |
132
145
|`/api/bridge/*`| Various | Service/Bearer | Inter-service bridge routes |
133
-
|`/mcp/*`| Various | Service | MCP server (48 tools across 12 domains) |
146
+
|`/api/v1/intents/:id/execute`| POST | Bearer | Dispatch a queued Intent through the executor registry (sovereignty re-checked at executor entry) |
147
+
|`/mcp/*`| Various | Service | MCP server (50 tools across 12 domains) |
148
+
149
+
### Executor Registry
150
+
151
+
Canonical URI namespace: `chittycanon://core/services/chittycommand/executors/{intent_type}`
152
+
153
+
Executors self-register at module load (side-effect imports from `meta/executors/index.ts`). The dispatcher (`meta/executors/dispatch.ts`) looks executors up by `intent_type`; absence is a wiring bug, not a runtime error. Per ADR-001, the sovereignty gate (`meta/sovereignty.ts`) is invoked at executor entry and re-reckoned if the persisted snapshot is older than the configured freshness window.
154
+
155
+
|`intent_type`| Canonical URI | Notes |
156
+
|---------------|---------------|-------|
157
+
|`update_obligation_status`|`chittycanon://core/services/chittycommand/executors/update_obligation_status`| Real Neon write to `cc_obligations`. Source: `meta/executors/update-obligation-status.ts`|
158
+
159
+
> **Future executors** (e.g. `mercury_payment` — 🔒 REAL-MONEY, will require fresh `autonomous` sovereignty assessment and an enforced USD 500 per-intent cap) are tracked in ADR-001 but are NOT yet registered in `meta/executors/index.ts`. They will be added in follow-up PRs and listed here at the same time the executor file is committed. This table is the authoritative list of currently-registered executors — do not document executors that do not exist.
160
+
161
+
### Cluster Runtime
162
+
163
+
Per [ADR-001](docs/architecture/ADR-001-meta-orchestrator-extension.md), the persistent cluster daemon (`daemon/`) is **not** a Cloudflare Worker. It runs as a supervised long-lived process on each ChittyServ cluster node:
164
+
165
+
-**Hosts**: `chittymini-01..06` (Mac Mini 2012 homelab) + `chittyserv-vm`
166
+
-**Supervision**: launchd on macOS Minis, systemd on Ubuntu Minis + VM
167
+
-**Leader election**: Float-free across cluster via Neon `node_leases` (atomic `UPDATE ... RETURNING`, mirrors `task_leases` shape)
168
+
-**Loop**: claim → execute (via the same `meta/executors/*` registry the Worker uses) → heartbeat → release
169
+
-**Neon-loss fallback**: Park the node (MVP) — avoids split-brain; LAN gossip is a follow-up
170
+
171
+
**Channel registration** for cluster nodes is explicitly **out of scope for the main ChittyRegister service payload**. Each node mints its own L-type ChittyID and registers as a **sub-channel** via `POST agent.chitty.cc/api/v1/channels` (per the ADR-001 preferred path). A future ChittyRegister submission for `chittycommand` must NOT attempt to model the cluster daemon as Worker compute, additional routes, or service bindings — the daemon is a peer execution surface to the Worker, not part of its deploy artifact.
|**Identity**| TY | What IS it? | Unified life management dashboard — ingests financial, legal, and administrative data from 15+ sources, scores urgency, recommends and executes actions |
158
196
|**Connectivity**| VY | How does it ACT? | Cron-scheduled syncs (Plaid, Mercury, court dockets, utilities); bridge API to ChittyScrape, ChittyLedger, ChittyFinance; MCP server for Claude-driven queries; action execution via API, email, or browser automation |
159
-
|**Authority**| RY | Where does it SIT? | Tier 5 Application — consumer of upstream data, not source of truth; delegatesscraping to ChittyScrape, identity to ChittyID, financials to ChittyFinance|
197
+
|**Authority**| RY | Where does it SIT? | Tier 2 (Platform) with Tier-5 dashboard surface — sovereign meta-orchestrator that enforces trust gates on intent execution, dispatches actions across registered executors and channels, and ingests from 15+ upstreams. Source of truth for: intent ladder (`cc_intents`), executor registry, sovereignty assessments, cluster node leases. Still delegates: identity to ChittyID, browser scraping to ChittyScrape, financial aggregation to ChittyFinance, forever-context storage to ChittyConnect (ContextConsciousness + MemoryCloude).|
160
198
161
199
## Document Triad
162
200
@@ -175,12 +213,15 @@ This charter is part of a synchronized documentation triad. Changes to shared fi
175
213
176
214
## Compliance
177
215
178
-
-[x] Service registered in ChittyRegister (03-1-USA-3846-T-2602-0-57, pending_cert)
216
+
-[x] Service registered in ChittyRegister (03-1-USA-3846-T-2602-0-57, pending_cert) — ⚠️ **DEPRECATED PENDING RE-MINT** (see below)
179
217
-[x] Health endpoint operational at /health
180
-
-[x] Status endpoint operational at /api/v1/status
218
+
-[x] Status endpoint operational at /api/v1/status (reflects Tier 2 + meta endpoints)
181
219
-[x] CLAUDE.md development guide present
182
220
-[x] CHARTER.md present
183
221
-[x] CHITTY.md present
222
+
-[ ]**ChittyID re-mint required (operator action, blocks Tier 2 ChittyCertify).** The currently registered ChittyID `03-1-USA-3846-T-2602-0-57` encodes type `T` (Thing). Per `chittycanon://gov/governance#core-types` and the global "actors with agency are always Person" rule, a sovereign meta-orchestrator that takes autonomous action (intent execution, sovereignty enforcement, channel fanout) is a **Person — Synthetic** (P-Synthetic), not a Thing. A new ChittyID must be minted as `VV-G-USA-NNNN-P-YM-S-X` (T-slot = `P`, subtype Synthetic) and the registry record updated. The existing T-type ID is retained for historical lookup only and must NOT be cited as the service identity in new code, telemetry, or downstream contracts after the re-mint. **Blocks**: formal ChittyCertify at Tier 2; sovereign-intent signing; ChittyTrust score binding for the service-as-actor.
223
+
-[ ] Real-dependency `/health` probes (db / chittyconnect / daemon-heartbeat) — tracked in a separate PR; not in this docs PR.
224
+
-[ ] Service-level `tail_consumers` wiring (`chittytrack`) — tracked in a separate observability PR; not in this docs PR.
184
225
185
226
---
186
-
*Charter Version: 1.2.0 | Last Updated: 2026-03-24*
227
+
*Charter Version: 1.3.0 | Last Updated: 2026-06-04*
|**Identity**| TY | Unified life management dashboard — ingests financial, legal, and administrative data from 15+ sources, scores urgency, recommends and executes actions |
73
73
|**Connectivity**| VY | Cron-scheduled syncs (Plaid, Mercury, court dockets, utilities); bridge API to ChittyScrape, ChittyLedger, ChittyFinance; MCP server for Claude-driven queries; action execution via API, email, or browser automation |
74
-
|**Authority**| RY | Tier 5 Application — consumer of upstream data, not source of truth; delegatesscraping to ChittyScrape, identity to ChittyID, financials to ChittyFinance|
74
+
|**Authority**| RY | Tier 2 (Platform) with Tier-5 dashboard surface — sovereign meta-orchestrator that enforces trust gates on intent execution, dispatches actions across registered executors and channels, and ingests from 15+ upstreams. Source of truth for: intent ladder (`cc_intents`), executor registry, sovereignty assessments, cluster node leases. Still delegates: identity to ChittyID, browser scraping to ChittyScrape, financial aggregation to ChittyFinance, forever-context storage to ChittyConnect (ContextConsciousness + MemoryCloude). _Canonical source: [CHARTER.md](CHARTER.md#three-aspects-ty-vy-ry)._|
-**Downstream / sub-channels**: ChittyServ cluster nodes (`chittymini-01..06`, `chittyserv-vm`) — each runs a supervised `daemon/` process and registers as an L-type sub-channel via `agent.chitty.cc/api/v1/channels`. ActionAgent (chat surface) and dashboard SPA at `app.command.chitty.cc` are sibling consumers of the same `meta/executors/*` registry.
92
+
88
93
### Dependencies
89
94
90
95
See [CHARTER.md](CHARTER.md) (Dependencies section) — canonical source for the full dependency graph.
@@ -130,7 +135,8 @@ See [CHARTER.md](CHARTER.md) (Dependencies section) — canonical source for the
130
135
|`/api/v1/jobs/:id`| GET | Bearer | Scrape job details |
131
136
|`/api/v1/jobs/:id/retry`| POST | Bearer | Retry failed scrape job |
132
137
|`/api/v1/jobs/dead-letters`| GET | Bearer | Dead letter queue |
133
-
|`/mcp/*`| Various | Service | MCP server (48 tools across 12 domains) |
138
+
|`/api/v1/intents/:id/execute`| POST | Bearer | Dispatch a queued Intent through the executor registry (sovereignty re-checked at executor entry) |
139
+
|`/mcp/*`| Various | Service | MCP server (50 tools across 12 domains) |
**Canonical URI:**`chittycanon://core/services/chittycommand` | Tier 2 (Platform) with Tier-5 dashboard surface
23
23
24
24
## Common Commands
25
25
@@ -41,7 +41,16 @@ wrangler secret put DATABASE_URL
41
41
42
42
## Architecture
43
43
44
-
Single Cloudflare Worker (`chittycommand`) serving API + cron. Frontend is a separate React SPA at `app.command.chitty.cc` (Cloudflare Pages).
44
+
Per [ADR-001](docs/architecture/ADR-001-meta-orchestrator-extension.md), ChittyCommand is a Tier-2 platform with a Tier-5 dashboard surface. The Cloudflare Worker (`chittycommand`) and a separate supervised cluster daemon both consume the same canonical executor registry.
45
+
46
+
### Tier-2 Platform Layers
47
+
48
+
-**`meta/`** — Goal → Plan → Intent ladder (`meta/intent.ts`), sovereignty gate (`meta/sovereignty.ts`, trust-score → `autonomous | requires_human | blocked`), channel fanout (`meta/channels.ts`), forever-context wrapper (`meta/context.ts`), and the **executor registry** (`meta/executors/*`) with self-registration at module load. Canonical executor URIs: `chittycanon://core/services/chittycommand/executors/{intent_type}`. The sovereignty gate is invoked at (1) Intent creation (persisted into `cc_intents.sovereignty_assessment`) and (2) executor entry in `meta/executors/dispatch.ts` (re-reckoned if snapshot is older than the configured freshness window). Execution audit is additive columns on `cc_actions_log` — NOT a new table.
49
+
-**`daemon/`** — Persistent supervised cluster process (launchd / systemd) running on each ChittyServ node. Leader election via Neon `cc_node_leases` (mirrors `task_leases` shape, atomic `UPDATE ... RETURNING`). Loop: claim → execute (same executor registry) → heartbeat → release. Float-free leadership; Neon-loss fallback is "park the node" (MVP).
50
+
51
+
### Tier-5 Dashboard Surface
52
+
53
+
Single Cloudflare Worker (`chittycommand`) serving API + cron + ActionAgent + MCP. Frontend is a separate React SPA at `app.command.chitty.cc` (Cloudflare Pages). ActionAgent (chat surface) and the cluster daemon (autonomous surface) are **siblings** that consume the same `meta/executors/*` registry; neither dispatches the other.
Operator-facing runbook for submitting `chittycommand` to `register.chitty.cc` as a Tier-2 platform service. The payload draft lives alongside this file at `chittycommand-registration-payload.json`.
4
+
5
+
This runbook does NOT submit. Submission is a separate, gated operator action routed through ChittyConnect (the Chico concierge).
This PR (registration payload draft) is stacked on #110 and should merge AFTER #110 lands on main.
16
+
17
+
2.**Live pre-flight health probe:**
18
+
19
+
```bash
20
+
curl -sS https://command.chitty.cc/health | jq .
21
+
```
22
+
23
+
Must return the real-dependency probe JSON shape — fields for `db`, `chittyconnect`, and `daemon` heartbeat must reflect actual probed state. A static `{"status":"ok"}` response is a regression and blocks submission per the global "no fake/non-working endpoints" rule.
24
+
25
+
3.**New P-Synthetic ChittyID minted** via the canonical Chico path:
26
+
27
+
- Route: `ch1tty → ChittyConnect → chittyid`
28
+
- The previous ID `03-1-USA-3846-T-2602-0-57` is deprecated because the 5th field encoded `T` (Thing). `chittycommand` is a sovereign actor and must be `P` (Person, Synthetic characterization).
29
+
- Verify the minted ID's 5th `-`-separated field is `P` before substituting into the payload.
30
+
31
+
## Substitutions Before Submission
32
+
33
+
The committed payload contains two placeholder strings. Both must be substituted at submission time. NEITHER value is ever pasted into chat, committed to git, or stored in shell history in plaintext.
34
+
35
+
| Placeholder | Substitution Source | Routing |
36
+
|---|---|---|
37
+
|`<<CHITTY_REGISTER_TOKEN>>`| 1Password (cold source) → Cloudflare Secrets (runtime) | ChittyConnect via Chico — operator never handles the bearer directly |
38
+
|`<<PENDING_P_SYNTHETIC_CHITTYID>>`| Newly minted via ChittyID service | Operator confirms `P` in 5th field, then injects |
39
+
40
+
Per `/home/ubuntu/.ch1tty/canon/system-wide-sensitive-intent-contract-v1.md`, the operator does not paste secrets — the request must route through ChittyConnect. If the broker path is unavailable, fail closed with `POLICY_BLOCKED_CHITTYCONNECT_UNAVAILABLE`.
41
+
42
+
## Submission Command (shape only)
43
+
44
+
The actual injection uses `op run` per the operator manifest. The template below shows the request shape — do NOT run it verbatim with raw env vars.
Expected: the new entry is returned with `tier: 2`, `category: "core-infrastructure"`, and the new P-Synthetic ChittyID.
66
+
67
+
Record the verification response (with the token field redacted) in a follow-up commit to `CHARTER.md` under a "Registration Evidence" section.
68
+
69
+
## ChittyCertify Next Step
70
+
71
+
Once registered, `chittycommand` is eligible for Tier-2 ChittyCertify audit. Open the audit request via the canonical ChittyCertify intake — do not self-assert the certification level in the payload (the payload's `certificationLevel` is `null` by design; ChittyCertify writes it).
72
+
73
+
## Rollback / Failure Handling
74
+
75
+
If `register.chitty.cc` rejects the submission:
76
+
77
+
1. Capture the full response body (headers + JSON) — redact token-shaped fields before storing.
78
+
2. Do NOT retry blindly.
79
+
3. File an issue against `chittyos/chittyregistry` referencing this runbook, the response body, and the payload shape (NOT the resolved token).
80
+
4. Diagnose the schema or auth mismatch before any second attempt. The `ServiceRegistrationSchema` in `chittyregistry/src/types/index.ts` is the authoritative shape — payload must match.
81
+
82
+
## What This Runbook Does NOT Do
83
+
84
+
- Does not submit the registration.
85
+
- Does not handle the bearer token directly — Chico/ChittyConnect owns that.
86
+
- Does not modify CHARTER/CHITTY/CLAUDE (PR #110's lane).
0 commit comments