Part 2 of 4 in the org.yaml scalability refactor. Follows PR #389 which added platform support; this PR completes the migration for every role in the `molecule-dev` template. ## Scope All 20 remaining roles moved from inline YAML literals to sibling .md files under their existing `files_dir`: - PM, Research Lead, Dev Lead, Marketing Lead (4 leaders) - Market Analyst, Technical Researcher, Competitive Intelligence (research) - Frontend/Backend/DevOps Engineer, Security Auditor, QA Engineer, UIUX Designer, Triage Operator (dev team) - DevRel, PMM, Content Marketer, Community Manager, SEO Growth Analyst, Social Media Brand (marketing team) Per workspace, externalized (where present): - `initial_prompt: |...` → `initial-prompt.md` + `initial_prompt_file:` - `idle_prompt: |...` → `idle-prompt.md` + `idle_prompt_file:` - `schedules[*].prompt: |...` → `schedules/<slug>.md` + `prompt_file:` Totals: 17 initial-prompt files, 12 idle-prompt files, 18 schedule files (47 new files). ## File-size impact | Before (main) | After Phase 1 | After Phase 2 | Reduction | |---|---|---|---| | 1801 lines | 1687 lines | 676 lines | **-62.5%** | | 108 KB | 101 KB | 35 KB | **-67%** | org.yaml is now pure structural scaffolding (name / role / tier / model / canvas / plugins / channels / children / category_routing / schedules metadata). Readable end-to-end on one screen per team. ## How the migration was driven A Python round-trip script (using `ruamel.yaml` to preserve comments + formatting) walked the workspace tree recursively, wrote prompts to files keyed by `files_dir`, and replaced inline keys with `*_file:` refs. Zero manual YAML hand-editing beyond the Phase 1 Documentation Specialist proof. Script is one-shot; not committed. Slug convention for schedule files: lowercase the schedule name, replace non-alphanumeric with `-`, collapse, cap 60 chars. Examples: - "Orchestrator pulse" → `orchestrator-pulse.md` - "Hourly template fitness audit" → `hourly-template-fitness-audit.md` - "Code quality audit (every 12h)" → `code-quality-audit-every-12h.md` ## Backwards compatibility Fully compatible — Phase 1's resolver prefers inline when both are set, so a future one-off experiment can still drop inline YAML. The migration doesn't remove inline support, just stops using it. ## Verification - [x] `python -c "yaml.safe_load(...)"` on edited org.yaml — parses clean - [x] Walk-and-inspect script: every workspace has exactly the expected `*_file:` refs, zero `INLINE_*` markers remain - [x] All 47 extracted .md files non-empty + trimmed - [x] `go test -run 'TestResolvePromptRef|TestOrgYAML|TestInitialPrompt'` passes (from Phase 1 platform work) - [ ] Post-merge: live `POST /org/import` against a fresh workspace, diff the resulting `/configs/config.yaml` + `workspace_schedules` rows against the pre-migration values (should be identical bodies) ## What's next - **Phase 3 (queued):** YAML `!include` directive for org.yaml; split the remaining 676 lines into `teams/{research,dev,marketing,ops}.yaml`. - **Phase 4 (queued):** per-workspace atomization; each role owns its own `workspace.yaml` manifest. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Recurring code quality audit. Be thorough and incremental.
- Pull latest: cd /workspace/repo && git pull
- Check what you audited last time: use search_memory("qa audit") to recall prior findings
- See what changed since last audit: git log --oneline --since="12 hours ago"
- Run ALL test suites and record results: cd /workspace/repo/platform && go test -race ./... 2>&1 | tail -20 cd /workspace/repo/canvas && npm test 2>&1 | tail -10 cd /workspace/repo/workspace-template && python -m pytest --tb=short -q 2>&1 | tail -10
- Check test coverage on recently changed files:
- For each changed Python file, check if it has corresponding tests
- For each changed Go handler, check if it has test coverage
- For each changed .tsx component, check if it has a .test.tsx
- Review recent PRs for quality issues: cd /workspace/repo && gh pr list --state merged --limit 5 For each: check if tests were added, if docs were updated, if 'use client' is present on hook-using .tsx
- Check for regressions: cd /workspace/repo/canvas && npm run build 2>&1 | tail -5 Look for TypeScript errors, missing exports, build warnings
- Record your findings to memory:
Use commit_memory with key "qa-audit-latest" and value containing:
- Date and commit hash audited up to
- Test counts (Go, Python, Canvas) and pass/fail status
- Files with missing test coverage
- Quality issues found
- Areas to investigate deeper next time === FINAL STEP — DELIVERABLE ROUTING (MANDATORY every cycle) ===
a. For each failing test, build break, or coverage regression: FILE A GITHUB ISSUE:
- Dedupe: gh issue list --repo Molecule-AI/molecule-monorepo --search "" --state open
- If new: gh issue create --title "qa: — " --body with failure log, commit SHA, reproducer command, suspected file:line, proposed approach
- Capture issue numbers for the PM summary.
b. delegate_task to PM with a summary: audit SHA, test counts (Go/Python/Canvas), pass/fail, new issue numbers, top 3 risks. PM routes to dev.
c. If all clean: delegate_task to PM with "qa clean on SHA " so the audit is observable.
d. Save to memory key 'qa-audit-latest' as a secondary record only.