{% extends "base.html" %} {% block title %}{{ idea.id }}: {{ idea.title }} - ThinkStorm{% endblock %} {% block content %} {% if idea.lifecycle_state == 'TRASHED' %}
🗑️
This idea is in the Trash Bin

It is withheld from incubation catalogs until restored or permanently emptied.

{% endif %}
{{ idea.id }} {{ idea.lifecycle_state }} Proc: {{ idea.processing_state }} {% if idea.lifecycle_state != 'TRASHED' %}
Level {{ idea.enrichment_level }}
{% for i in range(1, 6) %}
{% endfor %}
{% endif %}

{{ idea.title or "Processing Submission..." }}

{{ idea.summary }}

{% if idea.lifecycle_state == 'TRASHED' %} {% elif idea.lifecycle_state == 'AVAILABLE' %} {% if user and user.role.value != 'ANONYMOUS' %} {% else %} Sign in to Claim {% endif %} {% if idea.enrichment_level < 4 %} {% else %} {% endif %} {% elif idea.lifecycle_state == 'CLAIMED' %}
Claimed by
{{ idea.claimed_by }}
{% if user and (user.username == idea.claimed_by or user.role.value == 'ADMIN') %} {% endif %} {% elif idea.lifecycle_state == 'ACTIVE' %}
Active Work by
{{ idea.claimed_by }}
{% if user and (user.username == idea.claimed_by or user.role.value == 'ADMIN') %} {% endif %} {% elif idea.lifecycle_state == 'DUPLICATE' %} {% else %} {% endif %}
{% if idea.categories and idea.categories|length > 0 %}
Categories: {% for c in idea.categories %} {{ c }} {% endfor %}
{% endif %} {% if idea.tags and idea.tags|length > 0 %}
Tags: {% for t in idea.tags %} #{{ t }} {% endfor %}
{% endif %}
Submitted: {{ idea.submitted_at[:19] }}Z
{% if idea.lifecycle_state == 'DUPLICATE' %}
⚠️ Potential Duplicate Submission Detected

Automatic pipeline flagged this idea as closely matching existing catalog submissions and paused downstream deep research generation to conserve compute. You can override this and force full research generation at any time.

{% endif %}

📝 Immutable Original Submission

🛡️ URL Safety & VirusTotal

{% if idea.urls and idea.urls|length > 0 %}
{% for u in idea.urls %}
{{ u.url }}
{{ u.safety_state }} Policy: {{ u.automation_policy }}
{% endfor %}
{% else %}

No external URLs extracted in submission.

{% endif %}
{% if idea.submission_image and idea.submission_image.present %}

🖼️ Attached Reference Image {{ idea.submission_image.artifact_id }}

{{ idea.submission_image.mime_type }} {{ idea.submission_image.width }}x{{ idea.submission_image.height }} {{ (idea.submission_image.size_bytes / 1024)|round(1) }} KB Source: {{ idea.submission_image.source|capitalize }}
Reference visual artifact for {{ idea.id }}
File: {{ idea.submission_image.original_filename }} SHA-256: {{ idea.submission_image.sha256 }}
{% endif %}
{% if idea.submission_image and idea.submission_image.present %} {% endif %}
{% if idea.submission_image and idea.submission_image.present %}
{% set image_ctx_run = idea.provenance | selectattr("stage", "equalto", "IMAGE_CONTEXT") | list %} {% if image_ctx_run and image_ctx_run|length > 0 and image_ctx_run[0].output_data.content %}
Stage: IMAGE_CONTEXT AI Visual Interpretation {% if image_ctx_run[0].resolved_model %} 🤖 {{ image_ctx_run[0].resolved_model }} {% endif %}
{% elif image_ctx_run and image_ctx_run|length > 0 and image_ctx_run[0].status == 'FAILED' %}
⚠️

Vision Processing Notice

The reference image was safely preserved, but automated vision analysis was unavailable or encountered an error: {{ image_ctx_run[0].error_message or "Model refused or failed image processing." }}. The idea continues with text-only research synthesis.

{% else %}
🖼️

Visual Context Queued

Image interpretation is queued or processing. Visual context will appear here once synthesized.

{% endif %}
{% endif %}
{% set prior_art_run = idea.provenance | selectattr("stage", "equalto", "PRIOR_ART") | list %} {% if prior_art_run and prior_art_run|length > 0 and prior_art_run[0].output_data.content %}
Stage: PRIOR_ART {% if prior_art_run[0].resolved_model %} 🤖 {{ prior_art_run[0].resolved_model }} {% endif %}
{% else %}
🔍

Prior Art & Competitive Discovery Not Generated

Prior art synthesis was not performed yet or was paused during intake. You can trigger the automated research pipeline to perform market and repository discovery now.

{% endif %}
{% set research_run = idea.provenance | selectattr("stage", "equalto", "RESEARCH") | list %} {% if research_run and research_run|length > 0 and research_run[0].output_data.content %}
Stage: RESEARCH {% if research_run[0].resolved_model %} 🤖 {{ research_run[0].resolved_model }} {% endif %}
{% else %}
🔬

