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
6 changes: 4 additions & 2 deletions .agents/skills/docs-driven-development/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,10 @@ it does not establish cross-renderer pixel equivalence. Use `just test`
for the full native suite and `just test-metal` for focused capture checks.
For skill or hand-authored contributor-doc changes alone, validate instructions
and links; unchanged app/media output does not require regeneration.
For portable framework changes, `just doc-framework-test` provides focused SDK
and consumer checks; N3 adapter changes still require native replay and `just verify`.
Portable framework changes belong in the
[lgtmd repository](https://github.com/lgtmd/lgtmd) and use its SDK and
consumer gates. N3 adapter or dependency revision changes require native replay
and `just verify` here.

## Evolve the harness when the user story needs it

Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ jobs:
path: |
.cache/ci/linux-amd64/cargo/registry/cache
.cache/ci/linux-amd64/cargo/registry/index
.cache/ci/linux-amd64/cargo/git/db
.cache/ci/linux-amd64/cargo/git/checkouts
.cache/ci/linux-amd64/target/debug/deps
.cache/ci/linux-amd64/target/debug/build
.cache/ci/linux-amd64/target/debug/.fingerprint
Expand All @@ -51,6 +53,8 @@ jobs:
path: |
.cache/ci/linux-amd64/cargo/registry/cache
.cache/ci/linux-amd64/cargo/registry/index
.cache/ci/linux-amd64/cargo/git/db
.cache/ci/linux-amd64/cargo/git/checkouts
.cache/ci/linux-amd64/target/debug/deps
.cache/ci/linux-amd64/target/debug/build
.cache/ci/linux-amd64/target/debug/.fingerprint
Expand Down Expand Up @@ -90,6 +94,8 @@ jobs:
path: |
.cache/ci/linux-amd64/cargo/registry/cache
.cache/ci/linux-amd64/cargo/registry/index
.cache/ci/linux-amd64/cargo/git/db
.cache/ci/linux-amd64/cargo/git/checkouts
.cache/ci/linux-amd64/target/debug/deps
.cache/ci/linux-amd64/target/debug/build
.cache/ci/linux-amd64/target/debug/.fingerprint
Expand Down Expand Up @@ -139,6 +145,8 @@ jobs:
path: |
.cache/cargo/registry/cache
.cache/cargo/registry/index
.cache/cargo/git/db
.cache/cargo/git/checkouts
target/debug/deps
target/debug/build
target/debug/.fingerprint
Expand All @@ -164,6 +172,8 @@ jobs:
path: |
.cache/cargo/registry/cache
.cache/cargo/registry/index
.cache/cargo/git/db
.cache/cargo/git/checkouts
target/debug/deps
target/debug/build
target/debug/.fingerprint
Expand Down Expand Up @@ -208,6 +218,8 @@ jobs:
path: |
.cache/cargo/registry/cache
.cache/cargo/registry/index
.cache/cargo/git/db
.cache/cargo/git/checkouts
target/debug/deps
target/debug/build
target/debug/.fingerprint
Expand Down Expand Up @@ -259,6 +271,8 @@ jobs:
path: |
.cache/cargo/registry/cache
.cache/cargo/registry/index
.cache/cargo/git/db
.cache/cargo/git/checkouts
target/debug/deps
target/debug/build
target/debug/.fingerprint
Expand Down
2 changes: 0 additions & 2 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
"/TODO.md",
"/Cargo.lock",
"/docs/guide/**",
"/crates/doc-example-config/baseline/**",
"/crates/doc-harness/docs/guide/**",
"/docs/preview/vendor/**",
"/vendor/**",
"/examples/**",
Expand Down
48 changes: 27 additions & 21 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,14 @@ boundaries. The current Editor still depends on egui and is not a public kernel

## Code organization

Keep N3 as one application crate. The workspace also maintains the portable
`executable-docs` SDK in `crates/doc-harness` and its consumer examples in
`crates/doc-example-config`; N3's documentation adapter is a real SDK consumer.
This extraction is justified by a tested boundary between application replay and
document composition/publication. It does not make the editor a public kernel.
Prefer focused modules over further speculative crates or APIs. See
Keep N3 as one application crate. Its documentation adapter consumes the portable
[lgtmd SDK](https://github.com/lgtmd/lgtmd), maintained in its own repository.
N3 pins an exact Git revision until a registry release is ready. The tested
boundary separates application replay from document composition and publication;
it does not make the editor a public kernel. Keep N3's replay, renderer, scenarios,
fixtures, and guide outputs here. SDK authoring, compiler/store changes, portable
Rust/Node examples, and SDK verification belong in lgtmd. Prefer focused modules
over further speculative crates or APIs. See
[executable documents](docs/architecture/executable-documents.md) for this boundary.

Read [platform boundaries and performance](docs/architecture/platform-boundaries.md)
Expand All @@ -83,21 +85,19 @@ semantics, keep target selection at module boundaries, and preserve each host's
execution policy. Browser constraints must not lower the primary native target's
capabilities, performance policy, or verification baseline.

| Location | Responsibility |
| ---------------------------- | ----------------------------------------------------------------------------- |
| `src/model/` | Authored documents, units, native text codec, geometry evaluation |
| `src/asset_io/` | Format adapters, resource resolution, native document persistence |
| `src/scene/` | Internal imported scene model, validation and pose evaluation |
| `src/scene_view.rs` | Transient asset inspection and playback; separate from edit history |
| `src/editor/` | Selection, edits, sessions, history, transform policies |
| `src/input/` | Key mapping, semantic actions, pointer and navigation routing |
| `src/render/` | Camera, wgpu rendering, derived visual feedback |
| `src/ui/` | Panels, controls, gizmo, rulers |
| `src/native.rs` | Window lifecycle, native events, dialogs, filesystem effects |
| `src/settings/` | Typed global preferences, validation, merge policy, storage interface |
| `src/documentation/` | Headless replay, virtual input, annotations, capture, scenarios |
| `crates/doc-harness/` | Portable document composition, evidence, audience exports, artifact lifecycle |
| `crates/doc-example-config/` | Standalone CLI and library consumers of the documentation SDK |
| Location | Responsibility |
| -------------------- | --------------------------------------------------------------------- |
| `src/model/` | Authored documents, units, native text codec, geometry evaluation |
| `src/asset_io/` | Format adapters, resource resolution, native document persistence |
| `src/scene/` | Internal imported scene model, validation and pose evaluation |
| `src/scene_view.rs` | Transient asset inspection and playback; separate from edit history |
| `src/editor/` | Selection, edits, sessions, history, transform policies |
| `src/input/` | Key mapping, semantic actions, pointer and navigation routing |
| `src/render/` | Camera, wgpu rendering, derived visual feedback |
| `src/ui/` | Panels, controls, gizmo, rulers |
| `src/native.rs` | Window lifecycle, native events, dialogs, filesystem effects |
| `src/settings/` | Typed global preferences, validation, merge policy, storage interface |
| `src/documentation/` | Headless replay, virtual input, annotations, capture, scenarios |

Keep code, identifiers, comments, tests, logs, and authored UI strings in English.
Explain non-obvious behavior and platform limitations near the owning code.
Expand Down Expand Up @@ -206,6 +206,12 @@ For changes limited to hand-authored documentation such as this file or the
README, check links and factual claims; unchanged application/media output does
not require rebuilding the renderer or regenerating the guide.

Verify SDK or web adapter changes in the
[lgtmd repository](https://github.com/lgtmd/lgtmd). An N3 dependency
revision update still requires native `just verify`, including real replay and
exact guide checks. Keep dependency updates explicit; do not add local path
fallbacks or discover a sibling SDK checkout automatically.

Use the root `justfile` for development commands (`just` 1.46 is the verified
version). Useful commands from the repository root:

Expand Down
57 changes: 17 additions & 40 deletions Cargo.lock

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

7 changes: 1 addition & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@ edition = "2024"
rust-version = "1.95"
publish = false

[workspace]
members = ["crates/doc-harness", "crates/doc-example-config"]
default-members = ["."]
resolver = "3"

[features]
# Contributor-only instrumentation; normal builds contain no clocks or recorder.
viewport-measure = []
Expand Down Expand Up @@ -53,7 +48,7 @@ wgpu = "30.0.1"
winit = "=0.30.13"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
executable-docs = { path = "crates/doc-harness" }
lgtmd = { git = "https://github.com/lgtmd/lgtmd", rev = "8828c41eaf7fbb002044aea9f8bfd4a06ba76168" }
alacritty_terminal = "=0.26.0"
egui-winit = { version = "=0.36.2", default-features = false, features = [
"clipboard",
Expand Down
2 changes: 1 addition & 1 deletion TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ and document the implemented behavior in the executable user guide.
| Paired selection in 2D | **Deferred:** consider verified front/back vertex pairing in aligned views; exact geometry does not prove selection intent. See [RFC 0001](rfcs/0001-paired-selection-in-2d.md). |
| Grouping and hierarchy entities | Add an explicit document entity for organizing objects; evaluate groups, collections, or folders, including nesting, selection, and shared transform semantics. |
| Multiple authored scenes | **Draft; implementation deferred.** Independent N3 scenes in one document/editor. Revisit [RFC 0002](rfcs/0002-authored-scenes.md), starting with a small native-scene proof of switching, history/recovery, and persistence before broader import work. |
| Reusable executable documentation framework | **Local implementation complete:** unpublished SDK, shared N3 lifecycle, Rust-authored hand-tool/navigation guides, and CLI/serde_json consumers. Next: independent developer adoption and authoring ergonomics; 26 N3 narratives still use templates. See [RFC 0003](rfcs/0003-executable-documentation-framework.md). |
| Executable guide authoring | lgtmd has moved to its [own repository](https://github.com/lgtmd/lgtmd); N3 consumes an exact Git revision. Migrate the remaining 26 N3 templates through the existing adapter when scheduled, and switch to crates.io after an explicitly authorized SDK release. See [the boundary](docs/architecture/executable-documents.md) and historical [RFC 0004](rfcs/0004-lgtmd-web-incubation.md). |
| 3D format I/O | Build on read-only glTF/GLB viewing: scene export/authoring, OBJ export, compression and advanced extensions; evaluate OpenUSD composition/schema support. See the [viewer milestone](docs/milestones/modern-scene-viewer.md). |
| Materials and PBR | Extend imported PBR viewing into editable material assignment; HDR environment import, shadows, advanced materials and color management. See the [viewer milestone](docs/milestones/modern-scene-viewer.md). |
| Node Canvas UI Kit | Establish reusable UI primitives for node blocks, ports, connections, selection, dragging, pan, and zoom. Validate interactions in isolated workbench examples so future editors can adopt them confidently when a concrete consumer exists. Scope this as UI foundation work; shader/modifier semantics and evaluation remain separate. |
Expand Down
3 changes: 0 additions & 3 deletions crates/doc-example-config/.gitignore

This file was deleted.

24 changes: 0 additions & 24 deletions crates/doc-example-config/Cargo.toml

This file was deleted.

21 changes: 0 additions & 21 deletions crates/doc-example-config/LICENSE

This file was deleted.

Loading
Loading