Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

The repository has three top-level directories for code:

- **`packages/`** — publishable libraries (`properties`, `system`, `extract`, `vite-plugin`, `next-plugin`, `cli`, `unplugin`) and deep-internal private workspaces (`_assertions`, `_integration`, `test-ds`, `showcase`). Everything here either ships to npm or is load-bearing for the build/verification pipeline.
- **`packages/`** — publishable libraries (`properties`, `system`, `extract`, `vite-plugin`, `next-plugin`, `cli`, `unplugin`) and deep-internal private workspaces (`_assertions`, `_integration`, `test-ds`, `showcase`, `oracle`). Everything here either ships to npm or is load-bearing for the build/verification pipeline.
- **`e2e/`** — consumer fixture applications whose test surface is "build the whole app, assert against output." Current members: `next-app` (Next.js), `next16-app`, `vite-app`, `vinext-app`, `react-router-app`, `packed-app`, and `rollup-app` (the standalone-CLI consumer lane). Future members may include `vite-app`, etc. Never published.
- **`legacy/`** — archived packages preserved for reference only. Do not install, build, or publish. See § Legacy Packages below for the full catalog.

Expand Down Expand Up @@ -115,6 +115,7 @@ This map routes an edit to the smallest sufficient claim plus any source-owned d
| `packages/extract/session/**` (driver-shared session engine) | `vp run verify:compile && vp run verify:unit:ts && vp run verify:integration && vp run @animus-ui/rollup-app#verify` |
| `packages/unplugin/src/**` | `vp run verify:compile && vp run verify:unit:ts && vp run @animus-ui/rollup-app#verify` |
| `packages/cli/**` | `vp run verify:compile && vp run verify:unit:ts && vp run @animus-ui/rollup-app#verify && vp run verify:packed` |
| `packages/oracle/**` | `vp run verify:compile && vp run verify:unit:ts` |
| `e2e/vite-app/**` | `vp run verify:workers:contracts && vp run @animus-ui/vite-app#verify` |
| `e2e/vinext-app/**` | `vp run verify:workers:contracts && vp run @animus-ui/vinext-app#verify` |
| `e2e/react-router-app/**` | `vp run verify:workers:contracts && vp run @animus-ui/react-router-app#verify` |
Expand Down
14 changes: 14 additions & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions e2e/rollup-app/src/Frame.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import type { ReactNode } from 'react';

// Deliberately opaque wrapper for the oracle's many-place witnesses
// (packages/oracle/PLACES.md §4): a plain React component with no animus
// styling. From a consumer file, `<Frame>` is a component boundary the
// structural reader must not see through — whatever element or attributes
// this renders (or doesn't) is exactly the knowledge a place behind it
// must report as open, never inferred.
export const Frame = ({ children }: { children?: ReactNode }) => (
<section className="frame">{children}</section>
);
40 changes: 40 additions & 0 deletions e2e/rollup-app/src/Group.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { GroupItem } from '@animus-ui/test-ds';

import { Frame } from './Frame';

// Many-place invocation family for the oracle fixture
// (packages/oracle/PLACES.md §4). Four real invocations of the kit
// GroupItem whose ancestor structure differs in exactly the ways the place
// model must distinguish:
//
// 1. established — wrapper carries `data-active="true"` AND `className=
// "group"`, so the raw-ancestor rule's axis is established and the
// `.group:hover` axis stays hover-conditional (structure can't refute
// it);
// 2. refuted — wrapper carries `data-active="false"` and no `group`
// class, so both ancestor axes are structurally refuted;
// 3. open(opaque) — `<Frame>` hides the structure; every ancestor axis
// is open with the component boundary as the reason;
// 4. open(dynamic) — `data-active` is a conditional with statically
// enumerable alternatives, so the place splits rather than resolves.
//
// Deliberately NOT imported by entry.tsx: the standalone CLI's directory
// discovery analyzes this file (fileFacts + usage), while the rollup/
// unplugin host never bundles it — and since a prop-less GroupItem adds no
// CSS, the lane's CLI-vs-host stylesheet parity is untouched.
export const GroupDemo = ({ active }: { active?: boolean }) => (
<div>
<div className="group" data-active="true">
<GroupItem>active kit item</GroupItem>
</div>
<div data-active="false">
<GroupItem>inactive kit item</GroupItem>
</div>
<Frame>
<GroupItem>framed kit item</GroupItem>
</Frame>
<div data-active={active ? 'true' : 'false'}>
<GroupItem>conditional kit item</GroupItem>
</div>
</div>
);
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"packages/cli",
"packages/extract",
"packages/next-plugin",
"packages/oracle",
"packages/properties",
"packages/showcase",
"packages/system",
Expand Down
Loading