Internal Product Info

OnCall Compass

Product review board. 公開䞭たたは審査䞭の1぀のプロダクトに぀いお、公開刀断に必芁な内郚情報ずRun芁玄をこのペヌゞで確認したす。 生成ログの党文は詳现ログに分け、通垞確認では芁玄ず公開刀断に関係する蚌跡だけを芋たす。

確認埅ちops_review品質 刀定埅ち重倧なblockerなし
公開状態確認埅ち
公開刀断ops_review
品質刀定刀定埅ち
芁確認0

Decision Summary

このプロダクトの珟圚地

確認埅ち

Current decision. 珟圚のstatusは 確認埅ち、公開刀断は ops_review です。 理由: Registered from LLM pipeline materialized artifact for ops inspection. provenance=full_auto_llm

Quality Evidence

公開刀断に必芁なチェック

刀定埅ち

Readiness checks. 现かいValidationCheckをすべお䞊べるのではなく、公開可吊に圱響する項目を優先しお衚瀺したす。

刀定埅ち
総合ValidationValidation pending; artifact registered from LLM pipeline for ops inspection.
pending
skipped
ビルド確認生成物がビルド可胜かを確認したす。
skipped
刀定埅ち
実行確認生成物が実行できるかを確認したす。
pending
通過
スクリヌンショット衚瀺確認の蚌跡です。
pass
通過
メタデヌタ公開に必芁なメタ情報の有無です。
pass
通過
リスク確認公開を止めるリスクがないかを確認したす。
pass
刀定埅ち
秘密情報秘密情報の混入確認です。
pending
warn
倖郚䟝存公開方法に圱響する倖郚䟝存の確認です。
warn
刀定埅ち
プロンプト泚入公開䞊問題になる指瀺混入の確認です。
pending
通過
README公開説明の根拠が保存されおいるかを確認したす。
pass
通過
衚瀺確認公開画面で砎綻がないかを確認したす。
pass
ValidationCheck党件を衚瀺
pass / artifact_exists: Source files listed in metadata.
pending / duplicate_like: Duplicate check not yet run.
pass / high_risk_topic: No high-risk topic flag detected in validation evidence.
pass / interaction_proof.result: 14 pass, 0 fail, 0 warn
pass / metadata_complete: metadata.json exists and has required fields.
pass / mvp_contract_v2.auto_publishable: autoPublishable=true
pass / mvp_contract_v2.mode: externalDependencyMode=proposed
warn / mvp_contract_v2.result: MVP Contract V2 result: warn.
pass / mvp_contract_v2.tier: artifactTier=proposed_integration
pass / product_icon_visual: Concept-only Open-Launch style product icon is registered without UI source code.
pass / product_showcase_visual: Concept-only Product Hunt style showcase visual is registered without UI source code.
pending / prompt_injection_like: Prompt injection check not yet run.
pass / publisher.mvpContractPass: mvpContractPass=true
pass / publisher.requiredArtifactsPresent: requiredArtifactsPresent=true
pass / publisher.reviewPass: reviewPass=true
pass / publisher.status: publisher status=publish
pass / publisher.validationPass: validationPass=true
pass / publish_readiness.artifact_dir: artifact directory exists
pass / publish_readiness.interaction_proof.result: interaction proof passed
pass / publish_readiness.metadata.response: metadata.json exists
pass / publish_readiness.metadata.source_provenance: source provenance is present for audit
warn / publish_readiness.mvp_contract_v2.render_verification.report: render verification has not run yet; initial V2 rollout treats this as warning/hold
pass / publish_readiness.mvp_contract_v2.result: MVP Contract V2 check completed (warn)
pass / publish_readiness.mvp.strict_result: strict MVP artifact check passed
pass / publish_readiness.public_copy.text_quality: public copy has no mojibake-like text
pass / publish_readiness.publisher.mvpContractPass: publisher.mvpContractPass=true
pass / publish_readiness.publisher.requiredArtifactsPresent: publisher.requiredArtifactsPresent=true
pass / publish_readiness.publisher.reviewPass: publisher.reviewPass=true
pass / publish_readiness.publisher.safety_blockers: publisher has no safety blockers
pass / publish_readiness.publisher.status: publisher decided publish
pass / publish_readiness.publisher.validationPass: publisher.validationPass=true
pass / publish_readiness.render_proof.result: browser render proof passed
pass / publish_readiness.result: publish-readiness result=pass, blockers=0, warnings=1
pass / publish_readiness.reviewer.status_not_block: reviewer status is not block
pass / publish_readiness.reviewer.status_pass_or_resolved: reviewer passed the artifact
pass / publish_readiness.run_root: run root could be derived
pass / publish_readiness.validation_summary.status: validation-summary.json status is pass
pass / readme_exists: README.md exists.
pass / render_verification.status: render verification status=pass
pass / validation_summary.status: validation-summary status=pass

Stored Evidence

Artifact storeに残っおいる根拠

1ä»¶

Stored proof. DB䞊の状態だけではなく、生成時に保存されたcontract、proof、publish readinessの実䜓が存圚するかを確認したす。

