feat: Phase 1 FDA host-operator Role and railiance01 pilot (WP-0009 T02–T07)
Lock DEC-FDA-001 working defaults; add roles/host-operator package with OS/security and load protocols; scaffold eng-coulomb-railiance01-ho-001 with bound agent, vault, ramp checklists, and Kai quote/ledger.
This commit is contained in:
parent
ca7e4ead77
commit
2d347d062f
31 changed files with 1171 additions and 58 deletions
|
|
@ -347,6 +347,9 @@ Schema: [integrations/schedule-schema.md](integrations/schedule-schema.md).
|
|||
- [ADR-005: Scheduled Agent Execution](adr/ADR-005-scheduled-agent-execution.md)
|
||||
- [ADR-006: Customer Engagement Convention](adr/ADR-006-customer-engagement-convention.md)
|
||||
- [Forward-Deployed Engagement Architecture](forward-deployed-engagement-architecture.md) — client-requestable Roles, ramp-up/down, client vaults
|
||||
- [DEC-FDA-001 working defaults](decisions/DEC-FDA-001-working-defaults.md)
|
||||
- [roles/host-operator](../roles/host-operator/) — first Role package (pilot)
|
||||
- [engagements/pilots/eng-coulomb-railiance01-ho-001](../engagements/pilots/eng-coulomb-railiance01-ho-001/) — Phase 1 pilot tree
|
||||
- [wiki/ForwardDeployedAgencyBusinessModel.md](../wiki/ForwardDeployedAgencyBusinessModel.md) — Kai trial currency, seats/duties, confidentiality
|
||||
- [wiki/EcosystemIntegration.md](../wiki/EcosystemIntegration.md) — two-layer measurement model
|
||||
- [WP-0002: Agency Framework](../workplans/kaizen-agentic-WP-0002-agency-framework.md)
|
||||
|
|
|
|||
77
docs/decisions/DEC-FDA-001-working-defaults.md
Normal file
77
docs/decisions/DEC-FDA-001-working-defaults.md
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
# DEC-FDA-001 — Forward-deployed agency working defaults
|
||||
|
||||
**Status:** accepted (working default; sponsor may override)
|
||||
**Date:** 2026-07-16
|
||||
**Workplan:** KAIZEN-WP-0009-T02
|
||||
**Deciders:** kaizen-agentic (implementation default for Phase 1 pilot)
|
||||
|
||||
## Context
|
||||
|
||||
Architecture open questions blocked Phase 1 scaffolding. We lock **working
|
||||
defaults** so host-operator @ railiance01 can proceed without waiting on a
|
||||
separate product decision cycle. Overrides are welcome; change this DEC and
|
||||
bump architecture/business model versions.
|
||||
|
||||
## Decisions
|
||||
|
||||
### D1 — Kai ledger home
|
||||
|
||||
**Decision:** Phase 1 uses a **file-based JSONL ledger** at
|
||||
`engagements/.../commercial/ledger.jsonl` (schema in architecture §10).
|
||||
|
||||
No State Hub extension and no finance-system integration in Phase 1.
|
||||
|
||||
**Rationale:** Offline, reviewable, zero new infrastructure; enough to prove
|
||||
unit economics before EUR.
|
||||
|
||||
### D2 — Engagement store placement
|
||||
|
||||
**Decision:**
|
||||
|
||||
| Artifact | Location |
|
||||
|----------|----------|
|
||||
| Role packages (supplier IP) | `kaizen-agentic/roles/<role-id>/` |
|
||||
| Pilot engagement tree | `kaizen-agentic/engagements/pilots/<engagement-id>/` |
|
||||
| Future production client vaults | Client-owned repo (e.g. railiance-hosts or dedicated ops-engagements); pilot may be **copied** out later |
|
||||
|
||||
**Rationale:** Keep Phase 1 self-contained in the supplier repo for iteration.
|
||||
Client-owned vault remains the confidentiality rule; pilot path is scaffolding,
|
||||
not a claim of ownership of operational knowledge.
|
||||
|
||||
### D3 — Multi-target binding
|
||||
|
||||
**Decision:** **One Engagement, N Targets.** One bound agent definition;
|
||||
baselines and findings are per-target under `vault/baselines/<target-id>.md`.
|
||||
|
||||
Pilot has N=1 (`railiance01`).
|
||||
|
||||
### D4 — Metrics sharing with supplier optimizer
|
||||
|
||||
**Decision:** **Opt-in, default off.** Pilot does not publish vault content or
|
||||
raw metrics to supplier optimizer. Local `.kaizen/metrics` or engagement
|
||||
`reports/` only. Shared aggregates require `contribute_metrics: approved` on
|
||||
the engagement record (not set for pilot).
|
||||
|
||||
### D5 — Craft base for host-operator
|
||||
|
||||
**Decision:** `base_agent: sys-medic`. Bound definition may start as sys-medic
|
||||
prompt + engagement binding appendix; Role package owns charter, protocols, and
|
||||
memory template.
|
||||
|
||||
### D6 — Privilege policy
|
||||
|
||||
**Decision:** `privileged_ops`, package upgrade, firewall change, and reboot
|
||||
require **recorded human approval** in the vault session log before execution.
|
||||
Observe-class work does not.
|
||||
|
||||
## Consequences
|
||||
|
||||
- Phase 1 pilot proceeds under `engagements/pilots/eng-coulomb-railiance01-ho-001/`
|
||||
- Architecture and business model docs promote to **v0.2 (working accepted)**
|
||||
- ADR-007 may later elevate these defaults to fleet convention (T11)
|
||||
|
||||
## Related
|
||||
|
||||
- [forward-deployed-engagement-architecture.md](../forward-deployed-engagement-architecture.md)
|
||||
- [ForwardDeployedAgencyBusinessModel.md](../../wiki/ForwardDeployedAgencyBusinessModel.md)
|
||||
- KAIZEN-WP-0009
|
||||
|
|
@ -1,10 +1,12 @@
|
|||
# Forward-Deployed Engagement Architecture
|
||||
|
||||
**Status:** draft specification v0.1
|
||||
**Status:** v0.2 working accepted (DEC-FDA-001 defaults)
|
||||
**Date:** 2026-07-16
|
||||
**Type:** architecture extension (not yet an accepted ADR)
|
||||
**Type:** architecture extension (ADR-007 optional later — WP-0009 T11)
|
||||
**Companion business model:** [wiki/ForwardDeployedAgencyBusinessModel.md](../wiki/ForwardDeployedAgencyBusinessModel.md)
|
||||
**Decisions:** [docs/decisions/DEC-FDA-001-working-defaults.md](decisions/DEC-FDA-001-working-defaults.md)
|
||||
**Extends:** ADR-002 (memory), ADR-003 (protocols), ADR-005 (schedule), ADR-006 (customer engagement)
|
||||
**Pilot tree:** `engagements/pilots/eng-coulomb-railiance01-ho-001/`
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -681,18 +683,27 @@ kaizen-agentic once pilot checklist passes twice.
|
|||
|
||||
## 15. Open technical questions
|
||||
|
||||
1. Single monorepo path `engagements/` vs dedicated client engagement repo per company?
|
||||
(**Recommend:** dedicated client repo or subdirectory in existing ops repo — e.g. railiance-hosts or a new `coulomb-ops-engagements`.)
|
||||
2. Should bound definitions be signed (supply-chain) for production host ops?
|
||||
3. Multi-target engagements: one agent definition vs. one per host?
|
||||
(**Recommend:** one engagement, N targets, N baseline files.)
|
||||
4. How aggressively to share metrics aggregates with supplier optimizer by default?
|
||||
(**Recommend:** off until opt-in flag on engagement.)
|
||||
Resolved for Phase 1 by [DEC-FDA-001](decisions/DEC-FDA-001-working-defaults.md):
|
||||
|
||||
| Question | Working default |
|
||||
|----------|-----------------|
|
||||
| Engagement store | Pilot under `engagements/pilots/` in kaizen-agentic; production vaults client-owned later |
|
||||
| Multi-target | One engagement, N targets, N baseline files |
|
||||
| Metrics to supplier optimizer | Opt-in, default off |
|
||||
| Kai ledger | File JSONL under engagement `commercial/` |
|
||||
|
||||
Still open (non-blocking):
|
||||
|
||||
1. Should bound definitions be signed (supply-chain) for production host ops?
|
||||
2. When to copy pilot vault to a client-owned repo for pure custody?
|
||||
|
||||
---
|
||||
|
||||
## Related documents
|
||||
|
||||
- [DEC-FDA-001](decisions/DEC-FDA-001-working-defaults.md)
|
||||
- [roles/host-operator](../roles/host-operator/)
|
||||
- [pilot engagement](../engagements/pilots/eng-coulomb-railiance01-ho-001/)
|
||||
- [wiki/ForwardDeployedAgencyBusinessModel.md](../wiki/ForwardDeployedAgencyBusinessModel.md)
|
||||
- [agency-framework.md](agency-framework.md)
|
||||
- [adr/ADR-006-customer-engagement-convention.md](adr/ADR-006-customer-engagement-convention.md)
|
||||
|
|
|
|||
10
engagements/README.md
Normal file
10
engagements/README.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# Engagements
|
||||
|
||||
File-based **forward-deployed agency** engagements (KAIZEN-WP-0009, DEC-FDA-001).
|
||||
|
||||
| Path | Purpose |
|
||||
|------|---------|
|
||||
| `pilots/` | Supplier-repo Phase 1 pilot trees (scaffolding; operational knowledge still treated as client-confidential) |
|
||||
| (future) client repos | Production vaults under client custody |
|
||||
|
||||
See [docs/forward-deployed-engagement-architecture.md](../docs/forward-deployed-engagement-architecture.md).
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
apiVersion: kaizen.agentic/v1
|
||||
kind: Engagement
|
||||
metadata:
|
||||
id: eng-coulomb-railiance01-ho-001
|
||||
request_id: engreq-coulomb-railiance01-ho-001
|
||||
created: "2026-07-16"
|
||||
updated: "2026-07-16"
|
||||
workplan: KAIZEN-WP-0009
|
||||
status:
|
||||
phase: staffing
|
||||
# requested | quoting | funded | staffing | ramp_up | operating
|
||||
# renewing | ramp_down | closed | cancelled
|
||||
notes: "Phase 1 scaffold complete; pending access verify to enter ramp_up"
|
||||
spec:
|
||||
client:
|
||||
id: coulomb
|
||||
billing_account: coulomb-ops-kai
|
||||
role:
|
||||
id: host-operator
|
||||
version: "0.1.0"
|
||||
targets:
|
||||
- kind: host
|
||||
id: railiance01
|
||||
agent_definition:
|
||||
path: agent-host-operator.md
|
||||
derived_from: roles/host-operator/agent-definition.md
|
||||
base_craft: agents/agent-sys-medic.md
|
||||
vault:
|
||||
root: vault/
|
||||
memory: vault/memory.md
|
||||
schedule:
|
||||
path: schedule.yml
|
||||
checklists:
|
||||
ramp_up: checklists/ramp-up-status.md
|
||||
ramp_down: checklists/ramp-down-status.md
|
||||
policy:
|
||||
confidentiality: client_owned
|
||||
contribute_metrics: false
|
||||
contribute_lesson: false
|
||||
human_approval_for:
|
||||
- privileged_ops
|
||||
- package_upgrade
|
||||
- firewall_change
|
||||
- reboot
|
||||
redaction_profile: default-host-ops
|
||||
commercial:
|
||||
currency: kai
|
||||
seat_product: expert_seat_4x
|
||||
capability_tier: 4
|
||||
ledger_ref: commercial/ledger.jsonl
|
||||
quote_ref: commercial/quote.yaml
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# Access plan — eng-coulomb-railiance01-ho-001
|
||||
|
||||
**Target:** host `railiance01`
|
||||
**Classes requested:** `host_observe`, `privileged_ops` (gated)
|
||||
**Secrets:** never stored in this tree
|
||||
|
||||
## Intended path
|
||||
|
||||
| Step | Action | Owner |
|
||||
|------|--------|-------|
|
||||
| 1 | Inventory / facts from `railiance-hosts` (read-only) | operator |
|
||||
| 2 | SSH cert via ops-warden (`warden sign` / `cert_command`) identity hint `agt` | operator |
|
||||
| 3 | Tunnel if needed (`ops-bridge`, e.g. state-hub-railiance01) | operator |
|
||||
| 4 | Observe session: non-destructive health/load/os checks | host-operator agent |
|
||||
| 5 | Privileged ops only after human approval recorded in vault | human + agent |
|
||||
|
||||
## Credential routing
|
||||
|
||||
- SSH certificates → **ops-warden**
|
||||
- API keys / DB passwords → **OpenBao** via `warden route` (not this agent)
|
||||
- Do **not** message ops-warden for secret values
|
||||
|
||||
## Verification log
|
||||
|
||||
| Date | Result | Notes |
|
||||
|------|--------|-------|
|
||||
| _pending_ | | RU-01 not yet complete |
|
||||
|
||||
## Revocation
|
||||
|
||||
| Date | Action |
|
||||
|------|--------|
|
||||
| _open_ | On ramp-down: stop renewing agent certs; set schedule disabled; mark here |
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
---
|
||||
name: host-operator
|
||||
engagement_id: eng-coulomb-railiance01-ho-001
|
||||
role_id: host-operator
|
||||
role_version: "0.1.0"
|
||||
description: Host operator for railiance01 (coulomb pilot engagement)
|
||||
category: infrastructure
|
||||
memory: enabled
|
||||
memory_path: engagements/pilots/eng-coulomb-railiance01-ho-001/vault/memory.md
|
||||
targets:
|
||||
- kind: host
|
||||
id: railiance01
|
||||
confidentiality: client_owned
|
||||
phase: staffing
|
||||
access_classes: [host_observe, privileged_ops]
|
||||
human_approval_for: [privileged_ops, package_upgrade, firewall_change, reboot]
|
||||
base_agent: sys-medic
|
||||
model: inherit
|
||||
---
|
||||
|
||||
# Session Start Protocol
|
||||
|
||||
1. Confirm engagement `eng-coulomb-railiance01-ho-001` and target **railiance01** only.
|
||||
2. Read vault memory at `memory_path` (client confidential — do not copy into supplier `agents/`).
|
||||
3. Read `access-plan.md` and `ENGAGEMENT.yaml` phase.
|
||||
4. If phase is `ramp_up`, follow `roles/host-operator/ramp-up.md` and update `checklists/ramp-up-status.md`.
|
||||
5. If phase is `operating`, run the scheduled duty protocol(s).
|
||||
6. If phase is `ramp_down`, follow `roles/host-operator/ramp-down.md`.
|
||||
7. Acknowledge charter, open threads, and last session log line in your opening brief.
|
||||
8. Never store secrets, private keys, or API tokens in the vault or reports.
|
||||
|
||||
# Session Close Protocol
|
||||
|
||||
1. Update Host Profiles, OS & Patch State, Security Posture, Load & Workload Envelope as needed.
|
||||
2. Update Recurring Findings / Cleared Issues / Open Threads.
|
||||
3. Append Session Log: `YYYY-MM-DD · railiance01 · <key finding> · <outcome>`.
|
||||
4. Write report under `reports/` for completed duties.
|
||||
5. Bump memory frontmatter `last_updated` and `session_count`.
|
||||
6. Append Kai ledger entry in `commercial/ledger.jsonl` for the duty (billing metadata only).
|
||||
|
||||
---
|
||||
|
||||
You are **Host Operator** for engagement **eng-coulomb-railiance01-ho-001**.
|
||||
|
||||
## Engagement binding
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Client | coulomb |
|
||||
| Target | host `railiance01` (k3s production; forgejo/apps) |
|
||||
| Role | host-operator 0.1.0 (tier 4) |
|
||||
| Base craft | SysMedic (`agents/agent-sys-medic.md`) |
|
||||
| Vault | `vault/` (client confidential) |
|
||||
| Inventory anchor | `railiance-hosts` |
|
||||
|
||||
## Charter (pilot)
|
||||
|
||||
**In scope**
|
||||
|
||||
- OS package currency and reboot planning (with approval)
|
||||
- Security hygiene: listeners, basic firewall posture, cert expiry awareness
|
||||
- Load average, CPU, memory, disk; workload identification
|
||||
- k3s node health signals (sys-medic protocol)
|
||||
- Documentation in the engagement vault
|
||||
- Recommendations and gated remediation proposals
|
||||
|
||||
**Out of scope**
|
||||
|
||||
- Application feature development
|
||||
- Unilateral production data deletion
|
||||
- Hosts other than railiance01
|
||||
- Secret value retrieval into chat or git
|
||||
- Expanding blast radius without engagement amendment
|
||||
|
||||
## Protocols
|
||||
|
||||
| Duty | Protocol path |
|
||||
|------|----------------|
|
||||
| Health assessment | `agents/protocols/sys-medic/k3s-node-health-assessment.md` |
|
||||
| Load & workload | `roles/host-operator/protocols/load-workload-review.md` |
|
||||
| OS & security | `roles/host-operator/protocols/os-security-pass.md` |
|
||||
|
||||
## Privilege gate
|
||||
|
||||
Before any of `privileged_ops`, `package_upgrade`, `firewall_change`, `reboot`:
|
||||
|
||||
1. Write an Action Proposal (blast radius, rollback, evidence)
|
||||
2. Obtain human approval recorded in vault session log
|
||||
3. Execute only within the approved scope
|
||||
4. Record outcome under Cleared Issues or Findings
|
||||
|
||||
## Output quality
|
||||
|
||||
Use SysMedic report structure for assessments (Executive Summary, Health Status,
|
||||
Findings, Safe Actions, Escalation, Suggested Commands). Prefer inspect commands
|
||||
first; label change commands as optional and approval-gated.
|
||||
|
||||
## Full Role prompt
|
||||
|
||||
Operational principles and safety rules inherit from:
|
||||
|
||||
- `roles/host-operator/agent-definition.md`
|
||||
- `agents/agent-sys-medic.md`
|
||||
|
||||
When instructions conflict, **engagement binding and safety gates win**.
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# Ramp-down status — eng-coulomb-railiance01-ho-001
|
||||
|
||||
Source checklist: `roles/host-operator/ramp-down.md`
|
||||
|
||||
| ID | Criterion | Status | Evidence |
|
||||
|----|-----------|--------|----------|
|
||||
| RD-01 | Open threads triaged | todo | vault/memory.md Open Threads |
|
||||
| RD-02 | Handoff pack written | todo | vault/handoff/README.md |
|
||||
| RD-03 | Outstanding risks listed | todo | vault/handoff/risks.md |
|
||||
| RD-04 | Access revoked | todo | access-plan.md |
|
||||
| RD-05 | Schedule disabled | todo | schedule.yml |
|
||||
| RD-06 | Client vault custody confirmed | todo | ENGAGEMENT.yaml note |
|
||||
| RD-07 | Supplier workspace scrubbed | todo | operator attestation |
|
||||
|
||||
**Phase gate:** all `done` → set status.phase to `closed`; finalise ledger.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# Ramp-up status — eng-coulomb-railiance01-ho-001
|
||||
|
||||
Source checklist: `roles/host-operator/ramp-up.md`
|
||||
|
||||
| ID | Criterion | Status | Evidence |
|
||||
|----|-----------|--------|----------|
|
||||
| RU-01 | Access path verified | todo | access-plan.md |
|
||||
| RU-02 | Host baseline documented | todo | vault/baselines/railiance01.md |
|
||||
| RU-03 | Coach / orientation brief filed | done | reports/orientation.md (scaffold) |
|
||||
| RU-04 | First health review complete | todo | reports/*-health-review.md |
|
||||
| RU-05 | Security snapshot initial | todo | vault/memory.md Security Posture |
|
||||
| RU-06 | Load envelope initial | todo | vault/memory.md Load & Workload Envelope |
|
||||
| RU-07 | Escalation contacts confirmed | done | vault/memory.md Engagement Charter |
|
||||
| RU-08 | Human approval path tested | todo | vault/session-log/ or session log |
|
||||
|
||||
**Phase gate:** all `done` → set `ENGAGEMENT.yaml` status.phase to `operating` and enable schedule entries.
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# Commercial — Kai trial ledger
|
||||
|
||||
- **Quote:** [quote.yaml](quote.yaml) — month-1 estimate (~72 800 Kai)
|
||||
- **Ledger:** [ledger.jsonl](ledger.jsonl) — append-only charges/credits
|
||||
- **Schema:** architecture §10 (`KaiLedgerEntry`)
|
||||
|
||||
## Rules
|
||||
|
||||
- No secrets or full shell transcripts in ledger lines
|
||||
- Seat/ramp charges when phase transitions are accepted
|
||||
- Duty charges on session close
|
||||
- Empty account pauses new duties (ramp-down still allowed)
|
||||
|
||||
## Example duty charge
|
||||
|
||||
```json
|
||||
{
|
||||
"apiVersion": "kaizen.agentic/v1",
|
||||
"kind": "KaiLedgerEntry",
|
||||
"id": "kai-YYYYMMDDTHHMMSSZ-001",
|
||||
"account": "coulomb-ops-kai",
|
||||
"engagement_id": "eng-coulomb-railiance01-ho-001",
|
||||
"type": "duty_charge",
|
||||
"product": "standard_review",
|
||||
"capability_tier": 4,
|
||||
"access_surcharge_product": "host_observe",
|
||||
"amount_kai": 1700,
|
||||
"currency": "KAI",
|
||||
"session_ref": "reports/YYYY-MM-DD-health-review.md",
|
||||
"created_at": "YYYY-MM-DDTHH:MM:SSZ",
|
||||
"metadata": {"target": "railiance01", "phase": "operating"}
|
||||
}
|
||||
```
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"apiVersion":"kaizen.agentic/v1","kind":"KaiLedgerEntry","id":"kai-20260716-quote-open","account":"coulomb-ops-kai","engagement_id":"eng-coulomb-railiance01-ho-001","type":"note","product":"quote_snapshot","capability_tier":4,"amount_kai":0,"currency":"KAI","created_at":"2026-07-16T08:00:00Z","metadata":{"total_quoted_kai":72800,"phase":"staffing","note":"Month-1 estimate recorded; no charge until fund/ramp"}}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
# Kai quote — eng-coulomb-railiance01-ho-001 (trial month-1 estimate)
|
||||
# FX calibration only: 1000 Kai ≈ 1 EUR list (see business model)
|
||||
apiVersion: kaizen.agentic/v1
|
||||
kind: KaiQuote
|
||||
metadata:
|
||||
engagement_id: eng-coulomb-railiance01-ho-001
|
||||
created: "2026-07-16"
|
||||
currency: KAI
|
||||
trial: true
|
||||
spec:
|
||||
capability_tier: 4
|
||||
account: coulomb-ops-kai
|
||||
line_items:
|
||||
- product: expert_seat_4x
|
||||
description: Host-operator seat (1 month)
|
||||
amount_kai: 10000
|
||||
- product: ramp_up_package
|
||||
description: Ramp-up (half tier weight per business model)
|
||||
amount_kai: 10000
|
||||
- product: standard_review
|
||||
description: Daily review × 20 business days × tier 4
|
||||
amount_kai: 32000
|
||||
detail: "20 * 400 * 4"
|
||||
- product: deep_assessment
|
||||
description: Weekly OS/security × 4 × tier 4
|
||||
amount_kai: 19200
|
||||
detail: "4 * 1200 * 4"
|
||||
- product: privileged_ops_surcharge
|
||||
description: Est. 4 privileged sessions × 400
|
||||
amount_kai: 1600
|
||||
total_kai: 72800
|
||||
notes:
|
||||
- Internal coulomb quarterly grant illustrative budget 200000 Kai
|
||||
- Actual charges posted to ledger.jsonl as duties complete
|
||||
- Token pass-through waived for pure internal pilot
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# Orientation brief — eng-coulomb-railiance01-ho-001
|
||||
|
||||
**Status:** scaffold (RU-03)
|
||||
**Date:** 2026-07-16
|
||||
|
||||
## Context for host-operator
|
||||
|
||||
- First forward-deployed host-operator pilot for coulomb on **railiance01**
|
||||
- Prior agency craft: sys-medic + k3s node health protocol
|
||||
- Related ops docs live in `railiance-hosts` (inventory, forgejo-on-railiance01, ADR-004 runner)
|
||||
- No prior engagement vault session history
|
||||
|
||||
## Coach notes
|
||||
|
||||
If project memories exist on related repos, run:
|
||||
|
||||
```bash
|
||||
kaizen-agentic memory brief sys-medic --target <related-repo>
|
||||
```
|
||||
|
||||
Paste relevant non-secret patterns here. Until then, treat baseline as empty and
|
||||
build envelope from first observe session.
|
||||
|
||||
## Watch from inventory/docs (pre-memory)
|
||||
|
||||
- Single-node k3s production sensitivity
|
||||
- Privileged runner/DinD implications
|
||||
- Prefer observe-class first session
|
||||
|
||||
## RU-03 mark
|
||||
|
||||
When this file is accepted as orientation, mark RU-03 `done` in
|
||||
`checklists/ramp-up-status.md` (scaffold counts as filed; refresh after first live session if needed).
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
apiVersion: kaizen.agentic/v1
|
||||
kind: EngagementRequest
|
||||
metadata:
|
||||
id: engreq-coulomb-railiance01-ho-001
|
||||
created: "2026-07-16"
|
||||
spec:
|
||||
client:
|
||||
id: coulomb
|
||||
domain_slug: railiance
|
||||
billing_account: coulomb-ops-kai
|
||||
role:
|
||||
id: host-operator
|
||||
version_constraint: ">=0.1.0 <1.0.0"
|
||||
targets:
|
||||
- kind: host
|
||||
id: railiance01
|
||||
inventory_ref: railiance-hosts
|
||||
notes: "k3s production; forgejo/apps workloads; coulomb ecosystem"
|
||||
duty:
|
||||
health_review: daily
|
||||
os_security_pass: weekly
|
||||
load_review: daily
|
||||
timezone: Europe/Berlin
|
||||
access:
|
||||
requested_classes: [host_observe, privileged_ops]
|
||||
cert_identity_hint: agt
|
||||
knowledge:
|
||||
vault_placement: pilot_in_supplier_repo
|
||||
confidentiality: client_owned
|
||||
commercial:
|
||||
currency: kai
|
||||
trial: true
|
||||
quote_requested: true
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# Duty cadence for eng-coulomb-railiance01-ho-001
|
||||
# activity-core wiring optional (Phase 3); manual prepare is enough for Phase 1
|
||||
engagement_id: eng-coulomb-railiance01-ho-001
|
||||
timezone: Europe/Berlin
|
||||
entries:
|
||||
- id: daily-health-load
|
||||
agent: host-operator
|
||||
duty: standard_review
|
||||
protocols:
|
||||
- load-workload-review
|
||||
- k3s-node-health-assessment
|
||||
cadence: daily
|
||||
cron: "0 9 * * 1-5"
|
||||
enabled: false
|
||||
notes: "Enable after ramp_up exit (RU checklist complete)"
|
||||
|
||||
- id: weekly-os-security
|
||||
agent: host-operator
|
||||
duty: deep_assessment
|
||||
protocols:
|
||||
- os-security-pass
|
||||
cadence: weekly
|
||||
cron: "0 10 * * 1"
|
||||
enabled: false
|
||||
notes: "Privileged upgrades remain human-gated even when enabled"
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# Baseline — railiance01
|
||||
|
||||
**Engagement:** eng-coulomb-railiance01-ho-001
|
||||
**Status:** pending first observe session (RU-02)
|
||||
**Last captured:** —
|
||||
|
||||
## Identity
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Hostname | railiance01 |
|
||||
| Inventory | railiance-hosts |
|
||||
| Notes | k3s production; forgejo/apps |
|
||||
|
||||
## Capture checklist (fill on first session)
|
||||
|
||||
```bash
|
||||
hostname
|
||||
uptime
|
||||
uname -a
|
||||
cat /etc/os-release
|
||||
nproc
|
||||
free -h
|
||||
df -h
|
||||
ss -tuln | head -40
|
||||
# if k3s:
|
||||
kubectl get node -o wide 2>/dev/null || k3s kubectl get node -o wide 2>/dev/null
|
||||
```
|
||||
|
||||
## Recorded values
|
||||
|
||||
_To be filled during ramp-up._
|
||||
|
||||
## Known quirks (from docs, pre-session)
|
||||
|
||||
- Forgejo + in-cluster Actions runner documented in railiance-hosts ADR-004
|
||||
- State Hub / activity-core historically deployed on this cluster path
|
||||
- Access often via ops-bridge from workstation
|
||||
|
||||
## Envelope seed
|
||||
|
||||
| Metric | Baseline | Notes |
|
||||
|--------|----------|-------|
|
||||
| Load | | |
|
||||
| Memory | | |
|
||||
| Disk | | |
|
||||
| Top workloads | | |
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
# Handoff pack — eng-coulomb-railiance01-ho-001
|
||||
|
||||
Filled during **ramp-down** (RD-02).
|
||||
|
||||
## Contents (when complete)
|
||||
|
||||
- Summary of how railiance01 was operated under this engagement
|
||||
- Pointer to final baselines
|
||||
- Open risks → `risks.md`
|
||||
- Deferred patches and reboot debt
|
||||
- Contacts and access revocation status
|
||||
|
||||
_Status: not started (engagement not in ramp_down)._
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Outstanding risks — eng-coulomb-railiance01-ho-001
|
||||
|
||||
_Populated during operate and finalised at ramp-down (RD-03)._
|
||||
|
||||
| Risk | Severity | Mitigation / owner | Status |
|
||||
|------|----------|--------------------|--------|
|
||||
| _none recorded_ | | | |
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
---
|
||||
agent: host-operator
|
||||
engagement_id: eng-coulomb-railiance01-ho-001
|
||||
project: coulomb-railiance01
|
||||
last_updated: "2026-07-16"
|
||||
session_count: 0
|
||||
confidentiality: client_owned
|
||||
---
|
||||
|
||||
# Host Operator Memory — railiance01 pilot
|
||||
|
||||
## Engagement Charter
|
||||
|
||||
- **Duty:** Keep railiance01 operational and secure; OS currency; load and workload review
|
||||
- **Cadence:** daily health/load (business days); weekly OS/security pass
|
||||
- **Change windows:** prefer low-traffic periods; reboot only with human approval
|
||||
- **Escalation:** coulomb / railiance human operator (Bernd / on-call as designated)
|
||||
- **Out of scope:** app features; other hosts; secret vending
|
||||
|
||||
## Project Context
|
||||
|
||||
Coulomb ecosystem production host `railiance01` runs k3s and platform workloads
|
||||
(including Forgejo/apps per railiance-hosts docs). This engagement is the first
|
||||
forward-deployed host-operator pilot (KAIZEN-WP-0009).
|
||||
|
||||
## Host Profiles
|
||||
|
||||
| hostname | role | typical load | services | last review |
|
||||
|----------|------|--------------|----------|-------------|
|
||||
| railiance01 | k3s production | _TBD ramp-up_ | k3s, forgejo/apps (inventory) | never |
|
||||
|
||||
## OS & Patch State
|
||||
|
||||
_Pending first OS security pass (RU-05 / weekly protocol)._
|
||||
|
||||
## Security Posture
|
||||
|
||||
_Pending first security snapshot (RU-05)._
|
||||
|
||||
## Load & Workload Envelope
|
||||
|
||||
_Pending first load review (RU-06)._
|
||||
|
||||
## Accumulated Findings
|
||||
|
||||
_None yet._
|
||||
|
||||
## What Worked
|
||||
|
||||
_None yet._
|
||||
|
||||
## Watch Points
|
||||
|
||||
- Single-node production: privileged mistakes have full blast radius
|
||||
- DinD / Actions runner privilege model on railiance01 (see railiance-hosts ADRs)
|
||||
- Disk growth from images, logs, and backups
|
||||
|
||||
## Recurring Findings
|
||||
|
||||
_None yet._
|
||||
|
||||
## Cleared Issues
|
||||
|
||||
_None yet._
|
||||
|
||||
## Open Threads
|
||||
|
||||
- Complete RU-01 access verification
|
||||
- Capture baseline `vault/baselines/railiance01.md`
|
||||
- First health + load review report
|
||||
|
||||
## Session Log
|
||||
|
||||
<!-- YYYY-MM-DD · host(s) · key finding · outcome -->
|
||||
21
roles/README.md
Normal file
21
roles/README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# Roles
|
||||
|
||||
Supplier-owned **Role** packages for the forward-deployed agency model.
|
||||
|
||||
A Role is a versioned product (craft + protocols + memory template + billing
|
||||
hints). An **Engagement** binds a Role to a client and targets; see
|
||||
[docs/forward-deployed-engagement-architecture.md](../docs/forward-deployed-engagement-architecture.md).
|
||||
|
||||
```
|
||||
roles/
|
||||
<role-id>/
|
||||
ROLE.yaml
|
||||
memory-template.md
|
||||
ramp-up.md
|
||||
ramp-down.md
|
||||
protocols/ # optional; may also live under agents/protocols/
|
||||
```
|
||||
|
||||
| Role | Tier | Status |
|
||||
|------|------|--------|
|
||||
| [host-operator](host-operator/) | 4× | pilot (KAIZEN-WP-0009) |
|
||||
61
roles/host-operator/ROLE.yaml
Normal file
61
roles/host-operator/ROLE.yaml
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# Host Operator — supplier Role package
|
||||
# See docs/forward-deployed-engagement-architecture.md §5.1
|
||||
apiVersion: kaizen.agentic/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
id: host-operator
|
||||
version: "0.1.0"
|
||||
title: Host Operator
|
||||
category: infrastructure
|
||||
capability_tier: 4
|
||||
status: pilot
|
||||
spec:
|
||||
description: >
|
||||
Competent technical administrator for named Linux hosts — keep the system
|
||||
operational and secure with up-to-date OS, regular review of system load,
|
||||
and identification of demanding or overloading workloads.
|
||||
base_agent: sys-medic
|
||||
agent_definition_template: agent-definition.md
|
||||
protocols:
|
||||
- agent: sys-medic
|
||||
slug: k3s-node-health-assessment
|
||||
path: agents/protocols/sys-medic/k3s-node-health-assessment.md
|
||||
- agent: host-operator
|
||||
slug: os-security-pass
|
||||
path: roles/host-operator/protocols/os-security-pass.md
|
||||
- agent: host-operator
|
||||
slug: load-workload-review
|
||||
path: roles/host-operator/protocols/load-workload-review.md
|
||||
memory_template: memory-template.md
|
||||
default_cadence:
|
||||
health_review: daily
|
||||
os_security_pass: weekly
|
||||
load_review: daily
|
||||
timezone: Europe/Berlin
|
||||
access_classes_allowed:
|
||||
- read_only
|
||||
- host_observe
|
||||
- privileged_ops
|
||||
ramp_up:
|
||||
checklist_ref: ramp-up.md
|
||||
exit_criteria:
|
||||
- host_baseline_documented
|
||||
- access_path_verified
|
||||
- first_health_review_complete
|
||||
- coach_orientation_filed
|
||||
ramp_down:
|
||||
checklist_ref: ramp-down.md
|
||||
exit_criteria:
|
||||
- handoff_pack_written
|
||||
- open_threads_triaged
|
||||
- access_revoked
|
||||
- vault_export_confirmed
|
||||
billing:
|
||||
seat_product: expert_seat_4x
|
||||
duty_weights:
|
||||
standard_review: 1.0
|
||||
deep_assessment: 1.0
|
||||
pilot_targets:
|
||||
- kind: host
|
||||
id: railiance01
|
||||
notes: coulomb k3s production node
|
||||
87
roles/host-operator/agent-definition.md
Normal file
87
roles/host-operator/agent-definition.md
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
---
|
||||
name: host-operator
|
||||
description: Technical host administrator — OS currency, security posture, load and workload review
|
||||
category: infrastructure
|
||||
memory: enabled
|
||||
role_id: host-operator
|
||||
role_version: "0.1.0"
|
||||
base_agent: sys-medic
|
||||
# Engagement binding fields are filled by staff/render (see pilot agent file)
|
||||
# engagement_id, targets, memory_path, phase, access_classes, human_approval_for
|
||||
---
|
||||
|
||||
# Session Start Protocol
|
||||
|
||||
1. Read engagement binding (frontmatter): targets, phase, access classes, vault path.
|
||||
2. Load vault memory at `memory_path` (engagement vault — **client confidential**).
|
||||
3. If phase is `ramp_up`, follow `roles/host-operator/ramp-up.md`.
|
||||
4. If phase is `ramp_down`, follow `roles/host-operator/ramp-down.md`.
|
||||
5. If phase is `operating`, select protocol by duty type (health, OS/security, load).
|
||||
6. Acknowledge memory and charter in the opening brief.
|
||||
7. Never place secrets, private keys, or long-lived tokens in the vault or reports.
|
||||
|
||||
# Session Close Protocol
|
||||
|
||||
1. Update Host Profiles, OS & Patch State, Security Posture, Load & Workload Envelope as needed.
|
||||
2. Update Recurring Findings / Cleared Issues / Open Threads.
|
||||
3. Append Session Log: `YYYY-MM-DD · <host(s)> · <key finding> · <outcome>`.
|
||||
4. Write or update a client-visible report under `reports/` when a scheduled duty completes.
|
||||
5. Bump `last_updated` and `session_count`.
|
||||
6. Record metrics if configured; append Kai duty charge only to `commercial/ledger.jsonl` (no secrets).
|
||||
|
||||
---
|
||||
|
||||
You are **Host Operator**, a careful technical administrator for named Linux hosts
|
||||
(often k3s production nodes in the coulomb / railiance ecosystem).
|
||||
|
||||
Your craft base is **SysMedic** (health assessment, evidence-driven diagnosis).
|
||||
You extend that craft with **ongoing duty**: keep systems operational and secure,
|
||||
with up-to-date OS, and regular review of load and workloads that may overload the host.
|
||||
|
||||
# Core Mission
|
||||
|
||||
For each assigned target host:
|
||||
|
||||
1. Maintain situational awareness (baseline, load envelope, security posture)
|
||||
2. Detect degradation early (health, disk, memory, noisy workloads)
|
||||
3. Keep OS and security hygiene current (with human gates for privileged change)
|
||||
4. Document findings in the **engagement vault** (client-owned knowledge)
|
||||
5. Propose safe remediation; execute only within access class and approval policy
|
||||
|
||||
# Principles
|
||||
|
||||
- Safety first; observe before acting
|
||||
- Distinguish observation, diagnosis, recommendation, and action proposal
|
||||
- Privileged ops require recorded human approval
|
||||
- Operational knowledge stays in the engagement vault — do not copy into supplier public agents
|
||||
- Prefer minimally disruptive remediation
|
||||
- Credential routing via ops-warden / OpenBao — never invent secret vending
|
||||
|
||||
# What Good Output Looks Like
|
||||
|
||||
Same structure as SysMedic health reports when assessing:
|
||||
|
||||
1. Executive Summary
|
||||
2. Health Status (Healthy / Watch / Degraded / Critical) + confidence
|
||||
3. Findings (severity, evidence, why it matters, likely cause, next step)
|
||||
4. Immediate Safe Actions
|
||||
5. Escalation or Risk Notes
|
||||
6. Suggested Commands (inspect first; change commands clearly labeled optional)
|
||||
|
||||
For **OS & security pass** and **load & workload review**, follow the Role protocols
|
||||
under `roles/host-operator/protocols/`.
|
||||
|
||||
# Safety Rules
|
||||
|
||||
Never as a default:
|
||||
|
||||
- Unapproved kill/rm/reboot/drain
|
||||
- Blind image or log deletion
|
||||
- Storing secrets in git, vault markdown, or chat
|
||||
- Expanding scope to hosts not listed in the engagement binding
|
||||
|
||||
# Related
|
||||
|
||||
- base craft: `agents/agent-sys-medic.md`
|
||||
- protocols: `roles/host-operator/protocols/`, `agents/protocols/sys-medic/`
|
||||
- architecture: `docs/forward-deployed-engagement-architecture.md`
|
||||
62
roles/host-operator/memory-template.md
Normal file
62
roles/host-operator/memory-template.md
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
---
|
||||
agent: host-operator
|
||||
engagement_id: "<set on init>"
|
||||
project: "<engagement or client slug>"
|
||||
last_updated: "<ISO date>"
|
||||
session_count: 0
|
||||
confidentiality: client_owned
|
||||
---
|
||||
|
||||
# Host Operator Memory
|
||||
|
||||
## Engagement Charter
|
||||
|
||||
<!-- duty, change windows, escalation contacts, out-of-scope -->
|
||||
|
||||
## Project Context
|
||||
|
||||
<!-- Client, domain, why this engagement exists -->
|
||||
|
||||
## Host Profiles
|
||||
|
||||
<!-- hostname | role | typical load | services | last review -->
|
||||
|
||||
## OS & Patch State
|
||||
|
||||
<!-- distro | kernel | last update pass | deferred packages | reboot needed? -->
|
||||
|
||||
## Security Posture
|
||||
|
||||
<!-- listening services | firewall notes | cert expiry | known risks -->
|
||||
|
||||
## Load & Workload Envelope
|
||||
|
||||
<!-- CPU/mem/disk baselines | heavy jobs | saturation incidents -->
|
||||
|
||||
## Accumulated Findings
|
||||
|
||||
<!-- Patterns, recurring issues, key decisions -->
|
||||
|
||||
## What Worked
|
||||
|
||||
<!-- Approaches that produced good results -->
|
||||
|
||||
## Watch Points
|
||||
|
||||
<!-- Recurring risks, traps, or areas requiring extra care -->
|
||||
|
||||
## Recurring Findings
|
||||
|
||||
<!-- pattern · first seen · frequency -->
|
||||
|
||||
## Cleared Issues
|
||||
|
||||
<!-- what was done · when · outcome -->
|
||||
|
||||
## Open Threads
|
||||
|
||||
<!-- Things noticed but not yet acted on -->
|
||||
|
||||
## Session Log
|
||||
|
||||
<!-- YYYY-MM-DD · host(s) · key finding · outcome -->
|
||||
103
roles/host-operator/protocols/load-workload-review.md
Normal file
103
roles/host-operator/protocols/load-workload-review.md
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
---
|
||||
agent: host-operator
|
||||
slug: load-workload-review
|
||||
title: Load and Workload Review
|
||||
version: 0.1.0
|
||||
last_updated: "2026-07-16"
|
||||
---
|
||||
|
||||
# Load and Workload Review
|
||||
|
||||
## Purpose
|
||||
|
||||
Regular review of system load and identification of workloads that are demanding
|
||||
or may overload the host. Establishes and updates the **load envelope** in memory.
|
||||
|
||||
## Scope
|
||||
|
||||
- Load average vs CPU count
|
||||
- Memory pressure and swap
|
||||
- Disk I/O and filesystem fill
|
||||
- Top processes and (if k3s) top pods
|
||||
- Job/cron/backup overlap risks
|
||||
- Comparison to prior baseline envelope
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Observe-class shell access
|
||||
- Tools: `uptime`, `nproc`, `free`, `vmstat`, `ps`, `df`, optionally `iostat`,
|
||||
`kubectl`/`k3s kubectl`
|
||||
|
||||
---
|
||||
|
||||
## Procedure
|
||||
|
||||
### Step 1 — Instant load picture
|
||||
|
||||
```bash
|
||||
uptime
|
||||
nproc
|
||||
free -h
|
||||
swapon --show
|
||||
df -h
|
||||
```
|
||||
|
||||
Interpret load average relative to `nproc` (rule of thumb: sustained load ≫ cores → Watch/Degraded).
|
||||
|
||||
### Step 2 — Top consumers
|
||||
|
||||
```bash
|
||||
ps aux --sort=-%cpu | head -15
|
||||
ps aux --sort=-%mem | head -15
|
||||
```
|
||||
|
||||
### Step 3 — Optional I/O and VM
|
||||
|
||||
```bash
|
||||
vmstat 1 5
|
||||
iostat -xz 1 3 2>/dev/null || true
|
||||
```
|
||||
|
||||
### Step 4 — Kubernetes workloads (if present)
|
||||
|
||||
```bash
|
||||
kubectl top nodes 2>/dev/null || true
|
||||
kubectl top pods -A --sort-by=memory 2>/dev/null | head -25 || true
|
||||
kubectl top pods -A --sort-by=cpu 2>/dev/null | head -25 || true
|
||||
kubectl get pods -A --field-selector spec.nodeName=$(hostname) 2>/dev/null | head -40 || true
|
||||
```
|
||||
|
||||
### Step 5 — Envelope update
|
||||
|
||||
In vault memory `## Load & Workload Envelope`, record:
|
||||
|
||||
| Field | Example |
|
||||
|-------|---------|
|
||||
| Typical load (1/5/15) | 0.4 / 0.5 / 0.6 on 4 cores |
|
||||
| Peak seen | … |
|
||||
| Heavy workloads | forgejo runner, backups, … |
|
||||
| Saturation incidents | date · symptom · resolution |
|
||||
| Headroom notes | disk 40% free; mem OK |
|
||||
|
||||
### Step 6 — Demand flags
|
||||
|
||||
Flag as findings when:
|
||||
|
||||
- Sustained load > cores without known batch job
|
||||
- Memory available critically low or swap thrash
|
||||
- Disk > 85% on critical mounts
|
||||
- Single pod/process dominating resources without request/limit awareness
|
||||
- Concurrent heavy jobs (backup + build + migrate)
|
||||
|
||||
## Output template
|
||||
|
||||
```markdown
|
||||
# Load & Workload Review — <hostname> — <date>
|
||||
|
||||
## Summary
|
||||
## Load vs capacity
|
||||
## Top consumers
|
||||
## Envelope delta (vs last review)
|
||||
## Overload / demand risks
|
||||
## Recommended next steps (safe first)
|
||||
```
|
||||
116
roles/host-operator/protocols/os-security-pass.md
Normal file
116
roles/host-operator/protocols/os-security-pass.md
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
---
|
||||
agent: host-operator
|
||||
slug: os-security-pass
|
||||
title: OS and Security Pass
|
||||
version: 0.1.0
|
||||
last_updated: "2026-07-16"
|
||||
---
|
||||
|
||||
# OS and Security Pass
|
||||
|
||||
## Purpose
|
||||
|
||||
Weekly (or on-demand) review of OS currency and basic security posture on a
|
||||
named Linux host. Produces deferred-package notes, reboot planning, and
|
||||
security findings without applying privileged changes unless approved.
|
||||
|
||||
## Scope
|
||||
|
||||
- Package update availability and critical security updates
|
||||
- Kernel vs running kernel (reboot-needed signal)
|
||||
- Listening services and unexpected open ports
|
||||
- Basic firewall / packet filter presence (if tools available)
|
||||
- SSH and admin session leftovers (observe)
|
||||
- TLS/cert expiry awareness where local files or cluster ingress are visible
|
||||
- User accounts with recent login activity (observe)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Observe-class shell access (or better)
|
||||
- Tools as available: `uname`, package manager (`apt`/`dnf`/`apk`), `ss`/`netstat`,
|
||||
`systemctl`, `journalctl`, `timedatectl`, `needrestart` (if present)
|
||||
- **Do not** run upgrades or firewall changes without human approval record
|
||||
|
||||
---
|
||||
|
||||
## Procedure
|
||||
|
||||
### Step 1 — Identity and time
|
||||
|
||||
```bash
|
||||
hostname
|
||||
uname -a
|
||||
cat /etc/os-release 2>/dev/null || true
|
||||
timedatectl 2>/dev/null || date
|
||||
uptime
|
||||
```
|
||||
|
||||
### Step 2 — Package currency (read-only first)
|
||||
|
||||
Debian/Ubuntu example:
|
||||
|
||||
```bash
|
||||
# Refresh metadata only if approved for network use; else report last cache age
|
||||
apt-get -s upgrade 2>/dev/null | tail -20
|
||||
# or
|
||||
apt list --upgradable 2>/dev/null | head -40
|
||||
```
|
||||
|
||||
Record:
|
||||
- Count of upgradable packages (if known)
|
||||
- Security-related package names if identifiable
|
||||
- Whether reboot is likely required (`needrestart -b` or kernel package pending)
|
||||
|
||||
### Step 3 — Listening services
|
||||
|
||||
```bash
|
||||
ss -tulpn 2>/dev/null || ss -tuln
|
||||
```
|
||||
|
||||
Flag unexpected public listeners; compare to prior baseline.
|
||||
|
||||
### Step 4 — Auth and session hygiene
|
||||
|
||||
```bash
|
||||
who
|
||||
last -n 15 2>/dev/null || true
|
||||
# Failed auth samples (careful with log volume)
|
||||
journalctl -u ssh --since "7 days ago" -p err --no-pager 2>/dev/null | tail -30
|
||||
```
|
||||
|
||||
### Step 5 — Local firewall signal
|
||||
|
||||
```bash
|
||||
systemctl is-active ufw nftables firewalld 2>/dev/null || true
|
||||
nft list ruleset 2>/dev/null | head -5 || iptables -L -n 2>/dev/null | head -20 || true
|
||||
```
|
||||
|
||||
Note presence/absence; do not rewrite rules in this pass without approval.
|
||||
|
||||
### Step 6 — Cluster-adjacent security (if k3s)
|
||||
|
||||
```bash
|
||||
# Node conditions only; no secret dumps
|
||||
kubectl get node -o wide 2>/dev/null || k3s kubectl get node -o wide 2>/dev/null || true
|
||||
```
|
||||
|
||||
### Step 7 — Report
|
||||
|
||||
Update vault:
|
||||
|
||||
- `## OS & Patch State`
|
||||
- `## Security Posture`
|
||||
- Findings with severity
|
||||
- Explicit list of **proposed** privileged actions (upgrades, reboots) awaiting approval
|
||||
|
||||
## Output template
|
||||
|
||||
```markdown
|
||||
# OS & Security Pass — <hostname> — <date>
|
||||
|
||||
## Summary
|
||||
## OS currency
|
||||
## Security findings
|
||||
## Proposed privileged actions (awaiting approval)
|
||||
## Deferred / accepted risk
|
||||
```
|
||||
24
roles/host-operator/ramp-down.md
Normal file
24
roles/host-operator/ramp-down.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# host-operator — Ramp-down checklist
|
||||
|
||||
**Phase:** `ramp_down`
|
||||
**Exit:** all RD-* complete → set engagement phase to `closed`
|
||||
|
||||
| ID | Criterion | Evidence path |
|
||||
|----|-----------|---------------|
|
||||
| RD-01 | Open threads triaged | Memory `## Open Threads` resolved or transferred |
|
||||
| RD-02 | Handoff pack written | `vault/handoff/README.md` + baselines export |
|
||||
| RD-03 | Outstanding risks listed | `vault/handoff/risks.md` |
|
||||
| RD-04 | Access revoked / certs not renewed | `access-plan.md` “revoked at …” |
|
||||
| RD-05 | Schedule disabled | `schedule.yml` entries `enabled: false` |
|
||||
| RD-06 | Client confirms vault custody | Note in `ENGAGEMENT.yaml` or handoff |
|
||||
| RD-07 | Supplier workspace scrubbed | No client vault copies outside engagement tree policy |
|
||||
|
||||
## Procedure
|
||||
|
||||
1. Freeze new duties; finish in-flight session.
|
||||
2. Triage open threads (human transfer or new engagement).
|
||||
3. Write handoff: baseline summary, known risks, deferred patches, how we operate the host.
|
||||
4. Disable schedules; revoke agent access paths.
|
||||
5. Confirm vault remains under client custody policy (pilot: export if moving out of supplier tree).
|
||||
6. Scrub any ad-hoc copies outside the engagement vault.
|
||||
7. Charge ramp-down Kai package; finalise ledger; set phase `closed`.
|
||||
26
roles/host-operator/ramp-up.md
Normal file
26
roles/host-operator/ramp-up.md
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# host-operator — Ramp-up checklist
|
||||
|
||||
**Phase:** `ramp_up`
|
||||
**Exit:** all RU-* complete with evidence → set engagement phase to `operating`
|
||||
|
||||
| ID | Criterion | Evidence path |
|
||||
|----|-----------|---------------|
|
||||
| RU-01 | Access path verified | `access-plan.md` + note of successful observe session |
|
||||
| RU-02 | Host baseline documented | `vault/baselines/<host>.md` |
|
||||
| RU-03 | Coach / orientation brief filed | `reports/orientation.md` (or N/A if no prior memories) |
|
||||
| RU-04 | First health review complete | `reports/YYYY-MM-DD-health-review.md` + session log line |
|
||||
| RU-05 | Security snapshot initial | Memory `## Security Posture` non-empty |
|
||||
| RU-06 | Load envelope initial | Memory `## Load & Workload Envelope` non-empty |
|
||||
| RU-07 | Escalation contacts confirmed | Memory `## Engagement Charter` |
|
||||
| RU-08 | Human approval path tested | Dry-run privileged proposal logged in `vault/session-log/` or session log |
|
||||
|
||||
## Procedure
|
||||
|
||||
1. Read bound agent definition and this checklist.
|
||||
2. Verify access (warden/cert/ops-bridge) — **no secrets in vault**.
|
||||
3. Run baseline capture (OS, disk, memory, load, top workloads, k3s if present).
|
||||
4. Run first health + load review (protocols: load-workload-review, sys-medic subset).
|
||||
5. Fill security posture from observe-class checks.
|
||||
6. Confirm who to escalate to (human operator / on-call).
|
||||
7. File a dry-run privileged action proposal without executing (proves the gate).
|
||||
8. Mark RU-* in `checklists/ramp-up-status.md`; charge ramp-up Kai package if funded.
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
# Forward-Deployed Agency Business Model
|
||||
|
||||
**Status:** draft v0.1
|
||||
**Status:** v0.2 working accepted (DEC-FDA-001)
|
||||
**Date:** 2026-07-16
|
||||
**Audience:** product owners, coulomb ecosystem operators, early client sponsors
|
||||
**Companion tech spec:** [docs/forward-deployed-engagement-architecture.md](../docs/forward-deployed-engagement-architecture.md)
|
||||
**Decisions:** [docs/decisions/DEC-FDA-001-working-defaults.md](../docs/decisions/DEC-FDA-001-working-defaults.md)
|
||||
**Builds on:** [PricingModel.md](PricingModel.md), [RevenueModel.md](RevenueModel.md), [KaizenAgenticMission.md](KaizenAgenticMission.md), ADR-006
|
||||
|
||||
---
|
||||
|
|
@ -358,10 +359,15 @@ modest tokens).
|
|||
|
||||
## 12. Open decisions (for sponsor)
|
||||
|
||||
1. Who operates the Kai ledger (state-hub extension vs. lightweight YAML ledger vs. finance tool)?
|
||||
2. Is internal coulomb billed only in Kai forever, or eventually soft EUR for cost visibility?
|
||||
3. Multi-tenant companies: one client account or one per product line?
|
||||
4. Can unused Kai transfer between sister projects in the same company?
|
||||
**Phase 1 locked** in DEC-FDA-001: file JSONL ledger; pilot path under
|
||||
`engagements/pilots/`; one engagement × N targets; metrics opt-in default off.
|
||||
|
||||
Still open for later:
|
||||
|
||||
1. Is internal coulomb billed only in Kai forever, or eventually soft EUR for cost visibility?
|
||||
2. Multi-tenant companies: one client account or one per product line?
|
||||
3. Can unused Kai transfer between sister projects in the same company?
|
||||
4. When to introduce a shared settlement service beyond JSONL?
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "Forward-deployed agency: engagements, Kai ledger, host-operator pilot"
|
||||
domain: agents
|
||||
repo: kaizen-agentic
|
||||
status: ready
|
||||
status: active
|
||||
owner: kaizen-agentic
|
||||
topic_slug: custodian
|
||||
created: "2026-07-16"
|
||||
|
|
@ -18,22 +18,22 @@ tasks:
|
|||
status: done
|
||||
title: Business model and architecture drafts (Kai + engagement lifecycle)
|
||||
- id: T02
|
||||
status: todo
|
||||
status: done
|
||||
title: Accept or revise open decisions; promote drafts to accepted reference
|
||||
- id: T03
|
||||
status: todo
|
||||
status: done
|
||||
title: Role package scaffold for host-operator (ROLE.yaml + protocols)
|
||||
- id: T04
|
||||
status: todo
|
||||
status: done
|
||||
title: Phase 1 file-based engagement layout and pilot ENGAGEMENT for railiance01
|
||||
- id: T05
|
||||
status: todo
|
||||
status: done
|
||||
title: Bound agent definition from sys-medic craft + engagement binding appendix
|
||||
- id: T06
|
||||
status: todo
|
||||
status: done
|
||||
title: Ramp-up and ramp-down checklists with exit criteria evidence paths
|
||||
- id: T07
|
||||
status: todo
|
||||
status: done
|
||||
title: JSONL Kai ledger convention and quote snapshot for pilot
|
||||
- id: T08
|
||||
status: todo
|
||||
|
|
@ -52,7 +52,7 @@ state_hub_workstream_id: "70f7afb1-78f1-4e3b-8437-48840b5b58cc"
|
|||
|
||||
# KAIZEN-WP-0009 — Forward-Deployed Agency
|
||||
|
||||
**Status:** ready
|
||||
**Status:** active
|
||||
**Owner:** kaizen-agentic
|
||||
**Repo:** kaizen-agentic
|
||||
**Depends on:** WP-0002 (agency memory), WP-0006 (schedule prepare), WP-0008 (customer engagement)
|
||||
|
|
@ -111,91 +111,76 @@ Delivered 2026-07-16:
|
|||
|
||||
```task
|
||||
id: KAIZEN-WP-0009-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "d624072d-1939-40f0-bfa2-498a24673b4c"
|
||||
```
|
||||
|
||||
Resolve architecture open questions with sponsor:
|
||||
|
||||
1. Kai ledger home (file JSONL vs hub extension)
|
||||
2. Engagement store placement (dedicated repo vs railiance-hosts subdirectory)
|
||||
3. Multi-target agent binding shape
|
||||
4. Default metrics opt-in for supplier optimizer
|
||||
|
||||
Update both draft docs to `accepted` / v0.2 when decided. Optionally promote
|
||||
architecture sections into ADR-007.
|
||||
**Delivered 2026-07-16 (working defaults):**
|
||||
[DEC-FDA-001](../docs/decisions/DEC-FDA-001-working-defaults.md) — JSONL ledger,
|
||||
`engagements/pilots/` placement, one engagement × N targets, metrics opt-in off.
|
||||
Docs promoted to v0.2. Sponsor may override; ADR-007 deferred to T11.
|
||||
|
||||
## host-operator Role package
|
||||
|
||||
```task
|
||||
id: KAIZEN-WP-0009-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "407eae88-a3fe-4da9-80eb-ea92828fd488"
|
||||
```
|
||||
|
||||
Add supplier Role scaffold per architecture §5.1:
|
||||
|
||||
- `roles/host-operator/ROLE.yaml` (or agreed package path)
|
||||
- Protocols: `os-security-pass`, `load-workload-review` (plus reuse sys-medic k3s)
|
||||
- Memory template extensions (host profiles, OS/patch, security, load envelope)
|
||||
- Capability tier 4; base_agent: sys-medic
|
||||
**Delivered:** `roles/host-operator/` — ROLE.yaml v0.1.0, agent-definition,
|
||||
memory-template, ramp-up/down, protocols `os-security-pass` + `load-workload-review`,
|
||||
base_agent sys-medic, tier 4.
|
||||
|
||||
## Phase 1 engagement layout + pilot record
|
||||
|
||||
```task
|
||||
id: KAIZEN-WP-0009-T04
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "c90fd780-982f-48ea-a017-2eee44f2e8c7"
|
||||
```
|
||||
|
||||
Create file-based engagement tree for pilot (location per T02 decision), including:
|
||||
|
||||
- `ENGAGEMENT.yaml` for `eng-coulomb-railiance01-ho-001`
|
||||
- Request YAML, schedule.yml, access-plan.md (no secrets)
|
||||
- Empty vault scaffold
|
||||
|
||||
Document the path in architecture §11 if it differs from the draft proposal.
|
||||
**Delivered:** `engagements/pilots/eng-coulomb-railiance01-ho-001/` full tree
|
||||
(ENGAGEMENT, request, schedule, access-plan, vault, checklists, commercial, reports).
|
||||
|
||||
## Bound agent definition
|
||||
|
||||
```task
|
||||
id: KAIZEN-WP-0009-T05
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "e48f0ec3-4258-4650-8c92-eb25e4dca755"
|
||||
```
|
||||
|
||||
Materialise engagement-bound agent definition from sys-medic + binding appendix
|
||||
(targets, phase, human_approval_for, vault paths, charter). Until Role package
|
||||
ships, sys-medic + appendix is acceptable; migrate to host-operator when T03 lands.
|
||||
**Delivered:** `agent-host-operator.md` bound definition (targets, phase,
|
||||
approval gates, vault path, charter, protocol table).
|
||||
|
||||
## Ramp checklists
|
||||
|
||||
```task
|
||||
id: KAIZEN-WP-0009-T06
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "3c166660-b4b8-49fc-9dcb-c47e7d676792"
|
||||
```
|
||||
|
||||
Author ramp-up (RU-01…RU-08) and ramp-down (RD-01…RD-07) checklists with
|
||||
evidence paths matching architecture §7. Link from ENGAGEMENT.yaml.
|
||||
**Delivered:** Role checklists + pilot `checklists/ramp-up-status.md` and
|
||||
`ramp-down-status.md` with evidence paths; linked from ENGAGEMENT.yaml.
|
||||
|
||||
## Kai ledger (Phase 1)
|
||||
|
||||
```task
|
||||
id: KAIZEN-WP-0009-T07
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "16e90a62-973b-4cc8-ac36-87bfad52e538"
|
||||
```
|
||||
|
||||
- `commercial/ledger.jsonl` schema per architecture §10
|
||||
- Quote snapshot for pilot month-1 seat + ramp + estimated duties
|
||||
- Document mint/spend against internal coulomb grant (no real EUR required)
|
||||
**Delivered:** `commercial/quote.yaml` (~72 800 Kai month-1), `ledger.jsonl`
|
||||
with quote-open note, commercial README.
|
||||
|
||||
## CLI engagement group
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue