Artifacts
The durable, reviewable objects every loop reads from and writes back to.
Every loop in ClosedLoop.ai produces artifacts. They are the durable record of what the system did, why, and with what quality. This page is a reference for the artifacts the platform creates, where they live, and what schema they follow.
Session work directory
Most per-run artifacts live in the session work directory ($CLOSEDLOOP_WORKDIR, usually .closedloop-ai/work/):
| Artifact | Producer | Format |
|---|---|---|
prd.md | you | Markdown |
plan.json | plan-draft-writer, plan-writer | JSON per plan-schema.json |
plan.md | extract-plan-md skill | Markdown synced from plan.json content |
plan-evaluation.json | plan-evaluator | JSON (cached by eval-cache) |
investigation-log.md | pre-explorer, judges fallback | Markdown |
requirements-extract.json | pre-explorer | JSON |
code-map.json | pre-explorer | JSON per code-map.schema.json |
code-context.json / plan-context.json | context-manager-for-judges | Compressed JSON |
judge-input.json | run-judges | JSON per judge-input.schema.json |
plan-judges.json | run-judges plan mode | Aggregated CaseScores |
code-judges.json | run-judges code mode | Aggregated CaseScores |
prd-judges.json | run-judges prd mode | Aggregated CaseScores |
state.json | orchestrator | JSON (polled by UIs) |
log.md | orchestrator (Phase 7) | Markdown changelog |
perf.jsonl | subagent-stop-hook.sh | JSONL timing events |
visual-requirements.md | implementation-subagent | Markdown |
visual-qa-memory.md | visual-qa-subagent | Markdown |
api-requirements.md | api-spec-writer | Markdown |
reviews/*.review.json | critics (Phase 2.5) | JSON per review-delta.schema.json |
agents-snapshot/ | ensure_agents_snapshot.sh | snapshot of judge agent files |
.cross-repo-needs.json | cross-repo-coordinator | JSON |
.workspace-repos.json | dev-environment | JSON |
.dev-environment.json | dev-environment | JSON |
.discovery-cache/{peer}.json | generic-discovery | JSON |
cross-repo-prd-{peer}.md | cross-repo-prd-writer | Markdown |
State and configuration
| File | Purpose |
|---|---|
.closedloop-ai/config.env | All env vars for the session. |
.closedloop-ai/closedloop-loop.local.md | Loop state (iteration, run_id, start_sha). |
.closedloop-ai/pid-{PPID}.session | PID → session mapping. |
.closedloop-ai/.repo-identity.json | Multi-repo identification. |
.closedloop-ai/settings/critic-gates.json | Critic wiring produced by bootstrap. |
.agent-types/{agent_id} | Agent start timestamps. |
Learnings
Per-project:
| Path | Purpose |
|---|---|
.learnings/pending/*.json | Pending learnings written by agents during a run. |
.learnings/pending/archived/ | Processed learnings. |
.learnings/sessions/run-{ID}/iter-{N}.json | Per-iteration snapshots. |
.learnings/org-patterns.toon | Local copy of the TOON pattern store (typically symlinked to the user-level store). |
.learnings/goal.yaml | Active goal plus goal definitions. |
.learnings/retention.yaml | Pruning thresholds. |
.learnings/outcomes.log | Pipe-delimited outcomes. |
.learnings/runs.log | Run-level log. |
.learnings/acknowledgments.log | Learning acknowledgment log. |
.learnings/goal-outcome.json | Output of evaluate_goal.py. |
.learnings/pending-closedloop.json | ClosedLoop-specific learnings queue. |
.learnings/changed-files.json | Changed files since start SHA. |
.learnings/relevance-scores.json | Output of pattern_relevance.py. |
.learnings/build-result.json | Build outcome. |
.learnings/merge-result.json | Merge outcome. |
Per-user (organization-level):
| Path | Purpose |
|---|---|
~/.closedloop-ai/learnings/org-patterns.toon | Organization pattern store (TOON). |
~/.closedloop-ai/learnings/closedloop-learnings.json | Framework learnings (SL-{N} IDs). |
Code review
/code-review:start writes to .closedloop-ai/code-review/cr-<random>/:
| File | Purpose |
|---|---|
code-review-findings.json | Validated inline findings. |
code-review-threads.json | Outdated thread IDs to resolve. |
code-review-summary.md | PR summary comment. |
verdict.json | {"verdict": "approve | needs_attention | changes_requested"}. |
Bootstrap outputs
.closedloop-ai/bootstrap/<timestamp>/:
discovery/project-context.md,languages.json,domains.jsonsynthesis/expert-agents.json,decomposed-agents.json,generation-validation.json,agent-validation.jsonvalidation-report.json,bootstrap-report.md,open-questions.md
Durable bootstrap outputs:
.claude/agents/<agent-name>.md.closedloop-ai/bootstrap-metadata.json.closedloop-ai/settings/critic-gates.json
Desktop client storage
Under app.getPath("userData"):
desktop-settings.jsondesktop-secrets.json(API key, encrypted viasafeStorage)desktop-approvals.jsondesktop-activity-log.jsondesktop-job-store.jsondesktop-loop-tokens.jsongateway-identity.json
Plus ~/.closedloop-ai/electron-port (plaintext active port).
Why artifacts are the point
If the loop is what turns intent into output, artifacts are how that output becomes reviewable, learnable, and shippable. Every artifact in this list exists because some part of the system needs to read, write, grade, or learn from it. Delete the artifacts and the system reverts to chat-driven delivery.
Keep them and the system compounds.