Skip to content

Commit 747a995

Browse files
chitcommitclaudechitcommit
authored
docs: reclassify Tier 5 -> Tier 2 (Platform) with Tier-5 dashboard surface (#110)
* 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>
1 parent 45d4dff commit 747a995

7 files changed

Lines changed: 238 additions & 14 deletions

File tree

CHARTER.md

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,18 @@ This section is a persistent discovery hint for humans and agents. It is not an
3232

3333
## Classification
3434
- **Canonical URI**: `chittycanon://core/services/chittycommand`
35-
- **Tier**: 5 (Application)
35+
- **Tier**: 2 (Platform) with Tier-5 dashboard surface
3636
- **Organization**: CHITTYOS
3737
- **Domain**: command.chitty.cc
3838

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+
3947
## Mission
4048

4149
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
8088
| Upstream | ChittyScrape | Browser-based scraping for portals without APIs |
8189
| Upstream | ChittyLedger | Evidence and document ledger sync |
8290
| Upstream | ChittyEvidence | Evidence facts, documents, entities for case timelines |
83-
| Upstream | ChittyConnect | Inter-service connectivity and discovery |
91+
| Upstream | ChittyConnect | Inter-service connectivity and discovery; **forever-context** read/write via ContextConsciousness + MemoryCloude; **sensitive-intent secret brokerage** path for all credential access (no inline secrets) |
8492
| Upstream | ChittyRouter | Unified ingestion gateway (scrape, email routing) |
8593
| Upstream | ChittySchema | Canonical schema validation and drift detection |
8694
| Upstream | ChittyCert | Certificate verification |
8795
| Upstream | ChittyRegister | Service registration, beacon, compliance |
8896
| Upstream | ChittyChat | Project/task data API |
97+
| Upstream | ChittyTrust | Sovereignty gate — trust score / autonomy assessment for actor + intent (`meta/sovereignty.ts`) |
98+
| Upstream | ChittyID | Identity minting — service ChittyID (re-mint pending: P-Synthetic) and per-node L-type IDs for cluster nodes |
99+
| Upstream | chittyagent-orchestrator | Intent routing + cross-channel fanout via `POST agent.chitty.cc/agent/message` |
100+
| Upstream | chittyagent-tasks | Durable distributed task queue pattern reused for intent dispatch + `node_leases` (mirrors `task_leases`) |
101+
| Upstream | chittyagent-ch1tty | MCP portal / OAuth gateway — `command` listed as upstream in `AGENT_MCP_UPSTREAMS` |
89102
| Platform | Cloudflare Workers | Compute runtime |
90103
| Platform | Cloudflare R2 | Document storage |
91104
| Platform | Cloudflare KV | Sync state, auth tokens, service tokens |
@@ -130,7 +143,32 @@ Provide a unified life management and action dashboard that ingests data from 15
130143
| `/api/v1/jobs/:id/retry` | POST | Bearer | Retry failed scrape job |
131144
| `/api/v1/jobs/dead-letters` | GET | Bearer | Dead letter queue |
132145
| `/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.
134172

135173
### Cron Schedule
136174
| Schedule | Purpose |
@@ -156,7 +194,7 @@ Source: `chittycanon://gov/governance#three-aspects`
156194
|--------|--------|----------|--------------------|
157195
| **Identity** | TY | What IS it? | Unified life management dashboard — ingests financial, legal, and administrative data from 15+ sources, scores urgency, recommends and executes actions |
158196
| **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; delegates scraping 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). |
160198

161199
## Document Triad
162200

@@ -175,12 +213,15 @@ This charter is part of a synchronized documentation triad. Changes to shared fi
175213

