docs(clone-app): revise fidelity design — two reports, Phase 7 trigger
Drop the CLONE_APP_MODE env-var toggle. Feasibility runs as today and yields its report; the deep fidelity pass is triggered by the Phase 7 "proceed to build a plan?" gate, reuses $WORK/output (no re-decompile), and yields a standalone fidelity report. The generated plan references both reports and targets an exact / near-exact rebuild. Rename spec to match (fidelity-pass). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
d2a979038c
commit
54276affbd
|
|
@ -1,4 +1,4 @@
|
||||||
# clone-app Fidelity Mode — Design
|
# clone-app Fidelity Pass — Design
|
||||||
|
|
||||||
**Date:** 2026-06-25
|
**Date:** 2026-06-25
|
||||||
**Status:** Approved design, pre-implementation
|
**Status:** Approved design, pre-implementation
|
||||||
|
|
@ -15,18 +15,23 @@ does not care about pricing or a verdict. They want to **extract and replicate
|
||||||
an app or game in high fidelity** — its workflows (iş akışları), its designs,
|
an app or game in high fidelity** — its workflows (iş akışları), its designs,
|
||||||
its in-app/business logic, and, where it can be inferred, its backend design.
|
its in-app/business logic, and, where it can be inferred, its backend design.
|
||||||
|
|
||||||
This spec adds a **fidelity mode** to `clone-app`. The mode reorients the skill
|
This spec adds a **fidelity pass** to `clone-app`, producing a second standalone
|
||||||
from "should I clone this and what will it cost" toward "capture everything
|
report alongside the feasibility one. There is no mode flag. Feasibility runs as
|
||||||
needed to rebuild this faithfully." Feasibility remains the default behavior;
|
today and yields its report; when the user proceeds to build a plan (the Phase 7
|
||||||
fidelity is opt-in and does not break the existing path.
|
decision gate), a deep fidelity pass runs and yields a fidelity report, and the
|
||||||
|
generated implementation plan references **both** reports. The plan is the build
|
||||||
|
contract: executed in a fresh session it must rebuild the target **exactly or
|
||||||
|
very close**.
|
||||||
|
|
||||||
## 2. Scope
|
## 2. Scope
|
||||||
|
|
||||||
**In scope (Phase A — static deep extraction):**
|
**In scope (Phase A — static deep extraction):**
|
||||||
- A fidelity mode toggle that skips the feasibility phases and deepens the
|
- A deep fidelity pass, triggered at the Phase 7 decision gate when the user
|
||||||
extraction phases.
|
proceeds to build a plan — no mode flag, no env var. It runs over the sources
|
||||||
|
Phase 2 already decompiled (no re-decompile) and yields a standalone fidelity
|
||||||
|
report alongside the existing feasibility report.
|
||||||
- Full Tier-2 payload extraction across **all first-party endpoints** (not just
|
- Full Tier-2 payload extraction across **all first-party endpoints** (not just
|
||||||
the auth/payment/core trio the feasibility path limits itself to).
|
the auth/payment/core trio the feasibility pass limits itself to).
|
||||||
- New extraction of **in-app logic / workflows** (ViewModels, use-cases,
|
- New extraction of **in-app logic / workflows** (ViewModels, use-cases,
|
||||||
validation rules, state machines, local DB schema, game formulas).
|
validation rules, state machines, local DB schema, game formulas).
|
||||||
- New extraction of the **real navigation graph** (not inferred).
|
- New extraction of the **real navigation graph** (not inferred).
|
||||||
|
|
@ -40,8 +45,8 @@ fidelity is opt-in and does not break the existing path.
|
||||||
the planned follow-on, but is **not** part of this spec.
|
the planned follow-on, but is **not** part of this spec.
|
||||||
|
|
||||||
**Hard constraints (unchanged from repo rules):**
|
**Hard constraints (unchanged from repo rules):**
|
||||||
- `plugins/android-reverse-engineering/` stays byte-identical. The fidelity mode
|
- `plugins/android-reverse-engineering/` stays byte-identical. The fidelity pass
|
||||||
reuses its scripts/skill exactly as the feasibility path does; it adds nothing
|
reuses its scripts/skill exactly as the feasibility flow does; it adds nothing
|
||||||
to that tree.
|
to that tree.
|
||||||
- All new helper scripts are stdlib-only Python or bash 4+, offline-testable
|
- All new helper scripts are stdlib-only Python or bash 4+, offline-testable
|
||||||
against `tests/fixtures/`, never hitting the network.
|
against `tests/fixtures/`, never hitting the network.
|
||||||
|
|
@ -62,40 +67,50 @@ does not over-promise:
|
||||||
|
|
||||||
The user's chosen targets — **native apps and Unity games** — are precisely the
|
The user's chosen targets — **native apps and Unity games** — are precisely the
|
||||||
two where static logic extraction is strongest. Flutter/RN apps fall back to a
|
two where static logic extraction is strongest. Flutter/RN apps fall back to a
|
||||||
`limited:` digest, same as the feasibility path.
|
`limited:` digest, same as the feasibility pass.
|
||||||
|
|
||||||
## 4. Design
|
## 4. Design
|
||||||
|
|
||||||
### 4.1 Mode shape
|
### 4.1 Two reports, no mode flag
|
||||||
|
|
||||||
A mode selector resolved in Phase 0:
|
There is **no** `CLONE_APP_MODE` env var and no toggle. The skill runs its
|
||||||
|
existing feasibility flow start to finish and produces the feasibility report.
|
||||||
|
The deep fidelity pass is **triggered by the Phase 7 decision gate** — the same
|
||||||
|
"proceed to build a plan?" question the skill already asks:
|
||||||
|
|
||||||
- `CLONE_APP_MODE=fidelity` environment variable, **or** user intent phrased as
|
- **Phase 7 = No** → the feasibility report stands alone. Done. No fidelity
|
||||||
"detailed clone / replicate in detail / klon planı" → `fidelity`.
|
cost paid.
|
||||||
- Otherwise → `feasibility` (the existing default; unchanged).
|
- **Phase 7 = Yes** → Phase 8 runs the deep fidelity pass, produces a standalone
|
||||||
|
**fidelity report**, assembles the build spec from the deep artifacts, and
|
||||||
|
hands off to `writing-plans`. The generated plan references **both** reports.
|
||||||
|
|
||||||
Phase behavior by mode:
|
The fidelity pass reuses what Phase 2 already decompiled to `$WORK/output` — it
|
||||||
|
does **not** re-download or re-decompile. Phase 2 stays as today (feasibility
|
||||||
|
depth: Tier-2 on the auth/payment/core trio); the deepening happens in Phase 8.
|
||||||
|
|
||||||
| Phase | feasibility (default) | fidelity |
|
Phase behavior:
|
||||||
|---|---|---|
|
|
||||||
| 0 Input | as today | + resolve mode |
|
|
||||||
| 1 Download | as today | as today |
|
|
||||||
| 2 RE | shallow (Tier-2 on 3 flows) | **deep** (Tier-2 all first-party + logic + nav + backend recon) |
|
|
||||||
| 3 Store | metrics + screenshots + iOS check | **screenshots only** (visual ground truth); skip metrics/iOS |
|
|
||||||
| 4 Stack | choose stack | choose stack (shared — the rebuild target) |
|
|
||||||
| 5 Effort/Cost | AI-Sprint + infra tables | **skipped** |
|
|
||||||
| 6 Viability | GO/NO-GO report | **skipped** |
|
|
||||||
| 7 Decision gate | proceed to plan? | proceed to plan? (shared) |
|
|
||||||
| 8 Build spec | standard template | **fidelity variant** |
|
|
||||||
|
|
||||||
Screenshots are retained in fidelity mode because they are the visual source of
|
| Phase | Behavior |
|
||||||
truth for design replication; store metrics, iOS presence, effort, cost, and the
|
|---|---|
|
||||||
verdict are all feasibility concerns and are dropped.
|
| 0 Input | as today |
|
||||||
|
| 1 Download | as today |
|
||||||
|
| 2 RE | as today — feasibility-depth digest (Tier-2 on 3 flows) over `$WORK/output` |
|
||||||
|
| 3 Store | as today — metrics + screenshots + iOS check (screenshots feed both reports) |
|
||||||
|
| 4 Stack | choose stack (the rebuild target) |
|
||||||
|
| 5 Effort/Cost | as today |
|
||||||
|
| 6 Viability | feasibility report → `clone-report-<date>.md` |
|
||||||
|
| 7 Decision gate | proceed to build a plan? — **this gates the fidelity pass** |
|
||||||
|
| 8 Build spec | on Yes: **deep fidelity pass** over `$WORK/output` → `fidelity-report-<date>.md` + fidelity build spec → `writing-plans`, plan references both reports |
|
||||||
|
|
||||||
|
Two standalone outputs: `clone-report-<date>.md` (feasibility) and
|
||||||
|
`fidelity-report-<date>.md` (deep extraction). The plan cites both; together with
|
||||||
|
`$WORK/` they are the build contract for an exact / near-exact clone.
|
||||||
|
|
||||||
### 4.2 New and deepened artifacts
|
### 4.2 New and deepened artifacts
|
||||||
|
|
||||||
All produced by the Phase 2 subagent in its isolated context (so deep extraction
|
All produced by a **Phase 8 fidelity subagent** in its isolated context (so deep
|
||||||
never floods the orchestrator), written under `$WORK/`:
|
extraction never floods the orchestrator), reading the sources Phase 2 already
|
||||||
|
decompiled to `$WORK/output`, written under `$WORK/`:
|
||||||
|
|
||||||
| Artifact | State | Content |
|
| Artifact | State | Content |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
|
@ -133,8 +148,9 @@ contract — a fresh session with it + `$WORK/` rebuilds the clone.
|
||||||
|
|
||||||
### 5.2 New references / rubrics (`skills/clone-app/references/`)
|
### 5.2 New references / rubrics (`skills/clone-app/references/`)
|
||||||
|
|
||||||
- `fidelity-mode-guide.md` — single source for what the mode skips/adds and the
|
- `fidelity-pass-guide.md` — single source for what the Phase 8 fidelity pass
|
||||||
branch table; SKILL.md points here rather than duplicating prose.
|
does (the deep-extraction steps + the new artifacts + the two-report model);
|
||||||
|
SKILL.md points here rather than duplicating prose.
|
||||||
- `logic-capture-guide.md` — how the subagent distills in-app logic, with
|
- `logic-capture-guide.md` — how the subagent distills in-app logic, with
|
||||||
framework-aware confidence (native/Compose/Unity-mono high–med; Flutter/RN
|
framework-aware confidence (native/Compose/Unity-mono high–med; Flutter/RN
|
||||||
low).
|
low).
|
||||||
|
|
@ -144,13 +160,15 @@ contract — a fresh session with it + `$WORK/` rebuilds the clone.
|
||||||
|
|
||||||
### 5.3 Changed files
|
### 5.3 Changed files
|
||||||
|
|
||||||
- `SKILL.md` — Phase 0 mode resolution; Phase 2b deep-extraction subagent
|
- `SKILL.md` — Phase 7 gate triggers the fidelity pass on Yes; Phase 8 gains the
|
||||||
instructions; Phase 3 screenshot-only branch; skip Phase 5/6 in fidelity;
|
deep fidelity subagent (full Tier-2 + logic + nav + backend recon over
|
||||||
Phase 8 fidelity-variant selection. Error-handling table gains fidelity rows.
|
`$WORK/output`), writes `fidelity-report-<date>.md`, assembles the fidelity
|
||||||
- `re-digest-contract.md` — fidelity adds Tier-2-on-all-first-party and the
|
build spec, and passes both reports to `writing-plans`. Phases 0–6 unchanged.
|
||||||
contract for the three new artifacts (`logic-digest.md`, `nav-graph.json`,
|
Error-handling table gains fidelity-pass rows.
|
||||||
`backend-recon.md`). The existing Tier-2-only-on-3-flows rule stays the
|
- `re-digest-contract.md` — documents the Phase 8 fidelity artifacts
|
||||||
documented feasibility behavior.
|
(`logic-digest.md`, `nav-graph.json`, `backend-recon.md`) and the
|
||||||
|
Tier-2-on-all-first-party rule for the fidelity pass. The existing
|
||||||
|
Tier-2-only-on-3-flows rule stays the documented Phase 2 feasibility behavior.
|
||||||
- `clone-build-spec-template.md` — the new/extended sections in §4.3.
|
- `clone-build-spec-template.md` — the new/extended sections in §4.3.
|
||||||
- `unity-re-guide.md` — game-mechanic / formula extraction depth.
|
- `unity-re-guide.md` — game-mechanic / formula extraction depth.
|
||||||
|
|
||||||
|
|
@ -171,7 +189,7 @@ tests with `set -uo pipefail` aggregating failures, stdlib-only Python.
|
||||||
| `test-extract-logic.py` | Against a fixture decompile tree (1 ViewModel + 1 Room entity + 1 state enum), the expected logic signals are surfaced |
|
| `test-extract-logic.py` | Against a fixture decompile tree (1 ViewModel + 1 Room entity + 1 state enum), the expected logic signals are surfaced |
|
||||||
| `test-extract-nav-graph.py` | Against a fixture nav XML + Activity set, the correct node/edge graph JSON is produced |
|
| `test-extract-nav-graph.py` | Against a fixture nav XML + Activity set, the correct node/edge graph JSON is produced |
|
||||||
| `smoke-structure.sh` (update) | New scripts present + executable; new references present; emitted JSON valid |
|
| `smoke-structure.sh` (update) | New scripts present + executable; new references present; emitted JSON valid |
|
||||||
| `test-skill-content.sh` (new or extended) | SKILL.md contains the mode resolution and the fidelity branch wiring |
|
| `test-skill-content.sh` (new or extended) | SKILL.md wires the Phase 7 gate to the Phase 8 fidelity pass and the two-report output |
|
||||||
| `run-all.sh` (update) | Registers the new suites |
|
| `run-all.sh` (update) | Registers the new suites |
|
||||||
|
|
||||||
New fixtures: a minimal decompile tree (one ViewModel, one Room entity, one
|
New fixtures: a minimal decompile tree (one ViewModel, one Room entity, one
|
||||||
|
|
@ -180,15 +198,17 @@ state enum) and a minimal `navigation/nav.xml` + Activity references. No network
|
||||||
## 7. Risks & mitigations
|
## 7. Risks & mitigations
|
||||||
|
|
||||||
- **Token cost of Tier-2-on-all-endpoints.** Mitigated by running it inside the
|
- **Token cost of Tier-2-on-all-endpoints.** Mitigated by running it inside the
|
||||||
Phase 2 subagent's isolated context; only the digest summary returns to the
|
Phase 8 fidelity subagent's isolated context; only the digest summary returns
|
||||||
orchestrator. The `re-digest-contract.md` warning about token cost applies to
|
to the orchestrator. It is also paid only when the user proceeds to build at
|
||||||
the feasibility path and is explicitly overridden only in fidelity mode.
|
the Phase 7 gate — feasibility-only runs never incur it. The
|
||||||
|
`re-digest-contract.md` warning about token cost applies to the Phase 2
|
||||||
|
feasibility pass and is explicitly overridden for the fidelity pass.
|
||||||
- **Over-promising backend fidelity.** Mitigated by confidence-stamping every
|
- **Over-promising backend fidelity.** Mitigated by confidence-stamping every
|
||||||
inference in `backend-recon.md` and framing it as a rebuild target, not
|
inference in `backend-recon.md` and framing it as a rebuild target, not
|
||||||
recovered server code (§3).
|
recovered server code (§3).
|
||||||
- **Flutter/RN low yield.** Same `limited:` framework guard as today; the
|
- **Flutter/RN low yield.** Same `limited:` framework guard as today; the
|
||||||
fidelity digest says so and leans on screenshots + whatever signals exist.
|
fidelity digest says so and leans on screenshots + whatever signals exist.
|
||||||
- **Legal.** The existing legal note in SKILL.md still governs; fidelity mode
|
- **Legal.** The existing legal note in SKILL.md still governs; the fidelity pass
|
||||||
does not change the authorization requirement and the same "recreate in style,
|
does not change the authorization requirement and the same "recreate in style,
|
||||||
treat extracted assets as reference" stance applies.
|
treat extracted assets as reference" stance applies.
|
||||||
|
|
||||||
|
|
@ -197,4 +217,4 @@ state enum) and a minimal `navigation/nav.xml` + Activity references. No network
|
||||||
Dynamic analysis — emulator + `mitmproxy` (real traffic) + `frida` (runtime
|
Dynamic analysis — emulator + `mitmproxy` (real traffic) + `frida` (runtime
|
||||||
hooks, decrypted payloads, observed transitions) — is the planned next increment
|
hooks, decrypted payloads, observed transitions) — is the planned next increment
|
||||||
for true runtime-observed workflow and backend fidelity. It will land as its own
|
for true runtime-observed workflow and backend fidelity. It will land as its own
|
||||||
spec once the static deep-extraction mode in this spec is in place.
|
spec once the static deep-extraction pass in this spec is in place.
|
||||||
Loading…
Reference in New Issue