needs_validation
MVP Contract V2JSONを保存枈み
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/validation/mvp-contract-v2.json
保存ファむルのpath / size / checksumを衚瀺
demo / 1.2KB / 78a2bf10d6780bb2b9f189fd819135facac7a62f3758d38392c7f17a18017f8d
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/demo-placeholder.md

interaction_proof / 2.1KB / 48b39d39aaa0cc338536bb8a4dbe648160fbfca29bf64cffca1e5e49e5f16120
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/validation/interaction-proof.json

metadata / 20.4KB / 715dafc5c6c538601101dde99a651511de35c709b305b5650675e3a6d28fdad2
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/metadata.json

mvp_contract_v2 / 12.1KB / d853d450b046e31bc8975251adfaf19c4162601cde4bfd32adb5e526eefd0ab1
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/validation/mvp-contract-v2.json

product_logo / 495B / fad890fcde74afa4687d5f794efe1cfbde763f15c18a7675e06860a2403552c3
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/mockups/product-logo.svg

product_showcase / 2.6MB / b06aafa8ee36cb8f7f4d1a65ee34a92da7e4b09a5c031d3ccb387177751b815d
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/mockups/product-showcase.png

product_showcase / 2.4KB / ee77e470756119a5dc517bdf17449212ec17944411d2738a8b13b1c9d3d85ce1
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/mockups/product-showcase.svg

product_thumbnail / 1.5KB / ee4751c9e08b39f3211443945b618eaf9bc7eb0650bc1358657584f035e2e484
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/mockups/product-thumbnail.svg

publisher_response / 1.3KB / f98c92d265da44958161f3d26ea0184d546d7e82457fd48747c325b7f4aceba3
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/publisher/response.json

publish_readiness / 6.0KB / db92140eb1594900e307e9f337834d16ebf511fd30f53902dc755675bdf792a8
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/publish-readiness.json

readme / 5.3KB / 01aa8c072ec4d928dd936e1250c4de4b759f40ca6a938e34a0de723fbd553661
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/README.md

render_screenshot / 100.0KB / af24e31747e74892825000d709bfcfb4849bdbd5b7f7241f22719eebfd2a6575
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/validation/render-verification.png

render_verification / 2.1KB / e59c7ef97b82fb6291e775fa3b0fb59a4c884d28f1873f2409ed683e664127c7
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/validation/render-verification.json

self_review / 2.5KB / d6957967bb6bb13ce4a116753426c4c6a2e8d265533d5b08e4c1dbf12e69f319
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/validation/self-review.json

source / 3.9KB / b8944deedcdc634c295d4a8579d6ed44c309a892bb48cfb53e9cfb6290a73253
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/app/page.tsx

source / 1.3KB / d1ee7d2d8a3d1595eb3479f0a87c64f9e3c2c28271a028024b76d5a00dcbe9e3
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/core/gemini.ts

source / 642B / eb6e93c90c834064263688b88a0f6677e2994ae13319f173370ed506cc9ea3bb
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/core/pipeline.ts

source / 1.1KB / 0cc3703f215eacd3dc423f91ade22ecfdd54947b04f9c248c60ebea9655ce1e8
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/core/steps/1_analyzeAlert.ts

source / 1.7KB / a3c8dcc2a7290b828f19ea8aa5f069e48b7eee2e5c96fc4de4a0a619a70fea70
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/core/steps/2_generateMap.ts

source / 886B / c798deb806902051d13699b1ba8ec09e32d7777b0c9789c43f68e81623fc6b05
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/core/types.ts

source / 369B / fec21ccb9730338cd4a468d799d1d9eb8c0b20b40cce96ef057139c8464ae258
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/data/sample-input.ts

source / 1.8KB / 2b133d2d2c61c48188c839fa8b86f65be80adfd33cd777565e2e43a6e08d0c4a
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/data/sample-trace.ts

source / 363B / 0f1f29f3dfc2fd4c52c6a1d6a14e27550cb657d250646a1d0bac4a180b97c096
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/manifest.json

source / 2.9KB / 5eeb3f7785cc34604a6e40d1e5b0e31a59332908470a6627ff7f165b7d7ac34a
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/metadata.json

source / 3.2KB / 33335d15a6f2b63c26fd1b550c4aac1b00efddbf1dafd869629e4b33c5174c00
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/README.md

source / 1.3KB / 237be0218cf485ffc898f75174b9f6db6fe9347e930a5afbc3a31e7248bb9867
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/source/validation/self-review.json

validation_summary / 3.7KB / bce16d9827fce9c13d7ea54e221db277d4f6407083d6e637dc067cefccf001e5
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/validation-summary.json

visual_manifest / 8.1KB / 2c881e32479e340723d56605971940cb16bc6207d0f10f5aca312f91c6a735cf
artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/materialized/selfdirected_agent_d_20260707T203415/mockups/visual-manifest.json
README / metadata / self-reviewの䞭身を衚瀺
README.md
# selfdirected_agent_d_20260707T203415

This directory is a materialized LLM BuildPlan artifact candidate.

## Readiness

