{
  "slug": "terragrunt-catalog-supports-non-interactive-jsonl-and-markdown-output-72bb8dfa88b2",
  "title": "terragrunt catalog supports non-interactive JSONL and Markdown output",
  "tools": [
    "terragrunt"
  ],
  "tags": [
    "agent"
  ],
  "introduced_at": "2026-08-13T14:48:22.000Z",
  "announced_at": "2026-08-13T14:48:22.000Z",
  "effective_at": null,
  "date_basis": "source-publication",
  "status": "unknown",
  "how": {
    "incantation": "When catalog results must be read without a terminal or saved for review, enable the `catalog-format` experiment and run `terragrunt catalog --experiment=catalog-format --format=jsonl` for JSON Lines or `--format=md` for Markdown; use `jq` to project or remove JSONL fields and check Markdown’s closing table and count for completeness.",
    "examples": [
      "terragrunt catalog --experiment=catalog-format --format=jsonl | jq -c '{kind, title, component_source}'",
      "terragrunt catalog --experiment=catalog-format --format=jsonl | jq -c 'del(.doc)'",
      "terragrunt catalog --experiment=catalog-format --format=md > catalog.md"
    ],
    "gotchas": [
      "Version: v1.1.3",
      "Availability: Experiment",
      "--experiment=catalog-format (required): Enables the experiment gating `--format` in v1.1.3. It can also be enabled with `TG_EXPERIMENT=catalog-format`.",
      "--format=jsonl (required): Writes one JSON object per catalog entry to standard output.",
      "--format=md (required): Writes one Markdown document with a section per entry; the final table and discovered count indicate completeness.",
      "jq projection `{kind, title, component_source}`: Selects those fields from each JSONL entry.",
      "jq deletion `del(.doc)`: Drops the README body from each JSONL entry; `doc` can contain substantial data.",
      "Prerequisite: Terragrunt `catalog` command available; `--format` requires the `catalog-format` experiment in v1.1.3.",
      "Prerequisite: Install `jq` to run the documented JSONL filtering examples.",
      "`--format=tui` remains the default and leaves the terminal user interface as it was.",
      "JSONL emits one object per line in discovery order, which interleaves repositories and differs between runs.",
      "Entries stream as discovered; a reader stopping early ends the JSONL command quietly.",
      "Every JSONL entry includes the complete component README in the `doc` field.",
      "Markdown entries stream as discovered; READMEs are fenced, and the closing table and count indicate what was discovered and whether the document was cut short.",
      "Docs conflict: Current active-experiments documentation describes behavior after the experiment completed in v1.2.0: `--format` is available by default and piping `catalog` defaults to JSONL. That newer behavior does not apply to the v1.1.3 instructions."
    ]
  },
  "why_it_matters": "When inspecting catalog results without a terminal or saving them for review, enable `catalog-format` and select JSON Lines for processing or Markdown for reading.",
  "before": "The catalog command used a terminal UI and required a terminal; it could not be read in a non-terminal environment.",
  "sources": [
    "https://github.com/gruntwork-io/terragrunt/releases/tag/v1.1.3",
    "https://docs.terragrunt.com/features/catalog/non-interactive/"
  ],
  "rank": 0.96038,
  "judge": {
    "publish": true,
    "judge_model": "codex-cli/gpt-6-luna+typesafe/jev-1.13.0",
    "prompt_version": "extract-v7+enrich-v2+judge-v2x3+jev-publish-v1"
  },
  "review_state": "approved",
  "provenance": {
    "run_id": "wave2a-20261017",
    "verdict_id": "wave2a-20261017:wave2a-20261017-dcaf99fa1193ce9f-5:gate",
    "evidence_hash": "226f085af3217dddc07199d4b6d81ca62fe1dc13c80827cab4b7e6f9c75b081b"
  },
  "review": {
    "draft_hash": "8b224b747ef4b888b1cbd98549f8ffffdf88877a9d633271d85871325d003e2f",
    "reviewer": "publication-gate",
    "reviewed_at": "2026-10-07T00:00:00.000Z",
    "decision": "wave2a-20261017:gate",
    "reason": "3 of 3 judge runs approved with p_yes >= 0.9 (mean 0.96 >= 0.9; 2 needed) and Jev gave 0.74 (>= 0.6 needed)."
  }
}
