Live status of the Semantic Dapp build. See docs/roadmap.md
for the full plan.
| Phase | Focus | Status |
|---|---|---|
| 0 | Foundation & repo setup | ✅ Done |
| 1 | Raw ABI runtime (slice) | ✅ Done (v0.0.1) |
| 2 | Address resolver | ✅ Done (slice) |
| 3 | Semantic manifest | ✅ Done (slice) |
| 4 | Standards analyzer | ✅ Done (slice) |
| 5 | Classification & routing | ✅ Done (slice) |
| 6 | Trusted UI components | ✅ Done (slice) |
| 7 | Safety & diagnostics | ✅ Done (slice) |
| 8 | Export & CLI | ✅ Done (slice) |
| 9 | Fixtures, docs, beta | ✅ Done (v0.1.0-beta) |
Detailed checklist: docs/progress/phase-9-fixtures-docs-beta.md.
The pipeline is now proven on production-like fixtures and cut as a public
beta (ADR-010). Two new Foundry fixtures - MockVault (ERC-4626) and
MockRWA (AccessControl roles + Pausable + mint/burn) - join MockERC20,
each with forge tests. Their real compiled ABIs (committed under
contracts/fixtures/abi) drive analyzer/classifier detection tests, so coverage
reflects what the compiler emits. Three committed demo bundles (ERC-20, vault,
RWA) render in the standalone app (see docs/demos.md), an
@axe-core/playwright gate keeps the generated UI accessible, and CI now runs
the Solidity fixtures and the standalone e2e. Packages are versioned
0.1.0-beta with a CHANGELOG.md. See
ADR-010.
Detailed checklist: docs/progress/phase-8-export-cli.md.
A reviewed contract can now be shipped as a standalone dApp (ADR-009). The
portable artifact is a SemanticBundle (packages/export) - identity + ABI +
reviewed manifest in one validated JSON. The studio exports it with one click; the
semantic-dapp CLI (packages/cli) produces it headlessly (bundle),
scaffolds a standalone app (export) and previews it (serve); and the
generated-app template (apps/generated-app) renders any bundle at runtime,
analyzer-free, hostable on any static host. See
ADR-009 and
docs/export.md.
Detailed checklist: docs/progress/phase-7-safety-diagnostics.md.
The generated app is now hardened against adversarial input (ADR-008). A pure
safety core in spec sanitizes untrusted strings (sanitizeText strips
bidi/zero-width/control characters and flags mixed-script homoglyphs) and computes
preflight writeWarnings (wrong network, unverified source, stale manifest,
critical risk). A SafeText component wraps every untrusted label (token
name/symbol, contract name) with a ⚠ marker, the ConfirmDialog surfaces the
preflight warnings before sending, and the studio keeps a local, exportable
execution history (audit trail) of every transaction. See
ADR-008.
Detailed checklist: docs/progress/phase-6-trusted-ui.md.
The generated app now renders purpose-built consoles instead of one form per
function (ADR-007): an Overview summary, a grouped Pause console and
Role manager, and a reusable ConfirmDialog that gates every high/critical
or privileged write (critical actions require typing CONFIRM). Dispatch is by
operationType grouping; presentational components stay runtime-free in
components, wiring lives in renderer, and ERC-20 transfer/approve are no
longer duplicated on the User tab. See
ADR-007.
Detailed checklist: docs/progress/phase-5-classification-routing.md.
Classification is now a priority-based rule engine (ADR-006). Standards stay
authoritative (priority 100); name/risk heuristics route the many functions
no standard describes - custom setters → Admin (admin-config), rescue/sweep
→ high-risk fund-withdraw, pause* → Emergency, claim/harvest → User - and
view functions surface in the Read tab. Each field is resolved by priority,
evidence accumulates from every matching rule, permissions are attached from
the access model, and unknown writers still fall back to Raw (ADR-001). See
ADR-006.
Detailed checklist: docs/progress/phase-4-standards-analyzer.md.
Detection now goes well beyond ERC-20. A generic member-based engine powers
detectors for ERC-721 / ERC-1155 / ERC-4626 and the Ownable /
AccessControl / Pausable / Upgradeable (UUPS) capabilities. A registry
merges the semantics of all detected standards, the classifier routes each
function accordingly (NFT transfers → User, roles → Admin, pause/unpause →
Emergency, upgrade → critical) and attaches an access-model permission
(ownable / access-control). See
ADR-005.
Detailed checklist: docs/progress/phase-3-semantic-manifest.md.
The manifest (ADR-002) is now a first-class artifact: import/export round-trip,
a form + raw-JSON editor, reviewed edits survive re-analyze
(mergeReviewed), staleness detection by implementation code hash, and a
versioned schema with a migration framework. See
ADR-004.
Detailed checklist: docs/progress/phase-2-address-resolver.md.
address + chainId → resolver (Sourcify / block-explorer) → EIP-1967 proxy detection → ABI + provenance → normalize → classify → generated app. Package
packages/resolver (18 unit tests); studio By address import + provenance
badge. See ADR-003. Deferred small
enhancements: docs/progress/backlog.md.
Detailed checklist: docs/progress/phase-1-vertical-slice.md.
| Workstream | Status |
|---|---|
| Foundation (Day 1) | ✅ Done |
spec - contract model & schema |
✅ Done |
contracts/fixtures (Foundry) |
✅ Done |
execution - viem/wagmi |
✅ Done |
components - generic widgets |
✅ Done |
renderer - sections/tabs |
✅ Done |
studio - import & raw UI |
✅ Done |
analyzer - ERC-20 detector |
✅ Done |
components - ERC-20 semantic |
✅ Done |
classifier - routing rules |
✅ Done |
| Tests & CI | ✅ Done |
| Demo & v0.0.1 release | ✅ Done (tag pending) |
Legend: ✅ done · 🚧 in progress · ⬜ not started
Manual ABI → normalized ContractModel → ERC-20 detector → classifier → semantic manifest → generated User/Admin/Raw app → wallet transaction (Anvil).
Packages: spec, execution, components, renderer, analyzer, classifier
apps/studio+contracts/fixtures. Tests: 83 (unit/integration/forge/e2e). Seedocs/progress/phase-1-vertical-slice.mdfor the full checklist anddocs/demo.mdfor the walkthrough.
The code is release-ready. To cut the tag (run manually when you're ready):
git add -A && git commit -m "feat: Phase 1 vertical slice (v0.0.1)"
git tag v0.0.1