Commit Graph

5 Commits

Author SHA1 Message Date
5cfeb65fc1 feat(team): comprehensive PR-gate + 100% coverage + e2e + identity-tag mechanics
Per Hongming's audit directive (2026-05-09): make the core team
operate-by-mechanism rather than self-report.

## SHARED_RULES.md §PR Merge Approval Gate (extended)
- Tag prefix corrected: `[<team>-qa-agent]` etc., not bare `[qa-agent]`.
  Bare unprefixed tags rejected by lint. Each persona has its own
  Gitea identity (post-2026-05-06; feedback_per_agent_gitea_identity_default),
  so the tag reflects who actually authored.
- Coverage bar bumped 80% → 100% per-changed-file. Aggregate
  doesn't satisfy. Doc-only files exempt.
- e2e gate added: PRs touching workspace-server/canvas/workspace/
  controlplane/plugins MUST run the matching tests/e2e/test_*.sh
  and the QA approval comment MUST report `e2e: <suite>=pass`.
- §Issue Discipline tightened to a 5-min SLA. The orchestrator
  cross-checks Loki finding-events vs Gitea issue creates and files
  a [missed-finding] issue when a finding event has no matching
  issue.
- §PR Template requirement added (links to .gitea/pull_request_template.md
  in internal + molecule-core; scripts-lint enforces).
- §Identity Tag updated: "GitHub" → "Gitea"; mechanical-parsing
  rationale spelled out.

## dev-lead/core-lead/schedules/orchestrator-pulse.md (rewritten)
- Replaces "merge CI-green PRs FIRST" with the four-condition
  gate-check sequence (CI green AND [core-qa-agent]  AND
  [core-security-agent]  AND [core-uiux-agent] -or-N/A).
- Force-merge call-out: explicitly fires incident.force_merge to
  Loki and reports to orchestrator (audit-force-merge.scripts).
- Reviewer-rotation §SOP-10 check before approving.
- Structured-logging report at end of each pulse so the
  orchestrator can monitor team behavior in Loki.
- Fixes duplicate "Step 2" (was both SCAN TEAM STATE and REVIEW
  OPEN PRs).

## dev-lead/core-lead/core-qa/system-prompt.md
- IDENTITY TAG header points at the gate-parsing role.
- 100% per-changed-file coverage codified.
- e2e mandatory on platform-touching PRs.
- New §PR Review section: required comment-on-every-open-PR each
  cycle with one of three exact forms (APPROVED/CHANGES/N-A).

## dev-lead/core-lead/core-security/system-prompt.md
- Same identity-tag fix.
- File findings as Gitea issues (was "GitHub issues") within 5 min.
- Required PR review on every PR touching auth/middleware/db/handlers/
  plugin-install; quick-N/A on the rest.
- New §PR Review section with the three exact comment forms.

Tier: medium (changes how 9 personas behave; spine of dev tree).

Verification:
- Markdown structurally consistent
- All edits surgical — no per-engineer prompt changes (those
  follow naturally from SHARED_RULES.md)
- live verification deferred to Layer C (when workspaces actually
  boot with the new prompts)
2026-05-08 23:47:28 -07:00
claude-ceo-assistant
1dd614a4f1 atomize(dev-tree): nest sub-teams + leaf workspaces under dev-lead/, dissolve teams/
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
2026-05-08 04:08:22 -07:00
851fdf5874 fix(post-suspension): migrate github.com/Molecule-AI refs to git.moleculesai.app (Class G #168)
Every persona's initial-prompt.md starts with `git clone https://github.com/Molecule-AI/<repo>.git`
which now hard-fails because the GitHub org was suspended on 2026-05-06. This
blocks every fresh agent at boot.

Changes:
- All 49 persona initial-prompt.md files: rewrite clone URLs to
  https://git.moleculesai.app/molecule-ai/<repo>.git, and switch the
  in-URL token from \${GITHUB_TOKEN} to \${GITEA_TOKEN} (matches the
  env-var contract documented in SHARED_RULES.md after the gh→tea migration).
- 4 schedule files (landingpage-check, landingpage-seo-check,
  daily-changelog) — same rewrite.
- org.yaml defaults block (3 refs + the 'if [ -n "\$GITHUB_TOKEN" ]'
  guard renamed to GITEA_TOKEN to match the new var).
- SHARED_RULES.md DOCUMENTATION_POLICY full-policy URL.
- documentation-specialist/system-prompt.md: reframed the org-profile
  table row (was 'renders on github.com/Molecule-AI', now noted as
  the now-suspended org page kept for reference).

Scope per Task #168: non-Go-module URL refs only. No go.mod / go.sum
in this repo, so this PR is complete coverage for this repo.

After this lands every persona will boot with a working clone again.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 12:59:14 -07:00
documentation-specialist
dc966ac62d fix(personas): migrate gh CLI → tea (Gitea CLI) + curl-via-API (#45)
Mass-sed across all 58 persona dirs in molecule-ai-org-template-molecule-dev.

Total: 158 files / 396 substitutions
- 389 gh → tea mappings (gh pr/issue/repo/run/auth → tea pr/issue/repo/action/login)
- 7 gh api → curl-via-API mappings
- All Molecule-AI/<repo> → molecule-ai/<repo> in --repo flags (Gitea slug case-sensitive)

Plus SHARED_RULES.md migration callout block + tea install snippet:
- Tea v0.9.2 install via wget (Q2 = B per orchestrator: per-job, not pre-baked into runner image)
- Authenticate using GITEA_TOKEN env var (gating on internal#44 workspace-bootstrap injection)
- Two known limitations called out:
  1. GITEA_TOKEN required for tea/curl auth (internal#44 pending)
  2. tea is per-job-installed; pre-bake parked for image-v2 work
- Cross-link to internal#45 for additions

Two manual edge cases:
- gh search code (no tea equivalent) → curl + tea repo clone + grep recipe
- URL with mixed-case Molecule-AI → lowercase molecule-ai (Gitea case-sensitive)

3 narrative GH_TOKEN references in SHARED_RULES.md intentionally preserved
(describe an env var name, not commands).

Q1=A (mega-PR) per orchestrator dispatch 2026-05-07T09:50:08.

Refs: molecule-ai/internal#45, molecule-ai/internal#44 (GITEA_TOKEN dep)
2026-05-07 02:54:35 -07:00
65e7408dd5 import from local vendored copy (2026-05-06) 2026-05-06 13:53:42 -07:00