Back to catalog

daily-log

Log activities to wiki/self/2026.md, week-date hierarchy.

Category ⚡ Productivity
Version v3.0.0
loggingdaily-notesjournalactivity-tracker

Daily Log — wiki/self/2026.md

Trigger

User says anything like "log this", "log that", "record X", "note Y happened", or casually mentions something worth noting for the day.

File

wiki/self/2026.md

Format Rules

  • Week header: ## Week YY.WW (ISO week number, title case)
  • Date subheader: ### YYYY-MM-DD (ISO date)
  • Entries: - bullets under the date, no indentation
  • Order: Newest WEEK on top (descending). Newest DATE on top within a week (descending).
  • Category prefixes (optional, use when the entry clearly maps):
  • Health: — exercise, weight, diet, fasting
  • Faith: — church, communion, spiritual
  • Software: — coding, skills, technical work
  • Network: — people, events, relationships
  • Wealth: — investing, finance, consulting business
  • Self: — personal growth, family, miscellaneous
  • No trailing blank line after the last bullet in a section.

Procedure

Step 1: Determine date and week

from datetime import date
today = date.today()
iso_year, iso_week, _ = today.isocalendar()
week_header = f"## Week {iso_year % 100}.{iso_week:02d}"
date_header = f"### {today.isoformat()}"

Step 2: Read the file

Read wiki/self/2026.md in full.

Step 3: Find or create the week header

  • Search for week_header in the file (case-insensitive match on the week number).
  • If found: Note its line position.
  • If not found: Insert the new week header after the --- separator (line 7-ish), with a blank line before and after.

Step 4: Find or create the date subheader

  • Within the week block (from week header to next ## or end of file), search for date_header.
  • If found: Find the last bullet line under that date (before the next ### or ## or end of section). Insert the new bullet after that line.
  • If not found: Insert date_header right after the week header (newest date on top), then add the bullet(s) underneath.

Step 5: Write the entry

Format — nested bullets, not paragraphs:
  • Top-level bullet: - Category: (e.g., - Health:, - Insights:)
  • Tab-indented sub-bullets: one per discrete fact or point
  • Bold the category name when it's a notable产出 or milestone (e.g., - Self: Q3 Flywheel plan created); regular weight for routine entries (e.g., - Health:)
  • Never write dense paragraphs — each fact gets its own line
Example (good):
- Health: 
	- Jogged 6 km — 9'18"/km avg, HR 128 avg (max 144), 611 kcal, aerobic TE 2.3.
	- Morning readiness: RHR 48 bpm, HRV 38 ms, sleep 7h 42m (deep 1:26, REM 1:53), fatigue 77.
	- Negative split — final km 8'39" (fastest). 7-day streak done.
- Insights: OND Distribution Strategy created
	- Applied Weinberg & Mares' Traction to distribute Mini Guide and Homeschooling Book.
	- Both products score 6-7 independent OR paths (70-80% probability at least one works).
Example (bad — dense paragraph, don't do this):
- Health: jogged 6 km — 9'18"/km avg, HR 128 avg (max 144), 611 kcal, aerobic TE 2.3. Morning readiness: RHR 48 bpm, HRV 38 ms, sleep 7h 42m. Negative split — final km 8'39" (fastest). 7-day streak done.
  • If multi-part (user gave several things), each gets its own top-level bullet with its own sub-bullets
  • If the user's phrasing is casual/terse, flesh it out slightly for readability but keep Joseph's voice — no AI-slop, no filler words

Step 6: Verify

  • Read back the modified section to confirm correct placement
  • Confirm the week/date hierarchy is intact
  • Run the file-based eval to confirm ISO week math is correct:
  •   python3 /opt/data/wiki/produce/hermes/hermes-evals/runners/run_file_checks.py 2>&1 | grep -A2 "daily_log"
      
  • If the check shows FAIL, fix the placement before responding to Joseph. The most common failure: date under wrong week header (ISO week mismatch).

Edge Cases

  • Week rollover: If today is Monday and the current week header doesn't exist yet, create a new one at the top of the entries (after ---).
  • Existing week, new date: Insert the new date right after the week header (before older dates).
  • Existing date, new entry: Append to the end of that date's bullet list.
  • User gives no category: Leave off the prefix, just write the bullet.
  • User says multiple things in one message: Split into separate bullets, one per topic.
  • ISO week validation (MANDATORY): Before inserting any date under a week header, compute the ISO week of that date (date.fromisoformat(d).isocalendar()) and verify it matches the header's week number. If they don't match, create or find the correct week header instead. Never trust a text search alone.
  • Duplicate week headers: Before creating a new week header, scan the file for existing headers with the same week number (case-insensitive). If one exists, insert the date there instead. If duplicates already exist, merge entries and remove the duplicate.

What NOT to do

  • Don't reformat existing entries.
  • Don't reorder weeks or dates that already exist.
  • Don't add a category prefix if the user didn't imply one.
  • Don't add commentary or meta-notes to the log file.
  • Don't touch anything outside the current week block.
  • NEVER use execute_code with read_file/write_file to edit this file. read_file returns LINE_NUM|CONTENT format — if you pass that output to write_file, line numbers become literal file content. Use patch tool for targeted edits, or write_file with hand-crafted content only (never echoed read_file output).

Verification Checklist

  • Entry is under the correct week heading (## Week YY.WW)
  • Entry is under the correct date subheading (### YYYY-MM-DD)
  • Each bullet is one concise line
  • Newest week on top, newest date on top within week
  • No duplicate entries for the same action on the same date