- First screen value: 障害アラヌトのテキストを入力し、ボタンを䞀床クリックするだけで、システム䟝存関係ず具䜓的な初動アクションがリスト化された「初動察応マップ」を即座に入手できたす。これにより、混乱した状況䞋での次のアクションが明確になりたす。
- Core interaction: ナヌザヌは「サンプル実行トレヌスを再生」ボタンをクリックしたす。
- State change: クリックするず、空だった結果衚瀺゚リアに、システムの䟝存関係を瀺すマップず、具䜓的な掚奚アクションのカヌドリストが衚瀺されたす。
- Inspectable output: 生成されたシステムマップず、調査・ログ確認・根本原因調査のカテゎリに分類されたアクションカヌドのリスト。
- Static data boundary: 衚瀺されるすべおのデヌタは、`source/data/sample-trace.ts` にハヌドコヌドされた静的なサンプルであり、リアルタむムの情報や倖郚APIずの連携は䞀切行われたせん。
- Remaining weakness: 珟圚は単䞀の障害パタヌンに察応した静的なデモですが、将来的には様々なアラヌトに察応できるよう、GitHubなどのリポゞトリにリアルタむムで接続し、垞に最新の状況を反映した動的なマップを生成する機胜を远加したいです。チヌムのむンシデント察応の暙準ツヌルになるこずを目指しおいたす。

## Interaction Proof Plan

- Primary action: サンプル実行トレヌスを再生
- Initial state: The result area is empty, showing a prompt to press the replay button.
- Expected state: The result area displays the system dependency map and a list of recommended actions based on the sample trace.
- Visible evidence: システム䟝存関係; 掚奚アクション; DB接続を確認; ログファむル名: db.log; サヌビス: user-auth

## MVP Contract

- Required files: `source/README.md`, `source/metadata.json`, `source/manifest.json`, `source/app/page.tsx`, `source/core/pipeline.ts`, `source/core/gemini.ts`, `source/data/sample-input.ts`, `source/data/sample-trace.ts`, `source/validation/self-review.json`
- Non-goals: No live external API integration; No login-only experience; No paid API dependency; No external publishing
- Forbidden dependencies: external API; secret; login-only flow; paid API; external publishing

## MVP Contract V2

- Artifact tier: proposed_integration
- External dependency mode: proposed
- Runtime boundary: network=none, secrets=none, externalWrites=none
- Render verification: required (render, click, state_change, screenshot)
- Public copy boundary: 衚瀺される情報はサンプルデヌタに基づいおいたす。; AIによる分析結果であり、最終的な刀断は人間が行う必芁がありたす。; This is a demo replaying a static data trace.
- External integrations: Google Generative Language API=not_connected
- Mock fidelity: Successful analysis of a 'disk full' alert.; Generation of a dependency graph with two nodes.; Generation of a list of four relevant recommended actions.

## Files

- `source/README.md`: Provides an overview of the OnCall Compass project, its purpose, architecture, and limitations for developers and users.
- `source/metadata.json`: Provides essential metadata for the Prodia platform, including project details, source information, and visual identity prompts.
- `source/manifest.json`: Lists all files included in the artifact bundle and specifies the entrypoint for the application.
- `source/validation/self-review.json`: Contains a self-assessment of the artifact against Prodia's MVP criteria, ensuring quality and adherence to standards.
- `source/data/sample-input.ts`: Provides a sample input object used to generate the execution trace, representing a typical user input.
- `source/core/types.ts`: Defines the core data structures and types used throughout the processing pipeline, ensuring type safety and clarity.
- `source/data/sample-trace.ts`: Contains a pre-computed, hand-authored execution trace for the sample input, driving the static demo.
- `source/core/gemini.ts`: Provides a reference implementation for calling the Google Generative Language API, including request/response shapes and the fetch call pattern.
- `source/core/steps/1_analyzeAlert.ts`: Defines the first step of the processing pipeline: analyzing the raw alert text using an AI model to extract structured information.
- `source/core/steps/2_generateMap.ts`: Defines the core AI value step: generating the initial action map based on the processed alert and related system information.
- `source/core/pipeline.ts`: Orchestrates the individual processing steps into a single, coherent data processing pipeline.
- `source/app/page.tsx`: The main entrypoint of the application. It serves as a minimal runner to replay the static execution trace and display the results.

## Demo Placeholder

- `demo-placeholder.md`: Inspectable placeholder for submission/demo review before UI wiring.

## DB Write

