{
  "version": 2,
  "description": "Structural contract for workspace tracker files. Validated by system-validate.py. Extend this file (not the parsers) when tracker structures change.",
  "files": {
    "general-todo-tracker.md": {
      "required_sections": [
        "High Priority",
        "Open Tasks",
        "Stoozing Deadlines",
        "Cron Reminders"
      ],
      "allowed_statuses": [
        "\ud83d\udfe1",
        "\ud83d\udd34",
        "\u23f3",
        "\u2744\ufe0f",
        "\ud83d\udfe2",
        "\u26d4"
      ],
      "tables": {
        "High Priority": {
          "columns": [
            "Status",
            "Task",
            "Details",
            "Next Action"
          ],
          "status_column": 0
        },
        "Open Tasks": {
          "columns": [
            "Status",
            "Task",
            "Details",
            "Next Action"
          ],
          "status_column": 0
        },
        "Stoozing Deadlines": {
          "columns": [
            "Card",
            "Balance",
            "0% End Date",
            "Action"
          ],
          "money_columns": [
            1
          ],
          "required_rows": [
            "Santander",
            "Lloyds",
            "Natwest"
          ]
        },
        "Cron Reminders": {
          "columns": [
            "Job",
            "Date",
            "Status"
          ]
        },
        "Transaction Review": {
          "columns": [
            "Status",
            "Task",
            "Details",
            "Next Action"
          ],
          "status_column": 0
        },
        "\ud83d\ude97 TRIPS & TRAVEL": {
          "columns": [
            "Status",
            "Trip",
            "Dates",
            "Next Action"
          ]
        },
        "\ud83c\udfe1 DIY / HOME PROJECTS": {
          "columns": [
            "Status",
            "Task",
            "Details",
            "Next Action"
          ]
        }
      },
      "contains": [
        {
          "must": "RBS savings",
          "hint": "RBS is single-source here"
        },
        {
          "must": "Total stoozing debt"
        }
      ],
      "ownership": "human"
    },
    "pension-cashflow-tracker.md": {
      "required_sections": [
        "Overview",
        "Salary & Tax Profile",
        "Investments",
        "Key Dates & Triggers",
        "Next Actions"
      ],
      "tables": {
        "Overview": {
          "columns": [
            "Account",
            "Platform",
            "Value",
            "Status"
          ],
          "money_columns": [
            2
          ],
          "required_rows": [
            "ISA",
            "SIPP (Freetrade)",
            "SIPP (T212)",
            "GIA",
            "Net cash"
          ]
        },
        "Platform Summary": {
          "columns": [
            "Account",
            "Platform",
            "Value",
            "Status",
            "Automation"
          ],
          "money_columns": [
            2
          ]
        },
        "Monthly Expenditure": {
          "columns": [
            "Category",
            "Estimated \u00a3",
            "Actual \u00a3",
            "Notes"
          ],
          "money_columns": [
            2
          ]
        },
        "Pension Split Strategy (The 17% Target \u2014 \u00a310k/yr gross)": {
          "columns": [
            "Provider",
            "Your Net %",
            "Your Net \u00a3",
            "Grossed Up \u00a3",
            "With Employer Match",
            "Total Monthly"
          ]
        },
        "Retirement Projections (Age 60, 5% Growth)": {
          "columns": [
            "Pot",
            "Starting Balance",
            "Monthly Input",
            "Projected Value at 60",
            "Role"
          ]
        },
        "Additional Tax Optimizations (The \"Marginal Gains\")": {
          "columns": [
            "Strategy",
            "Effort",
            "Potential Annual Yield",
            "Status"
          ]
        },
        "Key Dates & Triggers": {
          "columns": [
            "Date",
            "Event",
            ""
          ]
        },
        "Comparison: Before vs. After Optimization": {
          "columns": [
            "",
            "Before (Current)",
            "After (Target)",
            "Difference"
          ]
        }
      },
      "contains": [
        {
          "must_not": "RBS savings:",
          "hint": "RBS lives only in general-todo"
        },
        {
          "must": "Monthly surplus"
        },
        {
          "must": "Day-to-day net worth",
          "hint": "Headline accessible figure"
        },
        {
          "must": "Tembo",
          "hint": "Main cash pot"
        },
        {
          "must": "Monmouthshire",
          "hint": "Overflow pot"
        }
      ],
      "ownership": "human"
    },
    "solar-tracker.md": {
      "contains": [
        {
          "must": "Import avoided",
          "hint": "solar energy the house used instead of the meter"
        },
        {
          "must": "Payback progress",
          "hint": "cumulative avoided \u00a3 against \u00a31,000 capex"
        },
        {
          "must": "Monthly",
          "hint": "per-month generation / grid / battery table"
        },
        {
          "must": "curtailed",
          "hint": "surplus thrown away once the battery filled"
        }
      ],
      "ownership": "machine",
      "tables": {
        "Headline": {
          "columns": [
            "Metric",
            "Value"
          ]
        },
        "Monthly": {
          "columns": [
            "Month",
            "Days w/ data",
            "Generated kWh",
            "Battery out kWh",
            "Grid in kWh",
            "Avoided \u00a3",
            "Fill days",
            "Curtailed kWh (upper bd)"
          ]
        }
      }
    },
    "life-admin-tracker.md": {
      "contains": [
        {
          "must": "EgyptAir",
          "hint": "Flight refund case"
        },
        {
          "must": "Kidney",
          "hint": "Living donor case"
        }
      ],
      "ownership": "human",
      "tables": {
        "\ud83c\udd7f\ufe0f Parked / No Action Needed": {
          "columns": [
            "Item",
            "Status",
            "Next Update"
          ]
        },
        "1. Flight Refund \u2014 EgyptAir": {
          "columns": [
            "Status",
            "Task",
            "Details",
            "Next Action"
          ],
          "status_column": 0
        },
        "3. Kidney Donation \u2014 Living Donor for Laura": {
          "columns": [
            "Status",
            "Task",
            "Details",
            "Next Action"
          ],
          "status_column": 0
        }
      },
      "allowed_statuses": [
        "\ud83d\udfe1",
        "\ud83d\udfe2",
        "\u23f3",
        "\u2744\ufe0f",
        "\ud83d\udd34",
        "\u26d4",
        "\ud83c\udd7f\ufe0f",
        "\u2b1c",
        "\u2705"
      ]
    },
    "cross-tracker-intelligence.md": {
      "required_sections": [
        "\ud83d\udcc8 Current Snapshot"
      ],
      "contains": [
        {
          "must": "SIPP transfer completes"
        }
      ]
    },
    "renewals-tracker.md": {
      "contains": [
        {
          "must": "Fuse",
          "hint": "Energy contract"
        },
        {
          "must": "6 Aug 2027",
          "hint": "Fuse contract end"
        },
        {
          "must": "17 Jun 2027",
          "hint": "Fuse exit-fee-free date"
        },
        {
          "must": "Google One"
        }
      ],
      "ownership": "human",
      "tables": {
        "Fixed Billing Periods": {
          "columns": [
            "Service",
            "Fixed Until",
            "3-Week Warning"
          ]
        },
        "Mortgage \u2014 Principality (account 806319008)": {
          "columns": [
            "Thing",
            "Term",
            "Ends"
          ]
        }
      }
    },
    "stoozing-summary.md": {
      "tables": {
        "Current Stoozing Cards": {
          "columns": [
            "Card",
            "Balance",
            "0% End Date",
            "Days Left",
            "Status"
          ],
          "money_columns": [
            1
          ]
        }
      },
      "contains": [
        {
          "must": "TOTAL STOOZING"
        }
      ]
    },
    "annual-checklist-tracker.md": {
      "ownership": "human",
      "tables": {
        "January": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "February": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "March": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "April": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "May": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "June": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "July": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "August": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "September": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "October": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "November": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "December": {
          "columns": [
            "Task",
            "Recurrence",
            "Last Done",
            "Notes"
          ]
        },
        "Cross-Reference": {
          "columns": [
            "Tracker",
            "Items"
          ]
        }
      }
    },
    "subscriptions-register.md": {},
    "bills-register.md": {},
    "bills-payment-log.md": {},
    "decisions.md": {},
    "thinking.md": {},
    "people-register.md": {},
    "wellness-tracker.md": {
      "ownership": "human",
      "tables": {}
    },
    "shopping-register.md": {},
    "anxiety-log-tracker.md": {
      "ownership": "human",
      "tables": {}
    },
    "blood-pressure-tracker.md": {
      "ownership": "machine",
      "tables": {
        "Readings": {
          "columns": [
            "Date",
            "Time",
            "BP (mmHg)",
            "Reading",
            "Time precision",
            "Notes"
          ]
        }
      }
    },
    "investment-gains-tracker.md": {
      "ownership": "machine",
      "tables": {
        "Yellow Cake (YCA) \u2014 the one non-index holding": {
          "columns": [
            "",
            "Combined P&L",
            "Date"
          ]
        }
      }
    },
    "health/health-tracker.md": {
      "ownership": "machine",
      "tables": {
        "Today's Snapshot ({today})": {
          "columns": [
            "Metric",
            "Value",
            "Status"
          ]
        }
      }
    }
  },
  "standard": "TRACKER-STANDARD.md",
  "_note": "v2 (22 Oct 2026): every '##' table in every tracker is declared, so column drift is validated. status_column is only set where the column holds a bare token; free-text status columns are intentionally unchecked."
}
