opencastle 0.10.7 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/bin/cli.mjs +4 -0
- package/dist/cli/dashboard.d.ts.map +1 -1
- package/dist/cli/dashboard.js +5 -1
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/init.test.js +1 -1
- package/dist/cli/init.test.js.map +1 -1
- package/dist/cli/lesson.d.ts +17 -0
- package/dist/cli/lesson.d.ts.map +1 -0
- package/dist/cli/lesson.js +294 -0
- package/dist/cli/lesson.js.map +1 -0
- package/dist/cli/log.d.ts +7 -0
- package/dist/cli/log.d.ts.map +1 -0
- package/dist/cli/log.js +131 -0
- package/dist/cli/log.js.map +1 -0
- package/dist/cli/run/executor.js.map +1 -1
- package/dist/cli/run/loop-executor.d.ts +3 -0
- package/dist/cli/run/loop-executor.d.ts.map +1 -0
- package/dist/cli/run/loop-executor.js +154 -0
- package/dist/cli/run/loop-executor.js.map +1 -0
- package/dist/cli/run/loop-reporter.d.ts +6 -0
- package/dist/cli/run/loop-reporter.d.ts.map +1 -0
- package/dist/cli/run/loop-reporter.js +112 -0
- package/dist/cli/run/loop-reporter.js.map +1 -0
- package/dist/cli/run/reporter.d.ts.map +1 -1
- package/dist/cli/run/reporter.js +28 -1
- package/dist/cli/run/reporter.js.map +1 -1
- package/dist/cli/run/schema.d.ts.map +1 -1
- package/dist/cli/run/schema.js +104 -52
- package/dist/cli/run/schema.js.map +1 -1
- package/dist/cli/run/schema.test.js +214 -0
- package/dist/cli/run/schema.test.js.map +1 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +84 -3
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/types.d.ts +59 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +54 -1
- package/dist/cli/update.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/dashboard.ts +5 -1
- package/src/cli/init.test.ts +1 -1
- package/src/cli/lesson.ts +312 -0
- package/src/cli/log.ts +133 -0
- package/src/cli/run/executor.ts +8 -8
- package/src/cli/run/loop-executor.ts +198 -0
- package/src/cli/run/loop-reporter.ts +125 -0
- package/src/cli/run/reporter.ts +30 -1
- package/src/cli/run/schema.test.ts +242 -2
- package/src/cli/run/schema.ts +115 -59
- package/src/cli/run.ts +82 -5
- package/src/cli/types.ts +67 -1
- package/src/cli/update.ts +62 -1
- package/src/dashboard/dist/index.html +14 -15
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/dashboard/scripts/generate-seed-data.ts +23 -43
- package/src/dashboard/seed-data/events.ndjson +104 -0
- package/src/dashboard/src/pages/index.astro +14 -15
- package/src/orchestrator/agents/api-designer.agent.md +1 -1
- package/src/orchestrator/agents/architect.agent.md +1 -1
- package/src/orchestrator/agents/content-engineer.agent.md +1 -1
- package/src/orchestrator/agents/copywriter.agent.md +1 -1
- package/src/orchestrator/agents/data-expert.agent.md +1 -1
- package/src/orchestrator/agents/database-engineer.agent.md +1 -1
- package/src/orchestrator/agents/developer.agent.md +1 -1
- package/src/orchestrator/agents/devops-expert.agent.md +1 -1
- package/src/orchestrator/agents/documentation-writer.agent.md +1 -1
- package/src/orchestrator/agents/performance-expert.agent.md +1 -1
- package/src/orchestrator/agents/release-manager.agent.md +1 -1
- package/src/orchestrator/agents/security-expert.agent.md +1 -1
- package/src/orchestrator/agents/seo-specialist.agent.md +1 -1
- package/src/orchestrator/agents/session-guard.agent.md +9 -21
- package/src/orchestrator/agents/team-lead.agent.md +8 -34
- package/src/orchestrator/agents/testing-expert.agent.md +1 -1
- package/src/orchestrator/agents/ui-ux-expert.agent.md +1 -1
- package/src/orchestrator/customizations/AGENT-PERFORMANCE.md +11 -12
- package/src/orchestrator/customizations/DISPUTES.md +2 -2
- package/src/orchestrator/customizations/README.md +1 -3
- package/src/orchestrator/customizations/logs/README.md +66 -14
- package/src/orchestrator/instructions/ai-optimization.instructions.md +21 -132
- package/src/orchestrator/instructions/general.instructions.md +35 -181
- package/src/orchestrator/plugins/nx/SKILL.md +1 -1
- package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +4 -8
- package/src/orchestrator/prompts/bug-fix.prompt.md +4 -4
- package/src/orchestrator/prompts/implement-feature.prompt.md +3 -3
- package/src/orchestrator/prompts/quick-refinement.prompt.md +3 -3
- package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +1 -1
- package/src/orchestrator/skills/agent-hooks/SKILL.md +11 -11
- package/src/orchestrator/skills/decomposition/SKILL.md +1 -1
- package/src/orchestrator/skills/fast-review/SKILL.md +4 -19
- package/src/orchestrator/skills/git-workflow/SKILL.md +72 -0
- package/src/orchestrator/skills/memory-merger/SKILL.md +1 -1
- package/src/orchestrator/skills/observability-logging/SKILL.md +129 -0
- package/src/orchestrator/skills/orchestration-protocols/SKILL.md +2 -2
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +4 -7
- package/src/orchestrator/skills/self-improvement/SKILL.md +13 -26
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +2 -2
- package/src/orchestrator/customizations/logs/delegations.ndjson +0 -1
- package/src/orchestrator/customizations/logs/panels.ndjson +0 -1
- package/src/orchestrator/customizations/logs/reviews.ndjson +0 -0
- package/src/orchestrator/customizations/logs/sessions.ndjson +0 -1
- /package/src/orchestrator/customizations/logs/{disputes.ndjson → events.ndjson} +0 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{"type":"delegation","timestamp":"2026-02-20T08:00:00.000Z","session_id":"feat/tas-43","agent":"DevOps Expert","model":"gpt-5-mini","tier":"standard","mechanism":"sub-agent","tracker_issue":"TAS-43","outcome":"success","retries":1,"phase":1,"file_partition":["libs/queries/","libs/server-utils/"]}
|
|
2
|
+
{"type":"panel","timestamp":"2026-02-20T08:00:00.000Z","panel_key":"auth-review","verdict":"pass","pass_count":2,"block_count":1,"must_fix":0,"should_fix":6,"reviewer_model":"gpt-5.3-codex","weighted":false,"attempt":1,"tracker_issue":"TAS-43","artifacts_count":7,"report_path":"docs/ai-agents/panel/auth-review.md"}
|
|
3
|
+
{"type":"session","timestamp":"2026-02-20T08:00:34.359Z","agent":"Architect","model":"claude-opus-4-6","task":"TAS-46: Fix CORS headers","tracker_issue":"TAS-46","outcome":"success","duration_min":20,"files_changed":9,"retries":1,"lessons_added":["LES-002"],"discoveries":[]}
|
|
4
|
+
{"type":"session","timestamp":"2026-02-20T11:05:05.028Z","agent":"Supabase DB Expert","model":"gpt-5-mini","task":"TAS-56: Fix redirect loop","tracker_issue":"TAS-56","outcome":"partial","duration_min":32,"files_changed":5,"retries":2,"lessons_added":[],"discoveries":[]}
|
|
5
|
+
{"type":"delegation","timestamp":"2026-02-20T11:38:52.677Z","session_id":"feat/tas-31","agent":"Architect","model":"gpt-5.3-codex","tier":"economy","mechanism":"sub-agent","tracker_issue":"TAS-31","outcome":"success","retries":0,"phase":2,"file_partition":["libs/data-pipeline/"]}
|
|
6
|
+
{"type":"session","timestamp":"2026-02-20T13:16:10.762Z","agent":"Sanity Expert","model":"gpt-5-mini","task":"TAS-51: Fix redirect loop","tracker_issue":"TAS-51","outcome":"success","duration_min":33,"files_changed":11,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
7
|
+
{"type":"delegation","timestamp":"2026-02-20T15:37:40.293Z","session_id":"feat/tas-59","agent":"Documentation Writer","model":"gemini-3.1-pro","tier":"standard","mechanism":"background","tracker_issue":"TAS-59","outcome":"success","retries":0,"phase":2,"file_partition":["libs/data-pipeline/"]}
|
|
8
|
+
{"type":"session","timestamp":"2026-02-20T15:42:21.649Z","agent":"Architect","model":"gpt-5.3-codex","task":"TAS-48: Add venue suggestions","tracker_issue":"TAS-48","outcome":"success","duration_min":42,"files_changed":6,"retries":1,"lessons_added":["LES-005"],"discoveries":[]}
|
|
9
|
+
{"type":"session","timestamp":"2026-02-20T18:33:39.948Z","agent":"Next.js Developer","model":"gemini-3.1-pro","task":"TAS-45: Add image optimization","tracker_issue":"TAS-45","outcome":"success","duration_min":17,"files_changed":6,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
10
|
+
{"type":"panel","timestamp":"2026-02-20T19:09:32.117Z","panel_key":"security-audit","verdict":"pass","pass_count":2,"block_count":1,"must_fix":0,"should_fix":5,"reviewer_model":"claude-opus-4-6","weighted":false,"attempt":1,"tracker_issue":"TAS-48","artifacts_count":9,"report_path":"docs/ai-agents/panel/security-audit.md"}
|
|
11
|
+
{"type":"delegation","timestamp":"2026-02-20T19:36:10.946Z","session_id":"feat/tas-49","agent":"Data Expert","model":"gemini-3.1-pro","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-49","outcome":"partial","retries":0,"phase":3,"file_partition":["libs/queries/","libs/server-utils/"]}
|
|
12
|
+
{"type":"session","timestamp":"2026-02-20T20:50:56.727Z","agent":"UI/UX Expert","model":"claude-opus-4-6","task":"TAS-49: Fix redirect loop","tracker_issue":"TAS-49","outcome":"success","duration_min":29,"files_changed":13,"retries":1,"lessons_added":["LES-002"],"discoveries":[]}
|
|
13
|
+
{"type":"delegation","timestamp":"2026-02-20T23:09:18.799Z","session_id":"feat/tas-49","agent":"Supabase DB Expert","model":"gpt-5-mini","tier":"utility","mechanism":"background","tracker_issue":"TAS-49","outcome":"failed","retries":1,"phase":3,"file_partition":["libs/ui-kit/","apps/tastebeer.eu/app/"]}
|
|
14
|
+
{"type":"session","timestamp":"2026-02-21T00:05:00.537Z","agent":"Testing Expert","model":"gpt-5-mini","task":"TAS-58: Fix mobile layout","tracker_issue":"TAS-58","outcome":"partial","duration_min":36,"files_changed":5,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
15
|
+
{"type":"session","timestamp":"2026-02-21T01:56:41.910Z","agent":"Supabase DB Expert","model":"gpt-5.3-codex","task":"TAS-42: Optimize bundle size","tracker_issue":"TAS-42","outcome":"partial","duration_min":25,"files_changed":15,"retries":2,"lessons_added":[],"discoveries":[]}
|
|
16
|
+
{"type":"delegation","timestamp":"2026-02-21T02:23:04.138Z","session_id":"feat/tas-32","agent":"Security Expert","model":"gpt-5-mini","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-32","outcome":"success","retries":0,"phase":1,"file_partition":["apps/tastebeer.eu/app/","apps/tastecoffee.eu/app/"]}
|
|
17
|
+
{"type":"session","timestamp":"2026-02-21T05:11:42.700Z","agent":"Security Expert","model":"gpt-5.3-codex","task":"TAS-51: Add image optimization","tracker_issue":"TAS-51","outcome":"success","duration_min":11,"files_changed":5,"retries":1,"lessons_added":["LES-002"],"discoveries":["Refactor auth flow"]}
|
|
18
|
+
{"type":"delegation","timestamp":"2026-02-21T05:52:23.451Z","session_id":"feat/tas-39","agent":"Next.js Developer","model":"gpt-5.3-codex","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-39","outcome":"success","retries":0,"phase":4,"file_partition":["apps/cms-studio/"]}
|
|
19
|
+
{"type":"panel","timestamp":"2026-02-21T06:02:55.882Z","panel_key":"perf-review","verdict":"pass","pass_count":3,"block_count":0,"must_fix":0,"should_fix":8,"reviewer_model":"gpt-5-mini","weighted":false,"attempt":1,"tracker_issue":"TAS-37","artifacts_count":16,"report_path":"docs/ai-agents/panel/perf-review.md"}
|
|
20
|
+
{"type":"session","timestamp":"2026-02-21T07:24:02.899Z","agent":"Next.js Developer","model":"gpt-5.3-codex","task":"TAS-42: Update scraper logic","tracker_issue":"TAS-42","outcome":"success","duration_min":24,"files_changed":9,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
21
|
+
{"type":"session","timestamp":"2026-02-21T10:15:19.797Z","agent":"DevOps Expert","model":"gemini-3.1-pro","task":"TAS-53: Update SEO metadata","tracker_issue":"TAS-53","outcome":"success","duration_min":29,"files_changed":11,"retries":0,"lessons_added":[],"discoveries":["Update venue detail"]}
|
|
22
|
+
{"type":"delegation","timestamp":"2026-02-21T10:29:16.394Z","session_id":"feat/tas-41","agent":"Testing Expert","model":"claude-opus-4-6","tier":"utility","mechanism":"background","tracker_issue":"TAS-41","outcome":"success","retries":1,"phase":2,"file_partition":["libs/data-pipeline/","libs/queries/"]}
|
|
23
|
+
{"type":"session","timestamp":"2026-02-21T12:33:24.255Z","agent":"Testing Expert","model":"gemini-3.1-pro","task":"TAS-50: Refactor auth flow","tracker_issue":"TAS-50","outcome":"success","duration_min":29,"files_changed":11,"retries":0,"lessons_added":[],"discoveries":["Add social links"]}
|
|
24
|
+
{"type":"delegation","timestamp":"2026-02-21T14:00:03.752Z","session_id":"feat/tas-50","agent":"Next.js Developer","model":"gpt-5.3-codex","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-50","outcome":"success","retries":0,"phase":1,"file_partition":["libs/supabase-auth/"]}
|
|
25
|
+
{"type":"session","timestamp":"2026-02-21T14:54:49.349Z","agent":"Data Expert","model":"gpt-5-mini","task":"TAS-47: Fix slug generation","tracker_issue":"TAS-47","outcome":"partial","duration_min":25,"files_changed":3,"retries":2,"lessons_added":[],"discoveries":[]}
|
|
26
|
+
{"type":"panel","timestamp":"2026-02-21T16:32:56.551Z","panel_key":"a11y-audit","verdict":"block","pass_count":0,"block_count":3,"must_fix":4,"should_fix":3,"reviewer_model":"claude-opus-4-6","weighted":false,"attempt":2,"tracker_issue":"TAS-39","artifacts_count":16,"report_path":"docs/ai-agents/panel/a11y-audit.md"}
|
|
27
|
+
{"type":"delegation","timestamp":"2026-02-21T17:10:13.592Z","session_id":"feat/tas-41","agent":"UI/UX Expert","model":"gpt-5.3-codex","tier":"premium","mechanism":"sub-agent","tracker_issue":"TAS-41","outcome":"success","retries":1,"phase":1,"file_partition":["apps/tastecoffee.eu/app/"]}
|
|
28
|
+
{"type":"session","timestamp":"2026-02-21T18:06:15.985Z","agent":"Sanity Expert","model":"gemini-3.1-pro","task":"TAS-44: Update moderation UI","tracker_issue":"TAS-44","outcome":"success","duration_min":18,"files_changed":4,"retries":1,"lessons_added":["LES-010"],"discoveries":["Fix pagination"]}
|
|
29
|
+
{"type":"session","timestamp":"2026-02-21T20:51:57.384Z","agent":"Performance Expert","model":"claude-opus-4-6","task":"TAS-47: Add geolocation","tracker_issue":"TAS-47","outcome":"partial","duration_min":22,"files_changed":3,"retries":1,"lessons_added":["LES-006"],"discoveries":[]}
|
|
30
|
+
{"type":"delegation","timestamp":"2026-02-21T21:26:17.711Z","session_id":"feat/tas-58","agent":"Sanity Expert","model":"gpt-5-mini","tier":"utility","mechanism":"background","tracker_issue":"TAS-58","outcome":"success","retries":1,"phase":1,"file_partition":["libs/ui-kit/","apps/tastebeer.eu/app/"]}
|
|
31
|
+
{"type":"session","timestamp":"2026-02-21T22:37:25.143Z","agent":"Sanity Expert","model":"gpt-5.3-codex","task":"TAS-38: Fix header navigation","tracker_issue":"TAS-38","outcome":"success","duration_min":38,"files_changed":3,"retries":0,"lessons_added":[],"discoveries":["Add cache headers"]}
|
|
32
|
+
{"type":"delegation","timestamp":"2026-02-22T00:51:23.821Z","session_id":"feat/tas-33","agent":"DevOps Expert","model":"gpt-5-mini","tier":"utility","mechanism":"background","tracker_issue":"TAS-33","outcome":"failed","retries":2,"phase":1,"file_partition":["apps/tastebeer.eu/app/","apps/tastecoffee.eu/app/"]}
|
|
33
|
+
{"type":"session","timestamp":"2026-02-22T02:04:09.220Z","agent":"Data Expert","model":"gpt-5-mini","task":"TAS-40: Update CMS schema","tracker_issue":"TAS-40","outcome":"failed","duration_min":29,"files_changed":1,"retries":3,"lessons_added":["LES-003"],"discoveries":["Add social links"]}
|
|
34
|
+
{"type":"panel","timestamp":"2026-02-22T03:35:46.612Z","panel_key":"schema-review","verdict":"block","pass_count":0,"block_count":3,"must_fix":5,"should_fix":2,"reviewer_model":"gpt-5-mini","weighted":false,"attempt":2,"tracker_issue":"TAS-54","artifacts_count":20,"report_path":"docs/ai-agents/panel/schema-review.md"}
|
|
35
|
+
{"type":"session","timestamp":"2026-02-22T04:18:52.718Z","agent":"Supabase DB Expert","model":"gemini-3.1-pro","task":"TAS-38: Update scraper logic","tracker_issue":"TAS-38","outcome":"success","duration_min":32,"files_changed":1,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
36
|
+
{"type":"delegation","timestamp":"2026-02-22T04:53:39.261Z","session_id":"feat/tas-35","agent":"Documentation Writer","model":"gpt-5.3-codex","tier":"utility","mechanism":"background","tracker_issue":"TAS-35","outcome":"success","retries":1,"phase":1,"file_partition":["libs/server-utils/"]}
|
|
37
|
+
{"type":"session","timestamp":"2026-02-22T06:31:31.565Z","agent":"Architect","model":"gemini-3.1-pro","task":"TAS-41: Add unit tests","tracker_issue":"TAS-41","outcome":"success","duration_min":13,"files_changed":14,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
38
|
+
{"type":"delegation","timestamp":"2026-02-22T08:20:53.525Z","session_id":"feat/tas-59","agent":"DevOps Expert","model":"claude-opus-4-6","tier":"standard","mechanism":"sub-agent","tracker_issue":"TAS-59","outcome":"success","retries":0,"phase":4,"file_partition":["libs/queries/"]}
|
|
39
|
+
{"type":"session","timestamp":"2026-02-22T09:44:33.779Z","agent":"Security Expert","model":"gemini-3.1-pro","task":"TAS-51: Update RLS policies","tracker_issue":"TAS-51","outcome":"failed","duration_min":8,"files_changed":10,"retries":3,"lessons_added":["LES-004"],"discoveries":["Update scraper logic"]}
|
|
40
|
+
{"type":"delegation","timestamp":"2026-02-22T11:43:14.243Z","session_id":"feat/tas-36","agent":"Next.js Developer","model":"gpt-5.3-codex","tier":"economy","mechanism":"sub-agent","tracker_issue":"TAS-36","outcome":"success","retries":0,"phase":1,"file_partition":["libs/server-utils/"]}
|
|
41
|
+
{"type":"session","timestamp":"2026-02-22T12:20:59.680Z","agent":"Testing Expert","model":"gpt-5-mini","task":"TAS-32: Add venue suggestions","tracker_issue":"TAS-32","outcome":"failed","duration_min":21,"files_changed":12,"retries":3,"lessons_added":["LES-001"],"discoveries":["Fix CORS headers"]}
|
|
42
|
+
{"type":"panel","timestamp":"2026-02-22T14:02:10.154Z","panel_key":"api-review","verdict":"pass","pass_count":3,"block_count":0,"must_fix":0,"should_fix":8,"reviewer_model":"gpt-5.3-codex","weighted":true,"attempt":1,"tracker_issue":"TAS-50","artifacts_count":17,"report_path":"docs/ai-agents/panel/api-review.md"}
|
|
43
|
+
{"type":"session","timestamp":"2026-02-22T14:18:43.678Z","agent":"Supabase DB Expert","model":"claude-opus-4-6","task":"TAS-55: Update search API","tracker_issue":"TAS-55","outcome":"success","duration_min":33,"files_changed":12,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
44
|
+
{"type":"delegation","timestamp":"2026-02-22T15:29:36.510Z","session_id":"feat/tas-54","agent":"Supabase DB Expert","model":"gpt-5.3-codex","tier":"standard","mechanism":"background","tracker_issue":"TAS-54","outcome":"success","retries":0,"phase":4,"file_partition":["apps/cms-studio/"]}
|
|
45
|
+
{"type":"session","timestamp":"2026-02-22T17:34:33.606Z","agent":"Documentation Writer","model":"claude-opus-4-6","task":"TAS-55: Update venue detail","tracker_issue":"TAS-55","outcome":"success","duration_min":6,"files_changed":6,"retries":1,"lessons_added":[],"discoveries":["Add cache headers"]}
|
|
46
|
+
{"type":"delegation","timestamp":"2026-02-22T19:18:04.518Z","session_id":"feat/tas-41","agent":"DevOps Expert","model":"gemini-3.1-pro","tier":"utility","mechanism":"background","tracker_issue":"TAS-41","outcome":"success","retries":1,"phase":3,"file_partition":["libs/server-utils/"]}
|
|
47
|
+
{"type":"session","timestamp":"2026-02-22T20:17:44.211Z","agent":"Supabase DB Expert","model":"claude-opus-4-6","task":"TAS-36: Add price filter","tracker_issue":"TAS-36","outcome":"success","duration_min":19,"files_changed":4,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
48
|
+
{"type":"session","timestamp":"2026-02-22T22:32:33.601Z","agent":"Supabase DB Expert","model":"claude-opus-4-6","task":"TAS-37: Fix pagination","tracker_issue":"TAS-37","outcome":"partial","duration_min":44,"files_changed":2,"retries":1,"lessons_added":[],"discoveries":["Add venue suggestions"]}
|
|
49
|
+
{"type":"delegation","timestamp":"2026-02-22T23:18:07.164Z","session_id":"feat/tas-44","agent":"Next.js Developer","model":"claude-opus-4-6","tier":"premium","mechanism":"sub-agent","tracker_issue":"TAS-44","outcome":"success","retries":1,"phase":2,"file_partition":["libs/server-utils/"]}
|
|
50
|
+
{"type":"panel","timestamp":"2026-02-23T01:09:17.203Z","panel_key":"ui-review","verdict":"block","pass_count":1,"block_count":2,"must_fix":5,"should_fix":6,"reviewer_model":"claude-opus-4-6","weighted":true,"attempt":2,"tracker_issue":"TAS-55","artifacts_count":15,"report_path":"docs/ai-agents/panel/ui-review.md"}
|
|
51
|
+
{"type":"session","timestamp":"2026-02-23T01:26:57.546Z","agent":"Sanity Expert","model":"gpt-5-mini","task":"TAS-52: Add social links","tracker_issue":"TAS-52","outcome":"partial","duration_min":13,"files_changed":3,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
52
|
+
{"type":"delegation","timestamp":"2026-02-23T02:34:46.644Z","session_id":"feat/tas-30","agent":"Sanity Expert","model":"gemini-3.1-pro","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-30","outcome":"failed","retries":2,"phase":4,"file_partition":["apps/tastebeer.eu/app/","apps/tastecoffee.eu/app/"]}
|
|
53
|
+
{"type":"session","timestamp":"2026-02-23T03:16:41.486Z","agent":"Architect","model":"gpt-5.3-codex","task":"TAS-31: Add sort options","tracker_issue":"TAS-31","outcome":"success","duration_min":31,"files_changed":8,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
54
|
+
{"type":"delegation","timestamp":"2026-02-23T06:21:11.926Z","session_id":"feat/tas-45","agent":"Performance Expert","model":"gpt-5-mini","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-45","outcome":"success","retries":1,"phase":4,"file_partition":["libs/ui-kit/","apps/tastebeer.eu/app/"]}
|
|
55
|
+
{"type":"session","timestamp":"2026-02-23T06:22:53.878Z","agent":"Sanity Expert","model":"gemini-3.1-pro","task":"TAS-47: Add price filter","tracker_issue":"TAS-47","outcome":"success","duration_min":19,"files_changed":4,"retries":1,"lessons_added":[],"discoveries":["Fix pagination"]}
|
|
56
|
+
{"type":"session","timestamp":"2026-02-23T09:04:20.943Z","agent":"UI/UX Expert","model":"gpt-5-mini","task":"TAS-34: Add geolocation","tracker_issue":"TAS-34","outcome":"success","duration_min":35,"files_changed":1,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
57
|
+
{"type":"delegation","timestamp":"2026-02-23T09:50:56.855Z","session_id":"feat/tas-50","agent":"Data Expert","model":"gemini-3.1-pro","tier":"standard","mechanism":"background","tracker_issue":"TAS-50","outcome":"success","retries":1,"phase":2,"file_partition":["libs/supabase-auth/"]}
|
|
58
|
+
{"type":"session","timestamp":"2026-02-23T11:28:05.523Z","agent":"Data Expert","model":"claude-opus-4-6","task":"TAS-36: Update CMS schema","tracker_issue":"TAS-36","outcome":"success","duration_min":15,"files_changed":9,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
59
|
+
{"type":"panel","timestamp":"2026-02-23T11:41:37.464Z","panel_key":"test-coverage","verdict":"pass","pass_count":3,"block_count":0,"must_fix":0,"should_fix":3,"reviewer_model":"gpt-5-mini","weighted":false,"attempt":1,"tracker_issue":"TAS-31","artifacts_count":18,"report_path":"docs/ai-agents/panel/test-coverage.md"}
|
|
60
|
+
{"type":"session","timestamp":"2026-02-23T14:15:53.224Z","agent":"Data Expert","model":"gpt-5.3-codex","task":"TAS-31: Fix redirect loop","tracker_issue":"TAS-31","outcome":"success","duration_min":43,"files_changed":8,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
61
|
+
{"type":"delegation","timestamp":"2026-02-23T14:28:33.926Z","session_id":"feat/tas-55","agent":"UI/UX Expert","model":"gpt-5-mini","tier":"economy","mechanism":"background","tracker_issue":"TAS-55","outcome":"success","retries":1,"phase":3,"file_partition":["libs/ui-kit/","apps/tastebeer.eu/app/"]}
|
|
62
|
+
{"type":"session","timestamp":"2026-02-23T16:28:00.114Z","agent":"UI/UX Expert","model":"gpt-5-mini","task":"TAS-35: Add cache headers","tracker_issue":"TAS-35","outcome":"success","duration_min":37,"files_changed":14,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
63
|
+
{"type":"delegation","timestamp":"2026-02-23T17:21:16.023Z","session_id":"feat/tas-34","agent":"Data Expert","model":"claude-opus-4-6","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-34","outcome":"partial","retries":1,"phase":4,"file_partition":["libs/ui-kit/","apps/tastebeer.eu/app/"]}
|
|
64
|
+
{"type":"session","timestamp":"2026-02-23T18:44:29.480Z","agent":"Architect","model":"gemini-3.1-pro","task":"TAS-56: Add cache headers","tracker_issue":"TAS-56","outcome":"failed","duration_min":39,"files_changed":12,"retries":2,"lessons_added":[],"discoveries":["Fix SSR hydration"]}
|
|
65
|
+
{"type":"delegation","timestamp":"2026-02-23T21:23:59.785Z","session_id":"feat/tas-54","agent":"Supabase DB Expert","model":"claude-opus-4-6","tier":"standard","mechanism":"background","tracker_issue":"TAS-54","outcome":"success","retries":0,"phase":1,"file_partition":["apps/tastebeer.eu/app/"]}
|
|
66
|
+
{"type":"session","timestamp":"2026-02-23T22:10:16.183Z","agent":"Performance Expert","model":"gpt-5.3-codex","task":"TAS-33: Add price filter","tracker_issue":"TAS-33","outcome":"success","duration_min":37,"files_changed":13,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
67
|
+
{"type":"panel","timestamp":"2026-02-23T22:16:10.866Z","panel_key":"csp-headers","verdict":"pass","pass_count":2,"block_count":1,"must_fix":0,"should_fix":3,"reviewer_model":"gemini-3.1-pro","weighted":false,"attempt":1,"tracker_issue":"TAS-40","artifacts_count":6,"report_path":"docs/ai-agents/panel/csp-headers.md"}
|
|
68
|
+
{"type":"session","timestamp":"2026-02-24T00:09:22.013Z","agent":"Security Expert","model":"gpt-5.3-codex","task":"TAS-48: Update search API","tracker_issue":"TAS-48","outcome":"success","duration_min":15,"files_changed":8,"retries":1,"lessons_added":[],"discoveries":["Update CMS schema"]}
|
|
69
|
+
{"type":"delegation","timestamp":"2026-02-24T01:37:32.832Z","session_id":"feat/tas-45","agent":"UI/UX Expert","model":"gemini-3.1-pro","tier":"economy","mechanism":"background","tracker_issue":"TAS-45","outcome":"success","retries":1,"phase":1,"file_partition":["libs/ui-kit/","apps/tastebeer.eu/app/"]}
|
|
70
|
+
{"type":"session","timestamp":"2026-02-24T03:00:42.606Z","agent":"Testing Expert","model":"gpt-5-mini","task":"TAS-39: Fix cookie consent","tracker_issue":"TAS-39","outcome":"success","duration_min":42,"files_changed":10,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
71
|
+
{"type":"delegation","timestamp":"2026-02-24T04:36:24.219Z","session_id":"feat/tas-32","agent":"Data Expert","model":"gpt-5.3-codex","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-32","outcome":"success","retries":1,"phase":4,"file_partition":["libs/data-pipeline/","libs/queries/"]}
|
|
72
|
+
{"type":"session","timestamp":"2026-02-24T05:18:53.042Z","agent":"Next.js Developer","model":"gemini-3.1-pro","task":"TAS-37: Update contact form","tracker_issue":"TAS-37","outcome":"failed","duration_min":20,"files_changed":11,"retries":2,"lessons_added":[],"discoveries":["Add geolocation"]}
|
|
73
|
+
{"type":"session","timestamp":"2026-02-24T08:11:14.714Z","agent":"Next.js Developer","model":"gemini-3.1-pro","task":"TAS-30: Add unit tests","tracker_issue":"TAS-30","outcome":"partial","duration_min":32,"files_changed":6,"retries":2,"lessons_added":["LES-009"],"discoveries":["Fix SSR hydration"]}
|
|
74
|
+
{"type":"delegation","timestamp":"2026-02-24T08:15:17.039Z","session_id":"feat/tas-49","agent":"Data Expert","model":"gpt-5.3-codex","tier":"premium","mechanism":"sub-agent","tracker_issue":"TAS-49","outcome":"success","retries":1,"phase":3,"file_partition":["libs/data-pipeline/"]}
|
|
75
|
+
{"type":"panel","timestamp":"2026-02-24T09:55:09.030Z","panel_key":"migration-review","verdict":"pass","pass_count":3,"block_count":0,"must_fix":0,"should_fix":5,"reviewer_model":"gemini-3.1-pro","weighted":false,"attempt":1,"tracker_issue":"TAS-53","artifacts_count":6,"report_path":"docs/ai-agents/panel/migration-review.md"}
|
|
76
|
+
{"type":"session","timestamp":"2026-02-24T10:24:49.892Z","agent":"Performance Expert","model":"claude-opus-4-6","task":"TAS-33: Fix cookie consent","tracker_issue":"TAS-33","outcome":"failed","duration_min":39,"files_changed":2,"retries":2,"lessons_added":[],"discoveries":[]}
|
|
77
|
+
{"type":"delegation","timestamp":"2026-02-24T12:28:28.251Z","session_id":"feat/tas-31","agent":"DevOps Expert","model":"claude-opus-4-6","tier":"premium","mechanism":"background","tracker_issue":"TAS-31","outcome":"partial","retries":0,"phase":4,"file_partition":["libs/ui-kit/","apps/tastebeer.eu/app/"]}
|
|
78
|
+
{"type":"session","timestamp":"2026-02-24T12:54:27.158Z","agent":"Data Expert","model":"claude-opus-4-6","task":"TAS-35: Add filter component","tracker_issue":"TAS-35","outcome":"success","duration_min":13,"files_changed":7,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
79
|
+
{"type":"session","timestamp":"2026-02-24T15:47:57.543Z","agent":"Performance Expert","model":"gpt-5.3-codex","task":"TAS-59: Fix CSP violations","tracker_issue":"TAS-59","outcome":"success","duration_min":25,"files_changed":7,"retries":1,"lessons_added":[],"discoveries":["Add venue suggestions"]}
|
|
80
|
+
{"type":"delegation","timestamp":"2026-02-24T16:03:58.674Z","session_id":"feat/tas-51","agent":"Data Expert","model":"gpt-5-mini","tier":"standard","mechanism":"sub-agent","tracker_issue":"TAS-51","outcome":"success","retries":0,"phase":2,"file_partition":["libs/queries/"]}
|
|
81
|
+
{"type":"session","timestamp":"2026-02-24T18:21:34.626Z","agent":"Testing Expert","model":"claude-opus-4-6","task":"TAS-47: Add image optimization","tracker_issue":"TAS-47","outcome":"success","duration_min":45,"files_changed":1,"retries":1,"lessons_added":["LES-005"],"discoveries":[]}
|
|
82
|
+
{"type":"delegation","timestamp":"2026-02-24T19:36:47.295Z","session_id":"feat/tas-45","agent":"Security Expert","model":"gpt-5.3-codex","tier":"premium","mechanism":"sub-agent","tracker_issue":"TAS-45","outcome":"success","retries":0,"phase":1,"file_partition":["apps/tastecoffee.eu/app/"]}
|
|
83
|
+
{"type":"panel","timestamp":"2026-02-24T20:15:45.425Z","panel_key":"query-optimization","verdict":"block","pass_count":0,"block_count":3,"must_fix":5,"should_fix":5,"reviewer_model":"gpt-5-mini","weighted":false,"attempt":3,"tracker_issue":"TAS-42","artifacts_count":15,"report_path":"docs/ai-agents/panel/query-optimization.md"}
|
|
84
|
+
{"type":"session","timestamp":"2026-02-24T20:46:38.816Z","agent":"DevOps Expert","model":"gemini-3.1-pro","task":"TAS-36: Add geolocation","tracker_issue":"TAS-36","outcome":"success","duration_min":22,"files_changed":9,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
85
|
+
{"type":"delegation","timestamp":"2026-02-24T23:22:20.331Z","session_id":"feat/tas-54","agent":"Documentation Writer","model":"gpt-5-mini","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-54","outcome":"success","retries":0,"phase":1,"file_partition":["apps/tastebeer.eu/app/","apps/tastecoffee.eu/app/"]}
|
|
86
|
+
{"type":"session","timestamp":"2026-02-24T23:50:07.144Z","agent":"Next.js Developer","model":"claude-opus-4-6","task":"TAS-32: Add price filter","tracker_issue":"TAS-32","outcome":"success","duration_min":15,"files_changed":11,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
87
|
+
{"type":"session","timestamp":"2026-02-25T02:48:10.908Z","agent":"Sanity Expert","model":"claude-opus-4-6","task":"TAS-32: Add cache headers","tracker_issue":"TAS-32","outcome":"failed","duration_min":38,"files_changed":8,"retries":1,"lessons_added":["LES-008"],"discoveries":[]}
|
|
88
|
+
{"type":"delegation","timestamp":"2026-02-25T03:04:08.793Z","session_id":"feat/tas-42","agent":"Next.js Developer","model":"gpt-5-mini","tier":"premium","mechanism":"sub-agent","tracker_issue":"TAS-42","outcome":"success","retries":1,"phase":4,"file_partition":["apps/cms-studio/"]}
|
|
89
|
+
{"type":"session","timestamp":"2026-02-25T05:22:40.043Z","agent":"Next.js Developer","model":"gemini-3.1-pro","task":"TAS-31: Update contact form","tracker_issue":"TAS-31","outcome":"success","duration_min":8,"files_changed":7,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
90
|
+
{"type":"delegation","timestamp":"2026-02-25T06:35:46.724Z","session_id":"feat/tas-38","agent":"DevOps Expert","model":"gpt-5.3-codex","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-38","outcome":"success","retries":1,"phase":4,"file_partition":["libs/server-utils/"]}
|
|
91
|
+
{"type":"panel","timestamp":"2026-02-25T07:07:18.806Z","panel_key":"deployment-checklist","verdict":"pass","pass_count":3,"block_count":0,"must_fix":0,"should_fix":8,"reviewer_model":"gemini-3.1-pro","weighted":true,"attempt":1,"tracker_issue":"TAS-33","artifacts_count":6,"report_path":"docs/ai-agents/panel/deployment-checklist.md"}
|
|
92
|
+
{"type":"session","timestamp":"2026-02-25T07:56:19.927Z","agent":"Architect","model":"claude-opus-4-6","task":"TAS-57: Fix cookie consent","tracker_issue":"TAS-57","outcome":"success","duration_min":22,"files_changed":9,"retries":0,"lessons_added":[],"discoveries":[]}
|
|
93
|
+
{"type":"panel","timestamp":"2026-02-25T10:00:00Z","panel_key":"instruction-refactoring","verdict":"pass","pass_count":3,"block_count":0,"must_fix":0,"should_fix":5,"reviewer_model":"claude-opus-4-6","weighted":false,"attempt":1,"artifacts_count":14,"report_path":"docs/ai-agents/panel/instruction-refactoring.md"}
|
|
94
|
+
{"type":"session","timestamp":"2026-02-25T10:34:21.652Z","agent":"UI/UX Expert","model":"claude-opus-4-6","task":"TAS-33: Update search API","tracker_issue":"TAS-33","outcome":"failed","duration_min":41,"files_changed":11,"retries":1,"lessons_added":[],"discoveries":[]}
|
|
95
|
+
{"type":"delegation","timestamp":"2026-02-25T10:39:46.727Z","session_id":"feat/tas-38","agent":"Sanity Expert","model":"gemini-3.1-pro","tier":"standard","mechanism":"sub-agent","tracker_issue":"TAS-38","outcome":"success","retries":0,"phase":3,"file_partition":["libs/ui-kit/"]}
|
|
96
|
+
{"type":"session","timestamp":"2026-02-25T13:00:16.014Z","agent":"DevOps Expert","model":"gpt-5-mini","task":"TAS-44: Add geolocation","tracker_issue":"TAS-44","outcome":"failed","duration_min":12,"files_changed":12,"retries":3,"lessons_added":[],"discoveries":["Update venue detail"]}
|
|
97
|
+
{"type":"delegation","timestamp":"2026-02-25T14:30:07.967Z","session_id":"feat/tas-46","agent":"Sanity Expert","model":"gemini-3.1-pro","tier":"utility","mechanism":"sub-agent","tracker_issue":"TAS-46","outcome":"success","retries":1,"phase":4,"file_partition":["apps/tastebeer.eu/app/","apps/tastecoffee.eu/app/"]}
|
|
98
|
+
{"type":"session","timestamp":"2026-02-25T15:48:46.235Z","agent":"UI/UX Expert","model":"claude-opus-4-6","task":"TAS-38: Optimize bundle size","tracker_issue":"TAS-38","outcome":"failed","duration_min":5,"files_changed":12,"retries":3,"lessons_added":[],"discoveries":[]}
|
|
99
|
+
{"type":"review","timestamp":"2026-02-28T10:30:00Z","tracker_issue":"TAS-12","agent":"Developer","reviewer_model":"gpt-5-mini","verdict":"pass","attempt":1,"issues_critical":0,"issues_major":0,"issues_minor":1,"confidence":"high","escalated":false,"duration_sec":38}
|
|
100
|
+
{"type":"review","timestamp":"2026-02-28T14:15:00Z","tracker_issue":"TAS-14","agent":"UI-UX Expert","reviewer_model":"gpt-5-mini","verdict":"pass","attempt":1,"issues_critical":0,"issues_major":1,"issues_minor":2,"confidence":"medium","escalated":false,"duration_sec":52}
|
|
101
|
+
{"type":"review","timestamp":"2026-03-01T09:00:00Z","tracker_issue":"TAS-18","agent":"Developer","reviewer_model":"gpt-5-mini","verdict":"fail","attempt":1,"issues_critical":1,"issues_major":0,"issues_minor":0,"confidence":"high","escalated":true,"duration_sec":41}
|
|
102
|
+
{"type":"review","timestamp":"2026-03-01T09:20:00Z","tracker_issue":"TAS-18","agent":"Developer","reviewer_model":"gpt-5-mini","verdict":"pass","attempt":2,"issues_critical":0,"issues_major":0,"issues_minor":1,"confidence":"high","escalated":false,"duration_sec":35}
|
|
103
|
+
{"type":"review","timestamp":"2026-03-01T11:45:00Z","tracker_issue":"TAS-20","agent":"Database Engineer","reviewer_model":"gpt-5-mini","verdict":"pass","attempt":1,"issues_critical":0,"issues_major":0,"issues_minor":0,"confidence":"high","escalated":false,"duration_sec":28}
|
|
104
|
+
{"type":"review","timestamp":"2026-03-01T16:30:00Z","tracker_issue":"TAS-22","agent":"Security Expert","reviewer_model":"claude-opus-4-6","verdict":"fail","attempt":1,"issues_critical":2,"issues_major":1,"issues_minor":0,"confidence":"high","escalated":true,"duration_sec":65}
|
|
@@ -1285,29 +1285,28 @@ const base = import.meta.env.BASE_URL;
|
|
|
1285
1285
|
// ── Export ─────────────────────────────────────────────────
|
|
1286
1286
|
|
|
1287
1287
|
function exportData() {
|
|
1288
|
-
const
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
};
|
|
1295
|
-
const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' });
|
|
1288
|
+
const events = [
|
|
1289
|
+
...rawSessions,
|
|
1290
|
+
...rawDelegations,
|
|
1291
|
+
...rawPanels,
|
|
1292
|
+
...rawReviews,
|
|
1293
|
+
].sort((a, b) => a.timestamp.localeCompare(b.timestamp));
|
|
1294
|
+
const blob = new Blob([events.map((e) => JSON.stringify(e)).join('\n') + '\n'], { type: 'application/x-ndjson' });
|
|
1296
1295
|
const url = URL.createObjectURL(blob);
|
|
1297
1296
|
const a = document.createElement('a');
|
|
1298
1297
|
a.href = url;
|
|
1299
|
-
a.download = 'opencastle-
|
|
1298
|
+
a.download = 'opencastle-events-' + new Date().toISOString().slice(0, 10) + '.ndjson';
|
|
1300
1299
|
a.click();
|
|
1301
1300
|
URL.revokeObjectURL(url);
|
|
1302
1301
|
}
|
|
1303
1302
|
|
|
1304
1303
|
async function main() {
|
|
1305
|
-
const
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1304
|
+
const events = await loadNdjson(base + 'data/events.ndjson');
|
|
1305
|
+
|
|
1306
|
+
const sessions = events.filter((e) => e.type === 'session');
|
|
1307
|
+
const delegations = events.filter((e) => e.type === 'delegation');
|
|
1308
|
+
const panels = events.filter((e) => e.type === 'panel');
|
|
1309
|
+
const reviews = events.filter((e) => e.type === 'review');
|
|
1311
1310
|
|
|
1312
1311
|
rawSessions = sessions;
|
|
1313
1312
|
rawDelegations = delegations;
|
|
@@ -58,4 +58,4 @@ When completing a task, return a structured summary:
|
|
|
58
58
|
4. **Verification** — Lint, type-check, and test results
|
|
59
59
|
5. **Documentation** — API docs produced or updated
|
|
60
60
|
|
|
61
|
-
See **Base Output Contract** in
|
|
61
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -121,4 +121,4 @@ When completing a review, return a structured summary:
|
|
|
121
121
|
4. **Alternatives** — Other approaches considered and why they were rejected or preferred
|
|
122
122
|
5. **Action Items** — Specific changes recommended before proceeding
|
|
123
123
|
|
|
124
|
-
See **Base Output Contract** in
|
|
124
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -53,4 +53,4 @@ When completing a task, return a structured summary:
|
|
|
53
53
|
3. **Verification** — Schema deploy result, query test results
|
|
54
54
|
4. **Migration Notes** — Any data migration needed for existing content
|
|
55
55
|
|
|
56
|
-
See **Base Output Contract** in
|
|
56
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -87,4 +87,4 @@ When completing a task, return a structured summary:
|
|
|
87
87
|
3. **Constraints Met** — Character limits, tone requirements, accessibility considerations
|
|
88
88
|
4. **Context** — Where the copy appears and how it fits the user journey
|
|
89
89
|
|
|
90
|
-
See **Base Output Contract** in
|
|
90
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -59,4 +59,4 @@ When completing a task, return a structured summary:
|
|
|
59
59
|
3. **Files Created** — Output files with row counts and format
|
|
60
60
|
4. **Import Results** — Records imported, skipped, or failed (with reasons)
|
|
61
61
|
|
|
62
|
-
See **Base Output Contract** in
|
|
62
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -57,4 +57,4 @@ When completing a task, return a structured summary:
|
|
|
57
57
|
4. **Rollback Plan** — How to reverse the migration if needed
|
|
58
58
|
5. **Data Impact** — Rows affected, any data transformations applied
|
|
59
59
|
|
|
60
|
-
See **Base Output Contract** in
|
|
60
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -56,4 +56,4 @@ When completing a task, return a structured summary:
|
|
|
56
56
|
3. **Acceptance Criteria Status** — Checklist from the tracker issue, each item marked ✅ or ❌
|
|
57
57
|
4. **Assumptions Made** — Decisions you made that weren't explicitly specified
|
|
58
58
|
|
|
59
|
-
See **Base Output Contract** in
|
|
59
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -53,4 +53,4 @@ When completing a task, return a structured summary:
|
|
|
53
53
|
4. **Rollback Plan** — How to revert if the deployment causes issues
|
|
54
54
|
5. **Monitoring** — What to watch after deployment
|
|
55
55
|
|
|
56
|
-
See **Base Output Contract** in
|
|
56
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -57,4 +57,4 @@ When completing a task, return a structured summary:
|
|
|
57
57
|
3. **Cross-References** — Links updated or added to maintain doc consistency
|
|
58
58
|
4. **Verification** — Markdown lint results, broken link check
|
|
59
59
|
|
|
60
|
-
See **Base Output Contract** in
|
|
60
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -54,4 +54,4 @@ When completing a task, return a structured summary:
|
|
|
54
54
|
4. **Trade-offs** — Any DX or functionality trade-offs introduced
|
|
55
55
|
5. **Further Opportunities** — Additional optimizations identified but not implemented
|
|
56
56
|
|
|
57
|
-
See **Base Output Contract** in
|
|
57
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -62,4 +62,4 @@ When completing a task, return a structured summary:
|
|
|
62
62
|
5. **Deployment Status** — Production deployment health check results
|
|
63
63
|
6. **Rollback Plan** — Steps to revert if issues arise post-release
|
|
64
64
|
|
|
65
|
-
See **Base Output Contract** in
|
|
65
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -59,4 +59,4 @@ When completing a task, return a structured summary:
|
|
|
59
59
|
4. **Residual Risk** — Known risks that remain after the fix
|
|
60
60
|
5. **Recommendations** — Follow-up security improvements to consider
|
|
61
61
|
|
|
62
|
-
See **Base Output Contract** in
|
|
62
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -58,4 +58,4 @@ When completing a task, return a structured summary:
|
|
|
58
58
|
4. **Verification** — Lighthouse SEO score, Rich Results Test, crawlability check
|
|
59
59
|
5. **Recommendations** — Further SEO opportunities identified but not implemented
|
|
60
60
|
|
|
61
|
-
See **Base Output Contract** in
|
|
61
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -30,27 +30,21 @@ Run ALL checks. Report each as ✅ or ❌.
|
|
|
30
30
|
|
|
31
31
|
### 1. Delegation Records
|
|
32
32
|
|
|
33
|
-
For each delegation in the session summary, verify a matching record exists in `.github/customizations/logs/
|
|
33
|
+
For each delegation in the session summary, verify a matching record exists in `.github/customizations/logs/events.ndjson` (type=delegation).
|
|
34
34
|
|
|
35
|
-
**How:** `
|
|
35
|
+
**How:** `grep '"type":"delegation"' .github/customizations/logs/events.ndjson | tail -20` and match agent + task against the summary.
|
|
36
36
|
|
|
37
|
-
**Fix command
|
|
38
|
-
```bash
|
|
39
|
-
(Fill in values from the session summary — see the Team Lead agent file for the canonical JSON schema)
|
|
40
|
-
```
|
|
37
|
+
**Fix:** Load the **observability-logging** skill and run the delegation record command (includes a verify step).
|
|
41
38
|
|
|
42
39
|
Also verify each delegation record includes `session_id` (branch name). Records missing `session_id` should be flagged.
|
|
43
40
|
|
|
44
41
|
### 2. Session Record
|
|
45
42
|
|
|
46
|
-
Verify a session record exists in `.github/customizations/logs/
|
|
43
|
+
Verify a session record exists in `.github/customizations/logs/events.ndjson` (type=session) for the current task.
|
|
47
44
|
|
|
48
|
-
**How:** `
|
|
45
|
+
**How:** `grep '"type":"session"' .github/customizations/logs/events.ndjson | tail -5` and match task description.
|
|
49
46
|
|
|
50
|
-
**Fix command
|
|
51
|
-
```bash
|
|
52
|
-
echo '{"timestamp":"<ISO>","agent":"Team Lead","model":"<model>","task":"<description>","outcome":"success","duration_min":<N>,"files_changed":<N>,"retries":0,"lessons_added":[],"discoveries":[]}' >> .github/customizations/logs/sessions.ndjson
|
|
53
|
-
```
|
|
47
|
+
**Fix:** Load the **observability-logging** skill and run the session record command (includes a verify step).
|
|
54
48
|
|
|
55
49
|
### 3. Lessons Captured
|
|
56
50
|
|
|
@@ -66,17 +60,11 @@ If the session summary lists discovered issues, verify they appear in:
|
|
|
66
60
|
|
|
67
61
|
### 5. Review & Panel Records
|
|
68
62
|
|
|
69
|
-
If the session summary mentions fast reviews or panel reviews, verify matching records exist in `.github/customizations/logs/
|
|
63
|
+
If the session summary mentions fast reviews or panel reviews, verify matching records exist in `.github/customizations/logs/events.ndjson` (type=review and/or type=panel).
|
|
70
64
|
|
|
71
|
-
**How:** `
|
|
65
|
+
**How:** `grep '"type":"review"' .github/customizations/logs/events.ndjson | tail -10` and/or `grep '"type":"panel"' .github/customizations/logs/events.ndjson | tail -5`.
|
|
72
66
|
|
|
73
|
-
**Fix command
|
|
74
|
-
```bash
|
|
75
|
-
# Fast review
|
|
76
|
-
echo '{"timestamp":"<ISO>","agent":"<reviewed-agent>","reviewer_model":"<model>","verdict":"<pass|fail>","attempt":1,"issues_critical":0,"issues_major":0,"issues_minor":0,"confidence":"high","escalated":false,"duration_sec":N}' >> .github/customizations/logs/reviews.ndjson
|
|
77
|
-
# Panel review
|
|
78
|
-
echo '{"timestamp":"<ISO>","panel_key":"<key>","verdict":"<pass|block>","pass_count":N,"block_count":N,"must_fix":0,"should_fix":0,"reviewer_model":"<model>","weighted":false,"attempt":1,"artifacts_count":N}' >> .github/customizations/logs/panels.ndjson
|
|
79
|
-
```
|
|
67
|
+
**Fix:** Load the **observability-logging** skill and run the review/panel record command as applicable (includes a verify step).
|
|
80
68
|
|
|
81
69
|
### 6. Uncommitted Changes
|
|
82
70
|
|
|
@@ -99,11 +99,7 @@ Synchronous — blocks until result. Use when:
|
|
|
99
99
|
|
|
100
100
|
When calling `runSubagent`, always specify which custom agent to use by name: *"Use the **[Agent Name]** agent to [task]."* This routes the sub-agent to the named agent's model and tools instead of inheriting the Team Lead's Premium model. Include objective, file paths, acceptance criteria, and what to return in the result.
|
|
101
101
|
|
|
102
|
-
**After each sub-agent returns**, log the delegation record before doing anything else (before review, before verification)
|
|
103
|
-
```bash
|
|
104
|
-
echo '{"timestamp":"<ISO-NOW>","session_id":"<branch>","agent":"<name>","model":"<model>","tier":"<tier>","mechanism":"sub-agent","tracker_issue":"<issue-or-N/A>","outcome":"<success|partial|failed>","retries":0,"phase":<N>,"file_partition":["<paths>"]}' >> .github/customizations/logs/delegations.ndjson
|
|
105
|
-
```
|
|
106
|
-
Verify: `tail -1 .github/customizations/logs/delegations.ndjson`
|
|
102
|
+
**After each sub-agent returns**, log the delegation record before doing anything else (before review, before verification). This is a **⛔ hard gate** — do NOT proceed to review or any other action until the delegation is logged. Use the **observability-logging** skill's delegation record command (`--mechanism sub-agent`).
|
|
107
103
|
|
|
108
104
|
> **`model` and `tier` must come from the agent registry** — not the Team Lead's own model. Look up the agent in [agent-registry.md](../customizations/agents/agent-registry.md) and use their assigned model and tier. For example, delegating to Developer → `"model":"claude-sonnet-4-6","tier":"quality"`, not the Team Lead's `claude-opus-4-6`.
|
|
109
105
|
|
|
@@ -117,11 +113,7 @@ Async in isolated Git worktree. Use when:
|
|
|
117
113
|
|
|
118
114
|
Spawn via: Delegate Session → Background → Select agent → Enter prompt with full self-contained context (they cannot ask follow-ups).
|
|
119
115
|
|
|
120
|
-
**After spawning**, log the delegation record before spawning another agent or doing any other work
|
|
121
|
-
```bash
|
|
122
|
-
echo '{"timestamp":"<ISO-NOW>","session_id":"<branch>","agent":"<name>","model":"<model>","tier":"<tier>","mechanism":"background","tracker_issue":"<issue-or-N/A>","outcome":"pending","retries":0,"phase":<N>,"file_partition":["<paths>"]}' >> .github/customizations/logs/delegations.ndjson
|
|
123
|
-
```
|
|
124
|
-
Verify: `tail -1 .github/customizations/logs/delegations.ndjson`
|
|
116
|
+
**After spawning**, log the delegation record before spawning another agent or doing any other work. This is a **⛔ hard gate** — do NOT spawn another agent or proceed until the delegation is logged. Use the **observability-logging** skill's delegation record command (`--mechanism background`, `--outcome pending`).
|
|
125
117
|
|
|
126
118
|
> **`model` and `tier` must come from the agent registry** — see note in Sub-Agents section above.
|
|
127
119
|
|
|
@@ -133,20 +125,11 @@ Parallel agents must never touch the same files. Map file/directory ownership be
|
|
|
133
125
|
|
|
134
126
|
### Budget
|
|
135
127
|
|
|
136
|
-
|
|
137
|
-
|------|-------|-------------|---------------|
|
|
138
|
-
| **Economy** | GPT-5 mini | ~5K–15K | 2–5 min |
|
|
139
|
-
| **Fast** | GPT-5.3-Codex | ~10K–40K | 5–15 min |
|
|
140
|
-
| **Standard** | Gemini 3.1 Pro | ~15K–50K | 8–20 min |
|
|
141
|
-
| **Quality** | Claude Sonnet 4.6 | ~30K–80K | 10–25 min |
|
|
142
|
-
| **Premium** | Claude Opus 4.6 | ~50K–150K | 15–30 min |
|
|
143
|
-
|
|
144
|
-
**Quick reference:** Premium for orchestration, Quality for coding/UI/security/architecture, Standard for analysis/schemas/cost-sensitive, Fast for tests/data/terminal, Economy for docs.
|
|
128
|
+
See the **team-lead-reference** skill for model tiers, token estimates, duration estimates, and budget rules.
|
|
145
129
|
|
|
146
130
|
- Target 5–7 delegations per session. At 8 → warn. At 9 → checkpoint. At 10+ → STOP and save state.
|
|
147
131
|
- Max 3 delegation attempts per task. After 3 failures → Dead Letter Queue + Architect.
|
|
148
132
|
- Max 3 panel attempts. After 3 BLOCKs → dispute record.
|
|
149
|
-
- Full model routing details in **team-lead-reference** skill.
|
|
150
133
|
|
|
151
134
|
### Pre-Delegation Checks
|
|
152
135
|
|
|
@@ -191,7 +174,7 @@ Every delegation prompt must include:
|
|
|
191
174
|
- **File paths** — exact files to read/modify (the agent's partition)
|
|
192
175
|
- **Acceptance criteria** — from the tracker issue
|
|
193
176
|
- **Patterns** — link to existing code examples
|
|
194
|
-
- **Reminder:** *"Read `LESSONS-LEARNED.md` before starting.
|
|
177
|
+
- **Reminder:** *"Read `LESSONS-LEARNED.md` before starting. Use the **self-improvement** skill for any lessons. Follow the Discovered Issues Policy."*
|
|
195
178
|
|
|
196
179
|
For complex tasks (score 5+), load the **decomposition** skill for the Delegation Spec Template.
|
|
197
180
|
|
|
@@ -205,7 +188,7 @@ For complex tasks (score 5+), load the **decomposition** skill for the Delegatio
|
|
|
205
188
|
For each task:
|
|
206
189
|
1. Move issue → In Progress
|
|
207
190
|
2. Delegate to specialist agent by name (e.g., "Use the Developer agent to...")
|
|
208
|
-
3. Log delegation
|
|
191
|
+
3. Log delegation (⛔ hard gate — do NOT proceed until logged. See the **observability-logging** skill for the command and verify step.)
|
|
209
192
|
4. Monitor for drift (load orchestration-protocols skill)
|
|
210
193
|
5. Verify output:
|
|
211
194
|
- Changed files within partition
|
|
@@ -216,7 +199,7 @@ For each task:
|
|
|
216
199
|
- High-stakes: panel review (load panel-majority-vote skill)
|
|
217
200
|
- Discovered issues tracked (not silently ignored)
|
|
218
201
|
- Lessons captured (if agent retried anything)
|
|
219
|
-
6. PASS → log review, move issue → Done
|
|
202
|
+
6. PASS → log review (⛔ hard gate — do NOT proceed until logged), move issue → Done
|
|
220
203
|
FAIL → re-delegate with failure details (max 3 attempts)
|
|
221
204
|
```
|
|
222
205
|
|
|
@@ -248,16 +231,7 @@ See [shared-delivery-phase.md](../agent-workflows/shared-delivery-phase.md) for
|
|
|
248
231
|
|
|
249
232
|
## Observability
|
|
250
233
|
|
|
251
|
-
> **⛔ HARD GATE — ALL observability logging is mandatory.**
|
|
252
|
-
> The Session Guard will flag missing records, but do not rely on it — log inline as you go.
|
|
253
|
-
|
|
254
|
-
| Record | File | When to log | Timing |
|
|
255
|
-
|--------|------|-------------|--------|
|
|
256
|
-
| **Session** | `sessions.ndjson` | Every session — always | Before yielding to user |
|
|
257
|
-
| **Delegation** | `delegations.ndjson` | After each `runSubagent` / background spawn | **Inline** — immediately after each delegation, before review |
|
|
258
|
-
| **Fast review** | `reviews.ndjson` | After each fast review | After review completes |
|
|
259
|
-
| **Panel** | `panels.ndjson` | After each panel majority vote | After panel completes |
|
|
260
|
-
| **Dispute** | `disputes.ndjson` | After each dispute is created | When dispute is filed |
|
|
234
|
+
> **⛔ HARD GATE — ALL observability logging is mandatory.** Load the **observability-logging** skill for record schemas, logging commands, and the pre-response quality gate.
|
|
261
235
|
|
|
262
236
|
**Self-check before calling Session Guard:** Count delegations, reviews, and panels performed → count records written → numbers must match for each type. If any count is off, fix it before calling the guard.
|
|
263
237
|
|
|
@@ -273,7 +247,7 @@ See [shared-delivery-phase.md](../agent-workflows/shared-delivery-phase.md) for
|
|
|
273
247
|
8. Never proceed to dependent task until prerequisite is verified
|
|
274
248
|
9. Sub-agents must not spawn other sub-agents (no recursive delegation)
|
|
275
249
|
10. Never push to `main` — feature branch → PR → human merges
|
|
276
|
-
11. Log every delegation inline — immediately after each `runSubagent` or background spawn,
|
|
250
|
+
11. Log every delegation and review inline — immediately after each `runSubagent` or background spawn, and after each fast review/panel. This is a hard gate — never proceed without logging first
|
|
277
251
|
12. Steer early — don't wait until an agent finishes to redirect when you spot drift
|
|
278
252
|
13. Never exceed session budget without checkpointing — context degrades after 8+ delegations
|
|
279
253
|
14. Read `LESSONS-LEARNED.md` before delegating — include relevant lessons in prompts
|
|
@@ -76,4 +76,4 @@ When completing a task, return a structured summary:
|
|
|
76
76
|
4. **Edge Cases Tested** — List edge cases covered and any known gaps
|
|
77
77
|
5. **Regressions Checked** — Adjacent features/pages verified to still work
|
|
78
78
|
|
|
79
|
-
See **Base Output Contract** in
|
|
79
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -56,4 +56,4 @@ When completing a task, return a structured summary:
|
|
|
56
56
|
3. **Responsive** — Breakpoints tested (per project testing config)
|
|
57
57
|
4. **Visual Evidence** — Screenshots at each breakpoint
|
|
58
58
|
|
|
59
|
-
See **Base Output Contract** in
|
|
59
|
+
See **Base Output Contract** in the **observability-logging** skill for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -6,45 +6,44 @@ Tracks agent success rates across panel reviews and delegated tasks to inform mo
|
|
|
6
6
|
## Data Sources
|
|
7
7
|
|
|
8
8
|
Performance data is collected automatically via NDJSON session logs:
|
|
9
|
-
- **
|
|
10
|
-
- **Delegation data:** `.github/customizations/logs/delegations.ndjson` — appended by the Team Lead after each delegation
|
|
9
|
+
- **All events:** `.github/customizations/logs/events.ndjson` — unified log for all event types (sessions, delegations, reviews, panels, disputes), appended via `opencastle log`
|
|
11
10
|
- **Dashboard:** Run `npx opencastle dashboard` to visualize agent performance
|
|
12
11
|
|
|
13
12
|
## Quick Queries
|
|
14
13
|
|
|
15
14
|
```bash
|
|
16
15
|
# Sessions per agent
|
|
17
|
-
jq -r '.agent' .github/customizations/logs/
|
|
16
|
+
jq -r 'select(.type == "session") | .agent' .github/customizations/logs/events.ndjson | sort | uniq -c | sort -rn
|
|
18
17
|
|
|
19
18
|
# Success rate by agent
|
|
20
|
-
jq -r '[.agent, .outcome] | @tsv' .github/customizations/logs/
|
|
19
|
+
jq -r 'select(.type == "session") | [.agent, .outcome] | @tsv' .github/customizations/logs/events.ndjson | sort | uniq -c
|
|
21
20
|
|
|
22
21
|
# Delegation tier distribution
|
|
23
|
-
jq -r '.tier' .github/customizations/logs/
|
|
22
|
+
jq -r 'select(.type == "delegation") | .tier' .github/customizations/logs/events.ndjson | sort | uniq -c
|
|
24
23
|
|
|
25
24
|
# Failed delegations
|
|
26
|
-
jq 'select(.outcome == "failed")' .github/customizations/logs/
|
|
25
|
+
jq 'select(.type == "delegation" and .outcome == "failed")' .github/customizations/logs/events.ndjson
|
|
27
26
|
```
|
|
28
27
|
|
|
29
28
|
## Panel Review Performance
|
|
30
29
|
|
|
31
|
-
Panel review data is collected automatically
|
|
30
|
+
Panel review data is collected automatically in `.github/customizations/logs/events.ndjson` with `type: "panel"` (appended by the panel runner after each review — see step 7 in the panel majority vote skill).
|
|
32
31
|
|
|
33
32
|
```bash
|
|
34
33
|
# Total panel reviews
|
|
35
|
-
|
|
34
|
+
jq 'select(.type == "panel")' .github/customizations/logs/events.ndjson | wc -l
|
|
36
35
|
|
|
37
36
|
# Pass vs block rate
|
|
38
|
-
jq -r '.verdict' .github/customizations/logs/
|
|
37
|
+
jq -r 'select(.type == "panel") | .verdict' .github/customizations/logs/events.ndjson | sort | uniq -c
|
|
39
38
|
|
|
40
39
|
# Reviews by panel key
|
|
41
|
-
jq -r '.panel_key' .github/customizations/logs/
|
|
40
|
+
jq -r 'select(.type == "panel") | .panel_key' .github/customizations/logs/events.ndjson | sort | uniq -c | sort -rn
|
|
42
41
|
|
|
43
42
|
# Reviews that required retries (attempt > 1)
|
|
44
|
-
jq 'select(.attempt > 1)' .github/customizations/logs/
|
|
43
|
+
jq 'select(.type == "panel" and .attempt > 1)' .github/customizations/logs/events.ndjson
|
|
45
44
|
|
|
46
45
|
# Average SHOULD-FIX items per review
|
|
47
|
-
jq -s 'if length > 0 then (map(.should_fix) | add) / length else 0 end' .github/customizations/logs/
|
|
46
|
+
jq -s '[.[] | select(.type == "panel")] | if length > 0 then (map(.should_fix) | add) / length else 0 end' .github/customizations/logs/events.ndjson
|
|
48
47
|
```
|
|
49
48
|
|
|
50
49
|
## Usage
|
|
@@ -86,7 +86,7 @@ Which option the Team Lead recommends and why. Include specific next steps:
|
|
|
86
86
|
|
|
87
87
|
Links to evidence for human review:
|
|
88
88
|
- Panel report: `.github/customizations/logs/panel/[panel-key].md`
|
|
89
|
-
- Review log entries: `.github/customizations/logs/
|
|
89
|
+
- Review log entries: `.github/customizations/logs/events.ndjson` (filter by `type: "review"` and issue)
|
|
90
90
|
- Changed files: [list of files in the last attempt]
|
|
91
91
|
- DLQ entry (if any): `DLQ-XXX`
|
|
92
92
|
```
|
|
@@ -112,7 +112,7 @@ Links to evidence for human review:
|
|
|
112
112
|
┌──────────────────────────────────────┐
|
|
113
113
|
│ Team Lead creates dispute record │
|
|
114
114
|
│ Status: pending │
|
|
115
|
-
│ Logs to
|
|
115
|
+
│ Logs to events.ndjson │
|
|
116
116
|
│ Links to tracker issue │
|
|
117
117
|
└──────────────┬───────────────────────┘
|
|
118
118
|
│
|