Deep Research Synthesis Not Generated

Technical analysis and architectural synthesis were not generated yet. You can trigger the automated research engine to analyze this submission now.

{% endif %}
{% set feas_run = idea.provenance | selectattr("stage", "equalto", "FEASIBILITY") | list %} {% if feas_run and feas_run|length > 0 and feas_run[0].output_data.content %}
Stage: FEASIBILITY {% if feas_run[0].resolved_model %} 🤖 {{ feas_run[0].resolved_model }} {% endif %}
{% else %}
⚖️

Feasibility & Risk Critique Not Generated

Architectural risk assessment and feasibility scoring were not generated yet. You can trigger the critique engine now.

{% endif %}

Independent Work Tracks

Assign multiple work types (Article, Blog Entry, Coding Project, YouTube Video) to produce distinct outputs.

{% if user and (user.username == idea.claimed_by or user.role.value == 'ADMIN') %}
{% endif %}
{% if idea.work_tracks and idea.work_tracks|length > 0 %}
{% for tr in idea.work_tracks %}
{{ tr.id }} {{ tr.name }} {{ tr.work_type_id }} {{ tr.state }} {% if tr.model_override %} 🤖 {{ tr.model_override }} {% endif %}
{% if user and (user.username == idea.claimed_by or user.role.value == 'ADMIN') %} {% if tr.work_type_id == 'CODING_PROJECT' and tr.state == 'COMPLETED' %} {% endif %} {% endif %}
{% if tr.external_resources and tr.external_resources|length > 0 %}
{% for ext in tr.external_resources %} 🎉 Graduated Project Repository: {{ ext.url }} ↗ {% endfor %}
{% endif %} {% if tr.outputs and tr.outputs|length > 0 %}

Generated Artifacts & Versions ({{ tr.outputs|length }}):

{% for out in tr.outputs %}
📄 {{ out.name }} {% if out.is_current %} v{{ out.version }} (Latest) {% else %} v{{ out.version }} {% endif %} {% if out.model_used %} 🤖 {{ out.model_used }} {% endif %} 🕒 {{ out.created_at[:19].replace('T', ' ') }} UTC
{% if user and (user.username == idea.claimed_by or user.role.value == 'ADMIN') %} {% endif %}
Path: {{ out.artifact_path }}
{% endfor %}
{% else %}
No artifacts generated yet for this track. {% if user and (user.username == idea.claimed_by or user.role.value == 'ADMIN') %} {% endif %}
{% endif %}
{% endfor %}
{% else %}

No work tracks created yet. Claim this idea to create independent development tracks.

{% endif %}

Execution Provenance & Token Accounting

Total Tokens Consumed: {{ idea.usage_summary.total_tokens }}
{% if idea.provenance and idea.provenance|length > 0 %}
{% for r in idea.provenance %} {% endfor %}
Run ID Processor / Stage Prompt Model Tokens (In/Out/Total) Duration Status
{{ r.id }} {{ r.processor_name }}
{{ r.stage }}
{{ r.prompt_id }} v{{ r.prompt_version }} {{ r.resolved_model }} {{ r.input_tokens }} / {{ r.output_tokens }} / {{ r.total_tokens }} {{ r.duration_ms }}ms {{ r.status }}
{% else %}

No processor execution runs recorded yet.

{% endif %}

Canonical Dossier & Gitea Project

Every idea is maintained as a full Git repository under the thinkstorm organization on Gitea.

{% if idea.gitea_repo_url %} 🔗 Open Project on Gitea ↗ {% endif %}
🐙 Gitea Project Repository org: thinkstorm
Repo: {{ idea.gitea_repo_name or "thinkstorm/ts-" ~ idea.id|lower|replace('ts-', '') }}
Clone: git clone https://git.labyricorn.com/{{ idea.gitea_repo_name or "thinkstorm/ts-" ~ idea.id|lower|replace('ts-', '') }}.git
{% if idea.gitea_repo_url %} Open in Gitea ↗ {% else %} Open in Gitea ↗ {% endif %}

Canonical Dossier Files in Store:

📄 idea.md Summary & Original Text
📊 metadata.json Structured Metadata & State
{% if idea.submission_image and idea.submission_image.present %}
🖼️ {{ idea.submission_image.artifact_id }} ({{ idea.submission_image.mime_type }}) Reference Image Artifact
📄 research/image-context.md Visual Interpretation Context
{% endif %}
🔍 research/prior-art.md Competitor Analysis
📚 research/analysis.md Deep Research Synthesis
⚙️ research/feasibility.md Risk & Feasibility Critique
{% for tr in idea.work_tracks %} {% for out in tr.outputs %}
🚀 {{ out.artifact_path }} (v{{ out.version }}) {{ tr.name }}
{% endfor %} {% endfor %}
{% endblock %}