| name | progress-log |
| description | Use to propagate DAE state — turning handoff summaries into visible progress. Triggers — "engineer plugin -> progress-log skill", "sync progress", "update the tracker", "reconcile the tracker", "refresh feature status". |
progress-log
The propagation engine of DAE visibility. Skills emit handoff summaries; progress-log turns them into the two visible state layers — progress.md (the per-feature glanceable file) and the external tracker.
When the foundations say "the agentic summary contract handles propagation," this skill is that propagation. checkpoint: null.
When to use
- Auto — invoked after a handoff-emitting skill changes a DAE-managed field (status change, checkpoint completion). Scope = the triggering feature.
- Manual —
engineer plugin -> progress-log skill <slug> re-syncs one feature; --project reconciles all.
Not for: changing artifacts (feature-edit); validating consistency (consistency-check); a session wrap-up (session-summary).
Workflow
- Resolve + scope — resolve the methodology root + manifest via
${PLUGIN_ROOT}/scripts/dae_resolve.py (see references/resolving.md); the manifest carries the tracker config. Scope = one feature (auto / <slug>) or all (--project).
- Read new handoffs —
handoffs/*.md not yet reflected in progress.md (compare timestamps against the last-synced marker).
- Update
progress.md — per handoff: update the Checkpoints table row (if checkpoint: set), append to Verification reports (if a verification skill), append to the Handoff log, recompute the CURRENT header — the fixed, parseable first line of progress.md: > ▶ CP<N> <Stage> — <m>/<n> criteria met | NEXT: <action> | BLOCKED: <none|reason>. Derive <m>/<n> from the latest handoff's exit_criteria block for the current checkpoint, NEXT from its recommended_next, and BLOCKED from any unmet criterion that needs a human (else none).
- Recompute tracked state — derive the
TrackedFeature record from local truth (feature.md + progress.md).
- Sync the tracker — driver
upsert(TrackedFeature) per references/tracker.md: local-wins on DAE-managed fields, tracker-managed fields (comments, labels) preserved. local = no-op (the feature files are the tracker). Write the result to progress.md's "Tracker sync" line.
- (
--project only) Drift report — driver reconcile() per references/tracker.md; surface anything unexpected (orphan tracker entry, untracked local feature).
Handoff exemption
progress-log does NOT emit a handoff summary — it is the single exception to the agentic summary contract. It is the mechanism that processes handoffs; emitting one would trigger another progress-log run, looping. Its record of work is the progress.md "Tracker sync" line. (Documented in the Foundation Design.)
References
- Foundation Design —
progress.md schema, agentic summary contract + this exemption (Section 5)
references/tracker.md — the tracker drivers, TrackedFeature, local-wins reconciliation
- Tracker Integration — sync triggers, the column schema