diff --git a/TRACKER.md b/TRACKER.md index 4845520..4411ae0 100644 --- a/TRACKER.md +++ b/TRACKER.md @@ -5,8 +5,8 @@ ## Status - **Current phase:** 2 — Instance graph & cross-file data flow -- **Next step:** 2.1 — Instance tree construction -- **Done:** 0.1–0.4, 1.1–1.6 +- **Next step:** 2.2 — Prop-flow: data attribution per instance +- **Done:** 0.1–0.4, 1.1–1.6, 2.1 - **Gates passed:** Gate 0 (CI + red-path, PRs #5/#6) · Gate 1 (precision 1.000 ≥ 0.90, recall 0.895 ≥ 0.80 across C2/C3/C5/A2/A7/A8/D4, zero forbidden hits) ## What CodeRadar is @@ -140,7 +140,7 @@ follow-one-reference; the cross-file instance/prop-flow machinery is Phase 2. The heart of the project. C1 and B1 live here. -### [ ] 2.1 Instance tree construction +### [x] 2.1 Instance tree construction **Failure modes:** C1 (graph half), A5 **Build:** cross-file pass in `parser-react`: - Resolve every JSX tag to its component definition through imports (including `export { X as Y }`, barrel files, default exports). diff --git a/eval/fixtures/a5-design-system/app/MembersPage.tsx b/eval/fixtures/a5-design-system/app/MembersPage.tsx new file mode 100644 index 0000000..989352c --- /dev/null +++ b/eval/fixtures/a5-design-system/app/MembersPage.tsx @@ -0,0 +1,11 @@ +import { Avatar, ProfileCard } from "./ui"; + +export function MembersPage() { + return ( +
+

Members directory

+ + +
+ ); +} diff --git a/eval/fixtures/a5-design-system/app/SettingsPage.tsx b/eval/fixtures/a5-design-system/app/SettingsPage.tsx new file mode 100644 index 0000000..0edcd52 --- /dev/null +++ b/eval/fixtures/a5-design-system/app/SettingsPage.tsx @@ -0,0 +1,11 @@ +import { Button, DataGrid } from "@acme/ui"; + +export function SettingsPage() { + return ( +
+

Workspace settings

+ +
+ ); +} diff --git a/eval/fixtures/a5-design-system/app/ui/ProfileCard.tsx b/eval/fixtures/a5-design-system/app/ui/ProfileCard.tsx new file mode 100644 index 0000000..aebc623 --- /dev/null +++ b/eval/fixtures/a5-design-system/app/ui/ProfileCard.tsx @@ -0,0 +1,12 @@ +export function ProfileCardInner({ name }: { name: string }) { + return ( +
+

Profile details

+ {name} +
+ ); +} + +export default function AvatarBadge() { + return Member avatar; +} diff --git a/eval/fixtures/a5-design-system/app/ui/index.ts b/eval/fixtures/a5-design-system/app/ui/index.ts new file mode 100644 index 0000000..70d85c6 --- /dev/null +++ b/eval/fixtures/a5-design-system/app/ui/index.ts @@ -0,0 +1,2 @@ +export { ProfileCardInner as ProfileCard } from "./ProfileCard"; +export { default as Avatar } from "./ProfileCard"; diff --git a/eval/fixtures/a5-design-system/golden.json b/eval/fixtures/a5-design-system/golden.json new file mode 100644 index 0000000..3362be7 --- /dev/null +++ b/eval/fixtures/a5-design-system/golden.json @@ -0,0 +1,21 @@ +{ + "failureMode": "A5", + "note": "Design-system components: