Internal Product Info
TracePoint
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.3KB / b6f58b268b0812a596ba335600833fb9b626d83fa1279090ff4b4f25cea6ed35
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/demo-placeholder.md
interaction_proof / 2.1KB / e421368d29e74dba9bd46d8ed6bfff25c5814283d54956dfbf4dd68a4ac6e309
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/validation/interaction-proof.json
metadata / 20.1KB / 35e0d4849e5589238a64f8f6890ea598dc48eb31a010114af0f6d02365ce0633
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/metadata.json
mvp_contract_v2 / 12.7KB / d5976dc4e911b83cd59d1c1fabad5cd443a7287a25562efd7be450a8211f0b77
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/validation/mvp-contract-v2.json
product_logo / 528B / cd339a38ed9fdec8da3a108d70ce4eaeb42afb0b77a0fedaf143adb2889d6a37
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/mockups/product-logo.svg
product_showcase / 2.1MB / 6aa4e82cba6f8b30746e1536c55500087a81ca7fb98d7e0020c35ce7b91346f2
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/mockups/product-showcase.png
product_showcase / 2.1KB / b0bd8abdd54fc9c4a5c69f29532e40781c64f1e8fe1c922d12a4c89d55b2bb69
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/mockups/product-showcase.svg
product_thumbnail / 1.5KB / b7f807c603dce329809bc7c4258b51c6071fc8f2f0cd483c48aebbd4458cdb07
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/mockups/product-thumbnail.svg
publisher_response / 992B / a647ffdf3a90394b430ea735b1f071717f536700c80c93f4b983ae4266e6920e
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/publisher/response.json
publish_readiness / 6.0KB / 3988a380030b083836253a580b990e7bdb52ccb44db0ea5725991ecb34efd289
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/publish-readiness.json
readme / 5.5KB / 20e8d7785b1bc0fe25fd5ab04df3d77aad00adea838b22f2951340069e65997a
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/README.md
render_screenshot / 58.6KB / 41b8d8e19b4b4b6ca1d294f11d830175fc67e6f72c7b6fc3533705b511f02290
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/validation/render-verification.png
render_verification / 2.1KB / 432ea7bede52a3a3dedf56a02c7ce35b463eb72e319ae7c0ee99405d32261dda
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/validation/render-verification.json
self_review / 2.8KB / a313ed8c46460388421fe5f1d79f594896d3da7a8d5975df49ef398a68f81f55
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/validation/self-review.json
source / 11.5KB / a013604352df486d09abd16203d6f595ee5a8d0391f67d468c030b168f5f6f86
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/app/page.tsx
source / 3.9KB / 9ee59f4a5d7761accb5d9e094e3c7d87c66f60de5ee97cf01653a220c79ac0c1
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/core/gemini.ts
source / 1.7KB / 3b1830909858f431893fe58899123865a8b017c1a1b511733142c86e07b44efe
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/core/pipeline.ts
source / 1.5KB / caa65be5360c518d44dc7519ab51811f60a531e7ffe996478e3393be0212bdca
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/core/steps/1-decompose-claim.ts
source / 1.1KB / 2ae7f33ff0db76ba627a75c4128780a8fb8c73496ab67d26e4f58bc1db8ca036
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/core/steps/2-find-evidence.ts
source / 1.4KB / 9859b17ced00ad6eb929eca0b660abcd0d9b0875c4a19f758f76b36e792c0db6
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/core/steps/3-link-and-score.ts
source / 1.3KB / d0ec1df9baa2f133373b87508606591fb9c3a58088240ed7920ddaede83c7f56
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/core/steps/4-build-graph.ts
source / 719B / ac793aab61d212ebd0d089b1ce9975f941534aea3192df760fac1a287cfd5e0a
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/core/types.ts
source / 219B / ecd55f758c54710bbab6c2f4c8340b2cb4b17a17d2732e1cfa4f6fa26668c498
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/data/sample-input.ts
source / 2.6KB / 691798f782f0bcc94dd7287b11775101df1e8e079aaad2d2fb257c14f61eacb0
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/data/sample-trace.ts
source / 398B / ed78131cbc9995da34095f194ab091836df6a5b8c1f807b69cd89b4372fa3a77
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/manifest.json
source / 2.7KB / a512e0a6814e2eada4bad51c9604fc1e59ccddc8543d8d63fb2bbd94308ae6ee
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/metadata.json
source / 3.7KB / f0604607897b418cc4a8173d2e65031f0490d9604e81976c270253f113282315
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/README.md
source / 1.9KB / ca67dd81c4ca12d4832ef1d0a16ecc9da9cffbcab57f37974a23440c96fd41e4
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/source/validation/self-review.json
validation_summary / 3.7KB / d37edcde2237e471f6f1d01154d671883bfdbdd30548943cd4c8899d7b1e1cc2
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/validation-summary.json
visual_manifest / 8.7KB / fbccb0769c65e064c5976358a9b81251fa77f55b0c4ba122246d00ff551715fa
artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/materialized/selfdirected_agent_g_20260707T184804/mockups/visual-manifest.jsonREADME / metadata / self-reviewã®äžèº«ã衚瀺
# selfdirected_agent_g_20260707T184804
This directory is a materialized LLM BuildPlan artifact candidate.
## Readiness
- First screen value: AIãæžããäžæã®è£åŽã«ãããè«çã®çµã¿ç«ãŠããããã¿ã³äžã€ã§å¯èŠåã§ããŸããã©ã®äž»åŒµãã©ã®è³æããæ¥ãŠããã®ããäžç®ã§åãããAIåºåã®ä¿¡é Œæ§ãèªåèªèº«ã§å€æããæå©ããšãªããŸãã
- Core interaction: ããµã³ãã«å®è¡ãã¬ãŒã¹ãåçããã¿ã³ãæŒããAIã®äž»åŒµãåæãããŠããããã»ã¹ãã¹ããããã€ã¹ãããã§ç¢ºèªããã
- State change: ãã¿ã³ãæŒããšã空ã ã£ãçµæãšãªã¢ã«ãäž»åŒµã®æçãšæ ¹æ è³æãçµã¶ã€ã³ã¿ã©ã¯ãã£ããªã°ã©ãã衚瀺ãããã
- Inspectable output: æçµçã«ã䞻匵ã®ããŒãã¬ãŒãºãšæ ¹æ è³æãããŒããšããäž¡è
ã®é¢ä¿æ§ããšããžãšããŠè¡šçŸããã°ã©ãããŒã¿ãåºåãããã
- Static data boundary: 衚瀺ããããã¹ãŠã®ããŒã¿ã¯ãäºåã«çšæãããåäžã®ãµã³ãã«å
¥åã«åºã¥ããŠããŸãããŠãŒã¶ãŒãä»»æã®ããã¹ããå
¥åãããããªã¢ã«ã¿ã€ã ã§AIåŠçãå®è¡ãããããããšã¯ã§ããŸããã
- Remaining weakness: çŸåšã¯åäžã®ãµã³ãã«åçã®ã¿ã§ãããæ¬¡ã¯è€æ°ã®ãµã³ãã«ã·ããªãªãéžæå¯èœã«ããæ§ã
ãªäž»åŒµã®ãã¿ãŒã³ãæ€èšŒã§ããããã«ãããã§ããå°æ¥çã«ã¯ãå®éã®LLMãšé£æºãããŠãŒã¶ãŒãèªç±ã«å
¥åããããã¹ãããã®å Žã§åæããã©ã€ãçãç®æããããšèããŠããŸãã
## Interaction Proof Plan
- Primary action: ãµã³ãã«å®è¡ãã¬ãŒã¹ãåç
- Initial state: çµæè¡šç€ºãšãªã¢ã«ããŸã å®è¡ãããŠããŸããããšè¡šç€ºãããŠããç¶æ
ã
- Expected state: çµæè¡šç€ºãšãªã¢ã«ããã€ãã©ã€ã³ã®å
šã¹ãããã®å®è¡çµæãšããã¬ãŒã¹å®äºãã®ã¡ãã»ãŒãžã衚瀺ãããç¶æ
ã
- Visible evidence: 䞻匵ã®åè§£ (Decompose Claim); æ ¹æ ã®æ€çŽ¢ (Find Evidence); é¢é£æ§ã®è©äŸ¡ (Link and Score); ã°ã©ãã®æ§ç¯ (Build Graph); ãã¬ãŒã¹å®äº
## 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åŠçãšãµã³ãã«ããŒã¿ã䜿çšããŠããŸãã; 衚瀺ãããæ ¹æ ãé¢é£æ§ã¯ãAIã«ããæšè«çµæã§ãããå®éã®äºå®ç¢ºèªãå°éå®¶ã®å€æã代æ¿ãããã®ã§ã¯ãããŸããã
- External integrations: Google Gemini API=not_connected
- Mock fidelity: A multi-step AI analysis pipeline's successful execution.; Decomposition of a claim into fragments.; Linking claim fragments to source documents.; Classification of links into 'direct_quote' and 'inference'.
## Files
- `source/README.md`: 補åã®æŠèŠãäœ¿ãæ¹ãæè¡çãªã³ã³ã»ããããããŠãã¢ã®éçã«ã€ããŠèª¬æããŸãã
- `source/metadata.json`: ãã«ãã®ã¡ã¿ããŒã¿ãå®çŸ©ããŸãã
- `source/manifest.json`: ãã«ãã«å«ãŸãããã¹ãŠã®ãã¡ã€ã«ã®ãªã¹ãã§ãã
- `source/validation/self-review.json`: Prodiaã®MVPåºæºã«å¯Ÿããèªå·±è©äŸ¡ã§ãã
- `source/app/page.tsx`: ã¢ããªã±ãŒã·ã§ã³ã®ãšã³ããªãŒãã€ã³ãã§ãããUIã¬ã³ããªã³ã°ãšã€ã³ã¿ã©ã¯ã·ã§ã³ãåŠçããŸãã
- `source/core/types.ts`: ã³ã¢ããžãã¯ã§äœ¿ãããããŒã¿æ§é ã®åãå®çŸ©ããŸãã
- `source/core/pipeline.ts`: äž»åŒµã®æ€èšŒããã»ã¹å
šäœããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŸãã
- `source/core/gemini.ts`: Google Gemini APIãšã®éä¿¡ãã¿ãŒã³ãå®çŸ©ããŸãã
- `source/core/steps/1-decompose-claim.ts`: ãã€ãã©ã€ã³ã®ç¬¬1ã¹ããã: AIã®äž»åŒµãããŒãã¬ãŒãºã«åè§£ããŸãã
- `source/core/steps/2-find-evidence.ts`: ãã€ãã©ã€ã³ã®ç¬¬2ã¹ããã: åããŒãã¬ãŒãºã«é¢é£ããæ ¹æ è³æãæ€çŽ¢ããŸãã
- `source/core/steps/3-link-and-score.ts`: ãã€ãã©ã€ã³ã®ç¬¬3ã¹ããã: äž»åŒµãšæ ¹æ ã®é¢ä¿æ§ãè©äŸ¡ã»ã¹ã³ã¢ãªã³ã°ããŸãã
- `source/core/steps/4-build-graph.ts`: ãã€ãã©ã€ã³ã®æçµã¹ããã: åæçµæãèŠèŠçãªã°ã©ããšããŠæ§ç¯ããŸãã
- `source/data/sample-input.ts`: æ€èšŒå¯Ÿè±¡ãšãªããµã³ãã«AI䞻匵ããã¹ãã§ãã
- `source/data/sample-trace.ts`: ãµã³ãã«å
¥åã«å¯Ÿããããã€ãã©ã€ã³ã®åã¹ãããã®å®è¡çµæãèšé²ãããã¬ãŒã¹ããŒã¿ã§ãã
## 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_g_20260707T184804",
"generatedAt": "2026-07-07T19:01:12.234Z",
"generatedFrom": {
"input": "artifacts/llm-pipeline-runs/run_selfdirected_agent_g_20260707T184804/builder/response.json",
"requirementSpecId": "run_selfdirected_agent_g_20260707T184804",
"framework": "next_static_artifact"
},
"sourceFiles": [
{
"relativePath": "source/README.md",
"purpose": "補åã®æŠèŠãäœ¿ãæ¹ãæè¡çãªã³ã³ã»ããããããŠãã¢ã®éçã«ã€ããŠèª¬æããŸãã",
"sizeBytes": 3778,
"checksum": "f0604607897b418cc4a8173d2e65031f0490d9604e81976c270253f113282315",
"generatedFrom": "README.md"
},
{
"relativePath": "source/metadata.json",
"purpose": "ãã«ãã®ã¡ã¿ããŒã¿ãå®çŸ©ããŸãã",
"sizeBytes": 2792,
"checksum": "7ff86d5cf4c8bd981876e199e6431f9aa6f6c757ce6ffcb852e340f5e875808d",
"generatedFrom": "metadata.json"
},
{
"relativePath": "source/manifest.json",
"purpose": "ãã«ãã«å«ãŸãããã¹ãŠã®ãã¡ã€ã«ã®ãªã¹ãã§ãã",
"sizeBytes": 397,
"checksum": "8ed07c0e03b4015a8df4e70be069c208cace0403fe0625a7fd4fc0bc04ec8343",
"generatedFrom": "manifest.json"
},
{
"relativePath": "source/validation/self-review.json",
"purpose": "Prodiaã®MVPåºæºã«å¯Ÿããèªå·±è©äŸ¡ã§ãã",
"sizeBytes": 1934,
"checksum": "a38c45d5ce075b1ae793afc78b52f9357e261afe401a3bb8772798d4278ffbf8",
"generatedFrom": "validation/self-review.json"
},
{
"relativePath": "source/app/page.tsx",
"purpose": "ã¢ããªã±ãŒã·ã§ã³ã®ãšã³ããªãŒãã€ã³ãã§ãããUIã¬ã³ããªã³ã°ãšã€ã³ã¿ã©ã¯ã·ã§ã³ãåŠçããŸãã",
"sizeBytes": 11726,
"checksum": "1264d68b8c54fad45a0abbcac0f055235bf7d0185d71bc4fed0d346dff96ce77",
"generatedFrom": "source/app/page.tsx"
},
{
"relativePath": "source/core/types.ts",
"purpose": "ã³ã¢ããžãã¯ã§äœ¿ãããããŒã¿æ§é ã®åãå®çŸ©ããŸãã",
"sizeBytes": 719,
"checksum": "ac793aab61d212ebd0d089b1ce9975f941534aea3192df760fac1a287cfd5e0a",
"generatedFrom": "source/core/types.ts"
},
{
"relativePath": "source/core/pipeline.ts",
"purpose": "äž»åŒµã®æ€èšŒããã»ã¹å
šäœããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŸãã",
"sizeBytes": 1715,
"checksum": "3b1830909858f431893fe58899123865a8b017c1a1b511733142c86e07b44efe",
"generatedFrom": "source/core/pipeline.ts"
},
{
"relativePath": "source/core/gemini.ts",
"purpose": "Google Gemini APIãšã®éä¿¡ãã¿ãŒã³ãå®çŸ©ããŸãã",
"sizeBytes": 3993,
"checksum": "9ee59f4a5d7761accb5d9e094e3c7d87c66f60de5ee97cf01653a220c79ac0c1",
"generatedFrom": "source/core/gemini.ts"
},
{
"relativePath": "source/core/steps/1-decompose-claim.ts",
"purpose": "ãã€ãã©ã€ã³ã®ç¬¬1ã¹ããã: AIã®äž»åŒµãããŒãã¬ãŒãºã«åè§£ããŸãã",
"sizeBytes": 1578,
"checksum": "caa65be5360c518d44dc7519ab51811f60a531e7ffe996478e3393be0212bdca",
"generatedFrom": "source/core/steps/1-decompose-claim.ts"
},
{
"relativePath": "source/core/steps/2-find-evidence.ts",
"purpose": "ãã€ãã©ã€ã³ã®ç¬¬2ã¹ããã: åããŒãã¬ãŒãºã«é¢é£ããæ ¹æ è³æãæ€çŽ¢ããŸãã",
"sizeBytes": 1165,
"checksum": "2ae7f33ff0db76ba627a75c4128780a8fb8c73496ab67d26e4f58bc1db8ca036",
"generatedFrom": "source/core/steps/2-find-evidence.ts"
},
{
"relativePath": "source/core/steps/3-link-and-score.ts",
"purpose": "ãã€ãã©ã€ã³ã®ç¬¬3ã¹ããã: äž»åŒµãšæ ¹æ ã®é¢ä¿æ§ãè©äŸ¡ã»ã¹ã³ã¢ãªã³ã°ããŸãã",
"sizeBytes": 1480,
"checksum": "9859b17ced00ad6eb929eca0b660abcd0d9b0875c4a19f758f76b36e792c0db6",
"generatedFrom": "source/core/steps/3-link-and-score.ts"
},
{
"relativePath": "source/core/steps/4-build-graph.ts",
"purpose": "ãã€ãã©ã€ã³ã®æçµã¹ããã: åæçµæãèŠèŠçãªã°ã©ããšããŠæ§ç¯ããŸãã",
"sizeBytes": 1304,
"checksum": "d0ec1df9baa2f133373b87508606591fb9c3a58088240ed7920ddaede83c7f56",
"generatedFrom": "source/core/steps/4-build-graph.ts"
},
{
"relativePath": "source/data/sample-input.ts",
"purpose": "æ€èšŒå¯Ÿè±¡ãšãªããµã³ãã«AI䞻匵ããã¹ãã§ãã",
"sizeBytes": 219,
"checksum": "ecd55f758c54710bbab6c2f4c8340b2cb4b17a17d2732e1cfa4f6fa26668c498",
"generatedFrom": "source/data/sample-input.ts"
},
{
"relativePath": "source/data/sample-trace.ts",
"purpose": "ãµã³ãã«å
¥åã«å¯Ÿããããã€ãã©ã€ã³ã®åã¹ãããã®å®è¡çµæãèšé²ãããã¬ãŒã¹ããŒã¿ã§ãã",
"sizeBytes": 2703,
"checksum": "691798f782f0bcc94dd7287b11775101df1e8e079aaad2d2fb257c14f61eacb0",
"generatedFrom": "source/data/sample-trace.ts"
}
],
"demo": {
"path": "demo-placeholder.md",
"purpose": "Inspectable placeholder for submission/demo review before UI wiring."
},
"readiness": {
"firstScreenValue": "AIãæžããäžæã®è£åŽã«ãããè«çã®çµã¿ç«ãŠããããã¿ã³äžã€ã§å¯èŠåã§ããŸããã©ã®äž»åŒµãã©ã®è³æããæ¥ãŠããã®ããäžç®ã§åãããAIåºåã®ä¿¡é Œæ§ãèªåèªèº«ã§å€æããæå©ããšãªããŸãã",
"coreInteraction": "ããµã³ãã«å®è¡ãã¬ãŒã¹ãåçããã¿ã³ãæŒããAIã®äž»åŒµãåæãããŠããããã»ã¹ãã¹ããããã€ã¹ãããã§ç¢ºèªããã",
"stateChange": "ãã¿ã³ãæŒããšã空ã ã£ãçµæè¡šç€ºãšãªã¢ã«ã䞻匵ã®åè§£ãæ ¹æ ã®æ€çŽ¢ãé¢é£æ§ã®è©äŸ¡ãã°ã©ãæ§ç¯ãšããåã¹ãããã®åŠççµæãé çªã«è¡šç€ºãããŠããã",
"inspectableOutput": "æçµçã«ã䞻匵ã®ããŒãã¬ãŒãºãšæ ¹æ è³æãããŒããšããäž¡è
ã®é¢ä¿æ§ããšããžãšããŠè¡šçŸããã°ã©ãããŒã¿ãåºåãããã",
"staticDataBoundary": "衚瀺ããããã¹ãŠã®ããŒã¿ã¯ãäºåã«çšæãããåäžã®ãµã³ãã«å
¥åã«åºã¥ããŠããŸãããŠãŒã¶ãŒãä»»æã®ããã¹ããå
¥åãããããªã¢ã«ã¿ã€ã ã§AIåŠçãå®è¡ãããããããšã¯ã§ããŸããã",
"remainingWeakness": "çŸåšã¯åäžã®ãµã³ãã«åçã®ã¿ã§ãããæ¬¡ã¯è€æ°ã®ãµã³ãã«ã·ããªãªãéžæå¯èœã«ããæ§ã
ãªäž»åŒµã®ãã¿ãŒã³ãæ€èšŒã§ããããã«ãããã§ããå°æ¥çã«ã¯ãå®éã®LLMãšé£æºãããŠãŒã¶ãŒãèªç±ã«å
¥åããããã¹ãããã®å Žã§åæããã©ã€ãçãç®æããããšèããŠããŸãã"
},
"interestingness": "å€ãã®AIèŠçŽããŒã«ã¯äŸ¿å©ãªåé¢ãåºåçµæããã©ãããæ¥ãã®ãããåãããªããã©ãã¯ããã¯ã¹ã§ããããTracePointãã®æ°èŠæ§ã¯ãåã«åŒçšå
ãªã¹ãã瀺ãã®ã§ã¯ãªããäžã€ã®äž»åŒµãè€æ°ã®æ
å ±æºããã©ã®ããã«ãçµã¿ç«ãŠããããããšããè«çæ§é ãã®ãã®ãå¯èŠåããç¹ã«ãããŸããããã«ããããŠãŒã¶ãŒã¯AIã®çµè«ãéµåã¿ã«ããã®ã§ã¯ãªããæ ¹æ ã®åŒ·åŒ±ãèªåã®ç®ã§ç¢ºãããçŽåŸæãæã£ãŠæ
å ±ãæŽ»çšã§ããŸãããã®ãAIã«ããåæçµæã®åè§£ãšåæ§ç¯ããšããã¢ãããŒãã¯ãAIã®éææ§ãšèª¬æè²¬ä»»ãéèŠããæè¿ã®æè¡ãã¬ã³ããåæ ããŠãããAIãšã®åæ¥ã«ãããä¿¡é Œæ§ãäžæ®µéåŒãäžããäœéšãæäŸããŸãã",
"mvpContract": {
"firstScreenValue": "AIãæžããäžæã貌ãä»ããã ãã§ããã®äž»åŒµãã©ã®è³æã«ç±æ¥ããã®ããèŠèŠçãªãããã§å³åº§ã«ç¢ºèªã§ããä¿¡é Œæ§ãèªåã§å€æã§ããŸãã",
"coreInteraction": "ããµã³ãã«å®è¡ãã¬ãŒã¹ãåçããã¿ã³ãæŒããAIã®äž»åŒµãåæãããŠããããã»ã¹ãã¹ããããã€ã¹ãããã§ç¢ºèªããã",
"stateChange": "ãã¿ã³ãæŒããšã空ã ã£ãçµæãšãªã¢ã«ãäž»åŒµã®æçãšæ ¹æ è³æãçµã¶ã€ã³ã¿ã©ã¯ãã£ããªã°ã©ãã衚瀺ãããã",
"inspectableOutput": "æçµçã«ã䞻匵ã®ããŒãã¬ãŒãºãšæ ¹æ è³æãããŒããšããäž¡è
ã®é¢ä¿æ§ããšããžãšããŠè¡šçŸããã°ã©ãããŒã¿ãåºåãããã",
"staticDataBoundary": "衚瀺ããããã¹ãŠã®ããŒã¿ã¯ãäºåã«çšæãããåäžã®ãµã³ãã«å
¥åã«åºã¥ããŠããŸãããªã¢ã«ã¿ã€ã ã®AIåŠçã¯è¡ããŸããã",
"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": "AIãæžããäžæã®è£åŽã«ãããè«çã®çµã¿ç«ãŠããããã¿ã³äžã€ã§å¯èŠåã§ããŸããã©ã®äž»åŒµãã©ã®è³æããæ¥ãŠããã®ããäžç®ã§åãããAIåºåã®ä¿¡é Œæ§ãèªåèªèº«ã§å€æããæå©ããšãªããŸãã",
"coreInteraction": "ããµã³ãã«å®è¡ãã¬ãŒã¹ãåçããã¿ã³ãæŒããAIã®äž»åŒµãåæãããŠããããã»ã¹ãã¹ããããã€ã¹ãããã§ç¢ºèªããã",
"stateChange": "ãã¿ã³ãæŒããšã空ã ã£ãçµæãšãªã¢ã«ã䞻匵ã®åè§£ãæ ¹æ ã®æ€çŽ¢ãé¢é£æ§ã®è©äŸ¡ãã°ã©ãæ§ç¯ãšããåã¹ãããã®åŠççµæãé çªã«è¡šç€ºãããŠããã",
"inspectableOutput": "æçµçã«ã䞻匵ã®ããŒãã¬ãŒãºãšæ ¹æ è³æãããŒããšããäž¡è
ã®é¢ä¿æ§ããšããžãšããŠè¡šçŸããã°ã©ãããŒã¿ãåºåãããã",
"staticDataBoundary": "衚瀺ããããã¹ãŠã®ããŒã¿ã¯ãäºåã«çšæãããåäžã®ãµã³ãã«å
¥åã«åºã¥ããŠããŸãããªã¢ã«ã¿ã€ã ã®AIåŠçã¯è¡ããŸããã",
"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",
"AIã®äž»åŒµã®çåœãèªåçã«å€æããããš"
],
"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": "å
¥åãããAIã®äž»åŒµãæå³çãªåäœã«åè§£ããæ¢åã®è³æãšã®é¢é£æ§ãæšè«ïŒNLIïŒããããã« `gemini-2.5-flash` ã¢ãã«ã䜿çšããŸãã",
"dataFlow": "ãŠãŒã¶ãŒå
¥åã®äž»åŒµïŒããã¹ãïŒ -> Gemini API (NLI) -> é¢é£æ§ã®æšè«ãšã¹ã³ã¢ãªã³ã° -> UI衚瀺ããŒã¿",
"authRequirement": "api_key",
"currentImplementation": "not_connected",
"adapterPath": "source/core/gemini.ts",
"sampleDataPath": "source/data/sample-trace.ts",
"riskNotes": [
"NLIã¢ãã«ã®æšè«ç²ŸåºŠãäœãå Žåãæ ¹æ ã®èª€å€å®ãªã¹ã¯ããããŸãã",
"APIå©çšã«ã¯ã³ã¹ããšã¬ãŒããªãããã䌎ããŸãã"
]
}
],
"runtimeBoundary": {
"networkCalls": "none",
"secrets": "none",
"externalWrites": "none"
},
"mvpComplexityBudget": {
"maxScreens": 1,
"maxPrimaryActions": 1,
"maxSourceFiles": 15,
"maxNewDependencies": 0,
"allowDatabase": false
},
"integrationAssumptions": [
{
"service": "Google Gemini API",
"verificationStatus": "unverified",
"unavailableOrUnknown": [
"æ£ç¢ºãªæéäœç³»",
"åçšå©çšæã®å©çšèŠçŽè©³çް"
],
"rateLimitRisk": "medium",
"costRisk": "medium",
"termsRisk": "low"
}
],
"mockFidelity": {
"samplePayloadPath": "source/data/sample-trace.ts",
"simulatedBehaviors": [
"A multi-step AI analysis pipeline's successful execution.",
"Decomposition of a claim into fragments.",
"Linking claim fragments to source documents.",
"Classification of links into 'direct_quote' and 'inference'."
],
"omittedBehaviors": [
"Live network calls to the Gemini API",
"API key handling",
"Error states (e.g., API failure, parsing errors)",
"Vector database search"
],
"failureCasesIncluded": [
"empty result"
]
},
"claimBoundary": {
"publicCopyMustSay": [
"ãã®ããŒã«ã¯ãAIãçæããæç« ã®æ ¹æ ãæ€èšŒããããã®ã³ã³ã»ãããã¢ã§ãã",
"æ ¹æ ã®åæã«ã¯ãã·ãã¥ã¬ãŒããããAIåŠçãšãµã³ãã«ããŒã¿ã䜿çšããŠããŸãã",
"衚瀺ãããæ ¹æ ãé¢é£æ§ã¯ãAIã«ããæšè«çµæã§ãããå®éã®äºå®ç¢ºèªãå°éå®¶ã®å€æã代æ¿ãããã®ã§ã¯ãããŸããã"
],
"publicCopyMustNotSay": [
"ãªã¢ã«ã¿ã€ã ããŒã¿ã«åºã¥ããŠããŸãã",
"ä¿èšŒãããã©ã€ã飿ºãæäŸããŸãã",
"æäŸãããæ
å ±ãå®å
šã«æ£ç¢ºã§ããããšãä¿èšŒããŸãã",
"æ¬çªç°å¢å¯Ÿå¿ã®APIåäœãæäŸããŸãã"
]
},
"renderVerification": {
"required": true,
"checks": [
"render",
"click",
"state_change",
"screenshot"
]
},
"humanReviewTriggers": []
},
"interactionProofPlan": {
"primaryAction": "ãµã³ãã«å®è¡ãã¬ãŒã¹ãåç",
"initialState": "çµæè¡šç€ºãšãªã¢ã«ããŸã å®è¡ãããŠããŸããããšè¡šç€ºãããŠããç¶æ
ã",
"expectedState": "çµæè¡šç€ºãšãªã¢ã«ããã€ãã©ã€ã³ã®å
šã¹ãããã®å®è¡çµæãšããã¬ãŒã¹å®äºãã®ã¡ãã»ãŒãžã衚瀺ãããç¶æ
ã",
"visibleEvidence": [
"䞻匵ã®åè§£ (Decompose Claim)",
"æ ¹æ ã®æ€çŽ¢ (Find Evidence)",
"é¢é£æ§ã®è©äŸ¡ (Link and Score)",
"ã°ã©ãã®æ§ç¯ (Build Graph)",
"ãã¬ãŒã¹å®äº"
],
"proofSelectors": [
"button[data-proof='replay-trace-button']",
"div[data-proof='results-display']",
"[data-proof='final-result-label']"
],
"requiredSourceFiles": [
"source/app/page.tsx",
"source/core/pipeline.ts",
"source/data/sample-trace.ts"
],
"manualFallbackReason": ""
},
"generatedOutput": {
"title": "TracePoint",
"oneLiner": "AIãçæããå ±åæžããäžæã貌ãä»ãããšããã®äž»åŒµãã©ã®è³æã®ã©ã®éšåããæ¥ãŠããããæ ¹æ ã®åŒ·ãå¥ã«è²åããããã°ã©ãã§è¡šç€ºããŸãã",
"artifactShape": "evaluator",
"templatePatternId": "evidence_decision_board",
"surfacePattern": "decision_helper",
"aiMechanismPattern": "multi_source_synthesis"
},
"rewriteApplied": {
"changedFilePaths": [
"source/app/page.tsx",
"README.md",
"metadata.json",
"validation/self-review.json"
],
"appendedFilePaths": []
},
"implementationNotes": [
"äœãæïŒmabo42ïŒã®ãæ ¹æ ã®è¿œè·¡å¯èœæ§ããžã®åŒ·ããã ãããåæ ããUIã®äžå¿ããäž»åŒµãšæ ¹æ ã®ããããã«æ®ããŸãããéçãªãã¢ã®å¶çŽäžãã€ã³ã¿ã©ã¯ãã£ããªã°ã©ãæç»ã®ä»£ããã«ãåã¹ãããã®æ§é åãããããŒã¿ïŒãã¬ãŒã¹ïŒãé æ¬¡è¡šç€ºããæ¹åŒãæ¡çšããŸããã",
"ãèŠãç®ã ãã®åŒçšïŒcitation_theaterïŒãé¿ããããšããæéã«åºã¥ãããµã³ãã«ããŒã¿ã§ã¯ãdirect_quoteããšãinferenceããæç¢ºã«åºå¥ããç°ãªãé¢ä¿æ§ãååšããããšã瀺ããŠããŸãã"
],
"knownRisks": [
"éçãªãã¢ã§ããããããŠãŒã¶ãŒã¯ä»»æã®ããã¹ããæ€èšŒã§ããã補åã®çã®äŸ¡å€ãäœéšãã«ããå¯èœæ§ããããŸãã",
"AIã«ããæ ¹æ ã®å€å®ããžãã¯ã¯éåžžã«è€éã§ããããã®ãã¢ã§ç€ºãããŠãããã¿ãŒã³ã¯çæ³çãªã±ãŒã¹ã§ããå®éã®éçšã§ã¯ã誀å€å®ãå€å®äžèœãªã±ãŒã¹ãžã®å¯ŸåŠãå¿
èŠã«ãªããŸãã"
],
"title": "TracePoint",
"oneLiner": "AIãçæããå ±åæžããäžæã貌ãä»ãããšããã®äž»åŒµãã©ã®è³æã®ã©ã®éšåããæ¥ãŠããããæ ¹æ ã®åŒ·ãå¥ã«è²åããããã°ã©ãã§è¡šç€ºããŸãã",
"agentId": "agent_g",
"selfDirectedPlan": {
"agentId": "agent_g",
"planningIntent": "åè£1ãTracePointããéžæããŸããããã¯ãç§ã®æã€ãå
šãŠã®äž»åŒµã¯æ€æ»å¯èœãªæ ¹æ ã«ãªã³ã¯ãã¹ãã§ããããæ ¹æ ã®åŒ·ãã瀺ãã¹ãããšããéžå®ã«ãŒã«ã«æãå¿ å®ãªäŒç»ã§ãããŸããç§ã®åŸæãªãsource-vs-claim panelããšããç»é¢åœ¢åŒãçŽæ¥çã«å®çŸãããã®ã§ããããŸããä»ã®åè£ãé
åçã§ãããåè£2ã¯ãã¡ã€ã³ã®å°éæ§ãé«ããåè£3ã¯å¯Ÿè±¡ãŠãŒã¶ãŒãããéå®çã§ããããã«æ¯ã¹ãåè£1ã¯ãAIãçæããæç« ã®æ ¹æ ãç¥ãããããšãããããåºç¯ãªãŠãŒã¶ãŒã®å
·äœçãªèª²é¡ã«å¿ãããã®ã§ãããéå°éå®¶ã«ã䟡å€ãäŒãããããïŒdomainOpacityRiskãäœãïŒãšå€æããŸããã",
"publicProductionMemo": "ãTracePointãã¯ãAIãçæããããã¹ãã®ä¿¡é Œæ§ããŠãŒã¶ãŒèªèº«ã確èªã§ããããã«èšèšãããŸãããåãªãæ
å ±æç€ºã«çãŸãããå䞻匵ãã©ã®è³æã®ã©ã®éšåããæ¥ãŠããããè²åããããã°ã©ãã§å¯èŠåããããšã§ãäžç®ã§æ ¹æ ã®åŒ·åŒ±ã倿ã§ããŸããããã«ããããŠãŒã¶ãŒã¯AIã®åºåãããæ·±ãçè§£ããå®å¿ããŠå©çšã§ããããã«ãªããŸããéå»ã®åå¿ãããæ
å ±ã®ãªãµãŒããæ€èšŒãå©ããããŒã«ãæ±ããããŠããããšãåãããã®éææ§ãšè¿œè·¡å¯èœæ§ãéèŠããŸããã",
"feedbackConstraints": [
"èŠãç®ã ãã®åŒçšïŒcitation_theaterïŒã¯é¿ããã",
"æ ¹æ ã®èãèªä¿¡ã«æºã¡ã䞻匵ïŒunsourced_confidenceïŒã¯é¿ããã",
"æ ¹æ ããªãã«ãããããã䞻匵ãæ
å ±æºä»ãã§æç€ºããªãïŒDo not present a claim as sourced when it is not.ïŒã"
],
"learningApplied": [
"Researchç³»ã§é¿ããŠããã"
]
},
"sourceProvenance": {
"sourceProductUsed": "devpost_quad",
"sourceProductUse": "direct_evidence",
"sourceEvidenceAudit": {
"evidenceLevel": "verified",
"observedFields": [
"name",
"url",
"sourceType",
"concept",
"coreMechanism"
],
"inferredFields": [],
"missingFields": [
"codeUrl"
],
"usePolicy": "primary_source_core"
},
"antiCloneBoundary": "Quadã®AIåŸæ¥å¡ã€ã³ãã©ããšã³ã¿ãŒãã©ã€ãºåãã®ç¥èçµ±åãšãã£ãåŽé¢ã¯ã³ããŒããªããäžè¬çãªAIåºåïŒã¬ããŒããèšäºãªã©ïŒã察象ãšããå人ãŠãŒã¶ãŒã䜿ããèªå·±å®çµåã®æ€èšŒããŒã«ã«çããã",
"sourceBoundary": "ãdevpost_quadãããåŸããã芳å¯ãããäºå®ïŒè£œååãURLããœãŒã¹ã¿ã€ããã³ã³ã»ãããã³ã¢ã¡ã«ããºã ïŒã®ã¿ãä¿¡é Œã§ãã蚌æ ãšããŠäœ¿çšããŸããã³ãŒãURLãªã©ã®æ¬ èœããŠããæ
å ±ããæšè«ãããäºå®ã¯äž»åŒµããŠã¯ãªããŸããã",
"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_g_20260707T184804",
"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": "çµæè¡šç€ºãšãªã¢ã«ããã€ãã©ã€ã³ã®å
šã¹ãããã®å®è¡çµæãšããã¬ãŒã¹å®äºãã®ã¡ãã»ãŒãžã衚瀺ãããç¶æ
ã",
"visibleEvidence": [
"䞻匵ã®åè§£ (Decompose Claim)",
"æ ¹æ ã®æ€çŽ¢ (Find Evidence)",
"é¢é£æ§ã®è©äŸ¡ (Link and Score)",
"ã°ã©ãã®æ§ç¯ (Build Graph)",
"ãã¬ãŒã¹å®äº"
],
"proofSelectors": [
"button[data-proof='replay-trace-button']",
"div[data-proof='results-display']",
"[data-proof='final-result-label']"
],
"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åŠçãšãµã³ãã«ããŒã¿ã䜿çšããŠããŸãã",
"衚瀺ãããæ ¹æ ãé¢é£æ§ã¯ãAIã«ããæšè«çµæã§ãããå®éã®äºå®ç¢ºèªãå°éå®¶ã®å€æã代æ¿ãããã®ã§ã¯ãããŸããã"
],
"publicCopyMustNotSay": [
"ãªã¢ã«ã¿ã€ã ããŒã¿ã«åºã¥ããŠããŸãã",
"ä¿èšŒãããã©ã€ã飿ºãæäŸããŸãã",
"æäŸãããæ
å ±ãå®å
šã«æ£ç¢ºã§ããããšãä¿èšŒããŸãã",
"æ¬çªç°å¢å¯Ÿå¿ã®APIåäœãæäŸããŸãã"
]
},
"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 { sampleTrace, PipelineStep } from '../data/sample-trace';
import { sampleClaim } from '../data/sample-input';
// Re-declarations of types from source/core/types.ts for static artifact build.
interface ClaimFragmentNode { id: string; type: 'claim_fragment'; label: string; }
interface SourceMaterialNode { id: string; type: 'source_material'; label: string; }
type TraceGraphNode = ClaimFragmentNode | SourceMaterialNode;
interface TraceGraphEdge { id: string; source: string; target: string; label: 'direct_quote' | 'inference' | 'background'; }
interface TraceGraph { nodes: TraceGraphNode[]; edges: TraceGraphEdge[]; }
// Fixed positions for the sample graph nodes to avoid complex layout algorithms
const NODE_POSITIONS: { [id: string]: { x: number; y: number } } = {
"frag-1": { x: 150, y: 80 },
"frag-2": { x: 150, y: 180 },
"frag-3": { x: 150, y: 280 },
"src-1": { x: 550, y: 80 },
"src-2": { x: 550, y: 180 },
"src-3": { x: 550, y: 280 },
};
const NODE_WIDTH = 180;
const NODE_HEIGHT = 40;
const NODE_TEXT_COLOR = '#282a36'; // Dark text for readability
const NODE_STYLES = {
claim_fragment: {
bgColor: '#8be9fd', // Light blue/cyan
strokeColor: '#50fa7b', // Greenish for highlight
textColor: NODE_TEXT_COLOR,
},
source_material: {
bgColor: '#bd93f9', // Purple
strokeColor: '#ff79c6', // Pinkish for highlight
textColor: NODE_TEXT_COLOR,
},
};
const EDGE_STYLES = {
direct_quote: {
color: '#50fa7b', // Green
dasharray: '0',
},
inference: {
color: '#ff79c6', // Pink
dasharray: '5,5', // Dotted for inference
},
background: {
color: '#f8f8f2', // Grey (fallback, not in sample)
dasharray: '0',
},
};
// Helper component for rendering a node
const NodeComponent = ({ node, isHighlighted, onClick, position }: { node: TraceGraphNode; isHighlighted: boolean; onClick: (nodeId: string) => void; position: { x: number; y: number } }) => {
const style = NODE_STYLES[node.type];
const strokeColor = isHighlighted ? style.strokeColor : style.bgColor;
const strokeWidth = isHighlighted ? 3 : 1;
return (
<g transform={`translate(${position.x - NODE_WIDTH / 2}, ${position.y - NODE_HEIGHT / 2})`} onClick={() => onClick(node.id)} style={{ cursor: 'pointer' }}>
<rect
x="0"
y="0"
width={NODE_WIDTH}
height={NODE_HEIGHT}
rx="5"
ry="5"
fill={style.bgColor}
stroke={strokeColor}
strokeWidth={strokeWidth}
/>
<text
x={NODE_WIDTH / 2}
y={NODE_HEIGHT / 2}
textAnchor="middle"
dominantBaseline="middle"
fontSize="12"
fill={style.textColor}
>
{node.label.length > 25 ? node.label.substring(0, 22) + '...' : node.label}
</text>
</g>
);
};
// Helper component for rendering an edge
const EdgeComponent = ({ edge, isHighlighted, sourcePos, targetPos }: { edge: TraceGraphEdge; isHighlighted: boolean; sourcePos: { x: number; y: number }; targetPos: { x: number; y: number } }) => {
const style = EDGE_STYLES[edge.label as keyof typeof EDGE_STYLES] || EDGE_STYLES.background;
const strokeWidth = isHighlighted ? 3 : 1;
return (
<line
x1={sourcePos.x + NODE_WIDTH / 2} // Connect from right side of source node
y1={sourcePos.y}
x2={targetPos.x - NODE_WIDTH / 2} // Connect to left side of target node
y2={targetPos.y}
stroke={style.color}
strokeWidth={strokeWidth}
strokeDasharray={style.dasharray}
markerEnd="url(#arrowhead)"
/>
);
};
export default function Home() {
const [currentStep, setCurrentStep] = useState(-1);
const [highlightedNodeId, setHighlightedNodeId] = useState<string | null>(null);
const handleReplay = () => {
setCurrentStep(0);
let step = 0;
const interval = setInterval(() => {
step++;
if (step >= sampleTrace.steps.length) {
clearInterval(interval);
} else {
setCurrentStep(step);
}
}, 800);
};
const finalGraph: TraceGraph = sampleTrace.steps[sampleTrace.steps.length - 1]?.output || { nodes: [], edges: [] };
const displayedSteps = sampleTrace.steps.slice(0, currentStep + 1);
const handleNodeClick = (nodeId: string) => {
setHighlightedNodeId(nodeId === highlightedNodeId ? null : nodeId); // Toggle highlight
};
const getHighlightedEdges = (selectedNodeId: string | null) => {
if (!selectedNodeId) return new Set<string>();
const relatedEdges = new Set<string>();
finalGraph.edges.forEach(edge => {
if (edge.source === selectedNodeId || edge.target === selectedNodeId) {
relatedEdges.add(edge.id);
}
});
return relatedEdges;
};
const highlightedEdges = getHighlightedEdges(highlightedNodeId);
// For rev-002: Initial placeholder graph. Display the final graph in a muted state
// before the replay starts, to immediately convey the product's value.
const renderGraph = (graph: TraceGraph, isActive: boolean) => (
<div style={{
width: '100%',
height: '400px',
border: '1px solid #ddd',
borderRadius: '5px',
backgroundColor: '#fafafa',
opacity: isActive ? 1 : 0.4, // Mute if not active
transition: 'opacity 0.5s ease',
}}
data-proof="root-map-container"
>
<svg width="100%" height="100%" viewBox="0 0 700 400">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#888" />
</marker>
</defs>
{graph.edges.map(edge => {
const sourceNode = graph.nodes.find(n => n.id === edge.source);
const targetNode = graph.nodes.find(n => n.id === edge.target);
if (!sourceNode || !targetNode) return null;
const sourcePos = NODE_POSITIONS[sourceNode.id];
const targetPos = NODE_POSITIONS[targetNode.id];
if (!sourcePos || !targetPos) return null; // Fallback for nodes not in map
const isEdgeHighlighted = highlightedEdges.has(edge.id);
return (
<EdgeComponent
key={edge.id}
edge={edge}
isHighlighted={isEdgeHighlighted}
sourcePos={sourcePos}
targetPos={targetPos}
/>
);
})}
{graph.nodes.map(node => {
const position = NODE_POSITIONS[node.id];
if (!position) return null; // Fallback for nodes not in map
const isNodeHighlighted = highlightedNodeId === node.id ||
(highlightedEdges.size > 0 && graph.edges.some(edge =>
(edge.source === node.id && highlightedEdges.has(edge.id)) ||
(edge.target === node.id && highlightedEdges.has(edge.id))
));
return (
<NodeComponent
key={node.id}
node={node}
isHighlighted={isNodeHighlighted}
onClick={handleNodeClick}
position={position}
type={node.type}
/>
);
})}
</svg>
</div>
);
return (
<div style={{ fontFamily: 'sans-serif', padding: '2rem', maxWidth: '1200px', margin: 'auto' }}>
<header style={{ borderBottom: '1px solid #eee', paddingBottom: '1rem', marginBottom: '1rem' }}>
<h1 style={{ fontSize: '2rem', margin: 0 }}>TracePoint</h1>
<p style={{ margin: '0.5rem 0 0 0', color: '#555' }}>
AIãçæãã䞻匵ã®ãæ ¹æ ããã©ã
</p>
</header>
<main style={{ display: 'grid', gridTemplateColumns: '300px 1fr', gap: '2rem' }}>
<div id="control-panel">
<h2 style={{ fontSize: '1.2rem', borderBottom: '1px solid #ddd', paddingBottom: '0.5rem' }}>æ€èšŒããã»ã¹</h2>
<div style={{ marginBottom: '1rem', background: '#f9f9f9', padding: '1rem', borderRadius: '4px', border: '1px solid #eee' }}>
<h3 style={{ marginTop: 0, fontSize: '1rem', color: '#333' }}>AIã®äž»åŒµ:</h3>
<p data-proof="claim-input" style={{ fontSize: '0.9rem', color: '#444', whiteSpace: 'pre-wrap' }}>{sampleClaim}</p>
</div>
<button
onClick={handleReplay}
disabled={currentStep !== -1}
data-proof="replay-trace-button"
style={{
padding: '0.75rem 1.5rem',
fontSize: '1rem',
cursor: currentStep !== -1 ? 'not-allowed' : 'pointer',
backgroundColor: currentStep !== -1 ? '#ccc' : '#0070f3',
color: 'white',
border: 'none',
borderRadius: '5px',
width: '100%',
marginBottom: '1.5rem',
}}
>
ãµã³ãã«å®è¡ãã¬ãŒã¹ãåç
</button>
<div style={{ marginTop: '0' }}>
<h3 style={{ fontSize: '1rem', marginBottom: '0.5rem' }}>å®è¡ã¹ããã:</h3>
<ul style={{ listStyle: 'none', padding: 0, margin: 0 }}>
{sampleTrace.steps.map((step, index) => (
<li key={step.stepName} style={{
padding: '0.5rem',
borderRadius: '3px',
marginBottom: '0.25rem',
backgroundColor: index <= currentStep ? '#e0f7fa' : '#f0f0f0',
opacity: index <= currentStep ? 1 : 0.6,
transition: 'all 0.3s ease'
}}>
{index + 1}. {step.stepName}
</li>
))}
</ul>
</div>
</div>
<div data-proof="results-display" style={{ minHeight: '400px' }}>
<h2 style={{ fontSize: '1.2rem', marginTop: 0, borderBottom: '1px solid #ddd', paddingBottom: '0.5rem' }}>å®è¡ãã¬ãŒã¹çµæ</h2>
{currentStep === -1 ? (
// rev-002: Display muted graph as initial placeholder
<div>
<p style={{ color: '#777', marginBottom: '1rem' }}>ãåçããã¿ã³ãæŒããšãAIã®äž»åŒµã®æ ¹æ ããããã¹ãããããšã«æ§ç¯ãããŸãã</p>
{renderGraph(finalGraph, false)}
</div>
) : (
<div>
{displayedSteps.map((step, index) => (
<div key={index} style={{ marginBottom: '1.5rem', borderBottom: index < displayedSteps.length -1 ? '1px dashed #ccc' : 'none', paddingBottom: '1rem' }}>
<h3 style={{ fontSize: '1rem', color: '#005f80', margin: '0 0 0.5rem 0' }}>{index + 1}. {step.stepName}</h3>
{index === sampleTrace.steps.length - 1 && currentStep === sampleTrace.steps.length - 1 ? (
// rev-001 & rev-003: Render interactive graph for the final step
renderGraph(finalGraph, true)
) : (
<pre style={{
backgroundColor: '#f0f2f5',
padding: '0.75rem',
borderRadius: '4px',
fontSize: '0.8rem',
whiteSpace: 'pre-wrap',
wordBreak: 'break-all'
}}>
{JSON.stringify(step.output, null, 2)}
</pre>
)}
</div>
))}
{currentStep === sampleTrace.steps.length - 1 && <p data-proof="final-result-label" style={{fontWeight: 'bold', color: 'green', marginTop: '1rem'}}>ãã¬ãŒã¹å®äº</p>}
</div>
)}
</div>
</main>
</div>
);
}
Run context. ããã§ã¯ç®¡ç倿ã«å¿ èŠãªRunã®èŠçŽã ãã衚瀺ããŸããpromptãinputãresponseãmetadataJsonã®å šæã¯é垞確èªããå€ãã å¿ èŠãªå Žåã ãRun詳现ãã°ã§ç¢ºèªããŸãã
- Run ID
- run_selfdirected_agent_g_20260707T184804
- èµ·åçš®å¥
- llm_pipeline
- èªåŸåºŠ
- L1_assisted
- å®è¡è
- system / LLM Pipeline Publisher
- éå§
- 2026/7/8 04:01:42 JST
- å®äº
- 2026/7/8 04:01:42 JST
- çæ / å ¬é / 倱æ
- 1 / 1 / 0
- 蚌跡件æ°
- 8 events / 30 artifacts / 40 checks
LLM pipeline run for selfdirected_agent_g_20260707T184804. Published 0 project(s).
