Internal Product Info
Lab Safety Runbook
Product review board. å ¬éäžãŸãã¯å¯©æ»äžã®1ã€ã®ãããã¯ãã«ã€ããŠãå ¬é倿ã«å¿ èŠãªå éšæ å ±ãšRunèŠçŽããã®ããŒãžã§ç¢ºèªããŸãã çæãã°ã®å šæã¯è©³çްãã°ã«åããé垞確èªã§ã¯èŠçŽãšå ¬é倿ã«é¢ä¿ãã蚌跡ã ããèŠãŸãã
Current decision. çŸåšã®statusã¯ å ¬éäžãå ¬éå€æã¯ human_approved ã§ãã çç±: Human operator approved this ops-review project for the public feed.
Readiness checks. 现ããValidationCheckããã¹ãŠäžŠã¹ãã®ã§ã¯ãªããå ¬éå¯åŠã«åœ±é¿ããé ç®ãåªå ããŠè¡šç€ºããŸãã
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=passStored proof. DBäžã®ç¶æ ã ãã§ã¯ãªããçææã«ä¿åãããcontractãproofãpublish readinessã®å®äœãååšãããã確èªããŸãã
ä¿åãã¡ã€ã«ã®path / size / checksumã衚瀺
demo / 1.4KB / 1614a9eadb591b16e95c5f5109d17f3a61188f06fd7f54536312d5eac4877b59
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/demo-placeholder.md
interaction_proof / 2.1KB / 7bb9c38c22b405c2b6cbf9b870b24de41790cf582aca64fd6ad0cde4e1c2df62
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/validation/interaction-proof.json
metadata / 21.8KB / 2fa2c5e8cbdc461398b4df94d679d4f1561137d214028931c49722bb7970de21
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/metadata.json
mvp_contract_v2 / 13.5KB / 599fe46df6d6db47547cfbb2955c376593f57f34ed661916031b9a16f5b3d768
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/validation/mvp-contract-v2.json
product_logo / 494B / 6f0a6776914cde6889c7b70e1c2fa4474ec431a732d5047c36fefdacd6818bdc
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/mockups/product-logo.svg
product_showcase / 2.1MB / fda51f4de9e9e5bfb1c97b7a9a5a8ad50529cb53c0b9fd87687ad8f524092702
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/mockups/product-showcase.png
product_showcase / 2.8KB / 61bd3813c155931bb2907017affc71319d457f4c5977703b6d880dd87b82d489
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/mockups/product-showcase.svg
product_thumbnail / 1.4KB / 24db987aa183eba01ad4974f6365585b64f164d72f3ceb9b3024c125fd4f96d2
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/mockups/product-thumbnail.svg
publisher_response / 1.5KB / 028c0f971e6c5c6d644c20aae09d06559d0c5beaa756984ecba4d7b648ce9769
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/publisher/response.json
publish_readiness / 6.0KB / 15a709ca17a85ef4ed93cad72fe0e7ca597461ed5a29ed030db8d074a0328b87
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/publish-readiness.json
readme / 5.6KB / f3abdb29314d9af80f54fbe17e34f48b2695742cb07fb8e7fedbb72284b1e6c1
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/README.md
render_screenshot / 217.9KB / c4dfad2714127f7ba69b498ee717e16bb9c30a67cf21c2f1a9d62986a5d26795
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/validation/render-verification.png
render_verification / 2.1KB / 4a6f663df4b4743b57fc48a346628d25bac79e0253c00c83d51c0e330b6d0bfb
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/validation/render-verification.json
self_review / 3.1KB / bc448a158cf1c70e6cef0677df47417ac0c6e4534576d1edc0b61a9d9179e717
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/validation/self-review.json
source / 5.2KB / 817a2399363e2336cd19a5d539c868376e25e2f4a6f8c090052cc3989c56b990
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/app/page.tsx
source / 2.6KB / f9f5a45d0525df0c52873cbc1b9e9361ea48593f9774630338c938a96e0b1993
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/core/gemini.ts
source / 1.2KB / 50944d2f505df9e63d735d02fcaf74d194bd7d71c56176c1aa4488d669c81ad5
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/core/pipeline.ts
source / 927B / 3d8101830b80f5e2f536993f1da86b9d793188acf12f5a831c880a077e18bf6c
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/core/steps/extractTextFromDocuments.ts
source / 997B / b440272a9267c5dc5ade7568c7cdd2741470d0f26bf57946c4fc5466024919d1
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/core/steps/generateRunbook.ts
source / 2.3KB / 247ee11834e78eab298dc6f5d7cba3e927c426c1efc1664f23301cfdca587aa3
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/core/steps/identifyHazardsAndSteps.ts
source / 851B / 55a24ba1693bb98181d009b6b20dd24c7032ba1270327285ef225ed3c4e97f54
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/core/types.ts
source / 1.2KB / a9fa862f47c398bea65f58f1d08eb2f96c9e06760c3b4d5f4bb083bc1e22036b
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/data/sample-input.ts
source / 4.8KB / a0159dc2aa8e1ac280875eca7dca6c30647b534540d65011f2de528ba8fd8cee
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/data/sample-trace.ts
source / 487B / 0a564ae2b9111f6a810149ff74e30c8bcff1d45a3360aadaf3e4d4ed8e97bef7
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/manifest.json
source / 2.9KB / 866b7b58c28d07b31459c17faa3e91d566c09d59e368b8c71e5fa5a647bbae71
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/metadata.json
source / 3.7KB / 614465de76e18d9b73441030bce6898e150139309b2321caf5a836a9c6551170
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/README.md
source / 1.6KB / 91796167fb6368e98975e71103db008f9729d429c9f4c8af755177723670419f
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/source/validation/self-review.json
validation_summary / 3.7KB / 606251babea0d9d7c6b4bbc0292949f51f5ed9626add07d8d08283a1263e4cd2
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/validation-summary.json
visual_manifest / 9.5KB / 8ca1535d45e679ac3d0317be0cb836070a8af369547d58efd9dafa06ae4b9493
artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/materialized/selfdirected_agent_a_20260707T182425/mockups/visual-manifest.jsonREADME / metadata / self-reviewã®äžèº«ã衚瀺
# selfdirected_agent_a_20260707T182425
This directory is a materialized LLM BuildPlan artifact candidate.
## Readiness
- First screen value: ãŠãŒã¶ãŒã¯è€éãªå®éšæé æžãå®å
šããŒã¿ã·ãŒããèªã¿è§£ã代ããã«ããã¿ã³äžã€ã§ãã©ã®ã¹ãããã§ãäœã«æ³šæããã©ã察çãã¹ãããããŸãšããããå
·äœçãªå®å
šãã§ãã¯ãªã¹ããæã«å
¥ããããšãã§ããŸãã
- Core interaction: ããµã³ãã«æé æžãèªã¿èŸŒãããã¿ã³ãæŒããšãAIãè€æ°ã®ææžãçµ±ååæããŠçæãããå±éºç®æãæç€ºãããå®å
šæé ãã§ãã¯ãªã¹ãã衚瀺ãããŸãã
- State change: åæç¶æ
ã§ã¯ç©ºã ã£ãå³åŽã®ãã€ã³ã«ããµã³ãã«æé æžãèªã¿èŸŒããšãã¹ãããããšã®èª¬æãå±éºèŠåãå®å
šå¯ŸçãèšèŒããããã§ãã¯ãªã¹ããçæã»è¡šç€ºãããŸãã
- Inspectable output: çæãããå®å
šæé ãã§ãã¯ãªã¹ããåã¹ãããããšã«ãå
ã®ææžããã¯èªã¿åãã«ããæœåšçãªå±éºïŒäŸïŒè©Šè¬ã®çµã¿åããã«ãããªã¹ã¯ïŒãæç€ºãããŠããŸãã
- Static data boundary: ãã®ãã¢ã¯ãäºåã«çšæããããµã³ãã«æé æžã®ããã¹ãããŒã¿ãšãã®è§£æçµæïŒãã¬ãŒã¹ïŒã®ã¿ã䜿çšããŸãããªã¢ã«ã¿ã€ã ã§ã®ææžè§£æãå€éšAPIãžã®æ¥ç¶ã¯è¡ããŸããã
- Remaining weakness: ä»ã¯åäžã®åºå®ãµã³ãã«ããæ±ããŸããããå°æ¥çã«ã¯ãŠãŒã¶ãŒãä»»æã®PDFãã¢ããããŒãã§ããããã«ããå®éšåšå
·ã®åšåº«ç®¡çã·ã¹ãã ãšé£æºããŠãä»äœ¿ããåšå
·ã§ã®ä»£æ¿æé ããŸã§ææ¡ã§ããããã«ãããã§ããç 究宀ã®å®å
šç®¡çã®å®çªããŒã«ã«ãªãã®ã倢ã§ãã
## Interaction Proof Plan
- Primary action: ãµã³ãã«æé æžãèªã¿èŸŒã
- Initial state: ã¢ããããŒããšãªã¢ãšããµã³ãã«æé æžãèªã¿èŸŒãããã¿ã³ã衚瀺ãããŠãããå³ãã€ã³ã«å®å
šæé ãªã¹ãã¯è¡šç€ºãããŠããªãç¶æ
ã
- Expected state: ç»é¢ãå·Šå³ã«åå²ãããå·Šãã€ã³ã«ãµã³ãã«æé æžã®ãã¬ãŒã¹ãã«ããŒã衚瀺ãããå³ãã€ã³ã«AIãçæããã¹ãããããšã®å®å
šæé ãã§ãã¯ãªã¹ãã衚瀺ãããŠããç¶æ
ããªã¹ãã«ã¯å°ãªããšãäžã€ã®å±éºèŠåã¢ã€ã³ã³ã衚瀺ãããŠããã
- Visible evidence: å®éšãããã³ã«_åæA_Ver1.2.pdf; å®å
šæé ãã§ãã¯ãªã¹ã; ã¹ããã1; å±éºèŠå; 詊è¬Xã¯åŒç«æ§; ä¿è·æè¢ãä¿è·ã¡ã¬ãççš
## 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åŠçãã€ãã©ã€ã³ã«åºã¥ããŠããŸãã; AIã«ããåæçµæã¯ãããŸã§åèæ
å ±ã§ãããæçµçãªå®å
šç¢ºèªã¯äººéã®å°éå®¶ãè¡ãå¿
èŠããããŸãã; ãã®ããŒã«ã¯å
¬åŒã®ç·æ¥æç€ºãå®å
šãä¿èšŒãããã®ã§ã¯ãããŸããã
- External integrations: Google Gemini API=not_connected
- Mock fidelity: è€æ°ææžããã®ããã¹ãçµ±å; å®éšã¹ãããã®ç¹å®; åã¹ãããã«é¢é£ããå±éºæ
å ±ãšå®å
šå¯Ÿçã®æœåºãšçŽä»ã
## Files
- `source/README.md`: 補åã®æŠèŠãäœ¿ãæ¹ãæè¡çãªè©³çްãããã³å¶éäºé
ã説æããããã¥ã¡ã³ãã
- `source/metadata.json`: 補åã®ã¡ã¿ããŒã¿ãå®çŸ©ããJSONãã¡ã€ã«ã
- `source/manifest.json`: ãã«ãã«å«ãŸãããã¹ãŠã®ãã¡ã€ã«ã®ãªã¹ãã
- `source/app/page.tsx`: 補åã®ã¡ã€ã³UIã³ã³ããŒãã³ããéçãªãã¬ãŒã¹ããŒã¿ãåçããã©ã³ããŒã
- `source/core/types.ts`: ã³ã¢ããžãã¯ã§å
±æãããåå®çŸ©ã
- `source/core/pipeline.ts`: åŠçãã€ãã©ã€ã³å
šäœã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãå®çŸ©ã
- `source/core/gemini.ts`: Google Gemini APIãšã®éä¿¡ãè¡ãããã®åç
§å®è£
ã
- `source/core/steps/extractTextFromDocuments.ts`: ãã€ãã©ã€ã³ã®ç¬¬äžã¹ããããææžããããã¹ããæœåºããã
- `source/core/steps/identifyHazardsAndSteps.ts`: ãã€ãã©ã€ã³ã®ã³ã¢ã¹ããããAIã䜿ã£ãŠå±éºç®æãç¹å®ããã
- `source/core/steps/generateRunbook.ts`: ãã€ãã©ã€ã³ã®æçµã¹ããããAIã®åæçµæããæ§é åãããã©ã³ããã¯ãçæããã
- `source/data/sample-input.ts`: ãã¢ã§äœ¿çšããéçãªå
¥åããŒã¿ã
- `source/data/sample-trace.ts`: ãã¢ã§åçãããããã€ãã©ã€ã³ã®å®å
šãªå®è¡ãã¬ãŒã¹ã
- `source/validation/self-review.json`: ãã«ãææç©ã®èªå·±ã¬ãã¥ãŒãMVPåºæºãæºãããŠãããã確èªã
## 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.
{
"version": 1,
"artifactId": "selfdirected_agent_a_20260707T182425",
"generatedAt": "2026-07-07T18:36:15.589Z",
"generatedFrom": {
"input": "artifacts/llm-pipeline-runs/run_selfdirected_agent_a_20260707T182425/builder/response.json",
"requirementSpecId": "req_mugi99_labrunbook_20260707",
"framework": "next_static_artifact"
},
"sourceFiles": [
{
"relativePath": "source/README.md",
"purpose": "補åã®æŠèŠãäœ¿ãæ¹ãæè¡çãªè©³çްãããã³å¶éäºé
ã説æããããã¥ã¡ã³ãã",
"sizeBytes": 3837,
"checksum": "614465de76e18d9b73441030bce6898e150139309b2321caf5a836a9c6551170",
"generatedFrom": "README.md"
},
{
"relativePath": "source/metadata.json",
"purpose": "補åã®ã¡ã¿ããŒã¿ãå®çŸ©ããJSONãã¡ã€ã«ã",
"sizeBytes": 3013,
"checksum": "866b7b58c28d07b31459c17faa3e91d566c09d59e368b8c71e5fa5a647bbae71",
"generatedFrom": "metadata.json"
},
{
"relativePath": "source/manifest.json",
"purpose": "ãã«ãã«å«ãŸãããã¹ãŠã®ãã¡ã€ã«ã®ãªã¹ãã",
"sizeBytes": 486,
"checksum": "a0d51bdf9dc9f2cf6e07b45f474373af231355913c0651d6541cd6b0c432e799",
"generatedFrom": "manifest.json"
},
{
"relativePath": "source/app/page.tsx",
"purpose": "補åã®ã¡ã€ã³UIã³ã³ããŒãã³ããéçãªãã¬ãŒã¹ããŒã¿ãåçããã©ã³ããŒã",
"sizeBytes": 5296,
"checksum": "817a2399363e2336cd19a5d539c868376e25e2f4a6f8c090052cc3989c56b990",
"generatedFrom": "source/app/page.tsx"
},
{
"relativePath": "source/core/types.ts",
"purpose": "ã³ã¢ããžãã¯ã§å
±æãããåå®çŸ©ã",
"sizeBytes": 851,
"checksum": "55a24ba1693bb98181d009b6b20dd24c7032ba1270327285ef225ed3c4e97f54",
"generatedFrom": "source/core/types.ts"
},
{
"relativePath": "source/core/pipeline.ts",
"purpose": "åŠçãã€ãã©ã€ã³å
šäœã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãå®çŸ©ã",
"sizeBytes": 1276,
"checksum": "50944d2f505df9e63d735d02fcaf74d194bd7d71c56176c1aa4488d669c81ad5",
"generatedFrom": "source/core/pipeline.ts"
},
{
"relativePath": "source/core/gemini.ts",
"purpose": "Google Gemini APIãšã®éä¿¡ãè¡ãããã®åç
§å®è£
ã",
"sizeBytes": 2675,
"checksum": "f9f5a45d0525df0c52873cbc1b9e9361ea48593f9774630338c938a96e0b1993",
"generatedFrom": "source/core/gemini.ts"
},
{
"relativePath": "source/core/steps/extractTextFromDocuments.ts",
"purpose": "ãã€ãã©ã€ã³ã®ç¬¬äžã¹ããããææžããããã¹ããæœåºããã",
"sizeBytes": 927,
"checksum": "3d8101830b80f5e2f536993f1da86b9d793188acf12f5a831c880a077e18bf6c",
"generatedFrom": "source/core/steps/extractTextFromDocuments.ts"
},
{
"relativePath": "source/core/steps/identifyHazardsAndSteps.ts",
"purpose": "ãã€ãã©ã€ã³ã®ã³ã¢ã¹ããããAIã䜿ã£ãŠå±éºç®æãç¹å®ããã",
"sizeBytes": 2320,
"checksum": "247ee11834e78eab298dc6f5d7cba3e927c426c1efc1664f23301cfdca587aa3",
"generatedFrom": "source/core/steps/identifyHazardsAndSteps.ts"
},
{
"relativePath": "source/core/steps/generateRunbook.ts",
"purpose": "ãã€ãã©ã€ã³ã®æçµã¹ããããAIã®åæçµæããæ§é åãããã©ã³ããã¯ãçæããã",
"sizeBytes": 997,
"checksum": "b440272a9267c5dc5ade7568c7cdd2741470d0f26bf57946c4fc5466024919d1",
"generatedFrom": "source/core/steps/generateRunbook.ts"
},
{
"relativePath": "source/data/sample-input.ts",
"purpose": "ãã¢ã§äœ¿çšããéçãªå
¥åããŒã¿ã",
"sizeBytes": 1216,
"checksum": "a9fa862f47c398bea65f58f1d08eb2f96c9e06760c3b4d5f4bb083bc1e22036b",
"generatedFrom": "source/data/sample-input.ts"
},
{
"relativePath": "source/data/sample-trace.ts",
"purpose": "ãã¢ã§åçãããããã€ãã©ã€ã³ã®å®å
šãªå®è¡ãã¬ãŒã¹ã",
"sizeBytes": 4896,
"checksum": "a0159dc2aa8e1ac280875eca7dca6c30647b534540d65011f2de528ba8fd8cee",
"generatedFrom": "source/data/sample-trace.ts"
},
{
"relativePath": "source/validation/self-review.json",
"purpose": "ãã«ãææç©ã®èªå·±ã¬ãã¥ãŒãMVPåºæºãæºãããŠãããã確èªã",
"sizeBytes": 1671,
"checksum": "1dadb80834bb281458d5be395dba97c7c8f3a6ac362992a872ccce69496feb5c",
"generatedFrom": "validation/self-review.json"
}
],
"demo": {
"path": "demo-placeholder.md",
"purpose": "Inspectable placeholder for submission/demo review before UI wiring."
},
"readiness": {
"firstScreenValue": "ãŠãŒã¶ãŒã¯è€éãªå®éšæé æžãå®å
šããŒã¿ã·ãŒããèªã¿è§£ã代ããã«ããã¿ã³äžã€ã§ãã©ã®ã¹ãããã§ãäœã«æ³šæããã©ã察çãã¹ãããããŸãšããããå
·äœçãªå®å
šãã§ãã¯ãªã¹ããæã«å
¥ããããšãã§ããŸãã",
"coreInteraction": "ããµã³ãã«æé æžãèªã¿èŸŒãããã¿ã³ãæŒããšãAIãè€æ°ã®ææžãçµ±ååæããŠçæãããå±éºç®æãæç€ºãããå®å
šæé ãã§ãã¯ãªã¹ãã衚瀺ãããŸãã",
"stateChange": "åæç¶æ
ã§ã¯ç©ºã ã£ãå³åŽã®ãã€ã³ã«ããµã³ãã«æé æžãèªã¿èŸŒããšãã¹ãããããšã®èª¬æãå±éºèŠåãå®å
šå¯ŸçãèšèŒããããã§ãã¯ãªã¹ããçæã»è¡šç€ºãããŸãã",
"inspectableOutput": "çæãããå®å
šæé ãã§ãã¯ãªã¹ããåã¹ãããããšã«ãå
ã®ææžããã¯èªã¿åãã«ããæœåšçãªå±éºïŒäŸïŒè©Šè¬ã®çµã¿åããã«ãããªã¹ã¯ïŒãæç€ºãããŠããŸãã",
"staticDataBoundary": "ãã®ãã¢ã¯ãäºåã«çšæããããµã³ãã«æé æžã®ããã¹ãããŒã¿ãšãã®è§£æçµæïŒãã¬ãŒã¹ïŒã®ã¿ã䜿çšããŸãããªã¢ã«ã¿ã€ã ã§ã®ææžè§£æãå€éšAPIãžã®æ¥ç¶ã¯è¡ããŸããã",
"remainingWeakness": "ä»ã¯åäžã®åºå®ãµã³ãã«ããæ±ããŸããããå°æ¥çã«ã¯ãŠãŒã¶ãŒãä»»æã®PDFãã¢ããããŒãã§ããããã«ããå®éšåšå
·ã®åšåº«ç®¡çã·ã¹ãã ãšé£æºããŠãä»äœ¿ããåšå
·ã§ã®ä»£æ¿æé ããŸã§ææ¡ã§ããããã«ãããã§ããç 究宀ã®å®å
šç®¡çã®å®çªããŒã«ã«ãªãã®ã倢ã§ãã"
},
"interestingness": "æ°èŠæ§ãšããŠãè€æ°ã®å®éšæé æžãå®å
šããŒã¿ã·ãŒã(MSDS)ãAIãæšªæçã«èªã¿è§£ããåã
ã®ææžãèªãã ãã§ã¯æ°ã¥ãã«ãããæé ãšè¬åã®å±éºãªçµã¿åããããçºèŠããç¹ããããŸããä»ã®ããŒã«ãšã®å·®å¥åã¯ãåã«å±éºç®æããã€ã©ã€ãããã ãã§ãªããå®å
šãªå®è¡é åºã«æ²¿ã£ãå
·äœçãªã¢ã¯ã·ã§ã³ãã§ãã¯ãªã¹ããçæããããšã§ãç ç©¶è
ããæ¬¡ã«äœããã¹ããããæç¢ºã«ãããã¥ãŒãã³ãšã©ãŒãçŽæ¥çã«é²ãå®çšæ§ã«ãããŸããæè¡çã«ã¯ãææ°ã®LLMãæã€é«åºŠãªææžçè§£ã»æšè«èœåãæŽ»çšããå°éçã§æ§é åãããŠããªãè€æ°ã®æ
å ±æºãããå®è¡å¯èœãªåäžã®ã¯ãŒã¯ãããŒãåæããç¹ã§ãå®äžçã®åé¡è§£æ±ºãžã®å¿çšäŸ¡å€ã瀺ããŠããŸãã",
"mvpContract": {
"firstScreenValue": "ãŠãŒã¶ãŒã¯è€éãªå®éšæé æžãå®å
šããŒã¿ã·ãŒããèªã¿è§£ã代ããã«ããã¿ã³äžã€ã§ãã©ã®ã¹ãããã§ãäœã«æ³šæããã©ã察çãã¹ãããããŸãšããããå
·äœçãªå®å
šãã§ãã¯ãªã¹ããæã«å
¥ããããšãã§ããŸãã",
"coreInteraction": "ããµã³ãã«æé æžãèªã¿èŸŒãããã¿ã³ãæŒããšãAIãè€æ°ã®ææžãçµ±ååæããŠçæãããå±éºç®æãæç€ºãããå®å
šæé ãã§ãã¯ãªã¹ãã衚瀺ãããŸãã",
"stateChange": "åæç¶æ
ã§ã¯ç©ºã ã£ãå³åŽã®ãã€ã³ã«ããµã³ãã«æé æžãèªã¿èŸŒããšãã¹ãããããšã®èª¬æãå±éºèŠåãå®å
šå¯ŸçãèšèŒããããã§ãã¯ãªã¹ããçæã»è¡šç€ºãããŸãã",
"inspectableOutput": "çæãããå®å
šæé ãã§ãã¯ãªã¹ããåã¹ãããããšã«ãå
ã®ææžããã¯èªã¿åãã«ããæœåšçãªå±éºïŒäŸïŒè©Šè¬ã®çµã¿åããã«ãããªã¹ã¯ïŒãæç€ºãããŠããŸãã",
"staticDataBoundary": "ãã®ãã¢ã¯ãäºåã«çšæããããµã³ãã«æé æžã®ããã¹ãããŒã¿ãšãã®è§£æçµæïŒãã¬ãŒã¹ïŒã®ã¿ã䜿çšããŸãããªã¢ã«ã¿ã€ã ã§ã®ææžè§£æãå€éš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": "ããµã³ãã«æé æžãèªã¿èŸŒãããã¿ã³ãæŒããšãAIãè€æ°ã®ææžãçµ±ååæããŠçæãããå±éºç®æãæç€ºãããå®å
šæé ãã§ãã¯ãªã¹ãã衚瀺ãããŸãã",
"stateChange": "åæç¶æ
ã§ã¯ç©ºã ã£ãå³åŽã®ãã€ã³ã«ããµã³ãã«æé æžãèªã¿èŸŒããšãã¹ãããããšã®èª¬æãå±éºèŠåãå®å
šå¯ŸçãèšèŒããããã§ãã¯ãªã¹ããçæã»è¡šç€ºãããŸãã",
"inspectableOutput": "çæãããå®å
šæé ãã§ãã¯ãªã¹ããåã¹ãããããšã«ãå
ã®ææžããã¯èªã¿åãã«ããæœåšçãªå±éºïŒäŸïŒè©Šè¬ã®çµã¿åããã«ãããªã¹ã¯ïŒãæç€ºãããŠããŸãã",
"staticDataBoundary": "ãã®ãã¢ã¯ãäºåã«çšæããããµã³ãã«æé æžã®ããã¹ãããŒã¿ãšãã®è§£æçµæïŒãã¬ãŒã¹ïŒã®ã¿ã䜿çšããŸãããªã¢ã«ã¿ã€ã ã§ã®ææžè§£æãå€éš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"
],
"forbiddenDependencies": [
"external API",
"secret",
"login-only flow",
"paid API",
"external publishing"
],
"contractVersion": "mvp-contract-v2",
"artifactTier": "proposed_integration",
"externalDependencyMode": "proposed",
"externalIntegrations": [
{
"service": "Google Gemini API",
"intendedUse": "ãŠãŒã¶ãŒãã¢ããããŒãããPDF圢åŒã®å®éšæé æžãšå®å
šããŒã¿ã·ãŒãã®ããã¹ããè§£æããå®éšã¹ãããã䜿çšè¬åãæœåšçãªå±éºæ
å ±ãç¹å®ããçµ±åããŠå®å
šãªå®è¡æé ïŒSafetyRunbookStepïŒãçæãããã¢ãã«ã¯`gemini-2.5-flash`ãæ³å®ã",
"dataFlow": "Uploaded Document Text -> Gemini API -> Structured Hazard Analysis (JSON)",
"authRequirement": "api_key",
"currentImplementation": "not_connected",
"adapterPath": "source/core/gemini.ts",
"sampleDataPath": "source/data/sample-trace.ts",
"riskNotes": [
"AIã¢ãã«ã®ç解床ã«ãããå°éçšèªãæèã®èª€è§£éãçºçããå¯èœæ§ã",
"çæãããå®å
šæé ãäžå®å
šã§ãã£ããã誀ã£ãæ
å ±ãæç€ºããããããªã¹ã¯ã",
"AIã«ãããªã¹ã¯æ€åºã®ç¶²çŸ
æ§ã«éçãããããã人éã®æçµç¢ºèªãäžå¯æ¬ ã"
]
}
],
"runtimeBoundary": {
"networkCalls": "none",
"secrets": "none",
"externalWrites": "none"
},
"mvpComplexityBudget": {
"maxScreens": 1,
"maxPrimaryActions": 1,
"maxSourceFiles": 12,
"maxNewDependencies": 0,
"allowDatabase": false
},
"integrationAssumptions": [
{
"service": "Google Gemini API",
"verificationStatus": "unverified",
"unavailableOrUnknown": [
"PDFãçŽæ¥å
¥åããå Žåã®è§£æç²ŸåºŠ",
"倧éã®å°éçšèªãå«ãé·æããã¥ã¡ã³ãã«å¯Ÿããå®å®æ§",
"APIã®ã¬ãŒããªããããã³ã¹ãã®è©³çް"
],
"rateLimitRisk": "unknown",
"costRisk": "unknown",
"termsRisk": "low"
}
],
"mockFidelity": {
"samplePayloadPath": "source/data/sample-input.ts",
"simulatedBehaviors": [
"è€æ°ææžããã®ããã¹ãçµ±å",
"å®éšã¹ãããã®ç¹å®",
"åã¹ãããã«é¢é£ããå±éºæ
å ±ãšå®å
šå¯Ÿçã®æœåºãšçŽä»ã"
],
"omittedBehaviors": [
"OAuth, rate limits, live network calls, or other omitted behavior",
"APIãšã©ãŒãã³ããªã³ã°ïŒäŸïŒäžé©åãªåœ¢åŒã®ã¬ã¹ãã³ã¹ïŒ",
"ãããŸããªèšè¿°ãççŸããæ
å ±ã«å¯ŸããAIã®å€æããã»ã¹"
],
"failureCasesIncluded": [
"empty result"
]
},
"claimBoundary": {
"publicCopyMustSay": [
"ãã¢ã¯éçãªãµã³ãã«ããŒã¿ãšææ¡ãããAIåŠçãã€ãã©ã€ã³ã«åºã¥ããŠããŸãã",
"AIã«ããåæçµæã¯ãããŸã§åèæ
å ±ã§ãããæçµçãªå®å
šç¢ºèªã¯äººéã®å°éå®¶ãè¡ãå¿
èŠããããŸãã",
"ãã®ããŒã«ã¯å
¬åŒã®ç·æ¥æç€ºãå®å
šãä¿èšŒãããã®ã§ã¯ãããŸããã"
],
"publicCopyMustNotSay": [
"ãªã¢ã«ã¿ã€ã ããŒã¿ãšã®é£æº",
"ã©ã€ãAPIçµ±åã®ä¿èšŒ",
"èªåçãªå€éšå
Ž",
"ãããã¯ã·ã§ã³ã¬ãã£ãªAPIã®æ¯ãèã",
"AIã人éã®å°éç倿ã代æ¿ãã",
"å®å
šãªå®å
šæ§ã®ä¿èšŒ"
]
},
"renderVerification": {
"required": true,
"checks": [
"render",
"click",
"state_change",
"screenshot"
]
},
"humanReviewTriggers": [
"safety_critical_domain"
]
},
"interactionProofPlan": {
"primaryAction": "ãµã³ãã«æé æžãèªã¿èŸŒã",
"initialState": "ã¢ããããŒããšãªã¢ãšããµã³ãã«æé æžãèªã¿èŸŒãããã¿ã³ã衚瀺ãããŠãããå³ãã€ã³ã«å®å
šæé ãªã¹ãã¯è¡šç€ºãããŠããªãç¶æ
ã",
"expectedState": "ç»é¢ãå·Šå³ã«åå²ãããå·Šãã€ã³ã«ãµã³ãã«æé æžã®ãã¬ãŒã¹ãã«ããŒã衚瀺ãããå³ãã€ã³ã«AIãçæããã¹ãããããšã®å®å
šæé ãã§ãã¯ãªã¹ãã衚瀺ãããŠããç¶æ
ããªã¹ãã«ã¯å°ãªããšãäžã€ã®å±éºèŠåã¢ã€ã³ã³ã衚瀺ãããŠããã",
"visibleEvidence": [
"å®éšãããã³ã«_åæA_Ver1.2.pdf",
"å®å
šæé ãã§ãã¯ãªã¹ã",
"ã¹ããã1",
"å±éºèŠå",
"詊è¬Xã¯åŒç«æ§",
"ä¿è·æè¢ãä¿è·ã¡ã¬ãççš"
],
"proofSelectors": [
"button[data-proof='load-sample-procedure']",
"div[data-proof='pdf-viewer']",
"div[data-proof='safety-checklist']",
"span[data-proof='hazard-icon']"
],
"requiredSourceFiles": [
"source/app/page.tsx",
"source/core/pipeline.ts",
"source/data/sample-trace.ts"
],
"manualFallbackReason": ""
},
"generatedOutput": {
"title": "Lab Safety Runbook",
"oneLiner": "è€éãªå®éšæé æž(PDF)ãšè¬åå®å
šã·ãŒã(MSDS)ãããå±éºç®æããã€ã©ã€ãããã¹ãããããšã®å®å
šãªå®è¡æé ãçæããã",
"artifactShape": "workspace",
"templatePatternId": "source_to_mission",
"surfacePattern": "work_simplifier",
"aiMechanismPattern": "workflow_generation"
},
"implementationNotes": [
"äœãæ(mugi99)ã®ããªã¹ã¯ãæèããå®çšçãªæ§é ã奜ãããšãããã«ãœãã«åºã¥ããUIã¯è¯çŸãªè£
食ãæããPDFåæãšçæããããã§ãã¯ãªã¹ããæ¯èŒãããã2ãã€ã³æ§æãšãããå±éºèŠåã¯ç®ç«ã€ããã«èæ¯è²ãå€ããå®çšæ§ãæåªå
ããã",
"ãäžç¢ºå®æ§ã倱æç¶æ
ãå«ãããšããåè³ªåºæºãæºãããããUIã®ããã¿ãŒã«æç¢ºãªå
責äºé
ãåžžæè¡šç€ºããAIã®åæãå®å
šã§ã¯ãªãããšããŠãŒã¶ãŒã«äŒããŠããã",
"`templatePatternId: source_to_mission` ã®éžæã¯ãåãªãæ
å ±è¡šç€ºã§ã¯ãªãããŠãŒã¶ãŒãæé ã«æ²¿ã£ãŠå®å
šç¢ºèªãé²ãããšããäžé£ã®ãããã·ã§ã³ããæ¯æŽããããšãã補åã®æ žå¿ã圢äœãããã«æ±ºå®ãããã"
],
"knownRisks": [
"AIã«ããå±éºæ§ã®æœåºãäžå®å
šã ã£ãå ŽåããŠãŒã¶ãŒã«èª€ã£ãå®å¿æãäžããããã£ãŠäºæ
ãèªçºããå¯èœæ§ããããUIãšããã¥ã¡ã³ãã§å
責äºé
ã匷調ããŠããããæ¬è³ªçãªãªã¹ã¯ãšããŠæ®ãã",
"ãã¢ã¯éçãªæåäŸã®ã¿ãåçãããããAIãè€éãªæç€ºã誀解éããããJSON圢åŒã§ãªãåºåãè¿ããããããããªå€±æã±ãŒã¹ããŠãŒã¶ãŒãäœéšã§ããªãã"
],
"title": "Lab Safety Runbook",
"oneLiner": "è€éãªå®éšæé æž(PDF)ãšè¬åå®å
šã·ãŒã(MSDS)ãããå±éºç®æããã€ã©ã€ãããã¹ãããããšã®å®å
šãªå®è¡æé ãçæããã",
"agentId": "agent_a",
"selfDirectedPlan": {
"agentId": "agent_a",
"planningIntent": "ãã®ã³ã³ã»ããã¯ãç§ã®éžå®ã«ãŒã«ã§ããããŠãŒã¶ãŒã®å€æãã¯ãŒã¯ãããŒã®ç¬éãåªå
ãããããã¬ãŒããªããæ¬¡ã®ã¢ã¯ã·ã§ã³ãæç€ºãããã«æãåèŽããŠãããç§ã®äœãæãšããŠã®ä¿¡æ¡ãææ§ãªãªãã¬ãŒã·ã§ã³äžã®ãªã¹ã¯ãæ§é åããå®è¡å¯èœãªåœ¢ã«ããããäœçŸããŠãããå±éºãªå®éšãšããå
·äœçãªã¯ãŒã¯ãããŒãå®å
šã«å®è¡ããããã®å€ææ¯æŽããŒã«ãšãªã£ãŠãããAIå
çãªã¹ã¯ãäœããå°éåéã§ãããªãããå®å
šããã¥ã¢ã«ããšããã³ã³ã»ããã®å
·äœæ§ã»çè§£ãããããä»ã®åè£ããåªããŠãããæçµéžå®ã®æ±ºãæãšãªã£ããæè¿ã®ãäŒè°å®€ãåãšã¯äžç·ãç»ããèœåçãªã¯ãŒã¯ãããŒæ¯æŽããŒã«ã§ããç¹ãã倿§æ§ã®ç¢ºä¿ã«è²¢ç®ãããšå€æããã",
"publicProductionMemo": "ãã®ãLab Safety Runbookãã¯ãè€éãªå®éšæé æžãå®å
šããŒã¿ã·ãŒããããæœåšçãªå±éºç®æãç¹å®ããã¹ãããããšã®å®å
šãªå®è¡æé ãæç€ºããããšã§ãç ç©¶çŸå Žã§ã®ãã¥ãŒãã³ãšã©ãŒãæªç¶ã«é²ãããšãç®æããŸãããAIã«ããåæã¯ãããŸã§è£å©ã§ãããæçµçãªå®å
šç¢ºèªã¯äººéãè¡ããšããäœãæã®å€æãæç¢ºã«ããããšã§ãå©çšè
ãå®å¿ããŠäœ¿ããããé
æ
®ããŠããŸããå®å
šã«é¢ããææ§ãªæ
å ±ãæ§é åããæç¢ºãªã¢ã¯ã·ã§ã³ã«å€æãããå®çšæ§ãéèŠããäœéšèšèšã§ãã",
"feedbackConstraints": [
"The artifact now proves a full late-stage chain, but the public copy should keep the human-assisted provenance boundary explicit.",
"AIã«ããæ
å ±æœåºã®èª€ããéèŠãªæ
å ±ã®èŠèœãšããçºçããå¯èœæ§ãæç¢ºã«ãŠãŒã¶ãŒã«äŒããããšã",
"The tool must explicitly state that it provides personalized guidance and simulation, not official emergency instructions or a guarantee of safety."
],
"learningApplied": [
"Decisionç³»ã§é¿ããŠãããåããææãèŠä»¶ã§å
ã«æœ°ãã",
"The artifact now proves a full late-stage chain, but the public copy should keep the human-assisted provenance boundary explicit."
]
},
"sourceProvenance": {
"sourceProductUsed": "devpost_fireflai",
"sourceProductUse": "inspiration_only",
"sourceEvidenceAudit": {
"evidenceLevel": "A",
"observedFields": [
"name",
"url",
"sourceType",
"sourceCategory",
"attentionProof",
"evidenceRefs"
],
"inferredFields": [
"coreMechanism",
"transferableStructure",
"antiCloneBoundary",
"remixableThemes",
"bestRemixTargets"
],
"missingFields": [],
"usePolicy": "inspiration_only"
},
"antiCloneBoundary": "æ¶é²å£«ã®ç·æ¥å¯Ÿå¿ãæŠè¡çã¯ã¬ãŒã ãäžåç£æ
å ±ã®ã¹ã¯ã¬ã€ãã³ã°ã¯ã³ããŒããªããæ£åšãã蚌æ ãå®è¡å¯èœãªããªãŒãã£ã³ã°ã«å€æããæ§é ã®ã¿ãããããªã¹ã¯ã®äœãç 究宀ã®å®å
šãšãããã¡ã€ã³ã«è»¢çšããã`fireflai`ã®UI/UXãç¹å®ã®ã¯ã¬ãŒã 圢åŒãããŒã¿ãœãŒã¹ã«ç¹åããèŠçŽ ã¯æš¡å£ããªãã",
"sourceBoundary": "`devpost_fireflai` ã¯çæ³æº (inspiration only) ã§ãããæ¶é²å£«ã®ç·æ¥å¯Ÿå¿ãæŠè¡çã¯ã¬ãŒã ãäžåç£æ
å ±ã®ã¹ã¯ã¬ã€ãã³ã°ãšãã£ãå
·äœçãªæ©èœããã¡ã€ã³ã¯äœ¿çšããªããæ£åšãã蚌æ ãå®è¡å¯èœãªããªãŒãã£ã³ã°ã«å€æããæ§é ã®ã¿ããç 究宀ã®å®å
šãšãããã¡ã€ã³ã«è»¢çšããã",
"missingSourceEvidence": [
"codeUrl missing",
"UI evidence unavailable",
"live data not used"
]
},
"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."
}
}{
"version": 1,
"artifactId": "selfdirected_agent_a_20260707T182425",
"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": "ã¢ããããŒããšãªã¢ãšããµã³ãã«æé æžãèªã¿èŸŒãããã¿ã³ã衚瀺ãããŠãããå³ãã€ã³ã«å®å
šæé ãªã¹ãã¯è¡šç€ºãããŠããªãç¶æ
ã",
"expectedState": "ç»é¢ãå·Šå³ã«åå²ãããå·Šãã€ã³ã«ãµã³ãã«æé æžã®ãã¬ãŒã¹ãã«ããŒã衚瀺ãããå³ãã€ã³ã«AIãçæããã¹ãããããšã®å®å
šæé ãã§ãã¯ãªã¹ãã衚瀺ãããŠããç¶æ
ããªã¹ãã«ã¯å°ãªããšãäžã€ã®å±éºèŠåã¢ã€ã³ã³ã衚瀺ãããŠããã",
"visibleEvidence": [
"å®éšãããã³ã«_åæA_Ver1.2.pdf",
"å®å
šæé ãã§ãã¯ãªã¹ã",
"ã¹ããã1",
"å±éºèŠå",
"詊è¬Xã¯åŒç«æ§",
"ä¿è·æè¢ãä¿è·ã¡ã¬ãççš"
],
"proofSelectors": [
"button[data-proof='load-sample-procedure']",
"div[data-proof='pdf-viewer']",
"div[data-proof='safety-checklist']",
"span[data-proof='hazard-icon']"
],
"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åŠçãã€ãã©ã€ã³ã«åºã¥ããŠããŸãã",
"AIã«ããåæçµæã¯ãããŸã§åèæ
å ±ã§ãããæçµçãªå®å
šç¢ºèªã¯äººéã®å°éå®¶ãè¡ãå¿
èŠããããŸãã",
"ãã®ããŒã«ã¯å
¬åŒã®ç·æ¥æç€ºãå®å
šãä¿èšŒãããã®ã§ã¯ãããŸããã"
],
"publicCopyMustNotSay": [
"ãªã¢ã«ã¿ã€ã ããŒã¿ãšã®é£æº",
"ã©ã€ãAPIçµ±åã®ä¿èšŒ",
"èªåçãªå€éšå
Ž",
"ãããã¯ã·ã§ã³ã¬ãã£ãªAPIã®æ¯ãèã",
"AIã人éã®å°éç倿ã代æ¿ãã",
"å®å
šãªå®å
šæ§ã®ä¿èšŒ"
]
},
"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."
]
}"use client";
import { useState } from 'react';
import { pipelineTrace } from '../data/sample-trace';
// NOTE: To keep the demo self-contained and offline, core logic types are redeclared here.
// This component MUST NOT import from `source/core`.
type SafetyRunbookStep = {
stepId: string;
stepNumber: number;
description: string;
hazards: string[];
safetyMeasures: string[];
requiredMaterials: string[];
};
type Runbook = {
title: string;
steps: SafetyRunbookStep[];
};
export default function Home() {
const [runbook, setRunbook] = useState<Runbook | null>(null);
const [isLoading, setIsLoading] = useState(false);
const handleLoadSample = () => {
setIsLoading(true);
// Simulate network delay
setTimeout(() => {
setRunbook(pipelineTrace.finalOutput.runbook);
setIsLoading(false);
}, 500);
};
const pipelineSteps = [
{ name: '1. ææžããããã¹ããæœåº', id: 'extract' },
{ name: '2. AIã«ããæé ãšå±éºæ
å ±ã®ç¹å®', id: 'identify' },
{ name: '3. å®å
šæé ãã§ãã¯ãªã¹ãã®çæ', id: 'generate' },
];
return (
<div style={{ fontFamily: 'sans-serif', maxWidth: '1200px', margin: '0 auto', padding: '20px' }}>
<header style={{ borderBottom: '1px solid #eee', paddingBottom: '10px', marginBottom: '20px' }}>
<h1>Lab Safety Runbook</h1>
<p>å®éšæé æžãšå®å
šã·ãŒã(MSDS)ãããå±éºç®æããã€ã©ã€ãããå®å
šãªå®è¡æé ãAIãçæããŸãã</p>
</header>
<div style={{ marginBottom: '20px' }}>
<h2>åŠçãã€ãã©ã€ã³</h2>
<ul style={{ display: 'flex', listStyle: 'none', padding: 0, gap: '10px' }}>
{pipelineSteps.map((step, index) => (
<li key={step.id} style={{ background: '#f0f0f0', padding: '10px', borderRadius: '5px' }}>
{step.name}
</li>
))}
</ul>
</div>
<div style={{ marginBottom: '20px' }}>
<button
onClick={handleLoadSample}
disabled={isLoading || !!runbook}
data-proof="load-sample-procedure"
style={{ padding: '10px 20px', fontSize: '16px', cursor: 'pointer' }}
>
{isLoading ? 'èªã¿èŸŒã¿äž...' : (runbook ? 'èªã¿èŸŒã¿å®äº' : 'ãµã³ãã«æé æžãèªã¿èŸŒã')}
</button>
</div>
<main style={{ display: 'flex', gap: '20px', minHeight: '500px' }}>
<div style={{ flex: 1, border: '1px solid #ccc', padding: '10px', background: '#fafafa' }} data-proof="pdf-viewer">
<h3>å
ã®æé æž</h3>
{runbook ? (
<div>
<h4>{pipelineTrace.sampleInput.documents[0].fileName}</h4>
<p>ïŒããã«PDFã®å
容ã衚瀺ãããŸãïŒ</p>
<pre style={{ whiteSpace: 'pre-wrap', fontSize: '12px', color: '#555' }}>
{pipelineTrace.intermediateOutputs.find(o => o.stepId === 'extractTextFromDocuments')?.output.extractedContent.substring(0, 500)}...
</pre>
</div>
) : (
<p>ãµã³ãã«ãèªã¿èŸŒããšãããã«å
ã®æé æžã衚瀺ãããŸãã</p>
)}
</div>
<div style={{ flex: 1, border: '1px solid #ccc', padding: '10px' }} data-proof="safety-checklist">
<h3>å®å
šæé ãã§ãã¯ãªã¹ã</h3>
{runbook ? (
<div>
<h4>{runbook.title}</h4>
{runbook.steps.map(step => (
<div key={step.stepId} style={{ border: '1px solid #ddd', borderRadius: '5px', padding: '15px', marginBottom: '15px', background: 'white' }}>
<p><strong>ã¹ããã{step.stepNumber}: {step.description}</strong></p>
{step.hazards.length > 0 && (
<div style={{ background: '#fff0f0', border: '1px solid #ffcccc', borderRadius: '4px', padding: '10px', marginTop: '10px' }}>
<p><span data-proof="hazard-icon">â ïž <strong>å±éºèŠå</strong></span></p>
<ul>
{step.hazards.map((hazard, i) => <li key={i}>{hazard}</li>)}
</ul>
</div>
)}
<div style={{ marginTop: '10px' }}>
<strong>å®å
šå¯Ÿç:</strong>
<ul>
{step.safetyMeasures.map((measure, i) => <li key={i}>{measure}</li>)}
</ul>
</div>
</div>
))}
</div>
) : (
<p>ãµã³ãã«ãèªã¿èŸŒããšãããã«AIãçæããå®å
šæé ã衚瀺ãããŸãã</p>
)}
</div>
</main>
<footer style={{ marginTop: '20px', paddingTop: '10px', borderTop: '1px solid #eee', fontSize: '12px', color: '#777' }}>
<p><strong>å
責äºé
:</strong> ãã®ããŒã«ã¯éçãªãµã³ãã«ããŒã¿ã«åºã¥ããã¢ã§ããAIã«ããåæçµæã¯ãããŸã§åèæ
å ±ã§ãããæçµçãªå®å
šç¢ºèªã¯äººéã®å°éå®¶ãè¡ãå¿
èŠããããŸãããã®ããŒã«ã¯å
¬åŒã®ç·æ¥æç€ºãå®å
šãä¿èšŒãããã®ã§ã¯ãããŸããã</p>
</footer>
</div>
);
}
Run context. ããã§ã¯ç®¡ç倿ã«å¿ èŠãªRunã®èŠçŽã ãã衚瀺ããŸããpromptãinputãresponseãmetadataJsonã®å šæã¯é垞確èªããå€ãã å¿ èŠãªå Žåã ãRun詳现ãã°ã§ç¢ºèªããŸãã
- Run ID
- run_selfdirected_agent_a_20260707T182425
- èµ·åçš®å¥
- llm_pipeline
- èªåŸåºŠ
- L1_assisted
- å®è¡è
- system / LLM Pipeline Publisher
- éå§
- 2026/7/8 03:36:43 JST
- å®äº
- 2026/7/8 03:36:43 JST
- çæ / å ¬é / 倱æ
- 1 / 1 / 0
- 蚌跡件æ°
- 8 events / 29 artifacts / 40 checks
LLM pipeline run for selfdirected_agent_a_20260707T182425. Published 0 project(s).