176214
## Compliance
177215

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)
179217
- [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)
181219
- [x] CLAUDE.md development guide present
182220
- [x] CHARTER.md present
183221
- [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.
184225

185226
---
186-
*Charter Version: 1.2.0 | Last Updated: 2026-03-24*
227+
*Charter Version: 1.3.0 | Last Updated: 2026-06-04*

CHITTY.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ discovery_refs:
1717

1818
# ChittyCommand
1919

20-
> `chittycanon://core/services/chittycommand` | Tier 5 (Application) | command.chitty.cc
20+
> `chittycanon://core/services/chittycommand` | Tier 2 (Platform) with Tier-5 dashboard surface | command.chitty.cc
2121
2222
<!-- chitty:discovery-links:start -->
2323
## Persistent Context
@@ -71,7 +71,7 @@ Source: `chittycanon://gov/governance#three-aspects`
7171
|--------|--------|--------|
7272
| **Identity** | TY | Unified life management dashboard — ingests financial, legal, and administrative data from 15+ sources, scores urgency, recommends and executes actions |
7373
| **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; delegates scraping 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)._ |
7575

7676
## ChittyOS Ecosystem
7777

@@ -85,6 +85,11 @@ Source: `chittycanon://gov/governance#three-aspects`
8585
- **DNA Hash**: --
8686
- **Lineage**: root (life management)
8787

88+
### Ecosystem Position
89+
90+
- **Upstream**: ChittyAuth, ChittyTrust, ChittyID, ChittyConnect (ContextConsciousness + MemoryCloude + sensitive-intent secret brokerage), chittyagent-orchestrator (routing + channel fanout), chittyagent-tasks (queue + lease pattern), chittyagent-ch1tty (MCP portal/OAuth), ChittyFinance, ChittyBooks, ChittyAssets, ChittyCharge, ChittyScrape, ChittyLedger, ChittyEvidence, ChittyRouter, ChittySchema, ChittyCert, ChittyRegister, ChittyChat.
91+
- **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+
8893
### Dependencies
8994

9095
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
130135
| `/api/v1/jobs/:id` | GET | Bearer | Scrape job details |
131136
| `/api/v1/jobs/:id/retry` | POST | Bearer | Retry failed scrape job |
132137
| `/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) |
134140

135141
## Document Triad
136142

CLAUDE.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ ChittyCommand is a unified life management and action dashboard for the ChittyOS
1919
**Repo:** `CHITTYOS/chittycommand`
2020
**Deploy:** Cloudflare Workers at `command.chitty.cc` (alias: `disputes.chitty.cc`)
2121
**Stack:** Hono TypeScript, React + Tailwind, Neon PostgreSQL (via Hyperdrive), Cloudflare R2/KV
22-
**Canonical URI:** `chittycanon://core/services/chittycommand` | Tier 5
22+
**Canonical URI:** `chittycanon://core/services/chittycommand` | Tier 2 (Platform) with Tier-5 dashboard surface
2323

2424
## Common Commands
2525

@@ -41,7 +41,16 @@ wrangler secret put DATABASE_URL
4141

4242
## Architecture
4343

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.
4554

4655
### Data Sources
4756

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# ChittyCommand Registration Submission Runbook
2+
3+
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).
6+
7+
## Pre-requisites
8+
9+
1. **Stacked PRs merged to `main`, in order:**
10+
- PR #106
11+
- PR #107
12+
- PR #109
13+
- PR #110 (Tier-2 reclassification — CHARTER/CHITTY/CLAUDE updates)
14+
15+
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.
45+
46+
```bash
47+
jq '.registrationToken="$CHITTY_REGISTER_TOKEN" | .service.chittyId="$NEW_CHITTYID"' \
48+
docs/registration/chittycommand-registration-payload.json | \
49+
curl -sS -X POST https://register.chitty.cc/api/v1/register \
50+
-H "Authorization: Bearer $CHITTY_REGISTER_TOKEN" \
51+
-H "content-type: application/json" \
52+
--data @-
53+
```
54+
55+
Production invocation wraps the above under `op run --env-file=... --` with the token resolved by ChittyConnect at request time.
56+
57+
## Verification
58+
59+
After a 2xx response from `register.chitty.cc`:
60+
61+
```bash
62+
curl -sS 'https://registry.chitty.cc/api/v1/search?q=chittycommand' | jq .
63+
```
64+
65+
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).
87+
- Does not deploy any worker.
88+
- Does not enable auto-merge on this PR.

0 commit comments

Comments
 (0)