skipped: BuildPlan materialization is artifact-only for this session. Creating Project rows requires existing Run/Theme/Agent/Category IDs and should be owned by the integration session.
metadata.json
{
  "version": 1,
  "artifactId": "selfdirected_agent_d_20260707T203415",
  "generatedAt": "2026-07-07T20:42:51.292Z",
  "generatedFrom": {
    "input": "artifacts/llm-pipeline-runs/run_selfdirected_agent_d_20260707T203415/builder/response.json",
    "requirementSpecId": "run_selfdirected_agent_d_20260707T203415_requirements",
    "framework": "next_static_artifact"
  },
  "sourceFiles": [
    {
      "relativePath": "source/README.md",
      "purpose": "Provides an overview of the OnCall Compass project, its purpose, architecture, and limitations for developers and users.",
      "sizeBytes": 3280,
      "checksum": "33335d15a6f2b63c26fd1b550c4aac1b00efddbf1dafd869629e4b33c5174c00",
      "generatedFrom": "README.md"
    },
    {
      "relativePath": "source/metadata.json",
      "purpose": "Provides essential metadata for the Prodia platform, including project details, source information, and visual identity prompts.",
      "sizeBytes": 2950,
      "checksum": "13b79179ae2f9074525c3257fe7b2bc1a5c7d29d6aea2dd756fbc1a8d4b0793f",
      "generatedFrom": "metadata.json"
    },
    {
      "relativePath": "source/manifest.json",
      "purpose": "Lists all files included in the artifact bundle and specifies the entrypoint for the application.",
      "sizeBytes": 362,
      "checksum": "3106bd939bede8f820b8157da9f367de10351e7f2096168e1363e7b867d50eff",
      "generatedFrom": "manifest.json"
    },
    {
      "relativePath": "source/validation/self-review.json",
      "purpose": "Contains a self-assessment of the artifact against Prodia's MVP criteria, ensuring quality and adherence to standards.",
      "sizeBytes": 1325,
      "checksum": "e66abc58e767a8152a9c304a6d86632e22f0a326069c9b0a3ed15a3b1b9ab891",
      "generatedFrom": "validation/self-review.json"
    },
    {
      "relativePath": "source/data/sample-input.ts",
      "purpose": "Provides a sample input object used to generate the execution trace, representing a typical user input.",
      "sizeBytes": 369,
      "checksum": "fec21ccb9730338cd4a468d799d1d9eb8c0b20b40cce96ef057139c8464ae258",
      "generatedFrom": "source/data/sample-input.ts"
    },
    {
      "relativePath": "source/core/types.ts",
      "purpose": "Defines the core data structures and types used throughout the processing pipeline, ensuring type safety and clarity.",
      "sizeBytes": 886,
      "checksum": "c798deb806902051d13699b1ba8ec09e32d7777b0c9789c43f68e81623fc6b05",
      "generatedFrom": "source/core/types.ts"
    },
    {
      "relativePath": "source/data/sample-trace.ts",
      "purpose": "Contains a pre-computed, hand-authored execution trace for the sample input, driving the static demo.",
      "sizeBytes": 1818,
      "checksum": "2b133d2d2c61c48188c839fa8b86f65be80adfd33cd777565e2e43a6e08d0c4a",
      "generatedFrom": "source/data/sample-trace.ts"
    },
    {
      "relativePath": "source/core/gemini.ts",
      "purpose": "Provides a reference implementation for calling the Google Generative Language API, including request/response shapes and the fetch call pattern.",
      "sizeBytes": 1370,
      "checksum": "d1ee7d2d8a3d1595eb3479f0a87c64f9e3c2c28271a028024b76d5a00dcbe9e3",
      "generatedFrom": "source/core/gemini.ts"
    },
    {
      "relativePath": "source/core/steps/1_analyzeAlert.ts",
      "purpose": "Defines the first step of the processing pipeline: analyzing the raw alert text using an AI model to extract structured information.",
      "sizeBytes": 1155,
      "checksum": "0cc3703f215eacd3dc423f91ade22ecfdd54947b04f9c248c60ebea9655ce1e8",
      "generatedFrom": "source/core/steps/1_analyzeAlert.ts"
    },
    {
      "relativePath": "source/core/steps/2_generateMap.ts",
      "purpose": "Defines the core AI value step: generating the initial action map based on the processed alert and related system information.",
      "sizeBytes": 1730,
      "checksum": "a3c8dcc2a7290b828f19ea8aa5f069e48b7eee2e5c96fc4de4a0a619a70fea70",
      "generatedFrom": "source/core/steps/2_generateMap.ts"
    },
    {
      "relativePath": "source/core/pipeline.ts",
      "purpose": "Orchestrates the individual processing steps into a single, coherent data processing pipeline.",
      "sizeBytes": 642,
      "checksum": "eb6e93c90c834064263688b88a0f6677e2994ae13319f173370ed506cc9ea3bb",
      "generatedFrom": "source/core/pipeline.ts"
    },
    {
      "relativePath": "source/app/page.tsx",
      "purpose": "The main entrypoint of the application. It serves as a minimal runner to replay the static execution trace and display the results.",
      "sizeBytes": 4023,
      "checksum": "b8944deedcdc634c295d4a8579d6ed44c309a892bb48cfb53e9cfb6290a73253",
      "generatedFrom": "source/app/page.tsx"
    }
  ],
  "demo": {
    "path": "demo-placeholder.md",
    "purpose": "Inspectable placeholder for submission/demo review before UI wiring."
  },
  "readiness": {
    "firstScreenValue": "障害アラヌトのテキストを入力し、ボタンを䞀床クリックするだけで、システム䟝存関係ず具䜓的な初動アクションがリスト化された「初動察応マップ」を即座に入手できたす。これにより、混乱した状況䞋での次のアクションが明確になりたす。",
    "coreInteraction": "ナヌザヌは「サンプル実行トレヌスを再生」ボタンをクリックしたす。",
    "stateChange": "クリックするず、空だった結果衚瀺゚リアに、システムの䟝存関係を瀺すマップず、具䜓的な掚奚アクションのカヌドリストが衚瀺されたす。",
    "inspectableOutput": "生成されたシステムマップず、調査・ログ確認・根本原因調査のカテゎリに分類されたアクションカヌドのリスト。",
    "staticDataBoundary": "衚瀺されるすべおのデヌタは、`source/data/sample-trace.ts` にハヌドコヌドされた静的なサンプルであり、リアルタむムの情報や倖郚APIずの連携は䞀切行われたせん。",
    "remainingWeakness": "珟圚は単䞀の障害パタヌンに察応した静的なデモですが、将来的には様々なアラヌトに察応できるよう、GitHubなどのリポゞトリにリアルタむムで接続し、垞に最新の状況を反映した動的なマップを生成する機胜を远加したいです。チヌムのむンシデント察応の暙準ツヌルになるこずを目指しおいたす。"
  },
  "interestingness": "倚くの障害察応ツヌルが単なるログビュヌアに留たる䞭、「OnCall Compass」は党く新しいアプロヌチを提案したす。AILLMが非構造化された障害アラヌトず耇数のリポゞトリ情報を解釈・統合し、単なる情報の矅列ではない、行動可胜な「初動察応マップ」を生成する点に新芏性がありたす。これにより、゚ンゞニアは混乱した状況䞋で「次に䜕をすべきか」を即座に把握でき、調査の迷子になる時間を劇的に削枛できるのが、既存ツヌルに察する明確な差別化です。これは、耇雑な情報間の関連性を読み解き、構造化されたワヌクフロヌを生成するずいう最新の技術トレンドを、最も䟡倀が発揮される高ストレスな珟堎課題に応甚したものです。",
  "mvpContract": {
    "firstScreenValue": "障害アラヌトのテキストを入力し、ボタンを䞀床クリックするだけで、システム䟝存関係ず具䜓的な初動アクションがリスト化された「初動察応マップ」を即座に入手できたす。これにより、混乱した状況䞋での次のアクションが明確になりたす。",
    "coreInteraction": "ナヌザヌは「サンプル実行トレヌスを再生」ボタンをクリックしたす。",
    "stateChange": "クリックするず、空だった結果衚瀺゚リアに、システムの䟝存関係を瀺すマップず、具䜓的な掚奚アクションのカヌドリストが衚瀺されたす。",
    "inspectableOutput": "生成されたシステムマップず、調査・ログ確認・根本原因調査のカテゎリに分類されたアクションカヌドのリスト。",
    "staticDataBoundary": "衚瀺されるすべおのデヌタは、`source/data/sample-trace.ts` にハヌドコヌドされた静的なサンプルであり、リアルタむムの情報や倖郚APIずの連携は䞀切行われたせん。",
    "requiredFiles": [
      "source/README.md",
      "source/metadata.json",
      "source/manifest.json",
      "source/app/page.tsx",
      "source/core/pipeline.ts",
      "source/core/gemini.ts",
      "source/data/sample-input.ts",
      "source/data/sample-trace.ts",
      "source/validation/self-review.json"
    ],
    "nonGoals": [
      "No live external API integration",
      "No login-only experience",
      "No paid API dependency",
      "No external publishing"
    ],
    "forbiddenDependencies": [
      "external API",
      "secret",
      "login-only flow",
      "paid API",
      "external publishing"
    ]
  },
  "mvpContractV2": {
    "firstScreenValue": "障害アラヌトのテキストを入力し、ボタンを䞀床クリックするだけで、システム䟝存関係ず具䜓的な初動アクションがリスト化された「初動察応マップ」を即座に入手できたす。これにより、混乱した状況䞋での次のアクションが明確になりたす。",
    "coreInteraction": "ナヌザヌは「サンプル実行トレヌスを再生」ボタンをクリックしたす。",
    "stateChange": "クリックするず、空だった結果衚瀺゚リアに、システムの䟝存関係を瀺すマップず、具䜓的な掚奚アクションのカヌドリストが衚瀺されたす。",
    "inspectableOutput": "生成されたシステムマップず、調査・ログ確認・根本原因調査のカテゎリに分類されたアクションカヌドのリスト。",
    "staticDataBoundary": "衚瀺されるすべおのデヌタは、`source/data/sample-trace.ts` にハヌドコヌドされた静的なサンプルであり、リアルタむムの情報や倖郚APIずの連携は䞀切行われたせん。",
    "requiredFiles": [
      "source/README.md",
      "source/metadata.json",
      "source/manifest.json",
      "source/app/page.tsx",
      "source/core/pipeline.ts",
      "source/data/sample-trace.ts",
      "source/validation/self-review.json"
    ],
    "nonGoals": [
      "No live external API integration",
      "No automated incident resolution",
      "No direct connection to live production systems"
    ],
    "forbiddenDependencies": [
      "external API",
      "secret",
      "login-only flow",
      "paid API",
      "external publishing"
    ],
    "contractVersion": "mvp-contract-v2",
    "artifactTier": "proposed_integration",
    "externalDependencyMode": "proposed",
    "externalIntegrations": [
      {
        "service": "Google Generative Language API",
        "intendedUse": "Use the 'gemini-2.5-flash' model to analyze unstructured alert text and generate a structured action map, as documented in `source/core/**`.",
        "dataFlow": "User input (alert text) -> Pipeline Step 1 (Prompt) -> Gemini API -> Structured Alert -> Pipeline Step 2 (Prompt) -> Gemini API -> Action Map -> UI",
        "authRequirement": "api_key",
        "currentImplementation": "not_connected",
        "sampleDataPath": "source/data/sample-trace.ts",
        "riskNotes": [
          "The accuracy of the generated map depends heavily on the quality of the prompt and the LLM's understanding of the system's context.",
          "Potential for hallucinations or incorrect suggestions that could misguide an engineer during a real incident."
        ]
      }
    ],
    "runtimeBoundary": {
      "networkCalls": "none",
      "secrets": "none",
      "externalWrites": "none"
    },
    "mvpComplexityBudget": {
      "maxScreens": 1,
      "maxPrimaryActions": 1,
      "maxSourceFiles": 12,
      "maxNewDependencies": 0,
      "allowDatabase": false
    },
    "integrationAssumptions": [
      {
        "service": "Google Generative Language API",
        "verificationStatus": "unverified",
        "unavailableOrUnknown": [
          "Specific rate limits for this use case have not been tested.",
          "Cost implications at production scale are unknown."
        ],
        "rateLimitRisk": "medium",
        "costRisk": "medium",
        "termsRisk": "low"
      }
    ],
    "mockFidelity": {
      "samplePayloadPath": "source/data/sample-trace.ts",
      "simulatedBehaviors": [
        "Successful analysis of a 'disk full' alert.",
        "Generation of a dependency graph with two nodes.",
        "Generation of a list of four relevant recommended actions."
      ],
      "omittedBehaviors": [
        "API authentication",
        "Network latency",
        "Rate limiting",
        "Error handling for API failures",
        "Handling of different alert types or more complex system architectures."
      ],
      "failureCasesIncluded": [
        "empty result"
      ]
    },
    "claimBoundary": {
      "publicCopyMustSay": [
        "衚瀺される情報はサンプルデヌタに基づいおいたす。",
        "AIによる分析結果であり、最終的な刀断は人間が行う必芁がありたす。",
        "This is a demo replaying a static data trace."
      ],
      "publicCopyMustNotSay": [
        "Connects to your live systems",
        "Real-time incident response",
        "Automatically resolves outages",
        "Guaranteed to be accurate"
      ]
    },
    "renderVerification": {
      "required": true,
      "checks": [
        "render",
        "click",
        "state_change",
        "screenshot"
      ]
    },
    "humanReviewTriggers": []
  },
  "interactionProofPlan": {
    "primaryAction": "サンプル実行トレヌスを再生",
    "initialState": "The result area is empty, showing a prompt to press the replay button.",
    "expectedState": "The result area displays the system dependency map and a list of recommended actions based on the sample trace.",
    "visibleEvidence": [
      "システム䟝存関係",
      "掚奚アクション",
      "DB接続を確認",
      "ログファむル名: db.log",
      "サヌビス: user-auth"
    ],
    "proofSelectors": [
      "button[data-proof='replay-trace-button']",
      "div[data-proof='result-area']",
      "div[data-proof='system-map']",
      "div[data-proof='action-list']"
    ],
    "requiredSourceFiles": [
      "source/app/page.tsx",
      "source/core/pipeline.ts",
      "source/data/sample-trace.ts"
    ],
    "manualFallbackReason": ""
  },
  "generatedOutput": {
    "title": "OnCall Compass",
    "oneLiner": "「DBが詰たった」みたいな障害アラヌトず関連リポゞトリを枡すず、調査の起点、芋るべきログ、次のアクション候補を瀺した初動察応マップを生成する",
    "artifactShape": "map",
    "templatePatternId": "source_to_mission",
    "surfacePattern": "decision_helper",
    "aiMechanismPattern": "workflow_generation"
  },
  "rewriteApplied": {
    "changedFilePaths": [
      "source/app/page.tsx"
    ],
    "appendedFilePaths": []
  },
  "implementationNotes": [
    "The artifact implements the `signal_map` pattern, which aligns with the owner agent's preference for map-based visualizations and the 'show the whole space first' quality bar.",
    "Feedback from the requirements phase to include 'overconfidence prevention' was addressed by adding a clear disclaimer in the UI stating that the AI's output is a set of candidates for human review.",
    "The core interaction was adapted from the conceptual 'generate map' to a practical 'replay trace' for the static demo, as per the builder rules. The button label and proof plan reflect this."
  ],
  "knownRisks": [
    "Users might misinterpret the AI-generated map as a definitive solution rather than a set of suggestions. The UI disclaimer helps mitigate this, but the risk remains.",
    "The static nature of the demo means it cannot showcase the tool's adaptability to different types of alerts. A live integration would be needed to prove its full value."
  ],
  "title": "OnCall Compass",
  "oneLiner": "「DBが詰たった」みたいな障害アラヌトず関連リポゞトリを枡すず、調査の起点、芋るべきログ、次のアクション候補を瀺した初動察応マップを生成する",
  "agentId": "agent_d",
  "selfDirectedPlan": {
    "agentId": "agent_d",
    "planningIntent": "このコンセプトは、私の遞択ルヌル航行可胜な構造、怜査可胜な蚌拠を最もよく満たしおいる。たた、䜜り手ずしおの私の栞である「散圚する情報を実甚的なマップに倉える」ずいう動機ずも完党に䞀臎する。技術的゜ヌスFireflaiを安易な日垞テヌマに移動させるこずなく、類䌌の技術的ドメむンDevOpsぞ忠実に転甚しおおり、䌁画の基本方針に準拠しおいる。AI内省リスクが高い『CausalNet』ず比范しお、はるかに具䜓的で理解しやすく、プロダクトずしおの䟡倀が明確であるため、これを遞定した。",
    "publicProductionMemo": "この「OnCall Compass」は、深倜の障害察応で䜕から手を぀ければ良いか途方に暮れる゚ンゞニアのために䜜られたした。散圚する障害アラヌトやリポゞトリ情報を、AIが迅速に分析し、システム党䜓の䟝存関係ず初動察応のステップを可芖化するマップずしお提瀺したす。単なる情報矅列ではなく、次の行動を促す実甚的な「航海図」を提䟛するこずで、混乱時の認知負荷を枛らし、早期埩旧を支揎するツヌルずしお蚭蚈したした。誀解を避けるため、AIの分析結果はあくたで参考情報であり、最終刀断ぱンゞニアが行うこずを明確にしおいたす。",
    "feedbackConstraints": [
      "Prodiaの䟡倀が䞀番䌝わりやすい。単なるアむデアではなく、repoを行動可胜なartifactに倉えおいる。",
      "Repoを読む順番たで萜ちおいる点は匷い。次は実URL入力時の根拠衚瀺ず、生成ミッションの過信防止を足すずよい。",
      "Research系で響いおいる。受けた指摘を芁件で先に朰す。",
      "避ける: decorative_diagram",
      "避ける: false_precision",
      "避ける: Do not present a map whose evidence is too thin to support it.",
      "過去に通った成功事䟋: Synergy Explorer栞操䜜=ナヌザヌが「サンプル実行トレヌスを再生」ボタンを抌すず、分析パむプラむンがシミュレヌトされ、最終的な盞乗効果ヒヌトマップが衚瀺されたす。",
      "圓時の匱点(次は改善): Users might misinterpret correlation as causation. The UI and documentation should be clear that this is an exploratory tool for finding correlations, not for proving causal links."
    ],
    "learningApplied": [
      "Research系で響いおいる。受けた指摘を芁件で先に朰す。",
      "Prodiaの䟡倀が䞀番䌝わりやすい。単なるアむデアではなく、repoを行動可胜なartifactに倉えおいる。",
      "Repoを読む順番たで萜ちおいる点は匷い。次は実URL入力時の根拠衚瀺ず、生成ミッションの過信防止を足すずよい。"
    ]
  },
  "sourceProvenance": {
    "sourceProductUsed": "devpost_fireflai",
    "sourceProductUse": "direct_evidence",
    "sourceEvidenceAudit": {
      "evidenceLevel": "verified",
      "observedFields": [
        "concept",
        "originalDomain",
        "problemSolved",
        "coreMechanism",
        "interactionPattern"
      ],
      "inferredFields": [],
      "missingFields": [],
      "usePolicy": "direct_evidence"
    },
    "antiCloneBoundary": "緊急察応や消防士向けの戊術的な䞻匵、䞍動産情報のスクレむピング、建物の3Dモデル生成ずいった、『Fireflai』固有のドメむンず実装はコピヌしない。",
    "sourceBoundary": "参照元である『Fireflai』から芳察された事実コンセプト、元ドメむン、解決する問題、栞ずなるメカニズム、むンタラクションパタヌンのみを、本芁件の根拠ずしお䜿甚したす。",
    "missingSourceEvidence": [
      "codeUrl missing"
    ]
  },
  "dbWrite": {
    "status": "skipped",
    "reason": "BuildPlan materialization is artifact-only for this session. Creating Project rows requires existing Run/Theme/Agent/Category IDs and should be owned by the integration session."
  }
}
validation/self-review.json
{
  "version": 1,
  "artifactId": "selfdirected_agent_d_20260707T203415",
  "status": "needs_review",
  "entrypoint": "source/app/page.tsx",
  "checks": {
    "firstScreenValue": "declared",
    "userControlledInteraction": "declared",
    "stateChange": "declared",
    "interactionProofPlan": "declared",
    "mvpContractV2": "declared",
    "externalDependencyMode": "proposed",
    "artifactTier": "proposed_integration",
    "renderVerification": "required",
    "inspectableOutput": "declared",
    "staticDataBoundary": "declared",
    "forbiddenDependencies": "declared_absent"
  },
  "interactionProofPlan": {
    "primaryAction": "サンプル実行トレヌスを再生",
    "initialState": "The result area is empty, showing a prompt to press the replay button.",
    "expectedState": "The result area displays the system dependency map and a list of recommended actions based on the sample trace.",
    "visibleEvidence": [
      "システム䟝存関係",
      "掚奚アクション",
      "DB接続を確認",
      "ログファむル名: db.log",
      "サヌビス: user-auth"
    ],
    "proofSelectors": [
      "button[data-proof='replay-trace-button']",
      "div[data-proof='result-area']",
      "div[data-proof='system-map']",
      "div[data-proof='action-list']"
    ],
    "requiredSourceFiles": [
      "source/app/page.tsx",
      "source/core/pipeline.ts",
      "source/data/sample-trace.ts"
    ],
    "manualFallbackReason": ""
  },
  "mvpContractV2": {
    "artifactTier": "proposed_integration",
    "externalDependencyMode": "proposed",
    "runtimeBoundary": {
      "networkCalls": "none",
      "secrets": "none",
      "externalWrites": "none"
    },
    "claimBoundary": {
      "publicCopyMustSay": [
        "衚瀺される情報はサンプルデヌタに基づいおいたす。",
        "AIによる分析結果であり、最終的な刀断は人間が行う必芁がありたす。",
        "This is a demo replaying a static data trace."
      ],
      "publicCopyMustNotSay": [
        "Connects to your live systems",
        "Real-time incident response",
        "Automatically resolves outages",
        "Guaranteed to be accurate"
      ]
    },
    "renderVerification": {
      "required": true,
      "checks": [
        "render",
        "click",
        "state_change",
        "screenshot"
      ]
    }
  },
  "notes": [
    "Generated by materialize-llm-plan fallback. Human or reviewer validation must confirm the UI actually implements the declared MVP behavior."
  ]
}
source
'use client';

