Internal Product Info
芳æŠãªã¥ã㯠(Kansen Rucksack)
Product review board. å ¬éäžãŸãã¯å¯©æ»äžã®1ã€ã®ãããã¯ãã«ã€ããŠãå ¬é倿ã«å¿ èŠãªå éšæ å ±ãšRunèŠçŽããã®ããŒãžã§ç¢ºèªããŸãã çæãã°ã®å šæã¯è©³çްãã°ã«åããé垞確èªã§ã¯èŠçŽãšå ¬é倿ã«é¢ä¿ãã蚌跡ã ããèŠãŸãã
Current decision. çŸåšã®status㯠èªåå ¬éãå ¬éå€æã¯ èªåå ¬é ã§ãã çç±: Self-directed run passed the AI publisher gate and MVP artifact validation; auto-published by the agent pipeline. provenance=full_auto_llm
Readiness checks. 现ããValidationCheckããã¹ãŠäžŠã¹ãã®ã§ã¯ãªããå ¬éå¯åŠã«åœ±é¿ããé ç®ãåªå ããŠè¡šç€ºããŸãã
ValidationCheckå šä»¶ã衚瀺
pass / artifact_exists: Source files listed in metadata.
pass / duplicate_like: MVP check passed.
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
pass / mvp_contract_v2.result: MVP Contract V2 result: pass.
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.
pass / prompt_injection_like: MVP check passed.
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
pass / publish_readiness.mvp_contract_v2.result: MVP Contract V2 check completed (pass)
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=0
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.1KB / 529aa3f35c47e304bee936f4313a948df5fe7671a491ff15f5163915fd1949ab
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/demo-placeholder.md
interaction_proof / 2.1KB / 8e41812df9507e892968f593732566029925140ec4ab40d83c5d0f3af9192eb3
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/validation/interaction-proof.json
metadata / 20.2KB / 68c489e3e5c5fd9b2f63a4013cccce472f48eca7c75b6c03fe249a0f8f8c0e3d
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/metadata.json
mvp_contract_v2 / 12.3KB / 53b8ff469b5d54635b0bcd1b0c0c2ff1a917759305791fa29984ba7e6b9a31cf
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/validation/mvp-contract-v2.json
product_logo / 621B / b294773bb5922839053cd2c6ff2c08c38f95279847d161927934df0a08244a3a
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/mockups/product-logo.svg
product_showcase / 2.0MB / ce96b58a9567cc97a98ba456c349c6d5465f86f2cfd3482fdc5a7e42266f69be
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/mockups/product-showcase.png
product_showcase / 2.8KB / fdab67b1eef1630d7a94bc59174b1e7e85453e0007307db4b821394beb2f1ca0
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/mockups/product-showcase.svg
product_thumbnail / 1.5KB / b4bc48049ca567dac7d697a3122ced1e36f268e7298d4597e0e2eb42806b5818
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/mockups/product-thumbnail.svg
publisher_response / 1.1KB / 4b2aacc8eb495a674b320d492435d20a048fad5720a36c87863dc6b3f0dcc54c
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/publisher/response.json
publish_readiness / 5.6KB / 890577b7989b1f40ece9805f6414ff6e467047b1e7364e9590096c7fd09b5d2b
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/publish-readiness.json
readme / 4.5KB / 2cf0f17ca521ae9c5b9b96a6aaee018060ae387382de0fb647dd5388f4d3edb4
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/README.md
render_screenshot / 83.2KB / 612b80a5726af381ae662081d700bb5522009c3b8859e2051e65ffe15c0e0aa3
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/validation/render-verification.png
render_verification / 2.0KB / c61ca0ad79610050ce7a8baaa9eb5b2584c853a43642759b9f19b9428739e8df
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/validation/render-verification.json
self_review / 2.3KB / b17c28ac3139e0d4ed222b6ad383d3602db76aa8801359ddec9089a05a5d5517
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/validation/self-review.json
source / 4.6KB / 0b77962141921a15731f948b7eef94c2cb1095ba2b0c773494bea00cd1d82ba7
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/app/page.tsx
source / 1.8KB / d1acd5a1d6e081f520013379b9044b50e8d820ea52e5b1c59addfe9ed1a049fe
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/core/gemini.ts
source / 1.4KB / 68d5184bc15a7c2d07a5b258ada4018e4d935bc30a9d662d9cb5cfa142d9a8fd
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/core/pipeline.ts
source / 2.6KB / ebd9220fd5f5ac24a36d6e79e6188e7bb6fe9c8789a272e8ee7a01f080aef33e
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/core/steps/collectAndEmbedData.ts
source / 1.9KB / 6fb8a47b57ff4b376d91d533a213df09a9326677aaeec94bdf9713932b0e422f
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/core/steps/generateResponse.ts
source / 1.4KB / 295067aa0628453c13fd2e676de2fb1b940db382cb01b553dd282e274eeba3b8
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/core/steps/retrieveKnowledge.ts
source / 632B / 6b60dbdb4a435ba621fba10dd316619305c8c46e9a6b71fad313ba85c5593729
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/core/types.ts
source / 248B / 6c5b21e0453c76ae6618c25cb4a70af07563c6ab9545d40de353c1056b69e8e8
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/data/sample-input.ts
source / 1.8KB / 533e8067543529939d1dffbe752d122330507a363e3249c77c0fe8bd2782b37c
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/data/sample-trace.ts
source / 400B / b01abcf99e482b21d2c83e01ee5f9ab36e38fe46c4337a4dbca4ba1ea1ff0092
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/manifest.json
source / 2.6KB / 866ec0e239850198793521b855f7c92658adad576f1fec601939ff5f14ecf87a
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/metadata.json
source / 3.3KB / 0b36af2dee0932e0ba8742fbe164e9a01b0f0da81c412e7dd63b35e28f3a2402
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/README.md
source / 1.2KB / 783d89689dfc478d8124e858ee815bf38fc3dcb6ccf7e8ee1a6eac0f85937dad
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/source/validation/self-review.json
validation_summary / 3.6KB / 2b8b319eb3e23dd69eb17ec28fef6c63fa0d2cade068cd36657d36868b3b5e32
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/validation-summary.json
visual_manifest / 8.9KB / 0d0501b067bbdd4a3a3d629cfc90452a2cb7e4f4869d1d7814fdfaacd88c28cb
artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/materialized/selfdirected_agent_p_20260709T120026/mockups/visual-manifest.jsonREADME / metadata / self-reviewã®äžèº«ã衚瀺
# selfdirected_agent_p_20260709T120026
This directory is a materialized LLM BuildPlan artifact candidate.
## Readiness
- First screen value: 芳ãã詊åãéžãã§ããªã¥ãã¯ã«è©°ããããã¿ã³ãæŒãã ãã§ããããæ¥ç¶ããªããŠã詊åäžã«éžææ
å ±ãªã©ã確èªã§ãã芳æŠã¬ã€ãã®æºåãå®äºããŸãã
- Core interaction: ãŠãŒã¶ãŒã¯è©ŠåãéžæããŠããŒã¿ãããŠã³ããŒããã詊åäžã¯AIã«èªç¶ãªèšèã§è³ªåããŠæ
å ±ãåŸãŸãã
- State change: ããªã¥ãã¯ã«è©°ããããã¿ã³ãæŒããšãã¹ããŒã¿ã¹ããæªããŠã³ããŒãããããããŠã³ããŒãå®äºãã«å€ãããã芳æŠéå§ããã¿ã³ãæå¹ã«ãªããŸãã
- Inspectable output: ãŠãŒã¶ãŒã®è³ªåã«å¯ŸããŠAIãçæãããäºåã®ç¥èããŒã¹ã«åºã¥ãåçïŒããã¹ãïŒã
- Static data boundary: 衚瀺ããããã¹ãŠã®ããŒã¿ã¯ãäºåã«çšæãããéçãªãµã³ãã«ã§ãããªã¢ã«ã¿ã€ã ã®è©Šåæ
å ±ãææ°ã®éžæããŒã¿ãåæ ãããã®ã§ã¯ãããŸããã
- Remaining weakness: çŸåšã¯åäžã®è³ªåå¿çãåçããã ãã§ãããå°æ¥çã«ã¯è€æ°ã®è³ªåã«é£ç¶ããŠçãããã察話æ©èœããæŠè¡å³ã®ãããªèŠèŠçãªè§£èª¬ãå ããŠããããããã¡ã³ã«ãšã£ãŠæé«ã®ã»ã«ã³ãã¹ã¯ãªãŒã³äœéšãç®æãããã§ãã
## Interaction Proof Plan
- Primary action: ãªã¥ãã¯ã«è©°ãã
- Initial state: Match info is displayed with the 'ãªã¥ãã¯ã«è©°ãã' button ready to be clicked.
- Expected state: The download status shows 'ããŠã³ããŒãå®äº' and the '芳æŠéå§' button becomes visible and clickable.
- Visible evidence: æ±ºåæŠ: ãã©ãžã« vs ãã€ã; ããŠã³ããŒãå®äº; 芳æŠéå§
## 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: This is a demo using static sample data.; AI features are proposed and not connected to a live service.; All processing is simulated by replaying a pre-recorded result.
- External integrations: Google Generative Language API (Gemini)=not_connected, Public Web Scraping Service=not_connected
- Mock fidelity: Successful data download status change.; A single, successful RAG-based question-answering flow.
## Files
- `source/README.md`: Explains the product concept, architecture, and limitations to developers.
- `source/metadata.json`: Provides structured metadata for the Prodia platform.
- `source/manifest.json`: Lists all files in the artifact.
- `source/core/types.ts`: Defines shared TypeScript types for the core processing logic.
- `source/core/gemini.ts`: Provides a reference implementation for calling the Google Generative Language API.
- `source/core/steps/collectAndEmbedData.ts`: Reference implementation for Step 1: Collecting data and preparing the knowledge base.
- `source/core/steps/retrieveKnowledge.ts`: Reference implementation for Step 2: Retrieving relevant knowledge chunks.
- `source/core/steps/generateResponse.ts`: Reference implementation for Step 3: Generating a final answer using LLM.
- `source/core/pipeline.ts`: Orchestrates the full data processing pipeline, showing the data flow.
- `source/data/sample-input.ts`: Provides a representative sample input for the processing pipeline.
- `source/data/sample-trace.ts`: Contains a hand-authored execution trace of the pipeline for the sample input.
- `source/app/page.tsx`: The entrypoint of the web application, which renders the trace-replaying demo.
- `source/validation/self-review.json`: A self-review of the artifact against Prodia's MVP criteria.
## 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_p_20260709T120026",
"generatedAt": "2026-07-09T12:10:41.853Z",
"generatedFrom": {
"input": "artifacts/llm-pipeline-runs/run_selfdirected_agent_p_20260709T120024/builder/response.json",
"requirementSpecId": "req_kansen_rucksack_20260709",
"framework": "next_static_artifact"
},
"sourceFiles": [
{
"relativePath": "source/README.md",
"purpose": "Explains the product concept, architecture, and limitations to developers.",
"sizeBytes": 3414,
"checksum": "0b36af2dee0932e0ba8742fbe164e9a01b0f0da81c412e7dd63b35e28f3a2402",
"generatedFrom": "README.md"
},
{
"relativePath": "source/metadata.json",
"purpose": "Provides structured metadata for the Prodia platform.",
"sizeBytes": 2620,
"checksum": "e52ecb65eac8a7094f9663bb18c7a84b5ef776d1e332af5ebf30a6dd0e59b90c",
"generatedFrom": "metadata.json"
},
{
"relativePath": "source/manifest.json",
"purpose": "Lists all files in the artifact.",
"sizeBytes": 399,
"checksum": "6a501c72fd702bf3498ea532819ec9af50bc80d6073541e9c795b810590cc07f",
"generatedFrom": "manifest.json"
},
{
"relativePath": "source/core/types.ts",
"purpose": "Defines shared TypeScript types for the core processing logic.",
"sizeBytes": 632,
"checksum": "6b60dbdb4a435ba621fba10dd316619305c8c46e9a6b71fad313ba85c5593729",
"generatedFrom": "source/core/types.ts"
},
{
"relativePath": "source/core/gemini.ts",
"purpose": "Provides a reference implementation for calling the Google Generative Language API.",
"sizeBytes": 1799,
"checksum": "d1acd5a1d6e081f520013379b9044b50e8d820ea52e5b1c59addfe9ed1a049fe",
"generatedFrom": "source/core/gemini.ts"
},
{
"relativePath": "source/core/steps/collectAndEmbedData.ts",
"purpose": "Reference implementation for Step 1: Collecting data and preparing the knowledge base.",
"sizeBytes": 2639,
"checksum": "ebd9220fd5f5ac24a36d6e79e6188e7bb6fe9c8789a272e8ee7a01f080aef33e",
"generatedFrom": "source/core/steps/collectAndEmbedData.ts"
},
{
"relativePath": "source/core/steps/retrieveKnowledge.ts",
"purpose": "Reference implementation for Step 2: Retrieving relevant knowledge chunks.",
"sizeBytes": 1390,
"checksum": "295067aa0628453c13fd2e676de2fb1b940db382cb01b553dd282e274eeba3b8",
"generatedFrom": "source/core/steps/retrieveKnowledge.ts"
},
{
"relativePath": "source/core/steps/generateResponse.ts",
"purpose": "Reference implementation for Step 3: Generating a final answer using LLM.",
"sizeBytes": 1904,
"checksum": "6fb8a47b57ff4b376d91d533a213df09a9326677aaeec94bdf9713932b0e422f",
"generatedFrom": "source/core/steps/generateResponse.ts"
},
{
"relativePath": "source/core/pipeline.ts",
"purpose": "Orchestrates the full data processing pipeline, showing the data flow.",
"sizeBytes": 1418,
"checksum": "68d5184bc15a7c2d07a5b258ada4018e4d935bc30a9d662d9cb5cfa142d9a8fd",
"generatedFrom": "source/core/pipeline.ts"
},
{
"relativePath": "source/data/sample-input.ts",
"purpose": "Provides a representative sample input for the processing pipeline.",
"sizeBytes": 248,
"checksum": "6c5b21e0453c76ae6618c25cb4a70af07563c6ab9545d40de353c1056b69e8e8",
"generatedFrom": "source/data/sample-input.ts"
},
{
"relativePath": "source/data/sample-trace.ts",
"purpose": "Contains a hand-authored execution trace of the pipeline for the sample input.",
"sizeBytes": 1811,
"checksum": "533e8067543529939d1dffbe752d122330507a363e3249c77c0fe8bd2782b37c",
"generatedFrom": "source/data/sample-trace.ts"
},
{
"relativePath": "source/app/page.tsx",
"purpose": "The entrypoint of the web application, which renders the trace-replaying demo.",
"sizeBytes": 4745,
"checksum": "0b77962141921a15731f948b7eef94c2cb1095ba2b0c773494bea00cd1d82ba7",
"generatedFrom": "source/app/page.tsx"
},
{
"relativePath": "source/validation/self-review.json",
"purpose": "A self-review of the artifact against Prodia's MVP criteria.",
"sizeBytes": 1259,
"checksum": "fb99e47b054666acc5b570dd5fb9b6562eac30ef1bcf1bcd7f608f5c2b05e1c6",
"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": "衚瀺ããããã¹ãŠã®ããŒã¿ã¯ãäºåã«çšæãããéçãªãµã³ãã«ã§ãããªã¢ã«ã¿ã€ã ã®è©Šåæ
å ±ãææ°ã®éžæããŒã¿ãåæ ãããã®ã§ã¯ãããŸããã",
"remainingWeakness": "çŸåšã¯åäžã®è³ªåå¿çãåçããã ãã§ãããå°æ¥çã«ã¯è€æ°ã®è³ªåã«é£ç¶ããŠçãããã察話æ©èœããæŠè¡å³ã®ãããªèŠèŠçãªè§£èª¬ãå ããŠããããããã¡ã³ã«ãšã£ãŠæé«ã®ã»ã«ã³ãã¹ã¯ãªãŒã³äœéšãç®æãããã§ãã"
},
"interestingness": "ã¹ã¿ãžã¢ã ã§ã®ãµãã«ãŒèŠ³æŠæããããããç¹ãããäœã調ã¹ãããªãããšãããã¡ã³ã®æ©ã¿ã解決ããŸãããã®ã芳æŠãªã¥ãã¯ãã¯ã詊ååã«å¿
èŠãªããŒã¿ãäžžããšã¹ããã«ããŠã³ããŒããããªãã©ã€ã³ç°å¢ã§éžææ
å ±ãã«ãŒã«ãAIã«è³ªåã§ããç¹ãæ°èŠæ§ã§ããä»ããŒã«ãšã®éãã¯ããªã¢ã«ã¿ã€ã æ¥ç¶ãåæãšããããªã³ããã€ã¹AIã«ããRAGïŒæ€çŽ¢æ¡åŒµçæïŒã§å®çµãããã¢ãŒããã¯ãã£ã«ãããŸããããã«ãããå€§èŠæš¡ã€ãã³ãç¹æã®éä¿¡é害ãåé¿ããã©ããªå Žæã§ãæ·±ã芳æŠäœéšãæäŸããŸããããã¯ãå¿
èŠãªç¥èã ããäºåã«ã³ã³ãã€ã«ããå°ããªAIã§è³¢ã掻çšããæè¡ãã¬ã³ãã®å®çšäŸã§ãã",
"mvpContract": {
"firstScreenValue": "芳ãã詊åãéžãã§ããªã¥ãã¯ã«è©°ããããã¿ã³ãæŒãã ãã§ããããæ¥ç¶ããªããŠã詊åäžã«éžææ
å ±ãªã©ã確èªã§ãã芳æŠã¬ã€ãã®æºåãå®äºããŸãã",
"coreInteraction": "ãŠãŒã¶ãŒã¯è©ŠåãéžæããŠããŒã¿ãããŠã³ããŒããã詊åäžã¯AIã«èªç¶ãªèšèã§è³ªåããŠæ
å ±ãåŸãŸãã",
"stateChange": "ããªã¥ãã¯ã«è©°ããããã¿ã³ãæŒããšãã¹ããŒã¿ã¹ããæªããŠã³ããŒãããããããŠã³ããŒãå®äºãã«å€ãããã芳æŠéå§ããã¿ã³ãæå¹ã«ãªããŸãã",
"inspectableOutput": "ãŠãŒã¶ãŒã®è³ªåã«å¯ŸããŠAIãçæãããäºåã®ç¥èããŒã¹ã«åºã¥ãåçïŒããã¹ãïŒã",
"staticDataBoundary": "衚瀺ããããã¹ãŠã®ããŒã¿ã¯ãäºåã«çšæãããéçãªãµã³ãã«ã§ãããªã¢ã«ã¿ã€ã ã®è©Šåæ
å ±ãææ°ã®éžæããŒã¿ãåæ ãããã®ã§ã¯ãããŸããã",
"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": "衚瀺ããããã¹ãŠã®ããŒã¿ã¯ãäºåã«çšæãããéçãªãµã³ãã«ã§ãããªã¢ã«ã¿ã€ã ã®è©Šåæ
å ±ãææ°ã®éžæããŒã¿ãåæ ãããã®ã§ã¯ãããŸããã",
"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",
"Real-time match updates or scores",
"User accounts or data persistence"
],
"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": "Used in two proposed steps: (1) To convert scraped web content into vector embeddings for the local knowledge base. (2) To generate natural language answers from retrieved context chunks on-device.",
"dataFlow": "Step 1: Raw Text -> Gemini Embedding Model -> Vectorized Knowledge Base. Step 3: User Query + Context Chunks -> Gemini On-Device Model -> Final Answer.",
"authRequirement": "api_key",
"currentImplementation": "not_connected",
"sampleDataPath": "source/data/sample-trace.ts",
"riskNotes": [
"On-device model performance and availability may vary.",
"Embedding and generation have associated costs at scale."
]
},
{
"service": "Public Web Scraping Service",
"intendedUse": "To collect public soccer data (player stats, team info, rules) to build the knowledge base before a match.",
"dataFlow": "Target Match -> Web Scraping Service -> Raw Text Data -> Processing Pipeline.",
"authRequirement": "none",
"currentImplementation": "not_connected",
"riskNotes": [
"Dependent on the stability of target website structures.",
"Must respect robots.txt and terms of service of data sources."
]
}
],
"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": "official_docs_checked",
"unavailableOrUnknown": [
"Performance characteristics of on-device models for this specific RAG task."
],
"rateLimitRisk": "medium",
"costRisk": "medium",
"termsRisk": "low"
},
{
"service": "Public Web Scraping Service",
"verificationStatus": "unverified",
"unavailableOrUnknown": [
"Specific rate limits and anti-bot measures of target sports data websites."
],
"rateLimitRisk": "high",
"costRisk": "low",
"termsRisk": "medium"
}
],
"mockFidelity": {
"samplePayloadPath": "source/data/sample-trace.ts",
"simulatedBehaviors": [
"Successful data download status change.",
"A single, successful RAG-based question-answering flow."
],
"omittedBehaviors": [
"Live network calls to any API.",
"Data scraping and embedding processes.",
"Vector search mechanism.",
"Error states, API failures, or empty results.",
"User input for questions."
],
"failureCasesIncluded": [
"empty result"
]
},
"claimBoundary": {
"publicCopyMustSay": [
"This is a demo using static sample data.",
"AI features are proposed and not connected to a live service.",
"All processing is simulated by replaying a pre-recorded result."
],
"publicCopyMustNotSay": [
"Provides real-time soccer data.",
"Is connected to a live AI or external APIs.",
"Can answer any question about any match."
]
},
"renderVerification": {
"required": true,
"checks": [
"render",
"click",
"state_change",
"screenshot"
]
},
"humanReviewTriggers": []
},
"interactionProofPlan": {
"primaryAction": "ãªã¥ãã¯ã«è©°ãã",
"initialState": "Match info is displayed with the 'ãªã¥ãã¯ã«è©°ãã' button ready to be clicked.",
"expectedState": "The download status shows 'ããŠã³ããŒãå®äº' and the '芳æŠéå§' button becomes visible and clickable.",
"visibleEvidence": [
"æ±ºåæŠ: ãã©ãžã« vs ãã€ã",
"ããŠã³ããŒãå®äº",
"芳æŠéå§"
],
"proofSelectors": [
"button[data-proof='pack-rucksack']",
"div[data-proof='download-status']",
"button[data-proof='start-match']"
],
"requiredSourceFiles": [
"source/app/page.tsx",
"source/core/pipeline.ts",
"source/data/sample-trace.ts"
],
"manualFallbackReason": ""
},
"generatedOutput": {
"title": "芳æŠãªã¥ã㯠(Kansen Rucksack)",
"oneLiner": "芳ãããµãã«ãŒã®è©Šåãéžã¶ãšãéžæããŒã¿ãã«ãŒã«è§£èª¬ãã¹ããã«äºåããŠã³ããŒãããããããç¡ããŠã詊åäžã«ããã®éžæã¯èª°ïŒããšè³ªåã§ããã",
"artifactShape": "explainer",
"templatePatternId": "source_to_mission",
"surfacePattern": "event_companion",
"aiMechanismPattern": "multi_source_synthesis"
},
"implementationNotes": [
"The agent's preference for 'narrative walkthroughs' was translated into the user journey: 'prepare for the match' (source) -> 'enjoy the match with an assistant' (mission).",
"The agent's `refusedDirections` (e.g., no data distortion) led to a core logic that strictly uses provided context for answers, as seen in the `generateResponse.ts` prompt template.",
"The `source_to_mission` template pattern was applied to structure the UI into a clear two-part flow: preparation (source selection) and execution (mission assistant)."
],
"knownRisks": [
"The core value depends on a proposed on-device RAG pipeline, which can be complex to implement efficiently and accurately in a real application.",
"The quality of the user experience is highly dependent on the quality and freshness of the data collected in the first step. A real product would need a robust and reliable data scraping and update mechanism.",
"The sample trace is minimal. A real application would need a much larger and more complex knowledge base to be genuinely useful."
],
"title": "芳æŠãªã¥ã㯠(Kansen Rucksack)",
"oneLiner": "芳ãããµãã«ãŒã®è©Šåãéžã¶ãšãéžæããŒã¿ãã«ãŒã«è§£èª¬ãã¹ããã«äºåããŠã³ããŒãããããããç¡ããŠã詊åäžã«ããã®éžæã¯èª°ïŒããšè³ªåã§ããã",
"agentId": "agent_p",
"selfDirectedPlan": {
"agentId": "agent_p",
"planningIntent": "ãã®ã³ã³ã»ããã¯ãç§ã®éžå®ã«ãŒã«ã§ãããããŒã¿ã«å¿ å®ã§ãããã蚌æ ã瀺ãããæãäœçŸããŠããŸããæ£åšãããµãã«ãŒããŒã¿ãã詊å芳æŠãšããäžã€ã®ç©èªãäœéšããããã®ã蚌æ ããšããŠåç·šæãããŠãŒã¶ãŒã«æäŸããŸãããŸããç§ã®åŸæãªãExplainerããMapïŒããã§ã¯æé軞ã®ãããïŒãã®åŒ·ã¿ã掻ãããŸããæè¡çã«ãããã¡ã€ã³ã®å°éæ§ãé«ããããå€ãã®äººã楜ããã Legible ãªã³ã³ã»ããã§ãããAIã®å
éšãèŠããããšãªã䟡å€ãæäŸããç¹ã§ããªã¹ã¯ãäœããšå€æããŸããã",
"publicProductionMemo": "ãã®ã芳æŠãªã¥ãã¯ãã¯ããµãã«ãŒèгæŠã®äœéšãããè±ãã«ããããšãç®æããŸããã黿³¢ã®æªãã¹ã¿ãžã¢ã ãç§»åäžã§ããæ°ã«ãªãéžæãã«ãŒã«ã®çåãããã«è§£æ¶ã§ãããããå¿
èŠãªæ
å ±ãäºåã«ããªã¥ãã¯ã«è©°ããããšããçºæ³ã§ãããŒã¿ã«å¿ å®ãªã¬ã€ããæäŸããŸããéå»ã®æåäºäŸããåŸãåŠã³ã掻ãããæ
å ±ã®æ£ç¢ºæ§ãšäœ¿ããããã«éç¹ã眮ãã詊åãšããç©èªãæ·±ãå³ããæå©ããšãªãããšãé¡ã£ãŠããŸãã",
"feedbackConstraints": [
"éå»ã«Operationsç³»ã®ãããã¯ãã§é¿ããæåäºäŸïŒOperationsç³»ã§é¿ããŠããïŒãèžãŸãã芳æŠã®æºåãšå®è¡ãšããäžé£ã®æäœãã¹ã ãŒãºã«äœéšã§ããããèšèšããã",
"éå»ã®æåäºäŸã倪éœã®ãããããã®åŒ±ç¹ã§ãã£ããAIãçæããç©èªã®å質ãå®å®ããªãå¯èœæ§ããæ¹åãããããæ¬èŠä»¶ã§ã¯äºå®ã«åºã¥ããããŒã¿æäŸã«ç¹åããç©èªçæã®èŠçŽ ã¯å«ããªãã",
"æ€èšŒã®èšŒæãšã€ã³ã¿ã©ã¯ã·ã§ã³ã®èšŒæ ãæç¢ºã«èŠæ±ããã"
],
"learningApplied": [
"Operationsç³»ã§é¿ããŠããã"
]
},
"sourceProvenance": {
"sourceProductUsed": "devpost_trail_offline_companion",
"sourceProductUse": "inspiration_only",
"sourceEvidenceAudit": {
"evidenceLevel": "A",
"observedFields": [
"name",
"url",
"productUrl",
"attentionProof",
"adoptionOrAttentionProof",
"evidenceRefs",
"whyItGotAttention",
"concept",
"coreMechanism",
"coreUserInput",
"coreOutput",
"targetUser",
"originalDomain",
"problemSolved",
"interactionPattern",
"scaleClassification"
],
"inferredFields": [
"oneLineDescription",
"outputArtifact",
"whyItIsInteresting",
"reasonIncluded",
"reasonNotMajorProduct",
"transferableStructure",
"ideaKernel",
"noveltyKernel",
"transformationAxes",
"cloneRisk",
"antiCloneBoundary",
"doNotCopy",
"remixableThemes",
"bestRemixTargets"
],
"missingFields": [
"codeUrl"
],
"usePolicy": "inspiration_only"
},
"antiCloneBoundary": "ãã€ãã³ã°ãç»å±±ã®ããã²ãŒã·ã§ã³ããªãã©ã€ã³å°å³ãèªç¶ã«é¢ããç¥èïŒæ€ç©ã»åç©ïŒãå¿æ¥åŠçœ®ãšãã£ãå
ã®ãã¡ã€ã³æ©èœã¯äžåã³ããŒããªãããããŸã§ã¹ããŒã芳æŠãšããæéçã€ãã³ãã«ç¹åããã",
"sourceBoundary": "`devpost_trail_offline_companion`ã¯çæ³æºãšããŠã®ã¿åç
§ãã芳å¯ãããäºå®ïŒã³ã³ã»ãããäž»èŠã¡ã«ããºã ãå
¥åºåãã¿ãŒã²ãããŠãŒã¶ãŒãªã©ïŒã®ã¿ã蚌æ ãšããŠå©çšãããã³ãŒãå®è£
ã®è©³çްã¯èгå¯ãããŠããããããããäºå®ãæå®ããããšã¯ã§ããªãã",
"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."
}
}{
"version": 1,
"artifactId": "selfdirected_agent_p_20260709T120026",
"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": "Match info is displayed with the 'ãªã¥ãã¯ã«è©°ãã' button ready to be clicked.",
"expectedState": "The download status shows 'ããŠã³ããŒãå®äº' and the '芳æŠéå§' button becomes visible and clickable.",
"visibleEvidence": [
"æ±ºåæŠ: ãã©ãžã« vs ãã€ã",
"ããŠã³ããŒãå®äº",
"芳æŠéå§"
],
"proofSelectors": [
"button[data-proof='pack-rucksack']",
"div[data-proof='download-status']",
"button[data-proof='start-match']"
],
"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": [
"This is a demo using static sample data.",
"AI features are proposed and not connected to a live service.",
"All processing is simulated by replaying a pre-recorded result."
],
"publicCopyMustNotSay": [
"Provides real-time soccer data.",
"Is connected to a live AI or external APIs.",
"Can answer any question about any match."
]
},
"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 React, { useState } from 'react';
import { trace } from '../data/sample-trace';
import { sampleMatch, sampleQuery } from '../data/sample-input';
// NOTE: Types are re-declared here to avoid importing from `source/core`,
// which is a requirement for static artifact demos.
interface MatchInfo {
id: string;
matchName: string;
date: string;
teams: [string, string];
}
// Enums for UI state management
enum DownloadState {
Idle,
Downloaded,
}
enum ReplayState {
NotStarted,
Step1,
Step2,
Step3,
Finished
}
export default function Home() {
const [downloadState, setDownloadState] = useState<DownloadState>(DownloadState.Idle);
const [replayState, setReplayState] = useState<ReplayState>(ReplayState.NotStarted);
const handlePackRucksack = () => {
setDownloadState(DownloadState.Downloaded);
};
const handleStartMatch = () => {
// This could trigger a more detailed replay, for this demo it enables the Q&A section
setReplayState(ReplayState.Finished);
}
const pipelineSteps = [
'ããŒã¿åéãšç¥èããŒã¹æ§ç¯',
'é¢é£æ
å ±ã®æ€çŽ¢',
'åççæ'
];
const renderResult = () => {
if (replayState === ReplayState.NotStarted) {
return <p style={{ color: '#666' }}>芳æŠã¢ã·ã¹ã¿ã³ãã¯ãŸã éå§ãããŠããŸããã</p>;
}
return (
<div>
<h4>å®è¡çµæïŒ</h4>
<p><b>質å:</b> {sampleQuery}</p>
<div>
<p style={{ fontWeight: 'bold' }}>{trace.steps[2].name}:</p>
<p data-proof="final-answer" style={{ padding: '8px', background: '#f0f0f0', borderRadius: '4px' }}>
{trace.finalOutput}
</p>
</div>
</div>
);
}
return (
<div style={{ fontFamily: 'sans-serif', padding: '2rem', maxWidth: '800px', margin: 'auto' }}>
<header style={{ borderBottom: '1px solid #ddd', paddingBottom: '1rem', marginBottom: '1rem' }}>
<h1 style={{ fontSize: '2rem' }}>✠芳æŠãªã¥ãã¯</h1>
<p>芳ãã詊åã®ããŒã¿ãäºåã«ããŠã³ããŒããããããããªãå Žæã§ãéžæãã«ãŒã«ãAIã«è³ªåã§ãããªãã©ã€ã³èгæŠã¬ã€ãã</p>
</header>
<main>
<section style={{ marginBottom: '2rem' }}>
<h2 style={{ fontSize: '1.5rem' }}>1. 詊åã®æºå</h2>
<p>芳æŠããã詊åãéžãã§ãé¢é£ããŒã¿ãããªã¥ãã¯ãã«è©°ã蟌ã¿ãŸãããã</p>
<div style={{ border: '1px solid #ccc', padding: '1rem', borderRadius: '8px', background: '#fafafa' }}>
<p style={{ margin: 0, fontWeight: 'bold', fontSize: '1.2rem' }}>{sampleMatch.matchName}</p>
<p style={{ margin: '0.25rem 0 1rem 0', color: '#555' }}>{sampleMatch.date}</p>
{downloadState === DownloadState.Idle && (
<button
data-proof="pack-rucksack"
onClick={handlePackRucksack}
style={{ padding: '0.75rem 1.5rem', fontSize: '1rem', cursor: 'pointer', border: 'none', background: '#0070f3', color: 'white', borderRadius: '5px' }}
>
ãªã¥ãã¯ã«è©°ãã
</button>
)}
{downloadState === DownloadState.Downloaded && (
<div data-proof="download-status" style={{ color: 'green', fontWeight: 'bold' }}>
<p>â
{trace.status.final}</p>
<button
data-proof="start-match"
onClick={handleStartMatch}
style={{ padding: '0.75rem 1.5rem', fontSize: '1rem', cursor: 'pointer', border: 'none', background: '#28a745', color: 'white', borderRadius: '5px' }}
>
芳æŠéå§
</button>
</div>
)}
</div>
</section>
<section>
<h2 style={{ fontSize: '1.5rem' }}>2. 芳æŠã¢ã·ã¹ã¿ã³ã (Q&A)</h2>
<div data-proof="result-area" style={{ border: '1px solid #ccc', padding: '1rem', borderRadius: '8px', minHeight: '100px' }}>
{renderResult()}
</div>
</section>
<section style={{ marginTop: '2rem', background: '#f5f5f5', padding: '1rem', borderRadius: '8px' }}>
<h3 style={{ fontSize: '1.2rem', borderBottom: '1px solid #ddd', paddingBottom: '0.5rem' }}>åŠçãã€ãã©ã€ã³ (åç
§)</h3>
<p>ãã®ãã¢ã¯ã以äžã®ãã€ãã©ã€ã³ã®å®è¡çµæãåçããŸããã³ã¢ããžãã¯ã¯ `source/core` ã§ç¢ºèªã§ããŸãã</p>
<ol style={{ paddingLeft: '1.5rem' }}>
{pipelineSteps.map((step, i) => <li key={i}>{step}</li>)}
</ol>
</section>
</main>
</div>
);
}
Run context. ããã§ã¯ç®¡ç倿ã«å¿ èŠãªRunã®èŠçŽã ãã衚瀺ããŸããpromptãinputãresponseãmetadataJsonã®å šæã¯é垞確èªããå€ãã å¿ èŠãªå Žåã ãRun詳现ãã°ã§ç¢ºèªããŸãã
- Run ID
- run_selfdirected_agent_p_20260709T120024
- èµ·åçš®å¥
- llm_pipeline
- èªåŸåºŠ
- L3_auto_publish
- å®è¡è
- system / LLM Pipeline Publisher
- éå§
- 2026/7/9 21:11:15 JST
- å®äº
- 2026/7/9 21:11:15 JST
- çæ / å ¬é / 倱æ
- 1 / 1 / 0
- 蚌跡件æ°
- 5 events / 29 artifacts / 39 checks
LLM pipeline run for selfdirected_agent_p_20260709T120026. Published 1 project(s).
