Skip to content

Commit b273594

Browse files
committed
chore: harden operator workflows and documentation
1 parent 650d3c7 commit b273594

40 files changed

Lines changed: 153 additions & 190 deletions

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
- name: Replay eval proof
4040
run: npm run eval:replays -- --json-out artifacts/replay-overview.json
4141

42-
- name: Architecture surface smoke
42+
- name: Review surface smoke
4343
run: npm run architecture:smoke -- --json-out artifacts/architecture-surface-smoke.json
4444

4545
- name: Build

CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Contributing to AegisOps
22

3-
Thanks for helping improve this project. Keep changes small, documented, and easy to architecture.
3+
Thanks for helping improve this project. Keep changes small, documented, and easy to review.
44

55
## Development Workflow
66

@@ -25,7 +25,7 @@ Keep the subject line under 72 characters when practical. Use the body to explai
2525

2626
## Quality Bar
2727

28-
Before requesting architecture:
28+
Before requesting review:
2929

3030
- Run the fastest relevant local check first.
3131
- Run the full test suite when touching shared logic or public behavior.

README.md

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# AegisOps -- Multimodal Incident Architecture System
1+
# AegisOps -- Multimodal Incident Review System
22

33
[![CI](https://github.com/KIM3310/AegisOps/actions/workflows/ci.yml/badge.svg)](https://github.com/KIM3310/AegisOps/actions)
44
[![TypeScript](https://img.shields.io/badge/TypeScript-5.8-blue?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
@@ -11,32 +11,32 @@
1111

1212
1. Open the Cloudflare demo or local UI and run one incident scenario.
1313
2. Inspect the replay eval suite before trusting live model output.
14-
3. Run `npm run verify` to cover typecheck, tests, replay evals, architecture smoke, and build.
15-
4. Architecture export/handoff artifacts as the architecture-facing proof, not just the chat flow.
14+
3. Run `npm run verify` to cover typecheck, tests, replay evals, surface smoke, and build.
15+
4. Review export and handoff artifacts as operator-facing proof, not just the chat flow.
1616

17-
## Product and System Surface
17+
## System Overview
1818

1919
| Lens | Current answer |
2020
|---|---|
21-
| Audience | SOC, IT operations, managed service, and incident-response teams that need clearer handoff after noisy incidents. |
22-
| Architecture path | Validate the demo, README, architecture notes, and quality gate before deeper workflow architecture. |
23-
| System signal | Multimodal incident analysis, schema-conformant reports, replay evals, follow-up Q&A, and export paths. |
24-
| Safety boundary | Browser never receives provider keys; demo mode is deterministic and no-key by default. |
25-
| Fast path | `npm run verify`, live Cloudflare Pages demo, replay eval suite, and architecture smoke script. |
21+
| Users | SOC, IT operations, managed service, and incident-response teams that need clearer handoff after noisy incidents. |
22+
| Technical path | Validate the demo, README, architecture notes, and quality gate before deeper workflow review. |
23+
| System scope | Multimodal incident analysis, schema-conformant reports, replay evals, follow-up Q&A, and export paths. |
24+
| Operating boundary | Browser never receives provider keys; demo mode is deterministic and no-key by default. |
25+
| Evaluation path | `npm run verify`, live Cloudflare Pages demo, replay eval suite, and surface smoke script. |
2626

27-
## System Fast Path
27+
## Evaluation Path
2828

29-
- **First minute:** Open the Cloudflare demo, run one incident scenario, then inspect replay eval coverage.
29+
- **Start here:** Open the Cloudflare demo, run one incident scenario, then inspect replay eval coverage.
3030
- **Local demo:** Run `npm install && npm run dev`; the UI runs on `http://127.0.0.1:3000` and API on `http://127.0.0.1:8787`.
31-
- **Verification:** Run `npm run verify`; it covers typecheck, tests, replay evals, architecture smoke, and build.
31+
- **Checks:** Run `npm run verify`; it covers typecheck, tests, replay evals, surface smoke, and build.
3232

3333
## Service Launch Playbook
3434

35-
- [Service launch playbook](docs/service-launch-playbook.md) maps the repository to architecture audiences, operating gates, operating boundaries, and risk controls.
35+
- [Service launch playbook](docs/service-launch-playbook.md) maps the repository to intended audiences, operating gates, operating boundaries, and risk controls.
3636

3737
## Architecture Notes
3838

39-
- [Architecture guide](docs/architecture-evidence-map.md) summarizes the project angle, first files to inspect, runtime commands, and known boundaries.
39+
- [Architecture guide](docs/architecture-evidence-map.md) summarizes the system scope, first files to inspect, runtime commands, and known boundaries.
4040
- [Quality notes](docs/quality-gate.md) lists the local checks, CI surface, and release expectations for this repository.
4141
- [Enterprise readiness notes](docs/enterprise-readiness.md) outlines security, data, operations, integration, and handoff expectations.
4242

@@ -140,7 +140,7 @@ If no API key is set, the system runs in **demo mode** -- deterministic output,
140140
### Verify the build
141141

142142
```bash
143-
npm run verify # typecheck + test + replay evals + architecture smoke + build
143+
npm run verify # typecheck + test + replay evals + surface smoke + build
144144
```
145145

146146
---
@@ -264,7 +264,7 @@ Set `GOOGLE_APPLICATION_CREDENTIALS` + `GCP_PROJECT_ID` to persist incident arti
264264
AegisOps/
265265
App.tsx # React app root
266266
types.ts # Shared TypeScript types
267-
constants.ts # Sample presets, architecture lenses
267+
constants.ts # Sample presets, review lenses
268268
components/ # React UI components (26 files)
269269
hooks/ # React hooks (app state, auth, storage)
270270
services/ # Frontend service clients (Google APIs, Gemini, export)
@@ -303,7 +303,7 @@ AegisOps/
303303
npm test # Unit tests (Vitest, 29 test files)
304304
npm run typecheck # TypeScript strict mode check
305305
npm run eval:replays # Replay eval suite (4 scenarios / 32 checks)
306-
npm run architecture:smoke # Architecture surface smoke tests
306+
npm run architecture:smoke # Review surface smoke tests
307307
npm run verify # All of the above + build
308308
```
309309

@@ -335,15 +335,13 @@ Built by [Doeon Kim](https://github.com/KIM3310)
335335

336336
## Cloud + AI Architecture
337337

338-
This repository includes a neutral cloud and AI engineering blueprint that maps the current proof surface to runtime boundaries, data contracts, model-risk controls, deployment posture, and validation hooks.
339-
340338
- [Cloud + AI architecture blueprint](docs/cloud-ai-architecture.md)
341339
- [Machine-readable architecture manifest](docs/architecture/blueprint.json)
342340
- Validation command: `python3 scripts/validate_architecture_blueprint.py`
343341

344342
## Enterprise Productization
345343

346-
- [Product operating model](docs/product-operating-model.md) defines the architecture inspection, trust boundary, trust boundary, operating checks, and service path for this repository.
344+
- [Product operating model](docs/product-operating-model.md) defines the product scope, trust boundary, operating checks, and service path for this repository.
347345

348346
## System Architecture
349347

__tests__/AppFrontDoor.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ const {
111111
product: {
112112
name: 'AegisOps',
113113
category: 'incident copilot',
114-
headline: 'Turn logs into a inspectable incident story.',
114+
headline: 'Turn logs into a reviewable incident story.',
115115
},
116116
workflow: ['collect', 'reason', 'decide'],
117117
runtimeModes: [],

__tests__/GeminiService.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ describe("geminiService apiFetch", () => {
195195
product: {
196196
name: "AegisOps",
197197
category: "multimodal incident copilot",
198-
headline: "Turn logs, screenshots, and alerts into a inspectable incident report.",
198+
headline: "Turn logs, screenshots, and alerts into a reviewable incident report.",
199199
},
200200
workflow: ["collect", "reason", "decide", "communicate"],
201201
runtimeModes: [],

__tests__/OpsMetaApi.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ describeIfSocketBinding("service meta endpoints", () => {
125125
expect(body.links.summaryPack).toBe("/api/summary-pack");
126126
});
127127

128-
it("returns a resource pack for inspection-safe incident walkthroughs", async () => {
128+
it("returns a resource pack for review-safe incident walkthroughs", async () => {
129129
const res = await fetch(`${baseUrl}/api/resource-pack`);
130130
const body = await res.json();
131131

components/AppHeader.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ export function AppHeader({ state }: AppHeaderProps) {
128128
</button>
129129
<button type="button" onClick={copyReviewStateLink} className="h-8 px-2.5 text-xs text-text-muted hover:text-text hover:bg-bg-hover rounded-md flex items-center gap-1.5 transition-colors">
130130
<FileText className="w-3.5 h-3.5" />
131-
Copy Architecture Link
131+
Copy Review Link
132132
</button>
133133
</div>
134134
</div>

components/FrontDoorSection.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,13 @@ export function FrontDoorSection({ state }: FrontDoorSectionProps) {
9292
onClick={copyReviewChecklist}
9393
className="h-9 px-4 rounded-md border border-border bg-bg hover:bg-bg-hover text-sm text-text-muted hover:text-text"
9494
>
95-
Copy Architecture Checklist
95+
Copy Review Checklist
9696
</button>
9797
<button
9898
onClick={copyArchitectureRoutes}
9999
className="h-9 px-4 rounded-md border border-border bg-bg hover:bg-bg-hover text-sm text-text-muted hover:text-text"
100100
>
101-
Copy Architecture Routes
101+
Copy Review Routes
102102
</button>
103103
</div>
104104
</div>

components/OperatorDashboard.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ export function OperatorDashboard({ state }: OperatorDashboardProps) {
3838
Operator Dashboard
3939
</div>
4040
<p className="text-2xs text-text-muted max-w-2xl">
41-
입력 전에 runtime posture, architecture flow, fast links, preset repro path를 한 번에 정리합니다.
41+
입력 전에 runtime posture, review flow, fast links, preset repro path를 한 번에 정리합니다.
4242
</p>
4343
</div>
4444
<button
4545
onClick={copyReviewChecklist}
4646
className="h-8 px-3 rounded-md border border-border bg-bg hover:bg-bg-hover text-xs text-text-muted hover:text-text"
4747
>
48-
Copy Architecture Checklist
48+
Copy Review Checklist
4949
</button>
5050
</div>
5151

@@ -54,7 +54,7 @@ export function OperatorDashboard({ state }: OperatorDashboardProps) {
5454
onClick={copyArchitectureRoutes}
5555
className="h-8 px-3 rounded-md border border-border bg-bg hover:bg-bg-hover text-xs text-text-muted hover:text-text"
5656
>
57-
Copy Architecture Routes
57+
Copy Review Routes
5858
</button>
5959
<button
6060
onClick={copyEvidenceSnapshot}
@@ -84,7 +84,7 @@ export function OperatorDashboard({ state }: OperatorDashboardProps) {
8484
onClick={copyReviewStateLink}
8585
className="h-8 px-3 rounded-md border border-border bg-bg hover:bg-bg-hover text-xs text-text-muted hover:text-text"
8686
>
87-
Copy Architecture Link
87+
Copy Review Link
8888
</button>
8989
<button
9090
onClick={copyArchitectureBundle}
@@ -125,10 +125,10 @@ export function OperatorDashboard({ state }: OperatorDashboardProps) {
125125

126126
<div className="grid gap-3 md:grid-cols-2">
127127
<div className="rounded-lg border border-border bg-bg/80 p-3 space-y-2">
128-
<div className="text-[11px] uppercase tracking-[0.18em] text-text-dim">Architecture flow</div>
128+
<div className="text-[11px] uppercase tracking-[0.18em] text-text-dim">Review flow</div>
129129
<div className="space-y-2">
130130
{(summaryPack?.twoMinuteArchitecture?.length ? summaryPack.twoMinuteArchitecture : [
131-
{ step: 'Load summary pack', surface: '/api/summary-pack', proof: 'architecture route unavailable' },
131+
{ step: 'Load summary pack', surface: '/api/summary-pack', proof: 'review route unavailable' },
132132
]).map((item) => (
133133
<div key={`${item.step}-${item.surface}`} className="rounded-md border border-border bg-bg-card/70 px-3 py-2">
134134
<div className="text-xs font-medium text-text">{item.step}</div>
@@ -140,7 +140,7 @@ export function OperatorDashboard({ state }: OperatorDashboardProps) {
140140
</div>
141141

142142
<div className="rounded-lg border border-border bg-bg/80 p-3 space-y-2">
143-
<div className="text-[11px] uppercase tracking-[0.18em] text-text-dim">Fast architecture routes</div>
143+
<div className="text-[11px] uppercase tracking-[0.18em] text-text-dim">Fast review routes</div>
144144
<div className="flex flex-wrap gap-2">
145145
{architectureRoutes.length > 0 ? (
146146
architectureRoutes.map(([label, href]) => (
@@ -155,7 +155,7 @@ export function OperatorDashboard({ state }: OperatorDashboardProps) {
155155
</a>
156156
))
157157
) : (
158-
<div className="text-2xs text-text-muted">Architecture routes are still loading.</div>
158+
<div className="text-2xs text-text-muted">Review routes are still loading.</div>
159159
)}
160160
</div>
161161
<div className="text-2xs text-text-muted">

components/OperatorReadinessCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ function buildNextMove(props: Props) {
8484
if (props.health?.deployment === "static-demo") {
8585
return {
8686
title: "Prove the replay path, not live runtime",
87-
summary: "This build is static-demo, so the strongest next move is analyze the current incident and then use architecture routes to explain what would change in live mode.",
87+
summary: "This build is static-demo, so the strongest next move is to analyze the current incident and then use review routes to explain what would change in live mode.",
8888
bullets: [
8989
"Static demo can still prove incident structure and escalation",
9090
"Provider comparison is guidance, not live telemetry",

0 commit comments

Comments
 (0)