Skip to content

chore(tools): remove tools/synthetic-dwg, which examples/build_fixtures supersedes (#20) - #397

Merged
DrunkOnJava merged 3 commits into
mainfrom
chore/remove-synthetic-dwg
Oct 28, 2026
Merged

DrunkOnJava merged 3 commits into
mainfrom
chore/remove-synthetic-dwg

Conversation

@DrunkOnJava

@DrunkOnJava DrunkOnJava commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Summary

Removes tools/synthetic-dwg, the out-of-workspace R14 generator that examples/build_fixtures.rs supersedes, and every reference to it.

Spec reference

None; tooling only. Closes #20 (issue body: "Preference: delete unless it has a purpose the fixture builder cannot serve").

Why the tool has no remaining purpose: it emitted a 107-byte R14 skeleton with a fake LINE payload that no decoder path reads, was not a workspace member, and no CI job built, linted or tested it. examples/build_fixtures.rs writes the real canonical fixtures (tests/fixtures/canonical/, byte-deterministic, regenerated and diffed in CI). The one thing it produced that is still used is the four sample files under wasm/examples/samples/, which pages.yml copies into the Pages site; they stay (see below).

Test plan

Removed: tools/synthetic-dwg/ (Cargo.toml, Cargo.lock, src/main.rs). Updated references:

  • tools/maintainer/audit.py: the UNWATCHED entry for /tools/synthetic-dwg is gone (the dict is now empty, with its comment moved next to it; the comment's claim that docs/maintaining.md says the same is dropped, since it does not).
  • wasm/examples/samples/README.md: provenance now says the files were committed on 2026-04-20 (f5bd374) from the removed generator, gives its source in history (git show e7c53e1:tools/synthetic-dwg/src/main.rs), drops the regenerate instructions, and records that the four files are byte-identical (SHA-256 1a6e92f734f0a747b434cc617953e907ca35b2c394962f5149d3ad9e5358c342, 107 bytes each) and that nothing regenerates them.
  • CLAUDE.md (the list of separate crates), Cargo.toml (the exclude comment now describes what tools/ holds), .gitignore (the **/target/ comment names wasm/ and fuzz/), STATUS.md (the shipped-DEV-docs list), and a CHANGELOG.md line under the maintainer-tooling entry.
  • Dependabot: .github/dependabot.yml never listed the directory (that is why UNWATCHED existed), so nothing to remove there.

Nothing builds or reads it any more:

  1. No file in the tree names it except the README's provenance note and the CHANGELOG line (git grep -n -i 'synthetic-dwg\|synthetic_dwg' after the change):

    wasm/examples/samples/README.md:10:Committed on 2026-04-20 (`f5bd374`), generated by `tools/synthetic-dwg`, a small
    wasm/examples/samples/README.md:13:git history (`git show e7c53e1:tools/synthetic-dwg/src/main.rs`). It emitted a
    

    (and the CHANGELOG line, which git grep also lists). No Cargo.toml, Cargo.lock, workflow or Dependabot file names it (git grep -c -i 'synthetic-dwg\|synthetic_dwg' -- '*Cargo.lock' '*.toml' '.github' prints nothing).

  2. No Cargo workspace contains it or depends on it. cargo metadata --no-deps --offline on the three manifests:

    Cargo.toml: workspace members ['dwg'] path dependencies []
    wasm/Cargo.toml: workspace members ['dwg-wasm'] path dependencies ['dwg']
    fuzz/Cargo.toml: workspace members ['dwg-fuzz'] path dependencies ['dwg']
    

    The only path = dependencies in the repository are dwg itself, in wasm/ and fuzz/. This is a manifest check, not a build: the tool was never part of any build graph, so no cargo check was needed.

  3. The audit that carried the exception passes without it. audit.py's dependabot_coverage check, run against a local file tree instead of the GitHub API (gh replaced by git ls-tree / git ls-files):

    before (audit.py of e7c53e1, tree of e7c53e1):             ok
    after (audit.py of this branch, tree of this branch):      ok
    after (audit.py of this branch, tree of e7c53e1):          FAIL  tools/synthetic-dwg/Cargo.lock (cargo) is not in .github/dependabot.yml
    

    The third line shows the old UNWATCHED entry was the only thing covering the directory, and that deleting the directory is what makes the empty dict correct.

Also fixed in the same README: it named wasm/src/sample_loader.rs and a DwgFile.openSample(name) entry point, neither of which has ever existed in the tree. Nothing fetches the four files today; .github/workflows/pages.yml publishes the directory at /samples/, wasm/src/no_upload.rs records that the V-20 loader needs a one-line CSP relaxation when it ships, and docs/viewer/index.html reads only a file the user picks. The README now says exactly that.

Source-provenance declaration

By submitting this PR I certify that my contribution does not incorporate executable code from any source whose license is incompatible with Apache-2.0. Specifically:

  • No Autodesk DWG SDK source (RealDWG, ObjectARX, ObjectDBX) or NDA-protected Autodesk documentation was consulted or imported.
  • No Open Design Alliance Teigha / Drawings SDK source was consulted or imported. The ODA's public Open Design Specification for .dwg files PDF is explicitly allowed (see CLEANROOM.md).
  • No GPL-licensed DWG implementation source (LibreDWG, etc.) was consulted or imported. This matters because dwg-rs is Apache-2.0 and must remain compatible.

My contribution is based on:

  • The ODA's freely-redistributable Open Design Specification for .dwg files (v5.4.1);
  • Public reverse-engineering notes, research papers, or blog posts cited inline;
  • Reading algorithm-description comments (not executable code) in permissively-licensed projects (MIT / Apache / BSD) to resolve spec ambiguities — disclose any such reading in this PR body so it can be recorded in CLEANROOM.md.

See CLEANROOM.md for the full allowed/forbidden source list and the honest scope of what "clean-room" means for this project.

Developer Certificate of Origin

By submitting this PR, I certify that the contribution complies with the
Developer Certificate of Origin 1.1.
Specifically, I affirm that the contribution is my own work (or rightfully
licensed to me) and that it can be distributed under the project's Apache-2.0
license.

I will sign off commits with git commit -s when asked, which adds a
Signed-off-by trailer to the commit message asserting the DCO.

…es supersedes (#20)

The crate emitted a 107-byte R14 skeleton with a fake LINE payload no decoder
reads. It was not a workspace member, no CI job built, linted or tested it, and
examples/build_fixtures.rs writes the real canonical fixtures. Removed with it:
its UNWATCHED entry in tools/maintainer/audit.py (the Dependabot coverage check
passes without it) and every mention in CLAUDE.md, Cargo.toml, .gitignore and
STATUS.md. The four wasm sample files it produced stay; their README now says
where they came from and that nothing regenerates them.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-28T16:20:58.870135Z 2fb824c New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

#20)

wasm/src/sample_loader.rs and DwgFile.openSample never existed in the tree.
pages.yml publishes the directory at /samples/; the README now says that, and
that the V-20 loader is not implemented.
@DrunkOnJava
DrunkOnJava enabled auto-merge (squash) October 28, 2026 16:27
@DrunkOnJava
DrunkOnJava merged commit 6cb1307 into main Oct 28, 2026
25 checks passed
@DrunkOnJava
DrunkOnJava deleted the chore/remove-synthetic-dwg branch October 28, 2026 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

tools/synthetic-dwg is out-of-workspace, never built by CI, and superseded by examples/build_fixtures.rs

1 participant