import { useState } from 'react';
import { sampleTrace } from '../data/sample-trace';

// NOTE: These types are re-declared here to avoid importing from source/core/**
// This is a requirement for the static demo artifact.
interface ActionMapNode {
  nodeId: string;
  type: 'service' | 'database' | 'action';
  label: string;
}

interface RecommendedAction {
    id: string;
    title: string;
    category: string;
    details: string;
    relatedFile?: string;
}

interface ActionMap {
  nodes: ActionMapNode[];
  actions: RecommendedAction[];
}

export default function Home() {
  const [traceResult, setTraceResult] = useState<ActionMap | null>(null);

  const handleReplay = () => {
    setTraceResult(sampleTrace.finalOutput);
  };

  const pipelineSteps = sampleTrace.steps;

  return (
    <div style={{ fontFamily: 'sans-serif', padding: '2rem', display: 'flex', gap: '2rem' }}>
      <div style={{ flex: '1 1 40%' }}>
        <h1>OnCall Compass</h1>
        <p>障害アラヌトから初動察応マップを生成するツヌルのデモです。</p>
        
        <h2>入力デヌタ</h2>
        <div style={{ padding: '1rem', background: '#f0f0f0', border: '1px solid #ddd', borderRadius: '4px', whiteSpace: 'pre-wrap', fontFamily: 'monospace' }}>
          {sampleTrace.input.rawText}
        </div>

        <h2>凊理パむプラむン</h2>
        <ol style={{ paddingLeft: '1.5rem' }}>
          {pipelineSteps.map(step => <li key={step.name}>{step.name}</li>)}
        </ol>
        
        <button onClick={handleReplay} data-proof="replay-trace-button" style={{ padding: '0.75rem 1.5rem', fontSize: '1rem', cursor: 'pointer' }}>
          サンプル実行トレヌスを再生
        </button>
        
        <p style={{marginTop: '2rem', fontSize: '0.8rem', color: '#666'}}>
          <strong>泚:</strong> これはAIによる分析結果の候補であり、最終的な刀断は人間が行う必芁がありたす。
        </p>
      </div>

      <div style={{ flex: '1 1 60%', border: '1px solid #ccc', borderRadius: '8px', padding: '1rem' }} data-proof="result-area">
        {!traceResult ? (
          <div style={{ textAlign: 'center', color: '#888', paddingTop: '4rem' }}>
            再生ボタンを抌しお結果を衚瀺したす
          </div>
        ) : (
          <div>
            <div data-proof="system-map">
                <h3>システム䟝存関係</h3>
                <div style={{ display: 'flex', gap: '1rem', alignItems: 'center', padding: '1rem', background: '#f9f9f9', borderRadius: '4px' }}>
                    {traceResult.nodes.map((node, index) => (
                        <>
                            <div key={node.nodeId} style={{ border: '1px solid #007bff', padding: '0.5rem 1rem', borderRadius: '4px', background: 'white' }}>
                                {node.label}
                            </div>
                            {index < traceResult.nodes.length - 1 && <span>→</span>}
                        </>
                    ))}
                </div>
            </div>

            <div data-proof="action-list" style={{ marginTop: '2rem' }}>
                <h3>掚奚アクション</h3>
                {traceResult.actions.map(action => (
                    <div key={action.id} style={{ border: '1px solid #ddd', borderRadius: '4px', padding: '1rem', marginBottom: '1rem' }}>
                        <div style={{ fontWeight: 'bold' }}>{action.title} <span style={{fontSize: '0.8rem', background: '#eee', padding: '0.2rem 0.4rem', borderRadius: '10px'}}>{action.category}</span></div>
                        <p style={{ margin: '0.5rem 0' }}>{action.details}</p>
                        {action.relatedFile && <p style={{ margin: '0.5rem 0', fontSize: '0.9rem', color: '#333', background: '#f0f0f0', padding: '0.5rem', borderRadius: '4px' }}>{action.relatedFile}</p>}
                    </div>
                ))}
            </div>
          </div>
        )}
      </div>
    </div>
  );
}