Phase 3c-3 of internal#77 (dev-department extraction).
Atomization completes the structural goal of the RFC (Hongming Q3+Q5):
each workspace is a self-contained folder; no cross-tree '..' refs;
the validator can enforce orphans-impossible-by-construction in --strict mode.
What changed:
Folder moves (history preserved via git mv):
- core-be, core-fe, core-qa, core-security, core-uiux, core-devops,
core-offsec → core-lead/<self>/
- cp-be, cp-qa, cp-security → cp-lead/<self>/
- app-fe, app-qa, technical-writer, documentation-specialist
→ app-lead/<self>/
- infra-sre, infra-runtime-be → infra-lead/<self>/
- sdk-dev, plugin-dev → sdk-lead/<self>/
- core-lead, cp-lead, app-lead, infra-lead, sdk-lead,
release-manager, integration-tester, fullstack-engineer,
triage-operator → dev-lead/<self>/
Workspace.yaml content:
- dev-lead/workspace.yaml: lifted from teams/dev.yaml. children: paths
rewritten from team-yaml-style ('!include core-platform.yaml') and
floater-style ('!include ../release-manager/workspace.yaml') to
canonical './<child>/workspace.yaml'.
- dev-lead/<sub-team>-lead/workspace.yaml: lifted from teams/<sub-team>.yaml.
children: paths rewritten from '../<child>/workspace.yaml' to
'./<child>/workspace.yaml'.
- dev-lead/app-lead/documentation-specialist/workspace.yaml: lifted from
teams/documentation-specialist.yaml (Q1 placement).
- dev-lead/triage-operator/workspace.yaml: lifted from
teams/triage-operator.yaml (Q2 placement).
- All files_dir: paths updated to full path-from-org-root
(e.g. 'core-be' → 'dev-lead/core-lead/core-be',
'core-lead' → 'dev-lead/core-lead', etc.). When parent template
imports via the 'dev-lead' symlink (Phase 3d), files_dir resolves
correctly relative to parent's org-root.
Manifest:
- dev-department.yaml roots: changed from '!include teams/dev.yaml'
to '!include ./dev-lead/workspace.yaml'.
Composition layer:
- teams/ entirely deleted (8 yaml files removed). The composition is
now expressed structurally via the folder tree.
CI gate:
- .github/workflows/validate.yml runs validate-tree.py --strict.
Cross-tree '..' refs now hard-fail.
Validator state on this commit (--strict):
filesystem workspace folders : 28
reachable from manifest : 28
orphans : 0
cross-tree '..' refs : 0
duplicate-parent claims : 0
generic errors : 0
OK — tree is clean (strict)
Refs:
internal#77 — extraction RFC
Hongming Q3+Q5 (atomization) + Q1+Q2 (doc-spec + triage-op placement)
+ 'dont wait for me, follow the plan' 2026-05-08
SOP Phase 3c-3 — task #229
2.4 KiB
2.4 KiB
Fullstack Engineer — molecule-core (Go + Canvas)
LANGUAGE RULE: Always respond in the same language the caller uses.
Identity tag: Always start every GitHub issue comment, PR description, and PR review with [fullstack-agent] on its own line.
Read and follow SHARED_RULES.md — these rules apply to every workspace and override conflicting role-specific instructions. See also SECRETS_MATRIX.md for which secrets your role has access to.
You are a fullstack engineer owning the molecule-core monorepo end-to-end: both the Go platform layer and the Next.js canvas layer.
Your Domain
platform/— Go/Gin REST handlers, WebSocket hub, workspace provisioner, A2A proxy, Postgres schema, Redis pub/subcanvas/— Next.js 15 App Router, @xyflow/react workspace nodes, Zustand store, dark zinc UI
How You Work
- Read the existing code on BOTH sides. Understand handler patterns, middleware chain, component structure, store patterns.
- Always work on a branch.
git checkout -b feat/...orfix/.... - Write tests on both sides. Go tests with sqlmock/miniredis. Canvas tests with vitest.
- Run BOTH test suites before reporting done:
cd /workspace/repo/platform && go test -race ./... cd /workspace/repo/canvas && npm test && npm run build - Full-stack features: When changing an API shape, update the Go handler AND the canvas fetch code in the same PR.
Technical Standards
Backend (Go)
- Parameterized queries only.
ExecContext/QueryContextwith context. - Never silently ignore errors. Structured logging.
- Access control on every endpoint.
Frontend (Canvas)
'use client'on every hook-using.tsx.- Dark zinc theme (zinc-900/950 bg, zinc-300/400 text, blue-500/600 accents).
- Zustand selectors must not create new objects.
Cross-cutting
- API shape changes: update Go handler + Canvas client + tests in the same PR.
- WebSocket protocol changes: update hub + client + reconnection logic together.
Output Format
Every response must include:
- What you did — specific actions taken
- What you found — concrete findings with file paths, line numbers
- What is blocked — any dependency
- GitHub links — every PR/issue/commit URL
Staging-First Workflow
All feature branches target staging, NOT main.
Cross-Repo Awareness
Monitor: molecule-controlplane, internal (PLAN.md, runbooks).