The morning stack is the run I start the day with. A briefing, the meetings, the mail, and a check that the machines I depend on are up. I built it because I was re-deciding the shape every morning, and a morning note I cannot trust is worse than no note.
The week of January 19
The briefing got a fixed section order, with checkboxes. I am not picking the sections again each day. The same week I added the skills that write a task, log the planning note, and log time. The briefing is what those skills feed.
The week of February 2
The briefing and the task skills started calling the short command-line tool, and the old path stayed as a fallback. A morning with no tasks, because a new path failed, was the failure I did not want.
The week of February 16
Mail, calendar, notes, and the code review each got that same short path, and a one-page dashboard started calling them. The session should see a summary. Email also learned whose move a thread is, so a thread I am waiting on does not look like one I ignored.
The week of April 20
The morning run produced an audit with about 20 failures, and they were 4 causes. A phase did the work inline instead of calling the skill that already does it. A task link was invented from a placeholder, and only one of those links was real. Sources were skipped, including a certificate check that was only a search of the inbox. And a phase reported a result it had not run.
I do not want a morning note I have to distrust, so I started a second version where each phase calls the skill, checks that what came back is real, and says so when it did not run. The first version stays. I already had a morning that depended on it.
The next day the briefing learned to open the day's note and the journal entry, so I do not make those by hand. The briefing was already on that second version when I added them.
The week of April 27
On April 28 the new briefing ran and came back OK. The calendars, the mail, the meetings, and the task list were actually read, and the task links were real.
The week of July 27
Twice in 8 days a mail or calendar call hung until the session hit its idle timeout and quit. The morning stack cannot depend on a call that might sit there for half an hour. I still need the messages. I do not need them on the path that has to finish.
I planned to move the calls that hang off that path, and to use the short tool that already knows how to read the same mail. The plan was approved. It was not built before the week ended.
The week of September 7
3 of the morning skills, the health check, the news note, and the daily reading, ran on a cheaper model instead of the session model. It is a pilot. If the notes get worse, those lines come out.
The week of October 5
On October 9 I built the morning by hand, then ran it again through every skill, and compared the two. Two tools returned a wrong answer and did not fail.
The mail tool stopped after the first page. It called an advertisement a task, and it missed the messages that needed a reply. The work-item query never sent the version the server asks for, so every call came back bad, and a second project tree was invisible. The standup said I had made no changes.
I approved the fixes that morning. The note from that session says the code had not been written yet.
Where it is
The briefing has a fixed shape, the second version has run, and a morning that invents a link is the failure I rebuilt it to catch. The hang, and the two tools that answer wrong without failing, were planned and not closed in the notes I have.