From the first Gemba walk to signed handoff — covering software/SaaS and embodied-robotics/manufacturing scenarios.
An 18-phase SOP, 10 executable compliance gates, 10 data connectors, real production KPIs.
A gate is a predicate, not a checklist: checklists record "was once checked" and rot one-way as reality drifts; gates re-evaluate on every advance and a stale pass never counts. --force only waives the block while still evaluating and recording; exceptions land in the audit log.
engagement/: 18 phases · 4 zones · 10 executable gates (re-evaluated live on advance) + handoff; profiles/: ticket · manufacturing scenario selectors.
Capability layer
connectors · corpus · deploy · eval · flywheel · integrations · ontology · skills — the core data pipeline, rules-first with optional LLM enhancement.
Cross-cutting
llm.py (the only LLM egress, falls back to rule paths) · config.py · templates/ (Jinja reports and runbooks) · paths.py (single data_root path resolution).
Files as source of truth
Zero database: .fde_scope/ (engagements · skills · uploads) + reports/; every write goes through fsutil.atomic_write_text.
External deps (all optional)
AgentScope 2.0.x (extra, measured window >=2.0.4.post1,<3; deploy pillars + lazy documents) · MiMo LLM (credentials via env vars only) · QwenPaw host.
Engineering best practices · seven invariants
07
The AGENTS.md contract, pinned by architecture-guard tests.
1Live gate re-evaluation
advance() re-evaluates every gate of the current phase each time; stale passes never count; forced advances still evaluate and record. No caching or short-circuits.
2Server-generated IDs
SkillRecord.id / EngagementContext.id are assigned by the owning service; external input can never set them.
3Credentials via env vars only
API keys never land in manifests / reports / engagement JSON / logs.
4Atomic writes
All user state goes through fsutil.atomic_write_text (temp file + os.replace); bare write_text is banned.
5Rule grants are the only channel
build_toolkit never flags is_read_only (upstream ≥2.0.5 auto-allows read-only first); unmatched tools fall back by mode: DEFAULT→ASK / DONT_ASK→DENY.
6Measured version window
pyproject and docs quote the same agentscope specifier verbatim; widen only after per-version runs against the real library.
7Web mutating routes require auth
New routes must not slip into the auth allowlist by mistake; the token is read from the FDE_SCOPE_API_TOKEN env var only — never in files / logs / responses.
Verification anchors: make test · pytest tests/test_architecture_guard.py (6 contracts) · pytest -m agentscope (real-library runtime) · ruff check + format --check · architecture evidence model docs/architecture-model/architecture-map.md
Manufacturing KPIs (fictional demo data)
08
OEE
Overall Equipment Effectiveness0.724
World-class ≥0.85
Pick success
pick success0.793
DexNet benchmark ~0.80
MTBF
Mean time between failures (h)39.8
Higher is better
Collision / intervention rate
per cycle1.08%
Lower is better
Quick start
09
CLI
# Install (core layer has zero deps) pip install -e ".[dev]"