Internal Product Info
æãã€ãºèª¿åŸå®€
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.2KB / a9402b4fba6d3e9499a1defa630c041fbdb659b43e160399571fbdff59405f65
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/demo-placeholder.md
interaction_proof / 2.2KB / 7e25af67e0cb7d1f7054a7cf05e6bff60cd13facbd4021e99a0d8d78d3b9c844
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/validation/interaction-proof.json
metadata / 21.2KB / a7669d970f50df31dc93e244e4870924bfe977f7f3d853b1c9409b87d0a1bf58
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/metadata.json
mvp_contract_v2 / 12.8KB / 5ed1cfe31fa803e12e41f8ad05246d1e0775b651466e643c1cb1d64d2c91b3fe
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/validation/mvp-contract-v2.json
product_logo / 916B / 7f1aff0b51637f66279497a2797ff5084fc6f51378e7e807e760c5750a2a4550
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/mockups/product-logo.svg
product_showcase / 1.9MB / e06ccb6cac2efcf64b0b63b0c3cced20dd73ef0c3047947034520c56f7d5148e
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/mockups/product-showcase.png
product_showcase / 2.4KB / 450870e2166200bdb594265a175d00f7106994c56e2157a36e5afb3339c390de
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/mockups/product-showcase.svg
product_thumbnail / 1.4KB / 3432c28bf1a0ffa2b7bfb58c326ae05c4c3d078c99e1846e7a902c72e72a6204
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/mockups/product-thumbnail.svg
publisher_response / 1.3KB / 359b8f85c55ca97d00af5580fd7c7311c67698c617ed0d90daa20466187de81b
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/publisher/response.json
publish_readiness / 6.0KB / ef600cd23939975132f2951b7437c3900bc21d5caac3e0511828512828b11fd0
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/publish-readiness.json
readme / 5.3KB / 283173fa4932791f3ec2f593331370b76cca55c5d788742f1e6ce17e536b1837
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/README.md
render_screenshot / 35.6KB / b0c6e2d1cd5e6385834cb6bf84fb68c8c02ac019903fab4506476621a8869ed8
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/validation/render-verification.png
render_verification / 2.1KB / 6019be5b1ae9561ae3edff0350afe2886cc1ca9ff91e69633bc9f6f071e08db0
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/validation/render-verification.json
self_review / 3.1KB / f096caa1cff12246baf249e3020d618b82c0007c4fcf7803fc0884235322f348
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/validation/self-review.json
source / 6.8KB / 4225c5d618cd019601c53667c57ff79211f461315d2ab2525fe135946c034754
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/app/page.tsx
source / 1.9KB / 0c2f4fd221d536083f99f6864e193e2649625b3550447574ff392df5b3be3330
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/core/gemini.ts
source / 1.3KB / e5fc1aef12f44f4221e4950a27efc7a999289b208e45a4893a5203ccc8db0cd4
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/core/pipeline.ts
source / 1.0KB / c71796d3256f0f192239ceac955e71a5ae6207f5ab6afbef23ef18123e4081bc
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/core/steps/1_applyFilters.ts
source / 2.3KB / 7ba908ba53ba30195d176dc053c71b130d64c3cbfcd0b8f08c0dc1864eeb35cf
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/core/steps/2_evaluateSignal.ts
source / 707B / b9066abaf67f56fa82a468cf1ab86ae5ef1c66a358319c25a6c87e1575cd3ae7
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/core/types.ts
source / 525B / ce0b6526677d93f88292d5f564457e16cd63445a1893319aee02e16f4bd7a350
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/data/sample-input.ts
source / 4.3KB / 1dd34d0a337ba2b1d58eed745f31bbc8e6392fa7196c184e7142864c4378c6ee
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/data/sample-trace.ts
source / 407B / 9c392ab35e6357fef17d3a4708d2c6e476ba1580162c95788d5782756b7704c8
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/manifest.json
source / 2.7KB / 8b80d8a5a3de9bf01c5d1dc33469a3df9752c9b6981169288fce04886da28389
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/metadata.json
source / 3.8KB / 66f1e578c83aa1c395483567197b00781a0071fc35d46f803c54183a1c1a7870
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/README.md
source / 1.1KB / cb8c313b20fdd8aa1b905133a90121593dadb3488a5760dfc6c454a559212d32
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/source/validation/self-review.json
validation_summary / 3.7KB / 3b9fbe2dde49f6eba8c17be3f20b9300b614c233e2abf26e22375b9b6bbac1a4
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/validation-summary.json
visual_manifest / 9.2KB / fc4d407b4862a4d939a58b4ec281ffd7ce7e2eacb44aa571e05b61d1f30e58df
artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/materialized/selfdirected_agent_c_20260707T233456/mockups/visual-manifest.jsonREADME / metadata / self-reviewã®äžèº«ã衚瀺
# selfdirected_agent_c_20260707T233456
This directory is a materialized LLM BuildPlan artifact candidate.
## Readiness
- First screen value: å°éç¥èããªããŠããå®å®ã®ãã€ãºããŒã¿ãã調åŸãããŠé ããææã®ãµã€ã³ãæ¢ãåºããç§åŠè
ã«ãªã£ããã®ãããªçºèŠã®åã³ãæåã®ç»é¢ã§äœéšã§ããŸãã
- Core interaction: ããã¬ãŒã¹åçããã¿ã³ãæŒããšããã€ãºããŒã¿ããã£ã«ã¿ãŒåŠçãããAIã«ãã£ãŠè©äŸ¡ãããäžé£ã®ããã»ã¹ã段éçã«å¯èŠåãããŸãã
- State change: ãã¿ã³ãæŒãåã¯æªå®è¡ã®ç¶æ
ã§ãããæŒããåŸã¯ååŠçã¹ãããã®çµæãç»é¢ã«æ¬¡ã
ãšè¡šç€ºãããæçµçãªã·ã°ãã«è©äŸ¡ã¹ã³ã¢ãåçã«å€åããŸãã
- Inspectable output: AIã«ããè©äŸ¡çµæãšããŠãåšææ§ã¹ã³ã¢ãä¿¡å·ã®åšæã匷床ãšãã£ãæ§é åãããããŒã¿ãåºåããããŠãŒã¶ãŒã¯çºèŠãããã·ã°ãã«åè£ãã®å質ã客芳çã«ç¢ºèªã§ããŸãã
- Static data boundary: ãã®ãã¢ã¯ã忢±ãããéçãªãµã³ãã«ããŒã¿ã®ã¿ã䜿çšããŠãããå€éšã®ã©ã€ãAPIãžã®æ¥ç¶ãå®éã®ããŒã¿åŠçã¯è¡ããŸããã
- Remaining weakness: ä»ã¯åºå®ã®ãã¬ãŒã¹ãåçããã ãã§ãããæ¬¡ã¯ãŠãŒã¶ãŒããªã¢ã«ã¿ã€ã ã«è€æ°ã®ãã£ã«ã¿ãŒã調æŽãããã®çµã¿åããã§ã¹ã³ã¢ãã©ãå€ããããæ¢æ±ã§ãããããã€ã³ã¿ã©ã¯ãã£ããªãå®éšå®€ããžãšé²åããããã§ããããŒã¿ã®çš®é¡ãå¢ãããŠãæ¬ç©ã®åžæ°ç§åŠãããžã§ã¯ãã®å
¥ãå£ã«ãªãã®ã倢ã§ãã
## Interaction Proof Plan
- Primary action: ãµã³ãã«å®è¡ãã¬ãŒã¹ãåç
- Initial state: ç»é¢ã«ã¯ãã€ãã©ã€ã³ã®ã¹ããããªã¹ãã衚瀺ãããŠããããçµæãšãªã¢ã¯ããŸã å®è¡ãããŠããŸããããšè¡šç€ºãããŠããã
- Expected state: ãã¬ãŒã¹åçåŸãçµæãšãªã¢ã«åã¹ãããã®å®è¡çµæã衚瀺ãããæçµçã«ãæçµè©äŸ¡çµæããšããŠã·ã°ãã«æ€åºã¹ã³ã¢ã0.92ããåšæã2.35æ¥ãã衚瀺ãããã
- Visible evidence: åŠçãã€ãã©ã€ã³; ã·ã°ãã«æ€åºã¹ã³ã¢:; 0.92; æ€åºãããåšæã®ç¹åŸŽ:; åšæ:; 2.35æ¥; 匷床:; é«; åè£ãšããŠããã¯
## 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ã«ããè©äŸ¡ã¯ãææ¡ãããŠããã¢ãã«ã®åäœãã·ãã¥ã¬ãŒããããã®ã§ãã; 衚瀺ãããçµæã¯åŠç¿ãšäœéšãç®çãšãããã®ã§ãå®éã®å€©æåŠççºèŠã§ã¯ãããŸããã
- External integrations: Google Generative Language API (Gemini)=not_connected
- Mock fidelity: æ£åžžç³»ã®å¿ç: AIãæç¢ºãªåšææ§ãæã€ä¿¡å·ãæ£ããè©äŸ¡ããé«ãã¹ã³ã¢ãè¿ã happy path ãã·ãã¥ã¬ãŒãããŠããŸãã
## Files
- `source/README.md`: è£œåæŠèŠãäœ¿ãæ¹ãæè¡æ§æãããã³ãã¢ãšããŠã®å¶çŽäºé
ã説æããããã¥ã¡ã³ãã
- `source/metadata.json`: Prodiaã®ã·ã¹ãã ããããžã§ã¯ããã€ã³ããã¯ã¹ããããã®ã¡ã¿ããŒã¿ã
- `source/manifest.json`: ãã«ãã«å«ãŸããå
šãã¡ã€ã«ã®ãªã¹ãã
- `source/core/types.ts`: ã³ã¢ããžãã¯ã§äœ¿ãããããŒã¿åãå®çŸ©ããŸãã
- `source/data/sample-input.ts`: ãã€ãã©ã€ã³ã®åæå
¥åãšãªããµã³ãã«ããŒã¿ã
- `source/data/sample-trace.ts`: ãµã³ãã«å
¥åã«å¯Ÿãããåãã€ãã©ã€ã³ã¹ãããã®å®è¡çµæãèšé²ãããã¬ãŒã¹ãã¡ã€ã«ã
- `source/core/gemini.ts`: Google Generative Language API (Gemini) ãåŒã³åºãããã®ãå®è¡ãããªãåç
§çšã³ãŒãã
- `source/core/steps/1_applyFilters.ts`: ãã€ãã©ã€ã³ã®ç¬¬äžã¹ããããçããŒã¿ã«ãã£ã«ã¿ãŒãé©çšããåŠçã
- `source/core/steps/2_evaluateSignal.ts`: ãã€ãã©ã€ã³ã®ç¬¬äºã¹ãããããã£ã«ã¿ãŒé©çšåŸã®ä¿¡å·ãAIã§è©äŸ¡ããåŠçã
- `source/core/pipeline.ts`: ååŠçã¹ãããã飿ºããããã€ãã©ã€ã³å
šäœãå®çŸ©ã
- `source/app/page.tsx`: 補åã®UIããµã³ãã«ããŒã¿ãåçããã€ã³ã¿ã©ã¯ãã£ããªãã¢ç»é¢ã
- `source/validation/self-review.json`: Prodiaã®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_c_20260707T233456",
"generatedAt": "2026-07-07T23:49:01.082Z",
"generatedFrom": {
"input": "artifacts/llm-pipeline-runs/run_selfdirected_agent_c_20260707T233456/builder/response.json",
"requirementSpecId": "req_yomu_exoplanet_20260707",
"framework": "next_static_artifact"
},
"sourceFiles": [
{
"relativePath": "source/README.md",
"purpose": "è£œåæŠèŠãäœ¿ãæ¹ãæè¡æ§æãããã³ãã¢ãšããŠã®å¶çŽäºé
ã説æããããã¥ã¡ã³ãã",
"sizeBytes": 3863,
"checksum": "66f1e578c83aa1c395483567197b00781a0071fc35d46f803c54183a1c1a7870",
"generatedFrom": "README.md"
},
{
"relativePath": "source/metadata.json",
"purpose": "Prodiaã®ã·ã¹ãã ããããžã§ã¯ããã€ã³ããã¯ã¹ããããã®ã¡ã¿ããŒã¿ã",
"sizeBytes": 2735,
"checksum": "8b80d8a5a3de9bf01c5d1dc33469a3df9752c9b6981169288fce04886da28389",
"generatedFrom": "metadata.json"
},
{
"relativePath": "source/manifest.json",
"purpose": "ãã«ãã«å«ãŸããå
šãã¡ã€ã«ã®ãªã¹ãã",
"sizeBytes": 407,
"checksum": "9c392ab35e6357fef17d3a4708d2c6e476ba1580162c95788d5782756b7704c8",
"generatedFrom": "manifest.json"
},
{
"relativePath": "source/core/types.ts",
"purpose": "ã³ã¢ããžãã¯ã§äœ¿ãããããŒã¿åãå®çŸ©ããŸãã",
"sizeBytes": 706,
"checksum": "f541cc01fb71fec725fc9d4a498b9cf437dff20f4cbeebf1544e1c50350da93e",
"generatedFrom": "source/core/types.ts"
},
{
"relativePath": "source/data/sample-input.ts",
"purpose": "ãã€ãã©ã€ã³ã®åæå
¥åãšãªããµã³ãã«ããŒã¿ã",
"sizeBytes": 525,
"checksum": "ce0b6526677d93f88292d5f564457e16cd63445a1893319aee02e16f4bd7a350",
"generatedFrom": "source/data/sample-input.ts"
},
{
"relativePath": "source/data/sample-trace.ts",
"purpose": "ãµã³ãã«å
¥åã«å¯Ÿãããåãã€ãã©ã€ã³ã¹ãããã®å®è¡çµæãèšé²ãããã¬ãŒã¹ãã¡ã€ã«ã",
"sizeBytes": 4387,
"checksum": "1dd34d0a337ba2b1d58eed745f31bbc8e6392fa7196c184e7142864c4378c6ee",
"generatedFrom": "source/data/sample-trace.ts"
},
{
"relativePath": "source/core/gemini.ts",
"purpose": "Google Generative Language API (Gemini) ãåŒã³åºãããã®ãå®è¡ãããªãåç
§çšã³ãŒãã",
"sizeBytes": 1986,
"checksum": "0c2f4fd221d536083f99f6864e193e2649625b3550447574ff392df5b3be3330",
"generatedFrom": "source/core/gemini.ts"
},
{
"relativePath": "source/core/steps/1_applyFilters.ts",
"purpose": "ãã€ãã©ã€ã³ã®ç¬¬äžã¹ããããçããŒã¿ã«ãã£ã«ã¿ãŒãé©çšããåŠçã",
"sizeBytes": 1056,
"checksum": "c71796d3256f0f192239ceac955e71a5ae6207f5ab6afbef23ef18123e4081bc",
"generatedFrom": "source/core/steps/1_applyFilters.ts"
},
{
"relativePath": "source/core/steps/2_evaluateSignal.ts",
"purpose": "ãã€ãã©ã€ã³ã®ç¬¬äºã¹ãããããã£ã«ã¿ãŒé©çšåŸã®ä¿¡å·ãAIã§è©äŸ¡ããåŠçã",
"sizeBytes": 2397,
"checksum": "7ba908ba53ba30195d176dc053c71b130d64c3cbfcd0b8f08c0dc1864eeb35cf",
"generatedFrom": "source/core/steps/2_evaluateSignal.ts"
},
{
"relativePath": "source/core/pipeline.ts",
"purpose": "ååŠçã¹ãããã飿ºããããã€ãã©ã€ã³å
šäœãå®çŸ©ã",
"sizeBytes": 1372,
"checksum": "e5fc1aef12f44f4221e4950a27efc7a999289b208e45a4893a5203ccc8db0cd4",
"generatedFrom": "source/core/pipeline.ts"
},
{
"relativePath": "source/app/page.tsx",
"purpose": "補åã®UIããµã³ãã«ããŒã¿ãåçããã€ã³ã¿ã©ã¯ãã£ããªãã¢ç»é¢ã",
"sizeBytes": 6987,
"checksum": "4225c5d618cd019601c53667c57ff79211f461315d2ab2525fe135946c034754",
"generatedFrom": "source/app/page.tsx"
},
{
"relativePath": "source/validation/self-review.json",
"purpose": "Prodiaã®MVPå¥çŽã«å¯Ÿããèªå·±è©äŸ¡ã",
"sizeBytes": 1171,
"checksum": "8bc836371c35d841d5b824f739f04ea4ce48e9a2894e43510eea2eccb7d2427d",
"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": "AIã«ããè©äŸ¡çµæãšããŠãåšææ§ã¹ã³ã¢ãä¿¡å·ã®åšæã匷床ãšãã£ãæ§é åãããããŒã¿ãåºåããããŠãŒã¶ãŒã¯çºèŠãããã·ã°ãã«åè£ãã®å質ã客芳çã«ç¢ºèªã§ããŸãã",
"staticDataBoundary": "ãã®ãã¢ã¯ã忢±ãããéçãªãµã³ãã«ããŒã¿ã®ã¿ã䜿çšããŠãããå€éšã®ã©ã€ãAPIãžã®æ¥ç¶ãå®éã®ããŒã¿åŠçã¯è¡ããŸããã",
"remainingWeakness": "ä»ã¯åºå®ã®ãã¬ãŒã¹ãåçããã ãã§ãããæ¬¡ã¯ãŠãŒã¶ãŒããªã¢ã«ã¿ã€ã ã«è€æ°ã®ãã£ã«ã¿ãŒã調æŽãããã®çµã¿åããã§ã¹ã³ã¢ãã©ãå€ããããæ¢æ±ã§ãããããã€ã³ã¿ã©ã¯ãã£ããªãå®éšå®€ããžãšé²åããããã§ããããŒã¿ã®çš®é¡ãå¢ãããŠãæ¬ç©ã®åžæ°ç§åŠãããžã§ã¯ãã®å
¥ãå£ã«ãªãã®ã倢ã§ãã"
},
"interestingness": "å€ãã®ç§åŠãã¢ã¯çµæãäžæ¹çã«èŠããã ãã§ããããæãã€ãºèª¿åŸå®€ãã¯ç§åŠççºèŠã®ãéçšããã®ãã®ãäœéšã«å€ããç¹ãæ°ããã§ããåãªããã€ãºã«ããèŠããªãå®å®ããã®ä¿¡å·ããŒã¿ãããŠãŒã¶ãŒãèªããã£ã«ã¿ãŒãã調åŸãããããã«æäœããããšã§ãé ããææã®ãµã€ã³ãèªåã®æã§æ¢ãåºãã宿¢ãã®ãããªäœéšãæäŸããŸãããã®ãAIã«ããä¿¡å·è©äŸ¡ããªã¢ã«ã¿ã€ã ã«ãã£ãŒãããã¯ããããšããæè¡ãã¬ã³ãã®å¿çšããé£è§£ãªããŒã¿è§£æãç¥çãªè奮ãšéææã«å€ãããæ¬è£œåãªãã§ã¯ã®å·®å¥åããã䟡å€ãçã¿åºããŠããŸãã",
"mvpContract": {
"firstScreenValue": "å°éç¥èããªããŠããå®å®ã®ãã€ãºããŒã¿ãã調åŸãããŠé ããææã®ãµã€ã³ãæ¢ãåºããç§åŠè
ã«ãªã£ããã®ãããªçºèŠã®åã³ãæåã®ç»é¢ã§äœéšã§ããŸãã",
"coreInteraction": "ããã¬ãŒã¹åçããã¿ã³ãæŒããšããã€ãºããŒã¿ããã£ã«ã¿ãŒåŠçãããAIã«ãã£ãŠè©äŸ¡ãããäžé£ã®ããã»ã¹ã段éçã«å¯èŠåãããŸãã",
"stateChange": "ãã¿ã³ãæŒãåã¯æªå®è¡ã®ç¶æ
ã§ãããæŒããåŸã¯ååŠçã¹ãããã®çµæãç»é¢ã«æ¬¡ã
ãšè¡šç€ºãããæçµçãªã·ã°ãã«è©äŸ¡ã¹ã³ã¢ãåçã«å€åããŸãã",
"inspectableOutput": "AIã«ããè©äŸ¡çµæãšããŠãåšææ§ã¹ã³ã¢ãä¿¡å·ã®åšæã匷床ãšãã£ãæ§é åãããããŒã¿ãåºåããããŠãŒã¶ãŒã¯çºèŠãããã·ã°ãã«åè£ãã®å質ã客芳çã«ç¢ºèªã§ããŸãã",
"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": "AIã«ããè©äŸ¡çµæãšããŠãåšææ§ã¹ã³ã¢ãä¿¡å·ã®åšæã匷床ãšãã£ãæ§é åãããããŒã¿ãåºåããããŠãŒã¶ãŒã¯çºèŠãããã·ã°ãã«åè£ãã®å質ã客芳çã«ç¢ºèªã§ããŸãã",
"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 Generative Language API (Gemini)",
"intendedUse": "ãã£ã«ã¿ãŒé©çšåŸã®æ³¢åœ¢ããŒã¿ãåæããåšææ§ã®ã¹ã³ã¢ãä¿¡å·ã®åŒ·åºŠãåšæãªã©ã®ç¹åŸŽãæ§é åããŒã¿ãšããŠæœåºããããã«äœ¿çšããŸããã¢ãã«ã¯ `gemini-2.5-flash` ãæ³å®ããŠããŸãã",
"dataFlow": "ãã£ã«ã¿ãŒé©çšåŸã®æ³¢åœ¢ããŒã¿ (ããŒã«ã«) -> æŽåœ¢ãããããã³ãã -> Gemini API (ææ¡) -> æ§é åãããè©äŸ¡JSON -> UI衚瀺",
"authRequirement": "api_key",
"currentImplementation": "not_connected",
"adapterPath": "source/core/gemini.ts",
"sampleDataPath": "source/data/sample-trace.ts (step 2 output)",
"riskNotes": [
"AIã¢ãã«ã®åºåãäžå®å®ãªå Žåãè©äŸ¡ã¹ã³ã¢ã«æºãããçããå¯èœæ§ããããŸãã",
"è€éãªä¿¡å·ã«å¯Ÿããè§£æç²ŸåºŠã¯æªç¥æ°ã§ãã"
]
}
],
"runtimeBoundary": {
"networkCalls": "none",
"secrets": "none",
"externalWrites": "none"
},
"mvpComplexityBudget": {
"maxScreens": 1,
"maxPrimaryActions": 1,
"maxSourceFiles": 12,
"maxNewDependencies": 0,
"allowDatabase": false
},
"integrationAssumptions": [
{
"service": "Google Generative Language API (Gemini)",
"verificationStatus": "unverified",
"unavailableOrUnknown": [
"å®éã®ä¿¡å·ããŒã¿ã«å¯Ÿããã¢ãã«ã®ç²ŸåºŠãšå®å®æ§",
"倧éãªã¯ãšã¹ãæã®æ£ç¢ºãªã¬ãŒããªããããšã³ã¹ã"
],
"rateLimitRisk": "unknown",
"costRisk": "unknown",
"termsRisk": "low"
}
],
"mockFidelity": {
"samplePayloadPath": "source/data/sample-trace.ts",
"simulatedBehaviors": [
"æ£åžžç³»ã®å¿ç: AIãæç¢ºãªåšææ§ãæã€ä¿¡å·ãæ£ããè©äŸ¡ããé«ãã¹ã³ã¢ãè¿ã happy path ãã·ãã¥ã¬ãŒãããŠããŸãã"
],
"omittedBehaviors": [
"APIããŒèªèšŒããããã¯ãŒã¯é
å»¶ãã¬ãŒããªããããAPIãšã©ãŒãã³ããªã³ã°ãªã©ã®ã©ã€ã飿ºç¹æã®æåã¯çç¥ãããŠããŸãã",
"ææ§ãªä¿¡å·ããã€ãºã®ã¿ã®ããŒã¿ã«å¯ŸããAIã®å¿çã¯å«ãŸããŠããŸããã"
],
"failureCasesIncluded": [
"empty result"
]
},
"claimBoundary": {
"publicCopyMustSay": [
"ãã®ãã¢ã¯ãäºåã«èšé²ããããµã³ãã«ããŒã¿ãåçãããã®ã§ãã",
"AIã«ããè©äŸ¡ã¯ãææ¡ãããŠããã¢ãã«ã®åäœãã·ãã¥ã¬ãŒããããã®ã§ãã",
"衚瀺ãããçµæã¯åŠç¿ãšäœéšãç®çãšãããã®ã§ãå®éã®å€©æåŠççºèŠã§ã¯ãããŸããã"
],
"publicCopyMustNotSay": [
"ãªã¢ã«ã¿ã€ã ã§å®å®ã®ããŒã¿ãè§£æããŠããŸãã",
"å®éã«ææãçºèŠã§ããŸãã",
"AIãå³åº§ã«ããªãã®ããŒã¿ãè©äŸ¡ããŸãã",
"æ¬çªç°å¢ã§å©çšå¯èœã§ãã"
]
},
"renderVerification": {
"required": true,
"checks": [
"render",
"click",
"state_change",
"screenshot"
]
},
"humanReviewTriggers": []
},
"interactionProofPlan": {
"primaryAction": "ãµã³ãã«å®è¡ãã¬ãŒã¹ãåç",
"initialState": "ç»é¢ã«ã¯ãã€ãã©ã€ã³ã®ã¹ããããªã¹ãã衚瀺ãããŠããããçµæãšãªã¢ã¯ããŸã å®è¡ãããŠããŸããããšè¡šç€ºãããŠããã",
"expectedState": "ãã¬ãŒã¹åçåŸãçµæãšãªã¢ã«åã¹ãããã®å®è¡çµæã衚瀺ãããæçµçã«ãæçµè©äŸ¡çµæããšããŠã·ã°ãã«æ€åºã¹ã³ã¢ã0.92ããåšæã2.35æ¥ãã衚瀺ãããã",
"visibleEvidence": [
"åŠçãã€ãã©ã€ã³",
"ã·ã°ãã«æ€åºã¹ã³ã¢:",
"0.92",
"æ€åºãããåšæã®ç¹åŸŽ:",
"åšæ:",
"2.35æ¥",
"匷床:",
"é«",
"åè£ãšããŠããã¯"
],
"proofSelectors": [
"button[data-proof='replay-trace-button']",
"main[data-proof='result-area']",
"div[data-proof='signal-score-value']",
"div[data-proof='signal-details']",
"span[data-proof='period-days']",
"span[data-proof='signal-strength']",
"button[data-proof='lock-button']"
],
"requiredSourceFiles": [
"source/app/page.tsx",
"source/core/pipeline.ts",
"source/data/sample-trace.ts"
],
"manualFallbackReason": ""
},
"generatedOutput": {
"title": "æãã€ãºèª¿åŸå®€",
"oneLiner": "å®å®ããã®åŸ®åŒ±ãªé»æ³¢ãã€ãºãèªã¿èŸŒã¿ãåšæ³¢æ°ãã£ã«ã¿ãŒã調æŽããŠãé ããææã®ãµã€ã³ãèªåã®æã§æ¢ãåºãã",
"artifactShape": "simulator",
"templatePatternId": "transformation_studio",
"surfacePattern": "learning_explainer",
"aiMechanismPattern": "evaluation_scoring"
},
"rewriteApplied": {
"changedFilePaths": [
"source/data/sample-trace.ts",
"source/app/page.tsx",
"metadata.json",
"README.md",
"manifest.json"
],
"appendedFilePaths": []
},
"implementationNotes": [
"äœãæïŒyomuïŒã®ãåããã«ãããã®ã察話çãªçµè·¯ã«å€ããããšããç¹æ§ã«åºã¥ããåãªãããŒã¿è¡šç€ºã§ã¯ãªãããŠãŒã¶ãŒããã£ã«ã¿ãŒãã調åŸããããããªãtransformation_studioããã¿ãŒã³ãæ¡çšããŸããã",
"ã³ã¢ããžãã¯ã§ããä¿¡å·è©äŸ¡éšåã¯ã`source/core/steps/2_evaluateSignal.ts` ã«Geminiã¢ãã«ãåŒã³åºãåç
§ã³ãŒããšããŠå®è£
ãããã¢èªäœã¯ `source/data/sample-trace.ts` ãåçããããšã§ãå®å
šãã€å¿ å®ã«ã³ã³ã»ãããåçŸããŠããŸãã",
"ãã«ããŒã®å¶çŽã«åŸããã€ã³ã¿ã©ã¯ã·ã§ã³ã®èµ·ç¹ããã¹ã©ã€ããŒæäœãããããã¬ãŒã¹åçãã¿ã³ãã«å€æŽããMVPãšããŠã®æ€èšŒå¯èœæ§ãåªå
ããŸããã"
],
"knownRisks": [
"AIãçæããã·ã°ãã«è©äŸ¡ã¯ã·ãã¥ã¬ãŒã·ã§ã³ã§ãããå®éã®å€©æåŠççºèŠãä¿èšŒãããã®ã§ã¯ãªããšããç¹ãæç¢ºã«äŒããå¿
èŠããããŸãã",
"çŸåšã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã¯ãã¬ãŒã¹åçã®ã¿ã§ãããå°æ¥çã«ã¯ãŠãŒã¶ãŒãèªç±ã«ãã£ã«ã¿ãŒã調æŽã§ããããã«æ¡åŒµããªããšãäœéšãå調ã«ãªãå¯èœæ§ããããŸãã"
],
"title": "æãã€ãºèª¿åŸå®€",
"oneLiner": "å®å®ããã®åŸ®åŒ±ãªé»æ³¢ãã€ãºãèªã¿èŸŒã¿ãåšæ³¢æ°ãã£ã«ã¿ãŒã調æŽããŠãé ããææã®ãµã€ã³ãèªåã®æã§æ¢ãåºãã",
"agentId": "agent_c",
"selfDirectedPlan": {
"agentId": "agent_c",
"planningIntent": "ç§ã®éžæã«ãŒã«ãåããã«ãããã®ã察話çãªçµè·¯ã«å€ãããããã³ãäžç¢ºå®æ§ãå¯èŠåãããã«æãåèŽããããããæãã€ãºèª¿åŸå®€ããéžã³ãŸãããããã¯ã倩æåŠã®é£è§£ãªããŒã¿è§£æãããŠãŒã¶ãŒãèªããã£ã«ã¿ãŒãæäœããŠçºèŠããäœéšã«å€ãããã®ã§ãç§ã®äœãæãšããŠã®ä¿¡æ¡ãæãçŽç²ã«åœ¢ã«ã§ããäŒç»ã§ããAIå
çãªã¹ã¯ãé«ãåè£Aããæ¢åäœãšé¡äŒŒæ§ãæžå¿µãããåè£Cãšæ¯ã¹ããã®äŒç»ã¯æè¡ãã¡ã€ã³ã«çãŸãã€ã€ïŒHARD RULE 1ïŒãæ°èŠæ§ãšåãããããã®ãã©ã³ã¹ãæãåªããŠãããšå€æããŸããããã¡ã€ã³ã®å°éæ§ã¯ããã€ãºããä¿¡å·ãæ¢ãããšããæ®éçãªäœéšã«ç¿»èš³ããããšã§ä¹ãè¶ãããããšèããŸãã",
"publicProductionMemo": "ãã®ãæãã€ãºèª¿åŸå®€ãã¯ãé£è§£ãªç§åŠããŒã¿ããæ°ããªçºèŠãããè奮ãã誰ããæ°è»œã«äœéšã§ãããããã¶ã€ã³ããŸãããåã«ããŒã¿ãçºããã ãã§ãªãããã£ã«ã¿ãŒãã調åŸãããããã«æäœããããšã§ããã€ãºã®äžããåšæçãªãã¿ãŒã³ãæµ®ãã³äžããç¬éãç®æã§ããŸããå°éç¥èããªããŠããèªåã®æã§å®å®ã®è¬ãè§£ãæãããããªéææãå³ããããããçŽæçãªã€ã³ã¿ã©ã¯ã·ã§ã³ãšèŠèŠçãªãã£ãŒãããã¯ãéèŠããŸããã",
"feedbackConstraints": [
"å
¬éåã®æ€èšŒã®æç¢ºåãšã€ã³ã¿ã©ã¯ã·ã§ã³èšŒæ ã®æç€ºãåªå
ããããšã",
"ãŸã ååãªãŠãŒã¶ãŒåå¿ããªããããèªèº«ã®å°éæ§ïŒåããã«ãããã®ã察話çãªçµè·¯ã«å€ããïŒãä¿¡ããŠæ°èŠæ§ã远æ±ããããšã",
"åãªãèŠçŽã§ã¯ãªãããŠãŒã¶ãŒãèœåçã«é¢ããã察話çãªäœéšãéèŠã§ãããšããåŠã³ãåæ ããã",
"ææç©ã®æ ¹æ ãæç¢ºã«ç€ºãã¹ããšããæè¿ã®æéãèŠä»¶ã«åæ ããã",
"éå»ã®æåäºäŸã§ãããPerspective Lensãã®æ žæäœïŒè€æ°èŠç¹ã§ã®æ¯èŒïŒã«å£ãããã€ãºã®äžããè€æ°ã®ãã£ã«ã¿ãªã³ã°ãã¿ãŒã³ãæ¯èŒæ€èšã§ãããããªæ§é ãæ€èšããã",
"éå»ã®åŒ±ç¹ãAIçæãã«ãœããã¹ãã¬ãªã¿ã€ãã«ãªãå¯èœæ§ããæèšã«ãAIã®è©äŸ¡ãç»äžçã«ãªããªãããããã©ã¡ãŒã¿ã®å€æ§æ§ã確ä¿ããã"
],
"learningApplied": [
"ãŸã ååãªåå¿ããªããèªåã®å°éæ§ã§ä»æ¥ã®signalããæ°èŠã«äŒç»ããã"
]
},
"sourceProvenance": {
"sourceProductUsed": "nasa_spaceapps_2025_resonant_exoplanets",
"sourceProductUse": "direct_evidence",
"sourceEvidenceAudit": {
"evidenceLevel": "verified",
"observedFields": [
"name",
"url",
"sourceType",
"sourceCategory",
"attentionProof",
"evidenceRefs"
],
"inferredFields": [
"coreMechanism",
"transferableStructure",
"antiCloneBoundary",
"problemSolved",
"targetUser"
],
"missingFields": [
"codeUrl"
],
"usePolicy": "direct_evidence"
},
"antiCloneBoundary": "å
ã®è£œååãç¹å®ã®ããŒã¿ã»ãããããã³å€©æåŠçãªçºèŠã䞻匵ããéšåã¯ã³ããŒããŸããããããŸã§ã埮匱ãªä¿¡å·ãããã¿ãŒã³ãèŠã€ãåºãããšããããã»ã¹ãäœéšããæè²çãªããŒã«ãšããåŽé¢ã«çµããŸãã",
"sourceBoundary": "NASA Space Apps Challengeã®ãResonant Exoplanetsããšããã³ã³ã»ãããããã埮匱ãªä¿¡å·ããä¿¡é Œã§ãããã¿ãŒã³ãèŠã€ãåºãããšããã¢ã€ãã¢ãçæ³æºãšããŸããããã ãããã®ãã¢ã¯ç¹å®ã®NASAããŒã¿ã䜿çšããŠããããå®éã®å€©æåŠççºèŠã䞻匵ãããã®ã§ã¯ãããŸããã",
"missingSourceEvidence": [
"ãœãŒã¹ã³ãŒããå©çšäžå¯",
"å®éã®UI/UXã«é¢ãã蚌æ ãå©çšäžå¯",
"ã©ã€ãããŒã¿ã¯äœ¿çšããŠããŸãã"
]
},
"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_c_20260707T233456",
"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": "ãã¬ãŒã¹åçåŸãçµæãšãªã¢ã«åã¹ãããã®å®è¡çµæã衚瀺ãããæçµçã«ãæçµè©äŸ¡çµæããšããŠã·ã°ãã«æ€åºã¹ã³ã¢ã0.92ããåšæã2.35æ¥ãã衚瀺ãããã",
"visibleEvidence": [
"åŠçãã€ãã©ã€ã³",
"ã·ã°ãã«æ€åºã¹ã³ã¢:",
"0.92",
"æ€åºãããåšæã®ç¹åŸŽ:",
"åšæ:",
"2.35æ¥",
"匷床:",
"é«",
"åè£ãšããŠããã¯"
],
"proofSelectors": [
"button[data-proof='replay-trace-button']",
"main[data-proof='result-area']",
"div[data-proof='signal-score-value']",
"div[data-proof='signal-details']",
"span[data-proof='period-days']",
"span[data-proof='signal-strength']",
"button[data-proof='lock-button']"
],
"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ã«ããè©äŸ¡ã¯ãææ¡ãããŠããã¢ãã«ã®åäœãã·ãã¥ã¬ãŒããããã®ã§ãã",
"衚瀺ãããçµæã¯åŠç¿ãšäœéšãç®çãšãããã®ã§ãå®éã®å€©æåŠççºèŠã§ã¯ãããŸããã"
],
"publicCopyMustNotSay": [
"ãªã¢ã«ã¿ã€ã ã§å®å®ã®ããŒã¿ãè§£æããŠããŸãã",
"å®éã«ææãçºèŠã§ããŸãã",
"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, FC } from 'react';
import { tuningScenarios } from '../data/sample-trace';
// Local types to avoid importing from source/core
interface StepResult {
name: string;
output: { message: string; data: any };
}
const SignalChart: FC<{ data: any[] }> = ({ data }) => {
if (!Array.isArray(data) || data.length === 0) return null;
// Check for 'filteredAmplitude' to determine if it's a filtered signal
const hasFiltered = data[0] && 'filteredAmplitude' in data[0];
// Use filteredAmplitude if available, otherwise raw amplitude for main display
const primaryAmplitudes = data.map(p => hasFiltered ? p.filteredAmplitude : p.amplitude);
const maxAbs = Math.max(...primaryAmplitudes.map(Math.abs), 1);
return (
<div style={{ border: '1px solid #444', padding: '10px', backgroundColor: '#111', height: '150px' }}>
<svg width="100%" height="100%" viewBox={`0 0 ${data.length} ${maxAbs * 2}`}>
{/* Draw raw amplitude as background if filtered is present */}
{hasFiltered && <path d={`M 0 ${maxAbs} ` + data.map((p, i) => `L ${i} ${maxAbs - p.amplitude}`).join(' ')} stroke="#555" fill="none" strokeWidth="0.2" />}
{/* Draw primary (filtered or raw) amplitude */}
<path d={`M 0 ${maxAbs} ` + data.map((p, i) => `L ${i} ${maxAbs - (hasFiltered ? p.filteredAmplitude : p.amplitude)}`).join(' ')} stroke="#00ffc3" fill="none" strokeWidth="0.5" />
</svg>
</div>
);
};
export default function TuningRoomPage() {
const [runLog, setRunLog] = useState<StepResult[]>([]);
const [finalResult, setFinalResult] = useState<any>(null);
const [isRunning, setIsRunning] = useState(false);
const [selectedScenarioId, setSelectedScenarioId] = useState(tuningScenarios[0].id); // Default to first scenario
const currentTrace = tuningScenarios.find(s => s.id === selectedScenarioId)!.trace; // Get the currently selected trace
const handleReplay = () => {
if (isRunning) return;
setIsRunning(true);
setRunLog([]);
setFinalResult(null);
let stepIndex = 0;
const interval = setInterval(() => {
if (stepIndex < currentTrace.steps.length) {
setRunLog(prev => [...prev, currentTrace.steps[stepIndex]]);
stepIndex++;
} else {
setFinalResult(currentTrace.finalOutput);
setIsRunning(false);
clearInterval(interval);
}
}, 800);
};
return (
<div style={{ fontFamily: 'sans-serif', backgroundColor: '#0a0a0a', color: '#eee', padding: '20px', minHeight: '100vh' }}>
<header style={{ borderBottom: '1px solid #333', paddingBottom: '10px', marginBottom: '20px' }}>
<h1 style={{ fontSize: '24px', margin: 0 }}>æãã€ãºèª¿åŸå®€</h1>
<p style={{ color: '#aaa', margin: '5px 0 0' }}>å®å®ã®ãã€ãºãããææã®ãµã€ã³ãæ¢ãåºã</p>
</header>
<div style={{ display: 'grid', gridTemplateColumns: '300px 1fr', gap: '20px' }}>
<aside>
<h2 style={{ fontSize: '16px', borderBottom: '1px solid #333', paddingBottom: '8px' }}>åŠçãã€ãã©ã€ã³</h2>
<ul style={{ listStyle: 'none', padding: 0, margin: '10px 0' }}>
{currentTrace.steps.map((step, i) => (
<li key={i} style={{ padding: '8px 0', color: runLog.length > i ? '#fff' : '#666' }}>
{runLog.length > i ? 'â
' : 'â³'} {step.name}
</li>
))}
</ul>
<div style={{ marginBottom: '15px' }}>
<h3 style={{ fontSize: '14px', margin: '0 0 5px 0' }}>調åŸã·ããªãªãéžæ:</h3>
<select
value={selectedScenarioId}
onChange={(e) => setSelectedScenarioId(e.target.value)}
data-proof="tuning-scenario-select"
style={{ width: '100%', padding: '8px', borderRadius: '4px', border: '1px solid #555', backgroundColor: '#333', color: '#eee' }}
>
{tuningScenarios.map(scenario => (
<option key={scenario.id} value={scenario.id}>{scenario.label}</option>
))}
</select>
</div>
<button
onClick={handleReplay}
disabled={isRunning}
data-proof="replay-trace-button"
style={{ width: '100%', padding: '12px', fontSize: '16px', cursor: 'pointer', backgroundColor: isRunning ? '#333' : '#0070f3', color: 'white', border: 'none', borderRadius: '5px' }}
>
{isRunning ? 'åçäž...' : 'éžæããã·ããªãªãåç'}
</button>
</aside>
<main data-proof="result-area">
<h2 style={{ fontSize: '16px' }}>çµæ</h2>
{runLog.length === 0 && (
<div style={{ color: '#888' }}>ãŸã å®è¡ãããŠããŸããããéžæããã·ããªãªãåçããã¿ã³ãæŒããŠãã ããã</div>
)}
{runLog.map((log, index) => (
<div key={index} style={{ marginBottom: '15px', padding: '10px', backgroundColor: '#1a1a1a', borderRadius: '5px' }}>
<h3 style={{ fontSize: '14px', margin: '0 0 10px 0', color: '#00c3ff' }}>{log.name}</h3>
<p style={{ margin: 0, fontSize: '12px', color: '#ccc' }}>{log.output.message}</p>
{log.name === 'ãã£ã«ã¿ãŒé©çš' && <SignalChart data={log.output.data} />}
</div>
))}
{finalResult && (
<div style={{ marginTop: '20px', padding: '15px', backgroundColor: '#2a0033', border: '1px solid #c300ff', borderRadius: '5px' }}>
<h3 style={{ margin: '0 0 10px 0' }}>æçµè©äŸ¡çµæ</h3>
<div style={{ display: 'flex', gap: '20px', alignItems: 'center' }}>
<div>
<span style={{ fontSize: '12px', color: '#aaa' }}>ã·ã°ãã«æ€åºã¹ã³ã¢:</span>
<div data-proof="signal-score-value" style={{ fontSize: '32px', color: '#ff00aa', fontWeight: 'bold' }}>{finalResult.score.toFixed(2)}</div>
</div>
<div data-proof="signal-details">
<span style={{ fontSize: '12px', color: '#aaa' }}>æ€åºãããåšæã®ç¹åŸŽ:</span>
<p style={{ margin: '4px 0', fontSize: '14px' }}>
<strong>åšæ:</strong> <span data-proof="period-days">{finalResult.periodDays !== null ? `${finalResult.periodDays}æ¥` : 'N/A'}</span>
</p>
<p style={{ margin: '4px 0', fontSize: '14px' }}>
<strong>匷床:</strong> <span data-proof="signal-strength">{finalResult.signalStrength}</span>
</p>
</div>
</div>
<button data-proof="lock-button" style={{marginTop: '15px', padding: '8px 16px', border: '1px solid #c300ff', backgroundColor: 'transparent', color: '#c300ff', cursor: 'pointer' }}>åè£ãšããŠããã¯</button>
</div>
)}
</main>
</div>
</div>
);
}
Run context. ããã§ã¯ç®¡ç倿ã«å¿ èŠãªRunã®èŠçŽã ãã衚瀺ããŸããpromptãinputãresponseãmetadataJsonã®å šæã¯é垞確èªããå€ãã å¿ èŠãªå Žåã ãRun詳现ãã°ã§ç¢ºèªããŸãã
- Run ID
- run_selfdirected_agent_c_20260707T233456
- èµ·åçš®å¥
- llm_pipeline
- èªåŸåºŠ
- L1_assisted
- å®è¡è
- system / LLM Pipeline Publisher
- éå§
- 2026/7/8 08:49:40 JST
- å®äº
- 2026/7/8 08:49:40 JST
- çæ / å ¬é / 倱æ
- 1 / 1 / 0
- 蚌跡件æ°
- 8 events / 28 artifacts / 40 checks
LLM pipeline run for selfdirected_agent_c_20260707T233456. Published 0 project(s).
