Worklog System Architecture
Architecture
The worklog system is a daily dashboard + narrative journal built on Antora partials. Every worklog is a thin shell that includes live state from trackers and provides a section for day-specific session accomplishments.
Core Principle
State lives in partials. Narrative lives in worklogs.
-
If content persists beyond today → tracker or project partial
-
If content is day-unique (sessions, reflections, discoveries) → inline in the worklog
-
Worklogs reference state; they do not contain it
Template Structure
make new-day generates a worklog with this skeleton:
= WRKLOG-YYYY-MM-DD
:description: [DAY] - [SUMMARY]
:revdate: YYYY-MM-DD
== Summary
include::partial$worklog/urgent.adoc[]
include::partial$worklog/morning.adoc[]
include::partial$worklog/work-chla.adoc[]
== Session Accomplishments (Claude Code)
_Day-specific accomplishments here._
include::partial$worklog/personal.adoc[]
include::partial$worklog/education.adoc[]
include::partial$worklog/infrastructure.adoc[]
include::partial$worklog/quick-commands.adoc[]
include::partial$worklog/related.adoc[]
Assembler Pattern
Four worklog partials use the assembler pattern — a top-level file delegates to domain-specific sub-files. This allows adding, removing, or swapping domains with a single-line change.
partials/worklog/
├── urgent.adoc # Assembler
│ └── urgent/
│ ├── professional.adoc # Work carryover backlog
│ ├── personal.adoc # Personal blockers
│ ├── life-admin.adoc # Life admin urgent items
│ └── certifications.adoc # Cert deadline urgency
├── morning.adoc # Assembler (slot-based)
│ └── morning/
│ └── focus.adoc # Current morning priority (swappable)
├── work-chla.adoc # Assembler
│ └── work/
│ ├── timekeeping.adoc # PeopleSoft reminder
│ ├── projects.adoc # P0/P1/P2 project includes
│ ├── priorities.adoc # Today's priorities
│ └── tickets.adoc # ITSM tickets (SRs, INCs, CRs)
├── education.adoc # Assembler
│ └── education/
│ ├── ai-engineering.adoc # Claude Code + AI
│ ├── languages.adoc # DELE/SIELE + Don Quijote
│ ├── study-today.adoc # Today's study focus
│ └── regex.adoc # Regex training (remove when complete)
├── personal.adoc # Direct (not yet split)
├── infrastructure.adoc # Direct (not yet split)
├── quick-commands.adoc # Reference (static)
└── related.adoc # Reference (static)
Include Chain
The full include chain from worklog → tracker data:
WRKLOG-2026-04-05.adoc
└─ \include::partial$worklog/urgent.adoc[] # Assembler
└─ \include::partial$worklog/urgent/professional.adoc[]
└─ \include::partial$trackers/work/adhoc.adoc[tag=carryover] # Tag filter
└─ \include::partial$trackers/work/adhoc/carryover.adoc[] # Actual data
Three levels of indirection: worklog → assembler → domain partial → tracker partial → data file. Each level has one concern.
Slot Pattern (morning.adoc)
The morning assembler uses a slot pattern instead of tagged includes. morning/focus.adoc is a single file that contains the current morning priority. When the priority changes (regex → RHCSA → Spanish), swap the file contents without touching the assembler or the worklog template.